Connect game phases, implement gameplay, add lobby commands, remove perks
- Fix GameSession.determineNextPhase() to cycle through all 4 phases - Implement GameplayPhase with generator tracking and win/lose conditions - MapBuilder now uses the game world instead of the first world - Add /dbd lobby (teleport to lobby) and /dbd setlobby (set lobby spawn) - Remove all perk classes (IPerk, PerkRegistry, 7 perk implementations) - Fix HexTotem to not reference removed HexRuinPerk
This commit is contained in:
parent
34e0aebd5d
commit
d0ed8a5fe7
18 changed files with 132 additions and 808 deletions
|
|
@ -41,6 +41,8 @@ public class DBDCommand implements TabExecutor {
|
|||
case "create" -> handleCreate(sender);
|
||||
case "stop" -> handleStop(sender);
|
||||
case "reload" -> handleReload(sender);
|
||||
case "lobby" -> handleLobby(sender);
|
||||
case "setlobby" -> handleSetLobby(sender);
|
||||
default -> {
|
||||
sendUsage(sender);
|
||||
yield true;
|
||||
|
|
@ -116,6 +118,32 @@ public class DBDCommand implements TabExecutor {
|
|||
return true;
|
||||
}
|
||||
|
||||
private boolean handleLobby(CommandSender sender) {
|
||||
if (!(sender instanceof Player player)) {
|
||||
sender.sendMessage(Component.text("Только игроки!", NamedTextColor.RED));
|
||||
return true;
|
||||
}
|
||||
plugin.getLobbyManager().teleportToLobby(player);
|
||||
player.sendMessage(Component.text("[DBD] Вы телепортированы в лобби!", NamedTextColor.GREEN));
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean handleSetLobby(CommandSender sender) {
|
||||
if (!sender.hasPermission("mdbd.admin")) {
|
||||
sender.sendMessage(Component.text("Нет прав!", NamedTextColor.RED));
|
||||
return true;
|
||||
}
|
||||
if (!(sender instanceof Player player)) {
|
||||
sender.sendMessage(Component.text("Только игроки!", NamedTextColor.RED));
|
||||
return true;
|
||||
}
|
||||
plugin.getConfigManager().getLocations().setLobby(player.getLocation());
|
||||
plugin.getConfigManager().saveConfig("locations.yml",
|
||||
plugin.getConfigManager().getLocations().getConfig());
|
||||
player.sendMessage(Component.text("[DBD] Лобби установлено!", NamedTextColor.GREEN));
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean handleStop(CommandSender sender) {
|
||||
if (!sender.hasPermission("mdbd.admin")) {
|
||||
sender.sendMessage(Component.text("Нет прав!", NamedTextColor.RED));
|
||||
|
|
@ -130,11 +158,14 @@ public class DBDCommand implements TabExecutor {
|
|||
sender.sendMessage(Component.text("=== DBD Commands ===", NamedTextColor.GOLD));
|
||||
sender.sendMessage(Component.text("/dbd join - присоединиться", NamedTextColor.GRAY));
|
||||
sender.sendMessage(Component.text("/dbd leave - покинуть", NamedTextColor.GRAY));
|
||||
sender.sendMessage(Component.text("/dbd lobby - телепорт в лобби", NamedTextColor.GRAY));
|
||||
if (sender.hasPermission("mdbd.admin")) {
|
||||
sender.sendMessage(Component.text("/dbd create - создать игру", NamedTextColor.GRAY));
|
||||
sender.sendMessage(Component.text("/dbd forcestart - форс старт", NamedTextColor.GRAY));
|
||||
sender.sendMessage(Component.text("/dbd stop - остановить", NamedTextColor.GRAY));
|
||||
sender.sendMessage(Component.text("/dbd reload - перезагрузить конфиги", NamedTextColor.GRAY));
|
||||
sender.sendMessage(Component.text("/dbd lobby - телепорт в лобби", NamedTextColor.GRAY));
|
||||
sender.sendMessage(Component.text("/dbd setlobby - установить точку лобби", NamedTextColor.GRAY));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -144,7 +175,7 @@ public class DBDCommand implements TabExecutor {
|
|||
if (args.length == 1) {
|
||||
List<String> completions = new ArrayList<>(Arrays.asList("join", "leave"));
|
||||
if (sender.hasPermission("mdbd.admin")) {
|
||||
completions.addAll(Arrays.asList("create", "forcestart", "stop", "reload"));
|
||||
completions.addAll(Arrays.asList("create", "forcestart", "stop", "reload", "setlobby"));
|
||||
}
|
||||
return completions.stream()
|
||||
.filter(s -> s.startsWith(args[0].toLowerCase()))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue