feat: add computers as second objective type

- New: Computer, ComputerManager, ComputerRepair, ComputerHologram, ComputerDataManager
- Config: total-count=2, required-count=2, repair-seconds=90 in game.yml
- Win condition: all generators AND all computers required
- No regression, no ComputerKick, no compass on skill-check fail
- /dbdsetup set computer, /dbdadmin list computer
- Hologram progress display, persistence to data/computers.yml
- LECTERN block right-click cancelled
This commit is contained in:
loki5512344 2026-06-21 13:37:37 +02:00
parent 4482b3a0ea
commit c31ea425db
21 changed files with 1049 additions and 39 deletions

View file

@ -58,6 +58,7 @@ public class DBDAdminCommand implements TabExecutor {
if (args.length >= 2) {
return switch (args[1].toLowerCase()) {
case "generator" -> listType(player, "Генераторы", locations.getGenerators());
case "computer" -> listType(player, "Компьютеры", plugin.getComputerData().getComputers());
case "hook" -> listType(player, "Крюки", locations.getHooks());
case "chest" -> listType(player, "Сундуки", locations.getChests());
case "killer-spawn", "killerspawn" -> listType(player, "Спавн киллера", locations.getKillerSpawns());
@ -73,6 +74,7 @@ public class DBDAdminCommand implements TabExecutor {
player.sendMessage(plugin.getConfigManager().getMessages().get("dbdadmin-list.header"));
listType(player, "Генераторы", locations.getGenerators());
listType(player, "Компьютеры", plugin.getComputerData().getComputers());
listType(player, "Крюки", locations.getHooks());
listType(player, "Сундуки", locations.getChests());
listType(player, "Спавн киллера", locations.getKillerSpawns());
@ -174,7 +176,7 @@ public class DBDAdminCommand implements TabExecutor {
}
if (args.length == 2 && args[0].equalsIgnoreCase("list")) {
return Arrays.asList("generator", "hook", "chest", "killer-spawn", "survivor-spawn").stream()
return Arrays.asList("generator", "computer", "hook", "chest", "killer-spawn", "survivor-spawn").stream()
.filter(s -> s.startsWith(args[1].toLowerCase()))
.toList();
}