Adds granular permission control for vanilla Minecraft commands on Paper servers. Lets you control specific gamemode types, teleport options, entity selectors, and more.
Heavily influenced by the VanillaPermissions mod from DrexHD.
Paper 1.20.6+ (Forks might work, but I won't be testing them. If you confirm a fork works, open an issue and I’ll add it to the supported list.)
CommandAPI 11.0.0+
LuckPerms 5.5+
Gives you actual control over vanilla commands instead of the usual all-or-nothing approach, and a few other nice to haves.
Commands with granular permissions:
/gamemode,/tp,/time,/weather,/gamerule,/difficulty,/effectand/whitelist
Entity selectors:
- Control who can use
@a,@e,@p,@r,@sin commands
Useful bypasses:
- Spawn protection
- Chat speed kicks
- Whitelist
- Server full kicks
- Movement speed kicks
Admin controls:
- Command blocks, structure blocks, jigsaw blocks (place/view/break)
- Debug stick usage
- Command feedback broadcasts
Group Moderator
minecraft.command.gamemode true
minecraft.command.gamemode.survival true
minecraft.command.gamemode.spectator true
minecraft.command.gamemode.creative false
minecraft.command.gamemode.adventure false
minecraft.command.gamemode.other true
minecraft.command.gamemode.survival.other true
minecraft.command.gamemode.spectator.other false
minecraft.command.gamemode.creative.other false
minecraft.command.gamemode.adventure.other false
minecraft.command.teleport true
minecraft.command.teleport.targets true
minecraft.command.teleport.location false
Group Builder
minecraft.command.gamemode true
minecraft.command.gamemode.creative true
minecraft.command.gamemode.survival true
minecraft.command.gamemode.spectator false
minecraft.command.gamemode.adventure false
minecraft.command.gamemode.other false
minecraft.bypass.spawn-protection true
In config.yml:
default_permissions:
ops_bypass_all: falseFor commands that target players (like gamemode), permissions are checked in this order:
General permission (checked first):
minecraft.command.gamemode.other- If false, blocks ALL gamemode changes to other players- If true, allows changing others to any mode
Specific mode permissions (checked second):
minecraft.command.gamemode.survival.other- Additional check for this specific modeminecraft.command.gamemode.creative.other- Additional check for this specific mode- etc.
Both must pass: To change another player's gamemode, you need BOTH:
minecraft.command.gamemode.other= true (or parent permission)minecraft.command.gamemode.<mode>.other= true (or parent permission)
features:
command_permissions: true # Granular command controls
selector_permissions: true # Entity selector restrictions
bypass_permissions: true # Spawn protection, whitelist, etc.
admin_permissions: true # Command blocks, debug stick, etc.
default_permissions:
ops_bypass_all: true # Set to false to make OPs respect permissionsPlugin commands:
/extrapermissions reload(or/ep reload) - Reload config/extrapermissions check <player>- Check a player's key permissions/extrapermissions debug- View plugin status and info
Overridden vanilla commands:
/gamemode <mode> [player]/tp <target>- Teleport to entity/tp <x> <y> <z>- Teleport to coordinates/tp <targets> <destination>- Teleport entities to another entity/tp <targets> <x> <y> <z>- Teleport entities to coordinates/time <set|add|query> <value>/weather <clear|rain|thunder>/gamerule <query|set> <rule> [value]/difficulty <peaceful|easy|normal|hard>/effect <give|clear> <target> [effect]/whitelist <add|remove|on|off> [player]
minecraft.command.gamemode- Base permissionminecraft.command.gamemode.survival- Use survival modeminecraft.command.gamemode.creative- Use creative modeminecraft.command.gamemode.adventure- Use adventure modeminecraft.command.gamemode.spectator- Use spectator modeminecraft.command.gamemode.other- Change other players (any mode)minecraft.command.gamemode.<mode>.other- Change others to specific mode
minecraft.command.teleport- Base permissionminecraft.command.teleport.targets- Teleport to entities/playersminecraft.command.teleport.location- Teleport self to coordinatesminecraft.command.teleport.targets.targets- Teleport entities to other entitiesminecraft.command.teleport.targets.location- Teleport entities to coordinates
minecraft.command.time+.set,.add,.queryminecraft.command.weather+.clear,.rain,.thunderminecraft.command.gamerule+.query,.setminecraft.command.difficultyminecraft.command.effect+.give,.clearminecraft.command.whitelist+.add,.remove,.on,.off
minecraft.selector.entity.e- Use @e (all entities)minecraft.selector.player.a- Use @a (all players)minecraft.selector.player.p- Use @p (nearest player)minecraft.selector.player.r- Use @r (random player)minecraft.selector.self.s- Use @s (self)
Note: Some commands (like /effect) also create dynamic selector permissions based on the target type:
minecraft.selector.player.effect.targets- Use player selectors in /effect commandminecraft.selector.entity.effect.targets- Use entity selectors in /effect command
minecraft.bypass.spawn-protection- Build in spawn protectionminecraft.bypass.chat-speed- Bypass chat speed kickminecraft.bypass.whitelist- Join when whitelist is onminecraft.bypass.player-limit- Join when server is fullminecraft.bypass.force-gamemode- Override force-gamemode settingminecraft.bypass.move-speed.player- Bypass movement speed kicksminecraft.bypass.move-speed.vehicle.boat- Bypass speed kick in boatsminecraft.bypass.move-speed.vehicle.minecart- Bypass speed kick in minecarts
Replace <action> with place, view, or break:
minecraft.operator_block.command_block.<action>minecraft.operator_block.jigsaw.<action>minecraft.operator_block.structure_block.<action>
minecraft.adminbroadcast.receive- See command feedbackminecraft.debug_stick.use.block- Use debug stick
Permission hierarchy: Parent permissions grant access to children. For example, minecraft.command.gamemode gives access to all gamemode subpermissions unless explicitly denied.
OP behavior: By default, OPs bypass all ExtraPermissions checks. Set ops_bypass_all: false in config to change this.
Selectors: Only affects vanilla entity selectors in commands. Custom plugin commands might not respect these.
Operator blocks & debug stick: Only work in Creative mode anyway (vanilla behavior). These permissions add an extra layer for creative servers.
Movement speed bypasses: Detection is based on kick message keywords. Might not catch all cases, especially with custom anti-cheat plugins.
MIT License - See LICENSE file for details.