package com.pahimar.ee.client.handler;
import com.pahimar.ee.client.settings.Keybindings;
import com.pahimar.ee.network.Network;
import com.pahimar.ee.network.message.MessageKeyPressed;
import com.pahimar.ee.reference.Key;
import com.pahimar.ee.util.IKeyBound;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.fml.client.FMLClientHandler;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.InputEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class KeyInputEventHandler {
private static Key getPressedKeybinding() {
if (Keybindings.CHARGE.isPressed()) {
return Key.CHARGE;
}
else if (Keybindings.EXTRA.isPressed()) {
return Key.EXTRA;
}
else if (Keybindings.RELEASE.isPressed()) {
return Key.RELEASE;
}
else if (Keybindings.TOGGLE.isPressed()) {
return Key.TOGGLE;
}
return Key.UNKNOWN;
}
@SubscribeEvent
public void handleKeyInputEvent(InputEvent.KeyInputEvent event) {
if (getPressedKeybinding() == Key.UNKNOWN) {
return;
}
if (FMLClientHandler.instance().getClient().inGameHasFocus && FMLClientHandler.instance().getClientPlayerEntity() != null) {
EntityPlayer entityPlayer = FMLClientHandler.instance().getClientPlayerEntity();
if (entityPlayer.getHeldItemMainhand() != null && entityPlayer.getHeldItemMainhand().getItem() instanceof IKeyBound) {
if (entityPlayer.getEntityWorld().isRemote) {
Network.INSTANCE.sendToServer(new MessageKeyPressed(getPressedKeybinding()));
}
else {
((IKeyBound) entityPlayer.getHeldItemMainhand().getItem()).doKeyBindingAction(entityPlayer, entityPlayer.getHeldItemMainhand(), getPressedKeybinding());
}
}
}
}
}