diff --git a/src/main/java/api/hbm/item/IDesignatorItem.java b/src/main/java/api/hbm/item/IDesignatorItem.java new file mode 100644 index 000000000..2cde2b01d --- /dev/null +++ b/src/main/java/api/hbm/item/IDesignatorItem.java @@ -0,0 +1,30 @@ +package api.hbm.item; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public interface IDesignatorItem { + + /** + * Whether the target is valid + * @param world for things like restricting dimensions or getting entities + * @param stack to check NBT and metadata + * @param x position of the launch pad + * @param y position of the launch pad + * @param z position of the launch pad + * @return + */ + public boolean isReady(World world, ItemStack stack, int x, int y, int z); + + /** + * The target position if the designator is ready + * @param world + * @param stack + * @param x + * @param y + * @param z + * @return the target + */ + public Vec3 getCoords(World world, ItemStack stack, int x, int y, int z); +} diff --git a/src/main/java/com/hbm/blocks/bomb/LaunchPad.java b/src/main/java/com/hbm/blocks/bomb/LaunchPad.java index dbfd69040..4500b0d90 100644 --- a/src/main/java/com/hbm/blocks/bomb/LaunchPad.java +++ b/src/main/java/com/hbm/blocks/bomb/LaunchPad.java @@ -36,12 +36,14 @@ import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityLaunchPad; +import api.hbm.item.IDesignatorItem; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -56,7 +58,7 @@ public class LaunchPad extends BlockContainer implements IBomb { public TileEntityLaunchPad tetn = new TileEntityLaunchPad(); public static boolean keepInventory = false; - private final static Random field_149933_a = new Random(); + private final static Random field_149933_a = new Random(); public LaunchPad(Material p_i45386_1_) { super(p_i45386_1_); @@ -66,75 +68,63 @@ public class LaunchPad extends BlockContainer implements IBomb { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityLaunchPad(); } - + @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return Item.getItemFromBlock(ModBlocks.launch_pad); - } - + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return Item.getItemFromBlock(ModBlocks.launch_pad); + } + @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - TileEntityLaunchPad tileentityfurnace = (TileEntityLaunchPad)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); + public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { + if(!keepInventory) { + TileEntityLaunchPad tileentityfurnace = (TileEntityLaunchPad) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); + if(tileentityfurnace != null) { + for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) { + ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - if (itemstack != null) - { - float f = LaunchPad.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = LaunchPad.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = LaunchPad.field_149933_a.nextFloat() * 0.8F + 0.1F; + if(itemstack != null) { + float f = LaunchPad.field_149933_a.nextFloat() * 0.8F + 0.1F; + float f1 = LaunchPad.field_149933_a.nextFloat() * 0.8F + 0.1F; + float f2 = LaunchPad.field_149933_a.nextFloat() * 0.8F + 0.1F; - while (itemstack.stackSize > 0) - { - int j1 = LaunchPad.field_149933_a.nextInt(21) + 10; + while(itemstack.stackSize > 0) { + int j1 = LaunchPad.field_149933_a.nextInt(21) + 10; - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } + if(j1 > itemstack.stackSize) { + j1 = itemstack.stackSize; + } - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } + if(itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } - float f3 = 0.05F; - entityitem.motionX = (float)LaunchPad.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)LaunchPad.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)LaunchPad.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } + float f3 = 0.05F; + entityitem.motionX = (float) LaunchPad.field_149933_a.nextGaussian() * f3; + entityitem.motionY = (float) LaunchPad.field_149933_a.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) LaunchPad.field_149933_a.nextGaussian() * f3; + p_149749_1_.spawnEntityInWorld(entityitem); + } + } + } - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } + p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); + } + } + + super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); + } - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } - @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) - { + if(world.isRemote) { return true; - } else if(!player.isSneaking()) - { + } else if(!player.isSneaking()) { TileEntityLaunchPad entity = (TileEntityLaunchPad) world.getTileEntity(x, y, z); - if(entity != null) - { + if(entity != null) { FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_launch_pad, world, x, y, z); } return true; @@ -142,362 +132,192 @@ public class LaunchPad extends BlockContainer implements IBomb { return false; } } - - @Override - public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) - { - if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) - { - this.explode(p_149695_1_, x, y, z); - } - } - + @Override - public int getRenderType(){ + public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) { + if(p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) { + this.explode(p_149695_1_, x, y, z); + } + } + + @Override + public int getRenderType() { return -1; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - - if(i == 0) - { + + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 5, 2); } - if(i == 1) - { + if(i == 1) { world.setBlockMetadataWithNotify(x, y, z, 3, 2); } - if(i == 2) - { + if(i == 2) { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } - if(i == 3) - { + if(i == 3) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); } } - - /*@Override - public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) - { - float f = 0.0625F; - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); - } - + + /* + * @Override public void setBlockBoundsBasedOnState(IBlockAccess + * p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) { float f + * = 0.0625F; this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); } + * + * @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World + * world, int x, int y, int z) { float f = 0.0625F; + * this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8*f, 1.0F); return + * AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, + * x + this.maxX, y + this.maxY, z + this.maxZ); } + */ + @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - float f = 0.0625F; - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8*f, 1.0F); - return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); - }*/ - - @Override @SideOnly(Side.CLIENT) - public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) - { - return Item.getItemFromBlock(ModBlocks.launch_pad); - } - - @Override - public void explode(World p_149695_1_, int x, int y, int z) - { - TileEntityLaunchPad entity = (TileEntityLaunchPad) p_149695_1_.getTileEntity(x, y, z); - // - { - if(entity.slots[1] != null && (entity.slots[1].getItem() == ModItems.designator || entity.slots[1].getItem() == ModItems.designator_range || entity.slots[1].getItem() == ModItems.designator_manual) && entity.slots[1].stackTagCompound != null) - { - int xCoord = entity.slots[1].stackTagCompound.getInteger("xCoord"); - int zCoord = entity.slots[1].stackTagCompound.getInteger("zCoord"); - - if(xCoord == entity.xCoord && zCoord == entity.zCoord) - { - xCoord += 1; - } + public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) { + return Item.getItemFromBlock(ModBlocks.launch_pad); + } - if(GeneralConfig.enableExtendedLogging) - MainRegistry.logger.log(Level.INFO, "[MISSILE] Tried to launch missile at " + x + " / " + y + " / " + z + " to " + xCoord + " / " + zCoord + "!"); - - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_generic && entity.power >= 75000) - { - //EntityMissileGeneric missile = new EntityMissileGeneric(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); - EntityMissileGeneric missile = new EntityMissileGeneric(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_incendiary && entity.power >= 75000) - { - EntityMissileIncendiary missile = new EntityMissileIncendiary(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_cluster && entity.power >= 75000) - { - EntityMissileCluster missile = new EntityMissileCluster(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_buster && entity.power >= 75000) - { - EntityMissileBunkerBuster missile = new EntityMissileBunkerBuster(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_strong && entity.power >= 75000) - { - EntityMissileStrong missile = new EntityMissileStrong(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_incendiary_strong && entity.power >= 75000) - { - EntityMissileIncendiaryStrong missile = new EntityMissileIncendiaryStrong(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_cluster_strong && entity.power >= 75000) - { - EntityMissileClusterStrong missile = new EntityMissileClusterStrong(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_buster_strong && entity.power >= 75000) - { - EntityMissileBusterStrong missile = new EntityMissileBusterStrong(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_burst && entity.power >= 75000) - { - EntityMissileBurst missile = new EntityMissileBurst(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_inferno && entity.power >= 75000) - { - EntityMissileInferno missile = new EntityMissileInferno(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_rain && entity.power >= 75000) - { - EntityMissileRain missile = new EntityMissileRain(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_drill && entity.power >= 75000) - { - EntityMissileDrill missile = new EntityMissileDrill(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_nuclear && entity.power >= 75000) - { - EntityMissileNuclear missile = new EntityMissileNuclear(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_endo && entity.power >= 75000) - { - EntityMissileEndo missile = new EntityMissileEndo(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_exo && entity.power >= 75000) - { - EntityMissileExo missile = new EntityMissileExo(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_nuclear_cluster && entity.power >= 75000) - { - EntityMissileMirv missile = new EntityMissileMirv(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_doomsday && entity.power >= 75000) - { - EntityMissileDoomsday missile = new EntityMissileDoomsday(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_taint && entity.power >= 75000) - { - EntityMissileTaint missile = new EntityMissileTaint(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_micro && entity.power >= 75000) - { - EntityMissileMicro missile = new EntityMissileMicro(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_bhole && entity.power >= 75000) - { - EntityMissileBHole missile = new EntityMissileBHole(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_schrabidium && entity.power >= 75000) - { - EntityMissileSchrabidium missile = new EntityMissileSchrabidium(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_emp && entity.power >= 75000) - { - EntityMissileEMP missile = new EntityMissileEMP(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_emp_strong && entity.power >= 75000) - { - EntityMissileEMPStrong missile = new EntityMissileEMPStrong(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - } + @Override + public void explode(World world, int x, int y, int z) { - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_carrier && entity.power >= 75000) - { - EntityCarrier missile = new EntityCarrier(p_149695_1_); - missile.posX = x + 0.5F; - missile.posY = y + 1F; - missile.posZ = z + 0.5F; - - if(entity.slots[1] != null) - missile.setPayload(entity.slots[1]); - - entity.slots[1] = null; - - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:entity.rocketTakeoff", 100.0F, 1.0F); - } + TileEntityLaunchPad entity = (TileEntityLaunchPad) world.getTileEntity(x, y, z); + + if(entity.slots[0] == null || world.isRemote) + return; + + if(entity.slots[1] != null && entity.slots[1].getItem() instanceof IDesignatorItem && entity.power >= 75000) { + + int xCoord = entity.slots[1].stackTagCompound.getInteger("xCoord"); + int zCoord = entity.slots[1].stackTagCompound.getInteger("zCoord"); - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_anti_ballistic && entity.power >= 75000) - { - EntityMissileAntiBallistic missile = new EntityMissileAntiBallistic(p_149695_1_); - missile.posX = x + 0.5F; - missile.posY = y + 0.5F; - missile.posZ = z + 0.5F; - - if (!p_149695_1_.isRemote) - p_149695_1_.spawnEntityInWorld(missile); - - entity.power -= 75000; - - entity.slots[0] = null; - p_149695_1_.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - } - } - } + if(xCoord == entity.xCoord && zCoord == entity.zCoord) { + xCoord += 1; + } + + Entity missile = null; + + if(entity.slots[0].getItem() == ModItems.missile_generic) { + missile = new EntityMissileGeneric(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_incendiary) { + missile = new EntityMissileIncendiary(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_cluster) { + missile = new EntityMissileCluster(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_buster) { + missile = new EntityMissileBunkerBuster(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_strong) { + missile = new EntityMissileStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_incendiary_strong) { + missile = new EntityMissileIncendiaryStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_cluster_strong) { + missile = new EntityMissileClusterStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_buster_strong) { + missile = new EntityMissileBusterStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_burst) { + missile = new EntityMissileBurst(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_inferno) { + missile = new EntityMissileInferno(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_rain) { + missile = new EntityMissileRain(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_drill) { + missile = new EntityMissileDrill(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_nuclear) { + missile = new EntityMissileNuclear(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_endo) { + missile = new EntityMissileEndo(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_exo) { + missile = new EntityMissileExo(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_nuclear_cluster) { + missile = new EntityMissileMirv(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_doomsday) { + missile = new EntityMissileDoomsday(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_taint) { + missile = new EntityMissileTaint(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_micro) { + missile = new EntityMissileMicro(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_bhole) { + missile = new EntityMissileBHole(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_schrabidium) { + missile = new EntityMissileSchrabidium(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_emp) { + missile = new EntityMissileEMP(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + if(entity.slots[0].getItem() == ModItems.missile_emp_strong) { + missile = new EntityMissileEMPStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } + + world.spawnEntityInWorld(missile); + world.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); + entity.power -= 75000; + entity.slots[0] = null; + + if(GeneralConfig.enableExtendedLogging) + MainRegistry.logger.log(Level.INFO, "[MISSILE] Tried to launch missile at " + x + " / " + y + " / " + z + " to " + xCoord + " / " + zCoord + "!"); + } + + if(entity.slots[0].getItem() == ModItems.missile_carrier && entity.power >= 75000) { + EntityCarrier missile = new EntityCarrier(world); + missile.posX = x + 0.5F; + missile.posY = y + 1F; + missile.posZ = z + 0.5F; + + if(entity.slots[1] != null) + missile.setPayload(entity.slots[1]); + + world.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + entity.slots[1] = null; + world.playSoundEffect(x, y, z, "hbm:entity.rocketTakeoff", 100.0F, 1.0F); + } + + if(entity.slots[0].getItem() == ModItems.missile_anti_ballistic && entity.power >= 75000) { + EntityMissileAntiBallistic missile = new EntityMissileAntiBallistic(world); + missile.posX = x + 0.5F; + missile.posY = y + 0.5F; + missile.posZ = z + 0.5F; + + world.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + world.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); + } + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineITER.java b/src/main/java/com/hbm/blocks/machine/MachineITER.java index 22b67a51a..ea3cc0393 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineITER.java +++ b/src/main/java/com/hbm/blocks/machine/MachineITER.java @@ -15,7 +15,6 @@ import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; diff --git a/src/main/java/com/hbm/blocks/machine/MachineSILEX.java b/src/main/java/com/hbm/blocks/machine/MachineSILEX.java index abcf8391f..6031babcd 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSILEX.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSILEX.java @@ -3,6 +3,7 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntitySILEX; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -10,6 +11,7 @@ import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class MachineSILEX extends BlockDummyable { @@ -22,6 +24,8 @@ public class MachineSILEX extends BlockDummyable { if(meta >= 12) return new TileEntitySILEX(); + if(meta >= 6) + return new TileEntityProxyCombo(true, false, true); return null; } @@ -37,20 +41,34 @@ public class MachineSILEX extends BlockDummyable { @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) - { + + if(world.isRemote) { return true; - } else if(!player.isSneaking()) - { - int[] pos = this.findCore(world, x, y, z); + } else if(!player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return false; - + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_silex, world, pos[0], pos[1], pos[2]); return true; } else { return false; } } + + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + if(dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH) { + this.makeExtra(world, x + dir.offsetX * o + 1, y + 1, z + dir.offsetZ * o); + this.makeExtra(world, x + dir.offsetX * o - 1, y + 1, z + dir.offsetZ * o); + } + + if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { + this.makeExtra(world, x + dir.offsetX * o, y + 1, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o, y + 1, z + dir.offsetZ * o - 1); + } + } } diff --git a/src/main/java/com/hbm/handler/FluidTypeHandler.java b/src/main/java/com/hbm/handler/FluidTypeHandler.java index d61e78701..00c552b15 100644 --- a/src/main/java/com/hbm/handler/FluidTypeHandler.java +++ b/src/main/java/com/hbm/handler/FluidTypeHandler.java @@ -76,6 +76,7 @@ public class FluidTypeHandler { BALEFIRE (0x28e02e, 6, 1, 2, 4, 4, 3, EnumSymbol.RADIATION, "hbmfluid.balefire", 1500, FluidTrait.CORROSIVE), MERCURY (0x808080, 7, 1, 2, 2, 0, 0, EnumSymbol.NONE, "hbmfluid.mercury"), + PAIN (0x938541, 15, 1, 2, 2, 0, 1, EnumSymbol.ACID, "hbmfluid.pain", 300, FluidTrait.CORROSIVE), PLASMA_DT (0xF7AFDE, 8, 1, 2, 0, 4, 0, EnumSymbol.RADIATION, "hbmfluid.plasma_dt", 3250, FluidTrait.NO_CONTAINER), PLASMA_HD (0xF0ADF4, 9, 1, 2, 0, 4, 0, EnumSymbol.RADIATION, "hbmfluid.plasma_hd", 2500, FluidTrait.NO_CONTAINER), diff --git a/src/main/java/com/hbm/inventory/MachineRecipes.java b/src/main/java/com/hbm/inventory/MachineRecipes.java index d3a3494e2..08fde22bb 100644 --- a/src/main/java/com/hbm/inventory/MachineRecipes.java +++ b/src/main/java/com/hbm/inventory/MachineRecipes.java @@ -1478,6 +1478,7 @@ public class MachineRecipes { fuels.add(new ItemStack(ModItems.blades_steel)); fuels.add(new ItemStack(ModItems.blades_titanium)); fuels.add(new ItemStack(ModItems.blades_schrabidium)); + fuels.add(new ItemStack(ModItems.blades_desh)); return fuels; } @@ -1754,6 +1755,14 @@ public class MachineRecipes { case SCHRABIDATE: list.add(new ItemStack(ModItems.powder_iron, 1)); break; + case COLTAN_CLEANING: + list.add(new ItemStack(ModItems.powder_coltan_ore, 2)); + list.add(new ItemStack(ModItems.powder_coal, 1)); + break; + case COLTAN_PAIN: + list.add(new ItemStack(ModItems.powder_coltan, 1)); + list.add(new ItemStack(ModItems.fluorite, 1)); + break; default: break; } @@ -1973,6 +1982,18 @@ public class MachineRecipes { case SCHRABIDATE: input[0] = new FluidStack(250, FluidType.SCHRABIDIC); break; + case COLTAN_CLEANING: + input[0] = new FluidStack(250, FluidType.ACID); + input[1] = new FluidStack(500, FluidType.HYDROGEN); + break; + case COLTAN_PAIN: + input[0] = new FluidStack(1000, FluidType.GAS); + input[1] = new FluidStack(500, FluidType.OXYGEN); + break; + case COLTAN_CRYSTAL: + input[0] = new FluidStack(1000, FluidType.PAIN); + input[1] = new FluidStack(500, FluidType.ACID); + break; default: break; } @@ -2114,6 +2135,14 @@ public class MachineRecipes { case SCHRABIDATE: output[0] = new ItemStack(ModItems.powder_schrabidate, 1); break; + case COLTAN_CLEANING: + output[0] = new ItemStack(ModItems.powder_coltan, 1); + output[1] = new ItemStack(ModItems.dust, 2); + break; + case COLTAN_CRYSTAL: + output[0] = new ItemStack(ModItems.gem_tantalium, 1); + output[1] = new ItemStack(ModItems.dust, 3); + break; default: break; } @@ -2243,6 +2272,15 @@ public class MachineRecipes { case SCHRABIDIC: output[0] = new FluidStack(16000, FluidType.SCHRABIDIC); break; + case COLTAN_CLEANING: + output[0] = new FluidStack(500, FluidType.WATER); + break; + case COLTAN_PAIN: + output[0] = new FluidStack(1000, FluidType.PAIN); + break; + case COLTAN_CRYSTAL: + output[0] = new FluidStack(250, FluidType.WATER); + break; default: break; } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index aa0314210..c3c9303fc 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -67,6 +67,7 @@ public class OreDictManager { OreDictionary.registerOre("ingotBoron", ModItems.ingot_boron); OreDictionary.registerOre("ingotTcAlloy", ModItems.ingot_tcalloy); OreDictionary.registerOre("ingotGold198", ModItems.ingot_au198); + OreDictionary.registerOre("ingotColtan", ModItems.fragment_coltan); OreDictionary.registerOre("nuggetLead", ModItems.nugget_lead); OreDictionary.registerOre("nuggetBeryllium", ModItems.nugget_beryllium); @@ -158,6 +159,7 @@ public class OreDictManager { OreDictionary.registerOre("dustBoron", ModItems.powder_boron); OreDictionary.registerOre("dustTcAlloy", ModItems.powder_tcalloy); OreDictionary.registerOre("dustGol198", ModItems.powder_au198); + OreDictionary.registerOre("dustColtan", ModItems.powder_coltan_ore); OreDictionary.registerOre("dustNeptunium", ModItems.powder_neptunium); OreDictionary.registerOre("dustIodine", ModItems.powder_iodine); @@ -207,6 +209,7 @@ public class OreDictManager { OreDictionary.registerOre("oreAustralium", ModBlocks.ore_australium); OreDictionary.registerOre("oreRareEarth", ModBlocks.ore_rare); OreDictionary.registerOre("oreZirconium", ModBlocks.ore_depth_zirconium); + OreDictionary.registerOre("oreColtan", ModBlocks.ore_coltan); OreDictionary.registerOre("oreIron", ModBlocks.ore_gneiss_iron); OreDictionary.registerOre("oreGold", ModBlocks.ore_gneiss_gold); @@ -266,6 +269,7 @@ public class OreDictManager { OreDictionary.registerOre("blockCobalt", ModBlocks.block_cobalt); OreDictionary.registerOre("blockZirconium", ModBlocks.block_zirconium); OreDictionary.registerOre("blockBoron", ModBlocks.block_boron); + OreDictionary.registerOre("blockColtan", ModBlocks.block_coltan); OreDictionary.registerOre("blockThorium", ModBlocks.block_thorium); OreDictionary.registerOre("blockThorium232", ModBlocks.block_thorium); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 9843340f2..d5672d834 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -315,6 +315,8 @@ public class ModItems { public static Item crystal_lithium; public static Item crystal_starmetal; public static Item crystal_trixite; + + public static Item gem_tantalium; public static Item powder_lead; public static Item powder_neptunium; @@ -396,6 +398,9 @@ public class ModItems { public static Item powder_actinium_tiny; public static Item powder_boron_tiny; public static Item powder_meteorite_tiny; + + public static Item powder_coltan_ore; + public static Item powder_coltan; public static Item powder_lanthanium; public static Item powder_actinium; @@ -2647,6 +2652,7 @@ public class ModItems { crystal_lithium = new ItemHazard().addHydroReactivity().toItem().setUnlocalizedName("crystal_lithium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_lithium"); crystal_starmetal = new Item().setUnlocalizedName("crystal_starmetal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_starmetal"); crystal_trixite = new ItemHazard().addRadiation(ItemHazard.trx * ItemHazard.crystal).toItem().setUnlocalizedName("crystal_trixite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_trixite"); + gem_tantalium = new Item().setUnlocalizedName("gem_tantalium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":gem_tantalium"); powder_lead = new Item().setUnlocalizedName("powder_lead").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lead"); powder_neptunium = new ItemHazard(ItemHazard.np237 * ItemHazard.powder, true).setUnlocalizedName("powder_neptunium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_neptunium"); @@ -2734,6 +2740,8 @@ public class ModItems { powder_magic = new Item().setUnlocalizedName("powder_magic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_magic"); powder_cloud = new Item().setUnlocalizedName("powder_cloud").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cloud"); powder_balefire = new ItemHazard(500F, true).setUnlocalizedName("powder_balefire").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_balefire"); + powder_coltan_ore = new ItemHazard().addAsbestos().toItem().setUnlocalizedName("powder_coltan_ore").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_coltan_ore"); + powder_coltan = new Item().setUnlocalizedName("powder_coltan").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_coltan"); fragment_neodymium = new Item().setUnlocalizedName("fragment_neodymium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_neodymium"); fragment_cobalt = new Item().setUnlocalizedName("fragment_cobalt").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_cobalt"); @@ -5363,6 +5371,8 @@ public class ModItems { GameRegistry.registerItem(powder_steel_tiny, powder_steel_tiny.getUnlocalizedName()); GameRegistry.registerItem(powder_tcalloy, powder_tcalloy.getUnlocalizedName()); GameRegistry.registerItem(powder_lead, powder_lead.getUnlocalizedName()); + GameRegistry.registerItem(powder_coltan_ore, powder_coltan_ore.getUnlocalizedName()); + GameRegistry.registerItem(powder_coltan, powder_coltan.getUnlocalizedName()); GameRegistry.registerItem(powder_yellowcake, powder_yellowcake.getUnlocalizedName()); GameRegistry.registerItem(powder_beryllium, powder_beryllium.getUnlocalizedName()); GameRegistry.registerItem(powder_dura_steel, powder_dura_steel.getUnlocalizedName()); @@ -5456,6 +5466,7 @@ public class ModItems { GameRegistry.registerItem(crystal_lithium, crystal_lithium.getUnlocalizedName()); GameRegistry.registerItem(crystal_starmetal, crystal_starmetal.getUnlocalizedName()); GameRegistry.registerItem(crystal_trixite, crystal_trixite.getUnlocalizedName()); + GameRegistry.registerItem(gem_tantalium, gem_tantalium.getUnlocalizedName()); //Fragments GameRegistry.registerItem(fragment_neodymium, fragment_neodymium.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java index 7be9511ee..126fc7bea 100644 --- a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java @@ -91,7 +91,10 @@ public class ItemChemistryTemplate extends Item { SATURN, BALEFIRE, SCHRABIDIC, - SCHRABIDATE; + SCHRABIDATE, + COLTAN_CLEANING, + COLTAN_PAIN, + COLTAN_CRYSTAL; public static EnumChemistryTemplate getEnum(int i) { if(i < EnumChemistryTemplate.values().length) @@ -271,6 +274,12 @@ public class ItemChemistryTemplate extends Item { return 100; case SCHRABIDATE: return 600; + case COLTAN_CLEANING: + return 60; + case COLTAN_PAIN: + return 120; + case COLTAN_CRYSTAL: + return 80; default: return 100; } diff --git a/src/main/java/com/hbm/items/tool/ItemDesingator.java b/src/main/java/com/hbm/items/tool/ItemDesingator.java index 293d0fd9d..cac8490f9 100644 --- a/src/main/java/com/hbm/items/tool/ItemDesingator.java +++ b/src/main/java/com/hbm/items/tool/ItemDesingator.java @@ -4,59 +4,58 @@ import java.util.List; import com.hbm.blocks.bomb.LaunchPad; +import api.hbm.item.IDesignatorItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class ItemDesingator extends Item { +public class ItemDesingator extends Item implements IDesignatorItem { - @Override - public void onCreated(ItemStack p_77622_1_, World p_77622_2_, EntityPlayer p_77622_3_) { - p_77622_1_.stackTagCompound = new NBTTagCompound(); - p_77622_1_.stackTagCompound.setInteger("xCoord", 0); - p_77622_1_.stackTagCompound.setInteger("zCoord", 0); - } - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) - { - if(itemstack.stackTagCompound != null) - { + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + if(itemstack.stackTagCompound != null) { list.add("Target Coordinates:"); - list.add("X: " + String.valueOf(itemstack.stackTagCompound.getInteger("xCoord"))); - list.add("Z: " + String.valueOf(itemstack.stackTagCompound.getInteger("zCoord"))); + list.add("X: " + itemstack.stackTagCompound.getInteger("xCoord")); + list.add("Z: " + itemstack.stackTagCompound.getInteger("zCoord")); } else { list.add("Please select a target."); } } - + @Override - public boolean onItemUse(ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_, int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) - { - if(!(p_77648_3_.getBlock(p_77648_4_, p_77648_5_, p_77648_6_) instanceof LaunchPad)) - { - if(p_77648_1_.stackTagCompound != null) - { - p_77648_1_.stackTagCompound.setInteger("xCoord", p_77648_4_); - p_77648_1_.stackTagCompound.setInteger("zCoord", p_77648_6_); - } else { - p_77648_1_.stackTagCompound = new NBTTagCompound(); - p_77648_1_.stackTagCompound.setInteger("xCoord", p_77648_4_); - p_77648_1_.stackTagCompound.setInteger("zCoord", p_77648_6_); - } - if(p_77648_3_.isRemote) - { - p_77648_2_.addChatMessage(new ChatComponentText("Position set!")); + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { + + if(!(world.getBlock(x, y, z) instanceof LaunchPad)) { + + if(stack.stackTagCompound == null) + stack.stackTagCompound = new NBTTagCompound(); + + stack.stackTagCompound.setInteger("xCoord", x); + stack.stackTagCompound.setInteger("zCoord", z); + + if(world.isRemote) { + player.addChatMessage(new ChatComponentText("Position set!")); } - p_77648_3_.playSoundAtEntity(p_77648_2_, "hbm:item.techBleep", 1.0F, 1.0F); - - return true; + world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + + return true; } - - return false; - } + + return false; + } + + @Override + public boolean isReady(World world, ItemStack stack, int x, int y, int z) { + return stack.hasTagCompound(); + } + + @Override + public Vec3 getCoords(World world, ItemStack stack, int x, int y, int z) { + return Vec3.createVectorHelper(stack.stackTagCompound.getInteger("xCoord"), 0, stack.stackTagCompound.getInteger("zCoord")); + } } diff --git a/src/main/java/com/hbm/items/tool/ItemDesingatorManual.java b/src/main/java/com/hbm/items/tool/ItemDesingatorManual.java index 14d1427e7..11820cdd9 100644 --- a/src/main/java/com/hbm/items/tool/ItemDesingatorManual.java +++ b/src/main/java/com/hbm/items/tool/ItemDesingatorManual.java @@ -5,40 +5,42 @@ import java.util.List; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import api.hbm.item.IDesignatorItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class ItemDesingatorManual extends Item { +public class ItemDesingatorManual extends Item implements IDesignatorItem { @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - + if(world.isRemote) player.openGui(MainRegistry.instance, ModItems.guiID_item_designator, world, 0, 0, 0); - + return stack; } - @Override - public void onCreated(ItemStack p_77622_1_, World p_77622_2_, EntityPlayer p_77622_3_) { - p_77622_1_.stackTagCompound = new NBTTagCompound(); - p_77622_1_.stackTagCompound.setInteger("xCoord", 0); - p_77622_1_.stackTagCompound.setInteger("zCoord", 0); - } - @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) - { - if(stack.stackTagCompound != null) - { + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + if(stack.stackTagCompound != null) { list.add("Target Coordinates:"); - list.add("X: " + String.valueOf(stack.stackTagCompound.getInteger("xCoord"))); - list.add("Z: " + String.valueOf(stack.stackTagCompound.getInteger("zCoord"))); + list.add("X: " + stack.stackTagCompound.getInteger("xCoord")); + list.add("Z: " + stack.stackTagCompound.getInteger("zCoord")); } else { list.add("Please select a target."); } } + + @Override + public boolean isReady(World world, ItemStack stack, int x, int y, int z) { + return stack.hasTagCompound(); + } + + @Override + public Vec3 getCoords(World world, ItemStack stack, int x, int y, int z) { + return Vec3.createVectorHelper(stack.stackTagCompound.getInteger("xCoord"), 0, stack.stackTagCompound.getInteger("zCoord")); + } } diff --git a/src/main/java/com/hbm/items/tool/ItemDesingatorRange.java b/src/main/java/com/hbm/items/tool/ItemDesingatorRange.java index 6c826624c..ac58cdd54 100644 --- a/src/main/java/com/hbm/items/tool/ItemDesingatorRange.java +++ b/src/main/java/com/hbm/items/tool/ItemDesingatorRange.java @@ -5,62 +5,63 @@ import java.util.List; import com.hbm.blocks.bomb.LaunchPad; import com.hbm.lib.Library; +import api.hbm.item.IDesignatorItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentText; import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class ItemDesingatorRange extends Item { +public class ItemDesingatorRange extends Item implements IDesignatorItem { - @Override - public void onCreated(ItemStack p_77622_1_, World p_77622_2_, EntityPlayer p_77622_3_) { - p_77622_1_.stackTagCompound = new NBTTagCompound(); - p_77622_1_.stackTagCompound.setInteger("xCoord", 0); - p_77622_1_.stackTagCompound.setInteger("zCoord", 0); - } - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) - { - if(itemstack.stackTagCompound != null) - { + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + if(itemstack.stackTagCompound != null) { list.add("Target Coordinates:"); - list.add("X: " + String.valueOf(itemstack.stackTagCompound.getInteger("xCoord"))); - list.add("Z: " + String.valueOf(itemstack.stackTagCompound.getInteger("zCoord"))); + list.add("X: " + itemstack.stackTagCompound.getInteger("xCoord")); + list.add("Z: " + itemstack.stackTagCompound.getInteger("zCoord")); } else { list.add("Please select a target."); } } - + @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) - { + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { MovingObjectPosition pos = Library.rayTrace(player, 300, 1); int x = pos.blockX; int y = pos.blockY; int z = pos.blockZ; - - if(!(world.getBlock(x, y, z) instanceof LaunchPad)) - { + + if(!(world.getBlock(x, y, z) instanceof LaunchPad)) { + if(stack.stackTagCompound == null) stack.stackTagCompound = new NBTTagCompound(); - + stack.stackTagCompound.setInteger("xCoord", x); stack.stackTagCompound.setInteger("zCoord", z); - - if(world.isRemote) - { - player.addChatMessage(new ChatComponentText("Position set to X:" + x + ", Z:" + z)); + + if(world.isRemote) { + player.addChatMessage(new ChatComponentText("Position set to X:" + x + ", Z:" + z)); } - - world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - - return stack; + + world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + + return stack; } - - return stack; - } + + return stack; + } + + @Override + public boolean isReady(World world, ItemStack stack, int x, int y, int z) { + return stack.hasTagCompound(); + } + + @Override + public Vec3 getCoords(World world, ItemStack stack, int x, int y, int z) { + return Vec3.createVectorHelper(stack.stackTagCompound.getInteger("xCoord"), 0, stack.stackTagCompound.getInteger("zCoord")); + } } diff --git a/src/main/java/com/hbm/items/weapon/ItemGunDart.java b/src/main/java/com/hbm/items/weapon/ItemGunDart.java index b034d7a50..695c0432c 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunDart.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunDart.java @@ -2,6 +2,7 @@ package com.hbm.items.weapon; import com.hbm.handler.GunConfiguration; +import api.hbm.item.IDesignatorItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -9,9 +10,10 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class ItemGunDart extends ItemGunBase { +public class ItemGunDart extends ItemGunBase implements IDesignatorItem { public ItemGunDart(GunConfiguration config) { super(config); @@ -57,4 +59,16 @@ public class ItemGunDart extends ItemGunBase { } } } + + @Override + public boolean isReady(World world, ItemStack stack, int x, int y, int z) { + EntityPlayer target = readPlayer(stack); + return target != null && target.dimension == world.provider.dimensionId; + } + + @Override + public Vec3 getCoords(World world, ItemStack stack, int x, int y, int z) { + EntityPlayer target = readPlayer(stack); + return Vec3.createVectorHelper(target.posX, target.posY, target.posZ); + } } diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 87e38b8a5..203e0da27 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -908,7 +908,7 @@ public class Library { { if(consume.getMaxFluidFill(type) - consume.getFluidFill(type) >= part) { - that.setFluidFill(that.getFluidFill(type)-part, type); + that.setFluidFill(that.getFluidFill(type) - part, type); consume.setFluidFill(consume.getFluidFill(type) + part, type); } else { that.setFluidFill(that.getFluidFill(type) - (consume.getMaxFluidFill(type) - consume.getFluidFill(type)), type); diff --git a/src/main/java/com/hbm/render/tileentity/RenderSILEX.java b/src/main/java/com/hbm/render/tileentity/RenderSILEX.java index 5fde53169..bf5dddd31 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSILEX.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSILEX.java @@ -19,10 +19,10 @@ public class RenderSILEX extends TileEntitySpecialRenderer { GL11.glEnable(GL11.GL_CULL_FACE); switch(tileEntity.getBlockMetadata() - BlockDummyable.offset) { - case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; - case 3: GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; - case 2: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; } GL11.glShadeModel(GL11.GL_SMOOTH); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index 2f7766391..d58ef65d7 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -22,6 +22,7 @@ import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissileMultipartPacket; +import api.hbm.item.IDesignatorItem; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -319,9 +320,8 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven public boolean hasDesignator() { - if(slots[1] != null) { - - return (slots[1].getItem() == ModItems.designator || slots[1].getItem() == ModItems.designator_range || slots[1].getItem() == ModItems.designator_manual) && slots[1].hasTagCompound(); + if(slots[1] != null && slots[1].getItem() instanceof IDesignatorItem && ((IDesignatorItem)slots[1].getItem()).isReady(worldObj, slots[1], xCoord, yCoord, zCoord)) { + return true; } return false; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 19b6a3616..acd8e5760 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -22,6 +22,7 @@ import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissileMultipartPacket; +import api.hbm.item.IDesignatorItem; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -300,9 +301,8 @@ public class TileEntityLaunchTable extends TileEntity implements ISidedInventory public boolean hasDesignator() { - if(slots[1] != null) { - - return (slots[1].getItem() == ModItems.designator || slots[1].getItem() == ModItems.designator_range || slots[1].getItem() == ModItems.designator_manual) && slots[1].hasTagCompound(); + if(slots[1] != null && slots[1].getItem() instanceof IDesignatorItem && ((IDesignatorItem)slots[1].getItem()).isReady(worldObj, slots[1], xCoord, yCoord, zCoord)) { + return true; } return false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java index c309d705b..124b47397 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java @@ -216,6 +216,20 @@ public class TileEntitySILEX extends TileEntityMachineBase implements IFluidAcce } } } + + @Override + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return new int[] { 0 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + + if(i == 0) + return SILEXRecipes.getOutput(itemStack) != null; + + return false; + } @Override public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java index 268c7737c..d8daf9d12 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java @@ -16,6 +16,7 @@ import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.TileEntityMachineBase; +import api.hbm.item.IDesignatorItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.inventory.ISidedInventory; @@ -268,10 +269,13 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS //2: designator present public int designator() { - if(mode == 0) + if(mode == 0) { return 0; - if(slots[1] != null && (slots[1].getItem() == ModItems.designator || slots[1].getItem() == ModItems.designator_range || slots[1].getItem() == ModItems.designator_manual) && slots[1].hasTagCompound()) + } + if(slots[1] != null && slots[1].getItem() instanceof IDesignatorItem && ((IDesignatorItem)slots[1].getItem()).isReady(worldObj, slots[1], xCoord, yCoord, zCoord)) { return 2; + } + return 1; } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index d14d183a5..99473eb2c 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -404,6 +404,7 @@ hbmfluid.nitan=NITAN© 100 Oktan Supertreibstoff hbmfluid.none=Nichts hbmfluid.oil=Rohöl hbmfluid.oxygen=Flüssiger Sauerstoff +hbmfluid.pain=Pandemonium(III)tantalit-Lösung hbmfluid.petroil=Gemisch hbmfluid.petroleum=Petroleumgas hbmfluid.plasma_bf=Balefire-Plasma @@ -1179,6 +1180,7 @@ item.gas_mask_m65.name=M65-Z Gasmaske item.gas_mask_mono.name=Kohlenstoffmonoxidmaske item.gas_petroleum.name=Petroleumgastank item.geiger_counter.name=Mobiler Geigerzähler +item.gem_tantalium.name=Tantal-Polykristall item.generator_front.name=Generatorfront item.generator_steel.name=Generator item.glitch.name=Glitch @@ -1920,6 +1922,8 @@ item.powder_coal.name=Kohlestaub item.powder_coal_tiny.name=Kleiner Haufen Kohlestaub item.powder_cobalt.name=Kobaltstaub item.powder_cobalt_tiny.name=Kleiner Haufen Cobaltstaub +item.powder_coltan.name=Gereinigtes Tantalit +item.powder_coltan_ore.name=Gebrochenes Coltan item.powder_combine_steel.name=CMB-Stahlstaub item.powder_copper.name=Kupferstaub item.powder_cs137.name=Caesium-137-Staub diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index e67d3068c..b2ff69b51 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -472,6 +472,7 @@ hbmfluid.nitan=NITAN© 100 Octane Super Fuel hbmfluid.none=None hbmfluid.oil=Crude Oil hbmfluid.oxygen=Liquid Oxygen +hbmfluid.pain=Pandemonium(III)tantalite Solution hbmfluid.petroil=Petroil hbmfluid.petroleum=Petroleum Gas hbmfluid.plasma_bf=Balefire Plasma @@ -1247,6 +1248,7 @@ item.gas_mask_m65.name=M65-Z Gas Mask item.gas_mask_mono.name=Carbon Monoxide Mask item.gas_petroleum.name=Petroleum Gas Tank item.geiger_counter.name=Handheld Geiger Counter +item.gem_tantalium.name=Tantalium Polycrystal item.generator_front.name=Generator Front item.generator_steel.name=Generator Body item.glitch.name=Glitch @@ -1988,6 +1990,8 @@ item.powder_coal.name=Coal Powder item.powder_coal_tiny.name=Tiny Pile of Coal Powder item.powder_cobalt.name=Cobalt Powder item.powder_cobalt_tiny.name=Tiny Pile of Cobalt Powder +item.powder_coltan.name=Purified Tantalite +item.powder_coltan_ore.name=Crushed Coltan item.powder_combine_steel.name=CMB Steel Powder item.powder_copper.name=Copper Powder item.powder_cs137.name=Caesium-137 Powder diff --git a/src/main/resources/assets/hbm/textures/gui/fluids2.png b/src/main/resources/assets/hbm/textures/gui/fluids2.png index 09d07681d..e49e71265 100755 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids2.png and b/src/main/resources/assets/hbm/textures/gui/fluids2.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_fireext_diesel.png b/src/main/resources/assets/hbm/textures/items/ammo_fireext_diesel.png new file mode 100644 index 000000000..0e6809825 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_fireext_diesel.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bismuth_tool.png b/src/main/resources/assets/hbm/textures/items/bismuth_tool.png new file mode 100644 index 000000000..e0926c084 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bismuth_tool.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_COLTAN_CLEANING.png b/src/main/resources/assets/hbm/textures/items/chem_icon_COLTAN_CLEANING.png new file mode 100644 index 000000000..2e1bc1ab3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_COLTAN_CLEANING.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_COLTAN_CRYSTAL.png b/src/main/resources/assets/hbm/textures/items/chem_icon_COLTAN_CRYSTAL.png new file mode 100644 index 000000000..fa4fddb32 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_COLTAN_CRYSTAL.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_COLTAN_PAIN.png b/src/main/resources/assets/hbm/textures/items/chem_icon_COLTAN_PAIN.png new file mode 100644 index 000000000..9b1dbd746 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_COLTAN_PAIN.png differ diff --git a/src/main/resources/assets/hbm/textures/items/gem_tantalium.png b/src/main/resources/assets/hbm/textures/items/gem_tantalium.png new file mode 100644 index 000000000..938986d55 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/gem_tantalium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_coltan.png b/src/main/resources/assets/hbm/textures/items/powder_coltan.png new file mode 100644 index 000000000..a1494bfdd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_coltan.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_coltan_ore.png b/src/main/resources/assets/hbm/textures/items/powder_coltan_ore.png new file mode 100644 index 000000000..56c7e3725 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_coltan_ore.png differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/brandon.png b/src/main/resources/assets/hbm/textures/models/turrets/brandon.png new file mode 100644 index 000000000..d01dbc044 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/turrets/brandon.png differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/brandon_drum.png b/src/main/resources/assets/hbm/textures/models/turrets/brandon_drum.png new file mode 100644 index 000000000..df132ec20 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/turrets/brandon_drum.png differ