From c366b5f79ea2de8de7fcbff8144c8ae92fe42292 Mon Sep 17 00:00:00 2001 From: fullwall Date: Sun, 3 Jan 2021 00:14:00 +0800 Subject: [PATCH] Add missing Util changes --- .../main/java/net/citizensnpcs/util/Util.java | 22 +++++++++++++++---- .../nms/v1_16_R3/entity/EntityHumanNPC.java | 20 ++--------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/util/Util.java b/main/src/main/java/net/citizensnpcs/util/Util.java index 5adee264f..551789034 100644 --- a/main/src/main/java/net/citizensnpcs/util/Util.java +++ b/main/src/main/java/net/citizensnpcs/util/Util.java @@ -46,12 +46,26 @@ public static void callCollisionEvent(NPC npc, Entity entity) { } } - public static NPCPushEvent callPushEvent(NPC npc, Vector vector) { + public static Vector callPushEvent(NPC npc, double x, double y, double z) { + if (npc == null) { + return new Vector(x, y, z); + } + boolean allowed = !npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true) + || !npc.data().get(NPC.COLLIDABLE_METADATA, true); + if (NPCPushEvent.getHandlerList().getRegisteredListeners().length == 0) { + if (allowed) { + return new Vector(x, y, z); + } + return allowed ? new Vector(x, y, z) : null; + } + // when another entity collides, this method is called to push the + // NPC so we prevent it from doing anything if the event is + // cancelled. + Vector vector = new Vector(x, y, z); NPCPushEvent event = new NPCPushEvent(npc, vector); - event.setCancelled( - npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true) || !npc.data().get(NPC.COLLIDABLE_METADATA, true)); + event.setCancelled(allowed); Bukkit.getPluginManager().callEvent(event); - return event; + return !event.isCancelled() ? event.getCollisionVector() : null; } public static float clampYaw(float yaw) { diff --git a/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/entity/EntityHumanNPC.java b/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/entity/EntityHumanNPC.java index c4350b110..8b379eab6 100644 --- a/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/entity/EntityHumanNPC.java +++ b/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/entity/EntityHumanNPC.java @@ -25,7 +25,6 @@ import net.citizensnpcs.Settings.Setting; import net.citizensnpcs.api.CitizensAPI; import net.citizensnpcs.api.event.NPCEnderTeleportEvent; -import net.citizensnpcs.api.event.NPCPushEvent; import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.trait.trait.Inventory; import net.citizensnpcs.nms.v1_16_R3.network.EmptyNetHandler; @@ -257,25 +256,10 @@ public SkinPacketTracker getSkinTracker() { @Override public void i(double x, double y, double z) { - if (npc == null) { - super.i(x, y, z); - return; - } - if (NPCPushEvent.getHandlerList().getRegisteredListeners().length == 0) { - if (!npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true)) { - super.i(x, y, z); - } - return; - } - Vector vector = new Vector(x, y, z); - NPCPushEvent event = Util.callPushEvent(npc, vector); - if (!event.isCancelled()) { - vector = event.getCollisionVector(); + Vector vector = Util.callPushEvent(npc, x, y, z); + if (vector != null) { super.i(vector.getX(), vector.getY(), vector.getZ()); } - // when another entity collides, this method is called to push the - // NPC so we prevent it from doing anything if the event is - // cancelled. } @Override