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 000000000..6fabff53d Binary files /dev/null and b/src/main/resources/assets/hbm/structures/trench/trench.nbt differ 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 000000000..9c840c0de Binary files /dev/null and b/src/main/resources/assets/hbm/structures/trench/trench_junction.nbt differ 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 000000000..aa957a637 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/trench/trench_left.nbt differ diff --git a/src/main/resources/assets/hbm/structures/trench/trench_right.nbt b/src/main/resources/assets/hbm/structures/trench/trench_right.nbt new file mode 100644 index 000000000..bf8d49f8c Binary files /dev/null and b/src/main/resources/assets/hbm/structures/trench/trench_right.nbt differ 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 000000000..9aa9c2e37 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ground.trench.png differ