feat: 完成 Paper 26.1 适配并整理配置结构
This commit is contained in:
@@ -2,12 +2,14 @@ package cn.infstar.essentialsC.commands;
|
||||
|
||||
import cn.infstar.essentialsC.EssentialsC;
|
||||
import cn.infstar.essentialsC.LangManager;
|
||||
import cn.infstar.essentialsC.tpsbar.TpsBarService;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -27,15 +29,19 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
protected boolean executeConsole(CommandSender sender, String[] args) {
|
||||
if (args.length > 0 && args[0].equalsIgnoreCase("reload")) {
|
||||
if (!sender.hasPermission("essentialsc.command.reload")) {
|
||||
sender.sendMessage(getLang().getString("messages.no-permission"));
|
||||
sendNoPermission(sender, "essentialsc.command.reload");
|
||||
return true;
|
||||
}
|
||||
plugin.reloadConfig();
|
||||
EssentialsC.getLangManager().reload();
|
||||
sender.sendMessage(getLang().getString("prefix") + "Configuration reloaded.");
|
||||
TpsBarService tpsBarService = plugin.getTpsBarManager();
|
||||
if (tpsBarService != null) {
|
||||
tpsBarService.reloadSettings();
|
||||
}
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.config-reloaded"));
|
||||
return true;
|
||||
}
|
||||
sender.sendMessage(getLang().getString("messages.player-only"));
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.player-only"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -45,12 +51,16 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
|
||||
if (subCommand.equals("reload")) {
|
||||
if (!sender.hasPermission("essentialsc.command.reload")) {
|
||||
sender.sendMessage(getLang().getString("messages.no-permission"));
|
||||
sendNoPermission(sender, "essentialsc.command.reload");
|
||||
return true;
|
||||
}
|
||||
plugin.reloadConfig();
|
||||
EssentialsC.getLangManager().reload();
|
||||
sender.sendMessage(getLang().getString("prefix") + "Configuration reloaded.");
|
||||
TpsBarService tpsBarService = plugin.getTpsBarManager();
|
||||
if (tpsBarService != null) {
|
||||
tpsBarService.reloadSettings();
|
||||
}
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.config-reloaded"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -59,39 +69,38 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
if (actualCommand != null && targetCommand != null) {
|
||||
String permission = CommandRegistry.getPermission(actualCommand);
|
||||
if (permission != null && !player.hasPermission(permission)) {
|
||||
player.sendMessage(getLang().getString("messages.no-permission"));
|
||||
sendNoPermission(player, permission);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (actualCommand.equals("seen")) {
|
||||
if (args.length < 2) {
|
||||
player.sendMessage(getLang().getString("prefix") + getLang().getString("messages.seen-usage-console"));
|
||||
String[] forwardedArgs = Arrays.copyOfRange(args, 1, args.length);
|
||||
if (actualCommand.equals("seen") && forwardedArgs.length == 0) {
|
||||
player.sendMessage(getLang().getPrefixedString("messages.seen-usage-console"));
|
||||
return true;
|
||||
}
|
||||
targetCommand.execute(player, new String[]{args[1]});
|
||||
} else {
|
||||
targetCommand.execute(player, new String[0]);
|
||||
}
|
||||
targetCommand.execute(player, forwardedArgs);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (subCommand.equals("version") || subCommand.equals("v")) {
|
||||
player.sendMessage(getLang().getString("prefix") + "EssentialsC v" + plugin.getDescription().getVersion());
|
||||
player.sendMessage(getLang().getString("prefix") + "Running on Paper " + Bukkit.getVersion());
|
||||
player.sendMessage(getLang().getPrefixedString("messages.version",
|
||||
Map.of("version", plugin.getDescription().getVersion())));
|
||||
player.sendMessage(getLang().getPrefixedString("messages.paper-version",
|
||||
Map.of("version", Bukkit.getVersion())));
|
||||
return true;
|
||||
}
|
||||
|
||||
player.sendMessage(getLang().getString("prefix") + getLang().getString("messages.unknown-subcommand",
|
||||
player.sendMessage(getLang().getPrefixedString("messages.unknown-subcommand",
|
||||
Map.of("command", subCommand)));
|
||||
player.sendMessage(getLang().getString("prefix") + getLang().getString("messages.help-usage"));
|
||||
player.sendMessage(getLang().getPrefixedString("messages.help-usage"));
|
||||
return true;
|
||||
}
|
||||
|
||||
LangManager lang = getLang();
|
||||
String version = plugin.getDescription().getVersion();
|
||||
|
||||
player.sendMessage(lang.getString("help.title"));
|
||||
player.sendMessage(lang.getString("help.version", Map.of("version", version)));
|
||||
sendPrefixed(player, lang.getString("help.title"));
|
||||
sendPrefixed(player, lang.getString("help.version", Map.of("version", version)));
|
||||
player.sendMessage("");
|
||||
|
||||
boolean hasBlockCommands = false;
|
||||
@@ -131,8 +140,8 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
}
|
||||
|
||||
if (hasBlockCommands) {
|
||||
player.sendMessage(lang.getString("help.section-blocks"));
|
||||
player.sendMessage(blockCommands.toString().trim());
|
||||
sendPrefixed(player, lang.getString("help.section-blocks"));
|
||||
sendPrefixedLines(player, blockCommands.toString().trim());
|
||||
player.sendMessage("");
|
||||
}
|
||||
|
||||
@@ -151,6 +160,14 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
otherCommands.append(lang.getString("help.commands.fly")).append("\n");
|
||||
hasOtherCommands = true;
|
||||
}
|
||||
if (CommandRegistry.isAvailable("nightvision") && player.hasPermission("essentialsc.command.nightvision")) {
|
||||
otherCommands.append(lang.getString("help.commands.nightvision")).append("\n");
|
||||
hasOtherCommands = true;
|
||||
}
|
||||
if (CommandRegistry.isAvailable("glow") && player.hasPermission("essentialsc.command.glow")) {
|
||||
otherCommands.append(lang.getString("help.commands.glow")).append("\n");
|
||||
hasOtherCommands = true;
|
||||
}
|
||||
if (CommandRegistry.isAvailable("heal") && player.hasPermission("essentialsc.command.heal")) {
|
||||
otherCommands.append(lang.getString("help.commands.heal")).append("\n");
|
||||
hasOtherCommands = true;
|
||||
@@ -163,17 +180,40 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
otherCommands.append(lang.getString("help.commands.seen")).append("\n");
|
||||
hasOtherCommands = true;
|
||||
}
|
||||
if (CommandRegistry.isAvailable("admin") && player.hasPermission("essentialsc.command.admin")) {
|
||||
otherCommands.append(lang.getString("help.commands.admin")).append("\n");
|
||||
hasOtherCommands = true;
|
||||
}
|
||||
if (CommandRegistry.isAvailable("tpsbar") && player.hasPermission("essentialsc.command.tpsbar")) {
|
||||
otherCommands.append(lang.getString("help.commands.tpsbar")).append("\n");
|
||||
hasOtherCommands = true;
|
||||
}
|
||||
|
||||
if (hasOtherCommands) {
|
||||
player.sendMessage(lang.getString("help.section-other"));
|
||||
player.sendMessage(otherCommands.toString().trim());
|
||||
sendPrefixed(player, lang.getString("help.section-other"));
|
||||
sendPrefixedLines(player, otherCommands.toString().trim());
|
||||
player.sendMessage("");
|
||||
}
|
||||
|
||||
player.sendMessage(lang.getString("help.footer"));
|
||||
sendPrefixed(player, lang.getString("help.footer"));
|
||||
return true;
|
||||
}
|
||||
|
||||
private void sendNoPermission(CommandSender sender, String permission) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.no-permission",
|
||||
Map.of("permission", permission)));
|
||||
}
|
||||
|
||||
private void sendPrefixed(CommandSender sender, String message) {
|
||||
sender.sendMessage(message);
|
||||
}
|
||||
|
||||
private void sendPrefixedLines(CommandSender sender, String message) {
|
||||
for (String line : message.split("\\R")) {
|
||||
sendPrefixed(sender, line);
|
||||
}
|
||||
}
|
||||
|
||||
private String getActualCommand(String alias) {
|
||||
return CommandRegistry.resolveCommandName(alias);
|
||||
}
|
||||
@@ -207,6 +247,9 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
{"suicide", "essentialsc.command.suicide"},
|
||||
{"die", "essentialsc.command.suicide"},
|
||||
{"fly", "essentialsc.command.fly"},
|
||||
{"nightvision", "essentialsc.command.nightvision"},
|
||||
{"nv", "essentialsc.command.nightvision"},
|
||||
{"glow", "essentialsc.command.glow"},
|
||||
{"heal", "essentialsc.command.heal"},
|
||||
{"vanish", "essentialsc.command.vanish"},
|
||||
{"v", "essentialsc.command.vanish"},
|
||||
@@ -215,7 +258,9 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
{"feed", "essentialsc.command.feed"},
|
||||
{"repair", "essentialsc.command.repair"},
|
||||
{"rep", "essentialsc.command.repair"},
|
||||
{"tpsbar", "essentialsc.command.tpsbar"},
|
||||
{"mobdrops", "essentialsc.mobdrops.enderman"},
|
||||
{"admin", "essentialsc.command.admin"},
|
||||
{"version", null},
|
||||
{"help", null}
|
||||
};
|
||||
@@ -247,8 +292,38 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
}
|
||||
return players;
|
||||
}
|
||||
|
||||
if ((subCmd.equals("nightvision") || subCmd.equals("nv")) && sender.hasPermission("essentialsc.command.nightvision")) {
|
||||
return completeToggleArgs(args[1]);
|
||||
}
|
||||
|
||||
if (subCmd.equals("glow") && sender.hasPermission("essentialsc.command.glow")) {
|
||||
return completeToggleArgs(args[1]);
|
||||
}
|
||||
|
||||
if (subCmd.equals("tpsbar") && sender.hasPermission("essentialsc.command.tpsbar.others")) {
|
||||
List<String> players = new ArrayList<>();
|
||||
String partial = args[1].toLowerCase();
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
if (p.getName().toLowerCase().startsWith(partial)) {
|
||||
players.add(p.getName());
|
||||
}
|
||||
}
|
||||
return players;
|
||||
}
|
||||
}
|
||||
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
private List<String> completeToggleArgs(String partialInput) {
|
||||
List<String> completions = new ArrayList<>();
|
||||
String partial = partialInput.toLowerCase();
|
||||
for (String option : List.of("on", "off", "toggle")) {
|
||||
if (option.startsWith(partial)) {
|
||||
completions.add(option);
|
||||
}
|
||||
}
|
||||
return completions;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user