Skip to content

Permissions

el211 edited this page Sep 10, 2026 · 2 revisions

Permissions

GoCraft ships a native, group-based permission system inspired by the LuckPerms workflow. It does not load the LuckPerms plugin or database.

Browser editor

Run the admin command to open the dashboard:

/gocraft peditor

GoCraft prints a one-time URL. The editor page (permission_editor.editor_url) loads your live permission document through a bytebin relay (permission_editor.bytebin_url) — no inbound port is required on your server. After editing groups/users in the browser, upload and apply the changes:

/gocraft applyedits <key>

Configure in server.yml:

permission_editor:
  enabled: true
  editor_url: https://gocraft-mc.github.io/GoCraft/editor
  bytebin_url: https://bytebin.lucko.me

You can also manage everything from chat/console with the /gocraft user ... and /gocraft group ... commands (see Commands).

Permission nodes

Every registered command automatically receives gocraft.command.<command>. Examples:

  • gocraft.command.spawn
  • gocraft.command.give
  • gocraft.command.gocraft
  • gocraft.command.* — all GoCraft commands
  • * — every permission

Resolution order

  1. An explicit user rule takes priority over group rules.
  2. More specific nodes beat wildcards.
  3. A child group's equally specific rule beats its parent's.
  4. On an equal-priority conflict, Deny wins.
  5. Players always inherit the default group.
  6. Operators keep a full bypass — an invalid group edit cannot lock the owner out.

Commands that were public before this system remain allowed when no rule is set; operator-only commands remain denied by default but can be granted per group. Java command suggestions hide commands a player cannot use and refresh immediately after edits are applied.

File format

The editor owns permissions.json, but it stays human-readable:

{
  "version": 1,
  "groups": {
    "default": {},
    "builder": {
      "parents": ["default"],
      "permissions": {
        "gocraft.command.give": true,
        "gocraft.command.stop": false
      }
    }
  },
  "users": {
    "alex": {"groups": ["builder"]}
  }
}

Names are matched case-insensitively. Group inheritance cycles, unknown parents, unknown user groups, malformed permission nodes, oversized editor requests, and stale editor sessions are all rejected.

Not yet supported

This system does not yet implement contexts, weights, tracks, temporary permissions, suffixes, UUID-based assignments, or LuckPerms import/export compatibility. Group chat prefixes (MiniMessage) and sort weights are supported via /gocraft group.

Clone this wiki locally