From a2e3a2540df1e06649c25148018722fac68067da Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 13 May 2025 22:50:58 +0200 Subject: [PATCH] sure --- src/main/java/com/hbm/blocks/BlockEnums.java | 4 ++ src/main/java/com/hbm/blocks/ModBlocks.java | 3 ++ .../com/hbm/blocks/generic/BlockBarrier.java | 8 +++- .../hbm/blocks/generic/DungeonSpawner.java | 4 +- .../java/com/hbm/items/tool/ItemWandD.java | 38 ++---------------- .../java/com/hbm/main/StructureManager.java | 6 +++ .../java/com/hbm/world/gen/NBTStructure.java | 2 - .../com/hbm/world/gen/NTMWorldGenerator.java | 15 +++++++ .../assets/hbm/structures/trench/trench.nbt | Bin 0 -> 567 bytes .../hbm/structures/trench/trench_junction.nbt | Bin 0 -> 960 bytes .../hbm/structures/trench/trench_left.nbt | Bin 0 -> 472 bytes .../hbm/structures/trench/trench_right.nbt | Bin 0 -> 473 bytes .../hbm/textures/blocks/ground.trench.png | Bin 0 -> 709 bytes 13 files changed, 40 insertions(+), 40 deletions(-) create mode 100644 src/main/resources/assets/hbm/structures/trench/trench.nbt create mode 100644 src/main/resources/assets/hbm/structures/trench/trench_junction.nbt create mode 100644 src/main/resources/assets/hbm/structures/trench/trench_left.nbt create mode 100644 src/main/resources/assets/hbm/structures/trench/trench_right.nbt create mode 100644 src/main/resources/assets/hbm/textures/blocks/ground.trench.png diff --git a/src/main/java/com/hbm/blocks/BlockEnums.java b/src/main/java/com/hbm/blocks/BlockEnums.java index 15a618779..04a6361f0 100644 --- a/src/main/java/com/hbm/blocks/BlockEnums.java +++ b/src/main/java/com/hbm/blocks/BlockEnums.java @@ -80,4 +80,8 @@ public class BlockEnums { FLUORESCENT, HALOGEN } + + public static enum EnumGroundType { + TRENCH + } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index a9fb689b3..4072ad150 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -499,6 +499,7 @@ public class ModBlocks { public static Block frozen_grass; public static Block frozen_log; public static Block frozen_planks; + public static Block ground; public static Block dirt_dead; public static Block dirt_oily; public static Block sand_dirty; @@ -1702,6 +1703,7 @@ public class ModBlocks { tektite = new BlockGeneric(Material.sand).setBlockName("tektite").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":tektite"); ore_tektite_osmiridium = new BlockGeneric(Material.sand).setBlockName("ore_tektite_osmiridium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":ore_tektite_osmiridium"); impact_dirt = new BlockDirt(Material.ground, true).setBlockName("impact_dirt").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":waste_earth_bottom"); + ground = new BlockEnumMulti(Material.ground, EnumGroundType.class, true, true).setBlockName("ground").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":ground"); dirt_dead = new BlockFalling(Material.ground).setBlockName("dirt_dead").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":dirt_dead"); dirt_oily = new BlockFalling(Material.ground).setBlockName("dirt_oily").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":dirt_oily"); sand_dirty = new BlockFalling(Material.sand).setBlockName("sand_dirty").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_dirty"); @@ -2849,6 +2851,7 @@ public class ModBlocks { GameRegistry.registerBlock(frozen_dirt, frozen_dirt.getUnlocalizedName()); GameRegistry.registerBlock(frozen_log, frozen_log.getUnlocalizedName()); GameRegistry.registerBlock(frozen_planks, frozen_planks.getUnlocalizedName()); + register(ground); GameRegistry.registerBlock(dirt_dead, dirt_dead.getUnlocalizedName()); GameRegistry.registerBlock(dirt_oily, dirt_oily.getUnlocalizedName()); GameRegistry.registerBlock(sand_dirty, sand_dirty.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockBarrier.java b/src/main/java/com/hbm/blocks/generic/BlockBarrier.java index e9504c209..ecdc61df6 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBarrier.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBarrier.java @@ -8,6 +8,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.lib.Library; import com.hbm.render.block.ISBRHUniversal; import com.hbm.render.util.RenderBlocksNT; +import com.hbm.world.gen.INBTTransformable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -23,7 +24,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class BlockBarrier extends Block implements ISBRHUniversal { +public class BlockBarrier extends Block implements ISBRHUniversal, INBTTransformable { public BlockBarrier(Material mat) { super(mat); @@ -158,4 +159,9 @@ public class BlockBarrier extends Block implements ISBRHUniversal { return true; } + + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDeco(meta, coordBaseMode); + } } diff --git a/src/main/java/com/hbm/blocks/generic/DungeonSpawner.java b/src/main/java/com/hbm/blocks/generic/DungeonSpawner.java index 65f4ef5e5..e57278800 100644 --- a/src/main/java/com/hbm/blocks/generic/DungeonSpawner.java +++ b/src/main/java/com/hbm/blocks/generic/DungeonSpawner.java @@ -106,8 +106,8 @@ public class DungeonSpawner extends BlockContainer { for(int i = 0; i < 10; i++) { EntityUndeadSoldier mob = new EntityUndeadSoldier(world); for(int j = 0; j < 7; j++) { - mob.setPositionAndRotation(x + 0.5 + vec.xCoord, y - 5, z + 0.5 + vec.zCoord, i * 36F, 0); - if(mob.getCanSpawnHere()) { + mob.setPositionAndRotation(x + 0.5 + vec.xCoord, y - 5 + j, z + 0.5 + vec.zCoord, i * 36F, 0); + if(mob.worldObj.checkNoEntityCollision(mob.boundingBox) && mob.worldObj.getCollidingBoundingBoxes(mob, mob.boundingBox).isEmpty() && !mob.worldObj.isAnyLiquid(mob.boundingBox)) { mob.onSpawnWithEgg(null); world.spawnEntityInWorld(mob); break; diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 3d3875a20..f6f0d2792 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -9,7 +9,7 @@ import com.hbm.itempool.ItemPool; import com.hbm.itempool.ItemPoolsSingle; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; - +import com.hbm.main.StructureManager; import com.hbm.tileentity.machine.storage.TileEntitySafe; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -31,40 +31,8 @@ public class ItemWandD extends Item { if(pos != null) { int y = world.getHeightValue(pos.blockX, pos.blockZ); - - Random rand = new Random(); - - if(world.getBlock(pos.blockX, y - 1, pos.blockZ).canPlaceTorchOnTop(world, pos.blockX, y - 1, pos.blockZ)) { - world.setBlock(pos.blockX, y, pos.blockZ, ModBlocks.safe, rand.nextInt(4) + 2, 2); - TileEntitySafe safe = (TileEntitySafe) world.getTileEntity(pos.blockX, y, pos.blockZ); - - switch(rand.nextInt(10)) { - case 0: case 1: case 2: case 3: - safe.setMod(1); - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_RUSTY), safe, rand.nextInt(4) + 3); - break; - case 4: case 5: case 6: - safe.setMod(0.1); - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_STANDARD), safe, rand.nextInt(3) + 2); - break; - case 7: case 8: - safe.setMod(0.02); - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_REINFORCED), safe, rand.nextInt(3) + 1); - break; - case 9: - safe.setMod(0.0); - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_UNBREAKABLE), safe, rand.nextInt(2) + 1); - break; - } - - safe.setPins(rand.nextInt(999) + 1); - safe.lock(); - - safe.fillWithSpiders(); // debug - - if(GeneralConfig.enableDebugMode) - MainRegistry.logger.info("[Debug] Successfully spawned safe at " + pos.blockX + " " + (y + 1) +" " + pos.blockZ); - } + + StructureManager.spire.build(world, pos.blockX, y, pos.blockZ); /*ExplosionVNT vnt = new ExplosionVNT(world, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 7); vnt.setBlockAllocator(new BlockAllocatorBulkie(60)); diff --git a/src/main/java/com/hbm/main/StructureManager.java b/src/main/java/com/hbm/main/StructureManager.java index 5c3f93090..3bb2f2387 100644 --- a/src/main/java/com/hbm/main/StructureManager.java +++ b/src/main/java/com/hbm/main/StructureManager.java @@ -63,6 +63,12 @@ public class StructureManager { public static final NBTStructure dish = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/dish.nbt")); public static final NBTStructure spire = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/spire.nbt")); + + /// TRENCH /// + public static final NBTStructure trench = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/trench/trench.nbt")); + public static final NBTStructure trench_left = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/trench/trench_left.nbt")); + public static final NBTStructure trench_right = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/trench/trench_right.nbt")); + public static final NBTStructure trench_junction = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/trench/trench_junction.nbt")); // public static final NBTStructure test_rot = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-rot.nbt")); // public static final NBTStructure test_jigsaw = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-jigsaw.nbt")); diff --git a/src/main/java/com/hbm/world/gen/NBTStructure.java b/src/main/java/com/hbm/world/gen/NBTStructure.java index 60da4735a..073a641d5 100644 --- a/src/main/java/com/hbm/world/gen/NBTStructure.java +++ b/src/main/java/com/hbm/world/gen/NBTStructure.java @@ -1235,7 +1235,5 @@ public class NBTStructure { return null; } - } - } diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index bb1c7b3d3..06e50c80c 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -47,6 +47,21 @@ public class NTMWorldGenerator implements IWorldGenerator { spawnWeight = 2; }}); + /// TRENCH /// + NBTStructure.registerStructure(0, new SpawnCondition() {{ + sizeLimit = 128; + startPool = "trench"; + spawnWeight = 200; + pools = new HashMap() {{ + put("trench", new JigsawPool() {{ + add(new JigsawPiece("trench", StructureManager.trench) {{ heightOffset = -4; conformToTerrain = true; }}, 100); + add(new JigsawPiece("trench_left", StructureManager.trench_left) {{ heightOffset = -4; conformToTerrain = true; }}, 10); + add(new JigsawPiece("trench_right", StructureManager.trench_right) {{ heightOffset = -4; conformToTerrain = true; }}, 10); + add(new JigsawPiece("trench_junction", StructureManager.trench_junction) {{ heightOffset = -4; conformToTerrain = true; }}, 25); + }}); + }}; + }}); + NBTStructure.registerStructure(0, new SpawnCondition() {{ canSpawn = biome -> !invalidBiomes.contains(biome); start = d -> new MapGenNTMFeatures.Start(d.getW(), d.getX(), d.getY(), d.getZ()); diff --git a/src/main/resources/assets/hbm/structures/trench/trench.nbt b/src/main/resources/assets/hbm/structures/trench/trench.nbt new file mode 100644 index 0000000000000000000000000000000000000000..6fabff53dbc4b85fb57e132175e8b107238d5177 GIT binary patch literal 567 zcmb2|=3sz;tCrVQtmrcgZ24{N}$I_OAKHtHeI%NVK2PJ-4@)ueZ!F ziOX3wwd)D@A#)$Q+rJ7KCos!j(Lc$MAakehNS`m?%$!~$FFu1f%O$&aY47K6-TQME z^XuIQMFn@n@Ju?$p{y_J&Esewa?pU~u%J&EY+r!Lb>h_Q?G4g za2DWkHQ+f|z%p53MoH_(&3Z@H?ED=mo^ zOBK`3-aT){#=4;_-RME>^{W%4bZ>w1Xn4JDoo8CTz%K>fJHGtew%(Ec{mAj!CX-d! z%PSxCnlPRFopssf{r9bF4(!_`+S?L7-D@qM`)zg0`Kuq4E{=-K+Gx)2^pa=Ast5O0 zM9u3@wBN3NG3>T_sl<_!+g@h}o;qeX>(_s^PwuZP~Adm+kGR%7?KopWb0 r{QG%-SIwN$_u@{kGnQTPYfI44gwM{e5~KK-_A@@8a+05kmw^EQ6m=A< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/trench/trench_junction.nbt b/src/main/resources/assets/hbm/structures/trench/trench_junction.nbt new file mode 100644 index 0000000000000000000000000000000000000000..9c840c0de844eb52e90806e8622fe31ecf49cc34 GIT binary patch literal 960 zcmV;x13&y9iwFP!000000M(goZW=KVhG)Nlr0So3+@flmb+f9oc@H^0V^Y}yV7;ZKr4*16J|#}Pgz6_|*`i2}@VoY=#}ia4<%PNImDDB`3f zP6881nwc9xx@p@Qa%W95zmFibZCyvB-5*N3G7c^eA53kvx_1eTJ5!svtJ>x;bGkOJ zJcv@Px65U17P}&*O}RF3@i??L%iTQLzJBm(T{UKI%cZ+5D?5U?TEIJ3)n;GrAJd1j zSxmoHtFC<5&94J`9m3d%%^RzZeql}OPl$Z(~J6s>}c6h~?m zWTZIHTgA_$3=?CEGa4ep)dCr=7RY1*6Onwf0K=^v8ENei$;UTWtjLGd(1Z%?XeIe<&%4Y%-lQjVTbVG(a-H_ohI@LJdwRncM|zr;Kt`>ztXJj~?3x&?eaO)}*IwK>+k#t5zigWe@_J8+31iJlkna5IG?3jznne|;+ z8#h$F*c{&W-_~4CU~*^Mjj{c=IitrVMIZZheCgNm`hK>)?KAwavhB86fPcW%FyQSl z;Gu07(^+Y4Wo%&B=kta=rFSZ50KXpaH&3%XDIFN~X&CkXG`G&#?c8mx5wm;Yz?<{b ixc*b^U!uy@S)*=*Q3({^jqMJt9l>u)R1__I8~^|+UC{~v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/trench/trench_left.nbt b/src/main/resources/assets/hbm/structures/trench/trench_left.nbt new file mode 100644 index 0000000000000000000000000000000000000000..aa957a6370863e12431b68a12f40747f4203f8b6 GIT binary patch literal 472 zcmV;}0Vn<+iwFP!000000G*ZHZlf>|g~v8YfbME<`tu6Cs@iJzrVp{|8$=FF61N5; z+u3OQ^fe)n#=^uZ5<=kbFh}DvkOO3p81aD&0NOKg=d8VEkYa6x6=#0^{d- z%#WYv5Oc|opXV{g&+}Lf|mn2JTy-L^lWc@FujRt@U*CzT%CM;_ar{cU^pYrCpm+HO2-wA$4rj0^q@ zf}26GSE^jDxYh!7Kz6Egz6$~T_xGwi4YIp)nX!6T*qz3J@OcnkpMVNo|zH+XNNyrS8?7RGJmi*B7FLsyqT~1qA>BRceJiq P5eEMOWD{w23J3rI=-KRN literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/ground.trench.png b/src/main/resources/assets/hbm/textures/blocks/ground.trench.png new file mode 100644 index 0000000000000000000000000000000000000000..9aa9c2e37c5ada8d3ce56ef874f52b2b6753eb7f GIT binary patch literal 709 zcmV;$0y_PPP)(4*#vk%0u;(S1~&@~mKu>d$902ppFZMCCmDhe(9_<7;=?|x&ct+8D*~N z+M2MfWFjblN+L0CbZw2Xj^m-_(hs;00qDmG(ZbI$B3c-xnUBu_0OfqZx`5~u(Zb8q z9)P%RSQogC6K%C4hKT9k0Z3AXq>8Ssk*=-jhl$BpCS%dffz5wW=9+z(lV>R^O)0cc zR|V6}QRMpZP%X%49l*maOBv0`x^65n(hn0wu349r;1>Xv_=t7><-qJbs>m|{-Y#Fv zKHz+y+~s55>)(0}Bxby?ptHJr@ z0a;tqlm$yzC~}PwEdabcH#|2LT~m=M#rf1xa~(M`BpXl;S#0h)$V4{=xe2s4*d--j_`O^FJC(*Hpy& z#`O7yN)$TJ5G|CsW-^wpt@-_Ye1P=aR^P`qtmr)Bay8!szI|LNv~anOEHQFAw1jPC zG!`jxO+QRnA2^>n;{DF$%TN{?V`k2$4$0ET`no5a58v@brwBj{k@Kk|Y%9AWCsPVl rJh2C67r;R#g7blTUw%*Dj)DIGym4ZsyC1B100000NkvXXu0mjfOyf>9 literal 0 HcmV?d00001