From 48eced9195f9a1f725ece55afba5ea1fc6c04270 Mon Sep 17 00:00:00 2001 From: IntegerLimit <103940576+IntegerLimit@users.noreply.github.com> Date: Sun, 5 Mar 2023 21:49:09 +1100 Subject: [PATCH] Fix disappearing blocks + more lang --- .../tileentity/TileInvisECoreBlock.java | 28 +++++++++++++++---- .../utils/BlockStateMultiblockStorage.java | 3 +- .../world/EnergyCoreStructure.java | 7 +++-- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/brandon3055/draconicevolution/blocks/tileentity/TileInvisECoreBlock.java b/src/main/java/com/brandon3055/draconicevolution/blocks/tileentity/TileInvisECoreBlock.java index be0ebdfbc..3ad58513a 100644 --- a/src/main/java/com/brandon3055/draconicevolution/blocks/tileentity/TileInvisECoreBlock.java +++ b/src/main/java/com/brandon3055/draconicevolution/blocks/tileentity/TileInvisECoreBlock.java @@ -7,10 +7,12 @@ import com.brandon3055.draconicevolution.DEFeatures; import com.brandon3055.draconicevolution.blocks.ParticleGenerator; import com.brandon3055.draconicevolution.integration.funkylocomotion.IMovableStructure; +import com.brandon3055.draconicevolution.world.EnergyCoreStructure; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.play.server.SPacketUpdateTileEntity; @@ -83,13 +85,27 @@ public void revert() { world.setBlockState(pos, DEFeatures.particleGenerator.getDefaultState().withProperty(ParticleGenerator.TYPE, "stabilizer")); return; } - - Block block = Block.REGISTRY.getObject(new ResourceLocation(blockName)); - if (block != Blocks.AIR) { - world.setBlockState(pos, block.getDefaultState()); + Block block; + if (blockName.equals(EnergyCoreStructure.gtDraconiumName)){ + if (EnergyCoreStructure.gtDraconium != null){ + world.setBlockState(pos, EnergyCoreStructure.gtDraconium); + } } - else { - world.setBlockToAir(pos); + if (blockName.equals(EnergyCoreStructure.gtAwakenedName)){ + if (EnergyCoreStructure.gtAwakened != null){ + Block awakenedBlock = EnergyCoreStructure.gtAwakened.getBlock(); + world.setBlockState(pos, EnergyCoreStructure.gtAwakened); + } + } + else{ + block = Block.REGISTRY.getObject(new ResourceLocation(blockName)); + + if (block != Blocks.AIR) { + world.setBlockState(pos, block.getDefaultState()); + } + else { + world.setBlockToAir(pos); + } } } diff --git a/src/main/java/com/brandon3055/draconicevolution/utils/BlockStateMultiblockStorage.java b/src/main/java/com/brandon3055/draconicevolution/utils/BlockStateMultiblockStorage.java index acfa82f13..0225fc46f 100644 --- a/src/main/java/com/brandon3055/draconicevolution/utils/BlockStateMultiblockStorage.java +++ b/src/main/java/com/brandon3055/draconicevolution/utils/BlockStateMultiblockStorage.java @@ -7,6 +7,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import java.util.Objects; import java.util.function.BiConsumer; // Same as MultiblockStorage, but uses IBlockState instead of String, and has fallback block @@ -50,7 +51,7 @@ public boolean checkStructure(World world, BlockPos startPos) { if (!helper.checkBlock(blockStorage[x][y][z][0], world, pos.add(startPos))) { if (!helper.checkBlock(blockStorage[x][y][z][1], world, pos.add(startPos))) { helper.invalidBlock = startPos.add(pos); - helper.expectedBlock = blockStorage[x][y][z][0].getBlock().getLocalizedName(); + helper.expectedBlock = Objects.requireNonNull(blockStorage[x][y][z][0].getBlock().getRegistryName()).toString(); return false; } } diff --git a/src/main/java/com/brandon3055/draconicevolution/world/EnergyCoreStructure.java b/src/main/java/com/brandon3055/draconicevolution/world/EnergyCoreStructure.java index 9ed732cb1..988b6294c 100644 --- a/src/main/java/com/brandon3055/draconicevolution/world/EnergyCoreStructure.java +++ b/src/main/java/com/brandon3055/draconicevolution/world/EnergyCoreStructure.java @@ -249,11 +249,12 @@ else if (flag == FLAG_FORME) { world.setBlockState(pos, DEFeatures.invisECoreBlock.getDefaultState()); TileEntity tile = world.getTileEntity(pos); if (tile instanceof TileInvisECoreBlock) { - ((TileInvisECoreBlock) tile).blockName = Objects.requireNonNull(state.getBlock().getRegistryName()).toString(); - if (state == gtDraconium) + if (state.equals(gtDraconium)) ((TileInvisECoreBlock) tile).blockName = gtDraconiumName; - if (state == gtAwakened) + if (state.equals(gtAwakened)) ((TileInvisECoreBlock) tile).blockName = gtAwakenedName; + else + ((TileInvisECoreBlock) tile).blockName = Objects.requireNonNull(state.getBlock().getRegistryName()).toString(); ((TileInvisECoreBlock) tile).setController(core); } }