package mekanism.client; import java.util.EnumSet; import mekanism.api.EnumColor; import mekanism.common.PacketHandler; import mekanism.common.PacketHandler.Transmission; import mekanism.common.item.ItemConfigurator; import mekanism.common.item.ItemElectricBow; import mekanism.common.item.ItemWalkieTalkie; import mekanism.common.network.PacketConfiguratorState; import mekanism.common.network.PacketElectricBowState; import mekanism.common.network.PacketWalkieTalkieState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.ChatMessageComponent; import org.lwjgl.input.Keyboard; import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.TickType; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class ClientPlayerTickHandler implements ITickHandler { public boolean lastTickConfiguratorChange = false; public boolean lastTickElectricBowChange = false; public boolean lastTickWalkieTalkieChange = false; @Override public void tickStart(EnumSet type, Object... tickData) {} @Override public void tickEnd(EnumSet type, Object... tickData) { if(tickData[0] instanceof EntityPlayer) { EntityPlayer entityPlayer = (EntityPlayer)tickData[0]; if(entityPlayer.getCurrentEquippedItem() != null) { ItemStack stack = entityPlayer.getCurrentEquippedItem(); if(entityPlayer.getCurrentEquippedItem().getItem() instanceof ItemConfigurator) { ItemConfigurator item = (ItemConfigurator)entityPlayer.getCurrentEquippedItem().getItem(); if(entityPlayer.isSneaking() && Keyboard.isKeyDown(Keyboard.KEY_M)) { if(!lastTickConfiguratorChange) { item.setState(stack, (byte)(item.getState(stack) < 2 ? item.getState(stack)+1 : 0)); PacketHandler.sendPacket(Transmission.SERVER, new PacketConfiguratorState().setParams(item.getState(stack))); entityPlayer.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + "Configure State: " + item.getColor(item.getState(stack)) + item.getState(item.getState(stack)))); lastTickConfiguratorChange = true; } } else { lastTickConfiguratorChange = false; } } else if(entityPlayer.getCurrentEquippedItem().getItem() instanceof ItemElectricBow) { ItemElectricBow item = (ItemElectricBow)entityPlayer.getCurrentEquippedItem().getItem(); if(entityPlayer.isSneaking() && Keyboard.isKeyDown(Keyboard.KEY_M)) { if(!lastTickElectricBowChange) { item.setFireState(stack, !item.getFireState(stack)); PacketHandler.sendPacket(Transmission.SERVER, new PacketElectricBowState().setParams(item.getFireState(stack))); entityPlayer.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + "Fire Mode: " + (item.getFireState(stack) ? (EnumColor.DARK_GREEN + "ON") : (EnumColor.DARK_RED + "OFF")))); lastTickElectricBowChange = true; } } else { lastTickElectricBowChange = false; } } else if(entityPlayer.getCurrentEquippedItem().getItem() instanceof ItemWalkieTalkie) { ItemWalkieTalkie item = (ItemWalkieTalkie)entityPlayer.getCurrentEquippedItem().getItem(); if(entityPlayer.isSneaking() && Keyboard.isKeyDown(Keyboard.KEY_M) && item.getOn(stack)) { if(!lastTickWalkieTalkieChange) { int newChan = item.getChannel(stack) < 9 ? item.getChannel(stack)+1 : 1; item.setChannel(stack, newChan); PacketHandler.sendPacket(Transmission.SERVER, new PacketWalkieTalkieState().setParams(newChan)); lastTickWalkieTalkieChange = true; } } else { lastTickWalkieTalkieChange = false; } } } } } @Override public EnumSet ticks() { return EnumSet.of(TickType.PLAYER); } @Override public String getLabel() { return "MekanismClientPlayer"; } }