xTeamsxTeams

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_mode in config.yml, so you don't need to handle that yourself.

Click to expand
  • Team getTeam(String name)

    Returns a team by its internal name, or null if it doesn't exist.
Team myTeam = XTeamsAPI.getTeam("Red");
  • Set<Team> getAllTeams()

    Returns all existing teams.
Set<Team> teams = XTeamsAPI.getAllTeams();
  • List<String> listTeamNames()

    Returns a list of all team names.
List<String> teamNames = XTeamsAPI.listTeamNames();
  • void createTeam(String name, String displayName, int priority, Set<String> members)

    Creates a new team and saves it to disk. Fires TeamCreateEvent. No-op if a team with the same name already exists.
XTeamsAPI.createTeam("Red", "&cRed Team", 1, new HashSet<>(Arrays.asList("Steve", "Alex")));
  • void deleteTeam(Team team)

    Deletes a team and saves to disk. Fires TeamDeleteEvent.
XTeamsAPI.deleteTeam(myTeam);
  • void setDisplayName(Team team, String displayName)

    Updates the team's display name and saves to disk.
XTeamsAPI.setDisplayName(myTeam, "&c&lRed Team");
  • Map<String, Object> getTeamInfo(Team team)

    Returns a snapshot of the team. Keys: 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");
  • void joinTeam(String player, Team team)

    Adds a player (by nickname) to a team. Fires TeamJoinEvent.
XTeamsAPI.joinTeam("Steve", myTeam);
  • void leaveTeam(String player, Team team)

    Removes a player from a team. Fires TeamLeaveEvent.
XTeamsAPI.leaveTeam("Steve", myTeam);
  • void joinAllTeams(String player)

    Adds a player to every existing team. Fires one TeamJoinEvent per team joined.
XTeamsAPI.joinAllTeams("Alex");
  • void leaveAllTeams(String player)

    Removes a player from every team they belong to. Fires one TeamLeaveEvent per team left.
XTeamsAPI.leaveAllTeams("Alex");
  • boolean isInTeam(String player, Team team)

    Checks if a player is in a specific team.
boolean inTeam = XTeamsAPI.isInTeam("Steve", myTeam);
  • boolean isInAnyTeam(String player)

    Checks if a player is in at least one team.
boolean inAnyTeam = XTeamsAPI.isInAnyTeam("Steve");
  • List<Team> getPlayerTeams(String player)

    Returns every team the player belongs to.
List<Team> playerTeams = XTeamsAPI.getPlayerTeams("Steve");
  • Team getPlayerTeam(String player)

    Returns the player's primary team — the one with the highest priority. Returns null if 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. The Team object 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 / leaveTeam and the Manager underneath persist changes to config.yml automatically.
  • getPlayerTeam resolves ties on priority by returning the first match — design your priorities to be unique if order matters.
  • Events fire after the change is applied; they cannot be cancelled.

🔗 References