From 50ece3351a540461e5e3b8bb3f5cafec58c568bb Mon Sep 17 00:00:00 2001 From: Ceikry Date: Thu, 11 Mar 2021 17:15:24 -0600 Subject: [PATCH] Everything hooked into Listeners --- .../core/game/interaction/Interaction.java | 3 +++ .../Server/core/game/interaction/Listeners.kt | 23 +++++++++++++++++++ .../core/net/packet/in/InteractionPacket.java | 16 ++++--------- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/Server/src/main/java/Server/core/game/interaction/Interaction.java b/Server/src/main/java/Server/core/game/interaction/Interaction.java index 47ef367cf..4fcba7c95 100644 --- a/Server/src/main/java/Server/core/game/interaction/Interaction.java +++ b/Server/src/main/java/Server/core/game/interaction/Interaction.java @@ -105,6 +105,9 @@ public class Interaction { if (player.getLocks().isInteractionLocked() || player.getZoneMonitor().interact(node, option)) { return true; } + if(Listeners.run(node.getId(),0,option.getName(),player,node)){ + return true; + } if (option.getHandler() == null || !option.getHandler().handle(player, node, option.getName().toLowerCase())) { player.getPacketDispatch().sendMessage("Nothing interesting happens."); } diff --git a/Server/src/main/java/Server/core/game/interaction/Listeners.kt b/Server/src/main/java/Server/core/game/interaction/Listeners.kt index d2d9c4295..7e15ea03d 100644 --- a/Server/src/main/java/Server/core/game/interaction/Listeners.kt +++ b/Server/src/main/java/Server/core/game/interaction/Listeners.kt @@ -17,4 +17,27 @@ object Listeners { fun get(id: Int, type: Int, option: String): ((Player,Node) -> Boolean)?{ return listeners[(StringUtils.stringToLong(option.toLowerCase()) + id) shl type] } + + @JvmStatic + fun run(id: Int, type: Int, option: String, player: Player, node: Node): Boolean{ + val flag = when(type){ + 2 -> DestinationFlag.ENTITY + 1 -> DestinationFlag.OBJECT + else -> DestinationFlag.OBJECT + } + + val method = get(id,type,option) ?: return false + + if(type != 0) { + player.pulseManager.run(object : MovementPulse(player, node, flag) { + override fun pulse(): Boolean { + method.invoke(player,node) + return true + } + }) + } else { + method.invoke(player,node) + } + return true + } } \ No newline at end of file diff --git a/Server/src/main/java/Server/core/net/packet/in/InteractionPacket.java b/Server/src/main/java/Server/core/net/packet/in/InteractionPacket.java index 7c74eb526..a5dbd9d86 100644 --- a/Server/src/main/java/Server/core/net/packet/in/InteractionPacket.java +++ b/Server/src/main/java/Server/core/net/packet/in/InteractionPacket.java @@ -185,6 +185,9 @@ public final class InteractionPacket implements IncomingPacket { player.debug("spawn=" + npc.getProperties().getSpawnLocation() + "."); player.debug("Varp ID= " + npc.getDefinition().getConfigId() + " Offset=" + npc.getDefinition().getVarbitOffset() + " Size=" + npc.getDefinition().getVarbitSize()); handleAIPLegion(player, 0, optionIndex, index); + if(Listeners.run(shown.getId(),2, option.getName(),player,shown)){ + return; + } if(PluginInteractionManager.handle(player,shown,option)){ return; } @@ -266,18 +269,7 @@ public final class InteractionPacket implements IncomingPacket { } handleAIPLegion(player, 1, optionIndex, x, y, objectId); - if(Listeners.get(object.getId(),1, option.getName()) != null){ - GameObject finalObject = object; - player.getPulseManager().run(new MovementPulse(player, finalObject,DestinationFlag.OBJECT) { - @Override - public boolean pulse() { - player.faceLocation(finalObject.getLocation()); - if(!Listeners.get(finalObject.getId(),1,option.getName()).invoke(player, finalObject)){ - player.sendMessage("Nothing interesting happens."); - } - return true; - } - }); + if(Listeners.run(object.getId(),1, option.getName(),player,object)){ return; } if(PluginInteractionManager.handle(player,object)){