fix: 修复 1.3.0 实机测试问题
This commit is contained in:
@@ -49,12 +49,17 @@ public abstract class BaseCommand implements CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
return dispatch(sender, args);
|
||||
}
|
||||
|
||||
final boolean dispatch(CommandSender sender, String[] args) {
|
||||
if (!sender.hasPermission(permission)) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.no-permission",
|
||||
Map.of("permission", permission)));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (sender instanceof Player player) {
|
||||
if (!player.hasPermission(permission)) {
|
||||
player.sendMessage(getLang().getPrefixedString("messages.no-permission",
|
||||
Map.of("permission", permission)));
|
||||
return true;
|
||||
}
|
||||
return execute(player, args);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.infstar.essentialsC.commands;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Map;
|
||||
@@ -36,6 +37,30 @@ public class FeedCommand extends BaseCommand {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean executeConsole(CommandSender sender, String[] args) {
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.feed-usage-console"));
|
||||
return true;
|
||||
}
|
||||
if (!sender.hasPermission("essentialsc.command.feed.others")) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.no-permission-others"));
|
||||
return true;
|
||||
}
|
||||
|
||||
Player target = Bukkit.getPlayerExact(args[0]);
|
||||
if (target == null) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.player-not-found", Map.of("player", args[0])));
|
||||
return true;
|
||||
}
|
||||
|
||||
feedPlayer(target);
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.feed-other", Map.of("player", target.getName())));
|
||||
target.sendMessage(getLang().getPrefixedString("messages.feed-by-other",
|
||||
Map.of("admin", getLang().getString("messages.console-name"))));
|
||||
return true;
|
||||
}
|
||||
|
||||
private void feedPlayer(Player player) {
|
||||
player.setFoodLevel(20);
|
||||
player.setSaturation(20f);
|
||||
|
||||
@@ -3,6 +3,7 @@ package cn.infstar.essentialsC.commands;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.attribute.AttributeInstance;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Map;
|
||||
@@ -38,6 +39,30 @@ public class HealCommand extends BaseCommand {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean executeConsole(CommandSender sender, String[] args) {
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.heal-usage-console"));
|
||||
return true;
|
||||
}
|
||||
if (!sender.hasPermission("essentialsc.command.heal.others")) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.no-permission-others"));
|
||||
return true;
|
||||
}
|
||||
|
||||
Player target = Bukkit.getPlayerExact(args[0]);
|
||||
if (target == null) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.player-not-found", Map.of("player", args[0])));
|
||||
return true;
|
||||
}
|
||||
|
||||
healPlayer(target);
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.heal-other", Map.of("player", target.getName())));
|
||||
target.sendMessage(getLang().getPrefixedString("messages.heal-by-other",
|
||||
Map.of("admin", getLang().getString("messages.console-name"))));
|
||||
return true;
|
||||
}
|
||||
|
||||
private void healPlayer(Player player) {
|
||||
AttributeInstance maxHealth = player.getAttribute(Attribute.MAX_HEALTH);
|
||||
player.setHealth(maxHealth == null ? player.getHealth() : maxHealth.getValue());
|
||||
|
||||
@@ -38,7 +38,12 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
|
||||
@Override
|
||||
protected boolean executeConsole(CommandSender sender, String[] args) {
|
||||
if (args.length > 0 && args[0].equalsIgnoreCase("reload")) {
|
||||
if (args.length == 0 || args[0].equalsIgnoreCase("help")) {
|
||||
sendConsoleHelp(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args[0].equalsIgnoreCase("reload")) {
|
||||
if (!sender.hasPermission("essentialsc.command.reload")) {
|
||||
sendNoPermission(sender, "essentialsc.command.reload");
|
||||
return true;
|
||||
@@ -51,10 +56,62 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.config-reloaded"));
|
||||
return true;
|
||||
}
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.player-only"));
|
||||
|
||||
if (args[0].equalsIgnoreCase("version") || args[0].equalsIgnoreCase("v")) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.version",
|
||||
Map.of("version", plugin.getPluginMeta().getVersion())));
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.paper-version",
|
||||
Map.of("version", Bukkit.getVersion())));
|
||||
return true;
|
||||
}
|
||||
|
||||
String actualCommand = getActualCommand(args[0]);
|
||||
BaseCommand targetCommand = CommandRegistry.getCommand(actualCommand);
|
||||
if (actualCommand != null && targetCommand != null) {
|
||||
return targetCommand.dispatch(sender, Arrays.copyOfRange(args, 1, args.length));
|
||||
}
|
||||
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.unknown-subcommand",
|
||||
Map.of("command", args[0])));
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.help-usage"));
|
||||
return true;
|
||||
}
|
||||
|
||||
private void sendConsoleHelp(CommandSender sender) {
|
||||
LangManager lang = getLang();
|
||||
sendPrefixed(sender, lang.getString("help.title"));
|
||||
sendPrefixed(sender, lang.getString("help.version",
|
||||
Map.of("version", plugin.getPluginMeta().getVersion())));
|
||||
sender.sendMessage("");
|
||||
|
||||
sendPrefixed(sender, lang.getString("help.section-other"));
|
||||
if (sender.hasPermission("essentialsc.command.reload")) {
|
||||
sendPrefixed(sender, lang.getString("help.commands.reload"));
|
||||
}
|
||||
sendPrefixed(sender, lang.getString("help.commands.version"));
|
||||
if (CommandRegistry.isAvailable("seen") && sender.hasPermission("essentialsc.command.seen")) {
|
||||
sendPrefixed(sender, lang.getString("help.commands.seen"));
|
||||
}
|
||||
if (CommandRegistry.isAvailable("heal") && sender.hasPermission("essentialsc.command.heal")) {
|
||||
sendPrefixed(sender, lang.getString("help.commands.heal"));
|
||||
}
|
||||
if (CommandRegistry.isAvailable("feed") && sender.hasPermission("essentialsc.command.feed")) {
|
||||
sendPrefixed(sender, lang.getString("help.commands.feed"));
|
||||
}
|
||||
if (CommandRegistry.isAvailable("skin") && sender.hasPermission("essentialsc.command.skin")) {
|
||||
sendPrefixed(sender, lang.getString("help.commands.skin"));
|
||||
}
|
||||
if (CommandRegistry.isAvailable("tpsbar") && sender.hasPermission("essentialsc.command.tpsbar")) {
|
||||
sendPrefixed(sender, lang.getString("help.commands.tpsbar"));
|
||||
}
|
||||
if (CommandRegistry.isAvailable("maintenance")
|
||||
&& sender.hasPermission("essentialsc.command.maintenance")) {
|
||||
sendPrefixed(sender, lang.getString("help.commands.maintenance"));
|
||||
}
|
||||
sender.sendMessage("");
|
||||
sendPrefixed(sender, lang.getString("help.footer"));
|
||||
}
|
||||
|
||||
private boolean handleCommand(CommandSender sender, Player player, String[] args) {
|
||||
if (args.length > 0) {
|
||||
String subCommand = args[0].toLowerCase();
|
||||
@@ -246,7 +303,7 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
}
|
||||
|
||||
private void sendPrefixed(CommandSender sender, String message) {
|
||||
sender.sendMessage(message);
|
||||
sender.sendMessage(getLang().getPrefix() + message);
|
||||
}
|
||||
|
||||
private void sendPrefixedLines(CommandSender sender, String message) {
|
||||
|
||||
@@ -2,6 +2,7 @@ package cn.infstar.essentialsC.commands;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
@@ -16,45 +17,56 @@ public class SeenCommand extends BaseCommand {
|
||||
|
||||
@Override
|
||||
protected boolean execute(Player player, String[] args) {
|
||||
return executeCommand(player, player, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean executeConsole(CommandSender sender, String[] args) {
|
||||
return executeCommand(sender, null, args);
|
||||
}
|
||||
|
||||
private boolean executeCommand(CommandSender sender, Player viewer, String[] args) {
|
||||
if (args.length == 0) {
|
||||
player.sendMessage(getLang().getPrefixedString("messages.seen-usage"));
|
||||
sender.sendMessage(getLang().getPrefixedString(viewer == null
|
||||
? "messages.seen-usage-console"
|
||||
: "messages.seen-usage"));
|
||||
return true;
|
||||
}
|
||||
|
||||
Player onlineTarget = Bukkit.getPlayerExact(args[0]);
|
||||
if (onlineTarget != null && VanishCommand.isVanished(onlineTarget)
|
||||
&& !player.hasPermission(VanishCommand.SEE_PERMISSION)) {
|
||||
player.sendMessage(getLang().getPrefixedString("messages.player-not-found", Map.of("player", args[0])));
|
||||
&& viewer != null && !viewer.hasPermission(VanishCommand.SEE_PERMISSION)) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.player-not-found", Map.of("player", args[0])));
|
||||
return true;
|
||||
}
|
||||
|
||||
OfflinePlayer target = Bukkit.getOfflinePlayer(args[0]);
|
||||
if (!target.hasPlayedBefore() && !target.isOnline()) {
|
||||
player.sendMessage(getLang().getPrefixedString("messages.player-not-found", Map.of("player", args[0])));
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.player-not-found", Map.of("player", args[0])));
|
||||
return true;
|
||||
}
|
||||
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
player.sendMessage(getLang().getPrefixedComponent("messages.seen-header",
|
||||
sender.sendMessage(getLang().getPrefixedComponent("messages.seen-header",
|
||||
Map.of("player", String.valueOf(target.getName()))));
|
||||
|
||||
if (target.isOnline()) {
|
||||
player.sendMessage(getLang().getComponent("messages.seen-status-online"));
|
||||
sender.sendMessage(getLang().getComponent("messages.seen-status-online"));
|
||||
Player onlinePlayer = target.getPlayer();
|
||||
if (onlinePlayer != null) {
|
||||
player.sendMessage(getLang().getComponent("messages.seen-world",
|
||||
sender.sendMessage(getLang().getComponent("messages.seen-world",
|
||||
Map.of("world", onlinePlayer.getWorld().getName())));
|
||||
}
|
||||
} else {
|
||||
player.sendMessage(getLang().getComponent("messages.seen-status-offline"));
|
||||
sender.sendMessage(getLang().getComponent("messages.seen-status-offline"));
|
||||
long lastSeen = target.getLastSeen();
|
||||
if (lastSeen > 0) {
|
||||
player.sendMessage(getLang().getComponent("messages.seen-last-online",
|
||||
sender.sendMessage(getLang().getComponent("messages.seen-last-online",
|
||||
Map.of("time", format.format(new Date(lastSeen)))));
|
||||
}
|
||||
}
|
||||
|
||||
player.sendMessage(getLang().getComponent("messages.seen-first-joined",
|
||||
sender.sendMessage(getLang().getComponent("messages.seen-first-joined",
|
||||
Map.of("time", format.format(new Date(target.getFirstPlayed())))));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -63,17 +63,37 @@ public class TpsBarCommand extends BaseCommand implements TabCompleter {
|
||||
|
||||
@Override
|
||||
protected boolean executeConsole(CommandSender sender, String[] args) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.player-only"));
|
||||
TpsBarService tpsBarService = plugin.getTpsBarManager();
|
||||
if (tpsBarService == null) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.module-disabled"));
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(tpsBarService.getUsageMessage());
|
||||
return true;
|
||||
}
|
||||
if (!sender.hasPermission("essentialsc.command.tpsbar.others")) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.no-permission",
|
||||
Map.of("permission", "essentialsc.command.tpsbar.others")));
|
||||
return true;
|
||||
}
|
||||
|
||||
Player target = Bukkit.getPlayerExact(args[0]);
|
||||
if (target == null) {
|
||||
sender.sendMessage(tpsBarService.getPlayerNotFoundMessage(args[0]));
|
||||
return true;
|
||||
}
|
||||
|
||||
boolean enabled = tpsBarService.toggle(target);
|
||||
sender.sendMessage(getLang().getPrefixedString(enabled
|
||||
? "tpsbar.messages.enabled-other"
|
||||
: "tpsbar.messages.disabled-other", Map.of("player", target.getName())));
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (args.length != 1 || !(sender instanceof Player player)) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
if (!player.hasPermission("essentialsc.command.tpsbar.others")) {
|
||||
if (args.length != 1 || !sender.hasPermission("essentialsc.command.tpsbar.others")) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user