diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 401d5f7bf..7f14e7a57 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -271,6 +271,8 @@ public class ModBlocks { public static Block deco_rbmk; public static Block deco_rbmk_smooth; + public static Block deco_loot; + public static Block hazmat; public static Block gravel_obsidian; @@ -356,6 +358,8 @@ public class ModBlocks { public static Block brick_dungeon_tile; public static Block brick_dungeon_circle; + public static Block brick_forgotten; + public static Block tape_recorder; public static Block steel_poles; public static Block pole_top; @@ -1084,6 +1088,7 @@ public class ModBlocks { public static Block absorber_green; public static Block absorber_pink; public static Block decon; + public static Block transission_hatch; public static Block mud_block; public static Fluid mud_fluid; @@ -1430,6 +1435,7 @@ public class ModBlocks { deco_rbmk = new BlockGeneric(Material.iron).setBlockName("deco_rbmk").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_side"); deco_rbmk_smooth = new BlockGeneric(Material.iron).setBlockName("deco_rbmk_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_top"); + deco_loot = new BlockLoot().setBlockName("deco_loot").setCreativeTab(null).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":deco_loot"); hazmat = new BlockGeneric(Material.cloth).setBlockName("hazmat").setStepSound(Block.soundTypeCloth).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":hazmat"); gravel_obsidian = new BlockFalling(Material.iron).setBlockName("gravel_obsidian").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":gravel_obsidian"); @@ -1515,6 +1521,8 @@ public class ModBlocks { brick_dungeon_flat = new BlockGeneric(Material.rock).setBlockName("brick_dungeon_flat").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_dungeon_flat"); brick_dungeon_tile = new BlockGeneric(Material.rock).setBlockName("brick_dungeon_tile").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_dungeon_tile"); brick_dungeon_circle = new BlockGeneric(Material.rock).setBlockName("brick_dungeon_circle").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_dungeon_circle"); + + brick_forgotten = new BlockGeneric(Material.rock).setBlockName("brick_forgotten").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(1000000).setBlockTextureName(RefStrings.MODID + ":brick_forgotten"); tape_recorder = new DecoTapeRecorder(Material.iron).setBlockName("tape_recorder").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_tape_recorder"); steel_poles = new DecoSteelPoles(Material.iron).setBlockName("steel_poles").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_beam"); @@ -2063,13 +2071,14 @@ public class ModBlocks { gas_coal = new BlockGasCoal().setBlockName("gas_coal").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_coal"); gas_flammable = new BlockGasFlammable().setBlockName("gas_flammable").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_flammable"); gas_explosive = new BlockGasExplosive().setBlockName("gas_explosive").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_explosive"); - vacuum = new BlockVacuum().setBlockName("vacuum").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vacuum"); + vacuum = new BlockVacuum().setBlockName("vacuum").setResistance(1000000F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vacuum"); absorber = new BlockAbsorber(Material.iron, 2.5F).setBlockName("absorber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber"); absorber_red = new BlockAbsorber(Material.iron, 10F).setBlockName("absorber_red").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_red"); absorber_green = new BlockAbsorber(Material.iron, 100F).setBlockName("absorber_green").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_green"); absorber_pink = new BlockAbsorber(Material.iron, 10000F).setBlockName("absorber_pink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_pink"); decon = new BlockDecon(Material.iron).setBlockName("decon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":decon_side"); + transission_hatch = new BlockTransission(Material.iron).setBlockName("transission_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transission_hatch"); volcano_core = new BlockVolcano().setBlockName("volcano_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_core"); @@ -2407,6 +2416,7 @@ public class ModBlocks { GameRegistry.registerBlock(deco_lead, deco_lead.getUnlocalizedName()); GameRegistry.registerBlock(deco_beryllium, deco_beryllium.getUnlocalizedName()); GameRegistry.registerBlock(deco_asbestos, deco_asbestos.getUnlocalizedName()); + GameRegistry.registerBlock(deco_loot, deco_loot.getUnlocalizedName()); GameRegistry.registerBlock(hazmat, hazmat.getUnlocalizedName()); GameRegistry.registerBlock(deco_rbmk, deco_rbmk.getUnlocalizedName()); GameRegistry.registerBlock(deco_rbmk_smooth, deco_rbmk_smooth.getUnlocalizedName()); @@ -2508,6 +2518,7 @@ public class ModBlocks { GameRegistry.registerBlock(brick_dungeon_flat, brick_dungeon_flat.getUnlocalizedName()); GameRegistry.registerBlock(brick_dungeon_tile, brick_dungeon_tile.getUnlocalizedName()); GameRegistry.registerBlock(brick_dungeon_circle, brick_dungeon_circle.getUnlocalizedName()); + GameRegistry.registerBlock(brick_forgotten, brick_forgotten.getUnlocalizedName()); GameRegistry.registerBlock(tape_recorder, tape_recorder.getUnlocalizedName()); GameRegistry.registerBlock(steel_poles, steel_poles.getUnlocalizedName()); GameRegistry.registerBlock(pole_top, pole_top.getUnlocalizedName()); @@ -2922,6 +2933,7 @@ public class ModBlocks { GameRegistry.registerBlock(absorber_green, absorber_green.getUnlocalizedName()); GameRegistry.registerBlock(absorber_pink, absorber_pink.getUnlocalizedName()); GameRegistry.registerBlock(decon, decon.getUnlocalizedName()); + GameRegistry.registerBlock(transission_hatch, transission_hatch.getUnlocalizedName()); //Solar Tower Blocks GameRegistry.registerBlock(machine_solar_boiler, machine_solar_boiler.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/gas/BlockVacuum.java b/src/main/java/com/hbm/blocks/gas/BlockVacuum.java index 07e8dc468..34a00b969 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockVacuum.java +++ b/src/main/java/com/hbm/blocks/gas/BlockVacuum.java @@ -63,7 +63,7 @@ public class BlockVacuum extends Block { @Override public boolean isReplaceable(IBlockAccess world, int x, int y, int z) { - return true; + return false; } @Override @@ -86,14 +86,45 @@ public class BlockVacuum extends Block { if(b == this) continue; - if(b.getMaterial() == Material.air || - b.getBlockBoundsMinX() > 0 || b.getBlockBoundsMinY() > 0 || b.getBlockBoundsMinZ() > 0 || - b.getBlockBoundsMaxX() < 1 || b.getBlockBoundsMaxY() < 1 || b.getBlockBoundsMaxZ() < 1) { + if(isAirBlock(b)) { + + if(b.isReplaceable(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)) { + if(getAirCount(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) == 0) { + world.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, ModBlocks.vacuum); + return; + } + } + world.setBlockToAir(x, y, z); return; } } } + + private boolean isAirBlock(Block b) { + + if(b == this) + return false; + + return b.getMaterial() == Material.air || + b.getBlockBoundsMinX() > 0 || b.getBlockBoundsMinY() > 0 || b.getBlockBoundsMinZ() > 0 || + b.getBlockBoundsMaxX() < 1 || b.getBlockBoundsMaxY() < 1 || b.getBlockBoundsMaxZ() < 1; + } + + private int getAirCount(World world, int x, int y, int z) { + + int air = 0; + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); + + if(isAirBlock(b)) + air++; + } + + return air; + } @Override public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockLoot.java b/src/main/java/com/hbm/blocks/generic/BlockLoot.java new file mode 100644 index 000000000..8bb0f0c50 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockLoot.java @@ -0,0 +1,162 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.bomb.TileEntityBombMulti; +import com.hbm.util.Tuple.Quartet; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class BlockLoot extends BlockContainer { + + public BlockLoot() { + super(Material.iron); + } + + @Override + public int getRenderType() { + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) { + super.onBlockAdded(world, x, y, z); + + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); + + if(loot != null && loot.items.isEmpty()) { + + for(int i = 0; i < 64; i++) { + loot.addItem(new ItemStack(ModItems.cigarette), -0.375 + world.rand.nextDouble() * 0.75, world.rand.nextDouble() * 0.0625, -0.375 + world.rand.nextDouble() * 0.75); + } + } + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.0625F, 1.0F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote) { + return true; + + } else if(!player.isSneaking()) { + + TileEntityLoot entity = (TileEntityLoot) world.getTileEntity(x, y, z); + if(entity != null) { + + for(Quartet quartet : entity.items) { + player.inventory.addItemStackToInventory(quartet.getW()); + } + + world.setBlockToAir(x, y, z); + player.inventoryContainer.detectAndSendChanges(); + } + return true; + + } else { + return false; + } + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityLoot(); + } + + public static class TileEntityLoot extends TileEntity { + + public List> items = new ArrayList(); + + @Override + public boolean canUpdate() { + return false; + } + + public TileEntityLoot addItem(ItemStack stack, double x, double y, double z) { + items.add(new Quartet(stack, x, y, z)); + return this; + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + int count = nbt.getInteger("count"); + + System.out.println("count"); + + for(int i = 0; i < count; i++) { + ItemStack stack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("item" + i)); + double x = nbt.getDouble("x" + i); + double y = nbt.getDouble("y" + i); + double z = nbt.getDouble("z" + i); + items.add(new Quartet(stack, x, y, z)); + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setInteger("count", items.size()); + + for(int i = 0; i < items.size(); i++) { + Quartet item = items.get(i); + NBTTagCompound stack = new NBTTagCompound(); + item.getW().writeToNBT(stack); + nbt.setTag("item" + i, stack); + nbt.setDouble("x" + i, item.getX()); + nbt.setDouble("y" + i, item.getY()); + nbt.setDouble("z" + i, item.getZ()); + } + } + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockTransission.java b/src/main/java/com/hbm/blocks/generic/BlockTransission.java new file mode 100644 index 000000000..b17cf2308 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockTransission.java @@ -0,0 +1,32 @@ +package com.hbm.blocks.generic; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +public class BlockTransission extends Block { + + public BlockTransission(Material mat) { + super(mat); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + + } else if(!player.isSneaking()) { + + if(side == 0) { + player.setPositionAndUpdate(x + 0.5, y + 1, z + 0.5); + } + if(side == 1) { + player.setPositionAndUpdate(x + 0.5, y - 2, z + 0.5); + } + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index e928a516a..b44cd66db 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -2,6 +2,7 @@ package com.hbm.items.tool; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.entity.mob.EntityBlockSpider; import com.hbm.lib.Library; import com.hbm.world.generator.CellularDungeonFactory; @@ -31,11 +32,14 @@ public class ItemWandD extends Item { //CellularDungeonFactory.meteor.generate(world, x, y, z, world.rand); - for(int i = x - 10; i <= x + 10; i++) { - for(int j = y - 10; j <= y + 10; j++) { - for(int k = z - 10; k <= z + 10; k++) { + int r = 5; + + for(int i = x - r; i <= x + r; i++) { + for(int j = y - r; j <= y + r; j++) { + for(int k = z - r; k <= z + r; k++) { - world.getBlock(i, j, k).updateTick(world, i, j, k, world.rand); + world.setBlock(i, j, k, ModBlocks.vacuum); + //world.getBlock(i, j, k).updateTick(world, i, j, k, world.rand); } } } diff --git a/src/main/java/com/hbm/lib/HbmWorld.java b/src/main/java/com/hbm/lib/HbmWorld.java index 79f0f7473..c749b4b0b 100644 --- a/src/main/java/com/hbm/lib/HbmWorld.java +++ b/src/main/java/com/hbm/lib/HbmWorld.java @@ -1,21 +1,29 @@ package com.hbm.lib; +import com.hbm.world.test.StructureComponentTest; +import com.hbm.world.test.StructureStartTest; +import com.hbm.world.test.WorldGenTest; + +import cpw.mods.fml.common.IWorldGenerator; import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.world.gen.structure.MapGenStructureIO; public class HbmWorld { - public static void mainRegistry() - { + + public static void mainRegistry() { initWorldGen(); } - public static void initWorldGen() - { + public static void initWorldGen() { + + MapGenStructureIO.registerStructure(StructureStartTest.class, "HFR_STRUCTURE"); + MapGenStructureIO.func_143031_a(StructureComponentTest.class, "HFR_COMPONENT"); + registerWorldGen(new HbmWorldGen(), 1); + //registerWorldGen(new WorldGenTest(), 1); } - public static void registerWorldGen(HbmWorldGen nukerWorldGen, int weightedProbability) - { + public static void registerWorldGen(IWorldGenerator nukerWorldGen, int weightedProbability) { GameRegistry.registerWorldGenerator(nukerWorldGen, weightedProbability); } - } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 3b88bf45c..e2816ab53 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -35,6 +35,7 @@ import java.util.Map.Entry; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.entity.effect.*; import com.hbm.entity.grenade.*; import com.hbm.entity.item.EntityFireworks; @@ -111,6 +112,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltW.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltF.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDemonLamp.class, new RenderDemonLamp()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLoot.class, new RenderLoot()); //bombs ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeGadget.class, new RenderNukeGadget()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeBoy.class, new RenderNukeBoy()); diff --git a/src/main/java/com/hbm/render/tileentity/RenderLoot.java b/src/main/java/com/hbm/render/tileentity/RenderLoot.java new file mode 100644 index 000000000..83f1cc555 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderLoot.java @@ -0,0 +1,69 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; +import com.hbm.items.ModItems; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.RenderItemStack; +import com.hbm.util.Tuple.Quartet; + +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; + +public class RenderLoot extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + + TileEntityLoot loot = (TileEntityLoot) te; + + for(Quartet item : loot.items) { + + ItemStack stack = item.getW(); + + GL11.glPushMatrix(); + GL11.glTranslated(item.getX(), item.getY(), item.getZ()); + + if(stack.getItem() == ModItems.ammo_nuke || stack.getItem() == ModItems.ammo_nuke_low || stack.getItem() == ModItems.ammo_nuke_high || stack.getItem() == ModItems.ammo_nuke_safe) { + renderNuke(); + } else { + renderStandardItem(item.getW()); + } + + GL11.glPopMatrix(); + } + + GL11.glPopMatrix(); + } + + private void renderNuke() { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glTranslated(1, 0.5, 1); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.mini_nuke_tex); + ResourceManager.projectiles.renderPart("MiniNuke"); + GL11.glShadeModel(GL11.GL_FLAT); + } + + private void renderStandardItem(ItemStack stack) { + GL11.glTranslated(0.25, 0, 0.25); + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glRotated(90, 1, 0, 0); + + bindTexture(TextureMap.locationItemsTexture); + IIcon icon = stack.getIconIndex(); + float f14 = icon.getMinU(); + float f15 = icon.getMaxU(); + float f4 = icon.getMinV(); + float f5 = icon.getMaxV(); + ItemRenderer.renderItemIn2D(Tessellator.instance, f15, f4, f14, f5, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 3389c1969..efd0f5c5d 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -2,6 +2,7 @@ package com.hbm.tileentity; import java.util.HashMap; +import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.tileentity.bomb.*; import com.hbm.tileentity.conductor.*; import com.hbm.tileentity.deco.*; @@ -191,6 +192,8 @@ public class TileMappings { map.put(TileEntityMachineOrbus.class, "tileentity_orbus"); map.put(TileEntityMachineFractionTower.class, "tileentity_fraction_tower"); map.put(TileEntitySpacer.class, "tileentity_fraction_spacer"); + + map.put(TileEntityLoot.class, "tileentity_ntm_loot"); putBombs(); putTurrets(); diff --git a/src/main/java/com/hbm/world/test/MapGenTest.java b/src/main/java/com/hbm/world/test/MapGenTest.java new file mode 100644 index 000000000..97bb01543 --- /dev/null +++ b/src/main/java/com/hbm/world/test/MapGenTest.java @@ -0,0 +1,23 @@ +package com.hbm.world.test; + +import net.minecraft.world.gen.structure.MapGenStructure; +import net.minecraft.world.gen.structure.StructureStart; + +public class MapGenTest extends MapGenStructure { + + @Override + public String func_143025_a() { + return "HFR_TEST"; + } + + @Override + protected boolean canSpawnStructureAtCoords(int x, int z) { + return true; + } + + @Override + protected StructureStart getStructureStart(int x, int z) { + return new StructureStartTest(worldObj, rand, x, z); + } + +} diff --git a/src/main/java/com/hbm/world/test/StructureComponentTest.java b/src/main/java/com/hbm/world/test/StructureComponentTest.java new file mode 100644 index 000000000..e8a232da1 --- /dev/null +++ b/src/main/java/com/hbm/world/test/StructureComponentTest.java @@ -0,0 +1,37 @@ +package com.hbm.world.test; + +import java.util.Random; + +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.gen.structure.StructureBoundingBox; +import net.minecraft.world.gen.structure.StructureComponent; + +public class StructureComponentTest extends StructureComponent { + + public StructureComponentTest(int x, int z) { + this.boundingBox = new StructureBoundingBox(x, 64, z, x + 4, 64 + 9, z + 4); + } + + + //write + @Override + protected void func_143012_a(NBTTagCompound nbt) { + + } + + //read + @Override + protected void func_143011_b(NBTTagCompound nbt) { + + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox boundingbox) { + System.out.println("aaaaaaa"); + this.fillWithBlocks(world, boundingbox, 0, 0, 0, 4, 9, 4, Blocks.sandstone, Blocks.air, false); + return true; + } + +} diff --git a/src/main/java/com/hbm/world/test/StructureStartTest.java b/src/main/java/com/hbm/world/test/StructureStartTest.java new file mode 100644 index 000000000..a507adf26 --- /dev/null +++ b/src/main/java/com/hbm/world/test/StructureStartTest.java @@ -0,0 +1,15 @@ +package com.hbm.world.test; + +import java.util.Random; + +import net.minecraft.world.World; +import net.minecraft.world.gen.structure.StructureStart; + +public class StructureStartTest extends StructureStart { + + public StructureStartTest(World world, Random rand, int x, int z) { + System.out.println("StructureStartTest"); + this.components.add(new StructureComponentTest(x, z)); + this.updateBoundingBox(); + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/test/WorldGenTest.java b/src/main/java/com/hbm/world/test/WorldGenTest.java new file mode 100644 index 000000000..ddacb1a33 --- /dev/null +++ b/src/main/java/com/hbm/world/test/WorldGenTest.java @@ -0,0 +1,20 @@ +package com.hbm.world.test; + +import java.util.Random; + +import cpw.mods.fml.common.IWorldGenerator; +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraft.world.chunk.IChunkProvider; + +public class WorldGenTest implements IWorldGenerator { + + static MapGenTest gen = new MapGenTest(); + + @Override + public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { + gen.func_151539_a(chunkGenerator, world, chunkX, chunkZ, new Block[0]); + gen.generateStructuresInChunk(world, random, chunkX, chunkZ); + } +} + diff --git a/src/main/resources/assets/hbm/textures/blocks/brick_forgotten.png b/src/main/resources/assets/hbm/textures/blocks/brick_forgotten.png new file mode 100644 index 000000000..c302768fc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/brick_forgotten.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/transission_hatch.png b/src/main/resources/assets/hbm/textures/blocks/transission_hatch.png new file mode 100644 index 000000000..16b0c870a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/transission_hatch.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/zirnox.png b/src/main/resources/assets/hbm/textures/models/machines/zirnox.png new file mode 100644 index 000000000..59ad71249 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/zirnox.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/zirnox_base.png b/src/main/resources/assets/hbm/textures/models/machines/zirnox_base.png new file mode 100644 index 000000000..9971faa95 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/zirnox_base.png differ