diff --git a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/worldcache/Cache.java b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/worldcache/Cache.java index 3b024b0..de6dd0f 100644 --- a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/worldcache/Cache.java +++ b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/worldcache/Cache.java @@ -25,7 +25,13 @@ public final class Cache { public static int TickCounter = 0; - public static final int UPDATE_INTERVAL = 1200; + public static volatile int DynamicUpdateInterval = 1200; // Сначала 1200, затем 4800 + public static final int FIRST_UPDATE_INTERVAL = 1200; // Первое обновление + public static final int SUBSEQUENT_UPDATE_INTERVAL = 4800; // Последующие обновления + + public static boolean isFirstUpdate = true; // Флаг для отслеживания первого обновления + public static boolean isPrimaryPlayerLogged = false; // Флаг для главного игрока + public static final Set CACHE_VALID_CHUNKS = new HashSet<>(); public static final Set CACHED_ACTUAL_ANIMALS = new HashSet<>(); public static final Set CACHED_BUFFER_ANIMALS = new HashSet<>(); diff --git a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/worldcache/CacheEvents.java b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/worldcache/CacheEvents.java index 0704ac6..6050547 100644 --- a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/worldcache/CacheEvents.java +++ b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/worldcache/CacheEvents.java @@ -52,13 +52,19 @@ public synchronized void onWorldTick_0(TickEvent.WorldTickEvent event) { Cache.TickCounter++; - if (Cache.TickCounter >= Cache.UPDATE_INTERVAL) + if (Cache.TickCounter >= Cache.DynamicUpdateInterval) { Cache.TickCounter = 0; Cache.copyActualToBuffer(); - Cache.updateCache(event.world); + + // Если это первое обновление, то меняем интервал на 4800 + if (Cache.isFirstUpdate) + { + Cache.DynamicUpdateInterval = Cache.SUBSEQUENT_UPDATE_INTERVAL; + Cache.isFirstUpdate = false; + } } } } @@ -66,6 +72,15 @@ public synchronized void onWorldTick_0(TickEvent.WorldTickEvent event) @SubscribeEvent public synchronized void onPlayerLoggedIn_1(PlayerEvent.PlayerLoggedInEvent event) { + if (!Cache.isPrimaryPlayerLogged) + { + Cache.isPrimaryPlayerLogged = true; + Cache.DynamicUpdateInterval = Cache.FIRST_UPDATE_INTERVAL; + Cache.TickCounter = 0; // Сбрасываем счётчик при первом входе + Cache.isFirstUpdate = true; + } + + Cache.copyActualToBuffer(); }