From 204d1150817559e4307b291821964f22cdf9ff68 Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Sun, 17 May 2026 18:37:11 +0200 Subject: [PATCH] rewrite of updateInterestTimer --- .../core/features/economy/BankManager.java | 40 +++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/economy/BankManager.java b/src/main/java/fr/openmc/core/features/economy/BankManager.java index 0b3922a2e..9ea59b1ae 100644 --- a/src/main/java/fr/openmc/core/features/economy/BankManager.java +++ b/src/main/java/fr/openmc/core/features/economy/BankManager.java @@ -29,6 +29,7 @@ import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitTask; import java.sql.SQLException; import java.time.DayOfWeek; @@ -46,6 +47,8 @@ public class BankManager extends Feature implements DatabaseFeature { private static Dao banksDao; + private static BukkitTask interestTask; + @Override public void init() { banks = loadAllBanks(); @@ -243,18 +246,31 @@ public static void applyAllPlayerInterests() { } } - private static void updateInterestTimer() { - if (OMCPlugin.isUnitTestVersion()) return; // Cette méthode bloque totalement le flux des tests. Si - // quelqu'un fait les unit test des banques, merci de le prendre en compte. - - Bukkit.getScheduler().runTaskLater(OMCPlugin.getInstance(), () -> { - OMCLogger.info("Applying all player interests..."); - applyAllPlayerInterests(); - CityBankManager.applyAllCityInterests(); - OMCLogger.info("All player interests applied successfully."); - updateInterestTimer(); - - }, getSecondsUntilInterest() * 20); // 20 ticks per second (ideally) + public static void updateInterestTimer() { + if (OMCPlugin.isUnitTestVersion()) return; + + if (interestTask != null) return; + + long delay = getSecondsUntilInterest() * 20L; + + interestTask = Bukkit.getScheduler().runTaskLater( + OMCPlugin.getInstance(), + () -> { + OMCLogger.info("Applying all player interests..."); + applyAllPlayerInterests(); + CityBankManager.applyAllCityInterests(); + OMCLogger.info("All player interests applied successfully."); + + interestTask = null; + + Bukkit.getScheduler().runTaskLater( + OMCPlugin.getInstance(), + BankManager::updateInterestTimer, + 20L * 10 + ); + }, + delay + ); } public static long getSecondsUntilInterest() {