Zaroz
Unidades que controla tu código

El helper para Paper y Velocity

Fase 2, en desarrollo. Esta página describe el diseño de zaroz-minecraft-helper (Java 21, Gradle, MIT). Los nombres y opciones pueden cambiar hasta la primera versión 1.x, que se versiona con la versión mayor del contrato.

MóduloQué es
commoncliente del contrato (lee /zaroz/*.json, socket de señales y long-polls), cliente de la API de Units (se autentica con /zaroz/credentials/token, releyéndolo ante un 401), verificador de firmas de webhooks, eventos tipados
paperun plugin para servidores Paper
velocityun plugin para proxies Velocity

Paper

  • Señala ready tras ServerLoadEvent.
  • Señala busy en el primer ingreso e idle tras idle_grace_seconds sin jugadores (configurable).
  • Señala accepting false al llegar a tu capacidad configurada y true por debajo.
  • Registra un servicio ZarozUnit (ServicesManager de Bukkit) con la clave, etiquetas, user_data y asignación, y lanza UnitAllocatedEvent cuando llega una asignación.
  • Con el aviso de drenaje envía un mensaje configurable y pide al proxy que mueva a los jugadores a un lobby antes de SIGTERM.

La persistencia del mundo sigue siendo tuya: descargar al arrancar, subir con SIGTERM, a tu propio bucket.

JavaCode
ZarozUnit unit = Bukkit.getServicesManager().load(ZarozUnit.class); getServer().getPluginManager().registerEvents(new Listener() { @EventHandler void onAllocated(UnitAllocatedEvent e) { Match match = Match.fromJson(e.userData()); // la lista que enviaste a allocate startMatch(match); } }, this);

Velocity

  • Mantiene la lista de servidores del proxy sincronizada con uno o más Workloads: lista las unidades listas y sigue el long-poll de eventos (unit.ready añade <clave>.<workload>, unit.draining y unit.destroyed lo quitan).
  • Reparte los ingresos entre los lobbies que aceptan jugadores.
  • Una API de duelos para tus plugins: allocate en un Workload configurado con el grupo en user_data, y envía a los jugadores cuando llega unit.allocation_delivered.
  • Una API de parcelas: crear por clave con start: true y esperar unit.ready.

El Workload del proxy necesita un principal de servicio con units.control sobre los Workloads donde crea unidades y units.read sobre los que solo observa.

Mira el repositorio example-game-network para una red completa construida con él.

Last modified on