Skip to main content
The rank system in ClansPlus defines the hierarchy within clans and determines what actions each member can perform.

Rank Hierarchy

ClansPlus uses three distinct ranks defined in the Rank enum:
public enum Rank {
    LEADER, MANAGER, MEMBER
}
1

LEADER

The highest rank in a clan. The clan owner has full control over all clan operations and can perform any action.
2

MANAGER

A trusted member promoted by the leader. Managers have elevated permissions and can help manage the clan.
3

MEMBER

The default rank for all clan members. Members have basic permissions as configured by the clan.

Rank Details

Leader (Owner)

LEADER

The clan leader is the original creator or a member who was transferred ownership.Capabilities:
  • Full access to all clan features
  • Can promote/demote managers
  • Can transfer ownership to another member
  • Can disband the clan
  • Configure all clan settings
  • Manage permissions for each action
Leadership Transfer: The clan owner can transfer leadership using the SETOWNER subject. This permanently changes the clan’s owner.
String owner;  // Stores the username of the clan leader

Manager

MANAGER

Managers are promoted by the clan leader to help with clan operations.Capabilities:
  • Access to permissions configured for MANAGER rank
  • Can perform most clan operations (based on permission settings)
  • Cannot demote other managers or the leader
  • Cannot disband the clan
  • Cannot transfer ownership
Promotion: Leaders can promote members using the SETMANAGER permission:
// From Subject enum
SETMANAGER("Set manager", "Promote member to a manager")
Demotion: Leaders can demote managers using the REMOVEMANAGER permission:
// From Subject enum
REMOVEMANAGER("Remove manager", "Remove a manager from clan")

Member

MEMBER

The default rank assigned to all clan members when they join.Capabilities:
  • Access to permissions configured for MEMBER rank
  • Basic clan features (chat, viewing info, etc.)
  • Can participate in clan events
  • May have limited access to clan management features
Join Process: When a player joins a clan, they automatically receive the MEMBER rank:
playerData.setRank(Rank.MEMBER);
playerData.setJoinDate(new Date().getTime());

Permission System

Each clan action (called a “Subject”) can be configured to require a specific minimum rank.

How Permissions Work

The permission system uses a HashMap<Subject, Rank> to map each action to its required rank:
HashMap<Subject, Rank> subjectPermission;
For example, a clan might configure:
  • INVITEMANAGER (only managers and leaders can invite)
  • KICKLEADER (only the leader can kick members)
  • CHATMEMBER (everyone can use clan chat)

Permission Subjects

Here are all the configurable permissions from the Subject enum:
  • INVITE: Invite a player to clan
  • KICK: Kick a member off of clan
  • SETMANAGER: Promote member to a manager
  • REMOVEMANAGER: Remove a manager from clan
  • SETCUSTOMNAME: Set clan custom name
  • SETICON: Set clan icon
  • SETMESSAGE: Set clan message
  • SPAWN: Teleport to clan spawn
  • SETSPAWN: Set clan spawn
  • CHAT: Clan chat
  • UPGRADE: Upgrade clan
  • MANAGEALLY: Send ally invite and manage clan’s allies
  • OPENSTORAGE: Open and manage clan storage

Rank Checking

The plugin checks if a player has the required rank for an action using the isPlayerRankSatisfied method:
public static boolean isPlayerRankSatisfied(String playerName, Rank requiredRank) {
    if (!isPlayerInClan(playerName)) return false;
    
    IPlayerData playerData = PluginDataManager.getPlayerDatabase(playerName);
    
    if (playerData.getRank() == null) return false;
    
    // Leaders can do everything
    if (playerData.getRank() == Rank.LEADER) return true;
    
    // Managers can do MEMBER actions
    if (playerData.getRank().equals(Rank.MANAGER) && requiredRank == Rank.MEMBER) 
        return true;
    else 
        return playerData.getRank() == requiredRank;
}
Leaders automatically pass all permission checks. Managers can perform any action that requires MEMBER rank or MANAGER rank.

Player Data Structure

Each player’s clan membership is tracked with the following data:
String playerName;        // Player's username
String UUID;              // Player's unique ID
String clan;              // Clan name (null if not in a clan)
Rank rank;                // Player's rank in the clan
long joinDate;            // When they joined the clan
long scoreCollected;      // Personal score in events
long lastActivated;       // Last activity timestamp

Rank Display

Ranks can be displayed in-game with custom formatting:
public static String getFormatRank(Rank rank) {
    if (rank == Rank.MANAGER) return Messages.RANK_DISPLAY_MANAGER;
    if (rank == Rank.LEADER) return Messages.RANK_DISPLAY_LEADER;
    return Messages.RANK_DISPLAY_MEMBER;
}
This allows server administrators to customize how each rank appears in messages, menus, and displays.

Best Practices

For Leaders

  • Choose managers carefully - they have significant power
  • Configure permissions to match your clan’s structure
  • Set clear expectations for each rank
  • Review permissions regularly

For Managers

  • Respect the leader’s decisions
  • Help new members get started
  • Don’t abuse your elevated permissions
  • Communicate with the leader about changes

For Members

  • Follow clan rules and guidelines
  • Contribute to clan goals
  • Ask managers or leaders if you need help
  • Earn trust to potentially become a manager

For Admins

  • Configure default permissions in config files
  • Balance power between ranks
  • Consider your community’s needs
  • Document your server’s clan policies

Migration Notes

The plugin includes a migration system for older data:
// playerName, clanName
public static HashMap<String, String> managersFromOldData = new HashMap<>();
This ensures that managers from previous versions are properly converted to the new rank system.

Next Steps

Clans Overview

Learn about the clan system basics

Permissions Config

Configure clan permissions

Commands

View rank-related commands

Skills

Discover clan skills and upgrades

Build docs developers (and LLMs) love