mirror of
https://github.com/DRE2N/DungeonsXL.git
synced 2024-11-02 17:00:19 +01:00
Always respawn edit players in edit world if they die
This commit is contained in:
parent
7a2ec54945
commit
13c0068add
@ -29,8 +29,8 @@ import de.erethon.dungeonsxl.api.player.GlobalPlayer;
|
||||
import de.erethon.dungeonsxl.api.player.InstancePlayer;
|
||||
import de.erethon.dungeonsxl.api.player.PlayerCache;
|
||||
import de.erethon.dungeonsxl.api.player.PlayerGroup;
|
||||
import de.erethon.dungeonsxl.api.world.EditWorld;
|
||||
import de.erethon.dungeonsxl.api.world.GameWorld;
|
||||
import de.erethon.dungeonsxl.api.world.InstanceWorld;
|
||||
import de.erethon.dungeonsxl.config.DMessage;
|
||||
import de.erethon.dungeonsxl.config.MainConfig;
|
||||
import de.erethon.dungeonsxl.dungeon.DGame;
|
||||
@ -468,51 +468,41 @@ public class DPlayerListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalPlayer dPlayer = dPlayers.get(player);
|
||||
if (dPlayer == null) {
|
||||
InstancePlayer instancePlayer = dPlayers.getInstancePlayer(player);
|
||||
if (instancePlayer == null) {
|
||||
return;
|
||||
}
|
||||
InstanceWorld instance = instancePlayer.getInstanceWorld();
|
||||
if (instance == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (dPlayer instanceof EditPlayer) {
|
||||
EditWorld editWorld = ((EditPlayer) dPlayer).getEditWorld();
|
||||
if (editWorld == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (editWorld.getLobbyLocation() == null) {
|
||||
event.setRespawnLocation(editWorld.getWorld().getSpawnLocation());
|
||||
|
||||
} else {
|
||||
event.setRespawnLocation(editWorld.getLobbyLocation());
|
||||
}
|
||||
|
||||
} else if (dPlayer instanceof GamePlayer) {
|
||||
GamePlayer gamePlayer = (GamePlayer) dPlayer;
|
||||
|
||||
GameWorld gameWorld = gamePlayer.getGameWorld();
|
||||
if (gameWorld == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerGroup group = dPlayer.getGroup();
|
||||
|
||||
Location respawn = gamePlayer.getLastCheckpoint();
|
||||
|
||||
GamePlayer gamePlayer = null;
|
||||
PlayerGroup group = instancePlayer.getGroup();
|
||||
Location respawn = null;
|
||||
boolean shouldResetInventory = false;
|
||||
if (instancePlayer instanceof GamePlayer) {
|
||||
gamePlayer = ((GamePlayer) instancePlayer);
|
||||
respawn = gamePlayer.getLastCheckpoint();
|
||||
if (respawn == null) {
|
||||
respawn = group.getGameWorld().getStartLocation(group);
|
||||
}
|
||||
|
||||
boolean shouldResetInventory = gamePlayer.getGameWorld().getDungeon().getRules().getState(GameRule.RESET_CLASS_INVENTORY_ON_RESPAWN);
|
||||
|
||||
// Because some plugins set another respawn point, DXL teleports a few ticks later.
|
||||
event.setRespawnLocation(respawn);
|
||||
new RespawnTask(player, gamePlayer, respawn, shouldResetInventory).runTaskLater(plugin, 10L);
|
||||
|
||||
shouldResetInventory = gamePlayer.getGameWorld().getDungeon().getRules().getState(GameRule.RESET_CLASS_INVENTORY_ON_RESPAWN);
|
||||
// Don't forget Doge!
|
||||
if (gamePlayer.getWolf() != null) {
|
||||
gamePlayer.getWolf().teleport(respawn);
|
||||
}
|
||||
}
|
||||
if (respawn == null) {
|
||||
respawn = instancePlayer.getInstanceWorld().getLobbyLocation();
|
||||
}
|
||||
if (respawn == null) {
|
||||
respawn = instancePlayer.getInstanceWorld().getWorld().getSpawnLocation();
|
||||
}
|
||||
|
||||
// Because some plugins set another respawn point, DXL teleports a few ticks later.
|
||||
event.setRespawnLocation(respawn);
|
||||
new RespawnTask(player, gamePlayer, respawn, shouldResetInventory).runTaskLater(plugin, 10L);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
|
Loading…
Reference in New Issue
Block a user