package speedytools.clientside; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import speedytools.clientside.ClientSide; import speedytools.clientside.userinput.SpeedyToolControls; import java.util.EnumSet; /** * User: The Grey Ghost * Date: 2/11/13 */ public class ClientTickHandler { @SubscribeEvent public void clientTickEvent(TickEvent.ClientTickEvent event) { if (event.phase == TickEvent.Phase.START) { tickStart(event); } else if (event.phase == TickEvent.Phase.END) { tickEnd(event); } } /** * Enable user input interception if the user is holding a speedy tool */ public void tickStart(TickEvent.ClientTickEvent event) { EntityPlayerSP player = Minecraft.getMinecraft().thePlayer; if (player != null) { ItemStack heldItem = player.getHeldItem(); boolean speedyToolHeld = ClientSide.activeTool.setHeldItem(heldItem); SpeedyToolControls.enableClickInterception(speedyToolHeld); if (speedyToolHeld) { ClientSide.userInput.activate(); } else { ClientSide.userInput.deactivate(); } } } /** * process any user input * tick any other objects which need it */ public void tickEnd(TickEvent.ClientTickEvent event) { ClientSide.tick(); EntityPlayerSP player = Minecraft.getMinecraft().thePlayer; if (player == null) return; boolean inputUsed = false; if (ClientSide.activeTool.toolIsActive()) { long timeNow = System.nanoTime(); ClientSide.userInput.updateButtonStates(SpeedyToolControls.attackButtonInterceptor.isUnderlyingKeyDown(), SpeedyToolControls.useItemButtonInterceptor.isUnderlyingKeyDown(), timeNow); inputUsed = ClientSide.activeTool.processUserInput(player, 1.0F, ClientSide.userInput); } ClientSide.activeTool.performTick(player.getEntityWorld()); } }