Releases: richicru/40ServidoresMC
Releases · richicru/40ServidoresMC
Release list
v3.0.3 — Fix: carpeta del plugin no se generaba
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.ymldesde 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
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 porCSPlugin.runSyncForPlayer(...)/runSyncGlobal(...).
En Folia, se enruta porEntityScheduler/GlobalRegionSchedulerrespectivamente;
en Paper clásico, sigue siendoBukkitScheduler. - 🩹
plugin.yml:folia-supported: true(sin él, Folia rechaza el plugin).
Infra nueva en este fork
docker-compose.test.yml+ scripts enscripts/para validarPaper y Folia en local.docs/testing/Local-Test-Setup.mdguía paso a paso..opencode/skills/40servidoresmc-paper-folia-test.mdskill 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.4Tests
- 100 tests unitarios siguen pasando.
v3.0.1
Mejoras sobre v3.0
- Gson empaquetado (fix latente): el JAR ahora incluye Gson relocado a
com.cadiducho.cservidoresmc.lib.gson, evitandoNoClassDefFoundErroren 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: nuevostats-cmd-cache-seconds(default 30 s) configurable, separado del cache de placeholders (5 min). Evita martillear la API ejecutando/stats40repetidamente. Valor0desactiva.
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+) enplugins/. - Colocar
40ServidoresMC-3.0.1-Sponge-API7.jar(Sponge 7.4.0+) enmods/. - Se genera
config.ymlo40ServidoresMC.confal primer arranque.
Historial
- v3.0 — primera versión de este fork.