Skip to content

Extending

DarkBladeDev edited this page Feb 21, 2026 · 2 revisions

Extender el motor (API)

CEE expone interfaces en com.darkbladedev.cee.api para extender el motor desde otro plugin.

Qué se puede registrar

Desde CustomEventEngine:

  • registerAction(id, factory)
  • registerCondition(id, factory)
  • registerTrigger(id, factory)
  • registerScope(id, factory)
  • registerChunkStrategy(id, strategy)

Ver: API Reference

Implementar una Action

public final class MyAction implements Action {
  @Override
  public void execute(EventContext context) {
    context.getWorld().strikeLightning(context.getWorld().getSpawnLocation());
  }
}

Registro (en onEnable de tu plugin, suponiendo que obtienes el engine):

engine.registerAction("my_action", config -> new MyAction());

Implementar una Condition

public final class MyCondition implements Condition {
  @Override
  public boolean evaluate(EventContext context) {
    return context.getServer().getOnlinePlayers().size() >= 10;
  }
}

Registro:

engine.registerCondition("my_condition", config -> new MyCondition());

Implementar un Trigger

Un trigger debe implementar Trigger y llamar al callback del motor con un TriggerContext.

  • Si entregas location, el evento se ejecuta en el chunk de esa ubicación.
  • Si no entregas location, debes al menos entregar world para que el motor pueda resolver target.

Implementar un Scope

Un scope devuelve un conjunto de chunks a ocupar partiendo del chunk origen.

Implementar una ChunkSelectionStrategy

La estrategia se usa cuando el trigger no entrega location.

  • Entrada: World y TriggerContext.
  • Retorno: Optional<ChunkPos>.

Obtener el engine

La forma exacta de obtener una instancia de CustomEventEngine depende de cómo expongas el plugin en tu servidor.

  • En el estado actual del código, EventEngine implementa CustomEventEngine.
  • Esta wiki asume que el plugin podría exponer una instancia vía JavaPlugin (por ejemplo con un getter) o registrarla como servicio Bukkit.

Si necesitas formalizar esto (Service API), se recomienda registrar el engine en ServicesManager.

Clone this wiki locally