diff options
| author | OnyxDarkKnight <sor1n.iliutza16@gmail.com> | 2013-12-15 22:17:32 +0200 |
|---|---|---|
| committer | OnyxDarkKnight <sor1n.iliutza16@gmail.com> | 2013-12-15 22:17:32 +0200 |
| commit | ff4b3d697a65940b812d4d8e6977ed180709a3c0 (patch) | |
| tree | 7dce2a4600d092ae174627a9cbe4963888d82dd0 /common/darkknight/jewelrycraft/block/BlockSmelter.java | |
| parent | 3e7036bf39c640b9d0dd94115f8b1f7947d26f71 (diff) | |
Added Mold stuff
Diffstat (limited to 'common/darkknight/jewelrycraft/block/BlockSmelter.java')
| -rw-r--r-- | common/darkknight/jewelrycraft/block/BlockSmelter.java | 91 |
1 files changed, 82 insertions, 9 deletions
diff --git a/common/darkknight/jewelrycraft/block/BlockSmelter.java b/common/darkknight/jewelrycraft/block/BlockSmelter.java index eb22b63..03019fc 100644 --- a/common/darkknight/jewelrycraft/block/BlockSmelter.java +++ b/common/darkknight/jewelrycraft/block/BlockSmelter.java @@ -1,19 +1,26 @@ package darkknight.jewelrycraft.block; +import java.util.Random; + +import darkknight.jewelrycraft.tileentity.TileEntityMolder; import darkknight.jewelrycraft.tileentity.TileEntitySmelter; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; +import net.minecraft.world.Explosion; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockSmelter extends BlockContainer { + Random rand = new Random(); protected BlockSmelter(int par1, Material par2Material) { super(par1, par2Material); @@ -31,6 +38,37 @@ public class BlockSmelter extends BlockContainer return false; } + public void onBlockDestroyedByPlayer(World par1World, int i, int j, int k, int par5) + { + TileEntitySmelter te = (TileEntitySmelter) par1World.getBlockTileEntity(i, j, k); + if(te != null) + { + float f = this.rand.nextFloat() * 0.8F + 0.1F; + float f1 = this.rand.nextFloat() * 0.8F + 0.1F; + float f2 = this.rand.nextFloat() * 0.8F + 0.1F; + if(te.hasMetal) + { + EntityItem entityitem = new EntityItem(par1World, (double)((float)i + f), (double)((float)j + f1), (double)((float)k + f2), new ItemStack(te.metal.itemID, 1, te.metal.getItemDamage())); + + if (te.metal.hasTagCompound()) + { + entityitem.getEntityItem().setTagCompound((NBTTagCompound)te.metal.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (double)((float)this.rand.nextGaussian() * f3); + entityitem.motionY = (double)((float)this.rand.nextGaussian() * f3 + 0.2F); + entityitem.motionZ = (double)((float)this.rand.nextGaussian() * f3); + par1World.spawnEntityInWorld(entityitem); + } + } + } + + public void onBlockDestroyedByExplosion(World world, int i, int j, int k, Explosion par5Explosion) + { + onBlockDestroyedByPlayer(world, i, j, k, 0); + } + @Override public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer entityPlayer, int par6, float par7, float par8, float par9) { @@ -38,31 +76,66 @@ public class BlockSmelter extends BlockContainer ItemStack item = entityPlayer.inventory.getCurrentItem(); if (te != null && !world.isRemote) { - if (!te.hasMetal && !te.hasMoltenMetal && item != null && item.getDisplayName().contains("Ingot")) + if (!te.hasMetal && !te.hasMoltenMetal && item != null && item.getDisplayName().contains("Ingot") && !item.getDisplayName().contains("Mold")) { - te.metalID = item.getItem().itemID; - te.metal = item; + te.metal = new ItemStack(item.itemID, 1, item.getItemDamage()); te.hasMetal = true; te.melting = 200000; --item.stackSize; } - else if (te.hasMetal && !te.hasMoltenMetal && item != null && item.getDisplayName().contains("Ingot")) - entityPlayer.addChatMessage("The Smelter already contains a " + new ItemStack(te.metalID, 1, 0).getDisplayName()); + else if (te.hasMetal && !te.hasMoltenMetal && item != null && item.getDisplayName().contains("Ingot") && !item.getDisplayName().contains("Mold")) + entityPlayer.addChatMessage("The Smelter already contains a " + te.metal.getDisplayName()); else if (te.hasMoltenMetal) - entityPlayer.addChatMessage("The Smelter contains molten " + new ItemStack(te.moltenMetalID, 1, 0).getDisplayName().toLowerCase().replace("ingot", "")); + entityPlayer.addChatMessage("The Smelter contains molten " + te.moltenMetal.getDisplayName().toLowerCase().replace("ingot", "")); else if (item != null && !item.getDisplayName().contains("Ingot")) entityPlayer.addChatMessage("The item needs to be an ingot!"); if (te.hasMetal && entityPlayer.isSneaking()) { - entityPlayer.dropPlayerItem(new ItemStack(te.metalID, 1, 0)); + entityPlayer.dropPlayerItem(te.metal); te.hasMetal = false; } world.setBlockTileEntity(i, j, k, te); } return true; } - + + public void onBlockClicked(World world, int i, int j, int k, EntityPlayer player) + { + TileEntitySmelter te = (TileEntitySmelter) world.getBlockTileEntity(i, j, k); + TileEntityMolder me = null; + if(world.getBlockMetadata(i, j, k) == 0) me = (TileEntityMolder) world.getBlockTileEntity(i, j, k - 1); + else if(world.getBlockMetadata(i, j, k) == 1) me = (TileEntityMolder) world.getBlockTileEntity(i + 1, j, k); + else if(world.getBlockMetadata(i, j, k) == 2) me = (TileEntityMolder) world.getBlockTileEntity(i, j, k + 1); + else if(world.getBlockMetadata(i, j, k) == 3) me = (TileEntityMolder) world.getBlockTileEntity(i - 1, j, k); + + if(te.hasMoltenMetal && me != null) + { + if(isConnectedToMolder(world, i, j, k) && me.hasMold && !me.hasMoltenMetal && !me.hasJewelBase) + { + me.moltenMetal = te.moltenMetal; + me.hasMoltenMetal = true; + te.moltenMetal = new ItemStack(0, 0, 0); + te.hasMoltenMetal = false; + } + else if(me.hasMoltenMetal) player.addChatMessage("The Molder already has molten metal in it!"); + else if(!me.hasMold) player.addChatMessage("The Molder doesn't have a mold in it! You might as well pour this stuff on the ground, won't you?"); + else if(me.hasJewelBase) player.addChatMessage("The Molder contains an item in it. Now you wouldn't want it to be destroyed, would you?"); + else player.addChatMessage("You need a Molder in front of this block in order to pour the molten metal!"); + } + + } + + public boolean isConnectedToMolder(World world, int i, int j, int k) + { + int blockMeta = world.getBlockMetadata(i, j, k); + if(blockMeta == 0 && world.getBlockId(i, j, k - 1) == BlockList.molder.blockID) return true; + else if(blockMeta == 1 && world.getBlockId(i + 1, j, k) == BlockList.molder.blockID) return true; + else if(blockMeta == 2 && world.getBlockId(i, j, k + 1) == BlockList.molder.blockID) return true; + else if(blockMeta == 3 && world.getBlockId(i - 1, j, k) == BlockList.molder.blockID) return true; + return false; + } + public void onBlockPlacedBy(World world, int i, int j, int k, EntityLivingBase entityLiving, ItemStack par6ItemStack) { int rotation = MathHelper.floor_double((double)(entityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; @@ -85,7 +158,7 @@ public class BlockSmelter extends BlockContainer { return -1; } - + public void registerIcons(IconRegister icon) { this.blockIcon = icon.registerIcon("jewelrycraft:smelter"); |
