mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-20 02:45:52 +01:00
Spawn the player at the scene's start position when sent to a dungeon
This commit is contained in:
@@ -279,17 +279,25 @@ public class World implements Iterable<Player> {
|
||||
|
||||
val sceneData = GameData.getSceneDataMap().get(sceneId);
|
||||
if (dungeonData != null) {
|
||||
teleportProps.enterType(EnterType.ENTER_TYPE_DUNGEON).enterReason(EnterReason.DungeonEnter);
|
||||
teleportProps.teleportTo(dungeonData.getStartPosition())
|
||||
.teleportRot(dungeonData.getStartRotation());
|
||||
teleportProps.enterType(EnterType.ENTER_TYPE_DUNGEON)
|
||||
.enterReason(EnterReason.DungeonEnter);
|
||||
} else if (player.getSceneId() == sceneId) {
|
||||
teleportProps.enterType(EnterType.ENTER_TYPE_GOTO);
|
||||
} else if (sceneData != null && sceneData.getSceneType() == SceneType.SCENE_HOME_WORLD) {
|
||||
// Home
|
||||
teleportProps.enterType(EnterType.ENTER_TYPE_SELF_HOME).enterReason(EnterReason.EnterHome);
|
||||
}
|
||||
|
||||
return transferPlayerToScene(player, teleportProps.build());
|
||||
}
|
||||
|
||||
public boolean transferPlayerToScene(Player player, TeleportProperties teleportProperties) {
|
||||
// Check if the teleport properties are valid.
|
||||
if (teleportProperties.getTeleportTo() == null)
|
||||
teleportProperties.setTeleportTo(player.getPosition());
|
||||
|
||||
// Call player teleport event.
|
||||
PlayerTeleportEvent event =
|
||||
new PlayerTeleportEvent(player, teleportProperties, player.getPosition());
|
||||
|
||||
Reference in New Issue
Block a user