@@ -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 , SingleBlockModifierReplacement mod , JsonObject part ) throws JsonParseException {
250+ private static void addModifierWithPattern (DynamicMachine machine , TaggedPositionBlockArray pattern , 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,6 +259,10 @@ private static void addModifierWithPattern(DynamicMachine machine, SingleBlockMo
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 );
262266 machine .modifiers .putIfAbsent (permutation , Lists .newArrayList ());
263267 machine .modifiers .get (permutation ).add (mod .setPos (permutation ));
264268 }
@@ -375,7 +379,7 @@ public DynamicMachine deserialize(JsonElement json, Type typeOfT, JsonDeserializ
375379
376380 // Modifiers
377381 if (root .has ("modifiers" )) {
378- addModifiers (context , root , machine );
382+ addModifiers (context , root , machine , machine . pattern );
379383 }
380384
381385 // DynamicPatterns
@@ -550,7 +554,7 @@ private static void setMaxSize(final JsonObject jsonPattern, final DynamicPatter
550554 }
551555 }
552556
553- private static void addModifiers (final JsonDeserializationContext context , final JsonObject root , final DynamicMachine machine ) {
557+ private static void addModifiers (final JsonDeserializationContext context , final JsonObject root , final DynamicMachine machine , final TaggedPositionBlockArray pattern ) {
554558 JsonElement partModifiers = root .get ("modifiers" );
555559 if (!partModifiers .isJsonArray ()) {
556560 throw new JsonParseException ("'modifiers' has to be an array of modifiers!" );
@@ -561,7 +565,7 @@ private static void addModifiers(final JsonDeserializationContext context, final
561565 if (!modifier .isJsonObject ()) {
562566 throw new JsonParseException ("Elements of 'modifiers' have to be objects!" );
563567 }
564- addModifierWithPattern (machine , context .deserialize (modifier .getAsJsonObject (), SingleBlockModifierReplacement .class ), modifier .getAsJsonObject ());
568+ addModifierWithPattern (machine , pattern , context .deserialize (modifier .getAsJsonObject (), SingleBlockModifierReplacement .class ), modifier .getAsJsonObject ());
565569 }
566570 }
567571
0 commit comments