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-apiand obtain services only through supported entry points provided by your deployment.
Events
All team events extend TeamEvent and provide getTeam().
| Event | Extra data | When |
|---|---|---|
TeamCreateEvent | Player getPlayer() | Team successfully created |
TeamDeleteEvent | Player getPlayer() | Team disbanded |
TeamAddMemberEvent | UUID getMember() | Member joined (invite accept / admin add) |
TeamKickMemberEvent | UUID 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 TeamAPIinstances 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-coreclasses from third-party plugins; useplugin-apionly
Versioning
| Component | Artifact | Current version |
|---|---|---|
| Public API | pl.minecodes.teams:plugin-api | 1.5.0 |
| Server plugin | mineTeams-<version>-build.jar | 1.5.0 |
Breaking API changes require a major/minor bump of the published plugin-api artifact.