Stella API
##Stella API
La StellaAPI expone métodos estáticos para interactuar con Stella desde tu propio mod — consultar equipos, gestionar miembros, editar propiedades de equipos y comprobar membresías, todo sin crear una instancia.
En toda la API los jugadores se identifican por UUID. Usa StellaAPI.resolvePlayer(name) para convertir un nombre en UUID, y StellaAPI.getPlayerName(uuid) para lo inverso.
###Instalación
Añade el repositorio de JitPack y la dependencia. Reemplaza la versión con el último tag publicado.
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
modCompileOnly 'com.github.33drygo:StellaMod:1.0.0'
}Usa modCompileOnly (no compileOnly) para que el plugin Fabric Loom trate a Stella como una dependencia de mod en tiempo de compilación.
Luego declara Stella en el bloque suggests de tu fabric.mod.json (usa depends si Stella es obligatorio):
{
"schemaVersion": 1,
"id": "mymod",
"version": "1.0.0",
"suggests": {
"stella": "*"
}
}###Métodos de StellaAPI
Todos los métodos son estáticos en dev.drygo.stella.api.StellaAPI.
Los métodos que mutan (create/delete/set/add/remove) lanzan los eventos Fabric de Stella y deben llamarse desde el hilo del servidor. Los eventos de jugador-equipo son cancelables, así que una mutación puede devolver false si un listener la veta.
Consultas de equipos
####
Devuelve un equipo por su id, oTeam getTeam(String id)nullsi no existe.
Team red = StellaAPI.getTeam("red");
Consultas de jugadores
####
El equipo de mayor prioridad del jugador, oTeam getMainTeam(UUID player)nullsi no está en ninguno.
Team main = StellaAPI.getMainTeam(player.getUuid());####
List<Team> getPlayerTeams(UUID player)Todos los equipos del jugador, mayor prioridad primero.
####
boolean isInTeam(UUID player, String teamId)Si el jugador es miembro de un equipo específico.
####
boolean isInAnyTeam(UUID player)Si el jugador pertenece al menos a un equipo.
####
UUID resolvePlayer(String name)Resuelve un nombre a UUID (en línea, en caché o conocido sin conexión), o
null.####
String getPlayerName(UUID player)El último nombre conocido para un UUID, o
null.
Mutaciones de equipos
####
Crea un equipo y lo devuelve. DevuelveTeam createTeam(String id, int priority)nullsi el id es inválido o ya está en uso. Lanza el eventoTEAM_CREATED.
Team team = StellaAPI.createTeam("red", 10);####
boolean deleteTeam(String id)Elimina un equipo. Devuelve
falsesi no existía. Lanza el eventoTEAM_DELETED.####
boolean setColor(String teamId, String color)Establece el color hex (
#RRGGBB) del equipo. Devuelvefalsesi el equipo no existe.####
boolean setDisplayName(String teamId, String displayName)Establece el nombre visible del equipo.
####
boolean setPriority(String teamId, int priority)Establece la prioridad del equipo.
Mutaciones de membresía
####
Añade un jugador a un equipo. Devuelveboolean addMember(String teamId, UUID player)falsesi el equipo/jugador es inválido, el jugador ya es miembro, o un listener vetó el eventoPLAYER_JOIN_TEAM.
StellaAPI.addMember("red", player.getUuid());####
Quita un jugador de un equipo. Devuelveboolean removeMember(String teamId, UUID player)falsesi el equipo/jugador es inválido, el jugador no es miembro, o un listener vetó el eventoPLAYER_LEAVE_TEAM.
###Modelo Team
El objeto dev.drygo.stella.team.Team expone:
| Método | Devuelve | Notas |
|---|---|---|
getId() |
String |
El id del equipo (siempre en minúsculas). |
getDisplayName() |
String |
El nombre visible. Puede contener códigos de color. |
getColor() |
String |
Color hex, ej. #FF5555. |
getPriority() |
int |
Mayor = más importante. |
getMembers() |
Set<UUID> |
UUIDs de los miembros. |
Prefiere los mutadores de
StellaAPI(setColor,addMember, …) sobre los setters deTeam— esos persisten enteams.json, lanzan eventos y refrescan el hook del scoreboard. Mutar elTeamdirectamente no hace nada de eso.
###Eventos de Stella
En Fabric los eventos se exponen como Events de Fabric en dev.drygo.stella.api.TeamEvents, no como listeners de Bukkit. Registra un callback en el evento que te interese:
Click para expandir
####
Cancelable. Se lanza antes de añadir un jugador a un equipo. DevuelveTeamEvents.PLAYER_JOIN_TEAMActionResult.FAILpara vetar la membresía; devuelveActionResult.PASSpara permitirla.
TeamEvents.PLAYER_JOIN_TEAM.register((player, team) -> {
// return ActionResult.FAIL; // para vetar la membresía
return ActionResult.PASS;
});####
Cancelable. Se lanza antes de quitar un jugador de un equipo. DevuelveTeamEvents.PLAYER_LEAVE_TEAMActionResult.FAILpara vetar la salida.
TeamEvents.PLAYER_LEAVE_TEAM.register((player, team) -> {
return ActionResult.PASS;
});####
Se lanza después de crear un equipo. No cancelable.TeamEvents.TEAM_CREATED
TeamEvents.TEAM_CREATED.register((team) -> {
System.out.println("Team created: " + team.getId());
});####
Se lanza después de eliminar un equipo. No cancelable. La instantánea delTeamEvents.TEAM_DELETEDTeamaún es legible.
TeamEvents.TEAM_DELETED.register((team) -> {
System.out.println("Team deleted: " + team.getId());
});Las firmas exactas de los callbacks de TeamEvents deberían confirmarse contra el código fuente publicado antes de depender de ellas.
###Notas
- Todos los métodos de
StellaAPIson estáticos — no hace falta instanciar. - Las mutaciones persisten en
teams.jsonautomáticamente y refrescan el hook del scoreboard. En Fabric no hay hook de LuckPerms. getMainTeam/getPlayerTeamsordenan porpriority(mayor primero); haz las prioridades únicas si el orden exacto importa.- Los eventos de jugador-equipo se lanzan antes de aplicar el cambio y pueden vetarse con
ActionResult.FAIL; los eventos de crear/eliminar equipo se lanzan después y no.