Skip to content

DSL Reference

DarkBladeDev edited this page Feb 22, 2026 · 3 revisions

DSL YAML — Referencia completa

Estructura

event:
  id: <string>
  trigger: <trigger>
  conditions: <conditions>
  flow: <flow>
  tasks: <tasks>
  scope: <scope>
  expansion: <expansion>
  target: <target>
  chunk_load_rules: <chunk_load_rules>
  chunk_unload_rules: <chunk_unload_rules>
  variables: <variables>

Defaults (si no declaras la sección):

  • id: nombre del archivo sin .yml.
  • trigger: type: interval con every: 60s.
  • conditions: vacío.
  • flow: vacío.
  • tasks: vacío.
  • scope: type: chunk_radius con radius: 0.
  • expansion: deshabilitada.
  • target: random_loaded_chunk.
  • chunk_load_rules: REJECT.
  • chunk_unload_rules: PAUSE.
  • variables: vacío.

event.id

  • Tipo: string
  • Default: nombre del archivo.

event.trigger

Ver: Triggers

event.conditions

Ver: Conditions

event.flow

Ver: Flow (nodos)

event.tasks

Declara tasks reutilizables dentro del evento.

event:
  tasks:
    add:
      params:
        a: number
        b: number
      returns:
        sum: number
      flow:
        nodes:
          - return:
              sum: "= a + b"

Invocación desde el flow:

event:
  flow:
    nodes:
      - task:
          name: "add"
          with: { a: 2, b: 3 }
          into: { sum: "result" }

Notas:

  • Además de event.tasks, CEE carga tasks globales desde plugins/CustomEventEngine/tasks/*.yml (sección raíz tasks:).
  • Validación: en carga se detectan tasks inexistentes, parámetros desconocidos y faltantes requeridos.

scope y target

event.scope

Actualmente existe el scope:

  • chunk_radius (default)
event:
  scope:
    type: chunk_radius
    radius: 2

Efecto: el runtime “ocupa” el chunk origen y los chunks alrededor según el radio.

event.target

Si el trigger no trae ubicación, CEE resuelve el target a partir del world (si existe) y la estrategia.

Estrategias registradas por defecto:

  • random_loaded_chunk (default): elige un chunk aleatorio entre los chunks cargados del mundo.
event:
  target:
    strategy: random_loaded_chunk

event.expansion

Permite aumentar progresivamente los locks del runtime.

event:
  expansion:
    enabled: true
    max_radius: 4
    step: 1
    interval: 20t
  • enabled (bool, default false)
  • max_radius (int, default 0)
  • step (int, default 1)
  • interval (ticks) admite formatos: 20t, 5s, 1m, etc.

Notas:

  • La expansión se evalúa de forma periódica por una task global. Si interval <= 0, se usa expansion.interval-ticks del config.yml.

chunk_load_rules y chunk_unload_rules

Los valores se parsean desde YAML, pero no están aplicados al runtime en el código actual.

  • chunk_load_rules: REJECT | CANCEL_EXISTING | QUEUE
  • chunk_unload_rules: PAUSE | CANCEL | KEEP_LOADED

Recomendación: tratarlos como “reservados/experimentales”.

event.variables

Ver: Variables

Clone this wiki locally