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