Skip to content

Commit 41097d6

Browse files
fix looking at issues
1 parent 8fdf1ec commit 41097d6

File tree

2 files changed

+21
-40
lines changed

2 files changed

+21
-40
lines changed

spaceNPC/src/main/java/me/tofaa/entitylib/npc/NPCMovement.java

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,21 @@
22

33
import com.github.retrooper.packetevents.PacketEventsAPI;
44
import com.github.retrooper.packetevents.protocol.world.Location;
5-
import com.github.retrooper.packetevents.util.Vector3f;
65
import java.util.Map;
76
import java.util.UUID;
8-
import java.util.concurrent.CompletableFuture;
97
import java.util.concurrent.ConcurrentHashMap;
108

119
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerEntityHeadLook;
1210
import me.tofaa.entitylib.EntityLib;
13-
import me.tofaa.entitylib.meta.display.AbstractDisplayMeta;
1411
import me.tofaa.entitylib.movement.MovementEngine;
15-
import me.tofaa.entitylib.movement.MovementEngine.MovementSettings;
16-
import me.tofaa.entitylib.movement.MovementEngine.Path;
17-
import me.tofaa.entitylib.movement.MovementEngine.PathfindSettings;
1812
import me.tofaa.entitylib.movement.SpigotMovementEngine;
1913
import me.tofaa.entitylib.npc.path.NPCPath;
20-
import me.tofaa.entitylib.npc.NPCRegistry;
2114
import org.bukkit.Bukkit;
2215
import org.bukkit.Material;
2316
import org.bukkit.World;
2417
import org.bukkit.scheduler.BukkitTask;
2518
import org.bukkit.entity.Player;
2619
import org.jetbrains.annotations.NotNull;
27-
import org.jetbrains.annotations.Nullable;
2820

2921
public class NPCMovement {
3022

@@ -166,26 +158,13 @@ private static void processAllNPCHeadRotation() {
166158
yaw = npcLocation.getYaw();
167159
}
168160
} else if (npc.getOptions().isLookAtPath()) {
169-
yaw = npcLocation.getYaw();
161+
// Gets handled by the movement itself
162+
continue;
170163
} else {
171164
continue;
172165
}
173166

174-
PacketEventsAPI<?> api = EntityLib.getApi().getPacketEvents();
175-
for (UUID viewerId : entity.getViewers()) {
176-
Player player = org.bukkit.Bukkit.getPlayer(viewerId);
177-
if (player == null || player.getWorld() != world) continue;
178-
179-
var headPacket = new com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerEntityHeadLook(
180-
entity.getEntityId(),
181-
yaw
182-
);
183-
184-
Object channel = api.getProtocolManager().getChannel(viewerId);
185-
if (channel != null) {
186-
api.getProtocolManager().sendPacket(channel, headPacket);
187-
}
188-
}
167+
entity.rotateHead(yaw, 0);
189168
}
190169
}
191170

@@ -227,19 +206,6 @@ private static void processPathFollowing() {
227206
dy /= len;
228207
dz /= len;
229208

230-
// float yaw = (float) Math.toDegrees(Math.atan2(dz, dx));
231-
float yaw = getYawTowards(
232-
target,
233-
new org.bukkit.Location(
234-
null,
235-
target.getX(),
236-
target.getY(),
237-
target.getZ(),
238-
target.getYaw(),
239-
target.getPitch()
240-
)
241-
);
242-
243209
double newY = current.getY() + dy * speed;
244210
double newX = current.getX() + dx * speed;
245211
double newZ = current.getZ() + dz * speed;
@@ -281,13 +247,13 @@ private static void processPathFollowing() {
281247
newX,
282248
newY,
283249
newZ,
284-
yaw,
250+
npc.getOptions().isLookAtPath() ? npc.getPath().getYaw() : current.getYaw(),
285251
0
286252
);
287253

288254
entity.teleport(newLoc);
289255

290-
entity.rotateHead(yaw, 0);
256+
entity.rotateHead(npc.getPath().getYaw(), 0);
291257
}
292258
});
293259
}

spaceNPC/src/main/java/me/tofaa/entitylib/npc/path/NPCPath.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public class NPCPath {
1313
private double speed;
1414
private boolean paused;
1515
private boolean started;
16+
private float yaw = 0;
1617

1718
public NPCPath() {
1819
this.waypoints = new ArrayList<>();
@@ -67,11 +68,21 @@ public Location getNextWaypoint() {
6768

6869
public void advanceToNext() {
6970
if (waypoints.isEmpty()) return;
70-
71+
72+
int previousIndex = currentIndex;
73+
Location currentWaypoint = waypoints.get(previousIndex);
7174
currentIndex++;
7275
if (currentIndex >= waypoints.size()) {
7376
currentIndex = looping ? 0 : waypoints.size() - 1;
7477
}
78+
79+
if (currentIndex == previousIndex) return; // No yaw change
80+
Location nextWaypoint = waypoints.get(currentIndex);
81+
82+
this.yaw = (float) Math.toDegrees(Math.atan2(
83+
-(nextWaypoint.getX() - currentWaypoint.getX()),
84+
nextWaypoint.getZ() - currentWaypoint.getZ()
85+
));
7586
}
7687

7788
public void setIndex(int index) {
@@ -132,4 +143,8 @@ public void reset() {
132143
currentIndex = 0;
133144
started = false;
134145
}
146+
147+
public float getYaw() {
148+
return yaw;
149+
}
135150
}

0 commit comments

Comments
 (0)