private void makePlate() { if( Platform.isServer() ) { if( !this.getItemHandler().extractItem( 0, 1, false ).isEmpty() ) { final ItemStack item = ContainerQuartzKnife.this.toolInv.getItemStack(); final ItemStack before = item.copy(); item.damageItem( 1, ContainerQuartzKnife.this.getPlayerInv().player ); if( item.getCount() == 0 ) { ContainerQuartzKnife.this.getPlayerInv() .setInventorySlotContents( ContainerQuartzKnife.this.getPlayerInv().currentItem, ItemStack.EMPTY ); MinecraftForge.EVENT_BUS.post( new PlayerDestroyItemEvent( ContainerQuartzKnife.this.getPlayerInv().player, before, null ) ); } ContainerQuartzKnife.this.detectAndSendChanges(); } } } }
@SubscribeEvent public void onDestroyCurrentItem(PlayerDestroyItemEvent event) { if (event.getOriginal().isEmpty() || event.getOriginal().getItem() != this) { return; } EntityPlayer player = event.getEntityPlayer(); World world = player.world; if (!world.isRemote && !remnants.isEmpty()) { ItemStackUtil.dropItemStackAsEntity(remnants.copy(), world, player.posX, player.posY, player.posZ); } }
@SubscribeEvent public void onToolBreak(PlayerDestroyItemEvent event) { EntityPlayer player = event.getEntityPlayer(); ItemStack stack = event.getOriginal(); Item item = stack.getItem(); if(event.getHand() == EnumHand.OFF_HAND) currSlot = player.inventory.getSizeInventory() - 1;
MinecraftForge.EVENT_BUS.post( new PlayerDestroyItemEvent( player, held, hand ) ); MinecraftForge.EVENT_BUS.post( new PlayerDestroyItemEvent( player, held, hand ) );
/** * Try damaging a burning gem stone inside the given player's inventory. * @param player The player. * @param swarmTier The tier of swarm. * @param simulate If damaging should be simulated. * @return If a burning gem stone was found and damaged. */ public static boolean damageForPlayer(EntityPlayer player, int swarmTier, boolean simulate) { PlayerInventoryIterator it = new PlayerInventoryIterator(player); while(it.hasNext()) { Pair<Integer, ItemStack> current = it.nextIndexed(); ItemStack itemStack = current.getRight(); if(!itemStack.isEmpty() && itemStack.getItem() == BurningGemStone.getInstance()) { if(!simulate) { itemStack.damageItem(1 + swarmTier, player); player.addExhaustion(10); if(itemStack.getCount() <= 0) { player.inventory.setInventorySlotContents(current.getLeft(), ItemStack.EMPTY); MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(player, itemStack, null)); } } return true; } } return false; }
@Nonnull @Override public ItemStack onTake(EntityPlayer player, @Nonnull ItemStack stack) { this.container.removeEnergy(amountCrafted); amountCrafted = 0; for (int craftSlot : this.craftSlots) { ItemStack itemstack1 = this.invItem.getStackInSlot(craftSlot); if (!itemstack1.isEmpty()) { decrIngredientSize(craftSlot, 1); if (itemstack1.getItem().hasContainerItem(itemstack1)) { ItemStack itemstack2 = itemstack1.getItem().getContainerItem(itemstack1); if (itemstack2.isItemStackDamageable() && itemstack2.getItemDamage() > itemstack2.getMaxDamage()) { MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(thePlayer, itemstack2, player.getActiveHand())); continue; } if (!this.thePlayer.inventory.addItemStackToInventory(itemstack2)) { this.invItem.getStackInSlot(craftSlot); this.thePlayer.dropItem(itemstack2, false); } } } } return stack; }