v1.5.0: Добавлены кастомные команды, алиасы, цвета чата, многоядерная сборка
- Система кастомных команд с алиасами (custom-commands.yml) - Команда /chatcolor для установки цвета сообщений - Исправлена ошибка с legacy кодами в PM - Настройки объявлений (title, actionbar) - Автообновление конфигов - Отображение префикса над игроком - Многоядерная сборка Gradle - Добавлены алиасы для команд (русские и английские) - Права на использование цветовых кодов
This commit is contained in:
parent
dfc1c901ab
commit
f52bd29e7d
17 changed files with 808 additions and 33 deletions
|
|
@ -1,6 +1,7 @@
|
|||
package com.loki.lochat.commands;
|
||||
|
||||
import com.loki.lochat.LoChat;
|
||||
import com.loki.lochat.utils.ChatFormatter;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
|
@ -8,6 +9,7 @@ import org.bukkit.command.TabCompleter;
|
|||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class LoChatCommand implements CommandExecutor, TabCompleter {
|
||||
|
|
@ -21,35 +23,75 @@ public class LoChatCommand implements CommandExecutor, TabCompleter {
|
|||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
|
||||
@NotNull String label, @NotNull String[] args) {
|
||||
if (!sender.hasPermission("lochat.admin")) {
|
||||
sender.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getNoPermission()));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args.length == 0) {
|
||||
sender.sendMessage("§e=== LoChat v" + plugin.getDescription().getVersion() + " ===");
|
||||
sender.sendMessage("§e/lochat reload §7— перезагрузить конфиги");
|
||||
sender.sendMessage(ChatFormatter.parse("<gold>LoChat v" + plugin.getDescription().getVersion() + "</gold>"));
|
||||
sender.sendMessage(ChatFormatter.parse("<gray>Команды:</gray>"));
|
||||
sender.sendMessage(ChatFormatter.parse("<yellow>/lochat reload</yellow> - Перезагрузить конфиги"));
|
||||
sender.sendMessage(ChatFormatter.parse("<yellow>/lochat commands</yellow> - Список кастомных команд"));
|
||||
sender.sendMessage(ChatFormatter.parse("<yellow>/lochat commands reload</yellow> - Перезагрузить кастомные команды"));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args[0].equalsIgnoreCase("reload")) {
|
||||
if (!sender.hasPermission("lochat.admin")) {
|
||||
sender.sendMessage(plugin.getMessageConfig().get("errors.no-permission"));
|
||||
return true;
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "reload" -> {
|
||||
plugin.reload();
|
||||
sender.sendMessage(ChatFormatter.parse("<green>Конфигурация перезагружена!</green>"));
|
||||
}
|
||||
|
||||
plugin.reload();
|
||||
sender.sendMessage("§aLoChat перезагружен!");
|
||||
return true;
|
||||
case "commands" -> {
|
||||
if (args.length > 1 && args[1].equalsIgnoreCase("reload")) {
|
||||
plugin.getCustomCommandManager().reload();
|
||||
sender.sendMessage(ChatFormatter.parse("<green>Кастомные команды перезагружены!</green>"));
|
||||
} else {
|
||||
var commands = plugin.getCustomCommandManager().getCommands();
|
||||
sender.sendMessage(ChatFormatter.parse("<gold>Кастомные команды (" + commands.size() + "):</gold>"));
|
||||
for (var cmd : commands.values()) {
|
||||
sender.sendMessage(ChatFormatter.parse("<yellow>/" + cmd.name + "</yellow> <gray>(" + cmd.type + ")</gray>"));
|
||||
if (!cmd.aliases.isEmpty()) {
|
||||
sender.sendMessage(ChatFormatter.parse("<gray> Алиасы: " + String.join(", ", cmd.aliases) + "</gray>"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
default -> sender.sendMessage(ChatFormatter.parse("<red>Неизвестная команда. Используйте /lochat для помощи.</red>"));
|
||||
}
|
||||
|
||||
sender.sendMessage("§cНеизвестная команда. Используй /lochat reload");
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command,
|
||||
@NotNull String alias, @NotNull String[] args) {
|
||||
if (args.length == 1 && sender.hasPermission("lochat.admin")) {
|
||||
return List.of("reload").stream()
|
||||
.filter(s -> s.startsWith(args[0].toLowerCase()))
|
||||
.toList();
|
||||
if (!sender.hasPermission("lochat.admin")) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return List.of();
|
||||
|
||||
if (args.length == 1) {
|
||||
List<String> completions = new ArrayList<>();
|
||||
String input = args[0].toLowerCase();
|
||||
|
||||
for (String cmd : List.of("reload", "commands")) {
|
||||
if (cmd.startsWith(input)) {
|
||||
completions.add(cmd);
|
||||
}
|
||||
}
|
||||
return completions;
|
||||
}
|
||||
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("commands")) {
|
||||
List<String> completions = new ArrayList<>();
|
||||
String input = args[1].toLowerCase();
|
||||
|
||||
if ("reload".startsWith(input)) {
|
||||
completions.add("reload");
|
||||
}
|
||||
return completions;
|
||||
}
|
||||
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue