diff --git a/src/main/java/com/volmit/iris/core/project/loader/IrisData.java b/src/main/java/com/volmit/iris/core/project/loader/IrisData.java index 5b18e1fdc..dbb52eb4d 100644 --- a/src/main/java/com/volmit/iris/core/project/loader/IrisData.java +++ b/src/main/java/com/volmit/iris/core/project/loader/IrisData.java @@ -22,6 +22,7 @@ import com.volmit.iris.Iris; import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.block.IrisBlockData; +import com.volmit.iris.engine.object.cave.IrisCave; import com.volmit.iris.engine.object.common.IrisScript; import com.volmit.iris.engine.object.dimensional.IrisDimension; import com.volmit.iris.engine.object.entity.IrisEntity; @@ -63,6 +64,7 @@ public class IrisData { private ResourceLoader expressionLoader; private ResourceLoader objectLoader; private ResourceLoader scriptLoader; + private ResourceLoader caveLoader; private KMap, ResourceLoader> loaders = new KMap<>(); private boolean closed; private final File dataFolder; @@ -199,6 +201,7 @@ public class IrisData { this.jigsawStructureLoader = registerLoader(IrisJigsawStructure.class); this.jigsawPieceLoader = registerLoader(IrisJigsawPiece.class); this.generatorLoader = registerLoader(IrisGenerator.class); + this.caveLoader = registerLoader(IrisCave.class); this.blockLoader = registerLoader(IrisBlockData.class); this.expressionLoader = registerLoader(IrisExpression.class); this.objectLoader = registerLoader(IrisObject.class); @@ -273,6 +276,10 @@ public class IrisData { return loadAny(key, (dm) -> dm.getRegionLoader().load(key, false)); } + public static IrisCave loadAnyCave(String key) { + return loadAny(key, (dm) -> dm.getCaveLoader().load(key, false)); + } + public static IrisDimension loadAnyDimension(String key) { return loadAny(key, (dm) -> dm.getDimensionLoader().load(key, false)); } diff --git a/src/main/java/com/volmit/iris/engine/object/cave/IrisCave.java b/src/main/java/com/volmit/iris/engine/object/cave/IrisCave.java new file mode 100644 index 000000000..db1eede0f --- /dev/null +++ b/src/main/java/com/volmit/iris/engine/object/cave/IrisCave.java @@ -0,0 +1,64 @@ +/* + * 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.cave; + +import com.volmit.iris.core.project.loader.IrisData; +import com.volmit.iris.core.project.loader.IrisRegistrant; +import com.volmit.iris.engine.object.annotations.Desc; +import com.volmit.iris.engine.object.noise.IrisWorm; +import com.volmit.iris.util.math.RNG; +import com.volmit.iris.util.noise.Worm; +import com.volmit.iris.util.noise.Worm3; +import com.volmit.iris.util.noise.WormIterator3; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@Desc("Translate objects") +@Data +public class IrisCave extends IrisRegistrant { + @Desc("Define the shape of this cave") + private IrisWorm worm; + + @Override + public String getFolderName() { + return "caves"; + } + + @Override + public String getTypeName() { + return "Cave"; + } + + public void generateCave(RNG rng, IrisData data, int x, int y, int z) + { + WormIterator3 w = worm.iterate3D(rng, data, x, y, z); + + while(w.hasNext()) + { + Worm3 wx = w.next(); + } + } +}