fix: colors, /dbd join flow, world creation, role assign, action bar lobby, /dbdadmin world, tab complete
This commit is contained in:
parent
327ad9b906
commit
1adb8c84fd
19 changed files with 874 additions and 112 deletions
|
|
@ -2,6 +2,7 @@ package dev.loki.command;
|
|||
|
||||
import dev.loki.data.GeneratorDataManager;
|
||||
import dev.loki.mdbd;
|
||||
import dev.loki.util.TextUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
|
|
@ -43,7 +44,7 @@ public class DBDAdminCommand implements TabExecutor {
|
|||
Player p = Bukkit.getPlayer(uuid);
|
||||
if (p != null && p.isOnline()) {
|
||||
p.sendActionBar(mm.deserialize(
|
||||
"&#FFA500⚒ Режим установки: �FF00сломайте блок для генератора &#FFA500⚒"));
|
||||
"<#FFA500>⚒ Режим установки: <#00FF00>сломайте блок для генератора <#FFA500>⚒"));
|
||||
}
|
||||
}
|
||||
}, 0L, 20L);
|
||||
|
|
@ -72,6 +73,7 @@ public class DBDAdminCommand implements TabExecutor {
|
|||
case "list" -> handleList(player);
|
||||
case "remove" -> handleRemove(player, args);
|
||||
case "clear" -> handleClear(player);
|
||||
case "world" -> handleWorld(player, args);
|
||||
default -> {
|
||||
sendUsage(sender);
|
||||
yield true;
|
||||
|
|
@ -82,7 +84,7 @@ public class DBDAdminCommand implements TabExecutor {
|
|||
@SuppressWarnings("UnreachableBranchError")
|
||||
private boolean handleCreate(Player player, String[] args) {
|
||||
if (args.length < 2) {
|
||||
player.sendMessage(Component.text("&#FF0000Использование: /dbdadmin create <generator>"));
|
||||
player.sendMessage(TextUtil.color("<#FF0000>Использование: /dbdadmin create <generator>"));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -91,18 +93,18 @@ public class DBDAdminCommand implements TabExecutor {
|
|||
case "generator" -> {
|
||||
if (selectingGenerator.contains(player.getUniqueId())) {
|
||||
selectingGenerator.remove(player.getUniqueId());
|
||||
player.sendMessage(Component.text("&#FFA500Режим выбора генератора отключен"));
|
||||
player.sendMessage(TextUtil.color("<#FFA500>Режим выбора генератора отключен"));
|
||||
} else {
|
||||
selectingGenerator.add(player.getUniqueId());
|
||||
player.sendMessage(Component.text("�FF00Режим выбора генератора включен!"));
|
||||
player.sendMessage(Component.text("&#FFD700Сломайте блок, чтобы установить генератор"));
|
||||
player.sendMessage(Component.text("&#FFD700(блок не сломается, а сохранятся его координаты)"));
|
||||
player.sendMessage(Component.text("&#FFA500Введите /dbdadmin create generator снова, чтобы отключить режим"));
|
||||
player.sendMessage(TextUtil.color("<#00FF00>Режим выбора генератора включен!"));
|
||||
player.sendMessage(TextUtil.color("<#FFD700>Сломайте блок, чтобы установить генератор"));
|
||||
player.sendMessage(TextUtil.color("<#FFD700>(блок не сломается, а сохранятся его координаты)"));
|
||||
player.sendMessage(TextUtil.color("<#FFA500>Введите /dbdadmin create generator снова, чтобы отключить режим"));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
default -> {
|
||||
player.sendMessage(Component.text("&#FF0000Неизвестный тип: " + type));
|
||||
player.sendMessage(TextUtil.color("<#FF0000>Неизвестный тип: " + type));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -110,12 +112,12 @@ public class DBDAdminCommand implements TabExecutor {
|
|||
|
||||
private boolean handleList(Player player) {
|
||||
var entries = generatorData.getGeneratorEntries();
|
||||
player.sendMessage(Component.text("&#FFD700=== Генераторы (" + entries.size() + ") ==="));
|
||||
player.sendMessage(TextUtil.color("<#FFD700>=== Генераторы (" + entries.size() + ") ==="));
|
||||
if (entries.isEmpty()) {
|
||||
player.sendMessage(Component.text("󅑀Нет установленных генераторов"));
|
||||
player.sendMessage(TextUtil.color("<#808000>Нет установленных генераторов"));
|
||||
} else {
|
||||
for (int i = 0; i < entries.size(); i++) {
|
||||
player.sendMessage(Component.text("�CED1[" + i + "] " + entries.get(i)));
|
||||
player.sendMessage(TextUtil.color("<#00CED1>[" + i + "] " + entries.get(i)));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
|
@ -123,7 +125,7 @@ public class DBDAdminCommand implements TabExecutor {
|
|||
|
||||
private boolean handleRemove(Player player, String[] args) {
|
||||
if (args.length < 2) {
|
||||
player.sendMessage(Component.text("&#FF0000Использование: /dbdadmin remove <id>"));
|
||||
player.sendMessage(TextUtil.color("<#FF0000>Использование: /dbdadmin remove <id>"));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -131,30 +133,65 @@ public class DBDAdminCommand implements TabExecutor {
|
|||
int id = Integer.parseInt(args[1]);
|
||||
var entries = generatorData.getGeneratorEntries();
|
||||
if (id < 0 || id >= entries.size()) {
|
||||
player.sendMessage(Component.text("&#FF0000Генератор с ID " + id + " не найден"));
|
||||
player.sendMessage(TextUtil.color("<#FF0000>Генератор с ID " + id + " не найден"));
|
||||
return true;
|
||||
}
|
||||
String removed = entries.get(id);
|
||||
generatorData.removeGenerator(id);
|
||||
player.sendMessage(Component.text("�FF00Генератор удален: " + removed));
|
||||
player.sendMessage(TextUtil.color("<#00FF00>Генератор удален: " + removed));
|
||||
} catch (NumberFormatException e) {
|
||||
player.sendMessage(Component.text("&#FF0000ID должен быть числом"));
|
||||
player.sendMessage(TextUtil.color("<#FF0000>ID должен быть числом"));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean handleClear(Player player) {
|
||||
generatorData.clearGenerators();
|
||||
player.sendMessage(Component.text("&#FFA500Все генераторы удалены"));
|
||||
player.sendMessage(TextUtil.color("<#FFA500>Все генераторы удалены"));
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean handleWorld(Player player, String[] args) {
|
||||
if (args.length < 2) {
|
||||
player.sendMessage(TextUtil.color("<#FF0000>Использование: /dbdadmin world <lobby|game|<название мира>>"));
|
||||
return true;
|
||||
}
|
||||
|
||||
String worldArg = args[1].toLowerCase();
|
||||
org.bukkit.World target;
|
||||
|
||||
if (worldArg.equals("lobby")) {
|
||||
target = plugin.getLobbyManager().getLobbyWorld();
|
||||
if (target == null) {
|
||||
player.sendMessage(TextUtil.color("<#FF0000>Мир lobby не загружен!"));
|
||||
return true;
|
||||
}
|
||||
} else if (worldArg.equals("game")) {
|
||||
target = plugin.getLobbyManager().getGameWorld();
|
||||
if (target == null) {
|
||||
player.sendMessage(TextUtil.color("<#FF0000>Мир game не загружен!"));
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
target = org.bukkit.Bukkit.getWorld(args[1]);
|
||||
if (target == null) {
|
||||
player.sendMessage(TextUtil.color("<#FF0000>Мир не найден: " + args[1]));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
player.teleport(target.getSpawnLocation());
|
||||
player.sendMessage(TextUtil.color("<#00FF00>Телепортирован в мир: <#FFD700>" + target.getName()));
|
||||
return true;
|
||||
}
|
||||
|
||||
private void sendUsage(CommandSender sender) {
|
||||
sender.sendMessage(Component.text("&#FF6B00=== DBD Admin ==="));
|
||||
sender.sendMessage(Component.text("&#FFD700/dbdadmin create generator — Режим установки генератора"));
|
||||
sender.sendMessage(Component.text("&#FFD700/dbdadmin list — Список генераторов"));
|
||||
sender.sendMessage(Component.text("&#FFD700/dbdadmin remove <id> — Удалить генератор"));
|
||||
sender.sendMessage(Component.text("&#FFD700/dbdadmin clear — Очистить все генераторы"));
|
||||
sender.sendMessage(TextUtil.color("<#FF6B00>=== DBD Admin ==="));
|
||||
sender.sendMessage(TextUtil.color("<#FFD700>/dbdadmin create generator — Режим установки генератора"));
|
||||
sender.sendMessage(TextUtil.color("<#FFD700>/dbdadmin list — Список генераторов"));
|
||||
sender.sendMessage(TextUtil.color("<#FFD700>/dbdadmin remove <id> — Удалить генератор"));
|
||||
sender.sendMessage(TextUtil.color("<#FFD700>/dbdadmin clear — Очистить все генераторы"));
|
||||
sender.sendMessage(TextUtil.color("<#FFD700>/dbdadmin world <lobby|game|мир> — Телепорт в мир"));
|
||||
}
|
||||
|
||||
public boolean isSelectingGenerator(UUID uuid) {
|
||||
|
|
@ -175,7 +212,7 @@ public class DBDAdminCommand implements TabExecutor {
|
|||
if (!sender.hasPermission("mdbd.admin")) return List.of();
|
||||
|
||||
if (args.length == 1) {
|
||||
return Arrays.asList("create", "list", "remove", "clear").stream()
|
||||
return Arrays.asList("create", "list", "remove", "clear", "world").stream()
|
||||
.filter(s -> s.startsWith(args[0].toLowerCase()))
|
||||
.toList();
|
||||
}
|
||||
|
|
@ -186,6 +223,12 @@ public class DBDAdminCommand implements TabExecutor {
|
|||
.toList();
|
||||
}
|
||||
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("world")) {
|
||||
return Arrays.asList("lobby", "game").stream()
|
||||
.filter(s -> s.startsWith(args[1].toLowerCase()))
|
||||
.toList();
|
||||
}
|
||||
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("remove")) {
|
||||
var entries = generatorData.getGeneratorEntries();
|
||||
List<String> ids = new ArrayList<>();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue