From 1eecfbca8574737548efe7a5ec9e2f4a68df65fe Mon Sep 17 00:00:00 2001 From: Lazzzycatwastaken Date: Fri, 9 May 2025 19:38:11 +0200 Subject: [PATCH 1/4] whos getting the best head: A. Alvin B. Theodore C. Simon (Secret option) Me --- .../java/com/hbm/config/StructureConfig.java | 12 ++-- .../java/com/hbm/itempool/ItemPoolsPile.java | 44 +++++++++++--- .../java/com/hbm/main/StructureManager.java | 11 ++++ src/main/java/com/hbm/util/LootGenerator.java | 17 +++++- .../com/hbm/world/gen/NTMWorldGenerator.java | 59 +++++++++++++++++-- 5 files changed, 124 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/hbm/config/StructureConfig.java b/src/main/java/com/hbm/config/StructureConfig.java index 2f6bb9bf9..5ce4c6d51 100644 --- a/src/main/java/com/hbm/config/StructureConfig.java +++ b/src/main/java/com/hbm/config/StructureConfig.java @@ -10,8 +10,8 @@ public class StructureConfig { public static int enableStructures = 2; - public static int structureMinChunks = 8; - public static int structureMaxChunks = 24; + public static int structureMinChunks = 4; + public static int structureMaxChunks = 12; public static double lootAmountFactor = 1D; @@ -25,15 +25,15 @@ public class StructureConfig { enableStructures = CommonConfig.parseStructureFlag(unparsedStructureFlag); - structureMinChunks = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.01_structureMinChunks", "Minimum non-zero distance between structures in chunks (Settings lower than 8 may be problematic).", 8); - structureMaxChunks = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.02_structureMaxChunks", "Maximum non-zero distance between structures in chunks.", 24); + structureMinChunks = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.01_structureMinChunks", "Minimum non-zero distance between structures in chunks (Settings lower than 8 may be problematic).", 4); + structureMaxChunks = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.02_structureMaxChunks", "Maximum non-zero distance between structures in chunks.", 16); lootAmountFactor = CommonConfig.createConfigDouble(config, CATEGORY_STRUCTURES, "5.03_lootAmountFactor", "General factor for loot spawns. Applies to spawned IInventories, not loot blocks.", 1D); debugStructures = CommonConfig.createConfigBool(config, CATEGORY_STRUCTURES, "5.04_debugStructures", "If enabled, special structure blocks like jigsaw blocks will not be transformed after generating", false); - structureMinChunks = CommonConfig.setDef(structureMinChunks, 8); - structureMaxChunks = CommonConfig.setDef(structureMaxChunks, 24); + structureMinChunks = CommonConfig.setDef(structureMinChunks, 4); + structureMaxChunks = CommonConfig.setDef(structureMaxChunks, 12); if(structureMinChunks > structureMaxChunks) { MainRegistry.logger.error("Fatal error config: Minimum value has been set higher than the maximum value!"); diff --git a/src/main/java/com/hbm/itempool/ItemPoolsPile.java b/src/main/java/com/hbm/itempool/ItemPoolsPile.java index ad2a7f3ae..0a4378211 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsPile.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsPile.java @@ -21,9 +21,10 @@ public class ItemPoolsPile { public static final String POOL_PILE_MAKESHIFT_PLATES = "POOL_PILE_MAKESHIFT_PLATES"; public static final String POOL_PILE_MAKESHIFT_WIRE = "POOL_PILE_MAKESHIFT_WIRE"; public static final String POOL_PILE_NUKE_STORAGE = "POOL_PILE_NUKE_STORAGE"; - + public static final String POOL_PILE_OF_GARBAGE = "POOL_PILE_OF_GARBAGE"; + public static void init() { - + //items found in glyphid hives new ItemPool(POOL_PILE_HIVE) {{ this.pool = new WeightedRandomChestContent[] { @@ -56,7 +57,7 @@ public class ItemPoolsPile { weighted(Items.experience_bottle, 0, 1, 3, 5), }; }}; - + //items found in glyphid bone piles new ItemPool(POOL_PILE_BONES) {{ this.pool = new WeightedRandomChestContent[] { @@ -65,7 +66,7 @@ public class ItemPoolsPile { weighted(ModItems.biomass, 0, 1, 1, 2) }; }}; - + //bottlecap stashess new ItemPool(POOL_PILE_CAPS) {{ this.pool = new WeightedRandomChestContent[] { @@ -74,7 +75,7 @@ public class ItemPoolsPile { weighted(ModItems.cap_sparkle, 0, 4, 4, 1), }; }}; - + //medicine stashes new ItemPool(POOL_PILE_MED_SYRINGE) {{ this.pool = new WeightedRandomChestContent[] { @@ -91,13 +92,13 @@ public class ItemPoolsPile { weighted(ModItems.siox, 0, 1, 1, 5), }; }}; - + //makeshift gun new ItemPool(POOL_PILE_MAKESHIFT_GUN) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.gun_maresleg, 0, 1, 1, 10) }; }}; new ItemPool(POOL_PILE_MAKESHIFT_WRENCH) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.wrench, 0, 1, 1, 10) }; }}; new ItemPool(POOL_PILE_MAKESHIFT_PLATES) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.plate_steel, 0, 1, 1, 10) }; }}; new ItemPool(POOL_PILE_MAKESHIFT_WIRE) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.wire_fine, Mats.MAT_ALUMINIUM.id, 1, 1, 10) }; }}; - + new ItemPool(POOL_PILE_NUKE_STORAGE) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD.ordinal(), 1, 1, 50), @@ -106,5 +107,34 @@ public class ItemPoolsPile { }; }}; + + new ItemPool(POOL_PILE_OF_GARBAGE) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.pipe, 2600, 0, 2, 20), + weighted(ModItems.scrap, 0, 1, 5, 20), + weighted(ModItems.wire_fine, 8200, 1, 2, 20), + weighted(ModItems.dust, 0, 1, 3, 40), + weighted(ModItems.dust_tiny, 0, 1, 7, 40), + weighted(ModItems.powder_cement, 0, 1, 6, 40), + weighted(ModItems.nugget_lead, 0, 0, 3, 20), + weighted(ModItems.wire_fine, 0, 0, 3, 20), + weighted(ModItems.powder_ash, 0, 0, 1, 15), + weighted(ModItems.plate_lead, 0, 0, 1, 15), + weighted(Items.string, 0, 0, 1, 15), + weighted(ModItems.bolt, 8200, 0, 2, 15), + weighted(ModItems.pin, 0, 0, 2, 15), + weighted(ModItems.cap_nuka, 0, 0, 8, 15), + weighted(ModItems.plate_iron, 0, 0, 2, 15), + weighted(ModItems.fallout, 0, 0, 2, 15), + weighted(ModItems.coil_tungsten, 0, 0, 2, 15), + weighted(ModItems.can_empty, 0, 0, 1, 15), + weighted(ModItems.ingot_asbestos, 0, 0, 1, 15), + weighted(ModItems.syringe_metal_empty, 0, 0, 1, 15), + weighted(ModItems.syringe_empty, 0, 0, 1, 15), + weighted(ModItems.pipe_lead, 0, 0, 1, 5), + weighted(ModItems.motor, 0, 0, 1, 5), + weighted(ModItems.canned_conserve, 2, 0, 1, 5), + }; + }}; } } diff --git a/src/main/java/com/hbm/main/StructureManager.java b/src/main/java/com/hbm/main/StructureManager.java index 5c3f93090..c9f840b76 100644 --- a/src/main/java/com/hbm/main/StructureManager.java +++ b/src/main/java/com/hbm/main/StructureManager.java @@ -62,6 +62,17 @@ public class StructureManager { public static final NBTStructure lighthouse = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/lighthouse.nbt")); public static final NBTStructure dish = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/dish.nbt")); + public static final NBTStructure ntmruinsA = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/ntmruinsA.nbt")); + public static final NBTStructure ntmruinsB = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/ntmruinsB.nbt")); + public static final NBTStructure ntmruinsC = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/ntmruinsC.nbt")); + public static final NBTStructure ntmruinsD = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/ntmruinsD.nbt")); + public static final NBTStructure ntmruinsE = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/ntmruinsE.nbt")); + public static final NBTStructure ntmruinsF = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/ntmruinsF.nbt")); + public static final NBTStructure ntmruinsG = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/ntmruinsG.nbt")); + public static final NBTStructure ntmruinsH = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/ntmruinsH.nbt")); + public static final NBTStructure ntmruinsI = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/ntmruinsI.nbt")); + public static final NBTStructure ntmruinsJ = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/ntmruinsJ.nbt")); + public static final NBTStructure spire = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/spire.nbt")); // public static final NBTStructure test_rot = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-rot.nbt")); diff --git a/src/main/java/com/hbm/util/LootGenerator.java b/src/main/java/com/hbm/util/LootGenerator.java index b14306b9e..586ff6295 100644 --- a/src/main/java/com/hbm/util/LootGenerator.java +++ b/src/main/java/com/hbm/util/LootGenerator.java @@ -28,6 +28,7 @@ public class LootGenerator { public static final String LOOT_BONES = "LOOT_BONES"; public static final String LOOT_GLYPHID_HIVE = "LOOT_GLYPHID_HIVE"; public static final String LOOT_METEOR = "LOOT_METEOR"; + public static final String LOOT_SHIT = "LOOT_SHIT"; public static void applyLoot(World world, int x, int y, int z, String name) { switch(name) { @@ -40,6 +41,7 @@ public class LootGenerator { case LOOT_BONES: lootBones(world, x, y, z); case LOOT_GLYPHID_HIVE: lootGlyphidHive(world, x, y, z); case LOOT_METEOR: lootBookMeteor(world, x, y, z); + case LOOT_SHIT: lootShit(world, x, y, z); default: lootBones(world, x, y, z); break; } } @@ -55,6 +57,7 @@ public class LootGenerator { LOOT_BONES, LOOT_GLYPHID_HIVE, LOOT_METEOR, + LOOT_SHIT, }; } @@ -211,4 +214,16 @@ public class LootGenerator { } } -} \ No newline at end of file + public static void lootShit(World world, int x, int y, int z) { + + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); + + if(loot != null && loot.items.isEmpty()) { + + int limit = world.rand.nextInt(3) + 3; + for(int i = 0; i < limit; i++) { + addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPool.getPool(ItemPoolsPile.POOL_PILE_OF_GARBAGE), world.rand), world.rand.nextDouble() - 0.5, i * 0.03125, world.rand.nextDouble() - 0.5); + } + } + } +} diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index bb1c7b3d3..cbbf13197 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -46,7 +46,7 @@ public class NTMWorldGenerator implements IWorldGenerator { structure = new JigsawPiece("spire", StructureManager.spire, -1); spawnWeight = 2; }}); - + NBTStructure.registerStructure(0, new SpawnCondition() {{ canSpawn = biome -> !invalidBiomes.contains(biome); start = d -> new MapGenNTMFeatures.Start(d.getW(), d.getX(), d.getY(), d.getZ()); @@ -102,8 +102,7 @@ public class NTMWorldGenerator implements IWorldGenerator { spawnWeight = 8; }}); - NBTStructure.registerNullWeight(0, 2, oceanBiomes::contains); //why the fuck did this change - + NBTStructure.registerStructure(0, new SpawnCondition() {{ canSpawn = biome -> biome == BiomeGenBase.plains; structure = new JigsawPiece("dish", StructureManager.dish, -10); @@ -112,8 +111,58 @@ public class NTMWorldGenerator implements IWorldGenerator { spawnWeight = 1; }}); - NBTStructure.registerNullWeight(0, 2, biome -> biome == BiomeGenBase.plains); - NBTStructure.registerNullWeight(0, 2, oceanBiomes::contains); + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsA", StructureManager.ntmruinsA, -1) {{conformToTerrain = true;}}; + spawnWeight = 20; + }}); + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsB", StructureManager.ntmruinsB, -1) {{conformToTerrain = true;}}; + spawnWeight = 25; + }}); + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsC", StructureManager.ntmruinsC, -1) {{conformToTerrain = true;}}; + spawnWeight = 25; + }}); + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsD", StructureManager.ntmruinsD, -1) {{conformToTerrain = true;}}; + spawnWeight = 30; + }}); + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsE", StructureManager.ntmruinsE, -1) {{conformToTerrain = true;}}; + spawnWeight = 30; + }}); + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsF", StructureManager.ntmruinsF, -1) {{conformToTerrain = true;}}; + spawnWeight = 50; + }}); + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsG", StructureManager.ntmruinsG, -1) {{conformToTerrain = true;}}; + spawnWeight = 50; + }}); + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsH", StructureManager.ntmruinsH, -1) {{conformToTerrain = true;}}; + spawnWeight = 50; + }}); + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsI", StructureManager.ntmruinsI, -1) {{conformToTerrain = true;}}; + spawnWeight = 50; + }}); + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsJ", StructureManager.ntmruinsJ, -1) {{conformToTerrain = true;}}; + spawnWeight = 35; + }}); + + NBTStructure.registerNullWeight(0, 4, oceanBiomes::contains); Map bricks = new HashMap() {{ put(ModBlocks.meteor_brick, new MeteorBricks()); From b98c8c3f98c45d9fa44321af319571431493ba9c Mon Sep 17 00:00:00 2001 From: Lazzzycatwastaken Date: Wed, 27 Aug 2025 15:12:47 +0200 Subject: [PATCH 2/4] sdsa --- .../assets/hbm/structures/ntmruinsA.nbt | Bin 0 -> 2328 bytes .../assets/hbm/structures/ntmruinsB.nbt | Bin 0 -> 2166 bytes .../assets/hbm/structures/ntmruinsC.nbt | Bin 0 -> 2204 bytes .../assets/hbm/structures/ntmruinsD.nbt | Bin 0 -> 1976 bytes .../assets/hbm/structures/ntmruinsE.nbt | Bin 0 -> 1675 bytes .../assets/hbm/structures/ntmruinsF.nbt | Bin 0 -> 806 bytes .../assets/hbm/structures/ntmruinsG.nbt | Bin 0 -> 529 bytes .../assets/hbm/structures/ntmruinsH.nbt | Bin 0 -> 753 bytes .../assets/hbm/structures/ntmruinsI.nbt | Bin 0 -> 597 bytes .../assets/hbm/structures/ntmruinsJ.nbt | Bin 0 -> 1327 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/hbm/structures/ntmruinsA.nbt create mode 100644 src/main/resources/assets/hbm/structures/ntmruinsB.nbt create mode 100644 src/main/resources/assets/hbm/structures/ntmruinsC.nbt create mode 100644 src/main/resources/assets/hbm/structures/ntmruinsD.nbt create mode 100644 src/main/resources/assets/hbm/structures/ntmruinsE.nbt create mode 100644 src/main/resources/assets/hbm/structures/ntmruinsF.nbt create mode 100644 src/main/resources/assets/hbm/structures/ntmruinsG.nbt create mode 100644 src/main/resources/assets/hbm/structures/ntmruinsH.nbt create mode 100644 src/main/resources/assets/hbm/structures/ntmruinsI.nbt create mode 100644 src/main/resources/assets/hbm/structures/ntmruinsJ.nbt diff --git a/src/main/resources/assets/hbm/structures/ntmruinsA.nbt b/src/main/resources/assets/hbm/structures/ntmruinsA.nbt new file mode 100644 index 0000000000000000000000000000000000000000..100fab771e210d83f85bba2c4f5e3a3ec237090b GIT binary patch literal 2328 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/ntmruinsE.nbt b/src/main/resources/assets/hbm/structures/ntmruinsE.nbt new file mode 100644 index 0000000000000000000000000000000000000000..8a367816551123059e6256d83fb52e28eeb95301 GIT binary patch literal 1675 zcmV;626Xu!iwFP!000000IizajvGY~hTEPQkI#W5Bmoiv2)N(^kwi&QF1Z2;kx1m; zvb~dJw6am}aaI_#t7X1h_G%zE>T4Tkowjo|^5wDP*+lF|xg`Woz zrcZJi%)qeL(7g=x-9Cc+ig2pSM|^T ze)C_;<;%CPUM-5Vtv=F=s#>_-Z_l5u+YuXLY$KemE=U)nrjs zb=S4aGk3H3&)rkgyUAbE)!FV>+d1oX`TBLSmT7@4`=PiQVf;{h5@GyM$j2QpV^)uFzieKGgkH^&mZ|{4rZ*_F3*k7T3VY4#@FGE2&3sx%XcuE4rMOOS^!4V zkId!Ug30zeWH|_i*$#%;4u;tdhUFj_mV;ne4uWAm%$%NIU|4>EVS3Koq2})d7^%b1 zTAB{QXtBsdEJFH`T9uE3U^G8VtxBe|j~A=mV3?l4Fg=4|J_N&j2!`ny4AV0hre`oC za&B}2dj2%Ru*Y05e!S#WN++Ph(0()>g6SLP84w+U(R`?B6%6ZN&<}ewKQU zF~04e1sHj4^SNNU291GXwu51|gJHQ0hUIeC>94=Q__=&H!uYu?pJBn|28Lb5fnl#J z!LV0SU`7UpU7>Z|{yNTM?nM~QuC}o2iwNV}bw9$e*F<16yAs2m6N3*E!&=&F2Qcil z0~kMdzKk&JH4zwgl?z6*OP-lA#f23Vt*q!;n9oF2C?b;pw(BL01%&wuqE-wCel zufTv|^>iHYbBtkMLjyB3FsvT~qwQJ7G{*RA$$lP;wwBh@f|0M^2W4F>UrZN8eN`Uv zi_3pDNBY-&*MG6DE{b*Y#ntZq9dGMV^E&tU>9TNluio9xtJQp6)Wu}BF6ZZy&0;!p z;n6>yX!Nba(WY_t4#%BUZ)XeR@Y`3zFZYT`)PZ*b`(0L5{pLePUX+W)bghp3BC^@7 zpR4m?6&e3NzTd^h&)3uWd2u$`im6<0BJ(^vQKauHyHF>%u`E}`7JgMfE7#R(GMh&C z9MXwcby;mT?;^vW>aM3QdvfIX$5-RO<)P=(JUz`ckB_t_Bmt2;e1ZqZPVipB@4u#U z^<5No%+b3(F8>~#ZX+KSzXzw0(N9O8`KLO^PBqVmx%1JH;~$1KIo^iwFP!000000IiqHZ__{!#>Za2lJacJ;{fyoM?~qZC&URPL@UuNShllm zt=QhkULNJn|BanyTx;2#UC~6cq9nhW{q~#jW;_R&LC}@IIRk*4 zzJZx)W(H=eIWRDhL!PPTP{a6&p2)z2mbH9EPi$apdYH0SVqhYRKg?mRz(I51kSA2~ z=sXN9d3=X{MuzHVWT<{dhU#Zu(}yzyV_Qq@Lk4qTO)eR*x@=(m4Xd+X1Ii$%xy;tv z1l9`q{_CH29>n$c^Ye-?`hEyjLR2vObaHZ*e);h6EP-%++Q9B*ULVV{;;$FH5NRcZ zOu#P}us?jcKB2DCpINh5|J3J{ZFzCQTlM(yHSIh%Ffnmk_?kA{Q5ZZDsiO`Vsx^?I zS_2uXT*y$ZF}C!Cxnp1=2WGm~U4;oYdOSi8GQI;t`HT$ZGcuIV$WT59o4o_^H;Bx1 z@AniYbnpim${%DXe~_X4L5A`t)a>iNf$@p{K_;*;zOt6;bL8M5GL(nNP#z*fd58?< zAu?2tAw%8Ek){^vIfjgF@9OxY)&iNSo(CF6t(Q&@Q<#Se6Fbxt8ERk1P&Gw{suwa; zy^x{m6>I9HjuOcD#QlW~b6}{^51Ggz4>kV8n!1~q>AuvF4H;(9td6w124<>xPs6Bv zsME|GG&4oBIzl32(-S!82^2m18Ya}_*(oKjPqT{4@feL)*B^%my+?DHpSEJf+u=bl z+01d?(J-=o&T0{eI55uqhM2=K<|Vy(dg&VvA8WLmy+7QNcMdglj6bmGuqN1&kGJ#VXzRZ2^^dE( kk2#meWhg~u4!g|z8Kr8XD+xk@gpq`8Q+4-xGftbjO* zwSZT)6DfK6z-~;@#DDD;2_dBK_?(%sp#&%(Rs4lf02uGZaOdN*fFR>`% z1bL;1Ng^^QmOPn*As#Op;YBT8xrM>A!1GEYybR-;g<;YFgEKE2jITe2@y#o>)Nb>l zh*=^gi|CJGeEl&DjbMB|G)xx3toyY-L*_7lzRRP`6Rp(k98Z_{2%@zf?Myn&GY*|ZGz7o@7dsZuUA}(ep6S2C56Qk TlZuOefBatoW4Ya;&RK9rD&Di-;C!!Gah>iFoC$GKL`eZ{uy;o+J8@AOd3H2 zB`x%y38Y2E%0)ZvUS<=(OV&!G{u9CKC22)2$i~9NL<$pG7!<(Z047!#WMLA8!4@X< z=t2S7QGj-&X*b1#H0`m4@o7hzb{pfi{X8--dT;3Ca5ydKa?zc}J_j#t4hqf|r19E6wb*+N zpYLj3duXe?uvniB)~`Lfv#vapw-!IAe)&%Ov%OSob8ysMu1FX0l{lxIHCd5cmvlBu zTX)x`8?WVyUCTMUEh-Wg?GwYocDrqkx3|9GYG<)IG4!=2(p{L7Jqv5fm1bYFw!QN% j|G)ZkzyA8SB%J=W3JjyKgtwG6t3mr4xXD|0^$-96*tc$2 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/ntmruinsI.nbt b/src/main/resources/assets/hbm/structures/ntmruinsI.nbt new file mode 100644 index 0000000000000000000000000000000000000000..d85d370d1240918894961e1cdf99430d045aab6d GIT binary patch literal 597 zcmV-b0;>HViwFP!000000IinWj?*v@hNrQeLzm-L0xp2Pf=jfp2%&ulv~Lh4snJ?Z z;>tEi%hThub+EiX1npMxMXPUS{`qI(bPZ4emh2Bj05F|GAEHlLK}ko&6r&QRPX&3~ z^KK{C`pdTp(4I>ZWIhD~B2}a4DZ*t|`eYWf3NXlGvH*iE1_c;mG1y^Nrvny40*tLW z4=}doBEaAUjIFs0F!=(ei1>Wy$2OoN9JW1w1A2EV;Hg^Pi$VZ*AWkA9}{}q znfmm&GxgPSXZlQ6Lu0G-PaXd?s%bhUWNZr?#d>5JRXs(%tv6sZX^bBJg{vyD{3^$D3*UJE78-5;O^2kuIX90Y@r!GBm@;P=n7=}b1 zM&j|%)nk}cE!RWWAL8lV?JM`pebRHr6di7wo~pTxVt@QPz2-M-Sl-$C|yMGtze&ABx z1;W2SLgDwJ!mZ#tIws>U5@Smy_+RN)kF+tL=R64dN(3MBhTm;D9(XZ=g19!DNr&78|B7C;1czIog;_uM<83uAH>qorR4~Yo zfb998HPIQ2og0~lv31TpOgw-|h(2J_0rN1O!Pq(%9%gJYV+Ru`z5o*|8U`YES6uSk zeN0C38Bap?9PMK_0~kAh&OA&ofCv>rF9o zRyhml9oJgYJNG?IsxXmQOZGu93Gra!@P&*W4D$t;kn9-@J9jY57hsq#z%XBc$w=J* zWBWqhR}+UXT=Pg@xc0310!*yvEPdgdN7G08Le|V=|F0dptl?nn*yVi#j264}myfYy zf8b%*_npMyFX^4s9N)*}T>{LA)C4fhUtn0@0mJV6U|5X;!}13VtE*sGT?NDZ1;+00 z4?WD8a$bQr3wh@Uqn(BHvX9ZuLV8)&1Td`Dfzi%FdfCUY@42Zt_OdH>&C6hzm%-Sv z%lj&rl=wY0J1<9yPlxzj_EV`(W_BMt4`naN%yCWl*u$_q1jEh(3_A-j>@2{rdkYxW zQ^2r11jFv4V2T0rjFow$-!D9jrnBaEFs$~1VYL?wyB~tFb(TFBjHYuSbe8_g%(35H zacO=Bqs1=$?pjN`8|P;C84;i6=GcQihTVI?Fnz$V+yKM$0b}bU`vn-*m%*@ixnP(F z!LavrxjFWitn*-49RtI13=Dg342Jm&411>s#@0~YH^A5$K5{U!=gPhVCQ|k+J$PXX z6Ru`mXu@T+GFu{CPXF9lBU+Z-)NDfwo4Wh{?|*(BnRNNv_4T5>>SKx4b-gh8PcL7- zp8WE|kFPTmZ~ro4?!TQaUv$-?{Q9b#*ONtEcbN&QEAw#k%k5uN-cA0PuCBKK)z8^A z)tfhE<2nji5*`btFvsmwzLo&P+9??J>H-Xt84R;B7&)8enIm?o&$&ZGc^2o6c{a?r>dNJ->7wio%ctwz zkDGM*tT4r^re2rL=8wJEzW$A#ZA#tG(`9KMAL`n?Ud@}bD<|!;uV8PDHuAzTaxtB$ z;~w;7xturC>+VI>)T_yC+O(cQ-y8;ge!SSMspdCq$!}SZ>uRx>HlC4}@3ro2s80@~ zcY_Xd^x@BM`i7%T@YFZKtf_Cx)uhjaYJhrQ`lg}dpXuXw+fY?};!Coj8#v_{zB~E& zZ`b|87x=Pn+jpnyHZbhdH~y89c|$Yj{pPvd&m+$~YU-RO;pH6#@cho_IW3;&cU=)~ lud|0ctGe`wF24M~dk; Date: Wed, 27 Aug 2025 15:28:38 +0200 Subject: [PATCH 3/4] labubu funk --- src/main/java/com/hbm/lib/HbmWorld.java | 4 +- .../com/hbm/world/gen/MapGenNTMFeatures.java | 46 +++++----- .../hbm/world/gen/component/RuinFeatures.java | 88 +++++++++---------- 3 files changed, 69 insertions(+), 69 deletions(-) diff --git a/src/main/java/com/hbm/lib/HbmWorld.java b/src/main/java/com/hbm/lib/HbmWorld.java index ed4ca9208..9e5f03161 100644 --- a/src/main/java/com/hbm/lib/HbmWorld.java +++ b/src/main/java/com/hbm/lib/HbmWorld.java @@ -40,8 +40,8 @@ public class HbmWorld { private static void registerNTMFeatures() { CivilianFeatures.registerComponents(); OfficeFeatures.registerComponents(); - RuinFeatures.registerComponents(); +// RuinFeatures.registerComponents(); BunkerComponents.registerComponents(); MapGenStructureIO.func_143031_a(SiloComponent.class, "NTMSiloComponent"); } -} \ No newline at end of file +} diff --git a/src/main/java/com/hbm/world/gen/MapGenNTMFeatures.java b/src/main/java/com/hbm/world/gen/MapGenNTMFeatures.java index 20f380ed9..96641134f 100644 --- a/src/main/java/com/hbm/world/gen/MapGenNTMFeatures.java +++ b/src/main/java/com/hbm/world/gen/MapGenNTMFeatures.java @@ -15,10 +15,10 @@ import com.hbm.world.gen.component.CivilianFeatures.NTMLab2; import com.hbm.world.gen.component.CivilianFeatures.RuralHouse1; import com.hbm.world.gen.component.OfficeFeatures.LargeOffice; import com.hbm.world.gen.component.OfficeFeatures.LargeOfficeCorner; -import com.hbm.world.gen.component.RuinFeatures.NTMRuin1; -import com.hbm.world.gen.component.RuinFeatures.NTMRuin2; -import com.hbm.world.gen.component.RuinFeatures.NTMRuin3; -import com.hbm.world.gen.component.RuinFeatures.NTMRuin4; +//import com.hbm.world.gen.component.RuinFeatures.NTMRuin1; +//import com.hbm.world.gen.component.RuinFeatures.NTMRuin2; +//import com.hbm.world.gen.component.RuinFeatures.NTMRuin3; +//import com.hbm.world.gen.component.RuinFeatures.NTMRuin4; import com.hbm.world.gen.component.SiloComponent; import net.minecraft.world.World; @@ -124,26 +124,26 @@ public class MapGenNTMFeatures extends MapGenStructure { */ //TODO: Do something about this so it's nice-looking and easily readable. Plus, test compatibility against mods like BoP - if(rand.nextInt(3) == 0) { //Empty Ruin Structures - switch(rand.nextInt(4)) { - case 0: - NTMRuin1 ruin1 = new NTMRuin1(rand, i, j); - this.components.add(ruin1); - break; - case 1: - NTMRuin2 ruin2 = new NTMRuin2(rand, i, j); - this.components.add(ruin2); - break; - case 2: - NTMRuin3 ruin3 = new NTMRuin3(rand, i, j); - this.components.add(ruin3); - break; - case 3: - NTMRuin4 ruin4 = new NTMRuin4(rand, i, j); - this.components.add(ruin4); - } +// if(rand.nextInt(3) == 0) { //Empty Ruin Structures +// switch(rand.nextInt(4)) { +// case 0: +// NTMRuin1 ruin1 = new NTMRuin1(rand, i, j); +// this.components.add(ruin1); +// break; +// case 1: +// NTMRuin2 ruin2 = new NTMRuin2(rand, i, j); +// this.components.add(ruin2); +// break; +// case 2: +// NTMRuin3 ruin3 = new NTMRuin3(rand, i, j); +// this.components.add(ruin3); +// break; +// case 3: +// NTMRuin4 ruin4 = new NTMRuin4(rand, i, j); +// this.components.add(ruin4); +// } - } else if(biome.heightVariation <= 0.25F && rand.nextInt(10) == 0) { //for now our only restriction is kinda-flat biomes. that and chance might change idk + if(biome.heightVariation <= 0.25F && rand.nextInt(10) == 0) { //for now our only restriction is kinda-flat biomes. that and chance might change idk SiloComponent silo = new SiloComponent(rand, i, j); this.components.add(silo); } else if(biome.temperature >= 1.0 && biome.rainfall == 0 && !(biome instanceof BiomeGenMesa)) { //Desert & Savannah diff --git a/src/main/java/com/hbm/world/gen/component/RuinFeatures.java b/src/main/java/com/hbm/world/gen/component/RuinFeatures.java index 9204e7b0e..0e59878d5 100644 --- a/src/main/java/com/hbm/world/gen/component/RuinFeatures.java +++ b/src/main/java/com/hbm/world/gen/component/RuinFeatures.java @@ -8,42 +8,42 @@ import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.structure.MapGenStructureIO; import net.minecraft.world.gen.structure.StructureBoundingBox; - +// Idk what i should do with these if you read this bob do whatever since it's not used anywhere public class RuinFeatures { - + public static void registerComponents() { MapGenStructureIO.func_143031_a(NTMRuin1.class, "NTMRuin1"); MapGenStructureIO.func_143031_a(NTMRuin2.class, "NTMRuin2"); MapGenStructureIO.func_143031_a(NTMRuin3.class, "NTMRuin3"); MapGenStructureIO.func_143031_a(NTMRuin4.class, "NTMRuin4"); } - + public static class NTMRuin1 extends Component { - + private static ConcreteBricks RandomConcreteBricks = new ConcreteBricks(); - + public NTMRuin1() { super(); } - + public NTMRuin1(Random rand, int minX, int minZ) { super(rand, minX, 64, minZ, 8, 6, 10); } @Override public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { - + //System.out.println(this.coordBaseMode); if(!this.setAverageHeight(world, box, this.boundingBox.minY)) { return false; } //System.out.println("" + this.boundingBox.minX + ", " + this.boundingBox.minY + ", " + this.boundingBox.minZ); - + placeFoundationUnderneath(world, Blocks.stonebrick, 0, 0, 0, 8, 10, -1, box); - + int pillarMetaWE = this.getPillarMeta(4); int pillarMetaNS = this.getPillarMeta(8); - + this.fillWithBlocks(world, box, 0, 0, 0, 0, 6, 0, ModBlocks.concrete_pillar, Blocks.air, false); //Back Wall this.fillWithMetadataBlocks(world, box, 1, 3, 0, 3, 3, 0, ModBlocks.concrete_pillar, pillarMetaWE, Blocks.air, 0, false); this.fillWithBlocks(world, box, 4, 0, 0, 4, 6 - 1, 0, ModBlocks.concrete_pillar, Blocks.air, false); @@ -83,39 +83,39 @@ public class RuinFeatures { this.fillWithRandomizedBlocks(world, box, 8, 0, 6, 8, 0, 6, false, rand, RandomConcreteBricks); this.fillWithRandomizedBlocks(world, box, 8, 0, 10 - 2, 8, 1, 10 - 1, false, rand, RandomConcreteBricks); this.fillWithRandomizedBlocks(world, box, 8, 2, 10 - 1, 8, 2, 10 - 1, false, rand, RandomConcreteBricks); - + this.randomlyFillWithBlocks(world, box, rand, 0.25F, 1, 0, 1, 8 - 1, 0, 10 - 1, Blocks.gravel, Blocks.air, false); - + return true; } } - + public static class NTMRuin2 extends Component { - + private static ConcreteBricks RandomConcreteBricks = new ConcreteBricks(); - + public NTMRuin2() { super(); } - + public NTMRuin2(Random rand, int minX, int minZ) { super(rand, minX, 64, minZ, 7, 5, 10); } @Override public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { - + //System.out.println(this.coordBaseMode); if(!this.setAverageHeight(world, box, this.boundingBox.minY)) { return false; } //System.out.println("" + this.boundingBox.minX + ", " + this.boundingBox.minY + ", " + this.boundingBox.minZ); - + placeFoundationUnderneath(world, Blocks.stonebrick, 0, 0, 0, 7, 10, -1, box); - + int pillarMetaWE = this.getPillarMeta(4); int pillarMetaNS = this.getPillarMeta(8); - + this.fillWithBlocks(world, box, 0, 0, 0, 0, 3, 0, ModBlocks.concrete_pillar, Blocks.air, false); //Back Wall this.fillWithMetadataBlocks(world, box, 1, 3, 0, 7 - 1, 3, 0, ModBlocks.concrete_pillar, pillarMetaWE, Blocks.air, 0, false); this.fillWithBlocks(world, box, 7, 0, 0, 7, 5, 0, ModBlocks.concrete_pillar, Blocks.air, false); @@ -146,40 +146,40 @@ public class RuinFeatures { this.fillWithRandomizedBlocks(world, box, 7, 0, 6, 7, 0, 10 - 1, false, rand, RandomConcreteBricks); this.fillWithRandomizedBlocks(world, box, 7, 1, 6, 7, 1, 7, false, rand, RandomConcreteBricks); this.fillWithRandomizedBlocks(world, box, 7, 1, 10 - 1, 7, 2, 10 - 1, false, rand, RandomConcreteBricks); - + this.randomlyFillWithBlocks(world, box, rand, 0.25F, 1, 0, 1, 7 - 1, 0, 10 - 1, Blocks.gravel, Blocks.air, false); - + return true; } } - + public static class NTMRuin3 extends Component { - + private static ConcreteBricks RandomConcreteBricks = new ConcreteBricks(); - + public NTMRuin3() { super(); } - + public NTMRuin3(Random rand, int minX, int minZ) { super(rand, minX, 64, minZ, 8, 3, 10); } @Override public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { - + //System.out.println(this.coordBaseMode); if(!this.setAverageHeight(world, box, this.boundingBox.minY)) { return false; } //System.out.println("" + this.boundingBox.minX + ", " + this.boundingBox.minY + ", " + this.boundingBox.minZ); - + placeFoundationUnderneath(world, Blocks.stonebrick, 0, 0, 0, 0, 10, -1, box); placeFoundationUnderneath(world, Blocks.stonebrick, 0, 8, 0, 8, 10, -1, box); - + placeFoundationUnderneath(world, Blocks.stonebrick, 0, 1, 0, 8, 0, -1, box); placeFoundationUnderneath(world, Blocks.stonebrick, 0, 1, 4, 8, 4, -1, box); - + this.fillWithBlocks(world, box, 0, 0, 0, 0, 3, 0, ModBlocks.concrete_pillar, Blocks.air, false); //Back Wall this.fillWithBlocks(world, box, 8, 0, 0, 8, 1, 0, ModBlocks.concrete_pillar, Blocks.air, false); this.fillWithRandomizedBlocks(world, box, 1, 0, 0, 8 - 1, 0, 0, false, rand, RandomConcreteBricks); @@ -202,44 +202,44 @@ public class RuinFeatures { this.fillWithBlocks(world, box, 4, 0, 4, 4, 2, 4, ModBlocks.concrete_pillar, Blocks.air, false); //Center Wall this.fillWithRandomizedBlocks(world, box, 3, 0, 4, 3, 1, 4, false, rand, RandomConcreteBricks); this.fillWithRandomizedBlocks(world, box, 5, 0, 4, 8 - 1, 1, 4, false, rand, RandomConcreteBricks); - + this.randomlyFillWithBlocks(world, box, rand, 0.05F, 1, 0, 1, 8 - 1, 0, 3, Blocks.gravel, Blocks.air, false); this.randomlyFillWithBlocks(world, box, rand, 0.05F, 1, 0, 5, 8 - 1, 0, 10 - 1, Blocks.gravel, Blocks.air, false); - + return true; } } - + public static class NTMRuin4 extends Component { - + private static ConcreteBricks RandomConcreteBricks = new ConcreteBricks(); - + public NTMRuin4() { super(); } - + public NTMRuin4(Random rand, int minX, int minZ) { super(rand, minX, 64, minZ, 10, 2, 11); } @Override public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { - + //System.out.println(this.coordBaseMode); if(!this.setAverageHeight(world, box, this.boundingBox.minY)) { return false; } //System.out.println("" + this.boundingBox.minX + ", " + this.boundingBox.minY + ", " + this.boundingBox.minZ); - - + + placeFoundationUnderneath(world, Blocks.stonebrick, 0, 0, 0, 0, 11, -1, box); placeFoundationUnderneath(world, Blocks.stonebrick, 0, 10, 5, 10, 11, -1, box); placeFoundationUnderneath(world, Blocks.stonebrick, 0, 5, 0, 5, 4, -1, box); - + placeFoundationUnderneath(world, Blocks.stonebrick, 0, 1, 11, 10 - 1, 11, -1, box); placeFoundationUnderneath(world, Blocks.stonebrick, 0, 1, 0, 4, 0, -1, box); placeFoundationUnderneath(world, Blocks.stonebrick, 0, 5, 5, 10 - 1, 5, -1, box); - + this.fillWithBlocks(world, box, 0, 0, 0, 0, 1, 0, ModBlocks.concrete_pillar, Blocks.air, false); //Back Wall Pt. 1 this.fillWithBlocks(world, box, 5, 0, 0, 5, 2, 0, ModBlocks.concrete_pillar, Blocks.air, false); this.fillWithRandomizedBlocks(world, box, 1, 0, 0, 4, 0, 0, false, rand, RandomConcreteBricks); @@ -263,12 +263,12 @@ public class RuinFeatures { this.fillWithRandomizedBlocks(world, box, 0, 0, 1, 0, 0, 11 - 1, false, rand, RandomConcreteBricks); //Left Wall this.fillWithRandomizedBlocks(world, box, 0, 1, 1, 0, 1, 1, false, rand, RandomConcreteBricks); this.fillWithRandomizedBlocks(world, box, 0, 1, 4, 0, 1, 7, false, rand, RandomConcreteBricks); - + this.randomlyFillWithBlocks(world, box, rand, 0.05F, 1, 0, 1, 4, 0, 5, Blocks.gravel, Blocks.air, false); this.randomlyFillWithBlocks(world, box, rand, 0.05F, 1, 0, 6, 10 - 1, 0, 11 - 1, Blocks.gravel, Blocks.air, false); - + return true; } } - + } From 66971b3310cbca7ca98d20baa7475338338f376d Mon Sep 17 00:00:00 2001 From: Lazzzycatwastaken Date: Wed, 27 Aug 2025 17:36:40 +0200 Subject: [PATCH 4/4] SIX @SEVEN --- src/main/java/com/hbm/util/LootGenerator.java | 14 +++++ .../com/hbm/world/gen/NTMWorldGenerator.java | 51 +++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/src/main/java/com/hbm/util/LootGenerator.java b/src/main/java/com/hbm/util/LootGenerator.java index cee32e713..a91ec0e3a 100644 --- a/src/main/java/com/hbm/util/LootGenerator.java +++ b/src/main/java/com/hbm/util/LootGenerator.java @@ -29,6 +29,7 @@ public class LootGenerator { public static final String LOOT_GLYPHID_HIVE = "LOOT_GLYPHID_HIVE"; public static final String LOOT_METEOR = "LOOT_METEOR"; public static final String LOOT_FLAREGUN = "LOOT_FLAREGUN"; + public static final String LOOT_SHIT = "LOOT_SHIT"; public static void applyLoot(World world, int x, int y, int z, String name) { switch(name) { @@ -42,6 +43,7 @@ public class LootGenerator { case LOOT_GLYPHID_HIVE: lootGlyphidHive(world, x, y, z); case LOOT_METEOR: lootBookMeteor(world, x, y, z); case LOOT_FLAREGUN: lootFlareGun(world, x, y, z); + case LOOT_SHIT: lootShit(world, x, y, z); default: lootBones(world, x, y, z); break; } } @@ -233,4 +235,16 @@ public class LootGenerator { 0.25, k * 0.03125, 0.125); } } + public static void lootShit(World world, int x, int y, int z) { + + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); + + if(loot != null && loot.items.isEmpty()) { + + int limit = world.rand.nextInt(3) + 3; + for(int i = 0; i < limit; i++) { + addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPool.getPool(ItemPoolsPile.POOL_PILE_OF_GARBAGE), world.rand), world.rand.nextDouble() - 0.5, i * 0.03125, world.rand.nextDouble() - 0.5); + } + } + } } diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index 049428707..3fcb7e903 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -113,6 +113,57 @@ public class NTMWorldGenerator implements IWorldGenerator { spawnWeight = 1; }}); + NBTStructure.registerStructure(0, new SpawnCondition("ruin1") {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsA", StructureManager.ntmruinsA, -1) {{conformToTerrain = true;}}; + spawnWeight = 20; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("ruin2") {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsB", StructureManager.ntmruinsB, -1) {{conformToTerrain = true;}}; + spawnWeight = 25; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("ruin3") {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsC", StructureManager.ntmruinsC, -1) {{conformToTerrain = true;}}; + spawnWeight = 25; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("ruin4") {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsD", StructureManager.ntmruinsD, -1) {{conformToTerrain = true;}}; + spawnWeight = 30; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("ruin5") {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsE", StructureManager.ntmruinsE, -1) {{conformToTerrain = true;}}; + spawnWeight = 30; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("ruin6") {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsF", StructureManager.ntmruinsF, -1) {{conformToTerrain = true;}}; + spawnWeight = 50; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("ruin7") {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsG", StructureManager.ntmruinsG, -1) {{conformToTerrain = true;}}; + spawnWeight = 50; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("ruin8") {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsH", StructureManager.ntmruinsH, -1) {{conformToTerrain = true;}}; + spawnWeight = 50; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("ruin9") {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsI", StructureManager.ntmruinsI, -1) {{conformToTerrain = true;}}; + spawnWeight = 50; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("ruin10") {{ + canSpawn = biome -> !invalidBiomes.contains(biome) && biome.canSpawnLightningBolt(); + structure = new JigsawPiece("NTMRuinsJ", StructureManager.ntmruinsJ, -1) {{conformToTerrain = true;}}; + spawnWeight = 35; + }}); + NBTStructure.registerNullWeight(0, 2, biome -> biome == BiomeGenBase.plains); NBTStructure.registerNullWeight(0, 2, oceanBiomes::contains);