diff --git a/EssC/essc/pom.xml b/EssC/essc/pom.xml index 76582fa..d979fab 100644 --- a/EssC/essc/pom.xml +++ b/EssC/essc/pom.xml @@ -52,6 +52,12 @@ skinsrestorer https://repo.skinsrestorer.net/repository/maven-public/ + + false + + + false + @@ -189,13 +195,8 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 - ${java.version} - ${project.build.sourceEncoding} - - --enable-preview - + ${maven.compiler.release} diff --git a/EssC/essc/src/main/java/net/godlycow/org/essc/bootstrap/registrar/CommandRegistrar.java b/EssC/essc/src/main/java/net/godlycow/org/essc/bootstrap/registrar/CommandRegistrar.java index cb6734e..f16e652 100644 --- a/EssC/essc/src/main/java/net/godlycow/org/essc/bootstrap/registrar/CommandRegistrar.java +++ b/EssC/essc/src/main/java/net/godlycow/org/essc/bootstrap/registrar/CommandRegistrar.java @@ -132,11 +132,13 @@ private void registerCommands() { register("user", new UserCommand(plugin)); register("suicide", new SuicideCommand(plugin)); register("smite", new SmiteCommand(plugin)); - register("gm", new GamemodeCommand(plugin, "gm")); - register("gms", new GamemodeCommand(plugin, "gms")); - register("gmc", new GamemodeCommand(plugin, "gmc")); - register("gmsp", new GamemodeCommand(plugin, "gmsp")); - register("gma", new GamemodeCommand(plugin, "gma")); + GamemodeCommand gamemodeCommand = new GamemodeCommand(plugin); + register("gm", gamemodeCommand); + register("gamemode", gamemodeCommand); + register("gms", gamemodeCommand); + register("gmc", gamemodeCommand); + register("gmsp", gamemodeCommand); + register("gma", gamemodeCommand); register("stonecutter", new StonecutterCommand(plugin)); register("unban-ip", new UnbanIpCommand(plugin, punishmentManager)); diff --git a/EssC/essc/src/main/java/net/godlycow/org/essc/command/Command.java b/EssC/essc/src/main/java/net/godlycow/org/essc/command/Command.java index e9afd2f..b2737d0 100644 --- a/EssC/essc/src/main/java/net/godlycow/org/essc/command/Command.java +++ b/EssC/essc/src/main/java/net/godlycow/org/essc/command/Command.java @@ -96,7 +96,7 @@ public boolean onCommand(org.bukkit.command.CommandSender sender, org.bukkit.com } try { - return execute(sender, args); + return execute(sender, label, args); } catch (Exception e) { sender.sendMessage(lang.get(sender, "error.internal")); plugin.debug("Exception in " + name + ": " + e.getMessage()); @@ -107,6 +107,10 @@ public boolean onCommand(org.bukkit.command.CommandSender sender, org.bukkit.com public abstract boolean execute(CommandSender sender, String[] args); + public boolean execute(CommandSender sender, String label, String[] args) { + return execute(sender, args); + } + @Override public List onTabComplete(org.bukkit.command.CommandSender sender, org.bukkit.command.Command command, String alias, String[] args) { @@ -115,7 +119,7 @@ public List onTabComplete(org.bukkit.command.CommandSender sender, org.b } if (args.length == 1) { - List base = tabComplete(sender, args); + List base = tabComplete(sender, alias, args); if (base == null) return null; String partial = args[0].toLowerCase(); @@ -127,13 +131,17 @@ public List onTabComplete(org.bukkit.command.CommandSender sender, org.b return base; } - return tabComplete(sender, args); + return tabComplete(sender, alias, args); } public List tabComplete(CommandSender sender, String[] args) { return Collections.emptyList(); } + public List tabComplete(CommandSender sender, String alias, String[] args) { + return tabComplete(sender, args); + } + protected void sendHelp(CommandSender sender, String[] args) { HelpManager helpManager = plugin.getHelpManager(); if (helpManager == null) { diff --git a/EssC/essc/src/main/java/net/godlycow/org/essc/command/admin/GamemodeCommand.java b/EssC/essc/src/main/java/net/godlycow/org/essc/command/admin/GamemodeCommand.java index ad4c5f0..8d55d7e 100644 --- a/EssC/essc/src/main/java/net/godlycow/org/essc/command/admin/GamemodeCommand.java +++ b/EssC/essc/src/main/java/net/godlycow/org/essc/command/admin/GamemodeCommand.java @@ -13,39 +13,27 @@ import java.util.Map; public class GamemodeCommand extends Command { - - private static final Map NAME_TO_MODE = Map.of( - "gms", GameMode.SURVIVAL, - "gmc", GameMode.CREATIVE, - "gmsp", GameMode.SPECTATOR, - "gma", GameMode.ADVENTURE - ); - - private static final Map NAME_TO_PERMISSION = Map.of( - "gm", "essentialsc.gamemode", - "gms", "essentialsc.gamemode.survival", - "gmc", "essentialsc.gamemode.creative", - "gmsp", "essentialsc.gamemode.spectator", - "gma", "essentialsc.gamemode.adventure" - ); - - private final GameMode fixedMode; - - public GamemodeCommand(EssentialsC plugin, String name) { - super(plugin, name, NAME_TO_PERMISSION.get(name), true, 0, "command.usage." + name); - this.fixedMode = NAME_TO_MODE.get(name); + + public GamemodeCommand(EssentialsC plugin) { + super(plugin, "gamemode", null, true, 0, "command.usage.gm"); } @Override public boolean execute(CommandSender sender, String[] args) { - Player player = (Player) sender; + return execute(sender, "gamemode", args); + } + @Override + public boolean execute(CommandSender sender, String label, String[] args) { + Player player = (Player) sender; GameMode targetMode; Player target; + int targetArgIndex; - if (fixedMode != null) { - targetMode = fixedMode; - target = resolveTarget(player, args, 0); + targetMode = getModeFromLabel(label); + + if (targetMode != null) { + targetArgIndex = 0; } else { if (args.length < 1) { sendUsage(sender); @@ -56,14 +44,21 @@ public boolean execute(CommandSender sender, String[] args) { player.sendMessage(lang.get(player, "gamemode.invalid", Map.of("input", args[0]))); return true; } - target = resolveTarget(player, args, 1); + targetArgIndex = 1; + } + + String modePermission = "essentialsc.gamemode." + targetMode.name().toLowerCase(); + if (!player.hasPermission(modePermission) && !player.hasPermission("essentialsc.gamemode")) { + player.sendMessage(lang.get(player, "error.no_permission")); + return true; } + target = resolveTarget(player, args, targetArgIndex); if (target == null) { return true; } - if (target != player && !player.hasPermission(getPermission() + ".others")) { + if (target != player && !player.hasPermission(modePermission + ".others") && !player.hasPermission("essentialsc.gamemode.others")) { player.sendMessage(lang.get(player, "error.no_permission")); return true; } @@ -89,6 +84,16 @@ public boolean execute(CommandSender sender, String[] args) { return true; } + private GameMode getModeFromLabel(String label) { + return switch (label.toLowerCase()) { + case "gms" -> GameMode.SURVIVAL; + case "gmc" -> GameMode.CREATIVE; + case "gmsp" -> GameMode.SPECTATOR; + case "gma" -> GameMode.ADVENTURE; + default -> null; + }; + } + private Player resolveTarget(Player sender, String[] args, int argIndex) { if (args.length > argIndex) { Player found = plugin.getServer().getPlayer(args[argIndex]); @@ -122,12 +127,22 @@ private String gameModeName(GameMode mode) { @Override public List tabComplete(CommandSender sender, String[] args) { - if (fixedMode != null) { - if (args.length == 1 && sender.hasPermission(getPermission() + ".others")) { - return plugin.getServer().getOnlinePlayers().stream() - .map(Player::getName) - .filter(name -> name.toLowerCase().startsWith(args[0].toLowerCase())) - .toList(); + return tabComplete(sender, "gamemode", args); + } + + @Override + public List tabComplete(CommandSender sender, String label, String[] args) { + GameMode mode = getModeFromLabel(label); + + if (mode != null) { + if (args.length == 1) { + String modePermission = "essentialsc.gamemode." + mode.name().toLowerCase(); + if (sender.hasPermission(modePermission + ".others") || sender.hasPermission("essentialsc.gamemode.others")) { + return plugin.getServer().getOnlinePlayers().stream() + .map(Player::getName) + .filter(name -> name.toLowerCase().startsWith(args[0].toLowerCase())) + .toList(); + } } return Collections.emptyList(); } @@ -136,16 +151,23 @@ public List tabComplete(CommandSender sender, String[] args) { List modes = Arrays.asList("survival", "creative", "adventure", "spectator"); return modes.stream() .filter(m -> m.startsWith(args[0].toLowerCase())) + .filter(m -> sender.hasPermission("essentialsc.gamemode." + m) || sender.hasPermission("essentialsc.gamemode")) .toList(); } - if (args.length == 2 && sender.hasPermission(getPermission() + ".others")) { - return plugin.getServer().getOnlinePlayers().stream() - .map(Player::getName) - .filter(name -> name.toLowerCase().startsWith(args[1].toLowerCase())) - .toList(); + if (args.length == 2) { + GameMode targetMode = parseGameMode(args[0]); + if (targetMode != null) { + String modePermission = "essentialsc.gamemode." + targetMode.name().toLowerCase(); + if (sender.hasPermission(modePermission + ".others") || sender.hasPermission("essentialsc.gamemode.others")) { + return plugin.getServer().getOnlinePlayers().stream() + .map(Player::getName) + .filter(name -> name.toLowerCase().startsWith(args[1].toLowerCase())) + .toList(); + } + } } return Collections.emptyList(); } -} \ No newline at end of file +} diff --git a/EssC/essc/src/main/resources/commands.yml b/EssC/essc/src/main/resources/commands.yml index b8428b8..8e5586c 100644 --- a/EssC/essc/src/main/resources/commands.yml +++ b/EssC/essc/src/main/resources/commands.yml @@ -517,6 +517,36 @@ stonecutter: priority: normal aliases: [] +gm: + enabled: true + priority: normal + aliases: [] + +gamemode: + enabled: true + priority: normal + aliases: [] + +gms: + enabled: true + priority: normal + aliases: [] + +gmc: + enabled: true + priority: normal + aliases: [] + +gmsp: + enabled: true + priority: normal + aliases: [] + +gma: + enabled: true + priority: normal + aliases: [] + unban-ip: enabled: true priority: normal diff --git a/EssC/essc/src/main/resources/plugin.yml b/EssC/essc/src/main/resources/plugin.yml index 8e54017..c80deed 100644 --- a/EssC/essc/src/main/resources/plugin.yml +++ b/EssC/essc/src/main/resources/plugin.yml @@ -466,25 +466,30 @@ commands: usage: /gm [player] permission: essentialsc.gamemode + gamemode: + description: Change your gamemode + usage: /gamemode [player] + permission: essentialsc.gamemode + gms: description: Switch to Survival mode usage: /gms [player] - permission: essentialsc.gamemode + permission: essentialsc.gamemode.survival gmc: description: Switch to Creative mode usage: /gmc [player] - permission: essentialsc.gamemode + permission: essentialsc.gamemode.creative gmsp: description: Switch to Spectator mode usage: /gmsp [player] - permission: essentialsc.gamemode + permission: essentialsc.gamemode.spectator gma: description: Switch to Adventure mode usage: /gma [player] - permission: essentialsc.gamemode + permission: essentialsc.gamemode.adventure stonecutter: description: Open a virtual stonecutter diff --git a/EssC/test-api/pom.xml b/EssC/test-api/pom.xml index 467ad2a..721051a 100644 --- a/EssC/test-api/pom.xml +++ b/EssC/test-api/pom.xml @@ -68,14 +68,6 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 - - ${java.version} - ${project.build.sourceEncoding} - - --enable-preview - - diff --git a/expansions/EssentialsCProfiles/pom.xml b/expansions/EssentialsCProfiles/pom.xml index 3d96b3e..60fd47b 100644 --- a/expansions/EssentialsCProfiles/pom.xml +++ b/expansions/EssentialsCProfiles/pom.xml @@ -20,15 +20,6 @@ clean package - - org.apache.maven.plugins - maven-compiler-plugin - 3.11.0 - - 21 - 21 - - org.apache.maven.plugins maven-jar-plugin diff --git a/expansions/mysqldatabaseexpansion/pom.xml b/expansions/mysqldatabaseexpansion/pom.xml index 2151776..f1ad402 100644 --- a/expansions/mysqldatabaseexpansion/pom.xml +++ b/expansions/mysqldatabaseexpansion/pom.xml @@ -57,15 +57,6 @@ - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - ${java.version} - ${java.version} - - org.apache.maven.plugins maven-shade-plugin diff --git a/pom.xml b/pom.xml index 881ca88..6702e09 100644 --- a/pom.xml +++ b/pom.xml @@ -21,10 +21,8 @@ - 4.2.2 - 21 - ${java.version} - ${java.version} + 4.2.3 + 21 UTF-8 ${project.basedir}/run-server @@ -132,8 +130,7 @@ maven-compiler-plugin 3.13.0 - ${java.version} - ${java.version} + ${maven.compiler.release} UTF-8