Commit 02d2d728 authored by Melledy's avatar Melledy
Browse files

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

parent b8614d63
......@@ -47,6 +47,7 @@ public class GenshinScene {
private final Set<SpawnDataEntry> spawnedEntities;
private final Set<SpawnDataEntry> deadSpawnedEntities;
private boolean dontDestroyWhenEmpty;
private int time;
private ClimateType climate;
......@@ -121,6 +122,14 @@ public class GenshinScene {
this.weather = weather;
}
public boolean dontDestroyWhenEmpty() {
return dontDestroyWhenEmpty;
}
public void setDontDestroyWhenEmpty(boolean dontDestroyWhenEmpty) {
this.dontDestroyWhenEmpty = dontDestroyWhenEmpty;
}
public Set<SpawnDataEntry> getSpawnedEntities() {
return spawnedEntities;
}
......@@ -166,7 +175,7 @@ public class GenshinScene {
}
// Deregister scene if not in use
if (this.getEntities().size() <= 0) {
if (this.getEntities().size() <= 0 && !this.dontDestroyWhenEmpty()) {
this.getWorld().deregisterScene(this);
}
}
......
......@@ -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);
}
GenshinScene scene = this.getSceneById(sceneId);
scene.addPlayer(player);
oldScene.removePlayer(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));
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment