Skip to content

feat: Misiones por temporada con restricciones de mundo y región WorldGuard#15

Open
michumichifu wants to merge 1 commit intolino9999:masterfrom
michumichifu:feature/season-missions-world-region
Open

feat: Misiones por temporada con restricciones de mundo y región WorldGuard#15
michumichifu wants to merge 1 commit intolino9999:masterfrom
michumichifu:feature/season-missions-world-region

Conversation

@michumichifu
Copy link

Resumen

Agrega soporte para misiones temáticas por temporada que se fusionan con el pool global, más restricciones de mundo y región de WorldGuard.

Nuevas funcionalidades

1. Pool de misiones por temporada

Colocar un missions.yml dentro de seasons/season-N/. Sus misiones se fusionan con el pool global, no lo reemplazan. Si una misión de temporada usa la misma key que una global, la reemplaza (útil para dar más XP a misiones relevantes de la temporada).

plugins/BattlePass/
├── missions.yml                          ← Pool global (siempre activo)
└── seasons/season-2/
    └── missions.yml                      ← Pool de temporada (se fusiona)

2. Misiones restringidas por mundo (campo world:)

nether-kill-blazes:
  type: KILL_MOB
  target: BLAZE
  display-name: "Mata <amount> Blazes en el Nether"
  min-required: 10
  max-required: 25
  min-xp: 400
  max-xp: 600
  weight: 15
  world: world_nether

3. Misiones restringidas por región WorldGuard (campo region:)

pueblo-comercio:
  type: TRADE_VILLAGER
  target: ANY
  display-name: "Comercia <amount> veces en el Pueblo"
  min-required: 10
  max-required: 30
  min-xp: 250
  max-xp: 400
  weight: 12
  region: pueblo_spawn

WorldGuard es soft dependency. Si no está instalado, las misiones con region: simplemente no progresan. Sin errores.

Detalles técnicos

  • Mission.java / MissionTemplate.java: Campos world y region con constructores retrocompatibles
  • MissionGenerator.java: Método loadPoolFromConfig() que fusiona múltiples fuentes
  • MissionProgressTracker.java: Verifica mundo y región antes de contar progreso
  • ConfigManager.java: Carga seasonMissionsConfig desde carpeta de temporada (null-safe)
  • DatabaseManager.java: Auto-migración de daily_missions con columnas world/region
  • WorldGuard 7.0.9 + WorldEdit 7.3.0 como dependencias provided

Retrocompatible

  • Todos los campos nuevos son opcionales
  • Las misiones de temporada son aditivas
  • Migración de BD automática y no destructiva
  • WorldGuard completamente opcional

…dGuard

- Pool de misiones por temporada: seasons/season-N/missions.yml se fusiona con el global
- Misiones con mismo key que global la reemplazan (override para XP boosteado)
- Campo world: restringe progreso a un mundo específico
- Campo region: restringe progreso a una región de WorldGuard
- WorldGuard como soft dependency (opcional, sin él las misiones de región no progresan)
- Migración automática de BD: columnas world/region en daily_missions
- daily-missions-count sobreescribible por temporada
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant