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 restoreProgress() { progress = savedProgress; }
|
||||||
|
|
||||||
public void reset() {
|
public void reset() {
|
||||||
removeGateBlock();
|
|
||||||
this.state = GateState.CLOSED;
|
this.state = GateState.CLOSED;
|
||||||
this.progress = 0.0;
|
this.progress = 0.0;
|
||||||
this.savedProgress = 0.0;
|
this.savedProgress = 0.0;
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ public class EndgamePhase implements Phase {
|
||||||
this.complete = true;
|
this.complete = true;
|
||||||
// Показываем результаты и телепортируем всех в лобби
|
// Показываем результаты и телепортируем всех в лобби
|
||||||
announceEndgameEnd(session);
|
announceEndgameEnd(session);
|
||||||
teleportAllToLobby(session);
|
teleportAllToLobbyDelayed(session);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -84,7 +84,7 @@ public class EndgamePhase implements Phase {
|
||||||
if (gateManager != null && gateManager.getOpenGateCount() > 0) {
|
if (gateManager != null && gateManager.getOpenGateCount() > 0) {
|
||||||
this.complete = true;
|
this.complete = true;
|
||||||
announceEndgameEnd(session);
|
announceEndgameEnd(session);
|
||||||
teleportAllToLobby(session);
|
teleportAllToLobbyDelayed(session);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -150,11 +150,23 @@ public class EndgamePhase implements Phase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Телепортирует всех игроков в лобби, сбрасывает атрибуты и останавливает сессию.
|
* Телепортирует всех игроков в лобби и сбрасывает атрибуты (синхронно).
|
||||||
*/
|
*/
|
||||||
private void teleportAllToLobby(GameSession session) {
|
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() {
|
new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
@ -165,7 +177,6 @@ public class EndgamePhase implements Phase {
|
||||||
session.getPlugin().getLobbyManager().teleportToLobby(p);
|
session.getPlugin().getLobbyManager().teleportToLobby(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
session.stop();
|
|
||||||
}
|
}
|
||||||
}.runTaskLater(session.getPlugin(), 60L);
|
}.runTaskLater(session.getPlugin(), 60L);
|
||||||
}
|
}
|
||||||
|
|
@ -273,6 +284,7 @@ public class EndgamePhase implements Phase {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkWinConditions(GameSession session) {
|
private void checkWinConditions(GameSession session) {
|
||||||
|
if (complete) return;
|
||||||
int survivorsAlive = 0;
|
int survivorsAlive = 0;
|
||||||
for (BasePlayer player : session.getPlayers().values()) {
|
for (BasePlayer player : session.getPlayers().values()) {
|
||||||
if (player.isKiller()) continue;
|
if (player.isKiller()) continue;
|
||||||
|
|
|
||||||
|
|
@ -176,7 +176,6 @@ generator:
|
||||||
actionbar: "&c⚡ Разрушение: %d%%"
|
actionbar: "&c⚡ Разрушение: %d%%"
|
||||||
success: "%prefix%&cГенератор поврежден! -%d%% прогресса"
|
success: "%prefix%&cГенератор поврежден! -%d%% прогресса"
|
||||||
broadcast: "%prefix%&4⚡ Маньяк разрушил генератор! -%d%%"
|
broadcast: "%prefix%&4⚡ Маньяк разрушил генератор! -%d%%"
|
||||||
complete: "&aГенератор починен!\n%e"
|
|
||||||
all-done: "%prefix%&aВсе генераторы починены! Открывайте ворота!"
|
all-done: "%prefix%&aВсе генераторы починены! Открывайте ворота!"
|
||||||
notification: "&4[DBD] ⚡ Выживший допустил ошибку! Компас укажет на генератор!"
|
notification: "&4[DBD] ⚡ Выживший допустил ошибку! Компас укажет на генератор!"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue