9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-28 19:49:06 +00:00

Registry list abstraction

This commit is contained in:
Daniel Mills
2021-08-02 15:45:22 -04:00
parent 0a6e24104e
commit 488c609109
82 changed files with 291 additions and 832 deletions

View File

@@ -20,7 +20,7 @@ package com.volmit.iris.engine;
import com.google.common.util.concurrent.AtomicDouble;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
import com.volmit.iris.engine.data.DataProvider;
import com.volmit.iris.engine.framework.Engine;
@@ -48,7 +48,7 @@ public class IrisComplex implements DataProvider {
public static AtomicBoolean cacheLock = new AtomicBoolean(false);
private RNG rng;
private double fluidHeight;
private IrisDataManager data;
private IrisData data;
private KList<IrisGenerator> generators;
private static final BlockData AIR = Material.AIR.createBlockData();
private ProceduralStream<IrisRegion> regionStream;

View File

@@ -19,8 +19,8 @@
package com.volmit.iris.engine;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineCompound;
import com.volmit.iris.engine.framework.EngineData;
@@ -80,7 +80,7 @@ public class IrisEngineCompound implements EngineCompound {
@Setter
private boolean studio;
public IrisEngineCompound(IrisWorld world, IrisDimension rootDimension, IrisDataManager data, int maximumThreads) {
public IrisEngineCompound(IrisWorld world, IrisDimension rootDimension, IrisData data, int maximumThreads) {
wallClock = new AtomicRollingSequence(32);
this.rootDimension = rootDimension;
Iris.info("Initializing Engine Composite for " + world.name());
@@ -264,7 +264,7 @@ public class IrisEngineCompound implements EngineCompound {
@BlockCoordinates
@Override
public IrisDataManager getData(int height) {
public IrisData getData(int height) {
return getEngineForHeight(height).getData();
}

View File

@@ -18,8 +18,8 @@
package com.volmit.iris.engine.data;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
public interface DataProvider {
IrisDataManager getData();
IrisData getData();
}

View File

@@ -1,235 +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.data.loader;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.object.IrisObject;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.scheduling.ChronoLatch;
import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import java.io.File;
import java.util.concurrent.atomic.AtomicInteger;
public class ObjectResourceLoader extends ResourceLoader<IrisObject> {
private final ChronoLatch useFlip = new ChronoLatch(2222);
private final KMap<String, Long> useCache = new KMap<>();
private final ChronoLatch cl;
private final AtomicInteger unload;
public ObjectResourceLoader(File root, IrisDataManager idm, String folderName, String resourceTypeName) {
super(root, idm, folderName, resourceTypeName, IrisObject.class);
cl = new ChronoLatch(30000);
unload = new AtomicInteger(0);
}
public boolean supportsSchemas() {
return false;
}
public int getSize() {
return loadCache.size();
}
public int getTotalStorage() {
int m = 0;
for (IrisObject i : loadCache.values()) {
m += i.getBlocks().size();
}
return m;
}
public void clean() {
if (useFlip.flip()) {
unloadLast(30000);
}
}
public void unloadLast(long age) {
String v = getOldest();
if (v == null) {
return;
}
if (M.ms() - useCache.get(v) > age) {
unload(v);
}
}
private String getOldest() {
long min = M.ms();
String v = null;
for (String i : useCache.k()) {
long t = useCache.get(i);
if (t < min) {
min = t;
v = i;
}
}
return v;
}
private void unload(String v) {
lock.lock();
useCache.remove(v);
loadCache.remove(v);
lock.unlock();
unload.getAndIncrement();
if (unload.get() == 1) {
cl.flip();
}
if (cl.flip()) {
J.a(() -> {
Iris.verbose("Unloaded " + C.WHITE + unload.get() + " " + resourceTypeName + (unload.get() == 1 ? "" : "s") + C.GRAY + " to optimize memory usage." + " (" + Form.f(getLoadCache().size()) + " " + resourceTypeName + (loadCache.size() == 1 ? "" : "s") + " Loaded)");
unload.set(0);
});
}
}
public IrisObject loadFile(File j, String key, String name) {
lock.lock();
try {
PrecisionStopwatch p = PrecisionStopwatch.start();
IrisObject t = new IrisObject(0, 0, 0);
t.read(j);
loadCache.put(key, t);
t.setLoadKey(name);
t.setLoader(manager);
t.setLoadFile(j);
logLoad(j, t);
lock.unlock();
tlt.addAndGet(p.getMilliseconds());
return t;
} catch (Throwable e) {
Iris.reportError(e);
lock.unlock();
Iris.warn("Couldn't read " + resourceTypeName + " file: " + j.getPath() + ": " + e.getMessage());
return null;
}
}
public String[] getPossibleKeys() {
if (possibleKeys != null) {
return possibleKeys;
}
Iris.info("Building " + resourceTypeName + " Possibility Lists");
KSet<String> m = new KSet<>();
for (File i : getFolders()) {
for (File j : i.listFiles()) {
if (j.isFile() && j.getName().endsWith(".iob")) {
m.add(j.getName().replaceAll("\\Q.iob\\E", ""));
} else if (j.isDirectory()) {
for (File k : j.listFiles()) {
if (k.isFile() && k.getName().endsWith(".iob")) {
m.add(j.getName() + "/" + k.getName().replaceAll("\\Q.iob\\E", ""));
} else if (k.isDirectory()) {
for (File l : k.listFiles()) {
if (l.isFile() && l.getName().endsWith(".iob")) {
m.add(j.getName() + "/" + k.getName() + "/" + l.getName().replaceAll("\\Q.iob\\E", ""));
}
}
}
}
}
}
}
KList<String> v = new KList<>(m);
possibleKeys = v.toArray(new String[0]);
return possibleKeys;
}
public File findFile(String name) {
lock.lock();
for (File i : getFolders(name)) {
for (File j : i.listFiles()) {
if (j.isFile() && j.getName().endsWith(".iob") && j.getName().split("\\Q.\\E")[0].equals(name)) {
lock.unlock();
return j;
}
}
File file = new File(i, name + ".iob");
if (file.exists()) {
lock.unlock();
return file;
}
}
Iris.warn("Couldn't find " + resourceTypeName + ": " + name);
lock.unlock();
return null;
}
public IrisObject load(String name) {
return load(name, true);
}
public IrisObject load(String name, boolean warn) {
String key = name + "-" + objectClass.getCanonicalName();
if (loadCache.containsKey(key)) {
IrisObject t = loadCache.get(key);
useCache.put(key, M.ms());
return t;
}
lock.lock();
for (File i : getFolders(name)) {
for (File j : i.listFiles()) {
if (j.isFile() && j.getName().endsWith(".iob") && j.getName().split("\\Q.\\E")[0].equals(name)) {
useCache.put(key, M.ms());
lock.unlock();
return loadFile(j, key, name);
}
}
File file = new File(i, name + ".iob");
if (file.exists()) {
useCache.put(key, M.ms());
lock.unlock();
return loadFile(file, key, name);
}
}
Iris.warn("Couldn't find " + resourceTypeName + ": " + name);
lock.unlock();
return null;
}
}

View File

@@ -1,368 +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.data.loader;
import com.google.common.util.concurrent.AtomicDouble;
import com.google.gson.Gson;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
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.KMap;
import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.io.IO;
import com.volmit.iris.util.json.JSONArray;
import com.volmit.iris.util.json.JSONObject;
import com.volmit.iris.util.scheduling.ChronoLatch;
import com.volmit.iris.util.scheduling.IrisLock;
import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Data;
import java.io.File;
import java.util.Locale;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Predicate;
@Data
public class ResourceLoader<T extends IrisRegistrant> {
public static final AtomicDouble tlt = new AtomicDouble(0);
protected File root;
protected String folderName;
protected String resourceTypeName;
protected KMap<String, File> folderMapCache;
protected KMap<String, T> loadCache;
protected KList<File> folderCache;
protected Class<? extends T> objectClass;
protected String cname;
protected IrisLock lock;
protected String[] possibleKeys = null;
protected IrisDataManager manager;
protected AtomicInteger loads;
protected ChronoLatch sec;
public ResourceLoader(File root, IrisDataManager manager, String folderName, String resourceTypeName, Class<? extends T> objectClass) {
lock = new IrisLock("Res");
this.manager = manager;
sec = new ChronoLatch(5000);
loads = new AtomicInteger();
folderMapCache = new KMap<>();
this.objectClass = objectClass;
cname = objectClass.getCanonicalName();
this.resourceTypeName = resourceTypeName;
this.root = root;
this.folderName = folderName;
loadCache = new KMap<>();
Iris.debug("Loader<" + C.GREEN + resourceTypeName + C.LIGHT_PURPLE + "> created in " + C.RED + "IDM/" + manager.getId() + C.LIGHT_PURPLE + " on " + C.WHITE + manager.getDataFolder().getPath());
}
public JSONObject buildSchema()
{
Iris.debug("Building Schema " + objectClass.getSimpleName() + " " + root.getPath());
JSONObject o = new JSONObject();
KList<String> fm = new KList<>();
for(int g = 1; g < 8; g++)
{
fm.add("/" + root.getName() + Form.repeat("/*", g) + ".json");
}
o.put("fileMatch", new JSONArray(fm.toArray()));
o.put("schema", new SchemaBuilder(objectClass, manager).compute());
return o;
}
public File findFile(String name) {
lock.lock();
for (File i : getFolders(name)) {
for (File j : i.listFiles()) {
if (j.isFile() && j.getName().endsWith(".json") && j.getName().split("\\Q.\\E")[0].equals(name)) {
lock.unlock();
return j;
}
}
File file = new File(i, name + ".json");
if (file.exists()) {
lock.unlock();
return file;
}
}
Iris.warn("Couldn't find " + resourceTypeName + ": " + name);
lock.unlock();
return null;
}
public void logLoad(File path, T t) {
loads.getAndIncrement();
if (loads.get() == 1) {
sec.flip();
}
if (sec.flip()) {
J.a(() -> {
Iris.verbose("Loaded " + C.WHITE + loads.get() + " " + resourceTypeName + (loads.get() == 1 ? "" : "s") + C.GRAY + " (" + Form.f(getLoadCache().size()) + " " + resourceTypeName + (loadCache.size() == 1 ? "" : "s") + " Loaded)");
loads.set(0);
});
}
Iris.debug("Loader<" + C.GREEN + resourceTypeName + C.LIGHT_PURPLE + "> iload " + C.YELLOW + t.getLoadKey() + C.LIGHT_PURPLE + " in " + C.GRAY + t.getLoadFile().getPath() + C.LIGHT_PURPLE + " TLT: " + C.RED + Form.duration(tlt.get(), 2));
}
public void failLoad(File path, Throwable e) {
J.a(() -> Iris.warn("Couldn't Load " + resourceTypeName + " file: " + path.getPath() + ": " + e.getMessage()));
}
private KList<File> matchAllFiles(File root, Predicate<File> f) {
KList<File> fx = new KList<>();
matchFiles(root, fx, f);
return fx;
}
private void matchFiles(File at, KList<File> files, Predicate<File> f) {
if (at.isDirectory()) {
for (File i : at.listFiles()) {
matchFiles(i, files, f);
}
} else {
if (f.test(at)) {
files.add(at);
}
}
}
public String[] getPossibleKeys() {
if (possibleKeys != null) {
return possibleKeys;
}
KSet<String> m = new KSet<>();
for (File i : getFolders()) {
for (File j : matchAllFiles(i, (f) -> f.getName().endsWith(".json"))) {
m.add(i.toURI().relativize(j.toURI()).getPath().replaceAll("\\Q.json\\E", ""));
}
}
KList<String> v = new KList<>(m);
possibleKeys = v.toArray(new String[0]);
return possibleKeys;
}
public long count() {
return loadCache.size();
}
protected T loadFile(File j, String key, String name) {
try {
PrecisionStopwatch p = PrecisionStopwatch.start();
T t = new Gson().fromJson(IO.readAll(j), objectClass);
loadCache.put(key, t);
t.setLoadKey(name);
t.setLoadFile(j);
t.setLoader(manager);
logLoad(j, t);
lock.unlock();
tlt.addAndGet(p.getMilliseconds());
return t;
} catch (Throwable e) {
Iris.reportError(e);
lock.unlock();
failLoad(j, e);
return null;
}
}
public KList<T> loadAll(KList<String> s) {
KList<T> m = new KList<>();
for (String i : s) {
T t = load(i);
if (t != null) {
m.add(t);
}
}
return m;
}
public KList<T> loadAll(String[] s) {
KList<T> m = new KList<>();
for (String i : s) {
T t = load(i);
if (t != null) {
m.add(t);
}
}
return m;
}
public T load(String name) {
return load(name, true);
}
public T load(String name, boolean warn) {
if (name == null) {
return null;
}
if (name.trim().isEmpty()) {
return null;
}
String key = name + "-" + cname;
if (loadCache.containsKey(key)) {
return loadCache.get(key);
}
lock.lock();
for (File i : getFolders(name)) {
for (File j : i.listFiles()) {
if (j.isFile() && j.getName().endsWith(".json") && j.getName().split("\\Q.\\E")[0].equals(name)) {
return loadFile(j, key, name);
}
}
File file = new File(i, name + ".json");
if (file.exists()) {
return loadFile(file, key, name);
}
}
if (warn && !resourceTypeName.equals("Dimension")) {
J.a(() -> Iris.warn("Couldn't find " + resourceTypeName + ": " + name));
}
lock.unlock();
return null;
}
public KList<File> getFolders() {
lock.lock();
if (folderCache == null) {
folderCache = new KList<>();
for (File i : root.listFiles()) {
if (i.isDirectory()) {
if (i.getName().equals(folderName)) {
folderCache.add(i);
break;
}
}
}
}
lock.unlock();
return folderCache;
}
public KList<File> getFolders(String rc) {
KList<File> folders = getFolders().copy();
if (rc.contains(":")) {
for (File i : folders.copy()) {
if (!rc.startsWith(i.getName() + ":")) {
folders.remove(i);
}
}
}
return folders;
}
public void clearCache() {
lock.lock();
possibleKeys = null;
loadCache.clear();
folderCache = null;
lock.unlock();
}
public File fileFor(T b) {
for (File i : getFolders()) {
for (File j : i.listFiles()) {
if (j.isFile() && j.getName().endsWith(".json") && j.getName().split("\\Q.\\E")[0].equals(b.getLoadKey())) {
return j;
}
}
File file = new File(i, b.getLoadKey() + ".json");
if (file.exists()) {
return file;
}
}
return null;
}
public boolean isLoaded(String next) {
return loadCache.containsKey(next);
}
public void clearList() {
lock.lock();
folderCache = null;
possibleKeys = null;
lock.unlock();
}
public KList<String> getPossibleKeys(String arg) {
KList<String> f = new KList<>();
for (String i : getPossibleKeys()) {
if (i.equalsIgnoreCase(arg) || i.toLowerCase(Locale.ROOT).startsWith(arg.toLowerCase(Locale.ROOT)) || i.toLowerCase(Locale.ROOT).contains(arg.toLowerCase(Locale.ROOT)) || arg.toLowerCase(Locale.ROOT).contains(i.toLowerCase(Locale.ROOT))) {
f.add(i);
}
}
return f;
}
public boolean supportsSchemas() {
return true;
}
public void clean() {
}
public int getSize() {
return loadCache.size();
}
public int getTotalStorage() {
return getSize();
}
}

View File

@@ -19,9 +19,9 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.gui.components.RenderType;
import com.volmit.iris.core.gui.components.Renderer;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.Cache;
import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.data.DataProvider;
@@ -117,7 +117,7 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
return getTarget().getHeight();
}
default IrisDataManager getData() {
default IrisData getData() {
return getTarget().getData();
}

View File

@@ -19,7 +19,7 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.IrisComplex;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.engine.parallax.ParallaxAccess;
@@ -52,7 +52,7 @@ public interface EngineComponent {
return getEngine().modifyZ(z);
}
default IrisDataManager getData() {
default IrisData getData() {
return getEngine().getData();
}

View File

@@ -19,11 +19,11 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.core.pregenerator.PregenListener;
import com.volmit.iris.core.pregenerator.PregenTask;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.IrisEngineCompound;
import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.data.chunk.MCATerrainChunk;
@@ -207,11 +207,11 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
query = IrisSettings.get().getGenerator().getDefaultWorldType();
}
dim = IrisDataManager.loadAnyDimension(query);
dim = IrisData.loadAnyDimension(query);
if (dim == null) {
Iris.proj.downloadSearch(new VolmitSender(Bukkit.getConsoleSender(), Iris.instance.getTag()), query, false);
dim = IrisDataManager.loadAnyDimension(query);
dim = IrisData.loadAnyDimension(query);
if (dim == null) {
throw new RuntimeException("Cannot find dimension: " + query);
@@ -222,12 +222,12 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
if (production) {
IrisDimension od = dim;
dim = new IrisDataManager(getDataFolder(world)).getDimensionLoader().load(od.getLoadKey());
dim = new IrisData(getDataFolder(world)).getDimensionLoader().load(od.getLoadKey());
if (dim == null) {
Iris.info("Installing Iris pack " + od.getName() + " into world " + world.name() + "...");
Iris.proj.installIntoWorld(new VolmitSender(Bukkit.getConsoleSender(), Iris.instance.getTag()), od.getLoadKey(), world.worldFolder());
dim = new IrisDataManager(getDataFolder(world)).getDimensionLoader().load(od.getLoadKey());
dim = new IrisData(getDataFolder(world)).getDimensionLoader().load(od.getLoadKey());
if (dim == null) {
throw new RuntimeException("Cannot find dimension: " + query);
@@ -273,11 +273,11 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
query = IrisSettings.get().getGenerator().getDefaultWorldType();
}
dim = IrisDataManager.loadAnyDimension(query);
dim = IrisData.loadAnyDimension(query);
if (dim == null) {
Iris.proj.downloadSearch(new VolmitSender(Bukkit.getConsoleSender(), Iris.instance.getTag()), query, false);
dim = IrisDataManager.loadAnyDimension(query);
dim = IrisData.loadAnyDimension(query);
if (dim == null) {
throw new RuntimeException("Cannot find dimension: " + query);
@@ -288,12 +288,12 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
if (production) {
IrisDimension od = dim;
dim = new IrisDataManager(getDataFolder(world)).getDimensionLoader().load(od.getLoadKey());
dim = new IrisData(getDataFolder(world)).getDimensionLoader().load(od.getLoadKey());
if (dim == null) {
Iris.info("Installing Iris pack " + od.getName() + " into world " + world + "...");
Iris.proj.installIntoWorld(new VolmitSender(Bukkit.getConsoleSender(), Iris.instance.getTag()), od.getLoadKey(), new File(world));
dim = new IrisDataManager(getDataFolder(world)).getDimensionLoader().load(od.getLoadKey());
dim = new IrisData(getDataFolder(world)).getDimensionLoader().load(od.getLoadKey());
if (dim == null) {
throw new RuntimeException("Cannot find dimension: " + query);
@@ -314,7 +314,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
try {
initialized.set(true);
IrisDimension dim = getDimension(world);
IrisDataManager data = production ? new IrisDataManager(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.get().setStudio(!production);
populators.clear();
@@ -667,7 +667,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
}
@Override
public IrisDataManager getData() {
public IrisData getData() {
if (getCompound() == null) {
return null;
}
@@ -755,7 +755,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
dim.getAllAnyBiomes().forEach((i) -> v.put(i.getLoadKey(), i));
try {
dim.getDimensionalComposite().forEach((m) -> IrisDataManager.loadAnyDimension(m.getDimension()).getAllAnyBiomes().forEach((i) -> v.put(i.getLoadKey(), i)));
dim.getDimensionalComposite().forEach((m) -> IrisData.loadAnyDimension(m.getDimension()).getAllAnyBiomes().forEach((i) -> v.put(i.getLoadKey(), i)));
} catch (Throwable ignored) {
Iris.reportError(ignored);

View File

@@ -19,7 +19,7 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
import com.volmit.iris.engine.data.DataProvider;
import com.volmit.iris.engine.hunk.Hunk;
@@ -105,9 +105,9 @@ public interface EngineCompound extends Listener, Hotloadable, DataProvider {
}
}
IrisDataManager getData(int height);
IrisData getData(int height);
default IrisDataManager getData() {
default IrisData getData() {
return getData(0);
}

View File

@@ -18,7 +18,7 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.IrisComplex;
import com.volmit.iris.engine.data.DataProvider;
import org.bukkit.block.Biome;
@@ -31,7 +31,7 @@ public interface EngineFramework extends DataProvider {
EngineParallaxManager getEngineParallax();
default IrisDataManager getData() {
default IrisData getData() {
return getComplex().getData();
}

View File

@@ -19,7 +19,7 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.IrisComplex;
import com.volmit.iris.engine.cache.Cache;
import com.volmit.iris.engine.data.B;
@@ -70,7 +70,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
return getEngine().getParallax();
}
default IrisDataManager getData() {
default IrisData getData() {
return getEngine().getData();
}

View File

@@ -18,8 +18,8 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.engine.object.common.IrisWorld;
import com.volmit.iris.engine.parallax.ParallaxWorld;
@@ -35,11 +35,11 @@ public class EngineTarget {
private final IrisDimension dimension;
private IrisWorld world;
private final int height;
private final IrisDataManager data;
private final IrisData data;
private final ParallaxWorld parallaxWorld;
private final boolean inverted;
public EngineTarget(IrisWorld world, IrisDimension dimension, IrisDataManager data, int height, boolean inverted, int threads) {
public EngineTarget(IrisWorld world, IrisDimension dimension, IrisData data, int height, boolean inverted, int threads) {
this.world = world;
this.height = height;
this.dimension = dimension;
@@ -50,7 +50,7 @@ public class EngineTarget {
this.parallaxWorld = new ParallaxWorld(parallaxBurster, 256, new File(world.worldFolder(), "iris/" + dimension.getLoadKey() + "/parallax"));
}
public EngineTarget(IrisWorld world, IrisDimension dimension, IrisDataManager data, int height, int threads) {
public EngineTarget(IrisWorld world, IrisDimension dimension, IrisData data, int height, int threads) {
this(world, dimension, data, height, false, threads);
}

View File

@@ -18,8 +18,8 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.gui.components.Renderer;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.data.DataProvider;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisObjectPlacement;
@@ -31,7 +31,7 @@ public interface GeneratorAccess extends DataProvider, Renderer {
ParallaxAccess getParallaxAccess();
IrisDataManager getData();
IrisData getData();
IrisBiome getCaveBiome(int x, int z);

View File

@@ -19,8 +19,8 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.pregenerator.PregenListener;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.IrisComplex;
import com.volmit.iris.engine.data.DataProvider;
import com.volmit.iris.engine.data.mca.NBTWorld;
@@ -98,7 +98,7 @@ public interface IrisAccess extends Hotloadable, DataProvider {
GeneratorAccess getEngineAccess(int y);
IrisDataManager getData();
IrisData getData();
int getHeight(int x, int y, int z);

View File

@@ -19,7 +19,7 @@
package com.volmit.iris.engine.headless;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.core.tools.IrisWorlds;
import com.volmit.iris.engine.framework.EngineCompositeGenerator;
import com.volmit.iris.engine.object.IrisDimension;
@@ -83,6 +83,6 @@ public class HeadlessWorld {
}
public static HeadlessWorld from(String name, String dimension, long seed) {
return new HeadlessWorld(name, IrisDataManager.loadAnyDimension(dimension), seed);
return new HeadlessWorld(name, IrisData.loadAnyDimension(dimension), seed);
}
}

View File

@@ -18,7 +18,7 @@
package com.volmit.iris.engine.jigsaw;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.core.tools.IrisWorlds;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.IrisAccess;
@@ -46,7 +46,7 @@ public class PlannedPiece {
private IrisObject object;
private IrisJigsawPiece piece;
private IrisObjectRotation rotation;
private IrisDataManager data;
private IrisData data;
private KList<IrisJigsawPieceConnector> connected;
private boolean dead = false;
private AxisAlignedBB box;

View File

@@ -20,7 +20,7 @@ package com.volmit.iris.engine.jigsaw;
import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.core.tools.IrisWorlds;
import com.volmit.iris.engine.framework.EngineParallaxManager;
import com.volmit.iris.engine.framework.IrisAccess;
@@ -41,7 +41,7 @@ public class PlannedStructure {
private KList<PlannedPiece> pieces;
private IrisJigsawStructure structure;
private IrisPosition position;
private IrisDataManager data;
private IrisData data;
private RNG rng;
private boolean verbose;
private boolean terminating;

View File

@@ -19,8 +19,8 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.gui.components.RenderType;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.IrisComplex;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.B;
@@ -66,7 +66,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
@Desc("Spawn Entities in this area over time. Iris will continually replenish these mobs just like vanilla does.")
@ArrayType(min = 1, type = String.class)
@RegistryListSpawner
@RegistryListResource(IrisSpawner.class)
private KList<String> entitySpawners = new KList<>();
@Desc("Add random chances for terrain features")
@@ -132,7 +132,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
@Desc("If this biome has children biomes, and the gen layer chooses one of this biomes children, How will it be shaped?")
private IrisGeneratorStyle childStyle = NoiseStyle.CELLULAR_IRIS_DOUBLE.style();
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@ArrayType(min = 1, type = String.class)
@Desc("List any biome names (file names without.json) here as children. Portions of this biome can sometimes morph into their children. Iris supports cyclic relationships such as A > B > A > B. Iris will stop checking 9 biomes down the tree.")
private KList<String> children = new KList<>();
@@ -141,7 +141,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
@Desc("Jigsaw structures")
private KList<IrisJigsawStructurePlacement> jigsawStructures = new KList<>();
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@Desc("The carving biome. If specified the biome will be used when under a carving instead of this current biome.")
private String carvingBiome = "";
@@ -249,7 +249,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
}).get(loadKey);
}
public IrisBiome getRealCarvingBiome(IrisDataManager data) {
public IrisBiome getRealCarvingBiome(IrisData data) {
return realCarveBiome.aquire(() ->
{
IrisBiome biome = data.getBiomeLoader().load(getCarvingBiome());
@@ -311,7 +311,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
return childrenCell.aquire(() -> getChildStyle().create(random.nextParallelRNG(sig * 2137)).bake().scale(scale).bake());
}
public KList<BlockData> generateLayers(double wx, double wz, RNG random, int maxDepth, int height, IrisDataManager rdata, IrisComplex complex) {
public KList<BlockData> generateLayers(double wx, double wz, RNG random, int maxDepth, int height, IrisData rdata, IrisComplex complex) {
if (isLockLayers()) {
return generateLockedLayers(wx, wz, random, maxDepth, height, rdata, complex);
}
@@ -359,7 +359,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
return data;
}
public KList<BlockData> generateLockedLayers(double wx, double wz, RNG random, int maxDepthf, int height, IrisDataManager rdata, IrisComplex complex) {
public KList<BlockData> generateLockedLayers(double wx, double wz, RNG random, int maxDepthf, int height, IrisData rdata, IrisComplex complex) {
KList<BlockData> data = new KList<>();
KList<BlockData> real = new KList<>();
int maxDepth = Math.min(maxDepthf, getLockLayersMax());
@@ -419,7 +419,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
});
}
public int getMaxWithObjectHeight(IrisDataManager data) {
public int getMaxWithObjectHeight(IrisData data) {
return maxWithObjectHeight.aquire(() ->
{
int maxHeight = 0;
@@ -445,7 +445,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
return this;
}
public KList<BlockData> generateSeaLayers(double wx, double wz, RNG random, int maxDepth, IrisDataManager rdata) {
public KList<BlockData> generateSeaLayers(double wx, double wz, RNG random, int maxDepth, IrisData rdata) {
KList<BlockData> data = new KList<>();
for (int i = 0; i < seaLayers.size(); i++) {
@@ -477,7 +477,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
return data;
}
public KList<CNG> getLayerHeightGenerators(RNG rng, IrisDataManager rdata) {
public KList<CNG> getLayerHeightGenerators(RNG rng, IrisData rdata) {
return layerHeightGenerators.aquire(() ->
{
KList<CNG> layerHeightGenerators = new KList<>();
@@ -492,7 +492,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
});
}
public KList<CNG> getLayerSeaHeightGenerators(RNG rng, IrisDataManager data) {
public KList<CNG> getLayerSeaHeightGenerators(RNG rng, IrisData data) {
return layerSeaHeightGenerators.aquire(() ->
{
KList<CNG> layerSeaHeightGenerators = new KList<>();
@@ -609,7 +609,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
return getBiomeGenerator(rng).fit(biomeScatter, x, y, z);
}
public BlockData getSurfaceBlock(int x, int z, RNG rng, IrisDataManager idm) {
public BlockData getSurfaceBlock(int x, int z, RNG rng, IrisData idm) {
if (getLayers().isEmpty()) {
return B.get("AIR");
}

View File

@@ -34,7 +34,7 @@ import lombok.experimental.Accessors;
@Data
public class IrisBiomeGeneratorLink {
@RegistryListGenerator
@RegistryListResource(IrisGenerator.class)
@Desc("The generator id")
private String generator = "default";

View File

@@ -34,13 +34,13 @@ import lombok.experimental.Accessors;
@Desc("A biome mutation if a condition is met")
@Data
public class IrisBiomeMutation {
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@Required
@ArrayType(min = 1, type = String.class)
@Desc("One of The following biomes or regions must show up")
private KList<String> sideA = new KList<>();
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@Required
@ArrayType(min = 1, type = String.class)
@Desc("One of The following biomes or regions must show up")
@@ -58,7 +58,7 @@ public class IrisBiomeMutation {
@Desc("How many tries per chunk to check for this mutation")
private int checks = 2;
@RegistryListObject
@RegistryListResource(IrisObject.class)
@ArrayType(min = 1, type = IrisObjectPlacement.class)
@Desc("Objects define what schematics (iob files) iris will place in this biome mutation")
private KList<IrisObjectPlacement> objects = new KList<>();

View File

@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.object.annotations.*;
@@ -70,11 +70,11 @@ public class IrisBiomePaletteLayer {
private final transient AtomicCache<CNG> layerGenerator = new AtomicCache<>();
private final transient AtomicCache<CNG> heightGenerator = new AtomicCache<>();
public CNG getHeightGenerator(RNG rng, IrisDataManager data) {
public CNG getHeightGenerator(RNG rng, IrisData data) {
return heightGenerator.aquire(() -> CNG.signature(rng.nextParallelRNG(minHeight * maxHeight + getBlockData(data).size())));
}
public BlockData get(RNG rng, double x, double y, double z, IrisDataManager data) {
public BlockData get(RNG rng, double x, double y, double z, IrisData data) {
if (getBlockData(data).isEmpty()) {
return null;
}
@@ -86,7 +86,7 @@ public class IrisBiomePaletteLayer {
return getLayerGenerator(rng, data).fit(getBlockData(data), x / zoom, y / zoom, z / zoom);
}
public CNG getLayerGenerator(RNG rng, IrisDataManager data) {
public CNG getLayerGenerator(RNG rng, IrisData data) {
return layerGenerator.aquire(() ->
{
RNG rngx = rng.nextParallelRNG(minHeight + maxHeight + getBlockData(data).size());
@@ -100,7 +100,7 @@ public class IrisBiomePaletteLayer {
return palette;
}
public KList<BlockData> getBlockData(IrisDataManager data) {
public KList<BlockData> getBlockData(IrisData data) {
return blockData.aquire(() ->
{
KList<BlockData> blockData = new KList<>();

View File

@@ -19,7 +19,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.object.annotations.*;
@@ -89,7 +89,7 @@ public class IrisBlockData extends IrisRegistrant {
return computeProperties(getData());
}
public BlockData getBlockData(IrisDataManager data) {
public BlockData getBlockData(IrisData data) {
return blockdata.aquire(() ->
{
BlockData b = null;

View File

@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
@@ -58,7 +58,7 @@ public class IrisBlockDrops {
private final transient AtomicCache<KList<BlockData>> data = new AtomicCache<>();
public boolean shouldDropFor(BlockData data, IrisDataManager rdata) {
public boolean shouldDropFor(BlockData data, IrisData rdata) {
KList<BlockData> list = this.data.aquire(() ->
{
KList<BlockData> b = new KList<>();

View File

@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.object.annotations.Desc;
@@ -52,11 +52,11 @@ public class IrisCaveFluid {
private final transient AtomicCache<BlockData> fluidData = new AtomicCache<>();
public boolean hasFluid(IrisDataManager rdata) {
public boolean hasFluid(IrisData rdata) {
return !B.isAir(getFluid(rdata));
}
public BlockData getFluid(IrisDataManager rdata) {
public BlockData getFluid(IrisData rdata) {
return fluidData.aquire(() ->
{
BlockData b = getFluidType().getBlockData(rdata);

View File

@@ -19,7 +19,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.object.annotations.*;
@@ -98,7 +98,7 @@ public class IrisDecorator {
private final transient AtomicCache<KList<BlockData>> blockData = new AtomicCache<>();
private final transient AtomicCache<KList<BlockData>> blockDataTops = new AtomicCache<>();
public int getHeight(RNG rng, double x, double z, IrisDataManager data) {
public int getHeight(RNG rng, double x, double z, IrisData data) {
if (stackMin == stackMax) {
return stackMin;
}
@@ -106,16 +106,16 @@ public class IrisDecorator {
return getHeightGenerator(rng, data).fit(stackMin, stackMax, x / heightVariance.getZoom(), z / heightVariance.getZoom()) + 1;
}
public CNG getHeightGenerator(RNG rng, IrisDataManager data) {
public CNG getHeightGenerator(RNG rng, IrisData data) {
return heightGenerator.aquire(() ->
heightVariance.create(rng.nextParallelRNG(getBlockData(data).size() + stackMax + stackMin)));
}
public CNG getGenerator(RNG rng, IrisDataManager data) {
public CNG getGenerator(RNG rng, IrisData data) {
return layerGenerator.aquire(() -> style.create(rng.nextParallelRNG(getBlockData(data).size())));
}
public CNG getVarianceGenerator(RNG rng, IrisDataManager data) {
public CNG getVarianceGenerator(RNG rng, IrisData data) {
return varianceGenerator.aquire(() ->
variance.create(
rng.nextParallelRNG(getBlockData(data).size()))
@@ -128,7 +128,7 @@ public class IrisDecorator {
return palette;
}
public BlockData getBlockData(IrisBiome b, RNG rng, double x, double z, IrisDataManager data) {
public BlockData getBlockData(IrisBiome b, RNG rng, double x, double z, IrisData data) {
if (getBlockData(data).isEmpty()) {
Iris.warn("Empty Block Data for " + b.getName());
return null;
@@ -148,7 +148,7 @@ public class IrisDecorator {
return null;
}
public BlockData getBlockData100(IrisBiome b, RNG rng, double x, double y, double z, IrisDataManager data) {
public BlockData getBlockData100(IrisBiome b, RNG rng, double x, double y, double z, IrisData data) {
if (getBlockData(data).isEmpty()) {
Iris.warn("Empty Block Data for " + b.getName());
return null;
@@ -171,7 +171,7 @@ public class IrisDecorator {
return getVarianceGenerator(rng, data).fit(getBlockData(data), z, y, x).clone(); //X and Z must be switched
}
public BlockData getBlockDataForTop(IrisBiome b, RNG rng, double x, double y, double z, IrisDataManager data) {
public BlockData getBlockDataForTop(IrisBiome b, RNG rng, double x, double y, double z, IrisData data) {
if (getBlockDataTops(data).isEmpty()) {
return getBlockData100(b, rng, x, y, z, data);
}
@@ -190,7 +190,7 @@ public class IrisDecorator {
return null;
}
public KList<BlockData> getBlockData(IrisDataManager data) {
public KList<BlockData> getBlockData(IrisData data) {
return blockData.aquire(() ->
{
KList<BlockData> blockData = new KList<>();
@@ -207,7 +207,7 @@ public class IrisDecorator {
});
}
public KList<BlockData> getBlockDataTops(IrisDataManager data) {
public KList<BlockData> getBlockDataTops(IrisData data) {
return blockDataTops.aquire(() ->
{
KList<BlockData> blockDataTops = new KList<>();

View File

@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.object.annotations.*;
import com.volmit.iris.util.collection.KList;
@@ -85,7 +85,7 @@ public class IrisDepositGenerator {
private final transient AtomicCache<KList<IrisObject>> objects = new AtomicCache<>();
private final transient AtomicCache<KList<BlockData>> blockData = new AtomicCache<>();
public IrisObject getClump(RNG rng, IrisDataManager rdata) {
public IrisObject getClump(RNG rng, IrisData rdata) {
KList<IrisObject> objects = this.objects.aquire(() ->
{
RNG rngv = rng.nextParallelRNG(3957778);
@@ -104,7 +104,7 @@ public class IrisDepositGenerator {
return Math.min(11, (int) Math.round(Math.pow(maxSize, 1D / 3D)));
}
private IrisObject generateClumpObject(RNG rngv, IrisDataManager rdata) {
private IrisObject generateClumpObject(RNG rngv, IrisData rdata) {
int s = rngv.i(minSize, maxSize);
int dim = Math.min(11, (int) Math.round(Math.pow(maxSize, 1D / 3D)));
int w = dim / 2;
@@ -124,11 +124,11 @@ public class IrisDepositGenerator {
return o;
}
private BlockData nextBlock(RNG rngv, IrisDataManager rdata) {
private BlockData nextBlock(RNG rngv, IrisData rdata) {
return getBlockData(rdata).get(rngv.i(0, getBlockData(rdata).size() - 1));
}
public KList<BlockData> getBlockData(IrisDataManager rdata) {
public KList<BlockData> getBlockData(IrisData rdata) {
return blockData.aquire(() ->
{
KList<BlockData> blockData = new KList<>();

View File

@@ -19,7 +19,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.DataProvider;
import com.volmit.iris.engine.noise.CNG;
@@ -63,7 +63,7 @@ public class IrisDimension extends IrisRegistrant {
@Desc("Create an inverted dimension in the sky (like the nether)")
private IrisDimension sky = null;
@RegistryListJigsaw
@RegistryListResource(IrisJigsawStructure.class)
@Desc("If defined, Iris will place the given jigsaw structure where minecraft should place the overworld stronghold.")
private String stronghold;
@@ -84,7 +84,7 @@ public class IrisDimension extends IrisRegistrant {
@Desc("Spawn Entities in this dimension over time. Iris will continually replenish these mobs just like vanilla does.")
@ArrayType(min = 1, type = String.class)
@RegistryListSpawner
@RegistryListResource(IrisSpawner.class)
private KList<String> entitySpawners = new KList<>();
@Desc("Add specific features in exact positions")
@@ -188,7 +188,7 @@ public class IrisDimension extends IrisRegistrant {
@Desc("The world environment")
private Environment environment = Environment.NORMAL;
@RegistryListRegion
@RegistryListResource(IrisRegion.class)
@Required
@ArrayType(min = 1, type = String.class)
@Desc("Define all of the regions to include in this dimension. Dimensions -> Regions -> Biomes -> Objects etc")
@@ -204,11 +204,11 @@ public class IrisDimension extends IrisRegistrant {
@Desc("The fluid height for this dimension")
private int fluidHeight = 63;
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@Desc("Keep this either undefined or empty. Setting any biome name into this will force iris to only generate the specified biome. Great for testing.")
private String focus = "";
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@Desc("Keep this either undefined or empty. Setting any region name into this will force iris to only generate the specified region. Great for testing.")
private String focusRegion = "";
@@ -372,7 +372,7 @@ public class IrisDimension extends IrisRegistrant {
KList<IrisRegion> r = new KList<>();
for (String i : getRegions()) {
r.add(IrisDataManager.loadAnyRegion(i));
r.add(IrisData.loadAnyRegion(i));
}
return r;

View File

@@ -20,7 +20,7 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListDimension;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -47,7 +47,7 @@ public class IrisDimensionIndex {
private boolean primary = false;
@Required
@RegistryListDimension
@RegistryListResource(IrisDimension.class)
@MinNumber(1)
@Desc("Name of dimension")
private String dimension = "";

View File

@@ -23,7 +23,7 @@ import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListEntity;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.util.format.C;
@@ -42,7 +42,7 @@ import org.bukkit.entity.Entity;
@Desc("Represents an entity spawn during initial chunk generation")
@Data
public class IrisEntitySpawn implements IRare {
@RegistryListEntity
@RegistryListResource(IrisEntity.class)
@Required
@Desc("The entity")
private String entity = "";

View File

@@ -22,7 +22,7 @@ import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListEntity;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
@@ -40,7 +40,7 @@ import org.bukkit.event.entity.EntitySpawnEvent;
@Desc("Represents an entity spawn")
@Data
public class IrisEntitySpawnOverride {
@RegistryListEntity
@RegistryListResource(IrisEntity.class)
@Required
@Desc("The entity")
private String entity = "";

View File

@@ -46,7 +46,7 @@ public class IrisFeature {
@Desc("The chance an object that should be place actually will place. Set to below 1 to affect objects in this zone")
private double objectChance = 1;
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@Desc("Apply a custom biome here")
private String customBiome = null;

View File

@@ -22,7 +22,7 @@ import com.volmit.iris.Iris;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListObject;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
@@ -43,7 +43,7 @@ import java.io.IOException;
@Data
@EqualsAndHashCode(callSuper = false)
public class IrisJigsawPiece extends IrisRegistrant {
@RegistryListObject
@RegistryListResource(IrisObject.class)
@Required
@Desc("The object this piece represents")
private String object = "";

View File

@@ -49,13 +49,13 @@ public class IrisJigsawPieceConnector {
@Desc("If set to true, this connector is allowed to place pieces inside of it's own piece. For example if you are adding a light post, or house on top of a path piece, you would set this to true to allow the piece to collide with the path bounding box.")
private boolean innerConnector = false;
@RegistryListJigsawPool
@RegistryListResource(IrisJigsawPool.class)
@Desc("Pick piece pools to place onto this connector")
@ArrayType(type = String.class, min = 1)
@Required
private KList<String> pools = new KList<>();
@RegistryListEntity
@RegistryListResource(IrisEntity.class)
@Desc("Pick an entity to spawn on this connector")
private String spawnEntity;

View File

@@ -20,7 +20,7 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListJigsaw;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -33,7 +33,7 @@ import lombok.experimental.Accessors;
@Desc("Represents a jigsaw placement")
@Data
public class IrisJigsawPlacement {
@RegistryListJigsaw
@RegistryListResource(IrisJigsawStructure.class)
@Required
@Desc("The jigsaw structure to use")
private String structure = "";

View File

@@ -20,7 +20,7 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListJigsawPiece;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
@@ -38,7 +38,7 @@ import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
public class IrisJigsawPool extends IrisRegistrant {
@RegistryListJigsawPiece
@RegistryListResource(IrisJigsawPiece.class)
@Required
@ArrayType(min = 1, type = String.class)
@Desc("A list of structure piece pools")

View File

@@ -37,7 +37,7 @@ import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
public class IrisJigsawStructure extends IrisRegistrant {
@RegistryListJigsawPiece
@RegistryListResource(IrisJigsawPiece.class)
@Required
@ArrayType(min = 1, type = String.class)
@Desc("The starting pieces. Randomly chooses a starting piece, then connects pieces using the pools define in the starting piece.")

View File

@@ -19,7 +19,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListJigsaw;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -36,7 +36,7 @@ import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
public class IrisJigsawStructurePlacement {
@RegistryListJigsaw
@RegistryListResource(IrisJigsawStructure.class)
@Required
@Desc("The structure to place")
private String structure;

View File

@@ -23,7 +23,7 @@ import com.volmit.iris.engine.data.DataProvider;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListLoot;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -39,7 +39,7 @@ public class IrisLootReference {
@Desc("Add = add on top of parent tables, Replace = clear first then add these. Clear = Remove all and dont add loot from this or parent.")
private LootMode mode = LootMode.ADD;
@RegistryListLoot
@RegistryListResource(IrisLootTable.class)
@ArrayType(min = 1, type = String.class)
@Desc("Add loot table registries here")
private KList<String> tables = new KList<>();

View File

@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.object.annotations.ArrayType;
@@ -55,7 +55,7 @@ public class IrisMaterialPalette {
private final transient AtomicCache<CNG> layerGenerator = new AtomicCache<>();
private final transient AtomicCache<CNG> heightGenerator = new AtomicCache<>();
public BlockData get(RNG rng, double x, double y, double z, IrisDataManager rdata) {
public BlockData get(RNG rng, double x, double y, double z, IrisData rdata) {
if (getBlockData(rdata).isEmpty()) {
return null;
}
@@ -67,7 +67,7 @@ public class IrisMaterialPalette {
return getLayerGenerator(rng, rdata).fit(getBlockData(rdata), x / zoom, y / zoom, z / zoom);
}
public CNG getLayerGenerator(RNG rng, IrisDataManager rdata) {
public CNG getLayerGenerator(RNG rng, IrisData rdata) {
return layerGenerator.aquire(() ->
{
RNG rngx = rng.nextParallelRNG(-23498896 + getBlockData(rdata).size());
@@ -92,7 +92,7 @@ public class IrisMaterialPalette {
return this;
}
public KList<BlockData> getBlockData(IrisDataManager rdata) {
public KList<BlockData> getBlockData(IrisData rdata) {
return blockData.aquire(() ->
{
KList<BlockData> blockData = new KList<>();

View File

@@ -48,22 +48,22 @@ public class IrisMod extends IrisRegistrant {
private int overrideFluidHeight = -1;
@Desc("A list of biomes to remove")
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@ArrayType(type = String.class, min = 1)
private KList<String> removeBiomes = new KList<>();
@Desc("A list of objects to remove")
@RegistryListObject
@RegistryListResource(IrisObject.class)
@ArrayType(type = String.class, min = 1)
private KList<String> removeObjects = new KList<>();
@Desc("A list of regions to remove")
@RegistryListRegion
@RegistryListResource(IrisRegion.class)
@ArrayType(type = String.class, min = 1)
private KList<String> removeRegions = new KList<>();
@Desc("A list of regions to inject")
@RegistryListRegion
@RegistryListResource(IrisRegion.class)
@ArrayType(type = String.class, min = 1)
private KList<String> injectRegions = new KList<>();

View File

@@ -18,7 +18,10 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.engine.object.annotations.*;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -33,12 +36,12 @@ import lombok.experimental.Accessors;
public class IrisModBiomeInjector {
@Required
@Desc("The region to find")
@RegistryListRegion
@RegistryListResource(IrisRegion.class)
private String region = "";
@Required
@Desc("A biome to inject into the region")
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@ArrayType(type = String.class, min = 1)
private KList<String> inject = new KList<>();
}

View File

@@ -20,7 +20,7 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListBiome;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
@@ -36,12 +36,12 @@ import lombok.experimental.Accessors;
public class IrisModBiomeReplacer {
@Required
@Desc("A list of biomes to find")
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@ArrayType(type = String.class, min = 1)
private KList<String> find = new KList<>();
@Required
@Desc("A biome to replace it with")
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
private String replace = "";
}

View File

@@ -20,7 +20,7 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListBiome;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -44,6 +44,6 @@ public class IrisModNoiseStyleReplacer {
@Required
@Desc("A noise style to replace it with")
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
private IrisGeneratorStyle replace = new IrisGeneratorStyle();
}

View File

@@ -20,7 +20,7 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListBiome;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
@@ -36,7 +36,7 @@ import lombok.experimental.Accessors;
public class IrisModObjectPlacementBiomeInjector {
@Required
@Desc("The biome to find")
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
private String biome = "";
@Required

View File

@@ -20,7 +20,7 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListRegion;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
@@ -36,7 +36,7 @@ import lombok.experimental.Accessors;
public class IrisModObjectPlacementRegionInjector {
@Required
@Desc("The biome to find")
@RegistryListRegion
@RegistryListResource(IrisRegion.class)
private String biome = "";
@Required

View File

@@ -18,7 +18,10 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.engine.object.annotations.*;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -33,12 +36,12 @@ import lombok.experimental.Accessors;
public class IrisModObjectReplacer {
@Required
@Desc("A list of objects to find")
@RegistryListObject
@RegistryListResource(IrisObject.class)
@ArrayType(type = String.class, min = 1)
private KList<String> find = new KList<>();
@Required
@Desc("An object to replace it with")
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
private String replace = "";
}

View File

@@ -20,7 +20,7 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListRegion;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
@@ -36,12 +36,12 @@ import lombok.experimental.Accessors;
public class IrisModRegionReplacer {
@Required
@Desc("A list of regions to find")
@RegistryListRegion
@RegistryListResource(IrisRegion.class)
@ArrayType(type = String.class, min = 1)
private KList<String> find = new KList<>();
@Required
@Desc("A region to replace it with")
@RegistryListRegion
@RegistryListResource(IrisRegion.class)
private String replace = "";
}

View File

@@ -19,7 +19,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.framework.placer.HeightmapObjectPlacer;
@@ -404,23 +404,23 @@ public class IrisObject extends IrisRegistrant {
}
}
public int place(int x, int z, IObjectPlacer placer, IrisObjectPlacement config, RNG rng, IrisDataManager rdata) {
public int place(int x, int z, IObjectPlacer placer, IrisObjectPlacement config, RNG rng, IrisData rdata) {
return place(x, -1, z, placer, config, rng, rdata);
}
public int place(int x, int z, IObjectPlacer placer, IrisObjectPlacement config, RNG rng, CarveResult c, IrisDataManager rdata) {
public int place(int x, int z, IObjectPlacer placer, IrisObjectPlacement config, RNG rng, CarveResult c, IrisData rdata) {
return place(x, -1, z, placer, config, rng, null, c, rdata);
}
public int place(int x, int yv, int z, IObjectPlacer placer, IrisObjectPlacement config, RNG rng, IrisDataManager rdata) {
public int place(int x, int yv, int z, IObjectPlacer placer, IrisObjectPlacement config, RNG rng, IrisData rdata) {
return place(x, yv, z, placer, config, rng, null, null, rdata);
}
public int place(Location loc, IObjectPlacer placer, IrisObjectPlacement config, RNG rng, IrisDataManager rdata) {
public int place(Location loc, IObjectPlacer placer, IrisObjectPlacement config, RNG rng, IrisData rdata) {
return place(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), placer, config, rng, rdata);
}
public int place(int x, int yv, int z, IObjectPlacer oplacer, IrisObjectPlacement config, RNG rng, Consumer<BlockPosition> listener, CarveResult c, IrisDataManager rdata) {
public int place(int x, int yv, int z, IObjectPlacer oplacer, IrisObjectPlacement config, RNG rng, Consumer<BlockPosition> listener, CarveResult c, IrisData rdata) {
IObjectPlacer placer = (config.getHeightmap() != null) ? new HeightmapObjectPlacer(rng, x, yv, z, config, oplacer) : oplacer;
if (config.isSmartBore()) {

View File

@@ -18,11 +18,11 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListLoot;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
@@ -46,7 +46,7 @@ public class IrisObjectLoot {
@Desc("The loot table name")
@Required
@RegistryListLoot
@RegistryListResource(IrisLootTable.class)
private String name;
@Desc("The weight of this loot table being chosen")
@@ -54,7 +54,7 @@ public class IrisObjectLoot {
private final transient AtomicCache<KList<BlockData>> filterCache = new AtomicCache<>();
public KList<BlockData> getFilter(IrisDataManager rdata) {
public KList<BlockData> getFilter(IrisData rdata) {
return filterCache.aquire(() ->
{
KList<BlockData> b = new KList<>();
@@ -71,7 +71,7 @@ public class IrisObjectLoot {
});
}
public boolean matchesFilter(IrisDataManager manager, BlockData data) {
public boolean matchesFilter(IrisData manager, BlockData data) {
for (BlockData filterData : getFilter(manager)) {
if (filterData.matches(data)) return true;
}

View File

@@ -19,7 +19,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.data.DataProvider;
@@ -46,7 +46,7 @@ import org.bukkit.block.data.BlockData;
@Desc("Represents an iris object placer. It places objects.")
@Data
public class IrisObjectPlacement {
@RegistryListObject
@RegistryListResource(IrisObject.class)
@Required
@ArrayType(min = 1, type = String.class)
@Desc("List of objects to place")
@@ -231,7 +231,7 @@ public class IrisObjectPlacement {
final transient KMap<Material, KMap<BlockData, WeightedRandom<IrisLootTable>>> exact = new KMap<>();
}
private TableCache getCache(IrisDataManager manager) {
private TableCache getCache(IrisData manager) {
return cache.aquire(() -> {
TableCache tc = new TableCache();
@@ -280,7 +280,7 @@ public class IrisObjectPlacement {
* @param dataManager Iris Data Manager
* @return The loot table it should use.
*/
public IrisLootTable getTable(BlockData data, IrisDataManager dataManager) {
public IrisLootTable getTable(BlockData data, IrisData dataManager) {
TableCache cache = getCache(dataManager);
if (B.isStorageChest(data)) {

View File

@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.object.annotations.*;
@@ -57,7 +57,7 @@ public class IrisObjectReplace {
private final transient AtomicCache<KList<BlockData>> findData = new AtomicCache<>();
private final transient AtomicCache<KList<BlockData>> replaceData = new AtomicCache<>();
public KList<BlockData> getFind(IrisDataManager rdata) {
public KList<BlockData> getFind(IrisData rdata) {
return findData.aquire(() ->
{
KList<BlockData> b = new KList<>();
@@ -74,7 +74,7 @@ public class IrisObjectReplace {
});
}
public BlockData getReplace(RNG seed, double x, double y, double z, IrisDataManager rdata) {
public BlockData getReplace(RNG seed, double x, double y, double z, IrisData rdata) {
return getReplace().get(seed, x, y, z, rdata);
}
}

View File

@@ -20,7 +20,7 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListObject;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -42,7 +42,7 @@ public class IrisRareObject {
@Desc("The rarity is 1 in X")
private int rarity = 1;
@RegistryListObject
@RegistryListResource(IrisObject.class)
@Required
@Desc("The object to place if rarity check passed")
private String object = "";

View File

@@ -19,8 +19,8 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.gui.components.RenderType;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.DataProvider;
import com.volmit.iris.engine.noise.CNG;
@@ -69,7 +69,7 @@ public class IrisRegion extends IrisRegistrant implements IRare {
@Desc("Spawn Entities in this region over time. Iris will continually replenish these mobs just like vanilla does.")
@ArrayType(min = 1, type = String.class)
@RegistryListSpawner
@RegistryListResource(IrisSpawner.class)
private KList<String> entitySpawners = new KList<>();
@MinNumber(1)
@@ -134,35 +134,35 @@ public class IrisRegion extends IrisRegistrant implements IRare {
@Desc("The biome implosion ratio, how much to implode biomes into children (chance)")
private double biomeImplosionRatio = 0.4;
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@Required
@ArrayType(min = 1, type = String.class)
@Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.")
private KList<String> landBiomes = new KList<>();
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@Required
@ArrayType(min = 1, type = String.class)
@Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.")
private KList<String> seaBiomes = new KList<>();
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@Required
@ArrayType(min = 1, type = String.class)
@Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.")
private KList<String> shoreBiomes = new KList<>();
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@ArrayType(min = 1, type = String.class)
@Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.")
private KList<String> riverBiomes = new KList<>();
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@ArrayType(min = 1, type = String.class)
@Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.")
private KList<String> lakeBiomes = new KList<>();
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@ArrayType(min = 1, type = String.class)
@Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.")
private KList<String> caveBiomes = new KList<>();
@@ -493,7 +493,7 @@ public class IrisRegion extends IrisRegistrant implements IRare {
continue;
}
IrisBiome biome = IrisDataManager.loadAnyBiome(i);
IrisBiome biome = IrisData.loadAnyBiome(i);
names.remove(i);
if (biome == null) {

View File

@@ -33,7 +33,7 @@ import lombok.experimental.Accessors;
@Desc("A ridge config")
@Data
public class IrisRegionRidge {
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@Required
@Desc("The biome name")
private String biome = "";

View File

@@ -22,7 +22,7 @@ import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.noise.CellGenerator;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListBiome;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
@@ -36,7 +36,7 @@ import lombok.experimental.Accessors;
@Desc("A spot config")
@Data
public class IrisRegionSpot {
@RegistryListBiome
@RegistryListResource(IrisBiome.class)
@Required
@Desc("The biome to be placed")
private String biome = "";

View File

@@ -19,7 +19,7 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.project.loader.IrisData;
import lombok.Data;
import java.awt.*;
@@ -27,7 +27,7 @@ import java.io.File;
@Data
public abstract class IrisRegistrant {
private transient IrisDataManager loader;
private transient IrisData loader;
private transient String loadKey;

View File

@@ -1,31 +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.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target({PARAMETER, TYPE, FIELD})
public @interface RegistryListBiome {
}

View File

@@ -1,31 +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.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target({PARAMETER, TYPE, FIELD})
public @interface RegistryListDimension {
}

View File

@@ -1,31 +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.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target({PARAMETER, TYPE, FIELD})
public @interface RegistryListGenerator {
}

View File

@@ -1,31 +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.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target({PARAMETER, TYPE, FIELD})
public @interface RegistryListJigsaw {
}

View File

@@ -1,31 +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.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target({PARAMETER, TYPE, FIELD})
public @interface RegistryListJigsawPiece {
}

View File

@@ -1,31 +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.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target({PARAMETER, TYPE, FIELD})
public @interface RegistryListJigsawPool {
}

View File

@@ -1,31 +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.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target({PARAMETER, TYPE, FIELD})
public @interface RegistryListLoot {
}

View File

@@ -1,31 +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.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target({PARAMETER, TYPE, FIELD})
public @interface RegistryListObject {
}

View File

@@ -1,31 +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.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target({PARAMETER, TYPE, FIELD})
public @interface RegistryListRegion {
}

View File

@@ -18,6 +18,8 @@
package com.volmit.iris.engine.object.annotations;
import com.volmit.iris.engine.object.IrisRegistrant;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
@@ -26,6 +28,6 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target({PARAMETER, TYPE, FIELD})
public @interface RegistryListEntity {
public @interface RegistryListResource {
Class<? extends IrisRegistrant> value();
}

View File

@@ -1,31 +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.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target({PARAMETER, TYPE, FIELD})
public @interface RegistryListSpawner {
}