Features
Team Management
- Create, disband, rename, and manage teams, invitations, members, and leadership
- Invite expiry and optional Vault economy costs for invitations and team renames
- Promote or demote members according to role priorities
- Toggle teammate PvP, change team colors, and view team information and levels
- Team chat, alliance chat, member muting, and trust status
Homes and Warps
- Set, teleport to, list, and delete named team homes and warps
/team homesand/team warpsopen clickable destination menus- Team-level home limits, shared per-player teleport cooldowns, and optional warmups
- Warmups are cancelled when the player moves or takes damage
- Homes and warps can be disabled in selected worlds
Shared Team Storage
/team echestopens shared team storage with size based on team level- Role permissions separately control access, deposits, and withdrawals
- Role withdrawal limits can scale with team level
- Storage can be disabled in selected worlds and is saved automatically
Land Claims
- Claim or release the chunk you are standing in with
/team claimand/team unclaim - Claim limits can scale with team level and claims can be disabled by world
- Other teams cannot break or place blocks or interact with blocks in claimed chunks
- Explosions do not break blocks in claimed chunks
Alliances and Progression
- Invite, accept, decline, break, and list team alliances
- Share ally chat and optionally prevent allied friendly fire
- Team level is calculated from member-count thresholds
- Team level can affect home, alliance, vault, claim, and withdrawal limits
Diagnostics and Backups
- Routine diagnostics and save/loading details are hidden unless
debugis enabled - Errors and plugin enable/disable notices are always logged
- Automatic backups include team data and shared storage, with configurable interval and retention
- Authorized administrators can list and restore backups
Roles, Colors, and Integrations
- Leader, Co-Leader, and Member roles have configurable permissions and priorities
- Starting role for new members is configurable; custom-role commands are unavailable
- 15 team colors; colors are available through messages and PlaceholderAPI
- PlaceholderAPI is optional and uses
%teams999_*% - Vault is optional and is used for configured invite/rename costs
- Direct name formatting and public chat formatting are opt-in to reduce conflicts with other plugins
Commands
Team Commands
| Command | Description |
|---|---|
/team |
Show team help |
/team create <name> |
Create a team |
/team disband |
Disband your team |
/team invite <player> |
Invite an online player |
/team accept |
Accept a pending invitation |
/team decline |
Decline a pending invitation |
/team cancelinvite <player> |
Cancel an invitation you sent to an online player |
/team leave |
Leave your team (the leader must transfer leadership or disband) |
/team kick <player> |
Remove a team member |
/team promote <player> / /team demote <player> |
Change a member's role by priority |
/team transfer <player> |
Transfer leadership to a team member |
/team rename <name> |
Rename your team |
/team info |
Open team information and member GUI |
/team level |
View team level and progress |
/team list |
List server teams and members |
/team online |
List online team members |
/team sethome <name> |
Set a named team home |
/team home [name] |
Teleport to a home or list homes |
/team homes |
Open the team homes menu |
/team delhome <name> |
Delete a team home |
/team setwarp <name> |
Set a named team warp |
/team warp [name] |
Teleport to a warp or list warps |
/team warps |
Open the team warps menu |
/team delwarp <name> |
Delete a team warp |
/team warplist |
List team warps |
/team chat [message] |
Toggle team chat or send one team message |
/team ally <subcommand> |
Use an alliance command under /team |
/team echest |
Open shared team storage |
/team pvp |
Toggle teammate PvP |
/team trust <player> |
Toggle a member's trusted status |
/team mute <player> |
Mute or unmute a member in team chat |
/team color <color> |
Change the team color |
/team colors |
List available colors |
/team claim / /team unclaim |
Claim or release your current chunk |
/team backup [list|restore <id>] |
List or restore backups; requires team999.reload |
/team reload |
Save data and reload configuration; requires team999.reload |
/team is also available as /t. Team creation is available by default; servers can deny it with their permission manager.
Alliance Commands
| Command | Description |
|---|---|
/ally invite <team> |
Invite a team to form an alliance |
/ally accept |
Accept an alliance invitation |
/ally decline |
Decline an alliance invitation |
/ally break <team> |
Break an alliance |
/ally chat [message] |
Toggle ally chat or send one ally message |
/ally list |
List your team's alliances |
/ally help |
Show alliance help |
/ally is also available as /a. Alliance commands are also available under /team ally.
Legacy /team motd, /team role, and /team showrole commands report that those features are unavailable.
Permissions
Team-role permissions are configured in roles.defaults.<role>.permissions. They are internal to the team system; they are not server permission nodes. The Leader has all internal permissions. Co-Leader and Member default permissions are shown in the configuration.
External server permissions use team999.* and can be granted through Bukkit-compatible permission plugins. team999.create is granted to all players by default; team999.reload defaults to operators. Each internal team.* permission has a corresponding external team999.* node. The team999.* parent grants the declared Teams999 nodes.
Configuration
Maps below are keyed by team level. World names are matched without regard to letter case. Defaults shown are the shipped defaults.
Team Settings
| Option | Default | Description |
|---|---|---|
team.max-size |
10 |
Maximum team members; values below 2 are raised to 2 |
team.invite-expiry |
5 |
Invitation lifetime in minutes |
team.invite-cost |
0 |
Cost per invitation; requires a Vault economy provider |
team.max-homes |
3 |
Base home limit when no level override applies |
team.rename-cost |
1000 |
Rename cost; requires a Vault economy provider |
team.rename-cooldown |
60 |
Minutes between renames; 0 disables the cooldown |
team.home-teleport-cooldown-seconds |
0 |
Per-player cooldown shared by home and warp teleports |
team.name-format |
^[a-zA-Z0-9_]{3,16}$ |
Regular expression for team names |
team.display-brackets |
false |
Deprecated; this option no longer changes formatted team names |
team.default-pvp-enabled |
false |
Initial teammate PvP setting for new teams |
team.random-colors |
false |
Give new teams a random color instead of blue |
Display, Chat, Alliance, and Vault Settings
| Option | Default | Description |
|---|---|---|
display.apply-team-prefixes |
false |
Directly edits player display, tab-list, and custom name-tag names |
display.show-team-name |
true |
Include the team name when direct prefix formatting is enabled |
display.team-name-brackets |
true |
Show brackets around the formatted team name |
chat.format-public-chat |
false |
Add a team prefix to public chat |
alliances.friendly-fire |
false |
Allow allied players to damage each other when enabled |
alliances.max-alliances |
3 |
Base alliance limit without a level override |
alliances.break-cooldown-minutes |
0 |
Minutes before the team can break another alliance |
vault.base-size |
54 |
Base shared storage size; valid size is 9–54 in multiples of 9 |
Role Defaults
| Option | Default | Description |
|---|---|---|
roles.starting-role |
member |
Default role assigned to invited members |
roles.defaults.<role>.display-name |
Per role | Role name displayed in messages and menus |
roles.defaults.<role>.color |
Per role | Bukkit color name for the role |
roles.defaults.<role>.priority |
Per role | Higher priority roles can manage lower priority roles |
roles.defaults.<role>.can-be-kicked |
Per role | Whether the role can be kicked |
roles.defaults.<role>.can-be-modified |
Per role | Whether the role configuration can be modified |
roles.defaults.<role>.daily-withdraw-limit |
Per role | Daily storage withdrawal limit; -1 means unlimited |
roles.defaults.<role>.permissions |
Per role | Internal permissions; * grants every internal permission |
Team Levels and Limits
| Option | Default | Description |
|---|---|---|
team-levels.member-thresholds |
1: 1, 2: 4, 3: 7, 4: 10 |
Member-count requirement for each level |
limits.homes.by-level |
1: 3, 2: 4, 3: 5, 4: 6 |
Maximum homes at each level |
limits.alliances.by-level |
1: 2, 2: 3, 3: 4, 4: 5 |
Maximum alliances at each level |
limits.vault-size.by-level |
1: 27, 2: 36, 3: 45, 4: 54 |
Shared storage size at each level |
limits.daily-withdrawals.team-level-multiplier |
1: 1.0, 2: 1.25, 3: 1.5, 4: 2.0 |
Multiplier applied to the role withdrawal limit |
World Toggles, Teleports, Claims, and Backups
| Option | Default | Description |
|---|---|---|
world-toggles.team-chat-disabled-worlds |
[] |
Worlds where team and ally chat are disabled |
world-toggles.homes-disabled-worlds |
[] |
Worlds where homes and warps are disabled |
world-toggles.vault-disabled-worlds |
[] |
Worlds where shared storage is disabled |
world-toggles.pvp-protection-disabled-worlds |
[] |
Worlds where teammate/allied PvP protection is disabled |
debug |
false |
Show routine diagnostics and data-save/load messages |
teleport.warmup-seconds |
0 |
Home/warp delay; movement or damage cancels the teleport |
claims.enabled |
true |
Enable chunk claiming and claim protection |
claims.base-limit |
3 |
Base number of chunks each team can claim |
claims.by-level |
1: 3, 2: 5, 3: 8, 4: 12 |
Claim limit at each team level |
claims.disabled-worlds |
[] |
Worlds where claims and claim protection are inactive |
backups.enabled |
true |
Enable automatic team and shared-storage snapshots |
backups.interval-minutes |
360 |
Minutes between backups; minimum is 1 |
backups.retention |
10 |
Maximum number of newest backups to retain; minimum is 1 |
Level-map keys are team levels and values are the configured threshold, limit, size, or multiplier for that level. The shipped defaults are listed above.
Available Team Colors
RED, BLUE, GREEN, YELLOW, GOLD, AQUA, LIGHT_PURPLE, WHITE, DARK_RED, DARK_BLUE, DARK_GREEN, DARK_AQUA, DARK_PURPLE, DARK_GRAY, and GRAY.
Data Storage
Team membership, role assignments, claims, homes, warps, alliances, and trust status are saved by the plugin. Shared team storage is saved separately and is included in automatic backups. Data is saved when the server stops.
All Versions
+ Add Version- Added a debug option that is off by default and shows routine diagnostics and storage activity when enabled; errors and plugin lifecycle notices remain visible.
- Added configurable warmups for home and warp teleports, cancelled when a player moves or takes damage.
- Added chunk claims with configurable limits, level-based increases, world exclusions, and protection for blocks in claimed areas.
- Added the ability to decline a received team invitation or cancel an invitation sent to another player.
- Added clickable menus for browsing and managing team homes and warps.
- Added automatic snapshots of team and shared-storage data, configurable retention, and administrator restore support.
- Fixed team PvP defaults and random team colors so the configured choices take effect.
- Fixed shared-storage access checks for inventory moves and drags, and made withdrawal limits count items actually removed.
- Fixed economy-backed actions to stop when a provider rejects a withdrawal.
- Fixed team renames so shared storage remains associated with the renamed team.
- Fixed legacy officer membership migration so affected members remain in their teams after reloads.
- Fixed default team creation access so players can create teams without an additional permission grant.
- Fixed the published feature and command descriptions to match available functionality.
- FIXED BUG THAT WAS PREVENTING THE /TEAM COMMANDS FROM WORKING
- Added built-in PlaceholderAPI integration using the
%teams999_*%namespace. - Added placeholders for team name, colored name, color, level, members, online members, max members, role name, role display name, homes, max homes, warps, alliances, max alliances, MOTD, owner, and trust status.
### Command Tab Completion
- Added tab completion coverage for all
/teamand/allycommand paths. - Added contextual completion suggestions for player names, team names, role names, homes, warps, colors, and role permissions.
- Added full nested completion support for
/team roleand/team role permsubcommands.
### Quality and Stability Fixes
- Fixed alliance listings to show proper team display names instead of lowercase-only names.
- Fixed
/team colorslist formatting so color entries display cleanly. - Improved data validation so invalid saved role toggle values are ignored safely during load.
- Improved role loading fallback so invalid saved role colors no longer prevent team data from loading.
- Added
/team levelso players can check their team’s current level, how close they are to the next level, and the exact member requirement needed to level up.
### Team Warps
- Added shared team warps as a separate system from homes, for fast travel to common team locations.
- Added
/team setwarp <name>to save a named team-wide teleport point. - Added
/team warp [name]to teleport to a specific warp, or list warps if no name is provided. - Added
/team delwarp <name>to remove a warp your team no longer needs. - Added
/team warplistto show all available team warps at a glance. - By default, only the team owner can set or delete warps, while members can use and list warps.
- Added warp details to the team info GUI so teams can see how many warps they have and their names.
- Team invites can now require a configurable economy cost.
- Team home teleports now support a configurable per-player cooldown.
- Alliance breaks now support a configurable team cooldown.
### Configurable Default Roles
- Starting role for new team members is now configurable.
- Default role priorities are now configurable.
- Default role permission sets are now configurable.
- Default role daily withdrawal limits are now configurable.
### Per-World Feature Toggles
- Team chat can now be enabled or disabled per world.
- Team home features can now be enabled or disabled per world.
- Team vault access can now be enabled or disabled per world.
- Allied PvP protection can now be enabled or disabled per world.
### Team-Level and Role-Based Limits
- Team level is now determined by configurable member-count thresholds.
- Maximum team homes can now scale by team level.
- Maximum alliances can now scale by team level.
- Team vault size can now scale by team level.
- Daily withdrawal limits now support team-level multipliers on top of role limits.
#### Custom Team Colors
- Each team can now have its own display color
- Team prefix in chat, player list, and name tags use the team's color
- 15 colors available: RED, BLUE, GREEN, YELLOW, GOLD, AQUA, LIGHT_PURPLE, WHITE, DARK_RED, DARK_BLUE, DARK_GREEN, DARK_AQUA, DARK_PURPLE, DARK_GRAY, GRAY
#### Random Starting Colors
- New teams can be assigned a random color when created
- Configurable in config.yml with
team.random-colorssetting - If disabled, teams start with green (default)
#### New Command
/team color <color>- Change your team's display color- Requires
team.color.changepermission (Leader and Co-Leader have this by default)
#### New Permission
team.color.change- Allows changing the team's display color
#### New Default Roles
- Leader** - Full control of the team with all permissions, cannot be kicked
- Co-Leader** - Second-in-command with extensive management permissions
- Officer** - Moderation role with daily vault withdrawal limits
- Member** - Standard team member with basic access
- Recruit** - Trial role for new players with minimal permissions
#### Role Hierarchy
- Roles now have priority levels that determine who can manage whom
- Higher priority roles can kick, promote, demote, and mute lower priority roles
- Leaders and Co-Leaders cannot be kicked from the team
- New players now join as Recruit instead of regular Member
#### Custom Roles
- Create unlimited custom roles for your team
- Assign custom names and colors to roles
- Add or remove individual permissions from custom roles
- Assign custom roles to team members
- Delete custom roles (members revert to Member role)
### New Commands
#### Leadership
/team transfer <player>- Transfer team leadership to another member
#### Role Management
/team role create <name>- Create a new custom role/team role delete <name>- Delete a custom role/team role list- View all roles in your team/team role info <name>- View detailed information about a role/team role assign <player> <role>- Assign a role to a team member/team role perm add <role> <permission>- Add a permission to a custom role/team role perm remove <role> <permission>- Remove a permission from a custom role
#### Moderation
/team mute <player>- Mute or unmute a team member in team chat/team showrole- Toggle role prefix display in chat
### Permission-Based Access Control
- All team actions now require specific internal permissions
- Permissions are checked based on the player's assigned role
- Role permissions are separate from server permission plugins
- Permissions control access to team features, not server commands
### Team Chat Improvements
- Muted members cannot send messages in team or ally chat
- Role prefixes now display in team chat messages
- Permission checks for toggling chat modes
### Vault Improvements
- Separate permissions for opening, depositing, and withdrawing
- Officers have daily withdrawal limits
- Recruits cannot access the vault at all
- Members can deposit but cannot withdraw
### Alliance Improvements
- Permission-based alliance management
- Only members with proper permissions can invite, accept, or break alliances
### Display Changes
- Role names and colors now show in team information
- Player heads in team info GUI show role name and color
- Online member list shows role information
### Data Persistence
- Custom roles are saved and loaded with team data
- Member role assignments persist across server restarts
- Muted member status is saved
- Fixed A Bug That Would Sometimes Cause The Team Vaults To Be Cleared
- Alliance Limit:** Teams can now have a maximum number of alliances, configurable in the settings (default: 3).
- Team Kick Command:** Added
/team kick <player>to allow team owners and officers to remove members from the team. - Team List Command:** Added
/team listto display all teams on the server with their member counts and owners. - Team Trust System:** Added
/team trust <player>to grant special permissions to team members, allowing them to access vaults and set/delete team homes. - Alliance List Command:** Added
/ally listto show all active alliances for your team. - Enhanced Vault Permissions:** Trusted team members can now access the team vault.
- Enhanced Home Permissions:** Trusted team members can now set and delete team homes.
- Configuration Option:** Added
max-alliancessetting to control how many alliances a team can have.
- Fixed A Bug Where If Vault Wasn't Installed The Plugin Would Disable
- Multiple Team Homes:** Teams can now set multiple homes, with a configurable limit (defaulting to 3).
- New Home Command:**
/team delhome <name>: Deletes a named home.- Updated Team Info:** The team info screen now displays the number of set homes and their names.
### Improvements
- Updated Permissions:**
/team sethomeand/team delhomecan now be used by both team owners and officers./team homecan be used by any member of the team.- Updated Help Command:** The help command now reflects the new home commands and their updated permissions.
- Team Rename Command:** Implemented
/team rename <new-name>allowing team owners to change their team's name. This feature includes a configurable cost (requires Vault economy plugin) and a cooldown period to prevent frequent changes. - Team Message of the Day (MOTD):** Added
/team motd <message>command, enabling team owners and officers to set a custom message that is displayed to team members when they join the server. - Ally Chat Channel:** Introduced
/ally chatcommand to toggle a dedicated chat channel for communication among all members of allied teams. - Configurable Alliance Friendly Fire:** Added a new configuration option (
alliances.friendly-fire) to control whether players from allied teams can inflict damage on each other. - Configurable Team Naming Convention:** Implemented a new configuration option (
team.name-format) that allows server administrators to define a regular expression for validating team names, ensuring they adhere to specific rules.
### Improvements & Refactoring
- Codebase Restructuring:** The core plugin logic was refactored by splitting the large
Teams999.javafile intoTeams999.java(main plugin class) andTeamAndAllianceManager.java(containing manager and data classes) for improved modularity and maintainability. - Economy Integration:** Integrated with the Vault API to support in-game currency transactions for features like team renaming.
### Alliances
- Added a new alliance system.
/ally invite <teamname>: Invite another team to form an alliance (owner only)./ally accept: Accept a pending alliance invitation./ally decline: Decline a pending alliance invitation./ally break <teamname>: End an alliance with another team.- Players in allied teams cannot damage each other.
### Team Vaults
- Added a new team vault feature.
/team vault: Opens a shared 54-slot inventory for your team.- Vault contents are saved to
teamvaults.ymland persist through server restarts.
## Bug Fixes & Improvements
- Refactored the team role management system for better stability.
- Fixed a bug where chat formatting was inconsistent for players not in a team.
- Corrected display issues in the
/team infoand/team onlinecommands.
Usable by all players
Toggles display of player’s team role prefix (Owner, Officer, Member) before their name in chat
Added team EXP boost feature:
Total EXP gained from mobs and ores increases by +1% per team member
Scales with team size dynamically
Added configurable settings in config.yml:
invite-expiry (default: 5 minutes) — controls how long team invitations last before expiring
max-team-size (default: 10) — maximum number of players allowed in a team
Enforced max-team-size limit:
Prevents inviting or accepting players if team size limit is reached
Added /team chat toggle command:
Usable by all players
Toggles between team-only chat and public chat
Shows message on toggle:
“Only team members can see your messages now.”
“Now everyone can see your messages.”
Updated chat handling:
When team chat is enabled, messages are only sent to online team members
When role prefix is enabled, player’s role is shown before their name in chat
Updated invite expiry handling:
Invitation expiry time is configurable via config.yml
Expired invites are cleaned up automatically
Added help messages for new commands /roles toggle and /team chat