# Configuración principal

## Configuración principal

`config/main.yml` define el comportamiento global del plugin.

Aquí decides persistencia, rotación, límites, economía interna, Bedrock e integraciones externas.

### Ejemplo completo de `config/main.yml`

```yaml
menu:
  title: "<gold>Quests"
  rows: 6
  enable-search: true
  enable-favorites: true
  categories:
    combate:
      icon: "MATERIAL:IRON_SWORD"
      slot: 10
    recoleccion:
      icon: "MATERIAL:WHEAT"
      slot: 12
    historia:
      icon: "MATERIAL:BOOK"
      slot: 14

visuals:
  bossbar:
    enabled: true
    color: GREEN
    style: SEGMENTED_10
  waypoint:
    enabled: true

rotation:
  timezone: "UTC"
  daily:
    enabled: true
    reset-at: "00:00"
  weekly:
    enabled: true
    reset-day: "MONDAY"
    reset-at: "00:00"

database:
  type: SQLITE
  sqlite:
    file: "plugins/Quests/data.db"
  mysql:
    host: "127.0.0.1"
    port: 3306
    database: "quests"
    username: "root"
    password: "change-me"
    pool-size: 10

reputation:
  enabled: true
  factions:
    guardia:
      display: "Guardia"
    mercaderes:
      display: "Mercaderes"
  multipliers:
    guardia:
      50: 1.10
      100: 1.25

points:
  enabled: true
  starting-balance: 0

shop:
  enabled: true
  title: "<gold>Tienda de puntos"
  items:
    diamante:
      slot: 20
      cost: 30
      item: "MATERIAL:DIAMOND"
      amount: 1
    pan:
      slot: 21
      cost: 5
      item: "MATERIAL:BREAD"
      amount: 8

party:
  enabled: true
  max-distance: 32
  require-same-world: true
  share-progress: true
  proportional-rewards: true

antiabuse:
  max-active-quests: 5
  progress-cooldown-ms: 1500
  prevent-mob-farm-abuse: true
  prevent-afk-sharing: true

bonus:
  streak:
    enabled: true
    max-days: 7
    rewards:
      3:
        points: 10
      7:
        points: 25
  speed-completion:
    enabled: true
    threshold-seconds: 600
    multiplier: 1.20

storylines:
  enabled: true
  consume-interact: true

titles:
  enabled: true
  entries:
    guardian:
      display: "Guardián"
      requires:
        reputation:
          guardia: 100

websocket:
  enabled: false
  url: "ws://127.0.0.1:8080/ws"
  token: "change-me"
  events:
    - quest_accept
    - quest_progress
    - quest_complete

discord:
  enabled: false
  webhook-url: "https://discord.com/api/webhooks/..."
  send:
    quest-complete: true
    weekly-reset: true

bedrock:
  forms:
    enabled: true
    page-size: 12
    labels:
      filter: "<green>Filtros"
      search: "<yellow>Buscar"
      previous: "<gray>Pagina anterior"
      next: "<gray>Pagina siguiente"
      back: "<gray>Volver"
      close: "<gray>Cerrar"
      empty: "<gray>Sin resultados"
      info:
        filter: "Filtro"
        search: "Busqueda"
        page: "Pagina"
      filter-title: "<green>Filtros"
      filter-content: "<gray>Selecciona un filtro"
      search-title: "<yellow>Buscar"
      search-input: "Texto"
```

### Cómo leer esta configuración

### `menu`

Controla la GUI principal de Java Edition.

Aquí defines título, tamaño y categorías visibles.

Usa categorías estables. Eso simplifica filtros y diseño de quests.

### `visuals`

Agrupa feedback visual como bossbar y waypoint.

Actívalo si quieres orientar al jugador durante el progreso. Si tu servidor prioriza limpieza visual, mantenlo mínimo.

### `rotation`

Define el contexto temporal del plugin.

Aunque el pool viva en `quests/rotation.yml`, aquí decides si la rotación está activa y cuándo resetea.

### `database`

Selecciona persistencia local o remota.

* Usa `SQLITE` para despliegues simples.
* Usa `MYSQL` para entornos grandes o integraciones externas.

Si `type` es `SQLITE`, el bloque `mysql` puede quedarse como plantilla.

### `reputation`

Activa facciones y multiplicadores.

Los multiplicadores se aplican por umbral. En el ejemplo, `guardia` aumenta rewards a partir de 50 y 100 puntos de reputación.

### `points` y `shop`

`points` habilita la economía interna.

`shop` define el catálogo, coste y reward de cada compra.

Mantén costes alineados con el ritmo real de completado de quests.

### `party`

Controla cómo se comparte progreso.

Las claves más importantes son:

* `max-distance`
* `require-same-world`
* `share-progress`
* `proportional-rewards`

Empieza con reglas estrictas. Luego abre más opciones si el diseño lo necesita.

### `antiabuse`

Es el bloque más importante para producción.

Protege el sistema frente a granjas, macros y progreso artificial.

Recomendación inicial:

* `max-active-quests: 5`
* `progress-cooldown-ms: 1500`
* bloqueo de AFK y mob farms activado

### `bonus`

Añade retención y recompensa por eficiencia.

* `streak` premia constancia.
* `speed-completion` premia tiempo bajo desde aceptación hasta completion.

No uses multiplicadores demasiado altos. Distorsionan la economía del plugin.

### `storylines`

Activa el flujo narrativo global.

`consume-interact` sirve para evitar dobles disparos al interactuar con NPC o triggers narrativos.

### `titles`

Permite desbloquear títulos por condiciones.

El ejemplo usa reputación de la facción `guardia`, pero también puedes combinarlo con completados o hitos.

### `websocket`

Publica eventos en tiempo real a sistemas externos.

Déjalo desactivado hasta tener un consumidor estable y autenticación correcta.

### `discord`

Envía notificaciones simples por webhook.

Es ideal para anuncios de completado, resets semanales o hitos públicos.

### `bedrock`

Ajusta la experiencia para forms.

Aquí conviene:

* mantener labels cortos
* usar `page-size` moderado
* probar cada flujo en un cliente Bedrock real

### Configuración mínima recomendada

Si quieres abrir rápido el plugin, empieza con estos bloques:

* `database`
* `rotation`
* `antiabuse`
* `points`
* `shop`
* `bedrock`

Luego añade `reputation`, `storylines`, `websocket` y `discord`.

### Checklist antes de ir a producción

1. Verifica el tipo de base de datos.
2. Ajusta la zona horaria de rotación.
3. Limita quests activas y cooldowns.
4. Revisa costes de tienda y rewards.
5. Prueba Bedrock si usas Geyser.
6. Activa WebSocket o Discord solo después de validar payloads.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://camiladev.gitbook.io/documentation/quests/guia-de-administracion/configuracion-principal.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
