diff --git a/CHANGELOG.md b/CHANGELOG.md index 432693e..dbbfed6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +**1.0.2** +* Attempt To Fix Structure Generation Crash + **1.0.1** * Add Advancements * Industrial Laser Can Smelt Nether Gold Ore diff --git a/gradle.properties b/gradle.properties index 7899a0c..ff018c7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ org.gradle.jvmargs = -Xmx1G fabric_loader_version = 0.9.2+build.206 # Mod Properties - mod_version = 1.0.1 + mod_version = 1.0.2 maven_group = com.thebrokenrail # Dependencies diff --git a/src/main/java/com/thebrokenrail/energonrelics/block/structure/StructureGeneratorPiece.java b/src/main/java/com/thebrokenrail/energonrelics/block/structure/StructureGeneratorPiece.java index 17fdec0..174bbf2 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/block/structure/StructureGeneratorPiece.java +++ b/src/main/java/com/thebrokenrail/energonrelics/block/structure/StructureGeneratorPiece.java @@ -19,17 +19,23 @@ class StructureGeneratorPiece extends StructurePiece { private final StructureGeneratorBlock block; private final BlockRotation rotation; private final BlockPos pos; + private boolean placed; - StructureGeneratorPiece(StructureGeneratorBlock block, BlockRotation rotation, BlockPos pos) { + private StructureGeneratorPiece(StructureGeneratorBlock block, BlockRotation rotation, BlockPos pos, boolean placed) { super(block.piece, 0); this.block = block; this.rotation = rotation; this.pos = pos; + this.placed = placed; boundingBox = BlockBox.create(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1); } + StructureGeneratorPiece(StructureGeneratorBlock block, BlockRotation rotation, BlockPos pos) { + this(block, rotation, pos, false); + } + StructureGeneratorPiece(StructureGeneratorBlock block, CompoundTag tag) { - this(block, BlockRotation.valueOf(tag.getString("Rot")), new BlockPos(tag.getInt("X"), tag.getInt("Y"), tag.getInt("Z"))); + this(block, BlockRotation.valueOf(tag.getString("Rot")), new BlockPos(tag.getInt("X"), tag.getInt("Y"), tag.getInt("Z")), tag.getBoolean("Placed")); } @Override @@ -38,19 +44,24 @@ class StructureGeneratorPiece extends StructurePiece { tag.putInt("X", pos.getX()); tag.putInt("Y", pos.getY()); tag.putInt("Z", pos.getZ()); + tag.putBoolean("Placed", placed); } @Override public boolean generate(StructureWorldAccess world, StructureAccessor structureAccessor, ChunkGenerator chunkGenerator, Random random, BlockBox boundingBox, ChunkPos chunkPos, BlockPos blockPos) { - BlockState state = block.getDefaultState().rotate(rotation); + if (!placed) { + BlockState state = block.getDefaultState().rotate(rotation); - world.setBlockState(pos, state, 3); - BlockEntity entity = world.getBlockEntity(pos); - if (entity instanceof StructureGeneratorBlockEntity) { - ((StructureGeneratorBlockEntity) entity).setSeed(random.nextLong()); + world.setBlockState(pos, state, 3); + BlockEntity entity = world.getBlockEntity(pos); + if (entity instanceof StructureGeneratorBlockEntity) { + ((StructureGeneratorBlockEntity) entity).setSeed(random.nextLong()); + } + + block.schedule(world, pos); + + placed = true; } - - block.schedule(world, pos); return true; } }