Warp Management Optimization: Conditional Persistence and Efficient Saving in pwarps.yml
Warp Persistence: An improvement was implemented so that player warps are not saved to the pwarps.yml file until there are changes. This was achieved by using a flag (warpsChanged) to control whether the warps should be saved. As a result, the file is only updated when something is actually modified, optimizing performance and avoiding unnecessary writes.
Saving and Loading Warps: A method was introduced to load the warps from the pwarps.yml file when the plugin is enabled. The file is loaded using Bukkit's YamlConfiguration class, where we iterate over the keys corresponding to each player and store their warp locations in an in-memory map.
Similarly, saving the warps is done only if there has been a change (marked by the warpsChanged flag). This ensures that the file is not overwritten unnecessarily during the plugin's lifecycle.
Optimization with Conditional Saving: To ensure that changes are not saved to the file every time a player sets or removes a warp, a periodic check system was used to save the warps only if the flag indicates a change. This task is run periodically (in this case every 5 minutes) to avoid multiple writes to the file throughout the day.
Español:
Persistencia de los Warps: Se implementó una mejora para que los warps de los jugadores no se guarden en el archivo pwarps.yml hasta que haya cambios. Esto se hizo utilizando una bandera (warpsChanged) que controla si se deben guardar los warps. De esta forma, el archivo solo se actualiza cuando realmente se modifica algo, optimizando el rendimiento y evitando escrituras innecesarias.
Guardar y Cargar Warps: Se introdujo un método para cargar los warps desde el archivo pwarps.yml cuando el plugin se habilita. El archivo es cargado utilizando la clase YamlConfiguration de Bukkit, donde se iteran las claves correspondientes a cada jugador y se almacenan las ubicaciones de sus warps en un mapa en memoria.
De manera similar, el guardado de los warps se realiza solo si hubo un cambio (marcado por la bandera warpsChanged). Esto asegura que el archivo no se sobrescriba innecesariamente durante el ciclo de vida del plugin.
Optimización con el Guardado Condicional: Para asegurarnos de que no se guarden cambios en el archivo cada vez que un jugador establece o elimina un warp, se utilizó un sistema de verificación periódica que guarda los warps solo si la bandera indica que hubo un cambio. Esta tarea se ejecuta periódicamente (en este caso cada 5 minutos), para evitar múltiples escrituras al archivo durante el transcurso del día.