refactor: generator minigame system (gui + text), fix color codes, holograms, messages, & config

This commit is contained in:
loki5512344 2026-06-14 16:04:25 +02:00
parent 957ab4a5a2
commit 7c7562a8d4
48 changed files with 1628 additions and 733 deletions

View file

@ -3,8 +3,8 @@ package dev.loki.phase;
import dev.loki.config.GameConfig;
import dev.loki.core.GameSession;
import dev.loki.player.BasePlayer;
import dev.loki.config.MessagesConfig;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@ -38,7 +38,8 @@ public class LobbyPhase implements Phase {
if (p != null && p.isOnline()) {
p.setGameMode(org.bukkit.GameMode.ADVENTURE);
lobbyManager.teleportToLobby(p);
p.sendMessage(Component.text("[DBD] Лобби открыто! Ожидание игроков...", NamedTextColor.GREEN));
MessagesConfig messages = session.getPlugin().getConfigManager().getMessages();
p.sendMessage(messages.get("lobby.opened"));
}
}
}
@ -59,9 +60,8 @@ public class LobbyPhase implements Phase {
secondsLeft = config.getCountdown4Players();
tickSub = 0;
lastPlayerCount = playerCount;
sendActionBarToAll(session,
Component.text("⏳ Ожидание игроков: " + playerCount + "/" + minPlayers,
NamedTextColor.YELLOW));
MessagesConfig messages = session.getPlugin().getConfigManager().getMessages();
sendActionBarToAll(session, messages.get("lobby.waiting", playerCount, maxPlayers));
return;
}
@ -74,9 +74,8 @@ public class LobbyPhase implements Phase {
if (secondsLeft > fast) {
secondsLeft = fast;
tickSub = 0;
Bukkit.broadcast(Component.text(
"[DBD] Все игроки вошли! Старт через " + fast + " сек!",
NamedTextColor.GREEN));
MessagesConfig messages = session.getPlugin().getConfigManager().getMessages();
Bukkit.broadcast(messages.get("lobby.all-ready", fast));
}
}
}
@ -91,17 +90,14 @@ public class LobbyPhase implements Phase {
if (secondsLeft == 30 || secondsLeft == 15 || secondsLeft == 10
|| secondsLeft == 5 || secondsLeft == 3
|| secondsLeft == 2 || secondsLeft == 1) {
Bukkit.broadcast(Component.text(
"[DBD] До начала: " + secondsLeft + " сек.",
NamedTextColor.YELLOW));
MessagesConfig messages = session.getPlugin().getConfigManager().getMessages();
Bukkit.broadcast(messages.get("lobby.countdown", secondsLeft));
}
}
// ActionBar всем (на русском, без прогресс-бара)
NamedTextColor barColor = (playerCount >= maxPlayers)
? NamedTextColor.GREEN : NamedTextColor.YELLOW;
sendActionBarToAll(session,
Component.text(">>> Начало через: " + secondsLeft + "с (" + playerCount + "/" + minPlayers + ")", barColor));
MessagesConfig messages = session.getPlugin().getConfigManager().getMessages();
sendActionBarToAll(session, messages.get("lobby.actionbar-waiting", secondsLeft, playerCount, maxPlayers));
if (secondsLeft <= 0) {
started = true;
@ -129,7 +125,8 @@ public class LobbyPhase implements Phase {
Player p = bp.getPlayer();
if (p != null && p.isOnline()) p.sendActionBar(Component.empty());
}
Bukkit.broadcast(Component.text("[DBD] Игра начинается!", NamedTextColor.GREEN));
MessagesConfig messages = session.getPlugin().getConfigManager().getMessages();
Bukkit.broadcast(messages.get("lobby.starting"));
}
@Override
@ -137,11 +134,10 @@ public class LobbyPhase implements Phase {
player.setGameMode(org.bukkit.GameMode.ADVENTURE);
session.getPlugin().getLobbyManager().teleportToLobby(player);
int playerCount = session.getPlayerCount();
int minPlayers = config.getMinPlayers();
int maxPlayers = config.getMaxPlayers();
// Сообщаем только участникам этой сессии, не всему серверу
Component msg = Component.text(
"[DBD] " + player.getName() + " присоединился! (" + playerCount + "/" + minPlayers + ")",
NamedTextColor.YELLOW);
MessagesConfig messages = session.getPlugin().getConfigManager().getMessages();
Component msg = messages.get("lobby.player-joined", player.getName(), playerCount, maxPlayers);
for (BasePlayer bp : session.getPlayers().values()) {
Player p = bp.getPlayer();
if (p != null && p.isOnline()) p.sendMessage(msg);