fix: gates double results teleport guard missing message
This commit is contained in:
parent
17388f97e7
commit
be86fe5960
3 changed files with 17 additions and 7 deletions
|
|
@ -204,7 +204,6 @@ public class ExitGate {
|
|||
public void restoreProgress() { progress = savedProgress; }
|
||||
|
||||
public void reset() {
|
||||
removeGateBlock();
|
||||
this.state = GateState.CLOSED;
|
||||
this.progress = 0.0;
|
||||
this.savedProgress = 0.0;
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class EndgamePhase implements Phase {
|
|||
this.complete = true;
|
||||
// Показываем результаты и телепортируем всех в лобби
|
||||
announceEndgameEnd(session);
|
||||
teleportAllToLobby(session);
|
||||
teleportAllToLobbyDelayed(session);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -84,7 +84,7 @@ public class EndgamePhase implements Phase {
|
|||
if (gateManager != null && gateManager.getOpenGateCount() > 0) {
|
||||
this.complete = true;
|
||||
announceEndgameEnd(session);
|
||||
teleportAllToLobby(session);
|
||||
teleportAllToLobbyDelayed(session);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -150,11 +150,23 @@ public class EndgamePhase implements Phase {
|
|||
}
|
||||
|
||||
/**
|
||||
* Телепортирует всех игроков в лобби, сбрасывает атрибуты и останавливает сессию.
|
||||
* Телепортирует всех игроков в лобби и сбрасывает атрибуты (синхронно).
|
||||
*/
|
||||
private void teleportAllToLobby(GameSession session) {
|
||||
List<BasePlayer> playersToTeleport = new ArrayList<>(session.getPlayers().values());
|
||||
for (BasePlayer bp : session.getPlayers().values()) {
|
||||
Player p = bp.getPlayer();
|
||||
if (p != null && p.isOnline()) {
|
||||
resetPlayerAttributes(p);
|
||||
session.getPlugin().getLobbyManager().teleportToLobby(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Отложенный телепорт в лобби (для красивого перехода из enter).
|
||||
*/
|
||||
private void teleportAllToLobbyDelayed(GameSession session) {
|
||||
List<BasePlayer> playersToTeleport = new ArrayList<>(session.getPlayers().values());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
|
@ -165,7 +177,6 @@ public class EndgamePhase implements Phase {
|
|||
session.getPlugin().getLobbyManager().teleportToLobby(p);
|
||||
}
|
||||
}
|
||||
session.stop();
|
||||
}
|
||||
}.runTaskLater(session.getPlugin(), 60L);
|
||||
}
|
||||
|
|
@ -273,6 +284,7 @@ public class EndgamePhase implements Phase {
|
|||
}
|
||||
|
||||
private void checkWinConditions(GameSession session) {
|
||||
if (complete) return;
|
||||
int survivorsAlive = 0;
|
||||
for (BasePlayer player : session.getPlayers().values()) {
|
||||
if (player.isKiller()) continue;
|
||||
|
|
|
|||
|
|
@ -176,7 +176,6 @@ generator:
|
|||
actionbar: "&c⚡ Разрушение: %d%%"
|
||||
success: "%prefix%&cГенератор поврежден! -%d%% прогресса"
|
||||
broadcast: "%prefix%&4⚡ Маньяк разрушил генератор! -%d%%"
|
||||
complete: "&aГенератор починен!\n%e"
|
||||
all-done: "%prefix%&aВсе генераторы починены! Открывайте ворота!"
|
||||
notification: "&4[DBD] ⚡ Выживший допустил ошибку! Компас укажет на генератор!"
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue