summaryrefslogtreecommitdiff
path: root/common/darkknight/jewelrycraft/block/BlockDisplayer.java
diff options
context:
space:
mode:
authorOnyxDarkKnight <sor1n.iliutza16@gmail.com>2013-12-26 22:52:08 +0200
committerOnyxDarkKnight <sor1n.iliutza16@gmail.com>2013-12-26 22:52:08 +0200
commitcd56b1630738397247f9299ca524dfc58990b3c8 (patch)
tree585d096cc2106038527c9ec9f7c516269543c732 /common/darkknight/jewelrycraft/block/BlockDisplayer.java
parentf55ff6d1f790f6ac80f5c0c96187dae2e27fb096 (diff)
Invisibility and jump boost ring, that nullifies fall damage and a cool new block!
Diffstat (limited to 'common/darkknight/jewelrycraft/block/BlockDisplayer.java')
-rw-r--r--common/darkknight/jewelrycraft/block/BlockDisplayer.java168
1 files changed, 168 insertions, 0 deletions
diff --git a/common/darkknight/jewelrycraft/block/BlockDisplayer.java b/common/darkknight/jewelrycraft/block/BlockDisplayer.java
new file mode 100644
index 0000000..02de477
--- /dev/null
+++ b/common/darkknight/jewelrycraft/block/BlockDisplayer.java
@@ -0,0 +1,168 @@
+package darkknight.jewelrycraft.block;
+
+import java.util.Random;
+
+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.tileentity.TileEntity;
+import net.minecraft.util.MathHelper;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import darkknight.jewelrycraft.tileentity.TileEntityDisplayer;
+
+public class BlockDisplayer extends BlockContainer
+{
+ Random rand = new Random();
+
+ protected BlockDisplayer(int par1, Material par2Material)
+ {
+ super(par1, par2Material);
+ }
+
+ @Override
+ public TileEntity createNewTileEntity(World world)
+ {
+ return new TileEntityDisplayer();
+ }
+
+ @Override
+ public boolean renderAsNormalBlock()
+ {
+ return false;
+ }
+
+ @Override
+ public boolean shouldSideBeRendered(IBlockAccess iblockaccess, int i, int j, int k, int l)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isOpaqueCube()
+ {
+ return false;
+ }
+
+ @Override
+ public int getRenderType()
+ {
+ return -1;
+ }
+
+ @Override
+ public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer entityPlayer, int par6, float par7, float par8, float par9)
+ {
+ TileEntityDisplayer te = (TileEntityDisplayer) world.getBlockTileEntity(i, j, k);
+ ItemStack item = entityPlayer.inventory.getCurrentItem();
+ if (te != null && item != null && !world.isRemote)
+ {
+ if(!te.hasObject)
+ {
+ te.object = item.copy();
+ te.object.stackSize = 1;
+ te.quantity += item.stackSize;
+ te.hasObject = true;
+ if (!entityPlayer.capabilities.isCreativeMode) item.stackSize = 0;
+ te.isDirty = true;
+ }
+ else if(te.object.itemID == item.itemID && te.object.getItemDamage() == item.getItemDamage() && te.object.getTooltip(entityPlayer, false).equals(item.getTooltip(entityPlayer, false)))
+ {
+ te.quantity += item.stackSize;
+ te.object.stackSize = 1;
+ if (!entityPlayer.capabilities.isCreativeMode) item.stackSize = 0;
+ te.isDirty = true;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void onBlockClicked(World world, int i, int j, int k, EntityPlayer player)
+ {
+ TileEntityDisplayer te = (TileEntityDisplayer) world.getBlockTileEntity(i, j, k);
+ if (te != null && !world.isRemote)
+ {
+ if (te.hasObject && player.inventory.addItemStackToInventory(te.object))
+ {
+ if(player.isSneaking())
+ {
+ if(te.quantity > 64)
+ {
+ te.object.stackSize = 63;
+ player.inventory.addItemStackToInventory(te.object);
+ te.object.stackSize = 1;
+ te.quantity -= 64;
+ }
+ else
+ {
+ te.object.stackSize = te.quantity - 1;
+ player.inventory.addItemStackToInventory(te.object);
+ te.hasObject = false;
+ te.object = new ItemStack(0, 0, 0);
+ te.quantity = 0;
+ }
+ te.isDirty = true;
+ }
+ else
+ {
+ if(te.quantity >= 2)
+ {
+ player.inventory.addItemStackToInventory(te.object);
+ te.object.stackSize = 1;
+ --te.quantity;
+ }
+ else
+ {
+ player.inventory.addItemStackToInventory(te.object);
+ te.object.stackSize = 1;
+ te.hasObject = false;
+ te.object = new ItemStack(0, 0, 0);
+ te.quantity = 0;
+ }
+ te.isDirty = true;
+ }
+ }
+ }
+ }
+
+ 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);
+ }
+
+ public void breakBlock(World world, int i, int j, int k, int par5, int par6)
+ {
+ TileEntityDisplayer te = (TileEntityDisplayer) world.getBlockTileEntity(i, j, k);
+
+ if (te != null && te.hasObject)
+ {
+ te.object.stackSize = te.quantity;
+ dropItem(te.worldObj, (double)te.xCoord, (double)te.yCoord, (double)te.zCoord, te.object);
+ world.markTileEntityForDespawn(te);
+ }
+
+ super.breakBlock(world, i, j, k, par5, par6);
+ }
+
+ @Override
+ public void onBlockPlacedBy(World world, int i, int j, int k, EntityLivingBase entityLiving, ItemStack par6ItemStack)
+ {
+ int rotation = MathHelper.floor_double(entityLiving.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
+ world.setBlockMetadataWithNotify(i, j, k, rotation, 2);
+ }
+
+ @Override
+ public void registerIcons(IconRegister icon)
+ {
+ this.blockIcon = icon.registerIcon("jewelrycraft:displayer");
+ }
+}