Developer API

Public API for integrating mineTeams with external plugins.

Overview

mineTeams provides a public API module (plugin-api) under pl.minecodes.teams.api. It exposes:

  • Team and profile interfaces (TeamAPI, TeamServiceAPI, ProfileAPI, …)
  • Bukkit events for team lifecycle and membership changes

The API artifact is designed as a stable contract for external plugins. Runtime implementation lives in plugin-core.

Maven Dependency

<repository>
    <id>minecodes-releases</id>
    <url>https://maven.minecodes.pl/releases/</url>
</repository>

<dependency>
    <groupId>pl.minecodes.teams</groupId>
    <artifactId>plugin-api</artifactId>
    <version>1.5.0</version>
    <scope>provided</scope>
</dependency>

Gradle (Kotlin DSL)

repositories {
    maven("https://maven.minecodes.pl/releases/")
}

dependencies {
    compileOnly("pl.minecodes.teams:plugin-api:1.5.0")
}

plugin.yml

depend: [mineTeams]

Or soft-depend if integration is optional:

softdepend: [mineTeams]

Core Interfaces

TeamAPI

public interface TeamAPI {
    String getTag();
    String getName();
    UUID getLeader();
    void setLeader(UUID leader);
    boolean isLeader(UUID uuid);
    Set<UUID> getMembers();
    void addMember(UUID uuid);
    boolean isMember(UUID uuid);
    void removeMember(UUID uuid);
    Set<UUID> getDeputies();
    boolean isDeputy(UUID uuid);
    void addDeputy(UUID uuid);
    void removeDeputy(UUID uuid);
}

TeamServiceAPI

public interface TeamServiceAPI {
    TeamAPI getTeamByTag(String tag);
    TeamAPI getTeamByLeader(UUID leader);
    TeamAPI getTeamByMember(UUID member);
}

ProfileAPI / ProfileServiceAPI

public interface ProfileAPI {
    UUID getUuid();
    String getUsername();
    ProfileStatisticsAPI getStatistics();
}

public interface ProfileServiceAPI {
    ProfileAPI getProfileByUUID(UUID uuid);
    ProfileAPI getProfileByUsername(String username);
}

public interface ProfileStatisticsAPI {
    int getKills();
    int getDeaths();
    int getAssists();
    int getRanking();
    String getKDA();
}

Note: Service implementations run inside the plugin. Prefer events for cross-plugin reactions. If you need service lookups in a fork or companion plugin, depend on the same version of plugin-api and obtain services only through supported entry points provided by your deployment.

Events

All team events extend TeamEvent and provide getTeam().

EventExtra dataWhen
TeamCreateEventPlayer getPlayer()Team successfully created
TeamDeleteEventPlayer getPlayer()Team disbanded
TeamAddMemberEventUUID getMember()Member joined (invite accept / admin add)
TeamKickMemberEventUUID getMember()Member removed (kick / admin remove)

Example listener

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import pl.minecodes.teams.api.event.TeamCreateEvent;
import pl.minecodes.teams.api.event.TeamAddMemberEvent;
import pl.minecodes.teams.api.team.TeamAPI;

public class TeamsBridgeListener implements Listener {

    @EventHandler
    public void onTeamCreate(TeamCreateEvent event) {
        TeamAPI team = event.getTeam();
        // e.g. log or sync external systems
        String tag = team.getTag();
        String creator = event.getPlayer().getName();
    }

    @EventHandler
    public void onMemberJoin(TeamAddMemberEvent event) {
        TeamAPI team = event.getTeam();
        java.util.UUID memberId = event.getMember();
    }
}

Register the listener after mineTeams is enabled (e.g. in your plugin onEnable with softdepend/depend).

Integration Notes

  • Events fire on the Bukkit event bus via PluginManager.callEvent
  • TeamAPI instances from events reflect the team state at event time
  • Ranking and profile mutations are handled internally; listen for membership events rather than re-implementing ranking
  • On Redis networks, membership may also change from remote sync — design listeners to be idempotent when possible
  • Do not depend on plugin-core classes from third-party plugins; use plugin-api only

Versioning

ComponentArtifactCurrent version
Public APIpl.minecodes.teams:plugin-api1.5.0
Server pluginmineTeams-<version>-build.jar1.5.0

Breaking API changes require a major/minor bump of the published plugin-api artifact.