# clan-system > Develops clan functionality, ranking leaderboards, and group mechanics. Use when: implementing clan features, modifying member management, adding ranking systems, working with clan privileges, or integrating clan-based rewards. - Author: valeriybaranyshyn-pixel - Repository: valeriybaranyshyn-pixel/Tales-of-Aden - Version: 20260202145225 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/valeriybaranyshyn-pixel/Tales-of-Aden - Web: https://mule.run/skillshub/@@valeriybaranyshyn-pixel/Tales-of-Aden~clan-system:20260202145225 --- --- name: clan-system description: | Develops clan functionality, ranking leaderboards, and group mechanics. Use when: implementing clan features, modifying member management, adding ranking systems, working with clan privileges, or integrating clan-based rewards. allowed-tools: Read, Edit, Write, Glob, Grep, Bash --- # Clan System Skill The Tales of Aden clan system extends the L2J base with a custom weekly ranking competition. Clans earn points from boss kills and siege victories, competing for weekly rewards. The system uses `L2Clan` as the core entity, `ClanTable` as the singleton manager, and `ClanRankingManager` for the competitive leaderboard. ## Quick Start ### Access Clan Data ```java // Get clan by ID L2Clan clan = ClanTable.getInstance().getClan(clanId); // Get clan by name L2Clan clan = ClanTable.getInstance().getClanByName("MyClan"); // Check if player has clan if (player.getClanId() != 0) { L2Clan playerClan = player.getClan(); } ``` ### Award Ranking Points ```java // Award boss kill points L2Clan clan = killer.getClan(); if (clan != null) { int points = ClanRankingConfig.CLAN_RANKING_BOSS_POINTS_MAIN_KILLER.getOrDefault(bossId, 1); clan.addRankingBossPoints(points); } // Award siege victory points int siegePoints = ClanRankingConfig.CLAN_RANKING_SIEGE_POINTS.getOrDefault(castleId, 5); winnerClan.addRankingSiegePoints(siegePoints); ``` ### Check Member Privileges ```java // Check if member can invite others if ((player.getClanPrivileges() & L2Clan.CP_CL_JOIN_CLAN) == L2Clan.CP_CL_JOIN_CLAN) { // Can invite } // Grant all privileges (leader only) player.setClanPrivileges(L2Clan.CP_ALL); ``` ## Key Concepts | Concept | Usage | Location | |---------|-------|----------| | L2Clan | Core entity with members, skills, points | `gameserver/model/L2Clan.java` | | ClanTable | Singleton manager, CRUD operations | `gameserver/datatables/ClanTable.java` | | ClanRankingManager | Weekly competition system | `net.sf.l2j.clan.ranking/` | | Privilege Flags | Bitfield permissions (CP_*) | L2Clan constants | | Subpledges | Academy, Royal Guard, Knights | SUBUNIT_* constants | ## Privilege System | Flag | Value | Purpose | |------|-------|---------| | `CP_CL_JOIN_CLAN` | 2 | Invite members | | `CP_CL_GIVE_TITLE` | 4 | Set member titles | | `CP_CL_PLEDGE_WAR` | 32 | Declare clan wars | | `CP_CL_DISMISS` | 64 | Kick members | | `CP_CS_MANAGE_SIEGE` | 131072 | Register for sieges | | `CP_ALL` | 8388606 | All privileges | ## Database Tables | Table | Purpose | |-------|---------| | `clan_data` | Core clan info (name, level, leader, castle) | | `clan_points` | Ranking competition points | | `clan_skills` | Clan-learned skills | | `clan_wars` | Active war declarations | | `clan_subpledges` | Academy/Royal/Knight units | | `clan_privs` | Power grade privileges | ## See Also - [patterns](references/patterns.md) - Singleton patterns, privilege checks, point systems - [workflows](references/workflows.md) - Creating clans, ranking rewards, siege integration ## Related Skills - See the **database-schema** skill for clan table modifications - See the **pvp-events** skill for integrating clan-based events - See the **packet-protocol** skill for Pledge* packets - See the **configuration-management** skill for clans.properties