Code Patterns

Copy-paste examples for common plugin tasks. Commands, events, ECS, GUI, and more.

← Back to Patterns
permission

Permission Enum

Define permissions as an enum for type-safe permission management.

Example Code

java
public enum Permissions {
    MENU_OPEN("open", "menu", "You cannot open the menu"),
    ADMIN_USE("use", "admin", "You need admin permission"),
    TELEPORT("use", "teleport", "You cannot teleport");

    private final String permission;
    private final String root;
    private final String denyMessage;

    Permissions(String action, String category, String denyMessage) {
        this.permission = String.format("MyPlugin.%s.%s", category, action);
        this.root = String.format("MyPlugin.%s", category);
        this.denyMessage = denyMessage;
    }

    public String getPermission() { return permission; }
    public String getRoot() { return root; }
    public Message getDenyMessage() { return Message.raw(denyMessage).color(Color.RED); }

    public boolean hasPermission(Player player) {
        return player.hasPermission(permission)
            || player.hasPermission(root)
            || player.hasPermission("MyPlugin.admin");
    }
}

// Usage:
if (!Permissions.MENU_OPEN.hasPermission(player)) {
    player.sendMessage(Permissions.MENU_OPEN.getDenyMessage());
    return;
}

Common Mistakes

Forgetting root permission check. Hardcoding permission strings instead of using enum.