From 3fb53378ca41b8eb277fb80fdc41093cafe3c702 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Wed, 28 Nov 2018 21:02:21 +0100 Subject: [PATCH] Fixed slight performance issue with loading Crafters from disk. Fixes #2106 --- CHANGELOG.md | 1 + .../network/node/NetworkNodeCrafter.java | 21 ++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e96bd7c09..1e4d72053 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### 1.6.12 - Increased the speed of autocrafting (raoulvdberge) - Fixed External Storage sending storage updates when it is disabled (raoulvdberge) +- Fixed slight performance issue with loading Crafters from disk (raoulvdberge) - Added a completion percentage to the Crafting Monitor (raoulvdberge) - Updated Russian translation (kellixon) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java index 63185ae60..3ee67f5d6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java @@ -61,12 +61,14 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC protected void onContentsChanged(int slot) { super.onContentsChanged(slot); - if (!world.isRemote) { - invalidate(); - } + if (!reading) { + if (!world.isRemote) { + invalidate(); + } - if (network != null) { - network.getCraftingManager().rebuild(); + if (network != null) { + network.getCraftingManager().rebuild(); + } } } @@ -91,6 +93,8 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC private boolean locked = false; private boolean wasPowered; + private boolean reading; + @Nullable private String displayName; @@ -171,12 +175,19 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC public void read(NBTTagCompound tag) { super.read(tag); + // Fix cascading crafter invalidates while reading patterns + this.reading = true; + StackUtils.readItems(patternsInventory, 0, tag); if (API.instance().getOneSixMigrationHelper().migratePatternInventory(patternsInventory)) { markDirty(); } + this.invalidate(); + + this.reading = false; + StackUtils.readItems(upgrades, 1, tag); if (tag.hasKey(NBT_DISPLAY_NAME)) {