Skip to content

Commit 83eead7

Browse files
committed
fix: ViewerEngineListener not handling UserDisconnectEvent
1 parent ee500f4 commit 83eead7

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

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

Lines changed: 18 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,22 @@ else if (type == PacketType.Play.Server.CHUNK_DATA) {
8183
}
8284
}
8385

86+
@Override
87+
public void onUserDisconnect(final UserDisconnectEvent event) {
88+
final UUID uniqueId = event.getUser().getUUID();
89+
90+
// 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.
91+
if (uniqueId == null) {
92+
return;
93+
}
94+
95+
engine.getTracked0().forEach(entity -> {
96+
if (entity.hasViewer(uniqueId)) {
97+
entity.removeViewer(uniqueId);
98+
}
99+
});
100+
}
101+
84102
private void genericSpawnCheck(int entityId, User user) {
85103
WrapperEntity entity = EntityLib.getApi().getEntity(entityId);
86104
if (entity == null) return;

0 commit comments

Comments
 (0)