tomatosauce Posted January 21, 2022 Share Posted January 21, 2022 I've successful manage to make a jigsaw structure work using the JigsawManager.addPieces() class. It seems to be working fine on worldgen: public class BridgeStructure extends Structure<NoFeatureConfig> { public BridgeStructure() { super(NoFeatureConfig.field_236558_a_); } @Override public IStartFactory<NoFeatureConfig> getStartFactory() { return BridgeStructure.Start::new; } @Override public GenerationStage.Decoration getDecorationStage() { return GenerationStage.Decoration.SURFACE_STRUCTURES; } @Override // can be generated? protected boolean func_230363_a_(ChunkGenerator chunkGenerator, BiomeProvider biomeProvider, long seed, SharedSeedRandom sharedSeedRandom, int chunkX, int chunkZ, Biome biome, ChunkPos chunkPos, NoFeatureConfig noFeatureConfig) { return true; } public static class Start extends StructureStart<NoFeatureConfig> { // structureIn chunkX chunkZ mutableBoundingBox referenceIn seedIn // p_i225876_1_ p_i225876_2_ p_i225876_3_ p_i225876_4_ p_i225876_5_ p_i225876_6_ public Start(Structure<NoFeatureConfig> structureIn, int chunkX, int chunkZ, MutableBoundingBox mutableBoundingBox, int referenceIn, long seedIn) { super(structureIn, chunkX, chunkZ, mutableBoundingBox, referenceIn, seedIn); } @Override // generatePieces public void func_230364_a_(DynamicRegistries dynamicRegistries, ChunkGenerator chunkGenerator, TemplateManager templateManager, int chunkX, int chunkZ, Biome biome, NoFeatureConfig noFeatureConfig) { int x = chunkX * 16; int z = chunkZ * 16; BlockPos centerPos = new BlockPos(x, 0, z); // addPieces JigsawManager.func_242837_a( dynamicRegistries, new VillageConfig(() -> dynamicRegistries.getRegistry(Registry.JIGSAW_POOL_KEY).getOrDefault(new ResourceLocation(ModFiddle.MOD_ID, "bridge/bridge_start")), 10), AbstractVillagePiece::new, chunkGenerator, templateManager, centerPos, this.components, this.rand, false, true); int submergedBaseOffset = -6; this.components.forEach(piece -> piece.offset(0, submergedBaseOffset, 0)); this.recalculateStructureSize(); } } } I'm interested in adding some sort of logic when jigsaw pieces are added to the structure, something that I cannot do without somehow overriding (or copying) the class. For example, continuously adding jigsaw pieces so long as there are jigsaw blocks present or generating three consecutive pieces... I'm afraid of doing something horribly stupid here. Should I not be looking into the jigsaw manager at all even? Thank for the help! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.