From 56348b3e311b44a5c5e193228948bafb809aa62c Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 12 Sep 2026 23:21:40 -0400 Subject: [PATCH] Fixed #12652 --- core/src/mindustry/world/modules/ItemModule.java | 8 +++++++- .../src/mindustry/world/modules/LiquidModule.java | 15 +++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/world/modules/ItemModule.java b/core/src/mindustry/world/modules/ItemModule.java index d2af42dade..59e068a3bf 100644 --- a/core/src/mindustry/world/modules/ItemModule.java +++ b/core/src/mindustry/world/modules/ItemModule.java @@ -47,8 +47,10 @@ public class ItemModule extends BlockModule{ public void updateFlow(){ //update the flow at N fps at most if(flowTimer.get(1, flowPollInterval)){ + int len = content.items().size; + if(items.length != len) items = Arrays.copyOf(items, len); - if(flow == null){ + if(flow == null || flow.length != len || cacheSums == null || cacheFlow == null){ if(cacheFlow == null || cacheFlow.length != items.length){ cacheFlow = new WindowedMean[items.length]; for(int i = 0; i < items.length; i++){ @@ -290,6 +292,10 @@ public class ItemModule extends BlockModule{ public void checkArrayCapacity(int size){ if(items.length != size) items = Arrays.copyOf(items, size); + cacheFlow = null; + cacheSums = null; + displayFlow = null; + flow = null; } @Override diff --git a/core/src/mindustry/world/modules/LiquidModule.java b/core/src/mindustry/world/modules/LiquidModule.java index c5034ca298..23bfc60659 100644 --- a/core/src/mindustry/world/modules/LiquidModule.java +++ b/core/src/mindustry/world/modules/LiquidModule.java @@ -20,9 +20,9 @@ public class LiquidModule extends BlockModule{ public static float flowVisualRefreshInterval = 15f; private static final Interval flowTimer = new Interval(2); - private static WindowedMean[] cacheFlow; - private static float[] cacheSums; - private static float[] displayFlow; + private static @Nullable WindowedMean[] cacheFlow; + private static @Nullable float[] cacheSums; + private static @Nullable float[] displayFlow; private static final Bits cacheBits = new Bits(); private float[] liquids = new float[content.liquids().size]; @@ -32,7 +32,10 @@ public class LiquidModule extends BlockModule{ public void updateFlow(){ if(flowTimer.get(1, flowPollInterval)){ - if(flow == null){ + int len = content.liquids().size; + if(liquids.length != len) liquids = Arrays.copyOf(liquids, len); + + if(flow == null || flow.length != len || cacheSums == null || cacheFlow == null){ if(cacheFlow == null || cacheFlow.length != liquids.length){ cacheFlow = new WindowedMean[liquids.length]; for(int i = 0; i < liquids.length; i++){ @@ -152,6 +155,10 @@ public class LiquidModule extends BlockModule{ public void checkArrayCapacity(int size){ if(liquids.length != size) liquids = Arrays.copyOf(liquids, size); + cacheFlow = null; + cacheSums = null; + displayFlow = null; + flow = null; } @Override