diff --git a/src/main/java/com/volmit/iris/Iris.java b/src/main/java/com/volmit/iris/Iris.java index 7424cf3e4..5ac77569f 100644 --- a/src/main/java/com/volmit/iris/Iris.java +++ b/src/main/java/com/volmit/iris/Iris.java @@ -387,8 +387,6 @@ public class Iris extends VolmitPlugin implements Listener { } private void enable() { - IrisToolbelt.retainMantleDataForSlice(String.class.getCanonicalName()); - IrisToolbelt.retainMantleDataForSlice(BlockData.class.getCanonicalName()); instance = this; services = new KMap<>(); initialize("com.volmit.iris.core.service").forEach((i) -> services.put((Class) i.getClass(), (IrisService) i)); @@ -416,6 +414,8 @@ public class Iris extends VolmitPlugin implements Listener { splash(); autoStartStudio(); checkForBukkitWorlds(); + IrisToolbelt.retainMantleDataForSlice(String.class.getCanonicalName()); + IrisToolbelt.retainMantleDataForSlice(BlockData.class.getCanonicalName()); }); } diff --git a/src/main/java/com/volmit/iris/engine/decorator/IrisSurfaceDecorator.java b/src/main/java/com/volmit/iris/engine/decorator/IrisSurfaceDecorator.java index a5909c5c8..184bf7a16 100644 --- a/src/main/java/com/volmit/iris/engine/decorator/IrisSurfaceDecorator.java +++ b/src/main/java/com/volmit/iris/engine/decorator/IrisSurfaceDecorator.java @@ -57,11 +57,14 @@ public class IrisSurfaceDecorator extends IrisEngineDecorator { bd = decorator.getBlockData100(biome, getRng(), realX, height, realZ, getData()); if(!underwater) { - if(!canGoOn(bd, bdx) && !decorator.isForcePlace()) { + if(!canGoOn(bd, bdx) && (!decorator.isForcePlace() && decorator.getForceBlock() == null) ) { return; } } + if(decorator.getForceBlock() != null) + data.set(x, height, z, fixFaces(decorator.getForceBlock().getBlockData(getData()), x, height, z)); + if(bd instanceof Bisected) { bd = bd.clone(); ((Bisected) bd).setHalf(Bisected.Half.TOP); @@ -74,9 +77,8 @@ public class IrisSurfaceDecorator extends IrisEngineDecorator { ((Bisected) bd).setHalf(Bisected.Half.BOTTOM); } - if(decorator.getForceBlock() != null) - data.set(x, height, z, fixFaces(decorator.getForceBlock().getBlockData(getData()), x, height, z)); - data.set(x, height + 1, z, fixFaces(bd, x, height, z)); + data.set(x, height + 1, z, fixFaces(bd, x, height + 1, z)); + } else { if(height < getDimension().getFluidHeight()) { max = getDimension().getFluidHeight(); diff --git a/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java b/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java index 0fdc2e232..3b2a50b04 100644 --- a/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java +++ b/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java @@ -224,7 +224,7 @@ public class IrisPostModifier extends EngineAssignedModifier { if(B.isFoliage(b) || b.getMaterial().equals(Material.DEAD_BUSH)) { Material onto = getPostBlock(x, h, z, currentPostX, currentPostZ, currentData).getMaterial(); - if(!B.canPlaceOnto(b.getMaterial(), onto)) { + if(!B.canPlaceOnto(b.getMaterial(), onto) && !B.isDecorant(b)) { setPostBlock(x, h + 1, z, AIR, currentPostX, currentPostZ, currentData); } }