From f6e94963d2cb7352a63e8d340c7f302ed34c4c6e Mon Sep 17 00:00:00 2001 From: TheBrokenRail Date: Wed, 19 Aug 2020 15:53:46 -0400 Subject: [PATCH] Generate Random Seed For Structure Generator If Not Specified --- .../entity/structure/StructureGeneratorBlockEntity.java | 8 ++++++++ 1 file changed, 8 insertions(+) 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());