ComunidadAylas / khron-plugins

Plugins de Spigot/Paper para el servidor de Khron en Minecraft.
GNU Affero General Public License v3.0
4 stars 1 forks source link

[TiempoReal] El clima no se actualiza y da error #20

Closed MiguelDreamer closed 2 years ago

MiguelDreamer commented 4 years ago

Desde hace más de 2 meses aproximadamente, el plugin de TiempoReal da un error largo en consola cuando intenta recibir información del clima actual (cada 3 minutos, y siempre pasa). Al principio el error era raro, pero con el paso de los días cada vez era más frecuente hasta que llegó un momento en el que siempre sale.

El error en cuestión:

[00:02:44] [Craft Scheduler Thread - 1581/WARN]: Ha ocurrido un error durante la comunicación con la API de Weatherbit
io.github.alextmjugador.khron.tiemporeal.meteorologia.MeteorologiaDesconocidaException: La API de Weatherbit ha devuelto una respuesta mal formada
    at io.github.alextmjugador.khron.tiemporeal.meteorologia.ClimaWeatherbit.solicitarTiempoAWeatherbit(ClimaWeatherbit.java:220) ~[?:?]
    at io.github.alextmjugador.khron.tiemporeal.meteorologia.ClimaWeatherbit.lambda$calcularTiempoAtmosferico$1(ClimaWeatherbit.java:109) ~[?:?]
    at org.bukkit.craftbukkit.v1_16_R2.scheduler.CraftTask.run(CraftTask.java:99) ~[patched_1.16.3.jar:git-Paper-228]
    at org.bukkit.craftbukkit.v1_16_R2.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54) ~[patched_1.16.3.jar:git-Paper-228]
    at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[patched_1.16.3.jar:git-Paper-228]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
    at java.lang.Thread.run(Thread.java:830) [?:?]

La solución a este arreglo es prioridad, ya que queda inutilizada una de las esencias del plugin (además de que se acercan más temporadas de lluvia)

AlexTMjugador commented 4 years ago

Me huele a que WeatherBit o bien ha modificado las respuestas que genera o bien nos está denegando las consultas por alguna razón. Aunque la traza de la pila que has adjuntado a la incidencia es útil y recomendable, será necesario añadir código adicional temporalmente para averiguar cuál es la causa exacta del problema.

Por el momento, para evitar el flood de errores, y quizás evitar que WeatherBit considere el servidor como un cliente abusivo, cambia la entrada del mundo en el fichero de configuración para que use ClimaMinecraft (que hace que el plugin no intente modificar el clima) en vez de ClimaWeatherbit. Es decir, si tenías algo como:

Parámetros de simulación de mundos:
    - Khron, Europe/Madrid, ArcoDiurnoSolarTerrestre, ClimaWeatherbit, 40º24'59.4''N 3º42'9.22''O, 6371

Cámbialo por:

Parámetros de simulación de mundos:
    - Khron, Europe/Madrid, ArcoDiurnoSolarTerrestre, ClimaMinecraft, 40º24'59.4''N 3º42'9.22''O, 6371
AlexTMjugador commented 4 years ago

@MiguelDreamer, ¿podrías confirmar que los últimos cambios en efecto arreglan este problema? Recuerda copiar la clave del API de Weatherbit, borrar el fichero de configuración del plugin, y luego dejar que el plugin lo regenere al iniciarse el servidor.

MiguelDreamer commented 4 years ago

En cuanto a la última versión, las nuevas adiciones como la temperatura en el reloj digital y el sonido a cada hora (aunque debería de sonar aún no llevandolo en la mano) y el sonido de las manecillas en el reloj de bolsillo van bien.

Ahora bien, los cambios que le corresponden a esta incidencia parece que no han arreglado el problema, porque aunque en consola no salgan errores de Weatherbit, la temperatura es la misma siempre, y en la ciudad donde se localiza el servidor ha llovido y el plugin no lo ha actualizado correctamente.

AlexTMjugador commented 3 years ago

La confirmación f1044dd debería de haber arreglado el funcionamiento del reloj digital, que ahora se escucha cada hora.

En cuanto a la temperatura constante, como dije por Discord, en f283b0d hice que el plugin mostrase información de depuración acerca de los datos que recibe de Weatherbit. Si el plugin muestra cada 3 minutos datos recibidos de Weatherbit está funcionando correctamente, y es problema de Weatherbit que la información de temperatura que da no varíe, por lo que habría que cambiar de proveedor de meteorología. Te comenté cómo ver esta información de depuración en la consola por Discord:

Instrucciones de visualización de información de depuración

MiguelDreamer commented 3 years ago

Esto se descubrió hace meses, pero no se publicó en una incidencia: el problema reside en que solo en un mundo se actualiza el clima real. En este caso, en el servidor solo se actualiza en el mundo de Aren y no en el de Khron. Al quitar el mundo de Aren en la configuración, el clima en Khron se actualiza correctamente (básicamente desde que se descubrió el bug hasta entonces si que se actualizaba bien, pero como no ibamos mucho a Aren no nos dimos cuenta de que solo se actualizaba allí).

Desde hace meses, la solución temporal es no tener el mundo de Aren en la configuración, pero obviamente no es lo óptimo, ya que no se aplican las mecánicas especiales allí.

AlexTMjugador commented 2 years ago

Me he dado cuenta de un comportamiento del plugin que podría causar este problema, dependiendo del orden en el que se simule el clima en los mundos, y lo he cambiado en 09eb252bc9e7cb2c5a68e23a3f5f10d39a8fd79a. Veamos si hacer que la comprobación de si es momento de preguntarle a Weatherbit el clima sea por mundo y no global en efecto arregla esto.

MiguelDreamer commented 2 years ago

Todo está arreglado y funcionando como es debido. ¡Gracias!

2022-03-20_19 02 50