diff --git a/src/main/java/github/kasuminova/mmce/client/gui/widget/impl/preview/WorldSceneRendererWidget.java b/src/main/java/github/kasuminova/mmce/client/gui/widget/impl/preview/WorldSceneRendererWidget.java index e247e9ab..5187678e 100644 --- a/src/main/java/github/kasuminova/mmce/client/gui/widget/impl/preview/WorldSceneRendererWidget.java +++ b/src/main/java/github/kasuminova/mmce/client/gui/widget/impl/preview/WorldSceneRendererWidget.java @@ -177,7 +177,10 @@ protected void addUpgradeIngredientToPattern(final DynamicMachine machine) { Map pattern = this.pattern.getPattern(); machine.getModifiersAsMatchingReplacements().forEach((pos, infoList) -> infoList.forEach(info -> { if (pattern.containsKey(pos)) { - pattern.get(pos).addMatchingStates(info.getMatchingStates()); + // Clone the block info, we don't want to modify the canonical instance. + BlockArray.BlockInformation newInfo = pattern.get(pos).copy(); + newInfo.addMatchingStates(info.getMatchingStates()); + this.pattern.addBlock(pos, newInfo); } else { this.pattern.addBlock(pos, info); } diff --git a/src/main/java/hellfirepvp/modularmachinery/client/util/DynamicMachineRenderContext.java b/src/main/java/hellfirepvp/modularmachinery/client/util/DynamicMachineRenderContext.java index 0a360659..d5d384ab 100644 --- a/src/main/java/hellfirepvp/modularmachinery/client/util/DynamicMachineRenderContext.java +++ b/src/main/java/hellfirepvp/modularmachinery/client/util/DynamicMachineRenderContext.java @@ -136,9 +136,12 @@ public static void addReplacementToBlockArray( for (BlockArray.BlockInformation info : informationList) { Map pattern = blockArray.getPattern(); if (pattern.containsKey(pos)) { - pattern.get(pos).addMatchingStates(info.getMatchingStates()); + // Clone the block info, we don't want to modify the canonical instance. + BlockArray.BlockInformation newInfo = pattern.get(pos).copy(); + newInfo.addMatchingStates(info.getMatchingStates()); + blockArray.addBlock(pos, newInfo); } else { - pattern.put(pos, info); + blockArray.addBlock(pos, info); } } }