Teleport Small Fix

This commit is contained in:
Yazawazi 2022-04-22 02:23:02 +08:00 committed by GitHub
parent 0e7976f906
commit 069cb1c6d3
2 changed files with 9 additions and 2 deletions

View File

@ -212,7 +212,10 @@ public class World implements Iterable<GenshinPlayer> {
return false;
}
Integer oldSceneId = null;
if (player.getScene() != null) {
oldSceneId = player.getScene().getId();
player.getScene().removePlayer(player);
}
@ -221,7 +224,11 @@ public class World implements Iterable<GenshinPlayer> {
player.getPos().set(pos);
// Teleport packet
player.sendPacket(new PacketPlayerEnterSceneNotify(player, EnterType.EnterSelf, EnterReason.TransPoint, sceneId, pos));
if (oldSceneId.equals(sceneId)) {
player.sendPacket(new PacketPlayerEnterSceneNotify(player, EnterType.EnterGoto, EnterReason.TransPoint, sceneId, pos));
} else {
player.sendPacket(new PacketPlayerEnterSceneNotify(player, EnterType.EnterJump, EnterReason.TransPoint, sceneId, pos));
}
return true;
}

View File

@ -52,7 +52,7 @@ public class PacketPlayerEnterSceneNotify extends GenshinPacket {
.setSceneId(newScene)
.setPos(newPos.toProto())
.setSceneBeginTime(System.currentTimeMillis())
.setType(EnterType.EnterSelf)
.setType(type)
.setTargetUid(target.getUid())
.setEnterSceneToken(player.getEnterSceneToken())
.setWorldLevel(target.getWorld().getWorldLevel())