package crazypants.enderio.item; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.client.event.MouseEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import crazypants.enderio.api.tool.IConduitControl; import crazypants.enderio.conduit.ConduitDisplayMode; import crazypants.enderio.network.PacketHandler; @SideOnly(Side.CLIENT) public class ToolTickHandler { @SubscribeEvent public void onMouseEvent(MouseEvent event) { EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; if(event.dwheel != 0 && player != null && player.isSneaking()) { ItemStack stack = player.getCurrentEquippedItem(); if (stack != null) { Item item = stack.getItem(); if (item instanceof IConduitControl) { changeDisplayMode(stack, player, event.dwheel); event.setCanceled(true); } else if (item instanceof ItemConduitProbe) { changeConduitProbeMode(stack); event.setCanceled(true); } } } } private void changeDisplayMode(ItemStack stack, EntityPlayer player, int dWheel) { if (!((IConduitControl)stack.getItem()).showOverlay(stack, player)) { return; } ConduitDisplayMode mode = ConduitDisplayMode.getDisplayMode(stack); if(mode == null) { mode = ConduitDisplayMode.ALL; } mode = dWheel < 0 ? mode.next() : mode.previous(); ConduitDisplayMode.setDisplayMode(stack, mode); PacketHandler.INSTANCE.sendToServer(new YetaWrenchPacketProcessor(player.inventory.currentItem, mode)); } private void changeConduitProbeMode(ItemStack stack) { int newMeta = stack.getItemDamage() == 0 ? 1 : 0; stack.setItemDamage(newMeta); PacketHandler.INSTANCE.sendToServer(new PacketConduitProbeMode()); } }