mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-11-22 12:05:39 +00:00
tp
to move directly in the same scene (#2375)
This commit is contained in:
parent
ff6a51db30
commit
43db7eba8f
@ -396,19 +396,31 @@ public class World implements Iterable<Player> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Scene oldScene = null;
|
Scene oldScene = player.getScene();
|
||||||
if (player.getScene() != null) {
|
var newScene = this.getSceneById(teleportProperties.getSceneId());
|
||||||
oldScene = player.getScene();
|
|
||||||
|
|
||||||
// Don't deregister scenes if the player is going to tp back into them
|
// Move directly in the same scene.
|
||||||
if (oldScene.getId() == teleportProperties.getSceneId()) {
|
if (newScene == oldScene && teleportProperties.getTeleportType() == TeleportType.COMMAND) {
|
||||||
oldScene.setDontDestroyWhenEmpty(true);
|
// Set player position and rotation
|
||||||
|
if (teleportProperties.getTeleportTo() != null) {
|
||||||
|
player.getPosition().set(teleportProperties.getTeleportTo());
|
||||||
|
}
|
||||||
|
if (teleportProperties.getTeleportRot() != null) {
|
||||||
|
player.getRotation().set(teleportProperties.getTeleportRot());
|
||||||
|
}
|
||||||
|
player.sendPacket(new PacketSceneEntityAppearNotify(player));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (oldScene != null) {
|
||||||
|
// Don't deregister scenes if the player is going to tp back into them
|
||||||
|
if (oldScene == newScene) {
|
||||||
|
oldScene.setDontDestroyWhenEmpty(true);
|
||||||
|
}
|
||||||
oldScene.removePlayer(player);
|
oldScene.removePlayer(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
var newScene = this.getSceneById(teleportProperties.getSceneId());
|
if (newScene != null) {
|
||||||
newScene.addPlayer(player);
|
newScene.addPlayer(player);
|
||||||
|
|
||||||
player.getTeamManager().applyAbilities(newScene);
|
player.getTeamManager().applyAbilities(newScene);
|
||||||
@ -429,6 +441,8 @@ public class World implements Iterable<Player> {
|
|||||||
teleportProperties.setTeleportRot(config.born_rot);
|
teleportProperties.setTeleportRot(config.born_rot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Set player position and rotation
|
// Set player position and rotation
|
||||||
if (teleportProperties.getTeleportTo() != null) {
|
if (teleportProperties.getTeleportTo() != null) {
|
||||||
@ -438,7 +452,7 @@ public class World implements Iterable<Player> {
|
|||||||
player.getRotation().set(teleportProperties.getTeleportRot());
|
player.getRotation().set(teleportProperties.getTeleportRot());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (oldScene != null && newScene != oldScene) {
|
if (oldScene != null && newScene != null && newScene != oldScene) {
|
||||||
newScene.setPrevScenePoint(oldScene.getPrevScenePoint());
|
newScene.setPrevScenePoint(oldScene.getPrevScenePoint());
|
||||||
oldScene.setDontDestroyWhenEmpty(false);
|
oldScene.setDontDestroyWhenEmpty(false);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user