From d4ea3361ce118857d2384d73fe02c5d9d1bc54b5 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sat, 24 Jun 2017 18:03:06 +0200 Subject: [PATCH] Fixed External Storage crashing and one minor concurrency issue --- CHANGELOG.md | 3 +++ .../node/externalstorage/NetworkNodeExternalStorage.java | 6 +++--- .../tile/craftingmonitor/TileCraftingMonitor.java | 7 +++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bea50c2f8..21fc4d046 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Refined Storage Changelog +### 1.5.4 +- Fixed External Storage crashing (raoulvdberge) + ### 1.5.3 - Updated Forge to 2359 (raoulvdberge) - Updated MCMultiPart to 2.2.1 (raoulvdberge) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java index 68ae704cc..f2d8d4d9f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java @@ -27,8 +27,8 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandler; -import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; public class NetworkNodeExternalStorage extends NetworkNode implements IStorageProvider, IGuiStorage, IComparable, IFilterable, IPrioritizable, IType, IAccessType { public static final String ID = "external_storage"; @@ -48,8 +48,8 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP private AccessType accessType = AccessType.INSERT_EXTRACT; private int networkTicks; - private List itemStorages = new ArrayList<>(); - private List fluidStorages = new ArrayList<>(); + private List itemStorages = new CopyOnWriteArrayList<>(); + private List fluidStorages = new CopyOnWriteArrayList<>(); public NetworkNodeExternalStorage(World world, BlockPos pos) { super(world, pos); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java index 8f11793ab..658a3b4d9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java @@ -1,5 +1,6 @@ package com.raoulvdberge.refinedstorage.tile.craftingmonitor; +import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCraftingMonitor; import com.raoulvdberge.refinedstorage.tile.TileNode; import com.raoulvdberge.refinedstorage.tile.data.ITileDataConsumer; @@ -23,8 +24,10 @@ public class TileCraftingMonitor extends TileNode { tile.getNode().setViewAutomated(value); tile.getNode().markDirty(); - if (tile.getNode().getNetwork() != null) { - tile.getNode().getNetwork().sendCraftingMonitorUpdate(); + INetwork network = tile.getNode().getNetwork(); + + if (network != null) { + network.sendCraftingMonitorUpdate(); } } });