This commit is contained in:
cyberpwn 2021-08-19 22:26:31 -04:00
parent a1c3bc26c9
commit bbf660d80e
2 changed files with 71 additions and 0 deletions

View File

@ -22,6 +22,7 @@ import com.volmit.iris.Iris;
import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.block.IrisBlockData; 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.common.IrisScript;
import com.volmit.iris.engine.object.dimensional.IrisDimension; import com.volmit.iris.engine.object.dimensional.IrisDimension;
import com.volmit.iris.engine.object.entity.IrisEntity; import com.volmit.iris.engine.object.entity.IrisEntity;
@ -63,6 +64,7 @@ public class IrisData {
private ResourceLoader<IrisExpression> expressionLoader; private ResourceLoader<IrisExpression> expressionLoader;
private ResourceLoader<IrisObject> objectLoader; private ResourceLoader<IrisObject> objectLoader;
private ResourceLoader<IrisScript> scriptLoader; private ResourceLoader<IrisScript> scriptLoader;
private ResourceLoader<IrisCave> caveLoader;
private KMap<Class<? extends IrisRegistrant>, ResourceLoader<? extends IrisRegistrant>> loaders = new KMap<>(); private KMap<Class<? extends IrisRegistrant>, ResourceLoader<? extends IrisRegistrant>> loaders = new KMap<>();
private boolean closed; private boolean closed;
private final File dataFolder; private final File dataFolder;
@ -199,6 +201,7 @@ public class IrisData {
this.jigsawStructureLoader = registerLoader(IrisJigsawStructure.class); this.jigsawStructureLoader = registerLoader(IrisJigsawStructure.class);
this.jigsawPieceLoader = registerLoader(IrisJigsawPiece.class); this.jigsawPieceLoader = registerLoader(IrisJigsawPiece.class);
this.generatorLoader = registerLoader(IrisGenerator.class); this.generatorLoader = registerLoader(IrisGenerator.class);
this.caveLoader = registerLoader(IrisCave.class);
this.blockLoader = registerLoader(IrisBlockData.class); this.blockLoader = registerLoader(IrisBlockData.class);
this.expressionLoader = registerLoader(IrisExpression.class); this.expressionLoader = registerLoader(IrisExpression.class);
this.objectLoader = registerLoader(IrisObject.class); this.objectLoader = registerLoader(IrisObject.class);
@ -273,6 +276,10 @@ public class IrisData {
return loadAny(key, (dm) -> dm.getRegionLoader().load(key, false)); 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) { public static IrisDimension loadAnyDimension(String key) {
return loadAny(key, (dm) -> dm.getDimensionLoader().load(key, false)); return loadAny(key, (dm) -> dm.getDimensionLoader().load(key, false));
} }

View File

@ -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 <https://www.gnu.org/licenses/>.
*/
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();
}
}
}