From 6ea62648ac18905de95d99245ed75e1348eea6e5 Mon Sep 17 00:00:00 2001 From: TheBjoRedCraft Date: Tue, 27 Jan 2026 20:50:09 +0100 Subject: [PATCH 1/2] feat: add permission checks to GameModeArgument and update version to 1.21.11-2.0.11-SNAPSHOT --- gradle.properties | 2 +- .../command/argument/GameModeArgument.kt | 26 ++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index a71b19c..996b34b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ kotlin.code.style=official kotlin.stdlib.default.dependency=false org.gradle.parallel=true -version=1.21.11-2.0.10-SNAPSHOT \ No newline at end of file +version=1.21.11-2.0.11-SNAPSHOT \ No newline at end of file diff --git a/src/main/kotlin/dev/slne/surf/essentials/command/argument/GameModeArgument.kt b/src/main/kotlin/dev/slne/surf/essentials/command/argument/GameModeArgument.kt index ecf7702..de9df78 100644 --- a/src/main/kotlin/dev/slne/surf/essentials/command/argument/GameModeArgument.kt +++ b/src/main/kotlin/dev/slne/surf/essentials/command/argument/GameModeArgument.kt @@ -11,20 +11,34 @@ import org.bukkit.command.CommandSender class GameModeArgument(nodeName: String) : CustomArgument(StringArgument(nodeName), { info -> - getGameMode(info.input.lowercase()) + val gameMode = getGameMode(info.input.lowercase()) ?: throw CustomArgumentException.fromAdventureComponent { buildText { appendErrorPrefix() error("Der Spielmodus wurde nicht gefunden.") } } + + val permission = "surf.essentials.gameMode.${gameMode.name.lowercase()}" + val sender = info.sender + + if (!sender.hasPermission(permission)) { + throw CustomArgumentException.fromAdventureComponent { + buildText { + appendErrorPrefix() + error("Dazu hast du keine Berechtigung.") + } + } + } + + gameMode }) { init { this.replaceSuggestions( - ArgumentSuggestions.stringCollection { - GameMode.entries.map { - it.name.lowercase() - } + ArgumentSuggestions.stringCollection { sender -> + GameMode.entries + .filter { sender.sender.hasPermission("surf.essentials.gameMode.${it.name.lowercase()}") } + .map { it.name.lowercase() } } ) } @@ -52,4 +66,4 @@ inline fun CommandTree.gameModeArgument( block: Argument<*>.() -> Unit = {} ): CommandTree = then( GameModeArgument(nodeName).setOptional(optional).apply(block) -) \ No newline at end of file +) From ea3bccaa620d487ff26c0a763c9c5d24b7929749 Mon Sep 17 00:00:00 2001 From: TheBjoRedCraft Date: Tue, 27 Jan 2026 20:50:59 +0100 Subject: [PATCH 2/2] feat: add specific permissions for each game mode --- .../util/permission/EssentialsPermissionRegistry.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/kotlin/dev/slne/surf/essentials/util/permission/EssentialsPermissionRegistry.kt b/src/main/kotlin/dev/slne/surf/essentials/util/permission/EssentialsPermissionRegistry.kt index 3fe3cf9..e7543f3 100644 --- a/src/main/kotlin/dev/slne/surf/essentials/util/permission/EssentialsPermissionRegistry.kt +++ b/src/main/kotlin/dev/slne/surf/essentials/util/permission/EssentialsPermissionRegistry.kt @@ -9,6 +9,10 @@ object EssentialsPermissionRegistry : PermissionRegistry() { val FLY_COMMAND_OTHERS = create("$PREFIX.fly.command.others") val GAME_MODE_SWITCHER = create("$PREFIX.gameMode.gameModeSwitcher") val GAME_MODE_COMMAND = create("$PREFIX.gameMode.command") + val GAME_MODE_CREATIVE = create("$PREFIX.gameMode.creative") + val GAME_MODE_SURVIVAL = create("$PREFIX.gameMode.survival") + val GAME_MODE_ADVENTURE = create("$PREFIX.gameMode.adventure") + val GAME_MODE_SPECTATOR = create("$PREFIX.gameMode.spectator") val GAME_MODE_COMMAND_OTHERS = create("$PREFIX.gameMode.command.others") val GAME_MODE_COMMAND_OFFLINE = create("$PREFIX.gameMode.command.offline") val GAME_MODE_COMMAND_DEFAULT = create("$PREFIX.gamemode.command.default")