Skip to content

Releases: richicru/40ServidoresMC

v3.0.3 — Fix: carpeta del plugin no se generaba

Choose a tag to compare

@richicru richicru released this 04 Sep 17:01

Bug crítico corregido

Un usuario reportó que al instalar v3.0.2 la carpeta plugins/40ServidoresMC/ no se creaba. El plugin funcionaba con defaults hardcodeados, pero:

  • ❌ No podías editar config.yml (porque no existía).
  • ❌ Salía el warning ¡Tu configuración es de una versión más antigua! en cada arranque.
  • ❌ Cualquier nueva opción de config no se podía personalizar.

Causa

BukkitConfigurationAdapter.reload() simplemente hacía YamlConfiguration.loadConfiguration(file) sin llamar antes a saveDefaultConfig(). En install nuevo, ese load devuelve config vacío silenciosamente, y nunca se crea ni la carpeta ni el archivo.

Fix

BukkitPlugin.onEnable() ahora llama a saveDefaultConfig() antes de instanciar el adapter. Esto:

  • Crea plugins/40ServidoresMC/ si no existe.
  • Copia config.yml desde los resources del JAR si no existe.
  • Es idempotente: no pisa configs que el usuario ya haya personalizado.

Verificación

Validado en Docker local con Paper 1.20.4 y Folia 1.20.4:

/data/plugins/40ServidoresMC/config.yml   (918 bytes, idéntico al resource)

Si actualizas desde v3.0.2 → v3.0.3, tu config.yml existente se respeta sin cambios (saveDefaultConfig solo copia si el archivo NO existe).

v3.0.2 — Folia compatible

Choose a tag to compare

@richicru richicru released this 04 Sep 15:57

Novedades

  • ✅ Compatible con Folia (regionized multithreading Paper fork).
    Verificado arrancando el JAR en Paper 1.20.4 y Folia 1.20.4 con Docker.
  • 🔧 Refactor de schedulers: cualquier callback async que toca la API de Bukkit
    ahora pasa por CSPlugin.runSyncForPlayer(...) / runSyncGlobal(...).
    En Folia, se enruta por EntityScheduler / GlobalRegionScheduler respectivamente;
    en Paper clásico, sigue siendo BukkitScheduler.
  • 🩹 plugin.yml: folia-supported: true (sin él, Folia rechaza el plugin).

Infra nueva en este fork

  • docker-compose.test.yml + scripts en scripts/ para validarPaper y Folia en local.
  • docs/testing/Local-Test-Setup.md guía paso a paso.
  • .opencode/skills/40servidoresmc-paper-folia-test.md skill para AI sobre los patrones.

Compatibilidad

Servidor Estado
Spigot / Paper ✅ Sin cambios
Folia NUEVO
Sponge (API 7) ✅ Sin cambios
Glowing / Pufferfish / Purpur ✅ (idem Spigot/Paper)

Instalación

# Colocar el JAR en plugins/ o mods/ según plataforma
cp 40ServidoresMC-3.0.2-Bukkit.jar /server/plugins/    # Paper/Folia
cp 40ServidoresMC-3.0.2-Sponge-API7.jar /server/mods/  # Sponge 7.4

Tests

  • 100 tests unitarios siguen pasando.

v3.0.1

Choose a tag to compare

@richicru richicru released this 04 Sep 15:05

Mejoras sobre v3.0

  • Gson empaquetado (fix latente): el JAR ahora incluye Gson relocado a com.cadiducho.cservidoresmc.lib.gson, evitando NoClassDefFoundError en servidores que no lo traen.
  • Circuit breaker en ApiClient: tras 3 fallos consecutivos, la API no se llama durante un backoff exponencial (5 s → 10 s → ... cap 5 min). Protege de martillear la API cuando está caída.
  • User-Agent informativo: ahora se envía 40ServidoresMC/<v>/<platform>-<serverVersion>/Java<major>-<vendor> a la API y a GitHub. Facilita identificar el entorno cliente.
  • Cache dedicado para /stats40: nuevo stats-cmd-cache-seconds (default 30 s) configurable, separado del cache de placeholders (5 min). Evita martillear la API ejecutando /stats40 repetidamente. Valor 0 desactiva.

Tests

  • 100 tests unitarios (anteriormente 74) en 13 clases.

Instalación

  • Colocar 40ServidoresMC-3.0.1-Bukkit.jar (Bukkit/Spigot/Paper/Glowstone 1.7.10+) en plugins/.
  • Colocar 40ServidoresMC-3.0.1-Sponge-API7.jar (Sponge 7.4.0+) en mods/.
  • Se genera config.yml o 40ServidoresMC.conf al primer arranque.

Historial

  • v3.0 — primera versión de este fork.