Skip to content

Commit 0a31f1f

Browse files
committed
PlayerData - add field for 'online'
- Will be set to false when the player logs out - This is used for teleporting outside of the, making sure not to use async TP when player has quit
1 parent f6962ff commit 0a31f1f

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

src/main/java/tk/shanebee/hg/data/PlayerData.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class PlayerData implements Cloneable {
3434
private final UUID uuid;
3535
private final Scoreboard scoreboard;
3636
private Location previousLocation = null;
37+
private boolean online;
3738

3839
//InGame data
3940
private Team team;
@@ -61,6 +62,7 @@ public PlayerData(Player player, Game game) {
6162
player.setLevel(0);
6263
player.setExp(0);
6364
scoreboard = player.getScoreboard();
65+
online = true;
6466
}
6567

6668
/**
@@ -192,6 +194,14 @@ public Location getPreviousLocation() {
192194
}
193195
}
194196

197+
public boolean isOnline() {
198+
return online;
199+
}
200+
201+
public void setOnline(boolean online) {
202+
this.online = online;
203+
}
204+
195205
/**
196206
* Get the {@link Player Bukkit Player} belonging to this player data
197207
*

src/main/java/tk/shanebee/hg/game/GamePlayerData.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -356,8 +356,8 @@ public void leave(Player player, Boolean death) {
356356
Location previousLocation = playerData.getPreviousLocation();
357357

358358
playerData.restore(player);
359-
playerManager.removePlayerData(player);
360359
exit(player, previousLocation);
360+
playerManager.removePlayerData(player);
361361
if (death) {
362362
player.playSound(player.getLocation(), Sound.UI_TOAST_CHALLENGE_COMPLETE, 5, 1);
363363
}
@@ -379,7 +379,11 @@ void exit(Player player, @Nullable Location exitLocation) {
379379
Location bedLocation = player.getBedSpawnLocation();
380380
loc = bedLocation != null ? bedLocation : worldSpawn;
381381
}
382-
PaperLib.teleportAsync(player, loc);
382+
if (playerManager.getData(player).isOnline()) {
383+
PaperLib.teleportAsync(player, loc);
384+
} else {
385+
player.teleport(loc);
386+
}
383387
}
384388

385389
/**
@@ -429,7 +433,6 @@ public void leaveSpectate(Player spectator) {
429433
Location previousLocation = playerData.getPreviousLocation();
430434

431435
playerData.restore(spectator);
432-
playerManager.removeSpectatorData(uuid);
433436
spectators.remove(spectator.getUniqueId());
434437
spectator.setCollidable(true);
435438
if (Config.spectateFly) {
@@ -440,6 +443,7 @@ public void leaveSpectate(Player spectator) {
440443
if (Config.spectateHide)
441444
revealPlayer(spectator);
442445
exit(spectator, previousLocation);
446+
playerManager.removeSpectatorData(uuid);
443447
}
444448

445449
void revealPlayer(Player hidden) {

src/main/java/tk/shanebee/hg/listeners/GameListener.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -727,10 +727,14 @@ private void onPickup(EntityPickupItemEvent event) {
727727
private void onLogout(PlayerQuitEvent event) {
728728
Player player = event.getPlayer();
729729
if (playerManager.hasPlayerData(player)) {
730-
playerManager.getPlayerData(player).getGame().getGamePlayerData().leave(player, false);
730+
PlayerData playerData = playerManager.getPlayerData(player);
731+
playerData.setOnline(false);
732+
playerData.getGame().getGamePlayerData().leave(player, false);
731733
}
732734
if (playerManager.hasSpectatorData(player)) {
733-
playerManager.getSpectatorData(player).getGame().getGamePlayerData().leaveSpectate(player);
735+
PlayerData playerData = playerManager.getSpectatorData(player);
736+
playerData.setOnline(false);
737+
playerData.getGame().getGamePlayerData().leaveSpectate(player);
734738
}
735739
}
736740

0 commit comments

Comments
 (0)