diff --git a/src/main/java/noppes/npcs/EventHooks.java b/src/main/java/noppes/npcs/EventHooks.java index 070676d01..7040a7403 100644 --- a/src/main/java/noppes/npcs/EventHooks.java +++ b/src/main/java/noppes/npcs/EventHooks.java @@ -149,7 +149,7 @@ public class EventHooks { public static void onPlayerKeyPressed(EntityPlayerMP player, int button, boolean isCtrlPressed, boolean isShiftPressed, boolean isAltPressed, boolean isMetaPressed) { PlayerDataScript handler = PlayerData.get(player).scriptData; KeyPressedEvent event = new KeyPressedEvent(handler.getPlayer(), button, isCtrlPressed, isAltPressed, isShiftPressed, isMetaPressed); - handler.callScript(EnumScriptType.KEY_PRESSED, event); + handler.callScript(EnumScriptType.KEY_PRESSED, event, "key", button, "isCtrlPressed", isCtrlPressed, "isAltPressed", isAltPressed, "isShiftPressed", isShiftPressed, "isMetaPressed", isMetaPressed); WrapperNpcAPI.EVENT_BUS.post(event); } diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index 63053e684..c10242985 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -22,13 +22,7 @@ import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumPlayerPacket; import noppes.npcs.constants.EnumRoleType; import noppes.npcs.containers.ContainerMail; -import noppes.npcs.controllers.BankData; -import noppes.npcs.controllers.PlayerDataController; -import noppes.npcs.controllers.PlayerFactionData; -import noppes.npcs.controllers.PlayerMail; -import noppes.npcs.controllers.PlayerMailData; -import noppes.npcs.controllers.PlayerQuestController; -import noppes.npcs.controllers.PlayerQuestData; +import noppes.npcs.controllers.*; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.RoleCompanion; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -66,18 +60,24 @@ public class PacketHandlerPlayer{ if(npc == null || npc.advanced.role != EnumRoleType.Companion || player != npc.getOwner()) return; NoppesUtilServer.sendOpenGui(player, EnumGuiType.CompanionInv, npc); + } else if(type == EnumPlayerPacket.KeyPressed) { + if(ScriptController.Instance.languages.isEmpty()) { + return; + } + + EventHooks.onPlayerKeyPressed(player, buffer.readInt(), buffer.readBoolean(), buffer.readBoolean(), buffer.readBoolean(), buffer.readBoolean()); } else if(type == EnumPlayerPacket.FollowerHire){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); if(npc == null || npc.advanced.role != EnumRoleType.Follower) return; - NoppesUtilPlayer.hireFollower(player,npc); + NoppesUtilPlayer.hireFollower(player, npc); } else if(type == EnumPlayerPacket.FollowerExtend){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); if(npc == null || npc.advanced.role != EnumRoleType.Follower) return; - NoppesUtilPlayer.extendFollower(player,npc); + NoppesUtilPlayer.extendFollower(player, npc); Server.sendData(player, EnumPacketClient.GUI_DATA, npc.roleInterface.writeToNBT(new NBTTagCompound())); } else if(type == EnumPlayerPacket.FollowerState){ @@ -124,17 +124,17 @@ public class PacketHandlerPlayer{ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); if(npc == null) return; - NoppesUtilPlayer.dialogSelected(buffer.readInt(),buffer.readInt(),player,npc); + NoppesUtilPlayer.dialogSelected(buffer.readInt(), buffer.readInt(), player, npc); } else if(type == EnumPlayerPacket.CheckQuestCompletion){ PlayerQuestData playerdata = PlayerDataController.instance.getPlayerData(player).questData; - playerdata.checkQuestCompletion(player,null); + playerdata.checkQuestCompletion(player, null); } else if(type == EnumPlayerPacket.QuestLog){ NoppesUtilPlayer.sendQuestLogData(player); } else if(type == EnumPlayerPacket.QuestCompletion){ - NoppesUtilPlayer.questCompletion(player,buffer.readInt()); + NoppesUtilPlayer.questCompletion(player, buffer.readInt()); } else if(type == EnumPlayerPacket.FactionsGet){ PlayerFactionData data = PlayerDataController.instance.getPlayerData(player).factionData; diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index 6b29d7749..20b837e37 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -272,11 +272,12 @@ public class ScriptPlayerEventHandler { } */ + /* @SubscribeEvent( priority = EventPriority.HIGHEST ) public void invoke(ServerChatEvent event) { - if(event.player.worldObj instanceof WorldServer && event.player != EntityNPCInterface.chateventPlayer) { + if(event.player.getEntityWorld() instanceof WorldServer && event.player != EntityNPCInterface.chateventPlayer) { PlayerDataScript handler = PlayerData.get(event.player).scriptData; String message = event.message; noppes.npcs.scripted.event.PlayerEvent.ChatEvent ev = new noppes.npcs.scripted.event.PlayerEvent.ChatEvent(handler.getPlayer(), event.message); @@ -289,6 +290,7 @@ public class ScriptPlayerEventHandler { } } } + */ public ScriptPlayerEventHandler registerForgeEvents() { ScriptPlayerEventHandler.ForgeEventHandler handler = new ScriptPlayerEventHandler.ForgeEventHandler(); diff --git a/src/main/java/noppes/npcs/client/ClientTickHandler.java b/src/main/java/noppes/npcs/client/ClientTickHandler.java index 06cd83b1a..cb965a6c3 100644 --- a/src/main/java/noppes/npcs/client/ClientTickHandler.java +++ b/src/main/java/noppes/npcs/client/ClientTickHandler.java @@ -14,11 +14,14 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; +import org.lwjgl.input.Keyboard; public class ClientTickHandler{ - private World prevWorld; private boolean otherContainer = false; + private int buttonPressed = -1; + private long buttonTime = 0L; + private final int[] ignoreKeys = new int[]{157, 29, 54, 42, 184, 56, 220, 219}; @SubscribeEvent(priority = EventPriority.LOWEST) public void onClientTick(TickEvent.ClientTickEvent event){ @@ -50,6 +53,40 @@ public class ClientTickHandler{ else if(mc.currentScreen instanceof GuiQuestLog) mc.setIngameFocus(); } + + int key = Keyboard.getEventKey(); + long time = Keyboard.getEventNanoseconds(); + if(Keyboard.getEventKeyState()) { + if(!this.isIgnoredKey(key)) { + this.buttonTime = time; + this.buttonPressed = key; + } + } else { + Minecraft mc = Minecraft.getMinecraft(); + if(key == this.buttonPressed && time - this.buttonTime < 500000000L && mc.currentScreen == null) { + boolean isCtrlPressed = Keyboard.isKeyDown(157) || Keyboard.isKeyDown(29); + boolean isShiftPressed = Keyboard.isKeyDown(54) || Keyboard.isKeyDown(42); + boolean isAltPressed = Keyboard.isKeyDown(184) || Keyboard.isKeyDown(56); + boolean isMetaPressed = Keyboard.isKeyDown(220) || Keyboard.isKeyDown(219); + NoppesUtilPlayer.sendData(EnumPlayerPacket.KeyPressed, new Object[]{Integer.valueOf(key), Boolean.valueOf(isCtrlPressed), Boolean.valueOf(isShiftPressed), Boolean.valueOf(isAltPressed), Boolean.valueOf(isMetaPressed)}); + } + + this.buttonPressed = -1; + this.buttonTime = 0L; + } } + private boolean isIgnoredKey(int key) { + int[] var2 = this.ignoreKeys; + int var3 = var2.length; + + for(int var4 = 0; var4 < var3; ++var4) { + int i = var2[var4]; + if(i == key) { + return true; + } + } + + return false; + } } diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java index f55d0b884..a2678f8a6 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java @@ -86,7 +86,7 @@ public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallb list.add("playerscript.chat"); list.add("playerscript.damagedentity"); list.add("playerscript.factionupdate"); - list.add("playerscript.keypressed"); + list.add("playerscript.keyPressed"); list.add("playerscript.levelup"); list.add("playerscript.pickup"); list.add("playerscript.rangedlaunched"); diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index c891d3d78..f8b59d746 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -1,5 +1,5 @@ package noppes.npcs.constants; public enum EnumPlayerPacket { - FollowerHire,FollowerExtend,Trader, FollowerState, Transport, BankUnlock, BankUpgrade, Dialog, QuestLog, QuestCompletion, CheckQuestCompletion, BankSlotOpen, FactionsGet, MailGet, MailDelete, MailSend, MailRead, MailboxOpenMail, SignSave, SaveBook, CompanionOpenInv, RoleGet, CompanionTalentExp + FollowerHire,FollowerExtend,Trader, FollowerState, Transport, BankUnlock, BankUpgrade, Dialog, QuestLog, QuestCompletion, CheckQuestCompletion, BankSlotOpen, FactionsGet, MailGet, MailDelete, MailSend, MailRead, MailboxOpenMail, SignSave, SaveBook, CompanionOpenInv, RoleGet, KeyPressed, CompanionTalentExp } diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index 0fec0fea7..88d48c094 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -474,7 +474,7 @@ playerscript.killed=Killed playerscript.factionupdate=Faction Updated playerscript.init=Init playerscript.interact=Interact -playerscript.keypressed=Key Pressed +playerscript.keyPressed=Key Pressed playerscript.kills=Kills playerscript.levelup=Level Up playerscript.login=Login