xTeams API 🛠️
💻 xTeams API
The xTeamsAPI provides static methods to interact programmatically with xTeams. You can manage teams, their members, priorities, display names, and check team membership directly from your code without creating an instance.
🛠 Installation
Add the repository and dependency for xTeams. Replace the version with the latest published tag.
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.33drygo</groupId>
<artifactId>xTeams</artifactId>
<version>1.3.30</version>
<scope>provided</scope>
</dependency>After adding the dependency, add xTeams as dependency in your plugin.
name: MyPlugin
main: com.example.MyPlugin.MyPlugin
version: 1.0
depend: # depend if API is required, soft-depend if optional
- xTeams📋 XTeamsAPI Methods
All player-facing methods accept the player's nickname as input. Internally xTeams will translate it to the configured identifier (UUID or nickname) according to
settings.identifier_modeinconfig.yml, so you don't need to handle that yourself.
Click to expand
Returns a team by its internal name, orTeam getTeam(String name)nullif it doesn't exist.
Team myTeam = XTeamsAPI.getTeam("Red");
Returns all existing teams.Set<Team> getAllTeams()
Set<Team> teams = XTeamsAPI.getAllTeams();
Returns a list of all team names.List<String> listTeamNames()
List<String> teamNames = XTeamsAPI.listTeamNames();
Creates a new team and saves it to disk. Firesvoid createTeam(String name, String displayName, int priority, Set<String> members)TeamCreateEvent. No-op if a team with the same name already exists.
XTeamsAPI.createTeam("Red", "&cRed Team", 1, new HashSet<>(Arrays.asList("Steve", "Alex")));
Deletes a team and saves to disk. Firesvoid deleteTeam(Team team)TeamDeleteEvent.
XTeamsAPI.deleteTeam(myTeam);
Updates the team's display name and saves to disk.void setDisplayName(Team team, String displayName)
XTeamsAPI.setDisplayName(myTeam, "&c&lRed Team");
Returns a snapshot of the team. Keys:Map<String, Object> getTeamInfo(Team team)name(String),displayName(String),priority(int),members(Set<String>of resolved nicknames — never raw UUIDs).
Map<String, Object> info = XTeamsAPI.getTeamInfo(myTeam);
String displayName = (String) info.get("displayName");
@SuppressWarnings("unchecked")
Set<String> members = (Set<String>) info.get("members");
Adds a player (by nickname) to a team. Firesvoid joinTeam(String player, Team team)TeamJoinEvent.
XTeamsAPI.joinTeam("Steve", myTeam);
Removes a player from a team. Firesvoid leaveTeam(String player, Team team)TeamLeaveEvent.
XTeamsAPI.leaveTeam("Steve", myTeam);
Adds a player to every existing team. Fires onevoid joinAllTeams(String player)TeamJoinEventper team joined.
XTeamsAPI.joinAllTeams("Alex");
Removes a player from every team they belong to. Fires onevoid leaveAllTeams(String player)TeamLeaveEventper team left.
XTeamsAPI.leaveAllTeams("Alex");
Checks if a player is in a specific team.boolean isInTeam(String player, Team team)
boolean inTeam = XTeamsAPI.isInTeam("Steve", myTeam);
Checks if a player is in at least one team.boolean isInAnyTeam(String player)
boolean inAnyTeam = XTeamsAPI.isInAnyTeam("Steve");
Returns every team the player belongs to.List<Team> getPlayerTeams(String player)
List<Team> playerTeams = XTeamsAPI.getPlayerTeams("Steve");
Returns the player's primary team — the one with the highestTeam getPlayerTeam(String player)priority. Returnsnullif the player has no teams.
Team primaryTeam = XTeamsAPI.getPlayerTeam("Steve");🧱 Team Model
The dev.drygo.XTeams.Models.Team object exposes the following:
| Method | Returns | Notes |
|---|---|---|
getName() |
String |
Internal team name (the key used by getTeam). |
getDisplayName() |
String |
Formatted display name. May contain color codes. |
getPriority() |
int |
Higher = more important. |
getMembers() |
Set<String> |
Raw identifiers — UUID strings or nicknames depending on identifier_mode. |
getResolvedMemberNames() |
Set<String> |
Always nicknames, safe to show to users. |
hasMember(String identifier) |
boolean |
Checks against the raw set; for a nickname-aware check use XTeamsAPI.isInTeam. |
🎉 XTeams Events
Click to expand
All events extend org.bukkit.event.Event and can be listened to with normal Bukkit listeners.
TeamCreateEvent— fired after a team is created.
@EventHandler
public void onTeamCreate(TeamCreateEvent event) {
Team team = event.getTeam();
Bukkit.getLogger().info("Team created: " + team.getName());
}TeamDeleteEvent— fired after a team is deleted. TheTeamobject is gone, only the name remains.
@EventHandler
public void onTeamDelete(TeamDeleteEvent event) {
String teamName = event.getTeamName();
Bukkit.getLogger().info("Team deleted: " + teamName);
}TeamJoinEvent— fired after a player joins a team.
@EventHandler
public void onTeamJoin(TeamJoinEvent event) {
OfflinePlayer player = event.getPlayer();
String teamName = event.getTeamName();
Bukkit.getLogger().info(player.getName() + " joined " + teamName);
}TeamLeaveEvent— fired after a player leaves a team.
@EventHandler
public void onTeamLeave(TeamLeaveEvent event) {
OfflinePlayer player = event.getPlayer();
String teamName = event.getTeamName();
Bukkit.getLogger().info(player.getName() + " left " + teamName);
}💡 Notes
- All API methods are static, so you do not need to instantiate
XTeamsAPI. joinTeam/leaveTeamand theManagerunderneath persist changes toconfig.ymlautomatically.getPlayerTeamresolves ties onpriorityby returning the first match — design your priorities to be unique if order matters.- Events fire after the change is applied; they cannot be cancelled.