feat: 完成 Paper 26.1 适配并整理配置结构

This commit is contained in:
2026-04-24 04:37:57 +08:00
parent 33ca8abd2a
commit 00aa10a44e
39 changed files with 2345 additions and 849 deletions
@@ -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;
}
}