Dont deregister scenes if the player is going to tp back into them

This commit is contained in:
Melledy
2022-04-25 02:16:01 -07:00
Unverified
parent 3b414cda38
commit b0322fa3e5
2 changed files with 26 additions and 7 deletions
+16 -6
View File
@@ -212,19 +212,29 @@ public class World implements Iterable<GenshinPlayer> {
return false;
}
Integer oldSceneId = null;
GenshinScene oldScene = null;
if (player.getScene() != null) {
oldSceneId = player.getScene().getId();
player.getScene().removePlayer(player);
oldScene = player.getScene();
// Dont deregister scenes if the player is going to tp back into them
if (oldScene.getId() == sceneId) {
oldScene.setDontDestroyWhenEmpty(true);
}
oldScene.removePlayer(player);
}
GenshinScene scene = this.getSceneById(sceneId);
scene.addPlayer(player);
GenshinScene newScene = this.getSceneById(sceneId);
newScene.addPlayer(player);
player.getPos().set(pos);
if (oldScene != null) {
oldScene.setDontDestroyWhenEmpty(false);
}
// Teleport packet
if (oldSceneId.equals(sceneId)) {
if (oldScene == newScene) {
player.sendPacket(new PacketPlayerEnterSceneNotify(player, EnterType.EnterGoto, EnterReason.TransPoint, sceneId, pos));
} else {
player.sendPacket(new PacketPlayerEnterSceneNotify(player, EnterType.EnterJump, EnterReason.TransPoint, sceneId, pos));