diff --git a/src/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java b/src/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java index 24f512354..6d2c245f4 100644 --- a/src/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java +++ b/src/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java @@ -38,7 +38,7 @@ import java.util.function.Predicate; public class IrisDecorantActuator extends EngineAssignedActuator { private static final Predicate PREDICATE_SOLID = (b) -> b != null && !b.getMaterial().isAir() && !b.getMaterial().equals(Material.WATER) && !b.getMaterial().equals(Material.LAVA); - private static BiPredicate PREDICATE_CAVELIQUID = (d, i) -> false; + private static BiPredicate PREDICATE_CAVELIQUID = null; private final RNG rng; @Getter private final EngineDecorator surfaceDecorator; @@ -62,20 +62,23 @@ public class IrisDecorantActuator extends EngineAssignedActuator { shoreLineDecorator = new IrisShoreLineDecorator(getEngine()); seaFloorDecorator = new IrisSeaFloorDecorator(getEngine()); - PREDICATE_CAVELIQUID = (b, y) -> { - for (IrisCaveLayer layer : getEngine().getDimension().getCaveLayers()) { - if (!layer.getFluid().hasFluid(getData())) { - continue; - } + //Can't be created without an instance of the actuator due to referencing the engine + if (PREDICATE_CAVELIQUID == null) { + PREDICATE_CAVELIQUID = (b, y) -> { + for (IrisCaveLayer layer : getEngine().getDimension().getCaveLayers()) { + if (!layer.getFluid().hasFluid(getData())) { + continue; + } - if (layer.getFluid().isInverseHeight() && y >= layer.getFluid().getFluidHeight()) { - if (b.matches(layer.getFluid().getFluid(getData()))) return true; - } else if (!layer.getFluid().isInverseHeight() && y <= layer.getFluid().getFluidHeight()) { - if (b.matches(layer.getFluid().getFluid(getData()))) return true; + if (layer.getFluid().isInverseHeight() && y >= layer.getFluid().getFluidHeight()) { + if (b.matches(layer.getFluid().getFluid(getData()))) return true; + } else if (!layer.getFluid().isInverseHeight() && y <= layer.getFluid().getFluidHeight()) { + if (b.matches(layer.getFluid().getFluid(getData()))) return true; + } } - } - return false; - }; + return false; + }; + } } @BlockCoordinates diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCaveBiome.java b/src/main/java/com/volmit/iris/engine/object/IrisCaveBiome.java deleted file mode 100644 index 79427e68a..000000000 --- a/src/main/java/com/volmit/iris/engine/object/IrisCaveBiome.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Iris is a World Generator for Minecraft Bukkit Servers - * Copyright (c) 2021 Arcane Arts (Volmit Software) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.volmit.iris.engine.object; - -import com.volmit.iris.Iris; -import com.volmit.iris.core.IrisDataManager; -import com.volmit.iris.core.gui.components.RenderType; -import com.volmit.iris.engine.IrisComplex; -import com.volmit.iris.engine.cache.AtomicCache; -import com.volmit.iris.engine.data.B; -import com.volmit.iris.engine.data.DataProvider; -import com.volmit.iris.engine.framework.Engine; -import com.volmit.iris.engine.framework.IrisAccess; -import com.volmit.iris.engine.noise.CNG; -import com.volmit.iris.engine.object.annotations.ArrayType; -import com.volmit.iris.engine.object.annotations.DependsOn; -import com.volmit.iris.engine.object.annotations.Desc; -import com.volmit.iris.engine.object.annotations.MaxNumber; -import com.volmit.iris.engine.object.annotations.MinNumber; -import com.volmit.iris.engine.object.annotations.RegistryListBiome; -import com.volmit.iris.engine.object.annotations.Required; -import com.volmit.iris.engine.object.common.IRare; -import com.volmit.iris.util.collection.KList; -import com.volmit.iris.util.collection.KMap; -import com.volmit.iris.util.collection.KSet; -import com.volmit.iris.util.data.VanillaBiomeMap; -import com.volmit.iris.util.inventorygui.RandomColor; -import com.volmit.iris.util.math.RNG; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; -import org.bukkit.block.Biome; -import org.bukkit.block.data.BlockData; - -import java.awt.*; - -@SuppressWarnings("DefaultAnnotationParam") -@Accessors(chain = true) -@NoArgsConstructor -@AllArgsConstructor - -@Desc("Represents a cave biome in iris. Cave biomes are placed inside of caves and hold objects.\nA biome consists of layers (block palletes), decorations, objects & generators.") -@Data -@EqualsAndHashCode(callSuper = true) -public class IrisCaveBiome extends IrisBiome { - - @Required - @ArrayType(min = 1, type = IrisBiomePaletteLayer.class) - @Desc("This defines the layers of materials in this biome. Each layer has a palette and min/max height and some other properties. Usually a grassy/sandy layer then a dirt layer then a stone layer. Iris will fill in the remaining blocks below your layers with stone.") - private KList lavaLayers = new KList().qadd(new IrisBiomePaletteLayer()); - - @Required - @ArrayType(min = 1, type = IrisBiomePaletteLayer.class) - @Desc("This defines the layers of materials in this biome. Each layer has a palette and min/max height and some other properties. Usually a grassy/sandy layer then a dirt layer then a stone layer. Iris will fill in the remaining blocks below your layers with stone.") - private KList waterLayers = new KList().qadd(new IrisBiomePaletteLayer()); - - - public KList getLavaLayers() { - return lavaLayers.isEmpty() ? getLayers() : lavaLayers; - } - - public KList getWaterLayers() { - return waterLayers.isEmpty() ? getLayers() : waterLayers; - } - - public boolean freezeLava = false; - public boolean freezeWater = false; -}