From ffac34f734ab42ff6a959e2f0144a4001b108ed6 Mon Sep 17 00:00:00 2001 From: fullwall Date: Thu, 5 Jan 2023 22:51:42 +0800 Subject: [PATCH] Fix player ticking --- .../npc/ai/AStarNavigationStrategy.java | 14 ++++++-------- main/src/main/java/net/citizensnpcs/util/NMS.java | 7 ++++++- .../net/citizensnpcs/util/PlayerUpdateTask.java | 6 +----- main/src/main/resources/messages_en.properties | 2 +- .../nms/v1_10_R1/entity/EntityHumanNPC.java | 3 ++- .../nms/v1_11_R1/entity/EntityHumanNPC.java | 3 ++- .../nms/v1_12_R1/entity/EntityHumanNPC.java | 2 +- .../nms/v1_13_R2/entity/EntityHumanNPC.java | 2 +- .../nms/v1_14_R1/entity/EntityHumanNPC.java | 2 +- .../nms/v1_15_R1/entity/EntityHumanNPC.java | 2 +- .../nms/v1_16_R3/entity/EntityHumanNPC.java | 2 +- .../nms/v1_17_R1/entity/EntityHumanNPC.java | 2 +- .../nms/v1_18_R2/entity/EntityHumanNPC.java | 2 +- .../nms/v1_19_R2/entity/EntityHumanNPC.java | 2 +- .../nms/v1_19_R2/util/PlayerMoveControl.java | 1 - .../nms/v1_8_R3/entity/EntityHumanNPC.java | 3 ++- 16 files changed, 28 insertions(+), 27 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/npc/ai/AStarNavigationStrategy.java b/main/src/main/java/net/citizensnpcs/npc/ai/AStarNavigationStrategy.java index ab49b827c..534d090d8 100644 --- a/main/src/main/java/net/citizensnpcs/npc/ai/AStarNavigationStrategy.java +++ b/main/src/main/java/net/citizensnpcs/npc/ai/AStarNavigationStrategy.java @@ -80,7 +80,7 @@ public class AStarNavigationStrategy extends AbstractPathStrategy { public boolean update() { if (plan == null) { if (planner == null) { - planner = new AStarPlanner(params, npc.getStoredLocation(), destination); + planner = new AStarPlanner(params, npc.getEntity().getLocation(NPC_LOCATION), destination); } CancelReason reason = planner.tick(Setting.ASTAR_ITERATIONS_PER_TICK.asInt(), Setting.MAXIMUM_ASTAR_ITERATIONS.asInt()); @@ -98,7 +98,7 @@ public class AStarNavigationStrategy extends AbstractPathStrategy { } Location loc = npc.getEntity().getLocation(NPC_LOCATION); /* Proper door movement - gets stuck on corners at times - + Block block = currLoc.getWorld().getBlockAt(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ()); if (MinecraftBlockExaminer.isDoor(block.getType())) { Door door = (Door) block.getState().getData(); @@ -169,16 +169,14 @@ public class AStarNavigationStrategy extends AbstractPathStrategy { return PassableState.IGNORE; } }); + VectorGoal goal = new VectorGoal(to, (float) params.pathDistanceMargin()); + state = ASTAR.getStateFor(goal, + new VectorNode(goal, from, new NMSChunkBlockSource(from, params.range()), params.examiners())); } public CancelReason tick(int iterationsPerTick, int maxIterations) { - if (plan != null) + if (this.plan != null) return null; - if (state == null) { - VectorGoal goal = new VectorGoal(to, (float) params.pathDistanceMargin()); - state = ASTAR.getStateFor(goal, - new VectorNode(goal, from, new NMSChunkBlockSource(from, params.range()), params.examiners())); - } Path plan = ASTAR.run(state, iterationsPerTick); if (plan == null) { if (state.isEmpty()) { diff --git a/main/src/main/java/net/citizensnpcs/util/NMS.java b/main/src/main/java/net/citizensnpcs/util/NMS.java index c06913deb..90712a49f 100644 --- a/main/src/main/java/net/citizensnpcs/util/NMS.java +++ b/main/src/main/java/net/citizensnpcs/util/NMS.java @@ -498,7 +498,12 @@ public class NMS { } public static Runnable playerTicker(Player entity) { - return BRIDGE.playerTicker(entity); + Runnable tick = BRIDGE.playerTicker(entity); + return () -> { + if (entity.isValid()) { + tick.run(); + } + }; } public static void registerEntityClass(Class clazz) { diff --git a/main/src/main/java/net/citizensnpcs/util/PlayerUpdateTask.java b/main/src/main/java/net/citizensnpcs/util/PlayerUpdateTask.java index 0351e946d..cde46ce6e 100644 --- a/main/src/main/java/net/citizensnpcs/util/PlayerUpdateTask.java +++ b/main/src/main/java/net/citizensnpcs/util/PlayerUpdateTask.java @@ -59,11 +59,7 @@ public class PlayerUpdateTask extends BukkitRunnable { } public PlayerTick(Player player) { - this(player, () -> { - if (player.isValid()) { - NMS.playerTicker(player); - } - }); + this(player, NMS.playerTicker(player)); } @Override diff --git a/main/src/main/resources/messages_en.properties b/main/src/main/resources/messages_en.properties index bedfb2e48..dd44b32b9 100644 --- a/main/src/main/resources/messages_en.properties +++ b/main/src/main/resources/messages_en.properties @@ -376,7 +376,7 @@ citizens.editors.waypoints.guided.added-guide=Added a [[guide]] waypoint which t citizens.editors.waypoints.guided.added-available=Added a [[destination]] waypoint which the NPC will randomly pathfind between. citizens.editors.waypoints.guided.already-taken=There is already a waypoint here. citizens.editors.waypoints.linear.added-waypoint=[[Added]] a waypoint at ({0}) ([[{1}]] total). -citizens.editors.waypoints.linear.begin==== [[Linear Waypoint Editor]] ===
[[Left click]] to add a waypoint, [[right click]] to remove it.
You can right click while sneaking to select and remove specific points.
Type [[markers]] to hide waypoints,
[[triggers]] to enter the trigger editor,
[[clear]] to clear all waypoints,
[[cycle]] to make NPCs cycle through waypoints instead of looping. +citizens.editors.waypoints.linear.begin==== [[Linear Waypoint Editor]] ===
[[Left click]] to add a waypoint, [[right click]] to remove it.
Right click while sneaking to select and remove points.
Type [[markers]] to hide waypoints,
[[triggers]] to enter the trigger editor,
[[clear]] to clear all waypoints,
[[cycle]] to make NPCs cycle through waypoints instead of looping. citizens.editors.waypoints.linear.selected-waypoint=Selected waypoint at {0}. Sneak + right click again to remove this waypoint. citizens.editors.waypoints.linear.end=Exited the linear waypoint editor. citizens.editors.waypoints.linear.not-showing-markers=[[Stopped]] showing waypoint markers. diff --git a/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/entity/EntityHumanNPC.java b/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/entity/EntityHumanNPC.java index 9ddbbaa0d..8dcc16b19 100644 --- a/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/entity/EntityHumanNPC.java +++ b/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/entity/EntityHumanNPC.java @@ -309,7 +309,8 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable } moveOnCurrentHeading(); } - NMSImpl.updateAI(this); + + updateAI(); if (npc.data().get(NPC.Metadata.COLLIDABLE, !npc.isProtected())) { cs(); diff --git a/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/entity/EntityHumanNPC.java b/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/entity/EntityHumanNPC.java index da8a6d6f0..4ff9d9482 100644 --- a/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/entity/EntityHumanNPC.java +++ b/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/entity/EntityHumanNPC.java @@ -370,7 +370,8 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable } moveOnCurrentHeading(); } - NMSImpl.updateAI(this); + + updateAI(); if (npc.data().get(NPC.Metadata.COLLIDABLE, !npc.isProtected())) { ct(); diff --git a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/entity/EntityHumanNPC.java b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/entity/EntityHumanNPC.java index f96c6ff17..2b96e27ba 100644 --- a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/entity/EntityHumanNPC.java +++ b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/entity/EntityHumanNPC.java @@ -396,7 +396,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable } moveOnCurrentHeading(); } - NMSImpl.updateAI(this); + updateAI(); if (npc.data().get(NPC.Metadata.COLLIDABLE, !npc.isProtected())) { cB(); diff --git a/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/entity/EntityHumanNPC.java b/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/entity/EntityHumanNPC.java index f2e407bac..18978740e 100644 --- a/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/entity/EntityHumanNPC.java +++ b/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/entity/EntityHumanNPC.java @@ -374,7 +374,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable } moveOnCurrentHeading(); } - NMSImpl.updateAI(this); + updateAI(); if (npc.data().get(NPC.Metadata.COLLIDABLE, !npc.isProtected())) { cN(); diff --git a/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/entity/EntityHumanNPC.java b/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/entity/EntityHumanNPC.java index 743641fad..38bacadde 100644 --- a/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/entity/EntityHumanNPC.java +++ b/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/entity/EntityHumanNPC.java @@ -379,7 +379,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable } moveOnCurrentHeading(); } - NMSImpl.updateAI(this); + updateAI(); if (npc.data().get(NPC.Metadata.COLLIDABLE, !npc.isProtected())) { collideNearby(); diff --git a/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/entity/EntityHumanNPC.java b/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/entity/EntityHumanNPC.java index 4e4442ce0..d2cab6bee 100644 --- a/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/entity/EntityHumanNPC.java +++ b/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/entity/EntityHumanNPC.java @@ -378,7 +378,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable } moveOnCurrentHeading(); } - NMSImpl.updateAI(this); + updateAI(); if (npc.data().get(NPC.Metadata.COLLIDABLE, !npc.isProtected())) { collideNearby(); 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 4ad137760..a5aeca044 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 @@ -408,7 +408,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable } moveOnCurrentHeading(); } - NMSImpl.updateAI(this); + updateAI(); if (npc.data().get(NPC.Metadata.COLLIDABLE, !npc.isProtected())) { collideNearby(); diff --git a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/entity/EntityHumanNPC.java b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/entity/EntityHumanNPC.java index ea362541b..a9ed032d6 100644 --- a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/entity/EntityHumanNPC.java +++ b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/entity/EntityHumanNPC.java @@ -189,7 +189,7 @@ public class EntityHumanNPC extends ServerPlayer implements NPCHolder, Skinnable } moveOnCurrentHeading(); } - NMSImpl.updateAI(this); + updateAI(); if (isSpectator()) { this.noPhysics = true; diff --git a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/entity/EntityHumanNPC.java b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/entity/EntityHumanNPC.java index 6b9f2cfd3..a6a8b5f29 100644 --- a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/entity/EntityHumanNPC.java +++ b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/entity/EntityHumanNPC.java @@ -190,7 +190,7 @@ public class EntityHumanNPC extends ServerPlayer implements NPCHolder, Skinnable } moveOnCurrentHeading(); } - NMSImpl.updateAI(this); + updateAI(); if (isSpectator()) { this.noPhysics = true; diff --git a/v1_19_R2/src/main/java/net/citizensnpcs/nms/v1_19_R2/entity/EntityHumanNPC.java b/v1_19_R2/src/main/java/net/citizensnpcs/nms/v1_19_R2/entity/EntityHumanNPC.java index 2ce965bbc..b2ede01e5 100644 --- a/v1_19_R2/src/main/java/net/citizensnpcs/nms/v1_19_R2/entity/EntityHumanNPC.java +++ b/v1_19_R2/src/main/java/net/citizensnpcs/nms/v1_19_R2/entity/EntityHumanNPC.java @@ -196,7 +196,7 @@ public class EntityHumanNPC extends ServerPlayer implements NPCHolder, Skinnable moveOnCurrentHeading(); } - NMSImpl.updateAI(this); + updateAI(); if (isSpectator()) { this.noPhysics = true; diff --git a/v1_19_R2/src/main/java/net/citizensnpcs/nms/v1_19_R2/util/PlayerMoveControl.java b/v1_19_R2/src/main/java/net/citizensnpcs/nms/v1_19_R2/util/PlayerMoveControl.java index 0340feac6..f78541a63 100644 --- a/v1_19_R2/src/main/java/net/citizensnpcs/nms/v1_19_R2/util/PlayerMoveControl.java +++ b/v1_19_R2/src/main/java/net/citizensnpcs/nms/v1_19_R2/util/PlayerMoveControl.java @@ -103,7 +103,6 @@ public class PlayerMoveControl extends MoveControl { @Override public void tick() { - this.entity.zza = 0; if (this.moving) { this.moving = false; diff --git a/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/entity/EntityHumanNPC.java b/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/entity/EntityHumanNPC.java index b64cac9ad..f9c772b95 100644 --- a/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/entity/EntityHumanNPC.java +++ b/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/entity/EntityHumanNPC.java @@ -312,7 +312,8 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable } moveOnCurrentHeading(); } - NMSImpl.updateAI(this); + + updateAI(); if (npc.data().get(NPC.Metadata.COLLIDABLE, !npc.isProtected())) { bL();