StellaStella

Stella API

##Stella API

La StellaAPI expone métodos estáticos para interactuar con Stella desde tu propio plugin — consultar equipos, gestionar miembros, editar propiedades de equipos y comprobar membresías, todo sin crear una instancia.

INFO

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>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.github.33drygo</groupId>
    <artifactId>Stella</artifactId>
    <version>1.0.0</version>
    <scope>provided</scope>
</dependency>

Luego declara Stella como dependencia en tu plugin.yml:

name: MyPlugin
main: com.example.MyPlugin
version: 1.0
depend:      # usa soft-depend si Stella es opcional
  - stella

###Métodos de StellaAPI

Todos los métodos son estáticos en dev.drygo.stella.api.StellaAPI.

ADVERTENCIA

Los métodos que mutan (create/delete/set/add/remove) lanzan eventos de Bukkit y deben llamarse desde el hilo principal. Los eventos de jugador-equipo son cancelables, así que una mutación puede devolver false si un listener la cancela.

Consultas de equipos
  • ####Team getTeam(String id)

    Devuelve un equipo por su id, o null si no existe.
Team red = StellaAPI.getTeam("red");
  • ####boolean teamExists(String id)

    Si existe un equipo con ese id.

  • ####List<Team> getTeams()

    Todos los equipos registrados.

  • ####List<String> getTeamIds()

    Los ids de todos los equipos registrados.

Consultas de jugadores
  • ####Team getMainTeam(UUID player)

    El equipo de mayor prioridad del jugador, o null si no está en ninguno.
Team main = StellaAPI.getMainTeam(player.getUniqueId());
  • ####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
  • ####Team createTeam(String id, int priority)

    Crea un equipo y lo devuelve. Devuelve null si el id es inválido o ya está en uso. Lanza TeamCreateEvent.
Team team = StellaAPI.createTeam("red", 10);
  • ####boolean deleteTeam(String id)

    Elimina un equipo. Devuelve false si no existía. Lanza TeamDeleteEvent.

  • ####boolean setColor(String teamId, String color)

    Establece el color hex (#RRGGBB) del equipo. Devuelve false si 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
  • ####boolean addMember(String teamId, UUID player)

    Añade un jugador a un equipo. Devuelve false si el equipo/jugador es inválido, el jugador ya es miembro, o un listener canceló PlayerJoinTeamEvent.
StellaAPI.addMember("red", player.getUniqueId());
  • ####boolean removeMember(String teamId, UUID player)

    Quita un jugador de un equipo. Devuelve false si el equipo/jugador es inválido, el jugador no es miembro, o un listener canceló PlayerLeaveTeamEvent.

###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 de Team — esos persisten en teams.yml, lanzan eventos y refrescan los hooks. Mutar el Team directamente no hace nada de eso.


###Eventos de Stella

Todos los eventos están en dev.drygo.stella.api.event y se manejan con listeners normales de Bukkit.

Click para expandir
  • ####PlayerJoinTeamEvent

    Cancelable. Se lanza antes de añadir un jugador a un equipo.
@EventHandler
public void onJoin(PlayerJoinTeamEvent event) {
    UUID player = event.getPlayer();
    Team team = event.getTeam();
    // event.setCancelled(true); // para vetar la membresía
}
  • ####PlayerLeaveTeamEvent

    Cancelable. Se lanza antes de quitar un jugador de un equipo.
@EventHandler
public void onLeave(PlayerLeaveTeamEvent event) {
    UUID player = event.getPlayer();
    Team team = event.getTeam();
}
  • ####TeamCreateEvent

    Se lanza después de crear un equipo. No cancelable.
@EventHandler
public void onCreate(TeamCreateEvent event) {
    Bukkit.getLogger().info("Team created: " + event.getTeam().getId());
}
  • ####TeamDeleteEvent

    Se lanza después de eliminar un equipo. No cancelable. La instantánea del Team aún es legible.
@EventHandler
public void onDelete(TeamDeleteEvent event) {
    Bukkit.getLogger().info("Team deleted: " + event.getTeam().getId());
}

###Notas

  • Todos los métodos de StellaAPI son estáticos — no hace falta instanciar.
  • Las mutaciones persisten en teams.yml automáticamente y refrescan los hooks de LuckPerms / equipos de Minecraft.
  • getMainTeam / getPlayerTeams ordenan por priority (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 cancelarse; los eventos de crear/eliminar equipo se lanzan después y no.

###Referencias