diff --git a/core/src/main/java/com/volmit/iris/engine/object/IrisObject.java b/core/src/main/java/com/volmit/iris/engine/object/IrisObject.java index fa3057dec..badbaac7b 100644 --- a/core/src/main/java/com/volmit/iris/engine/object/IrisObject.java +++ b/core/src/main/java/com/volmit/iris/engine/object/IrisObject.java @@ -966,7 +966,7 @@ public class IrisObject extends IrisRegistrant { BlockData newData = j.getReplace(rng, i.getX() + x, i.getY() + y, i.getZ() + z, rdata).clone(); if (newData.getMaterial() == data.getMaterial() && !(newData instanceof IrisCustomData || data instanceof IrisCustomData)) - data = data.merge(newData); + data = B.merge(data, newData); else data = newData; diff --git a/core/src/main/java/com/volmit/iris/util/data/B.java b/core/src/main/java/com/volmit/iris/util/data/B.java index fa401fa44..4bfa49a41 100644 --- a/core/src/main/java/com/volmit/iris/util/data/B.java +++ b/core/src/main/java/com/volmit/iris/util/data/B.java @@ -358,6 +358,15 @@ public class B { return true; } + public static BlockData merge(BlockData base, BlockData overlay) { + // Paper 26.1 caches block data that names every state without the parsed states merge needs. Merging it would + // replace every state of the base anyway. + if (overlay.getAsString(true).equals(overlay.getAsString())) { + return overlay; + } + return base.merge(overlay); + } + public static boolean isFoliagePlantable(BlockData d) { return d.getMaterial().equals(Material.GRASS_BLOCK) || d.getMaterial().equals(Material.MOSS_BLOCK)