From 62b717829ddb5ffc472fa59cb538672cd6400229 Mon Sep 17 00:00:00 2001 From: Xzavier0722 Date: Tue, 30 Jan 2024 19:21:08 +0800 Subject: [PATCH] fix(energy net): update in tick --- .../controller/BlockDataController.java | 1 - .../core/networks/energy/EnergyNet.java | 31 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java index c71b6a4103..777a6bd949 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java @@ -179,7 +179,6 @@ public void removeBlock(Location l) { checkDestroy(); var removed = getChunkDataCache(l.getChunk(), true).removeBlockData(l); - Slimefun.getNetworkManager().updateAllNetworks(l); if (removed == null) { return; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/networks/energy/EnergyNet.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/networks/energy/EnergyNet.java index c64a1f36f6..3030379909 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/networks/energy/EnergyNet.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/networks/energy/EnergyNet.java @@ -162,15 +162,32 @@ public void tick(@Nonnull Block b) { var data = StorageCacheUtils.getBlock(loc); if (data == null || data.isPendingRemove()) { + markDirty(loc); continue; } + EnergyNetComponent component = entry.getValue(); + if (!((SlimefunItem) component).getId().equals(data.getSfId())) { + var newItem = SlimefunItem.getById(data.getSfId()); + if (!(newItem instanceof EnergyNetComponent newComponent)) { + markDirty(loc); + continue; + } + + if (newComponent.getEnergyComponentType() == EnergyNetComponentType.CONSUMER) { + consumers.put(loc, newComponent); + component = newComponent; + } else { + markDirty(loc); + continue; + } + } + if (!data.isDataLoaded()) { StorageCacheUtils.requestLoad(data); continue; } - EnergyNetComponent component = entry.getValue(); int capacity = component.getCapacity(); int charge = component.getCharge(loc); @@ -262,9 +279,21 @@ private int tickAllGenerators(@Nonnull LongConsumer timings) { try { var data = StorageCacheUtils.getBlock(loc); if (data == null || data.isPendingRemove()) { + markDirty(loc); continue; } + if (!item.getId().equals(data.getSfId())) { + var newItem = SlimefunItem.getById(data.getSfId()); + if (newItem instanceof EnergyNetProvider newProvider) { + generators.put(loc, newProvider); + provider = newProvider; + } else { + markDirty(loc); + continue; + } + } + if (!data.isDataLoaded()) { StorageCacheUtils.requestLoad(data); continue;