Compatibilidad de BetterFood
Versiones de destino
El repositorio actual usa estas versiones:
- Versión del plugin:
1.5.6 api-versionde Bukkit:1.21.4- API de Spigot de destino para la compilación:
26.3-R0.1-SNAPSHOT - Java:
21
Comandos
El plugin usa:
/betterfood/bf
Los subcomandos para jugadores permiten activar o desactivar:
- la alimentación automática (
toggleEating, o simplemente/betterfoodsin argumentos) - los mensajes de consumo en la barra de acción (
toggleMessage)
Los subcomandos de administración requieren betterfood.admin y dan acceso a las herramientas compartidas de Nightbreak:
setup: abre el menú de configuración dentro del juegorecommendedplugins: muestra plugins que combinan bien con BetterFood. Actualmente, BetterFood no tiene entradas en el catálogo compartido de recomendaciones, por lo que abre un menú vacío y avisa de que no hay recomendaciones adicionales por ahora. La consola recibe el mismo aviso como mensaje de chatdownloadpluginupdate/downloadall: descarga una actualización del plugin si hay alguna disponibleapplypluginupdate: aplica una actualización del plugin ya descargada sin reiniciar el servidor (consulta Actualizaciones del plugin sin reinicio)downloadallcontent: informa de que BetterFood no tiene paquetes de contenido
El autocompletado se filtra según los permisos y el texto escrito: toggleEating y toggleMessage solo se sugieren a quienes tengan betterfood.user, mientras que downloadpluginupdate, applypluginupdate, downloadallcontent, setup y recommendedplugins solo se sugieren a quienes tengan betterfood.admin. El alias downloadall se acepta, pero se omite de las sugerencias de forma intencionada. Las dos opciones de los jugadores solo pueden cambiarse dentro del juego. Los subcomandos explícitos toggleEating / toggleMessage rechazan a quienes no sean jugadores con un aviso de que los ajustes solo pueden cambiarse dentro del juego, mientras que /betterfood sin argumentos dirige a la consola al comando de actualización. A los jugadores sin betterfood.user se les informa de que no tienen permiso para cambiar los ajustes de BetterFood. Un subcomando desconocido o más de un argumento muestra la sintaxis de uso. Los administradores ven las dos opciones del jugador y los comandos de actualización, configuración y recomendaciones; el resto solo ve las dos opciones. La sintaxis omite downloadallcontent, aunque el comando se acepta y aparece en el autocompletado para administradores.
Comandos compartidos de MagmaCore
Las herramientas de MagmaCore incluidas añaden estos comandos durante el arranque. Los comandos globales se registran al cargar el plugin solo si sus nombres están disponibles; en un servidor con otros plugins de MagmaGuy, el primer registro conserva cada nombre. El comando de notas de versión de BetterFood se inicializa al habilitar el plugin:
/nightbreak plugins: permite explorar el catálogo de plugins, mediante un menú dentro del juego o una lista de chat desde la consola (nightbreak.plugins, por defectoop)./nightbreaksin argumentos solo muestra la sintaxis de uso./nightbreaklogin [token]y/nightbreaklogout: vinculan el servidor a una cuenta de Nightbreak y lo desconectan. Sin token,/nightbreakloginimprime un enlace de nightbreak.io para aprobar (nightbreak.login, por defectoop)/logify: sube el registro actual del servidor a mclo.gs (logify.*, por defectoop)/betterfoodchangelog [dismiss|disable]: muestra las notas de versión de BetterFood sin leer. Este comando tiene un nombre específico por plugin, por lo que no entra en conflicto; si/betterfoodchangelogya estuviera ocupado, se usa una etiqueta del tipobetterfood:betterfoodchangelog.
El comando de notas de versión solo está disponible para administradores dentro del juego. A la consola o a quienes no tengan permisos de administrador les responde "Este comando solo está disponible para los administradores del plugin dentro del juego". Considera administrador a un jugador que sea op o tenga betterfood.admin o betterfood.*. Los administradores también reciben un recordatorio de las notas sin leer poco después de conectarse, salvo que hayan ejecutado /betterfoodchangelog disable. El estado de lectura o descarte se guarda por jugador en plugins/BetterFood/nightbreak-changelogs.yml.
Consulta Tokens de Nightbreak, Configuración de Nightbreak y Notificaciones de notas de versión para conocer el funcionamiento compartido.
Permisos
betterfood.user(por defectotrue): permite la alimentación automática y cambiar las opciones del jugador.betterfood.admin(por defectoop): permite descargar y aplicar actualizaciones del plugin y usar los comandos de configuración y plugins recomendados. También cuenta como permiso de administrador para el comando de notas de versión.nightbreak.plugins,nightbreak.loginylogify.*(todos por defectoop): los registran las herramientas de MagmaCore incluidas para los comandos compartidos anteriores. No se declaran en elplugin.ymlde BetterFood.
Otras integraciones
- Las métricas de bStats están activadas, con el identificador de plugin
4557. Puedes desactivarlas globalmente en la configuración de bStats si no quieres participar. - BetterFood incluye ahora las herramientas compartidas de MagmaCore. Genera un
config.ymlcon dos claves: la opciónnightbreak.autoDownloadPluginUpdates, desactivada por defecto (false), ynightbreak.applyPluginUpdatesWithoutRestart, con valor predeterminadonever(consulta Actualizaciones del plugin sin reinicio). Comprueba si hay una versión más reciente ennightbreak.iounos minutos después del arranque y después aproximadamente cada hora. El retraso inicial se escalona por plugin para que varios plugins de MagmaGuy no hagan la solicitud a la vez. Los resultados solo se registran cuando cambian, para no repetir mensajes en la consola cada hora. BetterFood no proporciona un identificador de recurso de SpigotMC y su entrada del catálogo tampoco tiene uno, así que no hay una consulta alternativa de versión en SpigotMC. - Los operadores que se conecten mientras haya una actualización pendiente reciben, unos segundos después de iniciar sesión, un aviso en el chat con un enlace a la página de descarga. Se envía en cada conexión mientras la versión instalada siga desactualizada.
- El token de la cuenta se guarda fuera de la carpeta del plugin, en el archivo compartido
plugins/MagmaCore/nightbreak.yml, por lo que basta con vincularlo una vez para todos los plugins de MagmaGuy del servidor. - No tiene dependencias de plugins externos; la lógica de alimentación solo escucha el
FoodLevelChangeEventde vanilla.
Actualizaciones del plugin sin reinicio
Una actualización del plugin descargada espera en la carpeta de actualizaciones del servidor. /betterfood applypluginupdate la instala sin reiniciar el servidor: BetterFood se deshabilita, se sustituye su JAR y la nueva versión se carga y se habilita. Las opciones de alimentación y de mensajes de cada jugador se guardan en el propio jugador, así que se conservan.
El comando se niega, con un mensaje, cuando no hay ninguna actualización descargada en espera, cuando la actualización en espera no es más reciente que la versión en ejecución o su JAR no es válido, cuando un plugin de otro autor depende de BetterFood (como dependencia obligatoria u opcional) o cuando ya hay otro cambio de plugin en curso. Si la nueva versión no consigue habilitarse, se vuelve a cargar el JAR anterior y la actualización se queda en la carpeta de actualizaciones para el siguiente reinicio.
nightbreak.applyPluginUpdatesWithoutRestart en config.yml decide qué ocurre justo después de cualquier descarga de una actualización del plugin, tanto si procede de downloadpluginupdate, de downloadall, del menú de configuración o de una descarga automática:
| Valor | Comportamiento |
|---|---|
never | Valor predeterminado. La actualización espera al siguiente reinicio. A los administradores conectados con betterfood.admin o betterfood.* se les avisa de que hace falta reiniciar y se les muestra el comando applypluginupdate |
when-empty | Aplica la actualización de inmediato si no hay jugadores conectados; si los hay, lo comprueba cada 30 segundos y la aplica en cuanto el servidor se queda vacío |
immediately | Aplica la actualización en cuanto termina la descarga |
Cualquier otro valor se comporta como never.
Compilar desde el código fuente
BetterFood se compila con JDK 21 y el wrapper de Gradle incluido. Desde la raíz del repositorio, ejecuta:
./gradlew shadowJar
En Windows, ejecuta .\gradlew.bat shadowJar. El JAR del plugin se escribe en build/libs/BetterFood.jar. Si está definida la variable de entorno MC_DIST_DIR o la propiedad de Gradle mcDistDir, la compilación también copia el JAR a esa carpeta. La suite de pruebas se ejecuta con una toolchain de Java 25, así que ./gradlew build también necesita JDK 25.
MagmaCore va incluido (shaded) en el JAR y se resuelve desde Maven Local antes que desde el repositorio Maven de MagmaGuy. Cuando el código fuente necesita cambios de MagmaCore más recientes que la compilación publicada, publica primero MagmaCore en Maven Local, como se describe en Compilar un plugin tras modificar la biblioteca.
La página de la API Java del plugin cubre el artefacto de Maven y en qué puede apoyarse una integración.