@Patch.Exception @Hook("net.minecraft.item.ItemMultiTexture#func_77654_b") public static Hook.Result onItemUseFinish(ItemMultiTexture item, ItemStack stack, World world, EntityLivingBase living) { if (item == dirt) { stack.setCount(stack.getCount() - 1); if (living instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) living; world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_PLAYER_BURP, SoundCategory.PLAYERS, 0.5F, world.rand.nextFloat() * 0.1F + 0.9F); if (Always.isServer()) { player.addPotionEffect(new PotionEffect(MobEffects.HUNGER, 40, 150)); player.addStat(StatList.getObjectUseStats(item)); } } return new Hook.Result(stack); } else return Hook.Result.VOID; }
@Patch.Exception @Hook("net.minecraft.item.ItemMultiTexture#func_77659_a") public static Hook.Result onItemRightClick(ItemMultiTexture item, ItemStack stack, World world, EntityPlayer player, EnumHand hand) { if (item == dirt) { RayTraceResult rayTrace = item.rayTrace(world, player, false); if (player.canEat(true) && rayTrace == null) { player.setActiveHand(hand); return new Hook.Result(new ActionResult(EnumActionResult.SUCCESS, stack)); } } return Hook.Result.VOID; }
@Patch.Exception @Hook("net.minecraft.item.ItemMultiTexture#func_77661_b") public static Hook.Result getItemUseAction(ItemMultiTexture item, ItemStack stack) { return item == dirt ? new Hook.Result(EnumAction.EAT) : Hook.Result.VOID; }
@Patch.Exception @Hook("net.minecraft.item.ItemMultiTexture#func_77626_a") public static Hook.Result getMaxItemUseDuration(ItemMultiTexture item, ItemStack stack) { return item == dirt ? new Hook.Result(32) : Hook.Result.VOID; }
/** * Replaces an existing block with the given block and gives it an * ItemMultiTexture with the given function for determining what name to display. * <p> * Works best if the replacement block supports all the states of the one it is replacing. * @param original Original block to replace * @param block New block to insert * @param nameFunc Function used by the itemblock to get the display name * @param <K> The type of the block you are replacing * @param <V> The type of the new block you are replacing it with. Must extend the original. */ public static <K extends Block,V extends K> void replaceBlock(K original, V block, Function nameFunc) { replaceBlock(original, block, new ItemMultiTexture(block, block, nameFunc)); }