Skip to content

Commit 03effa4

Browse files
authored
Merge pull request #72 from Chubbyduck1/master
ViewerEngineListener not tracking disconnects
2 parents ee500f4 + 0d0c44a commit 03effa4

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

api/src/main/java/me/tofaa/entitylib/ve/ViewerEngineListener.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.github.retrooper.packetevents.event.PacketListenerAbstract;
44
import com.github.retrooper.packetevents.event.PacketSendEvent;
5+
import com.github.retrooper.packetevents.event.UserDisconnectEvent;
56
import com.github.retrooper.packetevents.protocol.packettype.PacketType;
67
import com.github.retrooper.packetevents.protocol.packettype.PacketTypeCommon;
78
import com.github.retrooper.packetevents.protocol.player.User;
@@ -11,6 +12,7 @@
1112
import me.tofaa.entitylib.utils.Check;
1213
import me.tofaa.entitylib.wrapper.WrapperEntity;
1314

15+
import java.util.UUID;
1416
import java.util.function.Consumer;
1517

1618
final class ViewerEngineListener extends PacketListenerAbstract {
@@ -81,6 +83,24 @@ else if (type == PacketType.Play.Server.CHUNK_DATA) {
8183
}
8284
}
8385

86+
@Override
87+
public void onUserDisconnect(final UserDisconnectEvent event) {
88+
engine.getExecutor().execute(() -> {
89+
final UUID uniqueId = event.getUser().getUUID();
90+
91+
// Note from Chubbyduck1: While this says it's non-null, it can actually be null in this case. Not sure why. When run without this, it would spam NPEs for me.
92+
if (uniqueId == null) {
93+
return;
94+
}
95+
96+
engine.getTracked0().forEach(entity -> {
97+
if (entity.hasViewer(uniqueId)) {
98+
entity.removeViewerSilently(uniqueId);
99+
}
100+
});
101+
});
102+
}
103+
84104
private void genericSpawnCheck(int entityId, User user) {
85105
WrapperEntity entity = EntityLib.getApi().getEntity(entityId);
86106
if (entity == null) return;

0 commit comments

Comments
 (0)