mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 18:23:06 +00:00
Objectify objects
This commit is contained in:
parent
77f8f11d99
commit
f640abda91
@ -29,10 +29,10 @@ import com.volmit.iris.core.nms.INMS;
|
|||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.framework.EngineCompositeGenerator;
|
import com.volmit.iris.engine.framework.EngineCompositeGenerator;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisBiomeCustom;
|
import com.volmit.iris.engine.object.biome.IrisBiomeCustom;
|
||||||
import com.volmit.iris.engine.object.IrisCompat;
|
import com.volmit.iris.engine.object.compat.IrisCompat;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KSet;
|
import com.volmit.iris.util.collection.KSet;
|
||||||
@ -182,7 +182,7 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
if (dims.exists()) {
|
if (dims.exists()) {
|
||||||
for (File j : dims.listFiles()) {
|
for (File j : dims.listFiles()) {
|
||||||
if (j.getName().endsWith(".json")) {
|
if (j.getName().endsWith(".json")) {
|
||||||
IrisDimension dim = data.getDimensionLoader().load(j.getName().split("\\Q.\\E")[0]);
|
LoaderDimension dim = data.getDimensionLoader().load(j.getName().split("\\Q.\\E")[0]);
|
||||||
Iris.verbose(" Checking Dimension " + dim.getLoadFile().getPath());
|
Iris.verbose(" Checking Dimension " + dim.getLoadFile().getPath());
|
||||||
if (dim.installDataPack(() -> data, dpacks)) {
|
if (dim.installDataPack(() -> data, dpacks)) {
|
||||||
reboot = true;
|
reboot = true;
|
||||||
@ -305,7 +305,7 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
if (dims.exists()) {
|
if (dims.exists()) {
|
||||||
for (File j : dims.listFiles()) {
|
for (File j : dims.listFiles()) {
|
||||||
if (j.getName().endsWith(".json")) {
|
if (j.getName().endsWith(".json")) {
|
||||||
IrisDimension dim = data.getDimensionLoader().load(j.getName().split("\\Q.\\E")[0]);
|
LoaderDimension dim = data.getDimensionLoader().load(j.getName().split("\\Q.\\E")[0]);
|
||||||
|
|
||||||
if (!verifyDataPackInstalled(dim)) {
|
if (!verifyDataPackInstalled(dim)) {
|
||||||
bad = true;
|
bad = true;
|
||||||
@ -335,12 +335,12 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean verifyDataPackInstalled(IrisDimension dimension) {
|
public boolean verifyDataPackInstalled(LoaderDimension dimension) {
|
||||||
IrisData idm = new IrisData(getDataFolder("packs", dimension.getLoadKey()));
|
IrisData idm = new IrisData(getDataFolder("packs", dimension.getLoadKey()));
|
||||||
KSet<String> keys = new KSet<>();
|
KSet<String> keys = new KSet<>();
|
||||||
boolean warn = false;
|
boolean warn = false;
|
||||||
|
|
||||||
for (IrisBiome i : dimension.getAllBiomes(() -> idm)) {
|
for (LoaderBiome i : dimension.getAllBiomes(() -> idm)) {
|
||||||
if (i.isCustom()) {
|
if (i.isCustom()) {
|
||||||
for (IrisBiomeCustom j : i.getCustomDerivitives()) {
|
for (IrisBiomeCustom j : i.getCustomDerivitives()) {
|
||||||
keys.add(dimension.getLoadKey() + ":" + j.getId());
|
keys.add(dimension.getLoadKey() + ":" + j.getId());
|
||||||
|
@ -26,7 +26,12 @@ import com.volmit.iris.engine.data.nbt.io.NamedTag;
|
|||||||
import com.volmit.iris.engine.data.nbt.tag.CompoundTag;
|
import com.volmit.iris.engine.data.nbt.tag.CompoundTag;
|
||||||
import com.volmit.iris.engine.data.nbt.tag.IntTag;
|
import com.volmit.iris.engine.data.nbt.tag.IntTag;
|
||||||
import com.volmit.iris.engine.data.nbt.tag.ListTag;
|
import com.volmit.iris.engine.data.nbt.tag.ListTag;
|
||||||
import com.volmit.iris.engine.object.*;
|
import com.volmit.iris.engine.object.basic.IrisPosition;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawPiece;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.IrisJigsawPieceConnector;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawPool;
|
||||||
|
import com.volmit.iris.engine.object.objects.IrisDirection;
|
||||||
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
@ -100,7 +105,7 @@ public class ConversionManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void convertStructures(File in, File out, VolmitSender s) {
|
public void convertStructures(File in, File out, VolmitSender s) {
|
||||||
KMap<String, IrisJigsawPool> pools = new KMap<>();
|
KMap<String, LoaderJigsawPool> pools = new KMap<>();
|
||||||
KList<File> roots = new KList<>();
|
KList<File> roots = new KList<>();
|
||||||
AtomicInteger total = new AtomicInteger(0);
|
AtomicInteger total = new AtomicInteger(0);
|
||||||
AtomicInteger at = new AtomicInteger(0);
|
AtomicInteger at = new AtomicInteger(0);
|
||||||
@ -118,7 +123,7 @@ public class ConversionManager {
|
|||||||
b = b.substring(0, b.length() - 1);
|
b = b.substring(0, b.length() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
pools.put(b, new IrisJigsawPool());
|
pools.put(b, new LoaderJigsawPool());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
findAllNBT(in, (folder, file) -> {
|
findAllNBT(in, (folder, file) -> {
|
||||||
@ -131,7 +136,7 @@ public class ConversionManager {
|
|||||||
if (b.endsWith("/")) {
|
if (b.endsWith("/")) {
|
||||||
b = b.substring(0, b.length() - 1);
|
b = b.substring(0, b.length() - 1);
|
||||||
}
|
}
|
||||||
IrisJigsawPool jpool = pools.get(b);
|
LoaderJigsawPool jpool = pools.get(b);
|
||||||
File destObjects = new File(out.getAbsolutePath() + "/objects/" + in.toURI().relativize(folder.toURI()).getPath());
|
File destObjects = new File(out.getAbsolutePath() + "/objects/" + in.toURI().relativize(folder.toURI()).getPath());
|
||||||
File destPieces = new File(out.getAbsolutePath() + "/jigsaw-pieces/" + in.toURI().relativize(folder.toURI()).getPath());
|
File destPieces = new File(out.getAbsolutePath() + "/jigsaw-pieces/" + in.toURI().relativize(folder.toURI()).getPath());
|
||||||
destObjects.mkdirs();
|
destObjects.mkdirs();
|
||||||
@ -153,8 +158,8 @@ public class ConversionManager {
|
|||||||
CompoundTag cp = paletteList.get(i);
|
CompoundTag cp = paletteList.get(i);
|
||||||
palette.add(NBTWorld.getBlockData(cp));
|
palette.add(NBTWorld.getBlockData(cp));
|
||||||
}
|
}
|
||||||
IrisJigsawPiece piece = new IrisJigsawPiece();
|
LoaderJigsawPiece piece = new LoaderJigsawPiece();
|
||||||
IrisObject object = new IrisObject(w, h, d);
|
LoaderObject object = new LoaderObject(w, h, d);
|
||||||
@SuppressWarnings("unchecked") ListTag<CompoundTag> blockList = (ListTag<CompoundTag>) compound.getListTag("blocks");
|
@SuppressWarnings("unchecked") ListTag<CompoundTag> blockList = (ListTag<CompoundTag>) compound.getListTag("blocks");
|
||||||
for (int i = 0; i < blockList.size(); i++) {
|
for (int i = 0; i < blockList.size(); i++) {
|
||||||
CompoundTag cp = blockList.get(i);
|
CompoundTag cp = blockList.get(i);
|
||||||
@ -177,7 +182,7 @@ public class ConversionManager {
|
|||||||
String poolId = toPoolName(pool);
|
String poolId = toPoolName(pool);
|
||||||
String name = nbt.getString("name");
|
String name = nbt.getString("name");
|
||||||
String target = nbt.getString("target");
|
String target = nbt.getString("target");
|
||||||
pools.computeIfAbsent(poolId, (k) -> new IrisJigsawPool());
|
pools.computeIfAbsent(poolId, (k) -> new LoaderJigsawPool());
|
||||||
IrisJigsawPieceConnector connector = new IrisJigsawPieceConnector();
|
IrisJigsawPieceConnector connector = new IrisJigsawPieceConnector();
|
||||||
connector.setName(name);
|
connector.setName(name);
|
||||||
connector.setTargetName(target);
|
connector.setTargetName(target);
|
||||||
|
@ -22,7 +22,7 @@ import com.volmit.iris.Iris;
|
|||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.object.IrisFeaturePositional;
|
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
||||||
import com.volmit.iris.util.board.BoardManager;
|
import com.volmit.iris.util.board.BoardManager;
|
||||||
import com.volmit.iris.util.board.BoardProvider;
|
import com.volmit.iris.util.board.BoardProvider;
|
||||||
import com.volmit.iris.util.board.BoardSettings;
|
import com.volmit.iris.util.board.BoardSettings;
|
||||||
|
@ -23,8 +23,8 @@ import com.google.gson.JsonSyntaxException;
|
|||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.project.IrisProject;
|
import com.volmit.iris.core.project.IrisProject;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.exceptions.IrisException;
|
import com.volmit.iris.util.exceptions.IrisException;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
@ -92,11 +92,11 @@ public class ProjectManager {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public IrisDimension installIntoWorld(VolmitSender sender, String type, File folder) {
|
public LoaderDimension installIntoWorld(VolmitSender sender, String type, File folder) {
|
||||||
sender.sendMessage("Looking for Package: " + type);
|
sender.sendMessage("Looking for Package: " + type);
|
||||||
File iris = new File(folder, "iris");
|
File iris = new File(folder, "iris");
|
||||||
File irispack = new File(folder, "iris/pack");
|
File irispack = new File(folder, "iris/pack");
|
||||||
IrisDimension dim = IrisData.loadAnyDimension(type);
|
LoaderDimension dim = IrisData.loadAnyDimension(type);
|
||||||
|
|
||||||
if (dim == null) {
|
if (dim == null) {
|
||||||
for (File i : Iris.proj.getWorkspaceFolder().listFiles()) {
|
for (File i : Iris.proj.getWorkspaceFolder().listFiles()) {
|
||||||
@ -262,7 +262,7 @@ public class ProjectManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String key = dim.getName().split("\\Q.\\E")[0];
|
String key = dim.getName().split("\\Q.\\E")[0];
|
||||||
IrisDimension d = new Gson().fromJson(IO.readAll(dim), IrisDimension.class);
|
LoaderDimension d = new Gson().fromJson(IO.readAll(dim), LoaderDimension.class);
|
||||||
sender.sendMessage("Importing " + d.getName() + " (" + key + ")");
|
sender.sendMessage("Importing " + d.getName() + " (" + key + ")");
|
||||||
File packEntry = new File(packs, key);
|
File packEntry = new File(packs, key);
|
||||||
|
|
||||||
|
@ -23,9 +23,14 @@ import com.volmit.iris.core.project.loader.IrisData;
|
|||||||
import com.volmit.iris.core.tools.IrisToolbelt;
|
import com.volmit.iris.core.tools.IrisToolbelt;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.object.*;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
||||||
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||||
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
import com.volmit.iris.engine.object.tile.TileData;
|
import com.volmit.iris.engine.object.tile.TileData;
|
||||||
|
import com.volmit.iris.engine.object.trees.IrisTreeModes;
|
||||||
|
import com.volmit.iris.engine.object.trees.IrisTreeSize;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.data.Cuboid;
|
import com.volmit.iris.util.data.Cuboid;
|
||||||
@ -114,7 +119,7 @@ public class TreeManager implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
saplingPlane.forEach(block -> block.setType(Material.AIR));
|
saplingPlane.forEach(block -> block.setType(Material.AIR));
|
||||||
IrisObject object = worldAccess.getData().getObjectLoader().load(placement.getPlace().getRandom(RNG.r));
|
LoaderObject object = worldAccess.getData().getObjectLoader().load(placement.getPlace().getRandom(RNG.r));
|
||||||
List<BlockState> blockStateList = new KList<>();
|
List<BlockState> blockStateList = new KList<>();
|
||||||
KMap<Location, BlockData> dataCache = new KMap<>();
|
KMap<Location, BlockData> dataCache = new KMap<>();
|
||||||
// TODO: REAL CLASSES!!!!
|
// TODO: REAL CLASSES!!!!
|
||||||
@ -227,12 +232,12 @@ public class TreeManager implements Listener {
|
|||||||
boolean isUseAll = ((Engine) worldAccess.getEngineAccess(location.getBlockY())).getDimension().getTreeSettings().getMode().equals(IrisTreeModes.ALL);
|
boolean isUseAll = ((Engine) worldAccess.getEngineAccess(location.getBlockY())).getDimension().getTreeSettings().getMode().equals(IrisTreeModes.ALL);
|
||||||
|
|
||||||
// Retrieve objectPlacements of type `species` from biome
|
// Retrieve objectPlacements of type `species` from biome
|
||||||
IrisBiome biome = worldAccess.getBiome(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
LoaderBiome biome = worldAccess.getBiome(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||||
placements.addAll(matchObjectPlacements(biome.getObjects(), size, type));
|
placements.addAll(matchObjectPlacements(biome.getObjects(), size, type));
|
||||||
|
|
||||||
// Add more or find any in the region
|
// Add more or find any in the region
|
||||||
if (isUseAll || placements.isEmpty()) {
|
if (isUseAll || placements.isEmpty()) {
|
||||||
IrisRegion region = worldAccess.getCompound().getEngineForHeight(location.getBlockY()).getRegion(location.getBlockX(), location.getBlockZ());
|
LoaderRegion region = worldAccess.getCompound().getEngineForHeight(location.getBlockY()).getRegion(location.getBlockX(), location.getBlockZ());
|
||||||
placements.addAll(matchObjectPlacements(region.getObjects(), size, type));
|
placements.addAll(matchObjectPlacements(region.getObjects(), size, type));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ package com.volmit.iris.core;
|
|||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.edit.DustRevealer;
|
import com.volmit.iris.core.edit.DustRevealer;
|
||||||
import com.volmit.iris.engine.object.IrisObject;
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.data.Cuboid;
|
import com.volmit.iris.util.data.Cuboid;
|
||||||
import com.volmit.iris.util.format.C;
|
import com.volmit.iris.util.format.C;
|
||||||
@ -185,7 +185,7 @@ public class WandManager implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void pasteSchematic(IrisObject s, Location at) {
|
public static void pasteSchematic(LoaderObject s, Location at) {
|
||||||
s.place(at);
|
s.place(at);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,7 +194,7 @@ public class WandManager implements Listener {
|
|||||||
* @param wand The wand itemstack
|
* @param wand The wand itemstack
|
||||||
* @return The new object
|
* @return The new object
|
||||||
*/
|
*/
|
||||||
public static IrisObject createSchematic(ItemStack wand) {
|
public static LoaderObject createSchematic(ItemStack wand) {
|
||||||
if (!isWand(wand)) {
|
if (!isWand(wand)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -202,7 +202,7 @@ public class WandManager implements Listener {
|
|||||||
try {
|
try {
|
||||||
Location[] f = getCuboid(wand);
|
Location[] f = getCuboid(wand);
|
||||||
Cuboid c = new Cuboid(f[0], f[1]);
|
Cuboid c = new Cuboid(f[0], f[1]);
|
||||||
IrisObject s = new IrisObject(c.getSizeX(), c.getSizeY(), c.getSizeZ());
|
LoaderObject s = new LoaderObject(c.getSizeX(), c.getSizeY(), c.getSizeZ());
|
||||||
for (Block b : c) {
|
for (Block b : c) {
|
||||||
if (b.getType().equals(Material.AIR)) {
|
if (b.getType().equals(Material.AIR)) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -22,7 +22,7 @@ import com.volmit.iris.Iris;
|
|||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.core.edit.JigsawEditor;
|
import com.volmit.iris.core.edit.JigsawEditor;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.object.IrisJigsawPiece;
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawPiece;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.plugin.MortarCommand;
|
import com.volmit.iris.util.plugin.MortarCommand;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
@ -59,7 +59,7 @@ public class CommandIrisJigsawEdit extends MortarCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisJigsawPiece piece = IrisData.loadAnyJigsawPiece(args[0]);
|
LoaderJigsawPiece piece = IrisData.loadAnyJigsawPiece(args[0]);
|
||||||
|
|
||||||
if (piece != null) {
|
if (piece != null) {
|
||||||
File dest = piece.getLoadFile();
|
File dest = piece.getLoadFile();
|
||||||
|
@ -22,7 +22,7 @@ import com.volmit.iris.Iris;
|
|||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.core.edit.JigsawEditor;
|
import com.volmit.iris.core.edit.JigsawEditor;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.object.IrisObject;
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.plugin.MortarCommand;
|
import com.volmit.iris.util.plugin.MortarCommand;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
@ -59,7 +59,7 @@ public class CommandIrisJigsawNew extends MortarCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisObject object = IrisData.loadAnyObject(args[2]);
|
LoaderObject object = IrisData.loadAnyObject(args[2]);
|
||||||
|
|
||||||
if (object == null) {
|
if (object == null) {
|
||||||
sender.sendMessage("Failed to find existing object: " + args[2]);
|
sender.sendMessage("Failed to find existing object: " + args[2]);
|
||||||
|
@ -23,8 +23,8 @@ import com.volmit.iris.core.IrisSettings;
|
|||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.jigsaw.PlannedStructure;
|
import com.volmit.iris.engine.jigsaw.PlannedStructure;
|
||||||
import com.volmit.iris.engine.object.IrisJigsawStructure;
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawStructure;
|
||||||
import com.volmit.iris.engine.object.IrisPosition;
|
import com.volmit.iris.engine.object.basic.IrisPosition;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
@ -71,7 +71,7 @@ public class CommandIrisJigsawPlace extends MortarCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisJigsawStructure str = IrisData.loadAnyJigsawStructure(args[0]);
|
LoaderJigsawStructure str = IrisData.loadAnyJigsawStructure(args[0]);
|
||||||
|
|
||||||
if (str != null) {
|
if (str != null) {
|
||||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||||
|
@ -5,7 +5,7 @@ import com.volmit.iris.core.IrisSettings;
|
|||||||
import com.volmit.iris.core.ProjectManager;
|
import com.volmit.iris.core.ProjectManager;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.object.IrisObject;
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.plugin.MortarCommand;
|
import com.volmit.iris.util.plugin.MortarCommand;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
@ -75,7 +75,7 @@ public class CommandIrisObjectAnalyze extends MortarCommand {
|
|||||||
Player p = sender.player();
|
Player p = sender.player();
|
||||||
|
|
||||||
J.a(() -> {
|
J.a(() -> {
|
||||||
IrisObject obj = IrisData.loadAnyObject(args[0]);
|
LoaderObject obj = IrisData.loadAnyObject(args[0]);
|
||||||
|
|
||||||
if (obj == null || obj.getLoadFile() == null) {
|
if (obj == null || obj.getLoadFile() == null) {
|
||||||
sender.sendMessage("Can't find " + args[0] + " in the " + ProjectManager.WORKSPACE_NAME + " folder");
|
sender.sendMessage("Can't find " + args[0] + " in the " + ProjectManager.WORKSPACE_NAME + " folder");
|
||||||
|
@ -24,12 +24,10 @@ import com.volmit.iris.core.ProjectManager;
|
|||||||
import com.volmit.iris.core.WandManager;
|
import com.volmit.iris.core.WandManager;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.object.IrisAxisRotationClamp;
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
import com.volmit.iris.engine.object.IrisObject;
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||||
import com.volmit.iris.engine.object.IrisObjectPlacement;
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacementScaleInterpolator;
|
||||||
import com.volmit.iris.engine.object.IrisObjectPlacementScaleInterpolator;
|
import com.volmit.iris.engine.object.objects.IrisObjectRotation;
|
||||||
import com.volmit.iris.engine.object.IrisObjectRotation;
|
|
||||||
import com.volmit.iris.engine.object.IrisObjectScale;
|
|
||||||
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
||||||
import com.volmit.iris.engine.object.tile.TileData;
|
import com.volmit.iris.engine.object.tile.TileData;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
@ -49,7 +47,6 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -94,7 +91,7 @@ public class CommandIrisObjectPaste extends MortarCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Player p = sender.player();
|
Player p = sender.player();
|
||||||
IrisObject obj = IrisData.loadAnyObject(args[0]);
|
LoaderObject obj = IrisData.loadAnyObject(args[0]);
|
||||||
|
|
||||||
if (obj == null || obj.getLoadFile() == null) {
|
if (obj == null || obj.getLoadFile() == null) {
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ package com.volmit.iris.core.command.object;
|
|||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.core.WandManager;
|
import com.volmit.iris.core.WandManager;
|
||||||
import com.volmit.iris.engine.object.IrisObject;
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.plugin.MortarCommand;
|
import com.volmit.iris.util.plugin.MortarCommand;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
@ -75,7 +75,7 @@ public class CommandIrisObjectSave extends MortarCommand {
|
|||||||
|
|
||||||
Player p = sender.player();
|
Player p = sender.player();
|
||||||
ItemStack wand = p.getInventory().getItemInMainHand();
|
ItemStack wand = p.getInventory().getItemInMainHand();
|
||||||
IrisObject o = WandManager.createSchematic(wand);
|
LoaderObject o = WandManager.createSchematic(wand);
|
||||||
File file = Iris.proj.getWorkspaceFile(args[0], "objects", args[1] + ".iob");
|
File file = Iris.proj.getWorkspaceFile(args[0], "objects", args[1] + ".iob");
|
||||||
|
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
|
@ -23,7 +23,7 @@ import com.volmit.iris.core.IrisSettings;
|
|||||||
import com.volmit.iris.core.gui.NoiseExplorerGUI;
|
import com.volmit.iris.core.gui.NoiseExplorerGUI;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.object.IrisGenerator;
|
import com.volmit.iris.engine.object.noise.LoaderGenerator;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.function.Function2;
|
import com.volmit.iris.util.function.Function2;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
@ -74,7 +74,7 @@ public class CommandIrisStudioExplorerGenerator extends MortarCommand {
|
|||||||
|
|
||||||
Supplier<Function2<Double, Double, Double>> l = () -> {
|
Supplier<Function2<Double, Double, Double>> l = () -> {
|
||||||
long seed = 12345;
|
long seed = 12345;
|
||||||
IrisGenerator generator;
|
LoaderGenerator generator;
|
||||||
if (Iris.proj.isProjectOpen()) {
|
if (Iris.proj.isProjectOpen()) {
|
||||||
generator = Iris.proj.getActiveProject().getActiveProvider().getData().getGeneratorLoader().load(args[0]);
|
generator = Iris.proj.getActiveProject().getActiveProvider().getData().getGeneratorLoader().load(args[0]);
|
||||||
seed = Iris.proj.getActiveProject().getActiveProvider().getTarget().getWorld().seed();
|
seed = Iris.proj.getActiveProject().getActiveProvider().getTarget().getWorld().seed();
|
||||||
|
@ -22,9 +22,9 @@ import com.volmit.iris.Iris;
|
|||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisJigsawStructure;
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawStructure;
|
||||||
import com.volmit.iris.engine.object.IrisRegion;
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.format.C;
|
import com.volmit.iris.util.format.C;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
@ -81,9 +81,9 @@ public class CommandIrisStudioGoto extends MortarCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
IrisAccess g = IrisWorlds.access(world);
|
IrisAccess g = IrisWorlds.access(world);
|
||||||
IrisBiome b = IrisData.loadAnyBiome(args[0]);
|
LoaderBiome b = IrisData.loadAnyBiome(args[0]);
|
||||||
IrisRegion r = IrisData.loadAnyRegion(args[0]);
|
LoaderRegion r = IrisData.loadAnyRegion(args[0]);
|
||||||
IrisJigsawStructure s = IrisData.loadAnyJigsawStructure(args[0]);
|
LoaderJigsawStructure s = IrisData.loadAnyJigsawStructure(args[0]);
|
||||||
|
|
||||||
if (b != null) {
|
if (b != null) {
|
||||||
J.a(() -> {
|
J.a(() -> {
|
||||||
|
@ -22,8 +22,8 @@ import com.volmit.iris.Iris;
|
|||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.object.InventorySlotType;
|
import com.volmit.iris.engine.object.meta.InventorySlotType;
|
||||||
import com.volmit.iris.engine.object.IrisLootTable;
|
import com.volmit.iris.engine.object.loot.LoaderLootTable;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.plugin.MortarCommand;
|
import com.volmit.iris.util.plugin.MortarCommand;
|
||||||
@ -63,7 +63,7 @@ public class CommandIrisStudioLoot extends MortarCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
KList<IrisLootTable> tables = prov.getCompound().getEngine(p.getLocation().getBlockY()).getLootTables(RNG.r, p.getLocation().getBlock());
|
KList<LoaderLootTable> tables = prov.getCompound().getEngine(p.getLocation().getBlockY()).getLootTables(RNG.r, p.getLocation().getBlock());
|
||||||
Inventory inv = Bukkit.createInventory(null, 27 * 2);
|
Inventory inv = Bukkit.createInventory(null, 27 * 2);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -76,7 +76,7 @@ public class CommandIrisStudioLoot extends MortarCommand {
|
|||||||
|
|
||||||
p.openInventory(inv);
|
p.openInventory(inv);
|
||||||
|
|
||||||
for (IrisLootTable i : tables) {
|
for (LoaderLootTable i : tables) {
|
||||||
sender.sendMessage("- " + i.getName());
|
sender.sendMessage("- " + i.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,9 +22,15 @@ import com.volmit.iris.Iris;
|
|||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.core.project.IrisProject;
|
import com.volmit.iris.core.project.IrisProject;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.interpolation.InterpolationMethod;
|
import com.volmit.iris.util.interpolation.InterpolationMethod;
|
||||||
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
|
import com.volmit.iris.engine.object.biome.IrisBiomePaletteLayer;
|
||||||
|
import com.volmit.iris.engine.object.noise.LoaderGenerator;
|
||||||
|
import com.volmit.iris.engine.object.noise.IrisInterpolator;
|
||||||
|
import com.volmit.iris.engine.object.noise.IrisNoiseGenerator;
|
||||||
|
import com.volmit.iris.engine.object.noise.NoiseStyle;
|
||||||
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
import com.volmit.iris.util.noise.CNG;
|
import com.volmit.iris.util.noise.CNG;
|
||||||
import com.volmit.iris.engine.object.*;
|
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
@ -152,7 +158,7 @@ public class CommandIrisStudioProfile extends MortarCommand {
|
|||||||
|
|
||||||
for (String i : data.getGeneratorLoader().getPossibleKeys()) {
|
for (String i : data.getGeneratorLoader().getPossibleKeys()) {
|
||||||
KList<String> vv = new KList<>();
|
KList<String> vv = new KList<>();
|
||||||
IrisGenerator g = data.getGeneratorLoader().load(i);
|
LoaderGenerator g = data.getGeneratorLoader().load(i);
|
||||||
KList<IrisNoiseGenerator> composites = g.getAllComposites();
|
KList<IrisNoiseGenerator> composites = g.getAllComposites();
|
||||||
double score = 0;
|
double score = 0;
|
||||||
int m = 0;
|
int m = 0;
|
||||||
@ -182,7 +188,7 @@ public class CommandIrisStudioProfile extends MortarCommand {
|
|||||||
|
|
||||||
for (String i : data.getBiomeLoader().getPossibleKeys()) {
|
for (String i : data.getBiomeLoader().getPossibleKeys()) {
|
||||||
KList<String> vv = new KList<>();
|
KList<String> vv = new KList<>();
|
||||||
IrisBiome b = data.getBiomeLoader().load(i);
|
LoaderBiome b = data.getBiomeLoader().load(i);
|
||||||
double score = 0;
|
double score = 0;
|
||||||
|
|
||||||
int m = 0;
|
int m = 0;
|
||||||
@ -211,7 +217,7 @@ public class CommandIrisStudioProfile extends MortarCommand {
|
|||||||
v.add("");
|
v.add("");
|
||||||
|
|
||||||
for (String i : data.getRegionLoader().getPossibleKeys()) {
|
for (String i : data.getRegionLoader().getPossibleKeys()) {
|
||||||
IrisRegion b = data.getRegionLoader().load(i);
|
LoaderRegion b = data.getRegionLoader().load(i);
|
||||||
double score = 0;
|
double score = 0;
|
||||||
|
|
||||||
score += styleTimings.get(b.getLakeStyle().getStyle());
|
score += styleTimings.get(b.getLakeStyle().getStyle());
|
||||||
|
@ -23,7 +23,7 @@ import com.volmit.iris.core.IrisSettings;
|
|||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.object.IrisEntity;
|
import com.volmit.iris.engine.object.entity.LoaderEntity;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.plugin.MortarCommand;
|
import com.volmit.iris.util.plugin.MortarCommand;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
@ -65,7 +65,7 @@ public class CommandIrisStudioSummon extends MortarCommand {
|
|||||||
sender.sendMessage("- " + i);
|
sender.sendMessage("- " + i);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
IrisEntity e = g.getData().getEntityLoader().load(args[0]);
|
LoaderEntity e = g.getData().getEntityLoader().load(args[0]);
|
||||||
|
|
||||||
if (e == null) {
|
if (e == null) {
|
||||||
sender.sendMessage("Couldnt find entity " + args[0] + ". Use '/iris std summon' to see a list of iris entities.");
|
sender.sendMessage("Couldnt find entity " + args[0] + ". Use '/iris std summon' to see a list of iris entities.");
|
||||||
|
@ -22,7 +22,7 @@ import com.volmit.iris.Iris;
|
|||||||
import com.volmit.iris.core.nms.INMS;
|
import com.volmit.iris.core.nms.INMS;
|
||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.plugin.MortarCommand;
|
import com.volmit.iris.util.plugin.MortarCommand;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
@ -54,7 +54,7 @@ public class CommandIrisWhatBiome extends MortarCommand {
|
|||||||
|
|
||||||
IrisAccess g = IrisWorlds.access(w);
|
IrisAccess g = IrisWorlds.access(w);
|
||||||
assert g != null;
|
assert g != null;
|
||||||
IrisBiome b = g.getBiome(p.getLocation().getBlockX(), p.getLocation().getBlockY(), p.getLocation().getBlockZ());
|
LoaderBiome b = g.getBiome(p.getLocation().getBlockX(), p.getLocation().getBlockY(), p.getLocation().getBlockZ());
|
||||||
sender.sendMessage("IBiome: " + b.getLoadKey() + " (" + b.getDerivative().name() + ")");
|
sender.sendMessage("IBiome: " + b.getLoadKey() + " (" + b.getDerivative().name() + ")");
|
||||||
|
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
|
@ -21,17 +21,13 @@ package com.volmit.iris.core.command.what;
|
|||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.data.B;
|
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.object.IrisFeaturePositional;
|
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
||||||
import com.volmit.iris.engine.object.IrisFeaturePotential;
|
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.format.C;
|
|
||||||
import com.volmit.iris.util.json.JSONObject;
|
import com.volmit.iris.util.json.JSONObject;
|
||||||
import com.volmit.iris.util.plugin.MortarCommand;
|
import com.volmit.iris.util.plugin.MortarCommand;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.FluidCollisionMode;
|
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@ -21,9 +21,9 @@ package com.volmit.iris.core.command.what;
|
|||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisObject;
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
import com.volmit.iris.engine.object.IrisObjectPlacement;
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.collection.KSet;
|
import com.volmit.iris.util.collection.KSet;
|
||||||
@ -139,8 +139,8 @@ public class CommandIrisWhatObjects extends MortarCommand {
|
|||||||
for (int k = 0; k < 16; k += 3) {
|
for (int k = 0; k < 16; k += 3) {
|
||||||
|
|
||||||
assert g != null;
|
assert g != null;
|
||||||
IrisBiome bb = g.getBiome((i.getX() * 16) + j, (i.getZ() * 16) + k);
|
LoaderBiome bb = g.getBiome((i.getX() * 16) + j, (i.getZ() * 16) + k);
|
||||||
IrisBiome bxf = g.getCaveBiome((i.getX() * 16) + j, (i.getZ() * 16) + k);
|
LoaderBiome bxf = g.getCaveBiome((i.getX() * 16) + j, (i.getZ() * 16) + k);
|
||||||
biomes.addIfMissing(bb.getName() + " [" + Form.capitalize(bb.getInferredType().name().toLowerCase()) + "] " + " (" + bb.getLoadFile().getName() + ")");
|
biomes.addIfMissing(bb.getName() + " [" + Form.capitalize(bb.getInferredType().name().toLowerCase()) + "] " + " (" + bb.getLoadFile().getName() + ")");
|
||||||
caveBiomes.addIfMissing(bxf.getName() + " (" + bxf.getLoadFile().getName() + ")");
|
caveBiomes.addIfMissing(bxf.getName() + " (" + bxf.getLoadFile().getName() + ")");
|
||||||
exportObjects(bb, pw, g, objects);
|
exportObjects(bb, pw, g, objects);
|
||||||
@ -199,7 +199,7 @@ public class CommandIrisWhatObjects extends MortarCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void exportObjects(IrisBiome bb, PrintWriter pw, IrisAccess g, KMap<String, KMap<String, KList<String>>> objects) {
|
private void exportObjects(LoaderBiome bb, PrintWriter pw, IrisAccess g, KMap<String, KMap<String, KList<String>>> objects) {
|
||||||
String n1 = bb.getName() + " [" + Form.capitalize(bb.getInferredType().name().toLowerCase()) + "] " + " (" + bb.getLoadFile().getName() + ")";
|
String n1 = bb.getName() + " [" + Form.capitalize(bb.getInferredType().name().toLowerCase()) + "] " + " (" + bb.getLoadFile().getName() + ")";
|
||||||
int m = 0;
|
int m = 0;
|
||||||
KSet<String> stop = new KSet<>();
|
KSet<String> stop = new KSet<>();
|
||||||
@ -216,7 +216,7 @@ public class CommandIrisWhatObjects extends MortarCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
File ff = g.getData().getObjectLoader().findFile(i);
|
File ff = g.getData().getObjectLoader().findFile(i);
|
||||||
BlockVector sz = IrisObject.sampleSize(ff);
|
BlockVector sz = LoaderObject.sampleSize(ff);
|
||||||
nn3 = i + ": size=[" + sz.getBlockX() + "," + sz.getBlockY() + "," + sz.getBlockZ() + "] location=[" + ff.getPath() + "]";
|
nn3 = i + ": size=[" + sz.getBlockX() + "," + sz.getBlockY() + "," + sz.getBlockZ() + "] location=[" + ff.getPath() + "]";
|
||||||
stop.add(i);
|
stop.add(i);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
|
@ -25,7 +25,7 @@ import com.volmit.iris.core.nms.INMS;
|
|||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.core.tools.IrisWorldCreator;
|
import com.volmit.iris.core.tools.IrisWorldCreator;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
import com.volmit.iris.util.plugin.MortarCommand;
|
import com.volmit.iris.util.plugin.MortarCommand;
|
||||||
@ -139,7 +139,7 @@ public class CommandIrisCreate extends MortarCommand {
|
|||||||
|
|
||||||
Iris.linkMultiverseCore.assignWorldType(worldName, type);
|
Iris.linkMultiverseCore.assignWorldType(worldName, type);
|
||||||
final AtomicReference<World> world = new AtomicReference<>();
|
final AtomicReference<World> world = new AtomicReference<>();
|
||||||
IrisDimension dim;
|
LoaderDimension dim;
|
||||||
File folder = new File(worldName);
|
File folder = new File(worldName);
|
||||||
|
|
||||||
Runnable onDone = () -> {
|
Runnable onDone = () -> {
|
||||||
|
@ -20,7 +20,11 @@ package com.volmit.iris.core.edit;
|
|||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.object.*;
|
import com.volmit.iris.engine.object.basic.IrisPosition;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawPiece;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.IrisJigsawPieceConnector;
|
||||||
|
import com.volmit.iris.engine.object.objects.IrisDirection;
|
||||||
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.data.Cuboid;
|
import com.volmit.iris.util.data.Cuboid;
|
||||||
import com.volmit.iris.util.io.IO;
|
import com.volmit.iris.util.io.IO;
|
||||||
@ -46,9 +50,9 @@ import java.io.IOException;
|
|||||||
public class JigsawEditor implements Listener {
|
public class JigsawEditor implements Listener {
|
||||||
public static final KMap<Player, JigsawEditor> editors = new KMap<>();
|
public static final KMap<Player, JigsawEditor> editors = new KMap<>();
|
||||||
private final Player player;
|
private final Player player;
|
||||||
private final IrisObject object;
|
private final LoaderObject object;
|
||||||
private final File targetSaveLocation;
|
private final File targetSaveLocation;
|
||||||
private final IrisJigsawPiece piece;
|
private final LoaderJigsawPiece piece;
|
||||||
private final Location origin;
|
private final Location origin;
|
||||||
private final Cuboid cuboid;
|
private final Cuboid cuboid;
|
||||||
private final int ticker;
|
private final int ticker;
|
||||||
@ -56,7 +60,7 @@ public class JigsawEditor implements Listener {
|
|||||||
private final KMap<IrisPosition, Runnable> falling = new KMap<>();
|
private final KMap<IrisPosition, Runnable> falling = new KMap<>();
|
||||||
private final ChronoLatch cl = new ChronoLatch(100);
|
private final ChronoLatch cl = new ChronoLatch(100);
|
||||||
|
|
||||||
public JigsawEditor(Player player, IrisJigsawPiece piece, IrisObject object, File saveLocation) {
|
public JigsawEditor(Player player, LoaderJigsawPiece piece, LoaderObject object, File saveLocation) {
|
||||||
if (editors.containsKey(player)) {
|
if (editors.containsKey(player)) {
|
||||||
editors.get(player).close();
|
editors.get(player).close();
|
||||||
}
|
}
|
||||||
@ -67,7 +71,7 @@ public class JigsawEditor implements Listener {
|
|||||||
origin = player.getLocation().clone().add(0, 7, 0);
|
origin = player.getLocation().clone().add(0, 7, 0);
|
||||||
target = origin;
|
target = origin;
|
||||||
this.targetSaveLocation = saveLocation;
|
this.targetSaveLocation = saveLocation;
|
||||||
this.piece = piece == null ? new IrisJigsawPiece() : piece;
|
this.piece = piece == null ? new LoaderJigsawPiece() : piece;
|
||||||
this.piece.setObject(object.getLoadKey());
|
this.piece.setObject(object.getLoadKey());
|
||||||
cuboid = new Cuboid(origin.clone(), origin.clone().add(object.getW() - 1, object.getH() - 1, object.getD() - 1));
|
cuboid = new Cuboid(origin.clone(), origin.clone().add(object.getW() - 1, object.getH() - 1, object.getD() - 1));
|
||||||
ticker = J.sr(this::onTick, 0);
|
ticker = J.sr(this::onTick, 0);
|
||||||
|
@ -21,7 +21,7 @@ package com.volmit.iris.core.gui;
|
|||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.events.IrisEngineHotloadEvent;
|
import com.volmit.iris.core.events.IrisEngineHotloadEvent;
|
||||||
import com.volmit.iris.util.noise.CNG;
|
import com.volmit.iris.util.noise.CNG;
|
||||||
import com.volmit.iris.engine.object.NoiseStyle;
|
import com.volmit.iris.engine.object.noise.NoiseStyle;
|
||||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
|
@ -25,8 +25,8 @@ import com.volmit.iris.core.tools.IrisWorlds;
|
|||||||
import com.volmit.iris.engine.IrisComplex;
|
import com.volmit.iris.engine.IrisComplex;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisRegion;
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
@ -629,8 +629,8 @@ public class VisionGUI extends JPanel implements MouseWheelListener, KeyListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void renderHoverOverlay(Graphics2D g, boolean detailed) {
|
private void renderHoverOverlay(Graphics2D g, boolean detailed) {
|
||||||
IrisBiome biome = engine.getFramework().getComplex().getTrueBiomeStream().get(getWorldX(hx), getWorldZ(hz));
|
LoaderBiome biome = engine.getFramework().getComplex().getTrueBiomeStream().get(getWorldX(hx), getWorldZ(hz));
|
||||||
IrisRegion region = engine.getFramework().getComplex().getRegionStream().get(getWorldX(hx), getWorldZ(hz));
|
LoaderRegion region = engine.getFramework().getComplex().getRegionStream().get(getWorldX(hx), getWorldZ(hz));
|
||||||
KList<String> l = new KList<>();
|
KList<String> l = new KList<>();
|
||||||
l.add("Biome: " + biome.getName());
|
l.add("Biome: " + biome.getName());
|
||||||
l.add("Region: " + region.getName() + "(" + region.getLoadKey() + ")");
|
l.add("Region: " + region.getName() + "(" + region.getLoadKey() + ")");
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
package com.volmit.iris.core.gui.components;
|
package com.volmit.iris.core.gui.components;
|
||||||
|
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.interpolation.IrisInterpolation;
|
import com.volmit.iris.util.interpolation.IrisInterpolation;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
package com.volmit.iris.core.link;
|
package com.volmit.iris.core.link;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
@ -37,7 +37,7 @@ public class MultiverseCoreLink {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean addWorld(String worldName, IrisDimension dim, String seed) {
|
public boolean addWorld(String worldName, LoaderDimension dim, String seed) {
|
||||||
if (!supported()) {
|
if (!supported()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,8 @@ package com.volmit.iris.core.pregenerator.methods;
|
|||||||
|
|
||||||
import com.volmit.iris.core.pregenerator.PregenListener;
|
import com.volmit.iris.core.pregenerator.PregenListener;
|
||||||
import com.volmit.iris.core.pregenerator.PregeneratorMethod;
|
import com.volmit.iris.core.pregenerator.PregeneratorMethod;
|
||||||
import com.volmit.iris.engine.headless.HeadlessGenerator;
|
import com.volmit.iris.engine.framework.headless.HeadlessGenerator;
|
||||||
import com.volmit.iris.engine.headless.HeadlessWorld;
|
import com.volmit.iris.engine.framework.headless.HeadlessWorld;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
public class HeadlessPregenMethod implements PregeneratorMethod {
|
public class HeadlessPregenMethod implements PregeneratorMethod {
|
||||||
|
@ -23,7 +23,7 @@ import com.volmit.iris.core.IrisSettings;
|
|||||||
import com.volmit.iris.core.pregenerator.PregenListener;
|
import com.volmit.iris.core.pregenerator.PregenListener;
|
||||||
import com.volmit.iris.core.pregenerator.PregeneratorMethod;
|
import com.volmit.iris.core.pregenerator.PregeneratorMethod;
|
||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.headless.HeadlessWorld;
|
import com.volmit.iris.engine.framework.headless.HeadlessWorld;
|
||||||
import com.volmit.iris.util.math.Position2;
|
import com.volmit.iris.util.math.Position2;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ import com.volmit.iris.core.pregenerator.PregenTask;
|
|||||||
import com.volmit.iris.core.pregenerator.PregeneratorMethod;
|
import com.volmit.iris.core.pregenerator.PregeneratorMethod;
|
||||||
import com.volmit.iris.core.pregenerator.syndicate.SyndicateClient;
|
import com.volmit.iris.core.pregenerator.syndicate.SyndicateClient;
|
||||||
import com.volmit.iris.core.pregenerator.syndicate.command.*;
|
import com.volmit.iris.core.pregenerator.syndicate.command.*;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.util.io.IO;
|
import com.volmit.iris.util.io.IO;
|
||||||
import com.volmit.iris.util.scheduling.J;
|
import com.volmit.iris.util.scheduling.J;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@ -42,13 +42,13 @@ public class SyndicatePregenMethod implements PregeneratorMethod {
|
|||||||
private String nickname;
|
private String nickname;
|
||||||
private final int port;
|
private final int port;
|
||||||
private final String password;
|
private final String password;
|
||||||
private final IrisDimension dimension;
|
private final LoaderDimension dimension;
|
||||||
private boolean ready = false;
|
private boolean ready = false;
|
||||||
private final File worldFolder;
|
private final File worldFolder;
|
||||||
private final UUID pack = UUID.randomUUID();
|
private final UUID pack = UUID.randomUUID();
|
||||||
private final long seed;
|
private final long seed;
|
||||||
|
|
||||||
public SyndicatePregenMethod(String nickname, File worldFolder, String address, int port, String password, IrisDimension dimension, long seed) {
|
public SyndicatePregenMethod(String nickname, File worldFolder, String address, int port, String password, LoaderDimension dimension, long seed) {
|
||||||
this.seed = seed;
|
this.seed = seed;
|
||||||
this.worldFolder = worldFolder;
|
this.worldFolder = worldFolder;
|
||||||
this.address = address;
|
this.address = address;
|
||||||
|
@ -20,8 +20,8 @@ package com.volmit.iris.core.pregenerator.syndicate;
|
|||||||
|
|
||||||
import com.volmit.iris.core.pregenerator.PregenListener;
|
import com.volmit.iris.core.pregenerator.PregenListener;
|
||||||
import com.volmit.iris.core.pregenerator.syndicate.command.*;
|
import com.volmit.iris.core.pregenerator.syndicate.command.*;
|
||||||
import com.volmit.iris.engine.headless.HeadlessGenerator;
|
import com.volmit.iris.engine.framework.headless.HeadlessGenerator;
|
||||||
import com.volmit.iris.engine.headless.HeadlessWorld;
|
import com.volmit.iris.engine.framework.headless.HeadlessWorld;
|
||||||
import com.volmit.iris.util.io.IO;
|
import com.volmit.iris.util.io.IO;
|
||||||
import com.volmit.iris.util.scheduling.J;
|
import com.volmit.iris.util.scheduling.J;
|
||||||
import org.zeroturnaround.zip.ZipUtil;
|
import org.zeroturnaround.zip.ZipUtil;
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
package com.volmit.iris.core.pregenerator.syndicate.command;
|
package com.volmit.iris.core.pregenerator.syndicate.command;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -38,5 +38,5 @@ public class SyndicateInstallPack implements SyndicateCommand {
|
|||||||
private long seed = 1337;
|
private long seed = 1337;
|
||||||
|
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
private IrisDimension dimension = null;
|
private LoaderDimension dimension = null;
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,17 @@ import com.volmit.iris.core.report.ReportType;
|
|||||||
import com.volmit.iris.core.tools.IrisWorldCreator;
|
import com.volmit.iris.core.tools.IrisWorldCreator;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.object.*;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
|
import com.volmit.iris.engine.object.biome.IrisBiomeMutation;
|
||||||
|
import com.volmit.iris.engine.object.biome.IrisBiomePaletteLayer;
|
||||||
|
import com.volmit.iris.engine.object.block.LoaderBlockData;
|
||||||
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
|
import com.volmit.iris.engine.object.entity.LoaderEntity;
|
||||||
|
import com.volmit.iris.engine.object.loot.LoaderLootTable;
|
||||||
|
import com.volmit.iris.engine.object.noise.LoaderGenerator;
|
||||||
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||||
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
|
import com.volmit.iris.engine.object.spawners.LoaderSpawner;
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
@ -93,7 +103,7 @@ public class IrisProject {
|
|||||||
if (activeProvider != null && activeProvider.getCompound() != null) {
|
if (activeProvider != null && activeProvider.getCompound() != null) {
|
||||||
for (int i = 0; i < getActiveProvider().getCompound().getSize(); i++) {
|
for (int i = 0; i < getActiveProvider().getCompound().getSize(); i++) {
|
||||||
Engine e = getActiveProvider().getCompound().getEngine(i);
|
Engine e = getActiveProvider().getCompound().getEngine(i);
|
||||||
IrisDimension dim = e.getDimension();
|
LoaderDimension dim = e.getDimension();
|
||||||
reports.add(scanForErrors(dim));
|
reports.add(scanForErrors(dim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -110,7 +120,7 @@ public class IrisProject {
|
|||||||
return reports;
|
return reports;
|
||||||
}
|
}
|
||||||
|
|
||||||
private KList<Report> scanForErrors(IrisDimension dim) {
|
private KList<Report> scanForErrors(LoaderDimension dim) {
|
||||||
KList<Report> reports = new KList<>();
|
KList<Report> reports = new KList<>();
|
||||||
|
|
||||||
if (dim.getFocus() != null && !dim.getFocus().isEmpty()) {
|
if (dim.getFocus() != null && !dim.getFocus().isEmpty()) {
|
||||||
@ -122,14 +132,14 @@ public class IrisProject {
|
|||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IrisRegion i : dim.getAllRegions(getActiveProvider())) {
|
for (LoaderRegion i : dim.getAllRegions(getActiveProvider())) {
|
||||||
scanForErrors(i);
|
scanForErrors(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
return reports;
|
return reports;
|
||||||
}
|
}
|
||||||
|
|
||||||
private KList<Report> scanForErrors(IrisRegion region) {
|
private KList<Report> scanForErrors(LoaderRegion region) {
|
||||||
KList<Report> reports = new KList<>();
|
KList<Report> reports = new KList<>();
|
||||||
|
|
||||||
if (region.getRarity() > 60) {
|
if (region.getRarity() > 60) {
|
||||||
@ -141,14 +151,14 @@ public class IrisProject {
|
|||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IrisBiome i : region.getAllBiomes(getActiveProvider())) {
|
for (LoaderBiome i : region.getAllBiomes(getActiveProvider())) {
|
||||||
reports.add(scanForErrors(i));
|
reports.add(scanForErrors(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
return reports;
|
return reports;
|
||||||
}
|
}
|
||||||
|
|
||||||
private KList<Report> scanForErrors(IrisBiome biome) {
|
private KList<Report> scanForErrors(LoaderBiome biome) {
|
||||||
KList<Report> reports = new KList<>();
|
KList<Report> reports = new KList<>();
|
||||||
|
|
||||||
for (IrisObjectPlacement i : biome.getObjects()) {
|
for (IrisObjectPlacement i : biome.getObjects()) {
|
||||||
@ -166,17 +176,17 @@ public class IrisProject {
|
|||||||
return reports;
|
return reports;
|
||||||
}
|
}
|
||||||
|
|
||||||
private KList<Report> scanForErrors(IrisBiome biome, IrisObjectPlacement i) {
|
private KList<Report> scanForErrors(LoaderBiome biome, IrisObjectPlacement i) {
|
||||||
|
|
||||||
return new KList<>();
|
return new KList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private KList<Report> scanForErrors(IrisBiome biome, IrisBiomePaletteLayer i) {
|
private KList<Report> scanForErrors(LoaderBiome biome, IrisBiomePaletteLayer i) {
|
||||||
|
|
||||||
return new KList<>();
|
return new KList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private KList<Report> scanForErrorsSeaLayers(IrisBiome biome, IrisBiomePaletteLayer i) {
|
private KList<Report> scanForErrorsSeaLayers(LoaderBiome biome, IrisBiomePaletteLayer i) {
|
||||||
|
|
||||||
return new KList<>();
|
return new KList<>();
|
||||||
}
|
}
|
||||||
@ -245,7 +255,7 @@ public class IrisProject {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisDimension d = IrisData.loadAnyDimension(getName());
|
LoaderDimension d = IrisData.loadAnyDimension(getName());
|
||||||
if (d == null) {
|
if (d == null) {
|
||||||
sender.sendMessage("Can't find dimension: " + getName());
|
sender.sendMessage("Can't find dimension: " + getName());
|
||||||
return;
|
return;
|
||||||
@ -457,17 +467,17 @@ public class IrisProject {
|
|||||||
public File compilePackage(VolmitSender sender, boolean obfuscate, boolean minify) {
|
public File compilePackage(VolmitSender sender, boolean obfuscate, boolean minify) {
|
||||||
String dimm = getName();
|
String dimm = getName();
|
||||||
IrisData dm = new IrisData(path);
|
IrisData dm = new IrisData(path);
|
||||||
IrisDimension dimension = dm.getDimensionLoader().load(dimm);
|
LoaderDimension dimension = dm.getDimensionLoader().load(dimm);
|
||||||
File folder = new File(Iris.instance.getDataFolder(), "exports/" + dimension.getLoadKey());
|
File folder = new File(Iris.instance.getDataFolder(), "exports/" + dimension.getLoadKey());
|
||||||
folder.mkdirs();
|
folder.mkdirs();
|
||||||
Iris.info("Packaging Dimension " + dimension.getName() + " " + (obfuscate ? "(Obfuscated)" : ""));
|
Iris.info("Packaging Dimension " + dimension.getName() + " " + (obfuscate ? "(Obfuscated)" : ""));
|
||||||
KSet<IrisRegion> regions = new KSet<>();
|
KSet<LoaderRegion> regions = new KSet<>();
|
||||||
KSet<IrisBiome> biomes = new KSet<>();
|
KSet<LoaderBiome> biomes = new KSet<>();
|
||||||
KSet<IrisEntity> entities = new KSet<>();
|
KSet<LoaderEntity> entities = new KSet<>();
|
||||||
KSet<IrisSpawner> spawners = new KSet<>();
|
KSet<LoaderSpawner> spawners = new KSet<>();
|
||||||
KSet<IrisGenerator> generators = new KSet<>();
|
KSet<LoaderGenerator> generators = new KSet<>();
|
||||||
KSet<IrisLootTable> loot = new KSet<>();
|
KSet<LoaderLootTable> loot = new KSet<>();
|
||||||
KSet<IrisBlockData> blocks = new KSet<>();
|
KSet<LoaderBlockData> blocks = new KSet<>();
|
||||||
|
|
||||||
for (String i : dm.getDimensionLoader().getPossibleKeys()) {
|
for (String i : dm.getDimensionLoader().getPossibleKeys()) {
|
||||||
blocks.add(dm.getBlockLoader().load(i));
|
blocks.add(dm.getBlockLoader().load(i));
|
||||||
@ -518,7 +528,7 @@ public class IrisProject {
|
|||||||
StringBuilder c = new StringBuilder();
|
StringBuilder c = new StringBuilder();
|
||||||
sender.sendMessage("Serializing Objects");
|
sender.sendMessage("Serializing Objects");
|
||||||
|
|
||||||
for (IrisBiome i : biomes) {
|
for (LoaderBiome i : biomes) {
|
||||||
for (IrisObjectPlacement j : i.getObjects()) {
|
for (IrisObjectPlacement j : i.getObjects()) {
|
||||||
b.append(j.hashCode());
|
b.append(j.hashCode());
|
||||||
KList<String> newNames = new KList<>();
|
KList<String> newNames = new KList<>();
|
||||||
@ -612,7 +622,7 @@ public class IrisProject {
|
|||||||
IO.writeAll(new File(folder, "dimensions/" + dimension.getLoadKey() + ".json"), a);
|
IO.writeAll(new File(folder, "dimensions/" + dimension.getLoadKey() + ".json"), a);
|
||||||
b.append(IO.hash(a));
|
b.append(IO.hash(a));
|
||||||
|
|
||||||
for (IrisGenerator i : generators) {
|
for (LoaderGenerator i : generators) {
|
||||||
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
||||||
IO.writeAll(new File(folder, "generators/" + i.getLoadKey() + ".json"), a);
|
IO.writeAll(new File(folder, "generators/" + i.getLoadKey() + ".json"), a);
|
||||||
b.append(IO.hash(a));
|
b.append(IO.hash(a));
|
||||||
@ -621,31 +631,31 @@ public class IrisProject {
|
|||||||
c.append(IO.hash(b.toString()));
|
c.append(IO.hash(b.toString()));
|
||||||
b = new StringBuilder();
|
b = new StringBuilder();
|
||||||
|
|
||||||
for (IrisRegion i : regions) {
|
for (LoaderRegion i : regions) {
|
||||||
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
||||||
IO.writeAll(new File(folder, "regions/" + i.getLoadKey() + ".json"), a);
|
IO.writeAll(new File(folder, "regions/" + i.getLoadKey() + ".json"), a);
|
||||||
b.append(IO.hash(a));
|
b.append(IO.hash(a));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IrisBlockData i : blocks) {
|
for (LoaderBlockData i : blocks) {
|
||||||
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
||||||
IO.writeAll(new File(folder, "blocks/" + i.getLoadKey() + ".json"), a);
|
IO.writeAll(new File(folder, "blocks/" + i.getLoadKey() + ".json"), a);
|
||||||
b.append(IO.hash(a));
|
b.append(IO.hash(a));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IrisBiome i : biomes) {
|
for (LoaderBiome i : biomes) {
|
||||||
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
||||||
IO.writeAll(new File(folder, "biomes/" + i.getLoadKey() + ".json"), a);
|
IO.writeAll(new File(folder, "biomes/" + i.getLoadKey() + ".json"), a);
|
||||||
b.append(IO.hash(a));
|
b.append(IO.hash(a));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IrisEntity i : entities) {
|
for (LoaderEntity i : entities) {
|
||||||
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
||||||
IO.writeAll(new File(folder, "entities/" + i.getLoadKey() + ".json"), a);
|
IO.writeAll(new File(folder, "entities/" + i.getLoadKey() + ".json"), a);
|
||||||
b.append(IO.hash(a));
|
b.append(IO.hash(a));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IrisLootTable i : loot) {
|
for (LoaderLootTable i : loot) {
|
||||||
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
||||||
IO.writeAll(new File(folder, "loot/" + i.getLoadKey() + ".json"), a);
|
IO.writeAll(new File(folder, "loot/" + i.getLoadKey() + ".json"), a);
|
||||||
b.append(IO.hash(a));
|
b.append(IO.hash(a));
|
||||||
|
@ -20,7 +20,20 @@ package com.volmit.iris.core.project.loader;
|
|||||||
|
|
||||||
import com.volmit.iris.Iris;
|
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.*;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
|
import com.volmit.iris.engine.object.block.LoaderBlockData;
|
||||||
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
|
import com.volmit.iris.engine.object.entity.LoaderEntity;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawPiece;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawPool;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawStructure;
|
||||||
|
import com.volmit.iris.engine.object.loot.LoaderLootTable;
|
||||||
|
import com.volmit.iris.engine.object.mods.LoaderMod;
|
||||||
|
import com.volmit.iris.engine.object.noise.LoaderExpression;
|
||||||
|
import com.volmit.iris.engine.object.noise.LoaderGenerator;
|
||||||
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
|
import com.volmit.iris.engine.object.spawners.LoaderSpawner;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -31,21 +44,21 @@ import java.util.function.Function;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class IrisData {
|
public class IrisData {
|
||||||
private ResourceLoader<IrisBiome> biomeLoader;
|
private ResourceLoader<LoaderBiome> biomeLoader;
|
||||||
private ResourceLoader<IrisLootTable> lootLoader;
|
private ResourceLoader<LoaderLootTable> lootLoader;
|
||||||
private ResourceLoader<IrisRegion> regionLoader;
|
private ResourceLoader<LoaderRegion> regionLoader;
|
||||||
private ResourceLoader<IrisDimension> dimensionLoader;
|
private ResourceLoader<LoaderDimension> dimensionLoader;
|
||||||
private ResourceLoader<IrisGenerator> generatorLoader;
|
private ResourceLoader<LoaderGenerator> generatorLoader;
|
||||||
private ResourceLoader<IrisJigsawPiece> jigsawPieceLoader;
|
private ResourceLoader<LoaderJigsawPiece> jigsawPieceLoader;
|
||||||
private ResourceLoader<IrisJigsawPool> jigsawPoolLoader;
|
private ResourceLoader<LoaderJigsawPool> jigsawPoolLoader;
|
||||||
private ResourceLoader<IrisJigsawStructure> jigsawStructureLoader;
|
private ResourceLoader<LoaderJigsawStructure> jigsawStructureLoader;
|
||||||
private ResourceLoader<IrisEntity> entityLoader;
|
private ResourceLoader<LoaderEntity> entityLoader;
|
||||||
private ResourceLoader<IrisSpawner> spawnerLoader;
|
private ResourceLoader<LoaderSpawner> spawnerLoader;
|
||||||
private ResourceLoader<IrisMod> modLoader;
|
private ResourceLoader<LoaderMod> modLoader;
|
||||||
private ResourceLoader<IrisBlockData> blockLoader;
|
private ResourceLoader<LoaderBlockData> blockLoader;
|
||||||
private ResourceLoader<IrisExpression> expressionLoader;
|
private ResourceLoader<LoaderExpression> expressionLoader;
|
||||||
private ResourceLoader<IrisObject> objectLoader;
|
private ResourceLoader<LoaderObject> objectLoader;
|
||||||
private KMap<Class<? extends IrisRegistrant>, ResourceLoader<? extends IrisRegistrant>> loaders = new KMap<>();
|
private KMap<Class<? extends LoaderRegistrant>, ResourceLoader<? extends LoaderRegistrant>> loaders = new KMap<>();
|
||||||
private boolean closed;
|
private boolean closed;
|
||||||
private final File dataFolder;
|
private final File dataFolder;
|
||||||
private Engine engine;
|
private Engine engine;
|
||||||
@ -77,11 +90,11 @@ public class IrisData {
|
|||||||
return new IrisData(dataFolder);
|
return new IrisData(dataFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T extends IrisRegistrant> ResourceLoader<T> registerLoader(Class<T> registrant) {
|
private <T extends LoaderRegistrant> ResourceLoader<T> registerLoader(Class<T> registrant) {
|
||||||
try {
|
try {
|
||||||
IrisRegistrant rr = registrant.getConstructor().newInstance();
|
LoaderRegistrant rr = registrant.getConstructor().newInstance();
|
||||||
ResourceLoader<T> r = null;
|
ResourceLoader<T> r = null;
|
||||||
if (registrant.equals(IrisObject.class)) {
|
if (registrant.equals(LoaderObject.class)) {
|
||||||
r = (ResourceLoader<T>) new ObjectResourceLoader(dataFolder, this, rr.getFolderName(), rr.getTypeName());
|
r = (ResourceLoader<T>) new ObjectResourceLoader(dataFolder, this, rr.getFolderName(), rr.getTypeName());
|
||||||
} else {
|
} else {
|
||||||
r = new ResourceLoader<T>(dataFolder, this, rr.getFolderName(), rr.getTypeName(), registrant);
|
r = new ResourceLoader<T>(dataFolder, this, rr.getFolderName(), rr.getTypeName(), registrant);
|
||||||
@ -106,20 +119,20 @@ public class IrisData {
|
|||||||
loaders.clear();
|
loaders.clear();
|
||||||
File packs = dataFolder;
|
File packs = dataFolder;
|
||||||
packs.mkdirs();
|
packs.mkdirs();
|
||||||
this.lootLoader = registerLoader(IrisLootTable.class);
|
this.lootLoader = registerLoader(LoaderLootTable.class);
|
||||||
this.spawnerLoader = registerLoader(IrisSpawner.class);
|
this.spawnerLoader = registerLoader(LoaderSpawner.class);
|
||||||
this.entityLoader = registerLoader(IrisEntity.class);
|
this.entityLoader = registerLoader(LoaderEntity.class);
|
||||||
this.regionLoader = registerLoader(IrisRegion.class);
|
this.regionLoader = registerLoader(LoaderRegion.class);
|
||||||
this.biomeLoader = registerLoader(IrisBiome.class);
|
this.biomeLoader = registerLoader(LoaderBiome.class);
|
||||||
this.modLoader = registerLoader(IrisMod.class);
|
this.modLoader = registerLoader(LoaderMod.class);
|
||||||
this.dimensionLoader = registerLoader(IrisDimension.class);
|
this.dimensionLoader = registerLoader(LoaderDimension.class);
|
||||||
this.jigsawPoolLoader = registerLoader(IrisJigsawPool.class);
|
this.jigsawPoolLoader = registerLoader(LoaderJigsawPool.class);
|
||||||
this.jigsawStructureLoader = registerLoader(IrisJigsawStructure.class);
|
this.jigsawStructureLoader = registerLoader(LoaderJigsawStructure.class);
|
||||||
this.jigsawPieceLoader = registerLoader(IrisJigsawPiece.class);
|
this.jigsawPieceLoader = registerLoader(LoaderJigsawPiece.class);
|
||||||
this.generatorLoader = registerLoader(IrisGenerator.class);
|
this.generatorLoader = registerLoader(LoaderGenerator.class);
|
||||||
this.blockLoader = registerLoader(IrisBlockData.class);
|
this.blockLoader = registerLoader(LoaderBlockData.class);
|
||||||
this.expressionLoader = registerLoader(IrisExpression.class);
|
this.expressionLoader = registerLoader(LoaderExpression.class);
|
||||||
this.objectLoader = registerLoader(IrisObject.class);
|
this.objectLoader = registerLoader(LoaderObject.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dump() {
|
public void dump() {
|
||||||
@ -142,63 +155,63 @@ public class IrisData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisObject loadAnyObject(String key) {
|
public static LoaderObject loadAnyObject(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getObjectLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getObjectLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisBiome loadAnyBiome(String key) {
|
public static LoaderBiome loadAnyBiome(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getBiomeLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getBiomeLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisExpression loadAnyExpression(String key) {
|
public static LoaderExpression loadAnyExpression(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getExpressionLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getExpressionLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisMod loadAnyMod(String key) {
|
public static LoaderMod loadAnyMod(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getModLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getModLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisJigsawPiece loadAnyJigsawPiece(String key) {
|
public static LoaderJigsawPiece loadAnyJigsawPiece(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getJigsawPieceLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getJigsawPieceLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisJigsawPool loadAnyJigsawPool(String key) {
|
public static LoaderJigsawPool loadAnyJigsawPool(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getJigsawPoolLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getJigsawPoolLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisEntity loadAnyEntity(String key) {
|
public static LoaderEntity loadAnyEntity(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getEntityLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getEntityLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisLootTable loadAnyLootTable(String key) {
|
public static LoaderLootTable loadAnyLootTable(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getLootLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getLootLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisBlockData loadAnyBlock(String key) {
|
public static LoaderBlockData loadAnyBlock(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getBlockLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getBlockLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisSpawner loadAnySpaner(String key) {
|
public static LoaderSpawner loadAnySpaner(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getSpawnerLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getSpawnerLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisRegion loadAnyRegion(String key) {
|
public static LoaderRegion loadAnyRegion(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getRegionLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getRegionLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisDimension loadAnyDimension(String key) {
|
public static LoaderDimension loadAnyDimension(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getDimensionLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getDimensionLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisJigsawStructure loadAnyJigsawStructure(String key) {
|
public static LoaderJigsawStructure loadAnyJigsawStructure(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getJigsawStructureLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getJigsawStructureLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrisGenerator loadAnyGenerator(String key) {
|
public static LoaderGenerator loadAnyGenerator(String key) {
|
||||||
return loadAny(key, (dm) -> dm.getGeneratorLoader().load(key, false));
|
return loadAny(key, (dm) -> dm.getGeneratorLoader().load(key, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <T extends IrisRegistrant> T loadAny(String key, Function<IrisData, T> v) {
|
public static <T extends LoaderRegistrant> T loadAny(String key, Function<IrisData, T> v) {
|
||||||
try {
|
try {
|
||||||
for (File i : Objects.requireNonNull(Iris.instance.getDataFolder("packs").listFiles())) {
|
for (File i : Objects.requireNonNull(Iris.instance.getDataFolder("packs").listFiles())) {
|
||||||
if (i.isDirectory()) {
|
if (i.isDirectory()) {
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.core.project.loader;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
@ -26,7 +26,7 @@ import java.awt.*;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public abstract class IrisRegistrant {
|
public abstract class LoaderRegistrant {
|
||||||
private transient IrisData loader;
|
private transient IrisData loader;
|
||||||
|
|
||||||
private transient String loadKey;
|
private transient String loadKey;
|
@ -19,7 +19,7 @@
|
|||||||
package com.volmit.iris.core.project.loader;
|
package com.volmit.iris.core.project.loader;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.object.IrisObject;
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.collection.KSet;
|
import com.volmit.iris.util.collection.KSet;
|
||||||
@ -33,14 +33,14 @@ import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
public class ObjectResourceLoader extends ResourceLoader<IrisObject> {
|
public class ObjectResourceLoader extends ResourceLoader<LoaderObject> {
|
||||||
private final ChronoLatch useFlip = new ChronoLatch(2222);
|
private final ChronoLatch useFlip = new ChronoLatch(2222);
|
||||||
private final KMap<String, Long> useCache = new KMap<>();
|
private final KMap<String, Long> useCache = new KMap<>();
|
||||||
private final ChronoLatch cl;
|
private final ChronoLatch cl;
|
||||||
private final AtomicInteger unload;
|
private final AtomicInteger unload;
|
||||||
|
|
||||||
public ObjectResourceLoader(File root, IrisData idm, String folderName, String resourceTypeName) {
|
public ObjectResourceLoader(File root, IrisData idm, String folderName, String resourceTypeName) {
|
||||||
super(root, idm, folderName, resourceTypeName, IrisObject.class);
|
super(root, idm, folderName, resourceTypeName, LoaderObject.class);
|
||||||
cl = new ChronoLatch(30000);
|
cl = new ChronoLatch(30000);
|
||||||
unload = new AtomicInteger(0);
|
unload = new AtomicInteger(0);
|
||||||
}
|
}
|
||||||
@ -56,7 +56,7 @@ public class ObjectResourceLoader extends ResourceLoader<IrisObject> {
|
|||||||
public int getTotalStorage() {
|
public int getTotalStorage() {
|
||||||
int m = 0;
|
int m = 0;
|
||||||
|
|
||||||
for (IrisObject i : loadCache.values()) {
|
for (LoaderObject i : loadCache.values()) {
|
||||||
m += i.getBlocks().size();
|
m += i.getBlocks().size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,11 +115,11 @@ public class ObjectResourceLoader extends ResourceLoader<IrisObject> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IrisObject loadFile(File j, String key, String name) {
|
public LoaderObject loadFile(File j, String key, String name) {
|
||||||
lock.lock();
|
lock.lock();
|
||||||
try {
|
try {
|
||||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||||
IrisObject t = new IrisObject(0, 0, 0);
|
LoaderObject t = new LoaderObject(0, 0, 0);
|
||||||
t.read(j);
|
t.read(j);
|
||||||
loadCache.put(key, t);
|
loadCache.put(key, t);
|
||||||
t.setLoadKey(name);
|
t.setLoadKey(name);
|
||||||
@ -194,15 +194,15 @@ public class ObjectResourceLoader extends ResourceLoader<IrisObject> {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IrisObject load(String name) {
|
public LoaderObject load(String name) {
|
||||||
return load(name, true);
|
return load(name, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IrisObject load(String name, boolean warn) {
|
public LoaderObject load(String name, boolean warn) {
|
||||||
String key = name + "-" + objectClass.getCanonicalName();
|
String key = name + "-" + objectClass.getCanonicalName();
|
||||||
|
|
||||||
if (loadCache.containsKey(key)) {
|
if (loadCache.containsKey(key)) {
|
||||||
IrisObject t = loadCache.get(key);
|
LoaderObject t = loadCache.get(key);
|
||||||
useCache.put(key, M.ms());
|
useCache.put(key, M.ms());
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,6 @@ import com.google.common.util.concurrent.AtomicDouble;
|
|||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.project.SchemaBuilder;
|
import com.volmit.iris.core.project.SchemaBuilder;
|
||||||
import com.volmit.iris.engine.object.IrisRegistrant;
|
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.collection.KSet;
|
import com.volmit.iris.util.collection.KSet;
|
||||||
@ -44,7 +43,7 @@ import java.util.function.Predicate;
|
|||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class ResourceLoader<T extends IrisRegistrant> {
|
public class ResourceLoader<T extends LoaderRegistrant> {
|
||||||
public static final AtomicDouble tlt = new AtomicDouble(0);
|
public static final AtomicDouble tlt = new AtomicDouble(0);
|
||||||
protected File root;
|
protected File root;
|
||||||
protected String folderName;
|
protected String folderName;
|
||||||
|
@ -21,8 +21,8 @@ package com.volmit.iris.core.tools;
|
|||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.core.pregenerator.PregenTask;
|
import com.volmit.iris.core.pregenerator.PregenTask;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.headless.HeadlessWorld;
|
import com.volmit.iris.engine.framework.headless.HeadlessWorld;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.util.exceptions.IrisException;
|
import com.volmit.iris.util.exceptions.IrisException;
|
||||||
import com.volmit.iris.util.exceptions.MissingDimensionException;
|
import com.volmit.iris.util.exceptions.MissingDimensionException;
|
||||||
import com.volmit.iris.util.format.C;
|
import com.volmit.iris.util.format.C;
|
||||||
@ -93,7 +93,7 @@ public class IrisCreator {
|
|||||||
* @throws IrisException shit happens
|
* @throws IrisException shit happens
|
||||||
*/
|
*/
|
||||||
public IrisAccess create() throws IrisException {
|
public IrisAccess create() throws IrisException {
|
||||||
IrisDimension d = IrisToolbelt.getDimension(dimension());
|
LoaderDimension d = IrisToolbelt.getDimension(dimension());
|
||||||
IrisAccess access = null;
|
IrisAccess access = null;
|
||||||
Consumer<Double> prog = (pxx) -> {
|
Consumer<Double> prog = (pxx) -> {
|
||||||
double px = pxx;
|
double px = pxx;
|
||||||
|
@ -27,7 +27,7 @@ import com.volmit.iris.core.pregenerator.methods.HeadlessPregenMethod;
|
|||||||
import com.volmit.iris.core.pregenerator.methods.HybridPregenMethod;
|
import com.volmit.iris.core.pregenerator.methods.HybridPregenMethod;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
@ -50,7 +50,7 @@ public class IrisToolbelt {
|
|||||||
* @param dimension the dimension id such as overworld or flat
|
* @param dimension the dimension id such as overworld or flat
|
||||||
* @return the IrisDimension or null
|
* @return the IrisDimension or null
|
||||||
*/
|
*/
|
||||||
public static IrisDimension getDimension(String dimension) {
|
public static LoaderDimension getDimension(String dimension) {
|
||||||
File pack = Iris.instance.getDataFolder("packs", dimension);
|
File pack = Iris.instance.getDataFolder("packs", dimension);
|
||||||
|
|
||||||
if (!pack.exists()) {
|
if (!pack.exists()) {
|
||||||
|
@ -20,7 +20,7 @@ package com.volmit.iris.core.tools;
|
|||||||
|
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.framework.EngineCompositeGenerator;
|
import com.volmit.iris.engine.framework.EngineCompositeGenerator;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.WorldCreator;
|
import org.bukkit.WorldCreator;
|
||||||
@ -93,7 +93,7 @@ public class IrisWorldCreator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private World.Environment findEnvironment() {
|
private World.Environment findEnvironment() {
|
||||||
IrisDimension dim = IrisData.loadAnyDimension(dimensionName);
|
LoaderDimension dim = IrisData.loadAnyDimension(dimensionName);
|
||||||
if (dim == null || dim.getEnvironment() == null) {
|
if (dim == null || dim.getEnvironment() == null) {
|
||||||
return World.Environment.NORMAL;
|
return World.Environment.NORMAL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -25,8 +25,16 @@ import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
|
|||||||
import com.volmit.iris.engine.data.DataProvider;
|
import com.volmit.iris.engine.data.DataProvider;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.modifier.IrisCaveModifier;
|
import com.volmit.iris.engine.modifier.IrisCaveModifier;
|
||||||
|
import com.volmit.iris.engine.object.biome.InferredType;
|
||||||
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
|
import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
|
||||||
|
import com.volmit.iris.engine.object.decoration.IrisDecorator;
|
||||||
|
import com.volmit.iris.engine.object.dimensional.IrisTerrainMode;
|
||||||
|
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
||||||
|
import com.volmit.iris.engine.object.noise.LoaderGenerator;
|
||||||
|
import com.volmit.iris.engine.object.noise.IrisInterpolator;
|
||||||
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
import com.volmit.iris.util.noise.CNG;
|
import com.volmit.iris.util.noise.CNG;
|
||||||
import com.volmit.iris.engine.object.*;
|
|
||||||
import com.volmit.iris.engine.object.common.CaveResult;
|
import com.volmit.iris.engine.object.common.CaveResult;
|
||||||
import com.volmit.iris.util.stream.ProceduralStream;
|
import com.volmit.iris.util.stream.ProceduralStream;
|
||||||
import com.volmit.iris.util.stream.interpolation.Interpolated;
|
import com.volmit.iris.util.stream.interpolation.Interpolated;
|
||||||
@ -47,9 +55,9 @@ public class IrisComplex implements DataProvider {
|
|||||||
private RNG rng;
|
private RNG rng;
|
||||||
private double fluidHeight;
|
private double fluidHeight;
|
||||||
private IrisData data;
|
private IrisData data;
|
||||||
private KList<IrisGenerator> generators;
|
private KList<LoaderGenerator> generators;
|
||||||
private static final BlockData AIR = Material.AIR.createBlockData();
|
private static final BlockData AIR = Material.AIR.createBlockData();
|
||||||
private ProceduralStream<IrisRegion> regionStream;
|
private ProceduralStream<LoaderRegion> regionStream;
|
||||||
private ProceduralStream<Double> regionStyleStream;
|
private ProceduralStream<Double> regionStyleStream;
|
||||||
private ProceduralStream<Double> regionIdentityStream;
|
private ProceduralStream<Double> regionIdentityStream;
|
||||||
private ProceduralStream<UUID> regionIDStream;
|
private ProceduralStream<UUID> regionIDStream;
|
||||||
@ -57,14 +65,14 @@ public class IrisComplex implements DataProvider {
|
|||||||
private ProceduralStream<Double> islandHeightStream;
|
private ProceduralStream<Double> islandHeightStream;
|
||||||
private ProceduralStream<Double> islandDepthStream;
|
private ProceduralStream<Double> islandDepthStream;
|
||||||
private ProceduralStream<InferredType> bridgeStream;
|
private ProceduralStream<InferredType> bridgeStream;
|
||||||
private ProceduralStream<IrisBiome> landBiomeStream;
|
private ProceduralStream<LoaderBiome> landBiomeStream;
|
||||||
private ProceduralStream<IrisBiome> caveBiomeStream;
|
private ProceduralStream<LoaderBiome> caveBiomeStream;
|
||||||
private ProceduralStream<IrisBiome> seaBiomeStream;
|
private ProceduralStream<LoaderBiome> seaBiomeStream;
|
||||||
private ProceduralStream<IrisBiome> shoreBiomeStream;
|
private ProceduralStream<LoaderBiome> shoreBiomeStream;
|
||||||
private ProceduralStream<IrisBiome> baseBiomeStream;
|
private ProceduralStream<LoaderBiome> baseBiomeStream;
|
||||||
private ProceduralStream<UUID> baseBiomeIDStream;
|
private ProceduralStream<UUID> baseBiomeIDStream;
|
||||||
private ProceduralStream<IrisBiome> trueBiomeStream;
|
private ProceduralStream<LoaderBiome> trueBiomeStream;
|
||||||
private ProceduralStream<IrisBiome> trueBiomeStreamNoFeatures;
|
private ProceduralStream<LoaderBiome> trueBiomeStreamNoFeatures;
|
||||||
private ProceduralStream<Biome> trueBiomeDerivativeStream;
|
private ProceduralStream<Biome> trueBiomeDerivativeStream;
|
||||||
private ProceduralStream<Double> heightStream;
|
private ProceduralStream<Double> heightStream;
|
||||||
private ProceduralStream<Double> heightStreamNoFeatures;
|
private ProceduralStream<Double> heightStreamNoFeatures;
|
||||||
@ -87,9 +95,9 @@ public class IrisComplex implements DataProvider {
|
|||||||
private ProceduralStream<IrisDecorator> shoreSurfaceDecoration;
|
private ProceduralStream<IrisDecorator> shoreSurfaceDecoration;
|
||||||
private ProceduralStream<BlockData> rockStream;
|
private ProceduralStream<BlockData> rockStream;
|
||||||
private ProceduralStream<BlockData> fluidStream;
|
private ProceduralStream<BlockData> fluidStream;
|
||||||
private IrisBiome focus;
|
private LoaderBiome focus;
|
||||||
|
|
||||||
public ProceduralStream<IrisBiome> getBiomeStream(InferredType type) {
|
public ProceduralStream<LoaderBiome> getBiomeStream(InferredType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case CAVE:
|
case CAVE:
|
||||||
return caveBiomeStream;
|
return caveBiomeStream;
|
||||||
@ -115,7 +123,7 @@ public class IrisComplex implements DataProvider {
|
|||||||
|
|
||||||
public IrisComplex(Engine engine, boolean simple) {
|
public IrisComplex(Engine engine, boolean simple) {
|
||||||
int cacheSize = 131072;
|
int cacheSize = 131072;
|
||||||
IrisBiome emptyBiome = new IrisBiome();
|
LoaderBiome emptyBiome = new LoaderBiome();
|
||||||
UUID focusUUID = UUID.nameUUIDFromBytes("focus".getBytes());
|
UUID focusUUID = UUID.nameUUIDFromBytes("focus".getBytes());
|
||||||
this.rng = new RNG(engine.getWorld().seed());
|
this.rng = new RNG(engine.getWorld().seed());
|
||||||
this.data = engine.getData();
|
this.data = engine.getData();
|
||||||
@ -123,13 +131,13 @@ public class IrisComplex implements DataProvider {
|
|||||||
fluidHeight = engine.getDimension().getFluidHeight();
|
fluidHeight = engine.getDimension().getFluidHeight();
|
||||||
generators = new KList<>();
|
generators = new KList<>();
|
||||||
focus = engine.getFocus();
|
focus = engine.getFocus();
|
||||||
KMap<InferredType, ProceduralStream<IrisBiome>> inferredStreams = new KMap<>();
|
KMap<InferredType, ProceduralStream<LoaderBiome>> inferredStreams = new KMap<>();
|
||||||
|
|
||||||
if (focus != null) {
|
if (focus != null) {
|
||||||
focus.setInferredType(InferredType.LAND);
|
focus.setInferredType(InferredType.LAND);
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisRegion focusRegion = focus != null ? findRegion(focus, engine) : null;
|
LoaderRegion focusRegion = focus != null ? findRegion(focus, engine) : null;
|
||||||
RNG rng = new RNG(engine.getWorld().seed());
|
RNG rng = new RNG(engine.getWorld().seed());
|
||||||
//@builder
|
//@builder
|
||||||
engine.getDimension().getRegions().forEach((i) -> data.getRegionLoader().load(i)
|
engine.getDimension().getRegions().forEach((i) -> data.getRegionLoader().load(i)
|
||||||
@ -211,11 +219,11 @@ public class IrisComplex implements DataProvider {
|
|||||||
bridgeStream.convertAware2D((t, x, z) -> inferredStreams.get(t).get(x, z))
|
bridgeStream.convertAware2D((t, x, z) -> inferredStreams.get(t).get(x, z))
|
||||||
.convertAware2D(this::implode).cache2D(cacheSize);
|
.convertAware2D(this::implode).cache2D(cacheSize);
|
||||||
heightStream = ProceduralStream.of((x, z) -> {
|
heightStream = ProceduralStream.of((x, z) -> {
|
||||||
IrisBiome b = focus != null ? focus : baseBiomeStream.get(x, z);
|
LoaderBiome b = focus != null ? focus : baseBiomeStream.get(x, z);
|
||||||
return getHeight(engine, b, x, z, engine.getWorld().seed(), true);
|
return getHeight(engine, b, x, z, engine.getWorld().seed(), true);
|
||||||
}, Interpolated.DOUBLE).clamp(0, engine.getHeight()).cache2D(cacheSize);
|
}, Interpolated.DOUBLE).clamp(0, engine.getHeight()).cache2D(cacheSize);
|
||||||
heightStreamNoFeatures = ProceduralStream.of((x, z) -> {
|
heightStreamNoFeatures = ProceduralStream.of((x, z) -> {
|
||||||
IrisBiome b = focus != null ? focus : baseBiomeStream.get(x, z);
|
LoaderBiome b = focus != null ? focus : baseBiomeStream.get(x, z);
|
||||||
return getHeight(engine, b, x, z, engine.getWorld().seed(), false);
|
return getHeight(engine, b, x, z, engine.getWorld().seed(), false);
|
||||||
}, Interpolated.DOUBLE).clamp(0, engine.getHeight()).cache2D(cacheSize);
|
}, Interpolated.DOUBLE).clamp(0, engine.getHeight()).cache2D(cacheSize);
|
||||||
slopeStream = heightStream.slope(3).cache2D(cacheSize);
|
slopeStream = heightStream.slope(3).cache2D(cacheSize);
|
||||||
@ -234,7 +242,7 @@ public class IrisComplex implements DataProvider {
|
|||||||
trueBiomeStream = focus != null ? ProceduralStream.of((x, y) -> focus, Interpolated.of(a -> 0D,
|
trueBiomeStream = focus != null ? ProceduralStream.of((x, y) -> focus, Interpolated.of(a -> 0D,
|
||||||
b -> focus)).convertAware2D((b, x, z) -> {
|
b -> focus)).convertAware2D((b, x, z) -> {
|
||||||
for (IrisFeaturePositional i : engine.getFramework().getEngineParallax().forEachFeature(x, z)) {
|
for (IrisFeaturePositional i : engine.getFramework().getEngineParallax().forEachFeature(x, z)) {
|
||||||
IrisBiome bx = i.filter(x, z, b, rng);
|
LoaderBiome bx = i.filter(x, z, b, rng);
|
||||||
|
|
||||||
if (bx != null) {
|
if (bx != null) {
|
||||||
bx.setInferredType(b.getInferredType());
|
bx.setInferredType(b.getInferredType());
|
||||||
@ -250,7 +258,7 @@ public class IrisComplex implements DataProvider {
|
|||||||
regionStream.get(x, z), x, z, fluidHeight))
|
regionStream.get(x, z), x, z, fluidHeight))
|
||||||
.convertAware2D((b, x, z) -> {
|
.convertAware2D((b, x, z) -> {
|
||||||
for (IrisFeaturePositional i : engine.getFramework().getEngineParallax().forEachFeature(x, z)) {
|
for (IrisFeaturePositional i : engine.getFramework().getEngineParallax().forEachFeature(x, z)) {
|
||||||
IrisBiome bx = i.filter(x, z, b, rng);
|
LoaderBiome bx = i.filter(x, z, b, rng);
|
||||||
|
|
||||||
if (bx != null) {
|
if (bx != null) {
|
||||||
bx.setInferredType(b.getInferredType());
|
bx.setInferredType(b.getInferredType());
|
||||||
@ -264,7 +272,7 @@ public class IrisComplex implements DataProvider {
|
|||||||
trueBiomeStream = focus != null ? ProceduralStream.of((x, y) -> focus, Interpolated.of(a -> 0D,
|
trueBiomeStream = focus != null ? ProceduralStream.of((x, y) -> focus, Interpolated.of(a -> 0D,
|
||||||
b -> focus)).convertAware2D((b, x, z) -> {
|
b -> focus)).convertAware2D((b, x, z) -> {
|
||||||
for (IrisFeaturePositional i : engine.getFramework().getEngineParallax().forEachFeature(x, z)) {
|
for (IrisFeaturePositional i : engine.getFramework().getEngineParallax().forEachFeature(x, z)) {
|
||||||
IrisBiome bx = i.filter(x, z, b, rng);
|
LoaderBiome bx = i.filter(x, z, b, rng);
|
||||||
|
|
||||||
if (bx != null) {
|
if (bx != null) {
|
||||||
bx.setInferredType(b.getInferredType());
|
bx.setInferredType(b.getInferredType());
|
||||||
@ -280,7 +288,7 @@ public class IrisComplex implements DataProvider {
|
|||||||
regionStream.get(x, z), x, z, fluidHeight))
|
regionStream.get(x, z), x, z, fluidHeight))
|
||||||
.convertAware2D((b, x, z) -> {
|
.convertAware2D((b, x, z) -> {
|
||||||
for (IrisFeaturePositional i : engine.getFramework().getEngineParallax().forEachFeature(x, z)) {
|
for (IrisFeaturePositional i : engine.getFramework().getEngineParallax().forEachFeature(x, z)) {
|
||||||
IrisBiome bx = i.filter(x, z, b, rng);
|
LoaderBiome bx = i.filter(x, z, b, rng);
|
||||||
|
|
||||||
if (bx != null) {
|
if (bx != null) {
|
||||||
bx.setInferredType(b.getInferredType());
|
bx.setInferredType(b.getInferredType());
|
||||||
@ -298,23 +306,23 @@ public class IrisComplex implements DataProvider {
|
|||||||
fixBiomeType(h, baseBiomeStream.get(x, z),
|
fixBiomeType(h, baseBiomeStream.get(x, z),
|
||||||
regionStream.get(x, z), x, z, fluidHeight))
|
regionStream.get(x, z), x, z, fluidHeight))
|
||||||
.cache2D(cacheSize);
|
.cache2D(cacheSize);
|
||||||
trueBiomeDerivativeStream = trueBiomeStream.convert(IrisBiome::getDerivative).cache2D(cacheSize);
|
trueBiomeDerivativeStream = trueBiomeStream.convert(LoaderBiome::getDerivative).cache2D(cacheSize);
|
||||||
heightFluidStream = heightStream.max(fluidHeight).cache2D(cacheSize);
|
heightFluidStream = heightStream.max(fluidHeight).cache2D(cacheSize);
|
||||||
maxHeightStream = ProceduralStream.ofDouble((x, z) -> height);
|
maxHeightStream = ProceduralStream.ofDouble((x, z) -> height);
|
||||||
terrainSurfaceDecoration = trueBiomeStream
|
terrainSurfaceDecoration = trueBiomeStream
|
||||||
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, DecorationPart.NONE)).cache2D(cacheSize);
|
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, IrisDecorationPart.NONE)).cache2D(cacheSize);
|
||||||
terrainCeilingDecoration = trueBiomeStream
|
terrainCeilingDecoration = trueBiomeStream
|
||||||
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, DecorationPart.CEILING)).cache2D(cacheSize);
|
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, IrisDecorationPart.CEILING)).cache2D(cacheSize);
|
||||||
terrainCaveSurfaceDecoration = caveBiomeStream
|
terrainCaveSurfaceDecoration = caveBiomeStream
|
||||||
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, DecorationPart.NONE)).cache2D(cacheSize);
|
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, IrisDecorationPart.NONE)).cache2D(cacheSize);
|
||||||
terrainCaveCeilingDecoration = caveBiomeStream
|
terrainCaveCeilingDecoration = caveBiomeStream
|
||||||
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, DecorationPart.CEILING)).cache2D(cacheSize);
|
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, IrisDecorationPart.CEILING)).cache2D(cacheSize);
|
||||||
shoreSurfaceDecoration = trueBiomeStream
|
shoreSurfaceDecoration = trueBiomeStream
|
||||||
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, DecorationPart.SHORE_LINE)).cache2D(cacheSize);
|
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, IrisDecorationPart.SHORE_LINE)).cache2D(cacheSize);
|
||||||
seaSurfaceDecoration = trueBiomeStream
|
seaSurfaceDecoration = trueBiomeStream
|
||||||
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, DecorationPart.SEA_SURFACE)).cache2D(cacheSize);
|
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, IrisDecorationPart.SEA_SURFACE)).cache2D(cacheSize);
|
||||||
seaFloorDecoration = trueBiomeStream
|
seaFloorDecoration = trueBiomeStream
|
||||||
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, DecorationPart.SEA_FLOOR)).cache2D(cacheSize);
|
.convertAware2D((b, xx, zz) -> decorateFor(b, xx, zz, IrisDecorationPart.SEA_FLOOR)).cache2D(cacheSize);
|
||||||
trueHeightStream = ProceduralStream.of((x, z) -> {
|
trueHeightStream = ProceduralStream.of((x, z) -> {
|
||||||
int rx = (int) Math.round(engine.modifyX(x));
|
int rx = (int) Math.round(engine.modifyX(x));
|
||||||
int rz = (int) Math.round(engine.modifyZ(z));
|
int rz = (int) Math.round(engine.modifyZ(z));
|
||||||
@ -375,8 +383,8 @@ public class IrisComplex implements DataProvider {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private IrisRegion findRegion(IrisBiome focus, Engine engine) {
|
private LoaderRegion findRegion(LoaderBiome focus, Engine engine) {
|
||||||
for (IrisRegion i : engine.getDimension().getAllRegions(engine)) {
|
for (LoaderRegion i : engine.getDimension().getAllRegions(engine)) {
|
||||||
if (i.getAllBiomeIds().contains(focus.getLoadKey())) {
|
if (i.getAllBiomeIds().contains(focus.getLoadKey())) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
@ -385,7 +393,7 @@ public class IrisComplex implements DataProvider {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IrisDecorator decorateFor(IrisBiome b, double x, double z, DecorationPart part) {
|
private IrisDecorator decorateFor(LoaderBiome b, double x, double z, IrisDecorationPart part) {
|
||||||
RNG rngc = chunkRngStream.get(x, z);
|
RNG rngc = chunkRngStream.get(x, z);
|
||||||
|
|
||||||
for (IrisDecorator i : b.getDecorators()) {
|
for (IrisDecorator i : b.getDecorators()) {
|
||||||
@ -403,7 +411,7 @@ public class IrisComplex implements DataProvider {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IrisBiome fixBiomeType(Double height, IrisBiome biome, IrisRegion region, Double x, Double z, double fluidHeight) {
|
private LoaderBiome fixBiomeType(Double height, LoaderBiome biome, LoaderRegion region, Double x, Double z, double fluidHeight) {
|
||||||
double sh = region.getShoreHeight(x, z);
|
double sh = region.getShoreHeight(x, z);
|
||||||
|
|
||||||
if (height >= fluidHeight - 1 && height <= fluidHeight + sh && !biome.isShore()) {
|
if (height >= fluidHeight - 1 && height <= fluidHeight + sh && !biome.isShore()) {
|
||||||
@ -425,14 +433,14 @@ public class IrisComplex implements DataProvider {
|
|||||||
return biome;
|
return biome;
|
||||||
}
|
}
|
||||||
|
|
||||||
private double getHeight(Engine engine, IrisBiome b, double x, double z, long seed, boolean features) {
|
private double getHeight(Engine engine, LoaderBiome b, double x, double z, long seed, boolean features) {
|
||||||
double h = 0;
|
double h = 0;
|
||||||
|
|
||||||
for (IrisGenerator gen : generators) {
|
for (LoaderGenerator gen : generators) {
|
||||||
h += gen.getInterpolator().interpolate(x, z, (xx, zz) ->
|
h += gen.getInterpolator().interpolate(x, z, (xx, zz) ->
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
IrisBiome bx = baseBiomeStream.get(xx, zz);
|
LoaderBiome bx = baseBiomeStream.get(xx, zz);
|
||||||
|
|
||||||
return M.lerp(bx.getGenLinkMin(gen.getLoadKey()),
|
return M.lerp(bx.getGenLinkMin(gen.getLoadKey()),
|
||||||
bx.getGenLinkMax(gen.getLoadKey()),
|
bx.getGenLinkMax(gen.getLoadKey()),
|
||||||
@ -460,8 +468,8 @@ public class IrisComplex implements DataProvider {
|
|||||||
return Math.min(engine.getHeight(), Math.max(noise.get(), 0));
|
return Math.min(engine.getHeight(), Math.max(noise.get(), 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerGenerator(IrisGenerator cachedGenerator) {
|
private void registerGenerator(LoaderGenerator cachedGenerator) {
|
||||||
for (IrisGenerator i : generators) {
|
for (LoaderGenerator i : generators) {
|
||||||
if (i.getLoadKey().equals(cachedGenerator.getLoadKey())) {
|
if (i.getLoadKey().equals(cachedGenerator.getLoadKey())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -470,7 +478,7 @@ public class IrisComplex implements DataProvider {
|
|||||||
generators.add(cachedGenerator);
|
generators.add(cachedGenerator);
|
||||||
}
|
}
|
||||||
|
|
||||||
private IrisBiome implode(IrisBiome b, Double x, Double z) {
|
private LoaderBiome implode(LoaderBiome b, Double x, Double z) {
|
||||||
if (b.getChildren().isEmpty()) {
|
if (b.getChildren().isEmpty()) {
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
@ -478,7 +486,7 @@ public class IrisComplex implements DataProvider {
|
|||||||
return implode(b, x, z, 3);
|
return implode(b, x, z, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
private IrisBiome implode(IrisBiome b, Double x, Double z, int max) {
|
private LoaderBiome implode(LoaderBiome b, Double x, Double z, int max) {
|
||||||
if (max < 0) {
|
if (max < 0) {
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
@ -488,9 +496,9 @@ public class IrisComplex implements DataProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CNG childCell = b.getChildrenGenerator(rng, 123, b.getChildShrinkFactor());
|
CNG childCell = b.getChildrenGenerator(rng, 123, b.getChildShrinkFactor());
|
||||||
KList<IrisBiome> chx = b.getRealChildren(this).copy();
|
KList<LoaderBiome> chx = b.getRealChildren(this).copy();
|
||||||
chx.add(b);
|
chx.add(b);
|
||||||
IrisBiome biome = childCell.fitRarity(chx, x, z);
|
LoaderBiome biome = childCell.fitRarity(chx, x, z);
|
||||||
biome.setInferredType(b.getInferredType());
|
biome.setInferredType(b.getInferredType());
|
||||||
return implode(biome, x, z, max - 1);
|
return implode(biome, x, z, max - 1);
|
||||||
}
|
}
|
||||||
|
@ -22,13 +22,13 @@ import com.google.gson.Gson;
|
|||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.core.events.IrisEngineHotloadEvent;
|
import com.volmit.iris.core.events.IrisEngineHotloadEvent;
|
||||||
import com.volmit.iris.engine.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.framework.*;
|
import com.volmit.iris.engine.framework.*;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisBiomePaletteLayer;
|
import com.volmit.iris.engine.object.biome.IrisBiomePaletteLayer;
|
||||||
import com.volmit.iris.engine.object.IrisDecorator;
|
import com.volmit.iris.engine.object.decoration.IrisDecorator;
|
||||||
import com.volmit.iris.engine.object.IrisObjectPlacement;
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||||
import com.volmit.iris.engine.object.engine.IrisEngineData;
|
import com.volmit.iris.engine.object.engine.IrisEngineData;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
@ -142,7 +142,7 @@ public class IrisEngine extends BlockPopulator implements Engine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void computeBiomeMaxes() {
|
private void computeBiomeMaxes() {
|
||||||
for (IrisBiome i : getDimension().getAllBiomes(this)) {
|
for (LoaderBiome i : getDimension().getAllBiomes(this)) {
|
||||||
double density = 0;
|
double density = 0;
|
||||||
|
|
||||||
for (IrisObjectPlacement j : i.getObjects()) {
|
for (IrisObjectPlacement j : i.getObjects()) {
|
||||||
@ -257,7 +257,7 @@ public class IrisEngine extends BlockPopulator implements Engine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IrisBiome getFocus() {
|
public LoaderBiome getFocus() {
|
||||||
if (getDimension().getFocus() == null || getDimension().getFocus().trim().isEmpty()) {
|
if (getDimension().getFocus() == null || getDimension().getFocus().trim().isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -26,9 +26,9 @@ import com.volmit.iris.engine.framework.EngineCompound;
|
|||||||
import com.volmit.iris.engine.framework.EngineData;
|
import com.volmit.iris.engine.framework.EngineData;
|
||||||
import com.volmit.iris.engine.framework.EngineTarget;
|
import com.volmit.iris.engine.framework.EngineTarget;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.engine.object.IrisDimensionIndex;
|
import com.volmit.iris.engine.object.dimensional.IrisDimensionIndex;
|
||||||
import com.volmit.iris.engine.object.IrisPosition;
|
import com.volmit.iris.engine.object.basic.IrisPosition;
|
||||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
import com.volmit.iris.util.atomics.AtomicRollingSequence;
|
import com.volmit.iris.util.atomics.AtomicRollingSequence;
|
||||||
@ -71,7 +71,7 @@ public class IrisEngineCompound implements EngineCompound {
|
|||||||
private final KList<BlockPopulator> populators;
|
private final KList<BlockPopulator> populators;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final IrisDimension rootDimension;
|
private final LoaderDimension rootDimension;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final int threadCount = -1;
|
private final int threadCount = -1;
|
||||||
@ -80,7 +80,7 @@ public class IrisEngineCompound implements EngineCompound {
|
|||||||
@Setter
|
@Setter
|
||||||
private boolean studio;
|
private boolean studio;
|
||||||
|
|
||||||
public IrisEngineCompound(IrisWorld world, IrisDimension rootDimension, IrisData data, int maximumThreads) {
|
public IrisEngineCompound(IrisWorld world, LoaderDimension rootDimension, IrisData data, int maximumThreads) {
|
||||||
wallClock = new AtomicRollingSequence(32);
|
wallClock = new AtomicRollingSequence(32);
|
||||||
this.rootDimension = rootDimension;
|
this.rootDimension = rootDimension;
|
||||||
Iris.info("Initializing Engine Composite for " + world.name());
|
Iris.info("Initializing Engine Composite for " + world.name());
|
||||||
@ -115,7 +115,7 @@ public class IrisEngineCompound implements EngineCompound {
|
|||||||
|
|
||||||
for (int i = 0; i < engines.length; i++) {
|
for (int i = 0; i < engines.length; i++) {
|
||||||
IrisDimensionIndex index = rootDimension.getDimensionalComposite().get(i);
|
IrisDimensionIndex index = rootDimension.getDimensionalComposite().get(i);
|
||||||
IrisDimension dimension = data.getDimensionLoader().load(index.getDimension());
|
LoaderDimension dimension = data.getDimensionLoader().load(index.getDimension());
|
||||||
// TODO: WARNING HEIGHT
|
// TODO: WARNING HEIGHT
|
||||||
engines[i] = new IrisEngine(new EngineTarget(world, dimension, data.copy(), (int) Math.floor(256D * (index.getWeight() / totalWeight)), index.isInverted(), threadDist), this, i);
|
engines[i] = new IrisEngine(new EngineTarget(world, dimension, data.copy(), (int) Math.floor(256D * (index.getWeight() / totalWeight)), index.isInverted(), threadDist), this, i);
|
||||||
engines[i].setMinHeight(buf);
|
engines[i].setMinHeight(buf);
|
||||||
|
@ -19,13 +19,17 @@
|
|||||||
package com.volmit.iris.engine;
|
package com.volmit.iris.engine;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.EngineAssignedWorldManager;
|
import com.volmit.iris.engine.framework.EngineAssignedWorldManager;
|
||||||
import com.volmit.iris.engine.object.*;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
|
import com.volmit.iris.engine.object.block.IrisBlockDrops;
|
||||||
import com.volmit.iris.engine.object.common.IRare;
|
import com.volmit.iris.engine.object.common.IRare;
|
||||||
import com.volmit.iris.engine.object.engine.IrisEngineData;
|
import com.volmit.iris.engine.object.engine.IrisEngineData;
|
||||||
import com.volmit.iris.engine.object.engine.IrisEngineSpawnerCooldown;
|
import com.volmit.iris.engine.object.engine.IrisEngineSpawnerCooldown;
|
||||||
|
import com.volmit.iris.engine.object.entity.IrisEntitySpawn;
|
||||||
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
|
import com.volmit.iris.engine.object.spawners.LoaderSpawner;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
@ -44,7 +48,6 @@ import org.bukkit.event.block.BlockPlaceEvent;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
@ -162,8 +165,8 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Chunk c = cc[RNG.r.nextInt(cc.length)];
|
Chunk c = cc[RNG.r.nextInt(cc.length)];
|
||||||
IrisBiome biome = getEngine().getSurfaceBiome(c);
|
LoaderBiome biome = getEngine().getSurfaceBiome(c);
|
||||||
IrisRegion region = getEngine().getRegion(c);
|
LoaderRegion region = getEngine().getRegion(c);
|
||||||
spawnIn(c, biome, region, maxGroups);
|
spawnIn(c, biome, region, maxGroups);
|
||||||
chunkCooldowns.put(Cache.key(c), M.ms());
|
chunkCooldowns.put(Cache.key(c), M.ms());
|
||||||
}
|
}
|
||||||
@ -176,7 +179,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
energy = M.clip(energy, 1D, 1000D);
|
energy = M.clip(energy, 1D, 1000D);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void spawnIn(Chunk c, IrisBiome biome, IrisRegion region, int max) {
|
private void spawnIn(Chunk c, LoaderBiome biome, LoaderRegion region, int max) {
|
||||||
for(Entity i : c.getEntities())
|
for(Entity i : c.getEntities())
|
||||||
{
|
{
|
||||||
if(i instanceof LivingEntity)
|
if(i instanceof LivingEntity)
|
||||||
@ -218,7 +221,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Stream<IrisEntitySpawn> stream(IrisSpawner s) {
|
private Stream<IrisEntitySpawn> stream(LoaderSpawner s) {
|
||||||
for (IrisEntitySpawn i : s.getSpawns()) {
|
for (IrisEntitySpawn i : s.getSpawns()) {
|
||||||
i.setReferenceSpawner(s);
|
i.setReferenceSpawner(s);
|
||||||
}
|
}
|
||||||
@ -240,12 +243,12 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
return rarityTypes;
|
return rarityTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canSpawn(IrisSpawner i) {
|
public boolean canSpawn(LoaderSpawner i) {
|
||||||
return i.isValid(getEngine().getWorld().realWorld())
|
return i.isValid(getEngine().getWorld().realWorld())
|
||||||
&& getCooldown(i).canSpawn(i.getMaximumRate());
|
&& getCooldown(i).canSpawn(i.getMaximumRate());
|
||||||
}
|
}
|
||||||
|
|
||||||
private IrisEngineSpawnerCooldown getCooldown(IrisSpawner i) {
|
private IrisEngineSpawnerCooldown getCooldown(LoaderSpawner i) {
|
||||||
IrisEngineData ed = getEngine().getEngineData();
|
IrisEngineData ed = getEngine().getEngineData();
|
||||||
IrisEngineSpawnerCooldown cd = null;
|
IrisEngineSpawnerCooldown cd = null;
|
||||||
|
|
||||||
@ -295,7 +298,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
if (e.getBlock().getWorld().equals(getTarget().getWorld().realWorld()) && getEngine().contains(e.getBlock().getLocation())) {
|
if (e.getBlock().getWorld().equals(getTarget().getWorld().realWorld()) && getEngine().contains(e.getBlock().getLocation())) {
|
||||||
KList<ItemStack> d = new KList<>();
|
KList<ItemStack> d = new KList<>();
|
||||||
Runnable drop = () -> J.s(() -> d.forEach((i) -> e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation().clone().add(0.5, 0.5, 0.5), i)));
|
Runnable drop = () -> J.s(() -> d.forEach((i) -> e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation().clone().add(0.5, 0.5, 0.5), i)));
|
||||||
IrisBiome b = getEngine().getBiome(e.getBlock().getLocation());
|
LoaderBiome b = getEngine().getBiome(e.getBlock().getLocation());
|
||||||
|
|
||||||
for (IrisBlockDrops i : b.getBlockDrops()) {
|
for (IrisBlockDrops i : b.getBlockDrops()) {
|
||||||
if (i.shouldDropFor(e.getBlock().getBlockData(), getData())) {
|
if (i.shouldDropFor(e.getBlock().getBlockData(), getData())) {
|
||||||
@ -312,7 +315,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisRegion r = getEngine().getRegion(e.getBlock().getLocation());
|
LoaderRegion r = getEngine().getRegion(e.getBlock().getLocation());
|
||||||
|
|
||||||
for (IrisBlockDrops i : r.getBlockDrops()) {
|
for (IrisBlockDrops i : r.getBlockDrops()) {
|
||||||
if (i.shouldDropFor(e.getBlock().getBlockData(), getData())) {
|
if (i.shouldDropFor(e.getBlock().getBlockData(), getData())) {
|
||||||
|
@ -25,8 +25,8 @@ import com.volmit.iris.engine.framework.Engine;
|
|||||||
import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.util.hunk.view.BiomeGridHunkView;
|
import com.volmit.iris.util.hunk.view.BiomeGridHunkView;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisBiomeCustom;
|
import com.volmit.iris.engine.object.biome.IrisBiomeCustom;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||||
@ -66,7 +66,7 @@ public class IrisBiomeActuator extends EngineAssignedActuator<Biome> {
|
|||||||
public void onActuate(int x, int z, Hunk<Biome> h, boolean multicore) {
|
public void onActuate(int x, int z, Hunk<Biome> h, boolean multicore) {
|
||||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||||
int zf, maxHeight;
|
int zf, maxHeight;
|
||||||
IrisBiome ib;
|
LoaderBiome ib;
|
||||||
|
|
||||||
for (int xf = 0; xf < h.getWidth(); xf++) {
|
for (int xf = 0; xf < h.getWidth(); xf++) {
|
||||||
for (zf = 0; zf < h.getDepth(); zf++) {
|
for (zf = 0; zf < h.getDepth(); zf++) {
|
||||||
|
@ -23,8 +23,8 @@ import com.volmit.iris.engine.framework.Engine;
|
|||||||
import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
||||||
import com.volmit.iris.engine.framework.EngineDecorator;
|
import com.volmit.iris.engine.framework.EngineDecorator;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisCaveLayer;
|
import com.volmit.iris.engine.object.carve.IrisCaveLayer;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||||
@ -88,7 +88,7 @@ public class IrisDecorantActuator extends EngineAssignedActuator<BlockData> {
|
|||||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||||
|
|
||||||
int j, realX, realZ, height;
|
int j, realX, realZ, height;
|
||||||
IrisBiome biome, cave;
|
LoaderBiome biome, cave;
|
||||||
|
|
||||||
|
|
||||||
for (int i = 0; i < output.getWidth(); i++) {
|
for (int i = 0; i < output.getWidth(); i++) {
|
||||||
|
@ -21,7 +21,7 @@ package com.volmit.iris.engine.actuator;
|
|||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
@ -56,7 +56,7 @@ public class IrisTerrainIslandActuator extends EngineAssignedActuator<BlockData>
|
|||||||
public void onActuate(int x, int z, Hunk<BlockData> h, boolean multicore) {
|
public void onActuate(int x, int z, Hunk<BlockData> h, boolean multicore) {
|
||||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||||
int i, zf, depth, surface, realX, realZ;
|
int i, zf, depth, surface, realX, realZ;
|
||||||
IrisBiome biome;
|
LoaderBiome biome;
|
||||||
KList<BlockData> blocks, fblocks;
|
KList<BlockData> blocks, fblocks;
|
||||||
int hi, lo;
|
int hi, lo;
|
||||||
double hh;
|
double hh;
|
||||||
|
@ -21,7 +21,7 @@ package com.volmit.iris.engine.actuator;
|
|||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
@ -82,7 +82,7 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
|
|||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
public void terrainSliver(int x, int z, int xf, Hunk<BlockData> h) {
|
public void terrainSliver(int x, int z, int xf, Hunk<BlockData> h) {
|
||||||
int i, depth, realX, realZ, hf, he, b, fdepth;
|
int i, depth, realX, realZ, hf, he, b, fdepth;
|
||||||
IrisBiome biome;
|
LoaderBiome biome;
|
||||||
KList<BlockData> blocks, fblocks;
|
KList<BlockData> blocks, fblocks;
|
||||||
|
|
||||||
for (int zf = 0; zf < h.getDepth(); zf++) {
|
for (int zf = 0; zf < h.getDepth(); zf++) {
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.cache;
|
package com.volmit.iris.engine.data.cache;
|
||||||
|
|
||||||
import com.volmit.iris.util.math.M;
|
import com.volmit.iris.util.math.M;
|
||||||
import com.volmit.iris.util.scheduling.IrisLock;
|
import com.volmit.iris.util.scheduling.IrisLock;
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.cache;
|
package com.volmit.iris.engine.data.cache;
|
||||||
|
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
|
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.cache;
|
package com.volmit.iris.engine.data.cache;
|
||||||
|
|
||||||
public interface Multicache {
|
public interface Multicache {
|
||||||
<V> Cache<V> getCache(int id);
|
<V> Cache<V> getCache(int id);
|
@ -20,7 +20,7 @@ package com.volmit.iris.engine.data.mca;
|
|||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.nms.INMS;
|
import com.volmit.iris.core.nms.INMS;
|
||||||
import com.volmit.iris.engine.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.data.B;
|
import com.volmit.iris.engine.data.B;
|
||||||
import com.volmit.iris.engine.data.nbt.tag.CompoundTag;
|
import com.volmit.iris.engine.data.nbt.tag.CompoundTag;
|
||||||
import com.volmit.iris.engine.data.nbt.tag.StringTag;
|
import com.volmit.iris.engine.data.nbt.tag.StringTag;
|
||||||
|
@ -18,23 +18,23 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.decorator;
|
package com.volmit.iris.engine.decorator;
|
||||||
|
|
||||||
import com.volmit.iris.engine.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.DecorationPart;
|
import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisDecorator;
|
import com.volmit.iris.engine.object.decoration.IrisDecorator;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
public class IrisCeilingDecorator extends IrisEngineDecorator {
|
public class IrisCeilingDecorator extends IrisEngineDecorator {
|
||||||
public IrisCeilingDecorator(Engine engine) {
|
public IrisCeilingDecorator(Engine engine) {
|
||||||
super(engine, "Ceiling", DecorationPart.CEILING);
|
super(engine, "Ceiling", IrisDecorationPart.CEILING);
|
||||||
}
|
}
|
||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
@Override
|
@Override
|
||||||
public void decorate(int x, int z, int realX, int realX1, int realX_1, int realZ, int realZ1, int realZ_1, Hunk<BlockData> data, IrisBiome biome, int height, int max) {
|
public void decorate(int x, int z, int realX, int realX1, int realX_1, int realZ, int realZ1, int realZ_1, Hunk<BlockData> data, LoaderBiome biome, int height, int max) {
|
||||||
IrisDecorator decorator = getDecorator(biome, realX, realZ);
|
IrisDecorator decorator = getDecorator(biome, realX, realZ);
|
||||||
|
|
||||||
if (decorator != null) {
|
if (decorator != null) {
|
||||||
|
@ -19,13 +19,13 @@
|
|||||||
package com.volmit.iris.engine.decorator;
|
package com.volmit.iris.engine.decorator;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.EngineAssignedComponent;
|
import com.volmit.iris.engine.framework.EngineAssignedComponent;
|
||||||
import com.volmit.iris.engine.framework.EngineDecorator;
|
import com.volmit.iris.engine.framework.EngineDecorator;
|
||||||
import com.volmit.iris.engine.object.DecorationPart;
|
import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisDecorator;
|
import com.volmit.iris.engine.object.decoration.IrisDecorator;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@ -36,15 +36,15 @@ public abstract class IrisEngineDecorator extends EngineAssignedComponent implem
|
|||||||
private final RNG rng;
|
private final RNG rng;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final DecorationPart part;
|
private final IrisDecorationPart part;
|
||||||
|
|
||||||
public IrisEngineDecorator(Engine engine, String name, DecorationPart part) {
|
public IrisEngineDecorator(Engine engine, String name, IrisDecorationPart part) {
|
||||||
super(engine, name + " Decorator");
|
super(engine, name + " Decorator");
|
||||||
this.part = part;
|
this.part = part;
|
||||||
this.rng = new RNG(getSeed() + 29356788 - (part.ordinal() * 10439677L));
|
this.rng = new RNG(getSeed() + 29356788 - (part.ordinal() * 10439677L));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected IrisDecorator getDecorator(IrisBiome biome, double realX, double realZ) {
|
protected IrisDecorator getDecorator(LoaderBiome biome, double realX, double realZ) {
|
||||||
KList<IrisDecorator> v = new KList<>();
|
KList<IrisDecorator> v = new KList<>();
|
||||||
RNG rng = new RNG(Cache.key((int) realX, (int) realZ));
|
RNG rng = new RNG(Cache.key((int) realX, (int) realZ));
|
||||||
|
|
||||||
|
@ -18,23 +18,23 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.decorator;
|
package com.volmit.iris.engine.decorator;
|
||||||
|
|
||||||
import com.volmit.iris.engine.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.DecorationPart;
|
import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisDecorator;
|
import com.volmit.iris.engine.object.decoration.IrisDecorator;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
public class IrisSeaFloorDecorator extends IrisEngineDecorator {
|
public class IrisSeaFloorDecorator extends IrisEngineDecorator {
|
||||||
public IrisSeaFloorDecorator(Engine engine) {
|
public IrisSeaFloorDecorator(Engine engine) {
|
||||||
super(engine, "Sea Floor", DecorationPart.SEA_FLOOR);
|
super(engine, "Sea Floor", IrisDecorationPart.SEA_FLOOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
@Override
|
@Override
|
||||||
public void decorate(int x, int z, int realX, int realX1, int realX_1, int realZ, int realZ1, int realZ_1, Hunk<BlockData> data, IrisBiome biome, int height, int max) {
|
public void decorate(int x, int z, int realX, int realX1, int realX_1, int realZ, int realZ1, int realZ_1, Hunk<BlockData> data, LoaderBiome biome, int height, int max) {
|
||||||
IrisDecorator decorator = getDecorator(biome, realX, realZ);
|
IrisDecorator decorator = getDecorator(biome, realX, realZ);
|
||||||
|
|
||||||
if (decorator != null) {
|
if (decorator != null) {
|
||||||
|
@ -18,23 +18,23 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.decorator;
|
package com.volmit.iris.engine.decorator;
|
||||||
|
|
||||||
import com.volmit.iris.engine.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.DecorationPart;
|
import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisDecorator;
|
import com.volmit.iris.engine.object.decoration.IrisDecorator;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
public class IrisSeaSurfaceDecorator extends IrisEngineDecorator {
|
public class IrisSeaSurfaceDecorator extends IrisEngineDecorator {
|
||||||
public IrisSeaSurfaceDecorator(Engine engine) {
|
public IrisSeaSurfaceDecorator(Engine engine) {
|
||||||
super(engine, "Sea Surface", DecorationPart.SEA_SURFACE);
|
super(engine, "Sea Surface", IrisDecorationPart.SEA_SURFACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
@Override
|
@Override
|
||||||
public void decorate(int x, int z, int realX, int realX1, int realX_1, int realZ, int realZ1, int realZ_1, Hunk<BlockData> data, IrisBiome biome, int height, int max) {
|
public void decorate(int x, int z, int realX, int realX1, int realX_1, int realZ, int realZ1, int realZ_1, Hunk<BlockData> data, LoaderBiome biome, int height, int max) {
|
||||||
IrisDecorator decorator = getDecorator(biome, realX, realZ);
|
IrisDecorator decorator = getDecorator(biome, realX, realZ);
|
||||||
|
|
||||||
if (decorator != null) {
|
if (decorator != null) {
|
||||||
|
@ -18,23 +18,23 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.decorator;
|
package com.volmit.iris.engine.decorator;
|
||||||
|
|
||||||
import com.volmit.iris.engine.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.DecorationPart;
|
import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisDecorator;
|
import com.volmit.iris.engine.object.decoration.IrisDecorator;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
public class IrisShoreLineDecorator extends IrisEngineDecorator {
|
public class IrisShoreLineDecorator extends IrisEngineDecorator {
|
||||||
public IrisShoreLineDecorator(Engine engine) {
|
public IrisShoreLineDecorator(Engine engine) {
|
||||||
super(engine, "Shore Line", DecorationPart.SHORE_LINE);
|
super(engine, "Shore Line", IrisDecorationPart.SHORE_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
@Override
|
@Override
|
||||||
public void decorate(int x, int z, int realX, int realX1, int realX_1, int realZ, int realZ1, int realZ_1, Hunk<BlockData> data, IrisBiome biome, int height, int max) {
|
public void decorate(int x, int z, int realX, int realX1, int realX_1, int realZ, int realZ1, int realZ_1, Hunk<BlockData> data, LoaderBiome biome, int height, int max) {
|
||||||
|
|
||||||
if (height == getDimension().getFluidHeight()) {
|
if (height == getDimension().getFluidHeight()) {
|
||||||
if (Math.round(getComplex().getHeightStream().get(realX1, realZ)) < getComplex().getFluidHeight() ||
|
if (Math.round(getComplex().getHeightStream().get(realX1, realZ)) < getComplex().getFluidHeight() ||
|
||||||
|
@ -19,25 +19,25 @@
|
|||||||
package com.volmit.iris.engine.decorator;
|
package com.volmit.iris.engine.decorator;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.DecorationPart;
|
import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
|
||||||
import com.volmit.iris.engine.object.InferredType;
|
import com.volmit.iris.engine.object.biome.InferredType;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisDecorator;
|
import com.volmit.iris.engine.object.decoration.IrisDecorator;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import org.bukkit.block.data.Bisected;
|
import org.bukkit.block.data.Bisected;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
public class IrisSurfaceDecorator extends IrisEngineDecorator {
|
public class IrisSurfaceDecorator extends IrisEngineDecorator {
|
||||||
public IrisSurfaceDecorator(Engine engine) {
|
public IrisSurfaceDecorator(Engine engine) {
|
||||||
super(engine, "Surface", DecorationPart.NONE);
|
super(engine, "Surface", IrisDecorationPart.NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
@Override
|
@Override
|
||||||
public void decorate(int x, int z, int realX, int realX1, int realX_1, int realZ, int realZ1, int realZ_1, Hunk<BlockData> data, IrisBiome biome, int height, int max) {
|
public void decorate(int x, int z, int realX, int realX1, int realX_1, int realZ, int realZ1, int realZ_1, Hunk<BlockData> data, LoaderBiome biome, int height, int max) {
|
||||||
if (biome.getInferredType().equals(InferredType.SHORE) && height < getDimension().getFluidHeight()) {
|
if (biome.getInferredType().equals(InferredType.SHORE) && height < getDimension().getFluidHeight()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -22,11 +22,18 @@ import com.volmit.iris.Iris;
|
|||||||
import com.volmit.iris.core.gui.components.RenderType;
|
import com.volmit.iris.core.gui.components.RenderType;
|
||||||
import com.volmit.iris.core.gui.components.Renderer;
|
import com.volmit.iris.core.gui.components.Renderer;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.data.B;
|
import com.volmit.iris.engine.data.B;
|
||||||
import com.volmit.iris.engine.data.DataProvider;
|
import com.volmit.iris.engine.data.DataProvider;
|
||||||
|
import com.volmit.iris.engine.object.basic.IrisColor;
|
||||||
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
|
import com.volmit.iris.engine.object.loot.IrisLootReference;
|
||||||
|
import com.volmit.iris.engine.object.loot.LoaderLootTable;
|
||||||
|
import com.volmit.iris.engine.object.loot.LootMode;
|
||||||
|
import com.volmit.iris.engine.object.meta.InventorySlotType;
|
||||||
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.*;
|
|
||||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||||
import com.volmit.iris.engine.object.engine.IrisEngineData;
|
import com.volmit.iris.engine.object.engine.IrisEngineData;
|
||||||
import com.volmit.iris.engine.parallax.ParallaxAccess;
|
import com.volmit.iris.engine.parallax.ParallaxAccess;
|
||||||
@ -125,7 +132,7 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
|||||||
return getTarget().getWorld();
|
return getTarget().getWorld();
|
||||||
}
|
}
|
||||||
|
|
||||||
default IrisDimension getDimension() {
|
default LoaderDimension getDimension() {
|
||||||
return getTarget().getDimension();
|
return getTarget().getDimension();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,8 +142,8 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
|||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
default Color draw(double x, double z) {
|
default Color draw(double x, double z) {
|
||||||
IrisRegion region = getRegion((int) x, (int) z);
|
LoaderRegion region = getRegion((int) x, (int) z);
|
||||||
IrisBiome biome = getSurfaceBiome((int) x, (int) z);
|
LoaderBiome biome = getSurfaceBiome((int) x, (int) z);
|
||||||
int height = getHeight((int) x, (int) z);
|
int height = getHeight((int) x, (int) z);
|
||||||
double heightFactor = M.lerpInverse(0, getHeight(), height);
|
double heightFactor = M.lerpInverse(0, getHeight(), height);
|
||||||
Color irc = region.getColor(this.getFramework().getComplex(), RenderType.BIOME);
|
Color irc = region.getColor(this.getFramework().getComplex(), RenderType.BIOME);
|
||||||
@ -150,7 +157,7 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
|||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
@Override
|
@Override
|
||||||
default IrisRegion getRegion(int x, int z) {
|
default LoaderRegion getRegion(int x, int z) {
|
||||||
return getFramework().getComplex().getRegionStream().get(x, z);
|
return getFramework().getComplex().getRegionStream().get(x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,13 +168,13 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
|||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
@Override
|
@Override
|
||||||
default IrisBiome getCaveBiome(int x, int z) {
|
default LoaderBiome getCaveBiome(int x, int z) {
|
||||||
return getFramework().getComplex().getCaveBiomeStream().get(x, z);
|
return getFramework().getComplex().getCaveBiomeStream().get(x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
@Override
|
@Override
|
||||||
default IrisBiome getSurfaceBiome(int x, int z) {
|
default LoaderBiome getSurfaceBiome(int x, int z) {
|
||||||
return getFramework().getComplex().getTrueBiomeStream().get(x, z);
|
return getFramework().getComplex().getTrueBiomeStream().get(x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -255,7 +262,7 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (slot != null) {
|
if (slot != null) {
|
||||||
KList<IrisLootTable> tables = getLootTables(rx, block);
|
KList<LoaderLootTable> tables = getLootTables(rx, block);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
InventoryHolder m = (InventoryHolder) block.getState();
|
InventoryHolder m = (InventoryHolder) block.getState();
|
||||||
@ -308,7 +315,7 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default void injectTables(KList<IrisLootTable> list, IrisLootReference r) {
|
default void injectTables(KList<LoaderLootTable> list, IrisLootReference r) {
|
||||||
if (r.getMode().equals(LootMode.CLEAR) || r.getMode().equals(LootMode.REPLACE)) {
|
if (r.getMode().equals(LootMode.CLEAR) || r.getMode().equals(LootMode.REPLACE)) {
|
||||||
list.clear();
|
list.clear();
|
||||||
}
|
}
|
||||||
@ -318,7 +325,7 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
|||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
@Override
|
@Override
|
||||||
default KList<IrisLootTable> getLootTables(RNG rng, Block b) {
|
default KList<LoaderLootTable> getLootTables(RNG rng, Block b) {
|
||||||
int rx = b.getX();
|
int rx = b.getX();
|
||||||
int rz = b.getZ();
|
int rz = b.getZ();
|
||||||
double he = getFramework().getComplex().getHeightStream().get(rx, rz);
|
double he = getFramework().getComplex().getHeightStream().get(rx, rz);
|
||||||
@ -326,16 +333,16 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
|||||||
if (po != null && po.getPlacement() != null) {
|
if (po != null && po.getPlacement() != null) {
|
||||||
|
|
||||||
if (B.isStorageChest(b.getBlockData())) {
|
if (B.isStorageChest(b.getBlockData())) {
|
||||||
IrisLootTable table = po.getPlacement().getTable(b.getBlockData(), getData());
|
LoaderLootTable table = po.getPlacement().getTable(b.getBlockData(), getData());
|
||||||
if (table != null) {
|
if (table != null) {
|
||||||
return new KList<>(table);
|
return new KList<>(table);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
IrisRegion region = getFramework().getComplex().getRegionStream().get(rx, rz);
|
LoaderRegion region = getFramework().getComplex().getRegionStream().get(rx, rz);
|
||||||
IrisBiome biomeSurface = getFramework().getComplex().getTrueBiomeStream().get(rx, rz);
|
LoaderBiome biomeSurface = getFramework().getComplex().getTrueBiomeStream().get(rx, rz);
|
||||||
IrisBiome biomeUnder = b.getY() < he ? getFramework().getComplex().getCaveBiomeStream().get(rx, rz) : biomeSurface;
|
LoaderBiome biomeUnder = b.getY() < he ? getFramework().getComplex().getCaveBiomeStream().get(rx, rz) : biomeSurface;
|
||||||
KList<IrisLootTable> tables = new KList<>();
|
KList<LoaderLootTable> tables = new KList<>();
|
||||||
double multiplier = 1D * getDimension().getLoot().getMultiplier() * region.getLoot().getMultiplier() * biomeSurface.getLoot().getMultiplier() * biomeUnder.getLoot().getMultiplier();
|
double multiplier = 1D * getDimension().getLoot().getMultiplier() * region.getLoot().getMultiplier() * biomeSurface.getLoot().getMultiplier() * biomeUnder.getLoot().getMultiplier();
|
||||||
injectTables(tables, getDimension().getLoot());
|
injectTables(tables, getDimension().getLoot());
|
||||||
injectTables(tables, region.getLoot());
|
injectTables(tables, region.getLoot());
|
||||||
@ -358,11 +365,11 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default void addItems(boolean debug, Inventory inv, RNG rng, KList<IrisLootTable> tables, InventorySlotType slot, int x, int y, int z, int mgf) {
|
default void addItems(boolean debug, Inventory inv, RNG rng, KList<LoaderLootTable> tables, InventorySlotType slot, int x, int y, int z, int mgf) {
|
||||||
KList<ItemStack> items = new KList<>();
|
KList<ItemStack> items = new KList<>();
|
||||||
|
|
||||||
int b = 4;
|
int b = 4;
|
||||||
for (IrisLootTable i : tables) {
|
for (LoaderLootTable i : tables) {
|
||||||
b++;
|
b++;
|
||||||
items.addAll(i.getLoot(debug, items.isEmpty(), rng, slot, x, y, z, b + b, mgf + b));
|
items.addAll(i.getLoot(debug, items.isEmpty(), rng, slot, x, y, z, b + b, mgf + b));
|
||||||
}
|
}
|
||||||
@ -395,12 +402,12 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
|||||||
}
|
}
|
||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
default IrisBiome getBiome(Location l) {
|
default LoaderBiome getBiome(Location l) {
|
||||||
return getBiome(l.getBlockX(), l.getBlockY(), l.getBlockZ());
|
return getBiome(l.getBlockX(), l.getBlockY(), l.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
default IrisRegion getRegion(Location l) {
|
default LoaderRegion getRegion(Location l) {
|
||||||
return getRegion(l.getBlockX(), l.getBlockZ());
|
return getRegion(l.getBlockX(), l.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -409,15 +416,15 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
|||||||
return l.getBlockY() >= getMinHeight() && l.getBlockY() <= getMaxHeight();
|
return l.getBlockY() >= getMinHeight() && l.getBlockY() <= getMaxHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisBiome getFocus();
|
LoaderBiome getFocus();
|
||||||
|
|
||||||
IrisEngineData getEngineData();
|
IrisEngineData getEngineData();
|
||||||
|
|
||||||
default IrisBiome getSurfaceBiome(Chunk c) {
|
default LoaderBiome getSurfaceBiome(Chunk c) {
|
||||||
return getSurfaceBiome((c.getX() << 4) + 8, (c.getZ() << 4) + 8);
|
return getSurfaceBiome((c.getX() << 4) + 8, (c.getZ() << 4) + 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
default IrisRegion getRegion(Chunk c) {
|
default LoaderRegion getRegion(Chunk c) {
|
||||||
return getRegion((c.getX() << 4) + 8, (c.getZ() << 4) + 8);
|
return getRegion((c.getX() << 4) + 8, (c.getZ() << 4) + 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,11 +19,9 @@
|
|||||||
package com.volmit.iris.engine.framework;
|
package com.volmit.iris.engine.framework;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.object.IrisPosition;
|
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.math.Position2;
|
import com.volmit.iris.util.math.Position2;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Chunk;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.entity.EnderSignal;
|
import org.bukkit.entity.EnderSignal;
|
||||||
@ -33,7 +31,6 @@ import org.bukkit.event.Listener;
|
|||||||
import org.bukkit.event.block.BlockBreakEvent;
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
import org.bukkit.event.entity.EntitySpawnEvent;
|
import org.bukkit.event.entity.EntitySpawnEvent;
|
||||||
import org.bukkit.event.entity.ProjectileLaunchEvent;
|
|
||||||
import org.bukkit.event.world.ChunkLoadEvent;
|
import org.bukkit.event.world.ChunkLoadEvent;
|
||||||
import org.bukkit.event.world.WorldSaveEvent;
|
import org.bukkit.event.world.WorldSaveEvent;
|
||||||
import org.bukkit.event.world.WorldUnloadEvent;
|
import org.bukkit.event.world.WorldUnloadEvent;
|
||||||
|
@ -21,7 +21,7 @@ package com.volmit.iris.engine.framework;
|
|||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.IrisComplex;
|
import com.volmit.iris.engine.IrisComplex;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.engine.parallax.ParallaxAccess;
|
import com.volmit.iris.engine.parallax.ParallaxAccess;
|
||||||
import com.volmit.iris.util.math.RollingSequence;
|
import com.volmit.iris.util.math.RollingSequence;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@ -64,7 +64,7 @@ public interface EngineComponent {
|
|||||||
return getEngine().getTarget();
|
return getEngine().getTarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
default IrisDimension getDimension() {
|
default LoaderDimension getDimension() {
|
||||||
return getEngine().getDimension();
|
return getEngine().getDimension();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,11 +30,11 @@ import com.volmit.iris.engine.data.chunk.MCATerrainChunk;
|
|||||||
import com.volmit.iris.engine.data.chunk.TerrainChunk;
|
import com.volmit.iris.engine.data.chunk.TerrainChunk;
|
||||||
import com.volmit.iris.engine.data.mca.NBTWorld;
|
import com.volmit.iris.engine.data.mca.NBTWorld;
|
||||||
import com.volmit.iris.engine.data.nbt.tag.CompoundTag;
|
import com.volmit.iris.engine.data.nbt.tag.CompoundTag;
|
||||||
import com.volmit.iris.engine.headless.HeadlessGenerator;
|
import com.volmit.iris.engine.framework.headless.HeadlessGenerator;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.engine.object.IrisPosition;
|
import com.volmit.iris.engine.object.basic.IrisPosition;
|
||||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
@ -202,11 +202,11 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized IrisDimension getDimension(IrisWorld world) {
|
private synchronized LoaderDimension getDimension(IrisWorld world) {
|
||||||
String query = dimensionQuery;
|
String query = dimensionQuery;
|
||||||
query = Iris.linkMultiverseCore.getWorldNameType(world.name(), query);
|
query = Iris.linkMultiverseCore.getWorldNameType(world.name(), query);
|
||||||
|
|
||||||
IrisDimension dim = null;
|
LoaderDimension dim = null;
|
||||||
|
|
||||||
if (query == null) {
|
if (query == null) {
|
||||||
File iris = new File(world.worldFolder(), "iris");
|
File iris = new File(world.worldFolder(), "iris");
|
||||||
@ -253,7 +253,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (production) {
|
if (production) {
|
||||||
IrisDimension od = dim;
|
LoaderDimension od = dim;
|
||||||
dim = new IrisData(getDataFolder(world)).getDimensionLoader().load(od.getLoadKey());
|
dim = new IrisData(getDataFolder(world)).getDimensionLoader().load(od.getLoadKey());
|
||||||
|
|
||||||
if (dim == null) {
|
if (dim == null) {
|
||||||
@ -270,9 +270,9 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
|||||||
return dim;
|
return dim;
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized IrisDimension getDimension(String world) {
|
private synchronized LoaderDimension getDimension(String world) {
|
||||||
String query = dimensionQuery;
|
String query = dimensionQuery;
|
||||||
IrisDimension dim = null;
|
LoaderDimension dim = null;
|
||||||
|
|
||||||
if (query == null) {
|
if (query == null) {
|
||||||
File iris = new File(world + "/iris");
|
File iris = new File(world + "/iris");
|
||||||
@ -319,7 +319,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (production) {
|
if (production) {
|
||||||
IrisDimension od = dim;
|
LoaderDimension od = dim;
|
||||||
dim = new IrisData(getDataFolder(world)).getDimensionLoader().load(od.getLoadKey());
|
dim = new IrisData(getDataFolder(world)).getDimensionLoader().load(od.getLoadKey());
|
||||||
|
|
||||||
if (dim == null) {
|
if (dim == null) {
|
||||||
@ -345,7 +345,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
initialized.set(true);
|
initialized.set(true);
|
||||||
IrisDimension dim = getDimension(world);
|
LoaderDimension dim = getDimension(world);
|
||||||
IrisData data = production ? new IrisData(getDataFolder(world)) : dim.getLoader().copy();
|
IrisData data = production ? new IrisData(getDataFolder(world)) : dim.getLoader().copy();
|
||||||
compound.set(new IrisEngineCompound(world, dim, data, IrisSettings.getThreadCount(IrisSettings.get().getConcurrency().getEngineThreadCount())));
|
compound.set(new IrisEngineCompound(world, dim, data, IrisSettings.getThreadCount(IrisSettings.get().getConcurrency().getEngineThreadCount())));
|
||||||
compound.get().setStudio(!production);
|
compound.get().setStudio(!production);
|
||||||
@ -673,12 +673,12 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IrisBiome getBiome(int x, int z) {
|
public LoaderBiome getBiome(int x, int z) {
|
||||||
return getBiome(x, 0, z);
|
return getBiome(x, 0, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IrisBiome getCaveBiome(int x, int z) {
|
public LoaderBiome getCaveBiome(int x, int z) {
|
||||||
return getCaveBiome(x, 0, z);
|
return getCaveBiome(x, 0, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -693,13 +693,13 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IrisBiome getBiome(int x, int y, int z) {
|
public LoaderBiome getBiome(int x, int y, int z) {
|
||||||
// TODO: REMOVE GET ABS BIOME OR THIS ONE
|
// TODO: REMOVE GET ABS BIOME OR THIS ONE
|
||||||
return getEngineAccess(y).getBiome(x, y - getComposite().getEngineForHeight(y).getMinHeight(), z);
|
return getEngineAccess(y).getBiome(x, y - getComposite().getEngineForHeight(y).getMinHeight(), z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IrisBiome getCaveBiome(int x, int y, int z) {
|
public LoaderBiome getCaveBiome(int x, int y, int z) {
|
||||||
return getEngineAccess(y).getCaveBiome(x, z);
|
return getEngineAccess(y).getCaveBiome(x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -792,12 +792,12 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public KList<IrisBiome> getAllBiomes(String worldName) {
|
public KList<LoaderBiome> getAllBiomes(String worldName) {
|
||||||
if (getComposite() != null) {
|
if (getComposite() != null) {
|
||||||
return getComposite().getAllBiomes();
|
return getComposite().getAllBiomes();
|
||||||
} else {
|
} else {
|
||||||
KMap<String, IrisBiome> v = new KMap<>();
|
KMap<String, LoaderBiome> v = new KMap<>();
|
||||||
IrisDimension dim = getDimension(worldName);
|
LoaderDimension dim = getDimension(worldName);
|
||||||
dim.getAllAnyBiomes().forEach((i) -> v.put(i.getLoadKey(), i));
|
dim.getAllAnyBiomes().forEach((i) -> v.put(i.getLoadKey(), i));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -23,9 +23,9 @@ import com.volmit.iris.core.project.loader.IrisData;
|
|||||||
import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
|
import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
|
||||||
import com.volmit.iris.engine.data.DataProvider;
|
import com.volmit.iris.engine.data.DataProvider;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.engine.object.IrisPosition;
|
import com.volmit.iris.engine.object.basic.IrisPosition;
|
||||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
@ -39,7 +39,7 @@ import org.bukkit.generator.BlockPopulator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface EngineCompound extends Listener, Hotloadable, DataProvider {
|
public interface EngineCompound extends Listener, Hotloadable, DataProvider {
|
||||||
IrisDimension getRootDimension();
|
LoaderDimension getRootDimension();
|
||||||
|
|
||||||
void generate(int x, int z, Hunk<BlockData> blocks, Hunk<BlockData> postblocks, Hunk<Biome> biomes, boolean multicore);
|
void generate(int x, int z, Hunk<BlockData> blocks, Hunk<BlockData> postblocks, Hunk<Biome> biomes, boolean multicore);
|
||||||
|
|
||||||
@ -133,10 +133,10 @@ public interface EngineCompound extends Listener, Hotloadable, DataProvider {
|
|||||||
|
|
||||||
Engine getDefaultEngine();
|
Engine getDefaultEngine();
|
||||||
|
|
||||||
default KList<IrisBiome> getAllBiomes() {
|
default KList<LoaderBiome> getAllBiomes() {
|
||||||
KMap<String, IrisBiome> v = new KMap<>();
|
KMap<String, LoaderBiome> v = new KMap<>();
|
||||||
|
|
||||||
IrisDimension dim = getRootDimension();
|
LoaderDimension dim = getRootDimension();
|
||||||
dim.getAllBiomes(this).forEach((i) -> v.put(i.getLoadKey(), i));
|
dim.getAllBiomes(this).forEach((i) -> v.put(i.getLoadKey(), i));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -20,7 +20,7 @@ package com.volmit.iris.engine.framework;
|
|||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.object.IrisPosition;
|
import com.volmit.iris.engine.object.basic.IrisPosition;
|
||||||
import com.volmit.iris.util.io.IO;
|
import com.volmit.iris.util.io.IO;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -20,17 +20,17 @@ package com.volmit.iris.engine.framework;
|
|||||||
|
|
||||||
import com.volmit.iris.engine.data.B;
|
import com.volmit.iris.engine.data.B;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
public interface EngineDecorator extends EngineComponent {
|
public interface EngineDecorator extends EngineComponent {
|
||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
void decorate(int x, int z, int realX, int realX1, int realX_1, int realZ, int realZ1, int realZ_1, Hunk<BlockData> data, IrisBiome biome, int height, int max);
|
void decorate(int x, int z, int realX, int realX1, int realX_1, int realZ, int realZ1, int realZ_1, Hunk<BlockData> data, LoaderBiome biome, int height, int max);
|
||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
default void decorate(int x, int z, int realX, int realZ, Hunk<BlockData> data, IrisBiome biome, int height, int max) {
|
default void decorate(int x, int z, int realX, int realZ, Hunk<BlockData> data, LoaderBiome biome, int height, int max) {
|
||||||
decorate(x, z, realX, realX, realX, realZ, realZ, realZ, data, biome, height, max);
|
decorate(x, z, realX, realX, realX, realZ, realZ, realZ, data, biome, height, max);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,12 +21,24 @@ package com.volmit.iris.engine.framework;
|
|||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.IrisComplex;
|
import com.volmit.iris.engine.IrisComplex;
|
||||||
import com.volmit.iris.engine.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.data.B;
|
import com.volmit.iris.engine.data.B;
|
||||||
import com.volmit.iris.engine.data.DataProvider;
|
import com.volmit.iris.engine.data.DataProvider;
|
||||||
|
import com.volmit.iris.engine.object.basic.IrisPosition;
|
||||||
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
|
import com.volmit.iris.engine.object.biome.IrisBiomeMutation;
|
||||||
|
import com.volmit.iris.engine.object.deposits.IrisDepositGenerator;
|
||||||
|
import com.volmit.iris.engine.object.feature.IrisFeature;
|
||||||
|
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
||||||
|
import com.volmit.iris.engine.object.feature.IrisFeaturePotential;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawStructure;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
|
||||||
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||||
|
import com.volmit.iris.engine.object.objects.IrisObjectScale;
|
||||||
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.jigsaw.PlannedStructure;
|
import com.volmit.iris.engine.jigsaw.PlannedStructure;
|
||||||
import com.volmit.iris.engine.object.*;
|
|
||||||
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
||||||
import com.volmit.iris.engine.object.tile.TileData;
|
import com.volmit.iris.engine.object.tile.TileData;
|
||||||
import com.volmit.iris.engine.parallax.ParallaxAccess;
|
import com.volmit.iris.engine.parallax.ParallaxAccess;
|
||||||
@ -78,8 +90,8 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
return getEngine().getFramework().getComplex();
|
return getEngine().getFramework().getComplex();
|
||||||
}
|
}
|
||||||
|
|
||||||
default KList<IrisRegion> getAllRegions() {
|
default KList<LoaderRegion> getAllRegions() {
|
||||||
KList<IrisRegion> r = new KList<>();
|
KList<LoaderRegion> r = new KList<>();
|
||||||
|
|
||||||
for (String i : getEngine().getDimension().getRegions()) {
|
for (String i : getEngine().getDimension().getRegions()) {
|
||||||
r.add(getEngine().getData().getRegionLoader().load(i));
|
r.add(getEngine().getData().getRegionLoader().load(i));
|
||||||
@ -96,10 +108,10 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
default KList<IrisBiome> getAllBiomes() {
|
default KList<LoaderBiome> getAllBiomes() {
|
||||||
KList<IrisBiome> r = new KList<>();
|
KList<LoaderBiome> r = new KList<>();
|
||||||
|
|
||||||
for (IrisRegion i : getAllRegions()) {
|
for (LoaderRegion i : getAllRegions()) {
|
||||||
r.addAll(i.getAllBiomes(this));
|
r.addAll(i.getAllBiomes(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -287,8 +299,8 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
getParallaxAccess().setFeatureGenerated(xx, zz);
|
getParallaxAccess().setFeatureGenerated(xx, zz);
|
||||||
burst.queue(() -> {
|
burst.queue(() -> {
|
||||||
RNG rng = new RNG(Cache.key(xx, zz) + getEngine().getTarget().getWorld().seed());
|
RNG rng = new RNG(Cache.key(xx, zz) + getEngine().getTarget().getWorld().seed());
|
||||||
IrisRegion region = getComplex().getRegionStream().get(xxx, zzz);
|
LoaderRegion region = getComplex().getRegionStream().get(xxx, zzz);
|
||||||
IrisBiome biome = getComplex().getTrueBiomeStreamNoFeatures().get(xxx, zzz);
|
LoaderBiome biome = getComplex().getTrueBiomeStreamNoFeatures().get(xxx, zzz);
|
||||||
generateParallaxFeatures(rng, xx, zz, region, biome);
|
generateParallaxFeatures(rng, xx, zz, region, biome);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -349,8 +361,8 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
int xx = x << 4;
|
int xx = x << 4;
|
||||||
int zz = z << 4;
|
int zz = z << 4;
|
||||||
RNG rng = new RNG(Cache.key(x, z)).nextParallelRNG(getEngine().getTarget().getWorld().seed());
|
RNG rng = new RNG(Cache.key(x, z)).nextParallelRNG(getEngine().getTarget().getWorld().seed());
|
||||||
IrisRegion region = getComplex().getRegionStream().get(xx + 8, zz + 8);
|
LoaderRegion region = getComplex().getRegionStream().get(xx + 8, zz + 8);
|
||||||
IrisBiome biome = getComplex().getTrueBiomeStreamNoFeatures().get(xx + 8, zz + 8);
|
LoaderBiome biome = getComplex().getTrueBiomeStreamNoFeatures().get(xx + 8, zz + 8);
|
||||||
after.addAll(generateParallaxJigsaw(rng, x, z, biome, region));
|
after.addAll(generateParallaxJigsaw(rng, x, z, biome, region));
|
||||||
generateParallaxSurface(rng, x, z, biome, region, true);
|
generateParallaxSurface(rng, x, z, biome, region, true);
|
||||||
generateParallaxMutations(rng, x, z, true);
|
generateParallaxMutations(rng, x, z, true);
|
||||||
@ -368,14 +380,14 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
int zz = z << 4;
|
int zz = z << 4;
|
||||||
getParallaxAccess().setParallaxGenerated(x, z);
|
getParallaxAccess().setParallaxGenerated(x, z);
|
||||||
RNG rng = new RNG(Cache.key(x, z)).nextParallelRNG(getEngine().getTarget().getWorld().seed());
|
RNG rng = new RNG(Cache.key(x, z)).nextParallelRNG(getEngine().getTarget().getWorld().seed());
|
||||||
IrisBiome biome = getComplex().getTrueBiomeStreamNoFeatures().get(xx + 8, zz + 8);
|
LoaderBiome biome = getComplex().getTrueBiomeStreamNoFeatures().get(xx + 8, zz + 8);
|
||||||
IrisRegion region = getComplex().getRegionStream().get(xx + 8, zz + 8);
|
LoaderRegion region = getComplex().getRegionStream().get(xx + 8, zz + 8);
|
||||||
generateParallaxSurface(rng, x, z, biome, region, false);
|
generateParallaxSurface(rng, x, z, biome, region, false);
|
||||||
generateParallaxMutations(rng, x, z, false);
|
generateParallaxMutations(rng, x, z, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ChunkCoordinates
|
@ChunkCoordinates
|
||||||
default void generateParallaxFeatures(RNG rng, int cx, int cz, IrisRegion region, IrisBiome biome) {
|
default void generateParallaxFeatures(RNG rng, int cx, int cz, LoaderRegion region, LoaderBiome biome) {
|
||||||
for (IrisFeaturePotential i : getEngine().getDimension().getFeatures()) {
|
for (IrisFeaturePotential i : getEngine().getDimension().getFeatures()) {
|
||||||
placeZone(rng, cx, cz, i);
|
placeZone(rng, cx, cz, i);
|
||||||
}
|
}
|
||||||
@ -403,7 +415,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
generateParallaxLayer(x, z, false);
|
generateParallaxLayer(x, z, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
default KList<Runnable> placeStructure(IrisPosition position, IrisJigsawStructure structure, RNG rng) {
|
default KList<Runnable> placeStructure(IrisPosition position, LoaderJigsawStructure structure, RNG rng) {
|
||||||
KList<Runnable> placeAfter = new KList<>();
|
KList<Runnable> placeAfter = new KList<>();
|
||||||
|
|
||||||
if (structure == null) {
|
if (structure == null) {
|
||||||
@ -423,7 +435,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
return placeAfter;
|
return placeAfter;
|
||||||
}
|
}
|
||||||
|
|
||||||
default KList<Runnable> generateParallaxJigsaw(RNG rng, int x, int z, IrisBiome biome, IrisRegion region) {
|
default KList<Runnable> generateParallaxJigsaw(RNG rng, int x, int z, LoaderBiome biome, LoaderRegion region) {
|
||||||
KList<Runnable> placeAfter = new KList<>();
|
KList<Runnable> placeAfter = new KList<>();
|
||||||
|
|
||||||
if (getEngine().getDimension().isPlaceObjects()) {
|
if (getEngine().getDimension().isPlaceObjects()) {
|
||||||
@ -435,7 +447,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
if (poss != null) {
|
if (poss != null) {
|
||||||
for (Position2 pos : poss) {
|
for (Position2 pos : poss) {
|
||||||
if (x == pos.getX() >> 4 && z == pos.getZ() >> 4) {
|
if (x == pos.getX() >> 4 && z == pos.getZ() >> 4) {
|
||||||
IrisJigsawStructure structure = getData().getJigsawStructureLoader().load(getEngine().getDimension().getStronghold());
|
LoaderJigsawStructure structure = getData().getJigsawStructureLoader().load(getEngine().getDimension().getStronghold());
|
||||||
placeAfter.addAll(placeStructure(pos.toIris(), structure, rng));
|
placeAfter.addAll(placeStructure(pos.toIris(), structure, rng));
|
||||||
placed = true;
|
placed = true;
|
||||||
}
|
}
|
||||||
@ -447,7 +459,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
for (IrisJigsawStructurePlacement i : biome.getJigsawStructures()) {
|
for (IrisJigsawStructurePlacement i : biome.getJigsawStructures()) {
|
||||||
if (rng.nextInt(i.getRarity()) == 0) {
|
if (rng.nextInt(i.getRarity()) == 0) {
|
||||||
IrisPosition position = new IrisPosition((x << 4) + rng.nextInt(15), 0, (z << 4) + rng.nextInt(15));
|
IrisPosition position = new IrisPosition((x << 4) + rng.nextInt(15), 0, (z << 4) + rng.nextInt(15));
|
||||||
IrisJigsawStructure structure = getData().getJigsawStructureLoader().load(i.getStructure());
|
LoaderJigsawStructure structure = getData().getJigsawStructureLoader().load(i.getStructure());
|
||||||
placeAfter.addAll(placeStructure(position, structure, rng));
|
placeAfter.addAll(placeStructure(position, structure, rng));
|
||||||
placed = true;
|
placed = true;
|
||||||
}
|
}
|
||||||
@ -458,7 +470,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
for (IrisJigsawStructurePlacement i : region.getJigsawStructures()) {
|
for (IrisJigsawStructurePlacement i : region.getJigsawStructures()) {
|
||||||
if (rng.nextInt(i.getRarity()) == 0) {
|
if (rng.nextInt(i.getRarity()) == 0) {
|
||||||
IrisPosition position = new IrisPosition((x << 4) + rng.nextInt(15), 0, (z << 4) + rng.nextInt(15));
|
IrisPosition position = new IrisPosition((x << 4) + rng.nextInt(15), 0, (z << 4) + rng.nextInt(15));
|
||||||
IrisJigsawStructure structure = getData().getJigsawStructureLoader().load(i.getStructure());
|
LoaderJigsawStructure structure = getData().getJigsawStructureLoader().load(i.getStructure());
|
||||||
placeAfter.addAll(placeStructure(position, structure, rng));
|
placeAfter.addAll(placeStructure(position, structure, rng));
|
||||||
placed = true;
|
placed = true;
|
||||||
}
|
}
|
||||||
@ -469,7 +481,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
for (IrisJigsawStructurePlacement i : getEngine().getDimension().getJigsawStructures()) {
|
for (IrisJigsawStructurePlacement i : getEngine().getDimension().getJigsawStructures()) {
|
||||||
if (rng.nextInt(i.getRarity()) == 0) {
|
if (rng.nextInt(i.getRarity()) == 0) {
|
||||||
IrisPosition position = new IrisPosition((x << 4) + rng.nextInt(15), 0, (z << 4) + rng.nextInt(15));
|
IrisPosition position = new IrisPosition((x << 4) + rng.nextInt(15), 0, (z << 4) + rng.nextInt(15));
|
||||||
IrisJigsawStructure structure = getData().getJigsawStructureLoader().load(i.getStructure());
|
LoaderJigsawStructure structure = getData().getJigsawStructureLoader().load(i.getStructure());
|
||||||
placeAfter.addAll(placeStructure(position, structure, rng));
|
placeAfter.addAll(placeStructure(position, structure, rng));
|
||||||
placed = true;
|
placed = true;
|
||||||
}
|
}
|
||||||
@ -480,7 +492,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
return placeAfter;
|
return placeAfter;
|
||||||
}
|
}
|
||||||
|
|
||||||
default void generateParallaxSurface(RNG rng, int x, int z, IrisBiome biome, IrisRegion region, boolean useFeatures) {
|
default void generateParallaxSurface(RNG rng, int x, int z, LoaderBiome biome, LoaderRegion region, boolean useFeatures) {
|
||||||
|
|
||||||
for (IrisObjectPlacement i : biome.getSurfaceObjects()) {
|
for (IrisObjectPlacement i : biome.getSurfaceObjects()) {
|
||||||
if (i.usesFeatures() != useFeatures) {
|
if (i.usesFeatures() != useFeatures) {
|
||||||
@ -527,8 +539,8 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
searching:
|
searching:
|
||||||
for (IrisBiomeMutation k : getEngine().getDimension().getMutations()) {
|
for (IrisBiomeMutation k : getEngine().getDimension().getMutations()) {
|
||||||
for (int l = 0; l < k.getChecks(); l++) {
|
for (int l = 0; l < k.getChecks(); l++) {
|
||||||
IrisBiome sa = getComplex().getTrueBiomeStreamNoFeatures().get(((x * 16) + rng.nextInt(16)) + rng.i(-k.getRadius(), k.getRadius()), ((z * 16) + rng.nextInt(16)) + rng.i(-k.getRadius(), k.getRadius()));
|
LoaderBiome sa = getComplex().getTrueBiomeStreamNoFeatures().get(((x * 16) + rng.nextInt(16)) + rng.i(-k.getRadius(), k.getRadius()), ((z * 16) + rng.nextInt(16)) + rng.i(-k.getRadius(), k.getRadius()));
|
||||||
IrisBiome sb = getComplex().getTrueBiomeStreamNoFeatures().get(((x * 16) + rng.nextInt(16)) + rng.i(-k.getRadius(), k.getRadius()), ((z * 16) + rng.nextInt(16)) + rng.i(-k.getRadius(), k.getRadius()));
|
LoaderBiome sb = getComplex().getTrueBiomeStreamNoFeatures().get(((x * 16) + rng.nextInt(16)) + rng.i(-k.getRadius(), k.getRadius()), ((z * 16) + rng.nextInt(16)) + rng.i(-k.getRadius(), k.getRadius()));
|
||||||
|
|
||||||
if (sa.getLoadKey().equals(sb.getLoadKey())) {
|
if (sa.getLoadKey().equals(sb.getLoadKey())) {
|
||||||
continue;
|
continue;
|
||||||
@ -553,7 +565,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
place(rng, x, -1, z, objectPlacement);
|
place(rng, x, -1, z, objectPlacement);
|
||||||
}
|
}
|
||||||
|
|
||||||
default void placePiece(RNG rng, int xx, int forceY, int zz, IrisObject v, IrisObjectPlacement p) {
|
default void placePiece(RNG rng, int xx, int forceY, int zz, LoaderObject v, IrisObjectPlacement p) {
|
||||||
int id = rng.i(0, Integer.MAX_VALUE);
|
int id = rng.i(0, Integer.MAX_VALUE);
|
||||||
int maxf = 10000;
|
int maxf = 10000;
|
||||||
AtomicBoolean pl = new AtomicBoolean(false);
|
AtomicBoolean pl = new AtomicBoolean(false);
|
||||||
@ -600,7 +612,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
default void place(RNG rng, int x, int forceY, int z, IrisObjectPlacement objectPlacement) {
|
default void place(RNG rng, int x, int forceY, int z, IrisObjectPlacement objectPlacement) {
|
||||||
placing:
|
placing:
|
||||||
for (int i = 0; i < objectPlacement.getDensity(); i++) {
|
for (int i = 0; i < objectPlacement.getDensity(); i++) {
|
||||||
IrisObject v = objectPlacement.getScale().get(rng, objectPlacement.getObject(getComplex(), rng));
|
LoaderObject v = objectPlacement.getScale().get(rng, objectPlacement.getObject(getComplex(), rng));
|
||||||
if (v == null) {
|
if (v == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -644,7 +656,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
default void updateParallaxChunkObjectData(int minY, int maxY, int x, int z, IrisObject v) {
|
default void updateParallaxChunkObjectData(int minY, int maxY, int x, int z, LoaderObject v) {
|
||||||
ParallaxChunkMeta meta = getParallaxAccess().getMetaRW(x >> 4, z >> 4);
|
ParallaxChunkMeta meta = getParallaxAccess().getMetaRW(x >> 4, z >> 4);
|
||||||
meta.setObjects(true);
|
meta.setObjects(true);
|
||||||
meta.setMaxObject(Math.max(maxY, meta.getMaxObject()));
|
meta.setMaxObject(Math.max(maxY, meta.getMaxObject()));
|
||||||
@ -664,10 +676,10 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
int z = zg.get();
|
int z = zg.get();
|
||||||
|
|
||||||
if (getEngine().getDimension().isPlaceObjects()) {
|
if (getEngine().getDimension().isPlaceObjects()) {
|
||||||
KList<IrisRegion> r = getAllRegions();
|
KList<LoaderRegion> r = getAllRegions();
|
||||||
KList<IrisBiome> b = getAllBiomes();
|
KList<LoaderBiome> b = getAllBiomes();
|
||||||
|
|
||||||
for (IrisBiome i : b) {
|
for (LoaderBiome i : b) {
|
||||||
for (IrisObjectPlacement j : i.getObjects()) {
|
for (IrisObjectPlacement j : i.getObjects()) {
|
||||||
if (j.getScale().canScaleBeyond()) {
|
if (j.getScale().canScaleBeyond()) {
|
||||||
scalars.put(j.getScale(), j.getPlace());
|
scalars.put(j.getScale(), j.getPlace());
|
||||||
@ -681,7 +693,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IrisRegion i : r) {
|
for (LoaderRegion i : r) {
|
||||||
for (IrisObjectPlacement j : i.getObjects()) {
|
for (IrisObjectPlacement j : i.getObjects()) {
|
||||||
if (j.getScale().canScaleBeyond()) {
|
if (j.getScale().canScaleBeyond()) {
|
||||||
scalars.put(j.getScale(), j.getPlace());
|
scalars.put(j.getScale(), j.getPlace());
|
||||||
@ -721,7 +733,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return IrisObject.sampleSize(getData().getObjectLoader().findFile(i));
|
return LoaderObject.sampleSize(getData().getObjectLoader().findFile(i));
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
Iris.reportError(ex);
|
Iris.reportError(ex);
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
@ -761,7 +773,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return IrisObject.sampleSize(getData().getObjectLoader().findFile(j));
|
return LoaderObject.sampleSize(getData().getObjectLoader().findFile(j));
|
||||||
} catch (IOException ioException) {
|
} catch (IOException ioException) {
|
||||||
Iris.reportError(ioException);
|
Iris.reportError(ioException);
|
||||||
ioException.printStackTrace();
|
ioException.printStackTrace();
|
||||||
@ -802,7 +814,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
z = Math.max(max, z);
|
z = Math.max(max, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IrisRegion v : r) {
|
for (LoaderRegion v : r) {
|
||||||
for (IrisDepositGenerator i : v.getDeposits()) {
|
for (IrisDepositGenerator i : v.getDeposits()) {
|
||||||
int max = i.getMaxDimension();
|
int max = i.getMaxDimension();
|
||||||
x = Math.max(max, x);
|
x = Math.max(max, x);
|
||||||
@ -810,7 +822,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IrisBiome v : b) {
|
for (LoaderBiome v : b) {
|
||||||
for (IrisDepositGenerator i : v.getDeposits()) {
|
for (IrisDepositGenerator i : v.getDeposits()) {
|
||||||
int max = i.getMaxDimension();
|
int max = i.getMaxDimension();
|
||||||
x = Math.max(max, x);
|
x = Math.max(max, x);
|
||||||
|
@ -19,9 +19,9 @@
|
|||||||
package com.volmit.iris.engine.framework;
|
package com.volmit.iris.engine.framework;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisEffect;
|
import com.volmit.iris.engine.object.meta.IrisEffect;
|
||||||
import com.volmit.iris.engine.object.IrisRegion;
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
import com.volmit.iris.util.math.M;
|
import com.volmit.iris.util.math.M;
|
||||||
import com.volmit.iris.util.scheduling.J;
|
import com.volmit.iris.util.scheduling.J;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -32,8 +32,8 @@ import org.bukkit.entity.Player;
|
|||||||
public class EnginePlayer {
|
public class EnginePlayer {
|
||||||
private final Engine engine;
|
private final Engine engine;
|
||||||
private final Player player;
|
private final Player player;
|
||||||
private IrisBiome biome;
|
private LoaderBiome biome;
|
||||||
private IrisRegion region;
|
private LoaderRegion region;
|
||||||
private Location lastLocation;
|
private Location lastLocation;
|
||||||
private long lastSample;
|
private long lastSample;
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ package com.volmit.iris.engine.framework;
|
|||||||
|
|
||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||||
import com.volmit.iris.engine.parallax.ParallaxWorld;
|
import com.volmit.iris.engine.parallax.ParallaxWorld;
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
@ -32,14 +32,14 @@ import java.io.File;
|
|||||||
public class EngineTarget {
|
public class EngineTarget {
|
||||||
private final MultiBurst parallaxBurster;
|
private final MultiBurst parallaxBurster;
|
||||||
private final MultiBurst burster;
|
private final MultiBurst burster;
|
||||||
private final IrisDimension dimension;
|
private final LoaderDimension dimension;
|
||||||
private IrisWorld world;
|
private IrisWorld world;
|
||||||
private final int height;
|
private final int height;
|
||||||
private final IrisData data;
|
private final IrisData data;
|
||||||
private final ParallaxWorld parallaxWorld;
|
private final ParallaxWorld parallaxWorld;
|
||||||
private final boolean inverted;
|
private final boolean inverted;
|
||||||
|
|
||||||
public EngineTarget(IrisWorld world, IrisDimension dimension, IrisData data, int height, boolean inverted, int threads) {
|
public EngineTarget(IrisWorld world, LoaderDimension dimension, IrisData data, int height, boolean inverted, int threads) {
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.height = height;
|
this.height = height;
|
||||||
this.dimension = dimension;
|
this.dimension = dimension;
|
||||||
@ -50,7 +50,7 @@ public class EngineTarget {
|
|||||||
this.parallaxWorld = new ParallaxWorld(parallaxBurster, 256, new File(world.worldFolder(), "iris/" + dimension.getLoadKey() + "/parallax"));
|
this.parallaxWorld = new ParallaxWorld(parallaxBurster, 256, new File(world.worldFolder(), "iris/" + dimension.getLoadKey() + "/parallax"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public EngineTarget(IrisWorld world, IrisDimension dimension, IrisData data, int height, int threads) {
|
public EngineTarget(IrisWorld world, LoaderDimension dimension, IrisData data, int height, int threads) {
|
||||||
this(world, dimension, data, height, false, threads);
|
this(world, dimension, data, height, false, threads);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,25 +21,25 @@ package com.volmit.iris.engine.framework;
|
|||||||
import com.volmit.iris.core.gui.components.Renderer;
|
import com.volmit.iris.core.gui.components.Renderer;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.data.DataProvider;
|
import com.volmit.iris.engine.data.DataProvider;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisObjectPlacement;
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||||
import com.volmit.iris.engine.object.IrisRegion;
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
import com.volmit.iris.engine.parallax.ParallaxAccess;
|
import com.volmit.iris.engine.parallax.ParallaxAccess;
|
||||||
|
|
||||||
public interface GeneratorAccess extends DataProvider, Renderer {
|
public interface GeneratorAccess extends DataProvider, Renderer {
|
||||||
IrisRegion getRegion(int x, int z);
|
LoaderRegion getRegion(int x, int z);
|
||||||
|
|
||||||
ParallaxAccess getParallaxAccess();
|
ParallaxAccess getParallaxAccess();
|
||||||
|
|
||||||
IrisData getData();
|
IrisData getData();
|
||||||
|
|
||||||
IrisBiome getCaveBiome(int x, int z);
|
LoaderBiome getCaveBiome(int x, int z);
|
||||||
|
|
||||||
IrisBiome getSurfaceBiome(int x, int z);
|
LoaderBiome getSurfaceBiome(int x, int z);
|
||||||
|
|
||||||
int getHeight(int x, int z);
|
int getHeight(int x, int z);
|
||||||
|
|
||||||
default IrisBiome getBiome(int x, int y, int z) {
|
default LoaderBiome getBiome(int x, int y, int z) {
|
||||||
if (y <= getHeight(x, z) - 2) {
|
if (y <= getHeight(x, z) - 2) {
|
||||||
return getCaveBiome(x, z);
|
return getCaveBiome(x, z);
|
||||||
}
|
}
|
||||||
@ -57,7 +57,7 @@ public interface GeneratorAccess extends DataProvider, Renderer {
|
|||||||
String[] v = objectAt.split("\\Q@\\E");
|
String[] v = objectAt.split("\\Q@\\E");
|
||||||
String object = v[0];
|
String object = v[0];
|
||||||
int id = Integer.parseInt(v[1]);
|
int id = Integer.parseInt(v[1]);
|
||||||
IrisRegion region = getRegion(x, z);
|
LoaderRegion region = getRegion(x, z);
|
||||||
|
|
||||||
for (IrisObjectPlacement i : region.getObjects()) {
|
for (IrisObjectPlacement i : region.getObjects()) {
|
||||||
if (i.getPlace().contains(object)) {
|
if (i.getPlace().contains(object)) {
|
||||||
@ -65,7 +65,7 @@ public interface GeneratorAccess extends DataProvider, Renderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisBiome biome = getBiome(x, y, z);
|
LoaderBiome biome = getBiome(x, y, z);
|
||||||
|
|
||||||
for (IrisObjectPlacement i : biome.getObjects()) {
|
for (IrisObjectPlacement i : biome.getObjects()) {
|
||||||
if (i.getPlace().contains(object)) {
|
if (i.getPlace().contains(object)) {
|
||||||
|
@ -23,9 +23,9 @@ import com.volmit.iris.core.pregenerator.PregenListener;
|
|||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.data.DataProvider;
|
import com.volmit.iris.engine.data.DataProvider;
|
||||||
import com.volmit.iris.engine.data.mca.NBTWorld;
|
import com.volmit.iris.engine.data.mca.NBTWorld;
|
||||||
import com.volmit.iris.engine.headless.HeadlessGenerator;
|
import com.volmit.iris.engine.framework.headless.HeadlessGenerator;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisRegion;
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
@ -71,29 +71,29 @@ public interface IrisAccess extends Hotloadable, DataProvider {
|
|||||||
* @param l the location
|
* @param l the location
|
||||||
* @return the biome
|
* @return the biome
|
||||||
*/
|
*/
|
||||||
default IrisBiome getBiome(Location l) {
|
default LoaderBiome getBiome(Location l) {
|
||||||
return getBiome(l.toVector());
|
return getBiome(l.toVector());
|
||||||
}
|
}
|
||||||
|
|
||||||
default IrisRegion getRegion(int x, int y, int z) {
|
default LoaderRegion getRegion(int x, int y, int z) {
|
||||||
return getEngineAccess(y).getRegion(x, z);
|
return getEngineAccess(y).getRegion(x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
default IrisRegion getRegion(Location l) {
|
default LoaderRegion getRegion(Location l) {
|
||||||
return getRegion(l.getBlockX(), l.getBlockY(), l.getBlockZ());
|
return getRegion(l.getBlockX(), l.getBlockY(), l.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
default IrisBiome getBiome(Vector l) {
|
default LoaderBiome getBiome(Vector l) {
|
||||||
return getBiome(l.getBlockX(), l.getBlockY(), l.getBlockZ());
|
return getBiome(l.getBlockX(), l.getBlockY(), l.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisBiome getBiome(int x, int y, int z);
|
LoaderBiome getBiome(int x, int y, int z);
|
||||||
|
|
||||||
IrisBiome getCaveBiome(int x, int y, int z);
|
LoaderBiome getCaveBiome(int x, int y, int z);
|
||||||
|
|
||||||
IrisBiome getBiome(int x, int z);
|
LoaderBiome getBiome(int x, int z);
|
||||||
|
|
||||||
IrisBiome getCaveBiome(int x, int z);
|
LoaderBiome getCaveBiome(int x, int z);
|
||||||
|
|
||||||
GeneratorAccess getEngineAccess(int y);
|
GeneratorAccess getEngineAccess(int y);
|
||||||
|
|
||||||
@ -117,7 +117,7 @@ public interface IrisAccess extends Hotloadable, DataProvider {
|
|||||||
|
|
||||||
boolean isStudio();
|
boolean isStudio();
|
||||||
|
|
||||||
default Location lookForBiome(IrisBiome biome, long timeout, Consumer<Integer> triesc) {
|
default Location lookForBiome(LoaderBiome biome, long timeout, Consumer<Integer> triesc) {
|
||||||
if (!getCompound().getWorld().hasRealWorld()) {
|
if (!getCompound().getWorld().hasRealWorld()) {
|
||||||
Iris.error("Cannot GOTO without a bound world (headless mode)");
|
Iris.error("Cannot GOTO without a bound world (headless mode)");
|
||||||
return null;
|
return null;
|
||||||
@ -146,7 +146,7 @@ public interface IrisAccess extends Hotloadable, DataProvider {
|
|||||||
J.a(() -> {
|
J.a(() -> {
|
||||||
try {
|
try {
|
||||||
Engine e;
|
Engine e;
|
||||||
IrisBiome b;
|
LoaderBiome b;
|
||||||
int x, z;
|
int x, z;
|
||||||
|
|
||||||
while (!found.get() && running.get()) {
|
while (!found.get() && running.get()) {
|
||||||
@ -198,7 +198,7 @@ public interface IrisAccess extends Hotloadable, DataProvider {
|
|||||||
return location.get();
|
return location.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
default Location lookForRegion(IrisRegion reg, long timeout, Consumer<Integer> triesc) {
|
default Location lookForRegion(LoaderRegion reg, long timeout, Consumer<Integer> triesc) {
|
||||||
if (!getCompound().getWorld().hasRealWorld()) {
|
if (!getCompound().getWorld().hasRealWorld()) {
|
||||||
Iris.error("Cannot GOTO without a bound world (headless mode)");
|
Iris.error("Cannot GOTO without a bound world (headless mode)");
|
||||||
return null;
|
return null;
|
||||||
@ -227,7 +227,7 @@ public interface IrisAccess extends Hotloadable, DataProvider {
|
|||||||
for (int i = 0; i < cpus; i++) {
|
for (int i = 0; i < cpus; i++) {
|
||||||
J.a(() -> {
|
J.a(() -> {
|
||||||
Engine e;
|
Engine e;
|
||||||
IrisRegion b;
|
LoaderRegion b;
|
||||||
int x, z;
|
int x, z;
|
||||||
|
|
||||||
while (!found.get() && running.get()) {
|
while (!found.get() && running.get()) {
|
||||||
|
@ -18,9 +18,9 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.framework;
|
package com.volmit.iris.engine.framework;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.InventorySlotType;
|
import com.volmit.iris.engine.object.meta.InventorySlotType;
|
||||||
import com.volmit.iris.engine.object.IrisLootReference;
|
import com.volmit.iris.engine.object.loot.IrisLootReference;
|
||||||
import com.volmit.iris.engine.object.IrisLootTable;
|
import com.volmit.iris.engine.object.loot.LoaderLootTable;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
@ -29,9 +29,9 @@ import org.bukkit.inventory.Inventory;
|
|||||||
public interface LootProvider {
|
public interface LootProvider {
|
||||||
void scramble(Inventory inventory, RNG rng);
|
void scramble(Inventory inventory, RNG rng);
|
||||||
|
|
||||||
void injectTables(KList<IrisLootTable> list, IrisLootReference r);
|
void injectTables(KList<LoaderLootTable> list, IrisLootReference r);
|
||||||
|
|
||||||
KList<IrisLootTable> getLootTables(RNG rng, Block b);
|
KList<LoaderLootTable> getLootTables(RNG rng, Block b);
|
||||||
|
|
||||||
void addItems(boolean debug, Inventory inv, RNG rng, KList<IrisLootTable> tables, InventorySlotType slot, int x, int y, int z, int mgf);
|
void addItems(boolean debug, Inventory inv, RNG rng, KList<LoaderLootTable> tables, InventorySlotType slot, int x, int y, int z, int mgf);
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.framework;
|
package com.volmit.iris.engine.framework;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.IrisObject;
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
import com.volmit.iris.engine.object.IrisObjectPlacement;
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ public class PlacedObject {
|
|||||||
@Nullable
|
@Nullable
|
||||||
private IrisObjectPlacement placement;
|
private IrisObjectPlacement placement;
|
||||||
@Nullable
|
@Nullable
|
||||||
private IrisObject object;
|
private LoaderObject object;
|
||||||
private int id;
|
private int id;
|
||||||
private int xx;
|
private int xx;
|
||||||
private int zz;
|
private int zz;
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.headless;
|
package com.volmit.iris.engine.framework.headless;
|
||||||
|
|
||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.core.pregenerator.PregenListener;
|
import com.volmit.iris.core.pregenerator.PregenListener;
|
@ -16,13 +16,13 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.headless;
|
package com.volmit.iris.engine.framework.headless;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.framework.EngineCompositeGenerator;
|
import com.volmit.iris.engine.framework.EngineCompositeGenerator;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.LoaderDimension;
|
||||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -35,16 +35,16 @@ import java.io.File;
|
|||||||
@Data
|
@Data
|
||||||
@SuppressWarnings("ResultOfMethodCallIgnored")
|
@SuppressWarnings("ResultOfMethodCallIgnored")
|
||||||
public class HeadlessWorld {
|
public class HeadlessWorld {
|
||||||
private final IrisDimension dimension;
|
private final LoaderDimension dimension;
|
||||||
private final String worldName;
|
private final String worldName;
|
||||||
private final IrisWorld world;
|
private final IrisWorld world;
|
||||||
private boolean studio = false;
|
private boolean studio = false;
|
||||||
|
|
||||||
public HeadlessWorld(String worldName, IrisDimension dimension, long seed) {
|
public HeadlessWorld(String worldName, LoaderDimension dimension, long seed) {
|
||||||
this(worldName, dimension, seed, false);
|
this(worldName, dimension, seed, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public HeadlessWorld(String worldName, IrisDimension dimension, long seed, boolean studio) {
|
public HeadlessWorld(String worldName, LoaderDimension dimension, long seed, boolean studio) {
|
||||||
this.worldName = worldName;
|
this.worldName = worldName;
|
||||||
this.dimension = dimension;
|
this.dimension = dimension;
|
||||||
this.studio = studio;
|
this.studio = studio;
|
@ -19,7 +19,7 @@
|
|||||||
package com.volmit.iris.engine.framework.placer;
|
package com.volmit.iris.engine.framework.placer;
|
||||||
|
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.object.IrisObjectPlacement;
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||||
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
||||||
import com.volmit.iris.engine.object.tile.TileData;
|
import com.volmit.iris.engine.object.tile.TileData;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
|
@ -22,8 +22,14 @@ import com.volmit.iris.core.project.loader.IrisData;
|
|||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.object.*;
|
import com.volmit.iris.engine.object.basic.IrisPosition;
|
||||||
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawPiece;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.IrisJigsawPieceConnector;
|
||||||
|
import com.volmit.iris.engine.object.loot.LoaderLootTable;
|
||||||
|
import com.volmit.iris.engine.object.meta.InventorySlotType;
|
||||||
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
|
import com.volmit.iris.engine.object.objects.IrisObjectRotation;
|
||||||
import com.volmit.iris.engine.object.tile.TileData;
|
import com.volmit.iris.engine.object.tile.TileData;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.math.AxisAlignedBB;
|
import com.volmit.iris.util.math.AxisAlignedBB;
|
||||||
@ -43,9 +49,9 @@ import org.bukkit.util.BlockVector;
|
|||||||
@Data
|
@Data
|
||||||
public class PlannedPiece {
|
public class PlannedPiece {
|
||||||
private IrisPosition position;
|
private IrisPosition position;
|
||||||
private IrisObject object;
|
private LoaderObject object;
|
||||||
private IrisObject ogObject;
|
private LoaderObject ogObject;
|
||||||
private IrisJigsawPiece piece;
|
private LoaderJigsawPiece piece;
|
||||||
private IrisObjectRotation rotation;
|
private IrisObjectRotation rotation;
|
||||||
private IrisData data;
|
private IrisData data;
|
||||||
private KList<IrisJigsawPieceConnector> connected;
|
private KList<IrisJigsawPieceConnector> connected;
|
||||||
@ -53,15 +59,15 @@ public class PlannedPiece {
|
|||||||
private AxisAlignedBB box;
|
private AxisAlignedBB box;
|
||||||
private PlannedStructure structure;
|
private PlannedStructure structure;
|
||||||
|
|
||||||
public PlannedPiece(PlannedStructure structure, IrisPosition position, IrisJigsawPiece piece) {
|
public PlannedPiece(PlannedStructure structure, IrisPosition position, LoaderJigsawPiece piece) {
|
||||||
this(structure, position, piece, 0, 0, 0);
|
this(structure, position, piece, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlannedPiece(PlannedStructure structure, IrisPosition position, IrisJigsawPiece piece, int rx, int ry, int rz) {
|
public PlannedPiece(PlannedStructure structure, IrisPosition position, LoaderJigsawPiece piece, int rx, int ry, int rz) {
|
||||||
this(structure, position, piece, IrisObjectRotation.of(rx * 90D, ry * 90D, rz * 90D));
|
this(structure, position, piece, IrisObjectRotation.of(rx * 90D, ry * 90D, rz * 90D));
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlannedPiece(PlannedStructure structure, IrisPosition position, IrisJigsawPiece piece, IrisObjectRotation rot) {
|
public PlannedPiece(PlannedStructure structure, IrisPosition position, LoaderJigsawPiece piece, IrisObjectRotation rot) {
|
||||||
this.structure = structure;
|
this.structure = structure;
|
||||||
this.position = position;
|
this.position = position;
|
||||||
this.data = piece.getLoader();
|
this.data = piece.getLoader();
|
||||||
@ -181,7 +187,7 @@ public class PlannedPiece {
|
|||||||
if (a != null && getPiece().getPlacementOptions().getLoot().isNotEmpty() &&
|
if (a != null && getPiece().getPlacementOptions().getLoot().isNotEmpty() &&
|
||||||
block.getState() instanceof InventoryHolder) {
|
block.getState() instanceof InventoryHolder) {
|
||||||
|
|
||||||
IrisLootTable table = getPiece().getPlacementOptions().getTable(block.getBlockData(), getData());
|
LoaderLootTable table = getPiece().getPlacementOptions().getTable(block.getBlockData(), getData());
|
||||||
if (table == null) return;
|
if (table == null) return;
|
||||||
Engine engine = a.getCompound().getEngineForHeight(y);
|
Engine engine = a.getCompound().getEngineForHeight(y);
|
||||||
engine.addItems(false, ((InventoryHolder) block.getState()).getInventory(),
|
engine.addItems(false, ((InventoryHolder) block.getState()).getInventory(),
|
||||||
|
@ -24,9 +24,16 @@ import com.volmit.iris.core.project.loader.IrisData;
|
|||||||
import com.volmit.iris.core.tools.IrisWorlds;
|
import com.volmit.iris.core.tools.IrisWorlds;
|
||||||
import com.volmit.iris.engine.framework.EngineParallaxManager;
|
import com.volmit.iris.engine.framework.EngineParallaxManager;
|
||||||
import com.volmit.iris.engine.framework.IrisAccess;
|
import com.volmit.iris.engine.framework.IrisAccess;
|
||||||
import com.volmit.iris.engine.interpolation.InterpolationMethod;
|
import com.volmit.iris.engine.object.basic.IrisPosition;
|
||||||
import com.volmit.iris.engine.object.*;
|
import com.volmit.iris.util.interpolation.InterpolationMethod;
|
||||||
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
||||||
|
import com.volmit.iris.engine.object.entity.LoaderEntity;
|
||||||
|
import com.volmit.iris.engine.object.feature.IrisFeature;
|
||||||
|
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawPiece;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.IrisJigsawPieceConnector;
|
||||||
|
import com.volmit.iris.engine.object.jigsaw.LoaderJigsawStructure;
|
||||||
|
import com.volmit.iris.engine.object.objects.*;
|
||||||
import com.volmit.iris.engine.parallax.ParallaxChunkMeta;
|
import com.volmit.iris.engine.parallax.ParallaxChunkMeta;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
@ -39,20 +46,20 @@ import org.bukkit.entity.Entity;
|
|||||||
@Data
|
@Data
|
||||||
public class PlannedStructure {
|
public class PlannedStructure {
|
||||||
private KList<PlannedPiece> pieces;
|
private KList<PlannedPiece> pieces;
|
||||||
private IrisJigsawStructure structure;
|
private LoaderJigsawStructure structure;
|
||||||
private IrisPosition position;
|
private IrisPosition position;
|
||||||
private IrisData data;
|
private IrisData data;
|
||||||
private RNG rng;
|
private RNG rng;
|
||||||
private boolean verbose;
|
private boolean verbose;
|
||||||
private boolean terminating;
|
private boolean terminating;
|
||||||
private static transient ConcurrentLinkedHashMap<String, IrisObject> objectRotationCache
|
private static transient ConcurrentLinkedHashMap<String, LoaderObject> objectRotationCache
|
||||||
= new ConcurrentLinkedHashMap.Builder<String, IrisObject>()
|
= new ConcurrentLinkedHashMap.Builder<String, LoaderObject>()
|
||||||
.initialCapacity(64)
|
.initialCapacity(64)
|
||||||
.maximumWeightedCapacity(1024)
|
.maximumWeightedCapacity(1024)
|
||||||
.concurrencyLevel(32)
|
.concurrencyLevel(32)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public PlannedStructure(IrisJigsawStructure structure, IrisPosition position, RNG rng) {
|
public PlannedStructure(LoaderJigsawStructure structure, IrisPosition position, RNG rng) {
|
||||||
terminating = false;
|
terminating = false;
|
||||||
verbose = true;
|
verbose = true;
|
||||||
this.pieces = new KList<>();
|
this.pieces = new KList<>();
|
||||||
@ -96,8 +103,8 @@ public class PlannedStructure {
|
|||||||
options.setMode(i.getPiece().getPlaceMode());
|
options.setMode(i.getPiece().getPlaceMode());
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisObject vo = i.getOgObject();
|
LoaderObject vo = i.getOgObject();
|
||||||
IrisObject v = i.getObject();
|
LoaderObject v = i.getObject();
|
||||||
int sx = (v.getW() / 2);
|
int sx = (v.getW() / 2);
|
||||||
int sz = (v.getD() / 2);
|
int sz = (v.getD() / 2);
|
||||||
int xx = i.getPosition().getX() + sx;
|
int xx = i.getPosition().getX() + sx;
|
||||||
@ -169,7 +176,7 @@ public class PlannedStructure {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
IrisPosition p = i.getWorldPosition(j).add(new IrisPosition(j.getDirection().toVector().multiply(2)));
|
IrisPosition p = i.getWorldPosition(j).add(new IrisPosition(j.getDirection().toVector().multiply(2)));
|
||||||
IrisEntity e = getData().getEntityLoader().load(j.getSpawnEntity());
|
LoaderEntity e = getData().getEntityLoader().load(j.getSpawnEntity());
|
||||||
|
|
||||||
if (a != null) {
|
if (a != null) {
|
||||||
Entity entity = e.spawn(a.getCompound().getEngineForHeight(p.getY()), new Location(world, p.getX() + 0.5, p.getY(), p.getZ() + 0.5), rng);
|
Entity entity = e.spawn(a.getCompound().getEngineForHeight(p.getY()), new Location(world, p.getX() + 0.5, p.getY(), p.getZ() + 0.5), rng);
|
||||||
@ -206,7 +213,7 @@ public class PlannedStructure {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean generateConnectorOutwards(PlannedPiece piece, IrisJigsawPieceConnector pieceConnector) {
|
private boolean generateConnectorOutwards(PlannedPiece piece, IrisJigsawPieceConnector pieceConnector) {
|
||||||
for (IrisJigsawPiece i : getShuffledPiecesFor(pieceConnector)) {
|
for (LoaderJigsawPiece i : getShuffledPiecesFor(pieceConnector)) {
|
||||||
if (generateRotatedPiece(piece, pieceConnector, i)) {
|
if (generateRotatedPiece(piece, pieceConnector, i)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -215,7 +222,7 @@ public class PlannedStructure {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean generateRotatedPiece(PlannedPiece piece, IrisJigsawPieceConnector pieceConnector, IrisJigsawPiece idea) {
|
private boolean generateRotatedPiece(PlannedPiece piece, IrisJigsawPieceConnector pieceConnector, LoaderJigsawPiece idea) {
|
||||||
if (!piece.getPiece().getPlacementOptions().getRotation().isEnabled()) {
|
if (!piece.getPiece().getPlacementOptions().getRotation().isEnabled()) {
|
||||||
if (generateRotatedPiece(piece, pieceConnector, idea, 0, 0, 0)) {
|
if (generateRotatedPiece(piece, pieceConnector, idea, 0, 0, 0)) {
|
||||||
return true;
|
return true;
|
||||||
@ -249,7 +256,7 @@ public class PlannedStructure {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean generateRotatedPiece(PlannedPiece piece, IrisJigsawPieceConnector pieceConnector, IrisJigsawPiece idea, IrisObjectRotation rotation) {
|
private boolean generateRotatedPiece(PlannedPiece piece, IrisJigsawPieceConnector pieceConnector, LoaderJigsawPiece idea, IrisObjectRotation rotation) {
|
||||||
if (!idea.getPlacementOptions().getRotation().isEnabled())
|
if (!idea.getPlacementOptions().getRotation().isEnabled())
|
||||||
rotation = piece.getRotation(); //Inherit parent rotation
|
rotation = piece.getRotation(); //Inherit parent rotation
|
||||||
|
|
||||||
@ -264,7 +271,7 @@ public class PlannedStructure {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean generateRotatedPiece(PlannedPiece piece, IrisJigsawPieceConnector pieceConnector, IrisJigsawPiece idea, int x, int y, int z) {
|
private boolean generateRotatedPiece(PlannedPiece piece, IrisJigsawPieceConnector pieceConnector, LoaderJigsawPiece idea, int x, int y, int z) {
|
||||||
return generateRotatedPiece(piece, pieceConnector, idea, IrisObjectRotation.of(x, y, z));
|
return generateRotatedPiece(piece, pieceConnector, idea, IrisObjectRotation.of(x, y, z));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -299,12 +306,12 @@ public class PlannedStructure {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private KList<IrisJigsawPiece> getShuffledPiecesFor(IrisJigsawPieceConnector c) {
|
private KList<LoaderJigsawPiece> getShuffledPiecesFor(IrisJigsawPieceConnector c) {
|
||||||
KList<IrisJigsawPiece> p = new KList<>();
|
KList<LoaderJigsawPiece> p = new KList<>();
|
||||||
|
|
||||||
for (String i : c.getPools().shuffleCopy(rng)) {
|
for (String i : c.getPools().shuffleCopy(rng)) {
|
||||||
for (String j : getData().getJigsawPoolLoader().load(i).getPieces().shuffleCopy(rng)) {
|
for (String j : getData().getJigsawPoolLoader().load(i).getPieces().shuffleCopy(rng)) {
|
||||||
IrisJigsawPiece pi = getData().getJigsawPieceLoader().load(j);
|
LoaderJigsawPiece pi = getData().getJigsawPieceLoader().load(j);
|
||||||
|
|
||||||
if (pi == null || (terminating && !pi.isTerminal())) {
|
if (pi == null || (terminating && !pi.isTerminal())) {
|
||||||
continue;
|
continue;
|
||||||
@ -375,7 +382,7 @@ public class PlannedStructure {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IrisObject rotated(IrisJigsawPiece piece, IrisObjectRotation rotation) {
|
public LoaderObject rotated(LoaderJigsawPiece piece, IrisObjectRotation rotation) {
|
||||||
String key = piece.getObject() + "-" + rotation.hashCode();
|
String key = piece.getObject() + "-" + rotation.hashCode();
|
||||||
|
|
||||||
return objectRotationCache.compute(key, (k, v) -> {
|
return objectRotationCache.compute(key, (k, v) -> {
|
||||||
|
@ -23,8 +23,8 @@ import com.volmit.iris.engine.framework.Engine;
|
|||||||
import com.volmit.iris.engine.framework.EngineAssignedModifier;
|
import com.volmit.iris.engine.framework.EngineAssignedModifier;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.util.noise.FastNoiseDouble;
|
import com.volmit.iris.util.noise.FastNoiseDouble;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisCaveLayer;
|
import com.volmit.iris.engine.object.carve.IrisCaveLayer;
|
||||||
import com.volmit.iris.engine.object.common.CaveResult;
|
import com.volmit.iris.engine.object.common.CaveResult;
|
||||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
@ -77,7 +77,7 @@ public class IrisCaveModifier extends EngineAssignedModifier<BlockData> {
|
|||||||
KList<CaveResult> caves = genCaves(x + finalI, z + j, finalI, j, a);
|
KList<CaveResult> caves = genCaves(x + finalI, z + j, finalI, j, a);
|
||||||
int he = (int) Math.round(getComplex().getHeightStream().get(x + finalI, z + j));
|
int he = (int) Math.round(getComplex().getHeightStream().get(x + finalI, z + j));
|
||||||
if (caves != null && caves.isNotEmpty()) {
|
if (caves != null && caves.isNotEmpty()) {
|
||||||
IrisBiome cave = getComplex().getCaveBiomeStream().get(x + finalI, z + j);
|
LoaderBiome cave = getComplex().getCaveBiomeStream().get(x + finalI, z + j);
|
||||||
|
|
||||||
if (cave == null) {
|
if (cave == null) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -21,10 +21,10 @@ package com.volmit.iris.engine.modifier;
|
|||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.EngineAssignedModifier;
|
import com.volmit.iris.engine.framework.EngineAssignedModifier;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.IrisDepositGenerator;
|
import com.volmit.iris.engine.object.deposits.IrisDepositGenerator;
|
||||||
import com.volmit.iris.engine.object.IrisObject;
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
import com.volmit.iris.engine.object.IrisRegion;
|
import com.volmit.iris.engine.object.regional.LoaderRegion;
|
||||||
import com.volmit.iris.util.data.HeightMap;
|
import com.volmit.iris.util.data.HeightMap;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||||
@ -48,8 +48,8 @@ public class IrisDepositModifier extends EngineAssignedModifier<BlockData> {
|
|||||||
|
|
||||||
public void generateDeposits(RNG rx, Hunk<BlockData> terrain, int x, int z) {
|
public void generateDeposits(RNG rx, Hunk<BlockData> terrain, int x, int z) {
|
||||||
RNG ro = rx.nextParallelRNG(x * x).nextParallelRNG(z * z);
|
RNG ro = rx.nextParallelRNG(x * x).nextParallelRNG(z * z);
|
||||||
IrisRegion region = getComplex().getRegionStream().get((x * 16) + 7, (z * 16) + 7);
|
LoaderRegion region = getComplex().getRegionStream().get((x * 16) + 7, (z * 16) + 7);
|
||||||
IrisBiome biome = getComplex().getTrueBiomeStream().get((x * 16) + 7, (z * 16) + 7);
|
LoaderBiome biome = getComplex().getTrueBiomeStream().get((x * 16) + 7, (z * 16) + 7);
|
||||||
|
|
||||||
for (IrisDepositGenerator k : getDimension().getDeposits()) {
|
for (IrisDepositGenerator k : getDimension().getDeposits()) {
|
||||||
generate(k, terrain, ro, x, z, false);
|
generate(k, terrain, ro, x, z, false);
|
||||||
@ -74,7 +74,7 @@ public class IrisDepositModifier extends EngineAssignedModifier<BlockData> {
|
|||||||
|
|
||||||
public void generate(IrisDepositGenerator k, Hunk<BlockData> data, RNG rng, int cx, int cz, boolean safe, HeightMap he) {
|
public void generate(IrisDepositGenerator k, Hunk<BlockData> data, RNG rng, int cx, int cz, boolean safe, HeightMap he) {
|
||||||
for (int l = 0; l < rng.i(k.getMinPerChunk(), k.getMaxPerChunk()); l++) {
|
for (int l = 0; l < rng.i(k.getMinPerChunk(), k.getMaxPerChunk()); l++) {
|
||||||
IrisObject clump = k.getClump(rng, getData());
|
LoaderObject clump = k.getClump(rng, getData());
|
||||||
|
|
||||||
int af = (int) Math.ceil(clump.getW() / 2D);
|
int af = (int) Math.ceil(clump.getW() / 2D);
|
||||||
int bf = (int) Math.floor(16D - (clump.getW() / 2D));
|
int bf = (int) Math.floor(16D - (clump.getW() / 2D));
|
||||||
|
@ -23,7 +23,7 @@ import com.volmit.iris.engine.data.B;
|
|||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.EngineAssignedModifier;
|
import com.volmit.iris.engine.framework.EngineAssignedModifier;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
import com.volmit.iris.engine.object.biome.LoaderBiome;
|
||||||
import com.volmit.iris.engine.object.common.CaveResult;
|
import com.volmit.iris.engine.object.common.CaveResult;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||||
@ -136,7 +136,7 @@ public class IrisPostModifier extends EngineAssignedModifier<BlockData> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Wall Patcher
|
// Wall Patcher
|
||||||
IrisBiome biome = getComplex().getTrueBiomeStream().get(x, z);
|
LoaderBiome biome = getComplex().getTrueBiomeStream().get(x, z);
|
||||||
|
|
||||||
if (getDimension().isPostProcessingWalls()) {
|
if (getDimension().isPostProcessingWalls()) {
|
||||||
if (!biome.getWall().getPalette().isEmpty()) {
|
if (!biome.getWall().getPalette().isEmpty()) {
|
||||||
@ -231,7 +231,7 @@ public class IrisPostModifier extends EngineAssignedModifier<BlockData> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (getDimension().isPostProcessCaves()) {
|
if (getDimension().isPostProcessCaves()) {
|
||||||
IrisBiome cave = getComplex().getCaveBiomeStream().get(x, z);
|
LoaderBiome cave = getComplex().getCaveBiomeStream().get(x, z);
|
||||||
|
|
||||||
if (cave != null) {
|
if (cave != null) {
|
||||||
for (CaveResult i : ((IrisCaveModifier) getFramework().getCaveModifier()).genCaves(x, z, 0, 0, null)) {
|
for (CaveResult i : ((IrisCaveModifier) getFramework().getCaveModifier()).genCaves(x, z, 0, 0, null)) {
|
||||||
|
@ -23,7 +23,7 @@ import com.volmit.iris.engine.framework.Engine;
|
|||||||
import com.volmit.iris.engine.framework.EngineAssignedModifier;
|
import com.volmit.iris.engine.framework.EngineAssignedModifier;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.util.noise.CNG;
|
import com.volmit.iris.util.noise.CNG;
|
||||||
import com.volmit.iris.engine.object.NoiseStyle;
|
import com.volmit.iris.engine.object.noise.NoiseStyle;
|
||||||
import com.volmit.iris.util.math.BlockPosition;
|
import com.volmit.iris.util.math.BlockPosition;
|
||||||
import com.volmit.iris.util.math.MathHelper;
|
import com.volmit.iris.util.math.MathHelper;
|
||||||
import com.volmit.iris.util.math.Position2;
|
import com.volmit.iris.util.math.Position2;
|
||||||
|
@ -1,24 +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 <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
|
||||||
|
|
||||||
// Because Red Matter is too weak
|
|
||||||
public class IrisMatter {
|
|
||||||
|
|
||||||
}
|
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.object.annotations;
|
package com.volmit.iris.engine.object.annotations;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.IrisRegistrant;
|
import com.volmit.iris.core.project.loader.LoaderRegistrant;
|
||||||
|
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.Target;
|
import java.lang.annotation.Target;
|
||||||
@ -29,5 +29,5 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
|||||||
@Retention(RUNTIME)
|
@Retention(RUNTIME)
|
||||||
@Target({PARAMETER, TYPE, FIELD})
|
@Target({PARAMETER, TYPE, FIELD})
|
||||||
public @interface RegistryListResource {
|
public @interface RegistryListResource {
|
||||||
Class<? extends IrisRegistrant> value();
|
Class<? extends LoaderRegistrant> value();
|
||||||
}
|
}
|
||||||
|
@ -16,10 +16,10 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.basic;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import com.volmit.iris.engine.object.annotations.MaxNumber;
|
import com.volmit.iris.engine.object.annotations.MaxNumber;
|
||||||
import com.volmit.iris.engine.object.annotations.MinNumber;
|
import com.volmit.iris.engine.object.annotations.MinNumber;
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.basic;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.basic;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.basic;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.basic;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.basic;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.basic;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.basic;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.biome;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
|
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.biome;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.object.annotations.*;
|
import com.volmit.iris.engine.object.annotations.*;
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.biome;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
|
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.biome;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import com.volmit.iris.engine.object.annotations.MaxNumber;
|
import com.volmit.iris.engine.object.annotations.MaxNumber;
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.biome;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
|
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.biome;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import com.volmit.iris.engine.object.annotations.MaxNumber;
|
import com.volmit.iris.engine.object.annotations.MaxNumber;
|
@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.biome;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
|
|
@ -16,12 +16,13 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.biome;
|
||||||
|
|
||||||
import com.volmit.iris.engine.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.data.DataProvider;
|
import com.volmit.iris.engine.data.DataProvider;
|
||||||
import com.volmit.iris.engine.interpolation.IrisInterpolation;
|
import com.volmit.iris.util.interpolation.IrisInterpolation;
|
||||||
import com.volmit.iris.engine.object.annotations.*;
|
import com.volmit.iris.engine.object.annotations.*;
|
||||||
|
import com.volmit.iris.engine.object.noise.LoaderGenerator;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@ -34,7 +35,7 @@ import lombok.experimental.Accessors;
|
|||||||
@Data
|
@Data
|
||||||
public class IrisBiomeGeneratorLink {
|
public class IrisBiomeGeneratorLink {
|
||||||
|
|
||||||
@RegistryListResource(IrisGenerator.class)
|
@RegistryListResource(LoaderGenerator.class)
|
||||||
@Desc("The generator id")
|
@Desc("The generator id")
|
||||||
private String generator = "default";
|
private String generator = "default";
|
||||||
|
|
||||||
@ -52,15 +53,15 @@ public class IrisBiomeGeneratorLink {
|
|||||||
@Desc("The max block value (value + fluidHeight)")
|
@Desc("The max block value (value + fluidHeight)")
|
||||||
private int max = 0;
|
private int max = 0;
|
||||||
|
|
||||||
private final transient AtomicCache<IrisGenerator> gen = new AtomicCache<>();
|
private final transient AtomicCache<LoaderGenerator> gen = new AtomicCache<>();
|
||||||
|
|
||||||
public IrisGenerator getCachedGenerator(DataProvider g) {
|
public LoaderGenerator getCachedGenerator(DataProvider g) {
|
||||||
return gen.aquire(() ->
|
return gen.aquire(() ->
|
||||||
{
|
{
|
||||||
IrisGenerator gen = g.getData().getGeneratorLoader().load(getGenerator());
|
LoaderGenerator gen = g.getData().getGeneratorLoader().load(getGenerator());
|
||||||
|
|
||||||
if (gen == null) {
|
if (gen == null) {
|
||||||
gen = new IrisGenerator();
|
gen = new LoaderGenerator();
|
||||||
}
|
}
|
||||||
|
|
||||||
return gen;
|
return gen;
|
@ -16,11 +16,13 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.biome;
|
||||||
|
|
||||||
import com.volmit.iris.engine.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.data.DataProvider;
|
import com.volmit.iris.engine.data.DataProvider;
|
||||||
import com.volmit.iris.engine.object.annotations.*;
|
import com.volmit.iris.engine.object.annotations.*;
|
||||||
|
import com.volmit.iris.engine.object.objects.LoaderObject;
|
||||||
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KSet;
|
import com.volmit.iris.util.collection.KSet;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -34,13 +36,13 @@ import lombok.experimental.Accessors;
|
|||||||
@Desc("A biome mutation if a condition is met")
|
@Desc("A biome mutation if a condition is met")
|
||||||
@Data
|
@Data
|
||||||
public class IrisBiomeMutation {
|
public class IrisBiomeMutation {
|
||||||
@RegistryListResource(IrisBiome.class)
|
@RegistryListResource(LoaderBiome.class)
|
||||||
@Required
|
@Required
|
||||||
@ArrayType(min = 1, type = String.class)
|
@ArrayType(min = 1, type = String.class)
|
||||||
@Desc("One of The following biomes or regions must show up")
|
@Desc("One of The following biomes or regions must show up")
|
||||||
private KList<String> sideA = new KList<>();
|
private KList<String> sideA = new KList<>();
|
||||||
|
|
||||||
@RegistryListResource(IrisBiome.class)
|
@RegistryListResource(LoaderBiome.class)
|
||||||
@Required
|
@Required
|
||||||
@ArrayType(min = 1, type = String.class)
|
@ArrayType(min = 1, type = String.class)
|
||||||
@Desc("One of The following biomes or regions must show up")
|
@Desc("One of The following biomes or regions must show up")
|
||||||
@ -58,7 +60,7 @@ public class IrisBiomeMutation {
|
|||||||
@Desc("How many tries per chunk to check for this mutation")
|
@Desc("How many tries per chunk to check for this mutation")
|
||||||
private int checks = 2;
|
private int checks = 2;
|
||||||
|
|
||||||
@RegistryListResource(IrisObject.class)
|
@RegistryListResource(LoaderObject.class)
|
||||||
@ArrayType(min = 1, type = IrisObjectPlacement.class)
|
@ArrayType(min = 1, type = IrisObjectPlacement.class)
|
||||||
@Desc("Objects define what schematics (iob files) iris will place in this biome mutation")
|
@Desc("Objects define what schematics (iob files) iris will place in this biome mutation")
|
||||||
private KList<IrisObjectPlacement> objects = new KList<>();
|
private KList<IrisObjectPlacement> objects = new KList<>();
|
@ -16,10 +16,14 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object.biome;
|
||||||
|
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
|
import com.volmit.iris.engine.object.block.LoaderBlockData;
|
||||||
|
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
|
||||||
|
import com.volmit.iris.engine.object.noise.IrisSlopeClip;
|
||||||
|
import com.volmit.iris.engine.object.noise.NoiseStyle;
|
||||||
import com.volmit.iris.util.noise.CNG;
|
import com.volmit.iris.util.noise.CNG;
|
||||||
import com.volmit.iris.engine.object.annotations.*;
|
import com.volmit.iris.engine.object.annotations.*;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
@ -62,9 +66,9 @@ public class IrisBiomePaletteLayer {
|
|||||||
private double zoom = 5;
|
private double zoom = 5;
|
||||||
|
|
||||||
@Required
|
@Required
|
||||||
@ArrayType(min = 1, type = IrisBlockData.class)
|
@ArrayType(min = 1, type = LoaderBlockData.class)
|
||||||
@Desc("The palette of blocks to be used in this layer")
|
@Desc("The palette of blocks to be used in this layer")
|
||||||
private KList<IrisBlockData> palette = new KList<IrisBlockData>().qadd(new IrisBlockData("GRASS_BLOCK"));
|
private KList<LoaderBlockData> palette = new KList<LoaderBlockData>().qadd(new LoaderBlockData("GRASS_BLOCK"));
|
||||||
|
|
||||||
private final transient AtomicCache<KList<BlockData>> blockData = new AtomicCache<>();
|
private final transient AtomicCache<KList<BlockData>> blockData = new AtomicCache<>();
|
||||||
private final transient AtomicCache<CNG> layerGenerator = new AtomicCache<>();
|
private final transient AtomicCache<CNG> layerGenerator = new AtomicCache<>();
|
||||||
@ -94,8 +98,8 @@ public class IrisBiomePaletteLayer {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public KList<IrisBlockData> add(String b) {
|
public KList<LoaderBlockData> add(String b) {
|
||||||
palette.add(new IrisBlockData(b));
|
palette.add(new LoaderBlockData(b));
|
||||||
|
|
||||||
return palette;
|
return palette;
|
||||||
}
|
}
|
||||||
@ -104,7 +108,7 @@ public class IrisBiomePaletteLayer {
|
|||||||
return blockData.aquire(() ->
|
return blockData.aquire(() ->
|
||||||
{
|
{
|
||||||
KList<BlockData> blockData = new KList<>();
|
KList<BlockData> blockData = new KList<>();
|
||||||
for (IrisBlockData ix : palette) {
|
for (LoaderBlockData ix : palette) {
|
||||||
BlockData bx = ix.getBlockData(data);
|
BlockData bx = ix.getBlockData(data);
|
||||||
if (bx != null) {
|
if (bx != null) {
|
||||||
for (int i = 0; i < ix.getWeight(); i++) {
|
for (int i = 0; i < ix.getWeight(); i++) {
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user