Skip to content

Commit 8cf2b3e

Browse files
committed
Copy block info before adding modifier blockstate
This reverts commit 2269792. - Adding the modifier to the pattern directly caused issues with auto-assembly requirements
1 parent 2269792 commit 8cf2b3e

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed

src/main/java/github/kasuminova/mmce/client/gui/widget/impl/preview/WorldSceneRendererWidget.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,10 @@ protected void addUpgradeIngredientToPattern(final DynamicMachine machine) {
177177
Map<BlockPos, BlockArray.BlockInformation> pattern = this.pattern.getPattern();
178178
machine.getModifiersAsMatchingReplacements().forEach((pos, infoList) -> infoList.forEach(info -> {
179179
if (pattern.containsKey(pos)) {
180-
pattern.get(pos).addMatchingStates(info.getMatchingStates());
180+
// Clone the block info, we don't want to modify the canonical instance.
181+
BlockArray.BlockInformation newInfo = pattern.get(pos).copy();
182+
newInfo.addMatchingStates(info.getMatchingStates());
183+
this.pattern.addBlock(pos, newInfo);
181184
} else {
182185
this.pattern.addBlock(pos, info);
183186
}

src/main/java/hellfirepvp/modularmachinery/client/util/DynamicMachineRenderContext.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,12 @@ public static void addReplacementToBlockArray(
136136
for (BlockArray.BlockInformation info : informationList) {
137137
Map<BlockPos, BlockArray.BlockInformation> pattern = blockArray.getPattern();
138138
if (pattern.containsKey(pos)) {
139-
pattern.get(pos).addMatchingStates(info.getMatchingStates());
139+
// Clone the block info, we don't want to modify the canonical instance.
140+
BlockArray.BlockInformation newInfo = pattern.get(pos).copy();
141+
newInfo.addMatchingStates(info.getMatchingStates());
142+
blockArray.addBlock(pos, newInfo);
140143
} else {
141-
pattern.put(pos, info);
144+
blockArray.addBlock(pos, info);
142145
}
143146
}
144147
}

src/main/java/hellfirepvp/modularmachinery/common/machine/DynamicMachine.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ private static List<BlockPos> buildPermutations(List<Integer> avX, List<Integer>
247247
return out;
248248
}
249249

250-
private static void addModifierWithPattern(DynamicMachine machine, TaggedPositionBlockArray pattern, SingleBlockModifierReplacement mod, JsonObject part) throws JsonParseException {
250+
private static void addModifierWithPattern(DynamicMachine machine, SingleBlockModifierReplacement mod, JsonObject part) throws JsonParseException {
251251
List<Integer> avX = new ArrayList<>();
252252
List<Integer> avY = new ArrayList<>();
253253
List<Integer> avZ = new ArrayList<>();
@@ -259,10 +259,6 @@ private static void addModifierWithPattern(DynamicMachine machine, TaggedPositio
259259
if (permutation.getX() == 0 && permutation.getY() == 0 && permutation.getZ() == 0) {
260260
continue; //We're not going to overwrite the controller.
261261
}
262-
// Clone the block info, we don't want to modify the canonical instance.
263-
BlockArray.BlockInformation info = pattern.getPattern().get(permutation).copy();
264-
info.addMatchingStates(mod.getBlockInformation().getMatchingStates());
265-
pattern.addBlock(permutation, info);
266262
machine.modifiers.putIfAbsent(permutation, Lists.newArrayList());
267263
machine.modifiers.get(permutation).add(mod.setPos(permutation));
268264
}
@@ -379,7 +375,7 @@ public DynamicMachine deserialize(JsonElement json, Type typeOfT, JsonDeserializ
379375

380376
// Modifiers
381377
if (root.has("modifiers")) {
382-
addModifiers(context, root, machine, machine.pattern);
378+
addModifiers(context, root, machine);
383379
}
384380

385381
// DynamicPatterns
@@ -554,7 +550,7 @@ private static void setMaxSize(final JsonObject jsonPattern, final DynamicPatter
554550
}
555551
}
556552

557-
private static void addModifiers(final JsonDeserializationContext context, final JsonObject root, final DynamicMachine machine, final TaggedPositionBlockArray pattern) {
553+
private static void addModifiers(final JsonDeserializationContext context, final JsonObject root, final DynamicMachine machine) {
558554
JsonElement partModifiers = root.get("modifiers");
559555
if (!partModifiers.isJsonArray()) {
560556
throw new JsonParseException("'modifiers' has to be an array of modifiers!");
@@ -565,7 +561,7 @@ private static void addModifiers(final JsonDeserializationContext context, final
565561
if (!modifier.isJsonObject()) {
566562
throw new JsonParseException("Elements of 'modifiers' have to be objects!");
567563
}
568-
addModifierWithPattern(machine, pattern, context.deserialize(modifier.getAsJsonObject(), SingleBlockModifierReplacement.class), modifier.getAsJsonObject());
564+
addModifierWithPattern(machine, context.deserialize(modifier.getAsJsonObject(), SingleBlockModifierReplacement.class), modifier.getAsJsonObject());
569565
}
570566
}
571567

0 commit comments

Comments
 (0)