diff --git a/src/main/java/com/thebrokenrail/energonrelics/block/entity/structure/StructureGeneratorBlockEntity.java b/src/main/java/com/thebrokenrail/energonrelics/block/entity/structure/StructureGeneratorBlockEntity.java index 5bf40eb..2555071 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/block/entity/structure/StructureGeneratorBlockEntity.java +++ b/src/main/java/com/thebrokenrail/energonrelics/block/entity/structure/StructureGeneratorBlockEntity.java @@ -20,6 +20,7 @@ public class StructureGeneratorBlockEntity extends BlockEntity { StructurePart create(World world, Random random, List transformations); } + private boolean hasSeed = false; private long seed = 0; private boolean generated = false; @@ -31,12 +32,14 @@ public class StructureGeneratorBlockEntity extends BlockEntity { } public void setSeed(long seed) { + hasSeed = true; this.seed = seed; } @Override public CompoundTag toTag(CompoundTag tag) { super.toTag(tag); + tag.putBoolean("HasSeed", hasSeed); tag.putLong("Seed", seed); tag.putBoolean("Generated", generated); return tag; @@ -45,12 +48,17 @@ public class StructureGeneratorBlockEntity extends BlockEntity { @Override public void fromTag(BlockState state, CompoundTag tag) { super.fromTag(state, tag); + hasSeed = tag.getBoolean("HasSeed"); seed = tag.getLong("Seed"); generated = tag.getBoolean("Generated"); } public void generate() { if (hasWorld() && !Objects.requireNonNull(getWorld()).isClient() && !generated) { + if (!hasSeed) { + seed = getWorld().random.nextLong(); + } + Direction facing = getCachedState().get(StructureGeneratorBlock.HORIZONTAL_FACING); generated = true; new StructurePlacer(factory.create(getWorld(), new Random(seed), Collections.singletonList(StructurePart.directionToTransformation(facing)))).place(getWorld(), getPos());