diff options
Diffstat (limited to 'src/main/java/darkknight/jewelrycraft/block/BlockJewelAltar.java')
| -rw-r--r-- | src/main/java/darkknight/jewelrycraft/block/BlockJewelAltar.java | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/src/main/java/darkknight/jewelrycraft/block/BlockJewelAltar.java b/src/main/java/darkknight/jewelrycraft/block/BlockJewelAltar.java new file mode 100644 index 0000000..e0a43bc --- /dev/null +++ b/src/main/java/darkknight/jewelrycraft/block/BlockJewelAltar.java @@ -0,0 +1,164 @@ +package darkknight.jewelrycraft.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import darkknight.jewelrycraft.item.ItemList; +import darkknight.jewelrycraft.tileentity.TileEntityAltar; + +public class BlockJewelAltar extends BlockContainer +{ + @SideOnly (Side.CLIENT) + private IIcon altarSide; + @SideOnly (Side.CLIENT) + private IIcon altarBottom; + @SideOnly (Side.CLIENT) + private IIcon altarTop; + + /** + * + */ + public BlockJewelAltar() + { + super(Material.iron); + } + + /** + * @param par0 + * @return + */ + public static boolean isNormalCube(int par0) + { + return true; + } + + /** + * @param par1IconRegister + */ + @Override + public void registerBlockIcons(IIconRegister par1IconRegister) + { + altarSide = par1IconRegister.registerIcon(getTextureName() + "_" + "side"); + altarBottom = par1IconRegister.registerIcon(getTextureName() + "_" + "bottom"); + altarTop = par1IconRegister.registerIcon(getTextureName() + "_" + "top"); + } + + /** + * @param par1 + * @param par2 + * @return + */ + @Override + public IIcon getIcon(int par1, int par2) + { + return par1 == 1 ? altarTop : par1 == 0 ? altarBottom : altarSide; + } + + /** + * @param world + * @param i + * @param j + * @param k + * @param entityPlayer + * @param par6 + * @param par7 + * @param par8 + * @param par9 + * @return + */ + @Override + public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer entityPlayer, int par6, float par7, float par8, float par9) + { + TileEntityAltar te = (TileEntityAltar)world.getTileEntity(i, j, k); + ItemStack item = entityPlayer.inventory.getCurrentItem(); + if (te != null && !world.isRemote){ + if (item != null && item != new ItemStack(Item.getItemById(0), 0, 0) && (item.getItem() == ItemList.ring || item.getItem() == ItemList.necklace) && !te.hasObject){ + te.object = item.copy(); + item.stackSize = 0; + te.playerName = entityPlayer.getDisplayName(); + te.isDirty = true; + te.markDirty(); + te.hasObject = true; + } + if (te.object != null && te.object != new ItemStack(Item.getItemById(0), 0, 0) && te.hasObject && entityPlayer.isSneaking()){ + entityPlayer.inventory.addItemStackToInventory(te.object); + te.object = new ItemStack(Item.getItemById(0), 0, 0); + te.playerName = ""; + te.isDirty = true; + te.markDirty(); + te.hasObject = false; + } + } + return true; + } + + /** + * @param world + * @param i + * @param j + * @param k + * @param player + */ + @Override + public void onBlockClicked(World world, int i, int j, int k, EntityPlayer player) + { + TileEntityAltar te = (TileEntityAltar)world.getTileEntity(i, j, k); + if (te != null && !world.isRemote) if (te.object != null && te.object != new ItemStack(Item.getItemById(0), 0, 0)){} + } + + /** + * @param world + * @param x + * @param y + * @param z + * @param stack + */ + public void dropItem(World world, double x, double y, double z, ItemStack stack) + { + EntityItem entityitem = new EntityItem(world, x + 0.5D, y + 1.5D, z + 0.5D, stack); + entityitem.motionX = 0; + entityitem.motionZ = 0; + entityitem.motionY = 0.11000000298023224D; + world.spawnEntityInWorld(entityitem); + } + + /** + * @param world + * @param i + * @param j + * @param k + * @param block + * @param par6 + */ + @Override + public void breakBlock(World world, int i, int j, int k, Block block, int par6) + { + TileEntityAltar te = (TileEntityAltar)world.getTileEntity(i, j, k); + if (te != null && te.object != null && te.object != new ItemStack(Item.getItemById(0), 0, 0)){ + dropItem(te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord, te.object); + world.removeTileEntity(i, j, k); + } + super.breakBlock(world, i, j, k, block, par6); + } + + /** + * @param world + * @param var2 + * @return + */ + @Override + public TileEntity createNewTileEntity(World world, int var2) + { + return new TileEntityAltar(); + } +} |
