mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 10:12:53 +00:00
Works, but somehow i broke parallax
This commit is contained in:
parent
4c44957764
commit
bf9c4c602b
@ -31,7 +31,6 @@ public class Iris extends VolmitPlugin
|
||||
{
|
||||
public static KList<GroupedExecutor> executors = new KList<>();
|
||||
public static Iris instance;
|
||||
public static IrisDataManager globaldata;
|
||||
public static ProjectManager proj;
|
||||
public static ConversionManager convert;
|
||||
public static IrisHotloadManager hotloader;
|
||||
@ -154,7 +153,6 @@ public class Iris extends VolmitPlugin
|
||||
proj = new ProjectManager();
|
||||
hotloader = new IrisHotloadManager();
|
||||
convert = new ConversionManager();
|
||||
globaldata = new IrisDataManager(getDataFolder());
|
||||
wand = new WandManager();
|
||||
struct = new StructureManager();
|
||||
board = new IrisBoardManager();
|
||||
@ -194,6 +192,7 @@ public class Iris extends VolmitPlugin
|
||||
board.disable();
|
||||
Bukkit.getScheduler().cancelTasks(this);
|
||||
HandlerList.unregisterAll((Plugin) this);
|
||||
IrisDataManager.managers.clear();
|
||||
super.onDisable();
|
||||
}
|
||||
|
||||
|
@ -80,26 +80,33 @@ public class IrisEngine extends BlockPopulator implements Engine
|
||||
|
||||
@Override
|
||||
public void generate(int x, int z, Hunk<BlockData> vblocks, Hunk<Biome> vbiomes) {
|
||||
Hunk<Biome> biomes = vbiomes;
|
||||
Hunk<BlockData> blocks = vblocks.synchronize().listen((xx,y,zz,t) -> catchBlockUpdates(x+xx,y+getMinHeight(),z+zz, t));
|
||||
try
|
||||
{
|
||||
Hunk<Biome> biomes = vbiomes;
|
||||
Hunk<BlockData> blocks = vblocks.synchronize().listen((xx,y,zz,t) -> catchBlockUpdates(x+xx,y+getMinHeight(),z+zz, t));
|
||||
|
||||
MultiBurst.burst.burst(
|
||||
() -> getFramework().getEngineParallax().generateParallaxArea(x, z),
|
||||
() -> getFramework().getBiomeActuator().actuate(x, z, biomes),
|
||||
() -> getFramework().getTerrainActuator().actuate(x, z, blocks)
|
||||
);
|
||||
MultiBurst.burst.burst(
|
||||
() -> getFramework().getCaveModifier().modify(x, z, blocks),
|
||||
() -> getFramework().getRavineModifier().modify(x, z, blocks)
|
||||
);
|
||||
MultiBurst.burst.burst(
|
||||
() -> getFramework().getDecorantActuator().actuate(x, z, blocks),
|
||||
() -> getFramework().getDepositModifier().modify(x, z, blocks),
|
||||
() -> getFramework().getPostModifier().modify(x, z, blocks),
|
||||
() -> getFramework().getEngineParallax().insertParallax(x, z, blocks)
|
||||
);
|
||||
MultiBurst.burst.burst(
|
||||
() -> getFramework().getEngineParallax().generateParallaxArea(x, z),
|
||||
() -> getFramework().getBiomeActuator().actuate(x, z, biomes),
|
||||
() -> getFramework().getTerrainActuator().actuate(x, z, blocks)
|
||||
);
|
||||
MultiBurst.burst.burst(
|
||||
() -> getFramework().getCaveModifier().modify(x, z, blocks),
|
||||
() -> getFramework().getRavineModifier().modify(x, z, blocks)
|
||||
);
|
||||
MultiBurst.burst.burst(
|
||||
() -> getFramework().getDecorantActuator().actuate(x, z, blocks),
|
||||
() -> getFramework().getDepositModifier().modify(x, z, blocks),
|
||||
() -> getFramework().getPostModifier().modify(x, z, blocks),
|
||||
() -> getFramework().getEngineParallax().insertParallax(x, z, blocks)
|
||||
);
|
||||
|
||||
getFramework().recycle();
|
||||
getFramework().recycle();
|
||||
}
|
||||
catch(Throwable e)
|
||||
{
|
||||
fail("Failed to generate " + x + ", " + z, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -51,6 +51,8 @@ public class IrisEngineCompound implements EngineCompound {
|
||||
Iris.info("Initializing Engine Composite for " + world.getName());
|
||||
this.world = world;
|
||||
engineMetadata = EngineData.load(getEngineMetadataFile());
|
||||
engineMetadata.setDimension(rootDimension.getLoadKey());
|
||||
engineMetadata.setLastVersion(Iris.instance.getDescription().getVersion());
|
||||
saveEngineMetadata();
|
||||
populators = new KList<>();
|
||||
|
||||
@ -83,7 +85,7 @@ public class IrisEngineCompound implements EngineCompound {
|
||||
{
|
||||
IrisDimensionIndex index = rootDimension.getDimensionalComposite().get(i);
|
||||
IrisDimension dimension = data.getDimensionLoader().load(index.getDimension());
|
||||
engines[i] = new IrisEngine(new EngineTarget(world, dimension, data.copy().preferFolder(rootDimension.getLoadKey()), (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);
|
||||
buf += engines[i].getHeight();
|
||||
}
|
||||
|
@ -1,35 +1,20 @@
|
||||
package com.volmit.iris.manager;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.bukkit.World.Environment;
|
||||
import org.bukkit.block.Biome;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.volmit.iris.object.IrisBiome;
|
||||
import com.volmit.iris.object.IrisDecorator;
|
||||
import com.volmit.iris.object.IrisBlockData;
|
||||
import com.volmit.iris.object.IrisDimension;
|
||||
import com.volmit.iris.object.IrisEntity;
|
||||
import com.volmit.iris.object.IrisGenerator;
|
||||
import com.volmit.iris.object.IrisLootTable;
|
||||
import com.volmit.iris.object.IrisNoiseGenerator;
|
||||
import com.volmit.iris.object.IrisObjectPlacement;
|
||||
import com.volmit.iris.object.IrisRegion;
|
||||
import com.volmit.iris.object.IrisStructure;
|
||||
import com.volmit.iris.util.IO;
|
||||
import com.volmit.iris.util.JSONObject;
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.object.*;
|
||||
import com.volmit.iris.util.KMap;
|
||||
import com.volmit.iris.util.ObjectResourceLoader;
|
||||
import com.volmit.iris.util.RNG;
|
||||
import com.volmit.iris.util.ResourceLoader;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Data
|
||||
public class IrisDataManager
|
||||
{
|
||||
private File dataFolder;
|
||||
private File packs;
|
||||
private boolean prod;
|
||||
public static final KMap<Integer, IrisDataManager> managers = new KMap<>();
|
||||
private ResourceLoader<IrisBiome> biomeLoader;
|
||||
private ResourceLoader<IrisLootTable> lootLoader;
|
||||
private ResourceLoader<IrisRegion> regionLoader;
|
||||
@ -39,34 +24,64 @@ public class IrisDataManager
|
||||
private ResourceLoader<IrisEntity> entityLoader;
|
||||
private ResourceLoader<IrisBlockData> blockLoader;
|
||||
private ObjectResourceLoader objectLoader;
|
||||
private boolean closed;
|
||||
private final File dataFolder;
|
||||
private final int id;
|
||||
|
||||
public IrisDataManager(File dataFolder)
|
||||
{
|
||||
this(dataFolder, false);
|
||||
}
|
||||
|
||||
public IrisDataManager(File dataFolder, boolean v2)
|
||||
public IrisDataManager(File dataFolder, boolean oneshot)
|
||||
{
|
||||
this.dataFolder = dataFolder;
|
||||
this.packs = new File(dataFolder, ProjectManager.WORKSPACE_NAME);
|
||||
boolean pr = false;
|
||||
if(!packs.exists())
|
||||
{
|
||||
if(v2)
|
||||
{
|
||||
pr = true;
|
||||
packs = new File(dataFolder, "iris/pack");
|
||||
}
|
||||
|
||||
else if(new File(dataFolder, "iris").exists())
|
||||
{
|
||||
pr = true;
|
||||
packs = new File(dataFolder, "iris");
|
||||
}
|
||||
}
|
||||
|
||||
this.id = RNG.r.imax();
|
||||
closed = false;
|
||||
hotloaded();
|
||||
prod = pr;
|
||||
|
||||
if(!oneshot)
|
||||
{
|
||||
managers.put(id, this);
|
||||
}
|
||||
}
|
||||
|
||||
public void close()
|
||||
{
|
||||
closed = true;
|
||||
managers.remove(id);
|
||||
dump();
|
||||
this.lootLoader = null;
|
||||
this.entityLoader = null;
|
||||
this.regionLoader = null;
|
||||
this.biomeLoader = null;
|
||||
this.dimensionLoader = null;
|
||||
this.structureLoader = null;
|
||||
this.generatorLoader = null;
|
||||
this.blockLoader = null;
|
||||
this.objectLoader = null;
|
||||
}
|
||||
|
||||
public static void dumpManagers()
|
||||
{
|
||||
for(IrisDataManager i : managers.v())
|
||||
{
|
||||
Iris.warn(i.getId() + " @ " + i.getDataFolder().getAbsolutePath());
|
||||
printData(i.lootLoader);
|
||||
printData(i.entityLoader);
|
||||
printData(i.regionLoader);
|
||||
printData(i.biomeLoader);
|
||||
printData(i.dimensionLoader);
|
||||
printData(i.structureLoader);
|
||||
printData(i.generatorLoader);
|
||||
printData(i.blockLoader);
|
||||
printData(i.objectLoader);
|
||||
}
|
||||
}
|
||||
|
||||
private static void printData(ResourceLoader<?> rl)
|
||||
{
|
||||
Iris.warn(" " + rl.getResourceTypeName() + " @ /" + rl.getFolderName() + ": Cache=" + rl.getLoadCache().size() + " Folders=" + rl.getFolders().size());
|
||||
}
|
||||
|
||||
public IrisDataManager copy() {
|
||||
@ -75,34 +90,34 @@ public class IrisDataManager
|
||||
|
||||
public void hotloaded()
|
||||
{
|
||||
if(prod)
|
||||
if(closed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
File packs = this.packs.getName().equals(ProjectManager.WORKSPACE_NAME) ? this.packs : dataFolder;
|
||||
File packs = dataFolder;
|
||||
packs.mkdirs();
|
||||
this.lootLoader = new ResourceLoader<>(packs, "loot", "Loot", IrisLootTable.class);
|
||||
this.entityLoader = new ResourceLoader<>(packs, "entities", "Entity", IrisEntity.class);
|
||||
this.regionLoader = new ResourceLoader<>(packs, "regions", "Region", IrisRegion.class);
|
||||
this.biomeLoader = new ResourceLoader<>(packs, "biomes", "Biome", IrisBiome.class);
|
||||
this.dimensionLoader = new ResourceLoader<>(packs, "dimensions", "Dimension", IrisDimension.class);
|
||||
this.structureLoader = new ResourceLoader<>(packs, "structures", "Structure", IrisStructure.class);
|
||||
this.generatorLoader = new ResourceLoader<>(packs, "generators", "Generator", IrisGenerator.class);
|
||||
this.blockLoader = new ResourceLoader<>(packs, "blocks", "Block", IrisBlockData.class);
|
||||
this.objectLoader = new ObjectResourceLoader(packs, "objects", "Object");
|
||||
|
||||
if(packs.getName().equals(ProjectManager.WORKSPACE_NAME))
|
||||
{
|
||||
writeExamples();
|
||||
}
|
||||
this.lootLoader = new ResourceLoader<>(packs, this, "loot", "Loot", IrisLootTable.class);
|
||||
this.entityLoader = new ResourceLoader<>(packs,this, "entities", "Entity", IrisEntity.class);
|
||||
this.regionLoader = new ResourceLoader<>(packs, this, "regions", "Region", IrisRegion.class);
|
||||
this.biomeLoader = new ResourceLoader<>(packs, this, "biomes", "Biome", IrisBiome.class);
|
||||
this.dimensionLoader = new ResourceLoader<>(packs, this, "dimensions", "Dimension", IrisDimension.class);
|
||||
this.structureLoader = new ResourceLoader<>(packs, this, "structures", "Structure", IrisStructure.class);
|
||||
this.generatorLoader = new ResourceLoader<>(packs, this, "generators", "Generator", IrisGenerator.class);
|
||||
this.blockLoader = new ResourceLoader<>(packs,this, "blocks", "Block", IrisBlockData.class);
|
||||
this.objectLoader = new ObjectResourceLoader(packs, this, "objects", "Object");
|
||||
}
|
||||
|
||||
public void dump()
|
||||
{
|
||||
if(closed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
biomeLoader.clearCache();
|
||||
blockLoader.clearCache();
|
||||
lootLoader.clearCache();
|
||||
objectLoader.clearCache();
|
||||
regionLoader.clearCache();
|
||||
dimensionLoader.clearCache();
|
||||
entityLoader.clearCache();
|
||||
@ -110,95 +125,13 @@ public class IrisDataManager
|
||||
structureLoader.clearCache();
|
||||
}
|
||||
|
||||
private void writeExamples()
|
||||
{
|
||||
File examples = new File(dataFolder, "example");
|
||||
examples.mkdirs();
|
||||
String biomes = "";
|
||||
String envs = "";
|
||||
|
||||
for(Biome i : Biome.values())
|
||||
{
|
||||
biomes += i.name() + "\n";
|
||||
}
|
||||
|
||||
for(Environment i : Environment.values())
|
||||
{
|
||||
envs += i.name() + "\n";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
new File(examples, "example-pack/regions").mkdirs();
|
||||
new File(examples, "example-pack/biomes").mkdirs();
|
||||
new File(examples, "example-pack/dimensions").mkdirs();
|
||||
new File(examples, "example-pack/generators").mkdirs();
|
||||
IO.writeAll(new File(examples, "biome-list.txt"), biomes);
|
||||
IO.writeAll(new File(examples, "environment-list.txt"), envs);
|
||||
|
||||
IrisGenerator gen = new IrisGenerator();
|
||||
IrisNoiseGenerator n = new IrisNoiseGenerator();
|
||||
n.setSeed(1000);
|
||||
IrisNoiseGenerator nf = new IrisNoiseGenerator();
|
||||
nf.setOctaves(3);
|
||||
nf.setOpacity(16);
|
||||
nf.setZoom(24);
|
||||
nf.setSeed(44);
|
||||
n.getFracture().add(nf);
|
||||
IrisNoiseGenerator nf2 = new IrisNoiseGenerator();
|
||||
nf2.setOctaves(8);
|
||||
nf2.setOpacity(24);
|
||||
nf2.setZoom(64);
|
||||
nf2.setSeed(55);
|
||||
n.getFracture().add(nf2);
|
||||
gen.getComposite().add(n);
|
||||
|
||||
IrisDimension dim = new IrisDimension();
|
||||
|
||||
IrisRegion region = new IrisRegion();
|
||||
region.getLandBiomes().add("plains");
|
||||
region.getLandBiomes().add("desert");
|
||||
region.getLandBiomes().add("forest");
|
||||
region.getLandBiomes().add("mountains");
|
||||
region.getSeaBiomes().add("ocean");
|
||||
region.getShoreBiomes().add("beach");
|
||||
|
||||
IrisObjectPlacement o = new IrisObjectPlacement();
|
||||
o.getPlace().add("schematic1");
|
||||
o.getPlace().add("schematic2");
|
||||
|
||||
IrisBiome biome = new IrisBiome();
|
||||
biome.getChildren().add("another_biome");
|
||||
biome.getDecorators().add(new IrisDecorator());
|
||||
biome.getObjects().add(o);
|
||||
|
||||
IO.writeAll(new File(examples, "example-pack/biomes/example-biome.json"), new JSONObject(new Gson().toJson(biome)).toString(4));
|
||||
IO.writeAll(new File(examples, "example-pack/regions/example-region.json"), new JSONObject(new Gson().toJson(region)).toString(4));
|
||||
IO.writeAll(new File(examples, "example-pack/dimensions/example-dimension.json"), new JSONObject(new Gson().toJson(dim)).toString(4));
|
||||
IO.writeAll(new File(examples, "example-pack/generators/example-generator.json"), new JSONObject(new Gson().toJson(gen)).toString(4));
|
||||
}
|
||||
|
||||
catch(Throwable e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public IrisDataManager preferFolder(String name)
|
||||
{
|
||||
biomeLoader.preferFolder(name);
|
||||
blockLoader.preferFolder(name);
|
||||
lootLoader.preferFolder(name);
|
||||
regionLoader.preferFolder(name);
|
||||
entityLoader.preferFolder(name);
|
||||
dimensionLoader.preferFolder(name);
|
||||
generatorLoader.preferFolder(name);
|
||||
structureLoader.preferFolder(name);
|
||||
return this;
|
||||
}
|
||||
|
||||
public void clearLists()
|
||||
{
|
||||
if(closed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
lootLoader.clearList();
|
||||
blockLoader.clearList();
|
||||
entityLoader.clearList();
|
||||
@ -207,5 +140,77 @@ public class IrisDataManager
|
||||
dimensionLoader.clearList();
|
||||
generatorLoader.clearList();
|
||||
structureLoader.clearList();
|
||||
objectLoader.clearList();
|
||||
}
|
||||
|
||||
public static IrisObject loadAnyObject(String key)
|
||||
{
|
||||
return loadAny(key, (dm) -> dm.getObjectLoader().load(key, false));
|
||||
}
|
||||
|
||||
public static IrisBiome loadAnyBiome(String key)
|
||||
{
|
||||
return loadAny(key, (dm) -> dm.getBiomeLoader().load(key, false));
|
||||
}
|
||||
|
||||
public static IrisStructure loadAnyStructure(String key)
|
||||
{
|
||||
return loadAny(key, (dm) -> dm.getStructureLoader().load(key, false));
|
||||
}
|
||||
|
||||
public static IrisEntity loadAnyEntity(String key)
|
||||
{
|
||||
return loadAny(key, (dm) -> dm.getEntityLoader().load(key, false));
|
||||
}
|
||||
|
||||
public static IrisLootTable loadAnyLootTable(String key)
|
||||
{
|
||||
return loadAny(key, (dm) -> dm.getLootLoader().load(key, false));
|
||||
}
|
||||
|
||||
public static IrisBlockData loadAnyBlock(String key)
|
||||
{
|
||||
return loadAny(key, (dm) -> dm.getBlockLoader().load(key, false));
|
||||
}
|
||||
|
||||
public static IrisRegion loadAnyRegion(String key)
|
||||
{
|
||||
return loadAny(key, (dm) -> dm.getRegionLoader().load(key, false));
|
||||
}
|
||||
|
||||
public static IrisDimension loadAnyDimension(String key)
|
||||
{
|
||||
return loadAny(key, (dm) -> dm.getDimensionLoader().load(key, false));
|
||||
}
|
||||
|
||||
public static IrisGenerator loadAnyGenerator(String key)
|
||||
{
|
||||
return loadAny(key, (dm) -> dm.getGeneratorLoader().load(key, false));
|
||||
}
|
||||
|
||||
public static <T extends IrisRegistrant> T loadAny(String key, Function<IrisDataManager, T> v) {
|
||||
try
|
||||
{
|
||||
for(File i : Iris.instance.getDataFolder("packs").listFiles())
|
||||
{
|
||||
if(i.isDirectory())
|
||||
{
|
||||
IrisDataManager dm = new IrisDataManager(i, true);
|
||||
T t = v.apply(dm);
|
||||
|
||||
if(t != null)
|
||||
{
|
||||
return t;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
catch(Throwable e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,16 +1,15 @@
|
||||
package com.volmit.iris.manager;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.IrisSettings;
|
||||
import com.volmit.iris.generator.legacy.scaffold.IrisContext;
|
||||
import com.volmit.iris.util.ChronoLatch;
|
||||
import com.volmit.iris.util.FolderWatcher;
|
||||
import com.volmit.iris.util.J;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class IrisHotloadManager
|
||||
{
|
||||
@ -160,7 +159,6 @@ public class IrisHotloadManager
|
||||
}
|
||||
|
||||
Bukkit.getConsoleSender().sendMessage(Iris.instance.getTag("Studio") + m);
|
||||
Iris.globaldata.hotloaded();
|
||||
ch.onHotloaded();
|
||||
busy = false;
|
||||
});
|
||||
|
@ -33,12 +33,6 @@ public class IrisProject
|
||||
this.name = path.getName();
|
||||
}
|
||||
|
||||
private static void flush()
|
||||
{
|
||||
Iris.globaldata.dump();
|
||||
Iris.globaldata.preferFolder(null);
|
||||
}
|
||||
|
||||
public boolean isOpen()
|
||||
{
|
||||
return activeProvider != null;
|
||||
@ -58,13 +52,12 @@ public class IrisProject
|
||||
close();
|
||||
}
|
||||
|
||||
flush();
|
||||
IrisDimension d = Iris.globaldata.getDimensionLoader().load(getName());
|
||||
IrisDimension d = IrisDataManager.loadAnyDimension(getName());
|
||||
J.attemptAsync(() ->
|
||||
{
|
||||
try
|
||||
{
|
||||
File f = d.getLoadFile().getParentFile().getParentFile();
|
||||
File f = d.getLoader().getDataFolder();
|
||||
|
||||
for(File i : f.listFiles())
|
||||
{
|
||||
@ -98,7 +91,6 @@ public class IrisProject
|
||||
return;
|
||||
}
|
||||
|
||||
Iris.globaldata.dump();
|
||||
String wfp = "iris/" + UUID.randomUUID();
|
||||
|
||||
WorldCreator c = new IrisWorldCreator().dimension(getName())
|
||||
@ -184,7 +176,6 @@ public class IrisProject
|
||||
File folder = activeProvider.getTarget().getWorld().getWorldFolder();
|
||||
Iris.linkMultiverseCore.removeFromConfig(activeProvider.getTarget().getWorld().getName());
|
||||
Bukkit.unloadWorld(activeProvider.getTarget().getWorld().getName(), false);
|
||||
flush();
|
||||
J.attemptAsync(() -> IO.delete(folder));
|
||||
activeProvider = null;
|
||||
}
|
||||
@ -230,7 +221,6 @@ public class IrisProject
|
||||
|
||||
public JSONObject createCodeWorkspaceConfig()
|
||||
{
|
||||
Iris.globaldata.clearLists();
|
||||
JSONObject ws = new JSONObject();
|
||||
JSONArray folders = new JSONArray();
|
||||
JSONObject folder = new JSONObject();
|
||||
@ -260,18 +250,16 @@ public class IrisProject
|
||||
jc.put("editor.suggest.insertMode", "replace");
|
||||
settings.put("[json]", jc);
|
||||
settings.put("json.maxItemsComputed", 15000);
|
||||
String gg = Iris.globaldata.getBiomeLoader().getPreferredFolder();
|
||||
Iris.globaldata.preferFolder(getName());
|
||||
JSONArray schemas = new JSONArray();
|
||||
schemas.put(getSchemaEntry(IrisDimension.class, Iris.globaldata, "/dimensions/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisEntity.class, Iris.globaldata, "/entities/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisBiome.class, Iris.globaldata, "/biomes/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisRegion.class, Iris.globaldata, "/regions/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisGenerator.class, Iris.globaldata, "/generators/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisStructure.class, Iris.globaldata, "/structures/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisBlockData.class, Iris.globaldata, "/blocks/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisLootTable.class, Iris.globaldata, "/loot/*.json"));
|
||||
Iris.globaldata.preferFolder(gg);
|
||||
IrisDataManager dm = new IrisDataManager(getPath());
|
||||
schemas.put(getSchemaEntry(IrisDimension.class, dm, "/dimensions/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisEntity.class, dm, "/entities/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisBiome.class, dm, "/biomes/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisRegion.class, dm, "/regions/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisGenerator.class,dm, "/generators/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisStructure.class, dm, "/structures/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisBlockData.class, dm, "/blocks/*.json"));
|
||||
schemas.put(getSchemaEntry(IrisLootTable.class, dm, "/loot/*.json"));
|
||||
settings.put("json.schemas", schemas);
|
||||
ws.put("settings", settings);
|
||||
|
||||
@ -291,10 +279,9 @@ public class IrisProject
|
||||
public File compilePackage(MortarSender sender, boolean obfuscate, boolean minify)
|
||||
{
|
||||
String dim = getName();
|
||||
Iris.globaldata.dump();
|
||||
Iris.globaldata.preferFolder(null);
|
||||
String dimm = dim;
|
||||
IrisDimension dimension = Iris.globaldata.getDimensionLoader().load(dimm);
|
||||
IrisDataManager dm = new IrisDataManager(path);
|
||||
IrisDimension dimension = dm.getDimensionLoader().load(dimm);
|
||||
File folder = new File(Iris.instance.getDataFolder(), "exports/" + dimension.getLoadKey());
|
||||
folder.mkdirs();
|
||||
Iris.info("Packaging Dimension " + dimension.getName() + " " + (obfuscate ? "(Obfuscated)" : ""));
|
||||
@ -305,34 +292,32 @@ public class IrisProject
|
||||
KSet<IrisGenerator> generators = new KSet<>();
|
||||
KSet<IrisLootTable> loot = new KSet<>();
|
||||
KSet<IrisBlockData> blocks = new KSet<>();
|
||||
Iris.globaldata.preferFolder(dim);
|
||||
|
||||
for(String i : Iris.globaldata.getBlockLoader().getPreferredKeys())
|
||||
for(String i : dm.getDimensionLoader().getPossibleKeys())
|
||||
{
|
||||
blocks.add(Iris.globaldata.getBlockLoader().load(i));
|
||||
blocks.add(dm.getBlockLoader().load(i));
|
||||
}
|
||||
|
||||
Iris.globaldata.preferFolder(null);
|
||||
dimension.getRegions().forEach((i) -> regions.add(Iris.globaldata.getRegionLoader().load(i)));
|
||||
dimension.getLoot().getTables().forEach((i) -> loot.add(Iris.globaldata.getLootLoader().load(i)));
|
||||
dimension.getRegions().forEach((i) -> regions.add(dm.getRegionLoader().load(i)));
|
||||
dimension.getLoot().getTables().forEach((i) -> loot.add(dm.getLootLoader().load(i)));
|
||||
regions.forEach((i) -> biomes.addAll(i.getAllBiomes(null)));
|
||||
biomes.forEach((i) -> i.getGenerators().forEach((j) -> generators.add(j.getCachedGenerator(null))));
|
||||
regions.forEach((i) -> i.getStructures().forEach((j) -> structures.add(j.getStructure(null))));
|
||||
biomes.forEach((i) -> i.getStructures().forEach((j) -> structures.add(j.getStructure(null))));
|
||||
regions.forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(Iris.globaldata.getLootLoader().load(i))));
|
||||
biomes.forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(Iris.globaldata.getLootLoader().load(i))));
|
||||
structures.forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(Iris.globaldata.getLootLoader().load(i))));
|
||||
structures.forEach((b) -> b.getTiles().forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(Iris.globaldata.getLootLoader().load(i)))));
|
||||
structures.forEach((r) -> r.getEntitySpawnOverrides().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity()))));
|
||||
structures.forEach((s) -> s.getTiles().forEach((r) -> r.getEntitySpawnOverrides().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity())))));
|
||||
biomes.forEach((r) -> r.getEntitySpawnOverrides().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity()))));
|
||||
regions.forEach((r) -> r.getEntitySpawnOverrides().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity()))));
|
||||
dimension.getEntitySpawnOverrides().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity())));
|
||||
structures.forEach((r) -> r.getEntityInitialSpawns().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity()))));
|
||||
structures.forEach((s) -> s.getTiles().forEach((r) -> r.getEntityInitialSpawns().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity())))));
|
||||
biomes.forEach((r) -> r.getEntityInitialSpawns().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity()))));
|
||||
regions.forEach((r) -> r.getEntityInitialSpawns().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity()))));
|
||||
dimension.getEntityInitialSpawns().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity())));
|
||||
regions.forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(dm.getLootLoader().load(i))));
|
||||
biomes.forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(dm.getLootLoader().load(i))));
|
||||
structures.forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(dm.getLootLoader().load(i))));
|
||||
structures.forEach((b) -> b.getTiles().forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(dm.getLootLoader().load(i)))));
|
||||
structures.forEach((r) -> r.getEntitySpawnOverrides().forEach((sp) -> entities.add(dm.getEntityLoader().load(sp.getEntity()))));
|
||||
structures.forEach((s) -> s.getTiles().forEach((r) -> r.getEntitySpawnOverrides().forEach((sp) -> entities.add(dm.getEntityLoader().load(sp.getEntity())))));
|
||||
biomes.forEach((r) -> r.getEntitySpawnOverrides().forEach((sp) -> entities.add(dm.getEntityLoader().load(sp.getEntity()))));
|
||||
regions.forEach((r) -> r.getEntitySpawnOverrides().forEach((sp) -> entities.add(dm.getEntityLoader().load(sp.getEntity()))));
|
||||
dimension.getEntitySpawnOverrides().forEach((sp) -> entities.add(dm.getEntityLoader().load(sp.getEntity())));
|
||||
structures.forEach((r) -> r.getEntityInitialSpawns().forEach((sp) -> entities.add(dm.getEntityLoader().load(sp.getEntity()))));
|
||||
structures.forEach((s) -> s.getTiles().forEach((r) -> r.getEntityInitialSpawns().forEach((sp) -> entities.add(dm.getEntityLoader().load(sp.getEntity())))));
|
||||
biomes.forEach((r) -> r.getEntityInitialSpawns().forEach((sp) -> entities.add(dm.getEntityLoader().load(sp.getEntity()))));
|
||||
regions.forEach((r) -> r.getEntityInitialSpawns().forEach((sp) -> entities.add(dm.getEntityLoader().load(sp.getEntity()))));
|
||||
dimension.getEntityInitialSpawns().forEach((sp) -> entities.add(dm.getEntityLoader().load(sp.getEntity())));
|
||||
KMap<String, String> renameObjects = new KMap<>();
|
||||
String a = "";
|
||||
StringBuilder b = new StringBuilder();
|
||||
@ -423,7 +408,7 @@ public class IrisProject
|
||||
{
|
||||
try
|
||||
{
|
||||
File f = Iris.globaldata.getObjectLoader().findFile(lookupObjects.get(k).get(0));
|
||||
File f = dm.getObjectLoader().findFile(lookupObjects.get(k).get(0));
|
||||
IO.copyFile(f, new File(folder, "objects/" + k + ".iob"));
|
||||
gb.append(IO.hash(f));
|
||||
ggg.set(ggg.get() + 1);
|
||||
@ -446,7 +431,7 @@ public class IrisProject
|
||||
{
|
||||
try
|
||||
{
|
||||
File f = Iris.globaldata.getObjectLoader().findFile(lookupObjects.get(k).get(0));
|
||||
File f = dm.getObjectLoader().findFile(lookupObjects.get(k).get(0));
|
||||
IO.copyFile(f, new File(folder, "objects/" + k + ".iob"));
|
||||
gb.append(IO.hash(f));
|
||||
ggg.set(ggg.get() + 1);
|
||||
@ -469,7 +454,7 @@ public class IrisProject
|
||||
{
|
||||
try
|
||||
{
|
||||
File f = Iris.globaldata.getObjectLoader().findFile(lookupObjects.get(k).get(0));
|
||||
File f = dm.getObjectLoader().findFile(lookupObjects.get(k).get(0));
|
||||
IO.copyFile(f, new File(folder, "objects/" + k + ".iob"));
|
||||
gb.append(IO.hash(f));
|
||||
ggg.set(ggg.get() + 1);
|
||||
|
@ -1,28 +1,19 @@
|
||||
package com.volmit.iris.manager;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.zeroturnaround.zip.ZipUtil;
|
||||
import org.zeroturnaround.zip.commons.FileUtils;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonSyntaxException;
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.IrisSettings;
|
||||
import com.volmit.iris.object.IrisDimension;
|
||||
import com.volmit.iris.util.Form;
|
||||
import com.volmit.iris.util.IO;
|
||||
import com.volmit.iris.util.J;
|
||||
import com.volmit.iris.util.JSONArray;
|
||||
import com.volmit.iris.util.JSONException;
|
||||
import com.volmit.iris.util.JSONObject;
|
||||
import com.volmit.iris.util.KMap;
|
||||
import com.volmit.iris.util.MortarSender;
|
||||
|
||||
import com.volmit.iris.util.*;
|
||||
import lombok.Data;
|
||||
import org.zeroturnaround.zip.ZipUtil;
|
||||
import org.zeroturnaround.zip.commons.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
|
||||
@Data
|
||||
public class ProjectManager
|
||||
@ -64,7 +55,8 @@ public class ProjectManager
|
||||
{
|
||||
sender.sendMessage("Looking for Package: " + type);
|
||||
File iris = new File(folder, "iris");
|
||||
IrisDimension dim = Iris.globaldata.getDimensionLoader().load(type);
|
||||
File irispack = new File(folder, "iris/pack");
|
||||
IrisDimension dim = IrisDataManager.loadAnyDimension(type);
|
||||
|
||||
if(dim == null)
|
||||
{
|
||||
@ -73,7 +65,7 @@ public class ProjectManager
|
||||
if(i.isFile() && i.getName().equals(type + ".iris"))
|
||||
{
|
||||
sender.sendMessage("Found " + type + ".iris in " + ProjectManager.WORKSPACE_NAME + " folder");
|
||||
ZipUtil.unpack(i, iris);
|
||||
ZipUtil.unpack(i, irispack);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -86,7 +78,7 @@ public class ProjectManager
|
||||
|
||||
try
|
||||
{
|
||||
FileUtils.copyDirectory(f, iris);
|
||||
FileUtils.copyDirectory(f, irispack);
|
||||
}
|
||||
|
||||
catch(IOException e)
|
||||
@ -95,12 +87,10 @@ public class ProjectManager
|
||||
}
|
||||
}
|
||||
|
||||
File dimf = new File(iris, "dimensions/" + type + ".json");
|
||||
File dimf = new File(irispack, "dimensions/" + type + ".json");
|
||||
|
||||
if(!dimf.exists() || !dimf.isFile())
|
||||
{
|
||||
Iris.globaldata.dump();
|
||||
Iris.globaldata.preferFolder(null);
|
||||
Iris.proj.downloadSearch(sender, type, false);
|
||||
File downloaded = Iris.proj.getWorkspaceFolder(type);
|
||||
|
||||
@ -110,7 +100,7 @@ public class ProjectManager
|
||||
{
|
||||
try
|
||||
{
|
||||
FileUtils.copyFile(i, new File(iris, i.getName()));
|
||||
FileUtils.copyFile(i, new File(irispack, i.getName()));
|
||||
}
|
||||
|
||||
catch(IOException e)
|
||||
@ -123,7 +113,7 @@ public class ProjectManager
|
||||
{
|
||||
try
|
||||
{
|
||||
FileUtils.copyDirectory(i, new File(iris, i.getName()));
|
||||
FileUtils.copyDirectory(i, new File(irispack, i.getName()));
|
||||
}
|
||||
|
||||
catch(IOException e)
|
||||
@ -142,7 +132,7 @@ public class ProjectManager
|
||||
return null;
|
||||
}
|
||||
|
||||
IrisDataManager dm = new IrisDataManager(folder);
|
||||
IrisDataManager dm = new IrisDataManager(irispack);
|
||||
dim = dm.getDimensionLoader().load(type);
|
||||
|
||||
if(dim == null)
|
||||
@ -236,10 +226,7 @@ public class ProjectManager
|
||||
IO.delete(packEntry);
|
||||
}
|
||||
|
||||
Iris.globaldata.dump();
|
||||
Iris.globaldata.preferFolder(null);
|
||||
|
||||
if(Iris.globaldata.getDimensionLoader().load(key) != null)
|
||||
if(IrisDataManager.loadAnyDimension(key) != null)
|
||||
{
|
||||
sender.sendMessage("Another dimension in the packs folder is already using the key " + key + " IMPORT FAILED!");
|
||||
return;
|
||||
@ -263,8 +250,6 @@ public class ProjectManager
|
||||
}
|
||||
|
||||
sender.sendMessage("Successfully Aquired " + d.getName());
|
||||
Iris.globaldata.dump();
|
||||
Iris.globaldata.preferFolder(null);
|
||||
}
|
||||
|
||||
public KMap<String, String> getListing(boolean cached)
|
||||
|
@ -1,36 +1,14 @@
|
||||
package com.volmit.iris.manager;
|
||||
|
||||
import java.awt.GraphicsEnvironment;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.List;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.util.*;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.util.ArrayType;
|
||||
import com.volmit.iris.util.B;
|
||||
import com.volmit.iris.util.Desc;
|
||||
import com.volmit.iris.util.JSONArray;
|
||||
import com.volmit.iris.util.JSONObject;
|
||||
import com.volmit.iris.util.KList;
|
||||
import com.volmit.iris.util.KMap;
|
||||
import com.volmit.iris.util.MaxNumber;
|
||||
import com.volmit.iris.util.MinNumber;
|
||||
import com.volmit.iris.util.RegistryListBiome;
|
||||
import com.volmit.iris.util.RegistryListBlockType;
|
||||
import com.volmit.iris.util.RegistryListDimension;
|
||||
import com.volmit.iris.util.RegistryListEntity;
|
||||
import com.volmit.iris.util.RegistryListFont;
|
||||
import com.volmit.iris.util.RegistryListGenerator;
|
||||
import com.volmit.iris.util.RegistryListItemType;
|
||||
import com.volmit.iris.util.RegistryListLoot;
|
||||
import com.volmit.iris.util.RegistryListMythical;
|
||||
import com.volmit.iris.util.RegistryListObject;
|
||||
import com.volmit.iris.util.RegistryListRegion;
|
||||
import com.volmit.iris.util.RegistryListStructure;
|
||||
import com.volmit.iris.util.Required;
|
||||
import java.awt.*;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.List;
|
||||
|
||||
public class SchemaBuilder
|
||||
{
|
||||
@ -198,7 +176,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getBiomeLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getBiomeLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -233,7 +211,7 @@ public class SchemaBuilder
|
||||
JSONObject j = new JSONObject();
|
||||
JSONArray ja = new JSONArray();
|
||||
|
||||
for(String i : data.getBlockLoader().getPreferredKeys())
|
||||
for(String i : data.getBlockLoader().getPossibleKeys())
|
||||
{
|
||||
ja.put(i);
|
||||
}
|
||||
@ -277,7 +255,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getEntityLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getEntityLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -311,7 +289,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getLootLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getLootLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -327,7 +305,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getDimensionLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getDimensionLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -344,7 +322,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getGeneratorLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getGeneratorLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -361,7 +339,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getObjectLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getObjectLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -378,7 +356,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getRegionLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getRegionLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -395,7 +373,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getStructureLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getStructureLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -560,7 +538,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getBiomeLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getBiomeLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -605,7 +583,7 @@ public class SchemaBuilder
|
||||
JSONObject j = new JSONObject();
|
||||
JSONArray ja = new JSONArray();
|
||||
|
||||
for(String i : data.getBlockLoader().getPreferredKeys())
|
||||
for(String i : data.getBlockLoader().getPossibleKeys())
|
||||
{
|
||||
ja.put(i);
|
||||
}
|
||||
@ -651,7 +629,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getEntityLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getEntityLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -687,7 +665,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getLootLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getLootLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -705,7 +683,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getDimensionLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getDimensionLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -723,7 +701,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getGeneratorLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getGeneratorLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -741,7 +719,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getObjectLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getObjectLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -759,7 +737,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getRegionLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getRegionLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@ -777,7 +755,7 @@ public class SchemaBuilder
|
||||
if(!definitions.containsKey(key))
|
||||
{
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", new JSONArray(data.getStructureLoader().getPreferredKeys()));
|
||||
j.put("enum", new JSONArray(data.getStructureLoader().getPossibleKeys()));
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
|
@ -41,6 +41,9 @@ public class CommandIris extends MortarCommand
|
||||
@Command
|
||||
private CommandIrisLMM lmm;
|
||||
|
||||
@Command
|
||||
private CommandIrisIDM idm;
|
||||
|
||||
@Command
|
||||
private CommandIrisRegen regen;
|
||||
|
||||
|
@ -0,0 +1,43 @@
|
||||
package com.volmit.iris.manager.command;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.manager.IrisDataManager;
|
||||
import com.volmit.iris.util.KList;
|
||||
import com.volmit.iris.util.MortarCommand;
|
||||
import com.volmit.iris.util.MortarSender;
|
||||
|
||||
public class CommandIrisIDM extends MortarCommand
|
||||
{
|
||||
public CommandIrisIDM()
|
||||
{
|
||||
super("idm");
|
||||
setDescription("Diagnostics for Iris Data Managers");
|
||||
requiresPermission(Iris.perm.studio);
|
||||
setCategory("World");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addTabOptions(MortarSender sender, String[] args, KList<String> list) {
|
||||
|
||||
}
|
||||
@Override
|
||||
public boolean handle(MortarSender sender, String[] args)
|
||||
{
|
||||
if(sender.isPlayer())
|
||||
{
|
||||
sender.sendMessage("Use this in the console.");
|
||||
return true;
|
||||
}
|
||||
|
||||
sender.sendMessage("Total Managers: " + IrisDataManager.managers.size());
|
||||
IrisDataManager.dumpManagers();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getArgsUsage()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
@ -1,22 +1,22 @@
|
||||
package com.volmit.iris.manager.command;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Set;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.IrisSettings;
|
||||
import com.volmit.iris.manager.IrisDataManager;
|
||||
import com.volmit.iris.manager.ProjectManager;
|
||||
import com.volmit.iris.manager.WandManager;
|
||||
import com.volmit.iris.object.IrisObject;
|
||||
import com.volmit.iris.util.KList;
|
||||
import com.volmit.iris.util.MortarCommand;
|
||||
import com.volmit.iris.util.MortarSender;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.IrisSettings;
|
||||
import com.volmit.iris.manager.ProjectManager;
|
||||
import com.volmit.iris.manager.WandManager;
|
||||
import com.volmit.iris.object.IrisObject;
|
||||
import com.volmit.iris.util.MortarCommand;
|
||||
import com.volmit.iris.util.MortarSender;
|
||||
import java.io.File;
|
||||
import java.util.Set;
|
||||
|
||||
public class CommandIrisObjectPaste extends MortarCommand
|
||||
{
|
||||
@ -54,7 +54,16 @@ public class CommandIrisObjectPaste extends MortarCommand
|
||||
}
|
||||
|
||||
Player p = sender.player();
|
||||
File file = Iris.globaldata.getObjectLoader().findFile(args[0]);
|
||||
IrisObject obj = IrisDataManager.loadAnyObject(args[0]);
|
||||
|
||||
if(obj == null)
|
||||
{
|
||||
|
||||
sender.sendMessage("Can't find " + args[0] + " in the " + ProjectManager.WORKSPACE_NAME + " folder");
|
||||
return true;
|
||||
}
|
||||
|
||||
File file = obj.getLoadFile();
|
||||
boolean intoWand = false;
|
||||
|
||||
for(String i : args)
|
||||
@ -68,11 +77,12 @@ public class CommandIrisObjectPaste extends MortarCommand
|
||||
if(file == null || !file.exists())
|
||||
{
|
||||
sender.sendMessage("Can't find " + args[0] + " in the " + ProjectManager.WORKSPACE_NAME + " folder");
|
||||
return true;
|
||||
}
|
||||
|
||||
ItemStack wand = sender.player().getInventory().getItemInMainHand();
|
||||
|
||||
IrisObject o = Iris.globaldata.getObjectLoader().load(args[0]);
|
||||
IrisObject o = IrisDataManager.loadAnyObject(args[0]);
|
||||
if(o == null)
|
||||
{
|
||||
sender.sendMessage("Error, cant find");
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.volmit.iris.manager.command;
|
||||
|
||||
import com.volmit.iris.manager.IrisDataManager;
|
||||
import com.volmit.iris.util.KList;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@ -47,7 +48,7 @@ public class CommandIrisStructureOpen extends MortarCommand
|
||||
|
||||
Player p = sender.player();
|
||||
|
||||
IrisStructure structure = Iris.globaldata.getStructureLoader().load(args[0]);
|
||||
IrisStructure structure = IrisDataManager.loadAnyStructure(args[0]);
|
||||
|
||||
if(structure == null)
|
||||
{
|
||||
|
@ -30,9 +30,6 @@ public class CommandIrisStudio extends MortarCommand
|
||||
@Command
|
||||
private CommandIrisStudioMap map;
|
||||
|
||||
@Command
|
||||
private CommandIrisStudioList list;
|
||||
|
||||
@Command
|
||||
private CommandIrisStudioGoto got0;
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.volmit.iris.manager.command;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.manager.IrisDataManager;
|
||||
import com.volmit.iris.object.IrisBiome;
|
||||
import com.volmit.iris.object.IrisRegion;
|
||||
import com.volmit.iris.scaffold.IrisWorlds;
|
||||
@ -24,7 +25,7 @@ public class CommandIrisStudioGoto extends MortarCommand
|
||||
public void addTabOptions(MortarSender sender, String[] args, KList<String> list) {
|
||||
if(args.length == 0 && sender.isPlayer() && IrisWorlds.isIrisWorld(sender.player().getWorld()))
|
||||
{
|
||||
list.add(IrisWorlds.access(sender.player().getWorld()).getData().getBiomeLoader().getPreferredKeys());
|
||||
list.add(IrisWorlds.access(sender.player().getWorld()).getData().getBiomeLoader().getPossibleKeys());
|
||||
}
|
||||
}
|
||||
|
||||
@ -51,8 +52,8 @@ public class CommandIrisStudioGoto extends MortarCommand
|
||||
}
|
||||
|
||||
IrisAccess g = IrisWorlds.access(world);
|
||||
IrisBiome b = Iris.globaldata.getBiomeLoader().load(args[0], false);
|
||||
IrisRegion r = Iris.globaldata.getRegionLoader().load(args[0], false);
|
||||
IrisBiome b = IrisDataManager.loadAnyBiome(args[0]);
|
||||
IrisRegion r = IrisDataManager.loadAnyRegion(args[0]);
|
||||
|
||||
if(b != null)
|
||||
{
|
||||
@ -75,7 +76,7 @@ public class CommandIrisStudioGoto extends MortarCommand
|
||||
else if(r != null)
|
||||
{
|
||||
J.a(() -> {
|
||||
Location l = g.lookForRegion(r, 10000, (v) -> sender.sendMessage("Looking for " + C.BOLD + C.WHITE + r.getName() + C.RESET + C.GRAY + ": Checked " + Form.f(v) + " Places"));
|
||||
Location l = g.lookForRegion(r, 60000, (v) -> sender.sendMessage(C.BOLD +""+ C.WHITE + r.getName() + C.RESET + C.GRAY + ": Checked " + Form.f(v) + " Places"));
|
||||
|
||||
if(l == null)
|
||||
{
|
||||
|
@ -1,67 +0,0 @@
|
||||
package com.volmit.iris.manager.command;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.IrisSettings;
|
||||
import com.volmit.iris.object.IrisDimension;
|
||||
import com.volmit.iris.util.KList;
|
||||
import com.volmit.iris.util.MortarCommand;
|
||||
import com.volmit.iris.util.MortarSender;
|
||||
|
||||
public class CommandIrisStudioList extends MortarCommand
|
||||
{
|
||||
public CommandIrisStudioList()
|
||||
{
|
||||
super("list", "l");
|
||||
requiresPermission(Iris.perm.studio);
|
||||
setDescription("List projects that can be opened.");
|
||||
setCategory("Studio");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTabOptions(MortarSender sender, String[] args, KList<String> list) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(MortarSender sender, String[] args)
|
||||
{
|
||||
if(!IrisSettings.get().isStudio())
|
||||
{
|
||||
sender.sendMessage("To use Iris Studio, please enable studio in Iris/settings.json");
|
||||
return true;
|
||||
}
|
||||
|
||||
int m = 0;
|
||||
for(File i : Iris.globaldata.getDimensionLoader().getFolders())
|
||||
{
|
||||
for(File j : i.listFiles())
|
||||
{
|
||||
if(j.isFile() && j.getName().endsWith(".json"))
|
||||
{
|
||||
try
|
||||
{
|
||||
m++;
|
||||
IrisDimension d = Iris.globaldata.getDimensionLoader().load(j.getName().replaceAll("\\Q.json\\E", ""));
|
||||
sender.sendMessage("- " + d.getLoadKey() + " (" + d.getName() + ")");
|
||||
}
|
||||
catch(Throwable e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sender.sendMessage("Found " + m + " project" + (m == 1 ? "" : "s"));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getArgsUsage()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
@ -1,62 +1,23 @@
|
||||
package com.volmit.iris.manager.structure;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.World;
|
||||
import com.google.gson.Gson;
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.generator.noise.CNG;
|
||||
import com.volmit.iris.object.*;
|
||||
import com.volmit.iris.util.*;
|
||||
import lombok.Data;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockBurnEvent;
|
||||
import org.bukkit.event.block.BlockCookEvent;
|
||||
import org.bukkit.event.block.BlockFadeEvent;
|
||||
import org.bukkit.event.block.BlockFertilizeEvent;
|
||||
import org.bukkit.event.block.BlockFormEvent;
|
||||
import org.bukkit.event.block.BlockFromToEvent;
|
||||
import org.bukkit.event.block.BlockGrowEvent;
|
||||
import org.bukkit.event.block.BlockIgniteEvent;
|
||||
import org.bukkit.event.block.BlockPhysicsEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.block.BlockSpreadEvent;
|
||||
import org.bukkit.event.block.*;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.util.BlockVector;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.generator.noise.CNG;
|
||||
import com.volmit.iris.object.IrisObject;
|
||||
import com.volmit.iris.object.IrisStructure;
|
||||
import com.volmit.iris.object.IrisStructureTile;
|
||||
import com.volmit.iris.object.NoiseStyle;
|
||||
import com.volmit.iris.object.StructureTileCondition;
|
||||
import com.volmit.iris.object.TileResult;
|
||||
import com.volmit.iris.util.B;
|
||||
import com.volmit.iris.util.C;
|
||||
import com.volmit.iris.util.ChronoLatch;
|
||||
import com.volmit.iris.util.Cuboid;
|
||||
import com.volmit.iris.util.Form;
|
||||
import com.volmit.iris.util.IO;
|
||||
import com.volmit.iris.util.IObjectPlacer;
|
||||
import com.volmit.iris.util.J;
|
||||
import com.volmit.iris.util.JSONObject;
|
||||
import com.volmit.iris.util.KMap;
|
||||
import com.volmit.iris.util.MaterialBlock;
|
||||
import com.volmit.iris.util.RNG;
|
||||
import com.volmit.iris.util.UIElement;
|
||||
import com.volmit.iris.util.UIStaticDecorator;
|
||||
import com.volmit.iris.util.UIWindow;
|
||||
import com.volmit.iris.util.Window;
|
||||
import com.volmit.iris.util.WindowResolution;
|
||||
|
||||
import lombok.Data;
|
||||
import java.io.File;
|
||||
import java.util.Iterator;
|
||||
|
||||
@Data
|
||||
public class StructureTemplate implements Listener, IObjectPlacer
|
||||
@ -184,8 +145,7 @@ public class StructureTemplate implements Listener, IObjectPlacer
|
||||
for(String k : j.getObjects())
|
||||
{
|
||||
int v = hijacked.getForceObjects().size() + 1;
|
||||
Iris.globaldata.dump();
|
||||
IrisObject o = Iris.globaldata.getObjectLoader().load(k).copy();
|
||||
IrisObject o = input.getLoader().getObjectLoader().load(k).copy();
|
||||
String b = o.getLoadKey();
|
||||
o.setLoadKey(realType + "-" + v);
|
||||
|
||||
@ -574,7 +534,7 @@ public class StructureTemplate implements Listener, IObjectPlacer
|
||||
return;
|
||||
}
|
||||
|
||||
r.getTile().getForceObjects().get(getVariant(c, r.getTile())).place(bottomCenter.getBlockX(), bottomCenter.getBlockY(), bottomCenter.getBlockZ(), this, r.getPlacement(), rng, Iris.globaldata);
|
||||
r.getTile().getForceObjects().get(getVariant(c, r.getTile())).place(bottomCenter.getBlockX(), bottomCenter.getBlockY(), bottomCenter.getBlockZ(), this, r.getPlacement(), rng, r.getStructure().getLoader());
|
||||
if(!quiet)
|
||||
{
|
||||
center.getWorld().playSound(center, Sound.ENTITY_SHULKER_BULLET_HIT, 1f, 1.6f);
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.volmit.iris.object;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.generator.legacy.atomics.AtomicCache;
|
||||
import com.volmit.iris.generator.noise.CNG;
|
||||
import com.volmit.iris.manager.IrisDataManager;
|
||||
@ -604,7 +603,7 @@ public class IrisBiome extends IrisRegistrant implements IRare
|
||||
|
||||
for(String i : getChildren())
|
||||
{
|
||||
realChildren.add(g != null ? g.getData().getBiomeLoader().load(i) : Iris.globaldata.getBiomeLoader().load(i));
|
||||
realChildren.add(g.getData().getBiomeLoader().load(i));
|
||||
}
|
||||
|
||||
return realChildren;
|
||||
@ -621,7 +620,7 @@ public class IrisBiome extends IrisRegistrant implements IRare
|
||||
{
|
||||
for(String i : getChildren())
|
||||
{
|
||||
IrisBiome b = g != null ? g.getData().getBiomeLoader().load(i) : Iris.globaldata.getBiomeLoader().load(i);
|
||||
IrisBiome b = g.getData().getBiomeLoader().load(i);
|
||||
int l = limit;
|
||||
m.addAll(b.getAllChildren(g, l));
|
||||
}
|
||||
|
@ -1,17 +1,8 @@
|
||||
package com.volmit.iris.object;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.generator.legacy.atomics.AtomicCache;
|
||||
import com.volmit.iris.scaffold.data.DataProvider;
|
||||
import com.volmit.iris.util.DependsOn;
|
||||
import com.volmit.iris.util.Desc;
|
||||
import com.volmit.iris.util.DontObfuscate;
|
||||
import com.volmit.iris.util.IrisInterpolation;
|
||||
import com.volmit.iris.util.MaxNumber;
|
||||
import com.volmit.iris.util.MinNumber;
|
||||
import com.volmit.iris.util.RegistryListGenerator;
|
||||
import com.volmit.iris.util.Required;
|
||||
|
||||
import com.volmit.iris.util.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -52,7 +43,7 @@ public class IrisBiomeGeneratorLink
|
||||
{
|
||||
return gen.aquire(() ->
|
||||
{
|
||||
IrisGenerator gen = g != null ? g.getData().getGeneratorLoader().load(getGenerator()) : Iris.globaldata.getGeneratorLoader().load(getGenerator());
|
||||
IrisGenerator gen = g.getData().getGeneratorLoader().load(getGenerator());
|
||||
|
||||
if(gen == null)
|
||||
{
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.volmit.iris.object;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.generator.legacy.atomics.AtomicCache;
|
||||
import com.volmit.iris.generator.noise.CNG;
|
||||
import com.volmit.iris.scaffold.engine.GeneratorAccess;
|
||||
@ -383,7 +382,7 @@ public class IrisDimension extends IrisRegistrant
|
||||
|
||||
for(String i : getRegions())
|
||||
{
|
||||
r.add(g != null ? g.getData().getRegionLoader().load(i) : Iris.globaldata.getRegionLoader().load(i));
|
||||
r.add(g.getData().getRegionLoader().load(i));
|
||||
}
|
||||
|
||||
return r;
|
||||
|
@ -1,19 +1,9 @@
|
||||
package com.volmit.iris.object;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.generator.legacy.atomics.AtomicCache;
|
||||
import com.volmit.iris.generator.noise.CNG;
|
||||
import com.volmit.iris.util.ArrayType;
|
||||
import com.volmit.iris.util.Desc;
|
||||
import com.volmit.iris.util.DontObfuscate;
|
||||
import com.volmit.iris.util.KList;
|
||||
import com.volmit.iris.util.MaxNumber;
|
||||
import com.volmit.iris.util.MinNumber;
|
||||
import com.volmit.iris.util.RNG;
|
||||
import com.volmit.iris.util.RegistryListObject;
|
||||
import com.volmit.iris.util.Required;
|
||||
import com.volmit.iris.scaffold.data.DataProvider;
|
||||
|
||||
import com.volmit.iris.util.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -152,7 +142,7 @@ public class IrisObjectPlacement
|
||||
return null;
|
||||
}
|
||||
|
||||
return (g == null ? Iris.globaldata : g.getData()).getObjectLoader().load(place.get(random.nextInt(place.size())));
|
||||
return g.getData().getObjectLoader().load(place.get(random.nextInt(place.size())));
|
||||
}
|
||||
|
||||
public int getTriesForChunk(RNG random)
|
||||
|
@ -1,22 +1,9 @@
|
||||
package com.volmit.iris.object;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.generator.legacy.atomics.AtomicCache;
|
||||
import com.volmit.iris.scaffold.data.DataProvider;
|
||||
import com.volmit.iris.generator.noise.CNG;
|
||||
import com.volmit.iris.util.ArrayType;
|
||||
import com.volmit.iris.util.Desc;
|
||||
import com.volmit.iris.util.DontObfuscate;
|
||||
import com.volmit.iris.util.IRare;
|
||||
import com.volmit.iris.util.KList;
|
||||
import com.volmit.iris.util.KMap;
|
||||
import com.volmit.iris.util.KSet;
|
||||
import com.volmit.iris.util.MaxNumber;
|
||||
import com.volmit.iris.util.MinNumber;
|
||||
import com.volmit.iris.util.RNG;
|
||||
import com.volmit.iris.util.RegistryListBiome;
|
||||
import com.volmit.iris.util.Required;
|
||||
|
||||
import com.volmit.iris.scaffold.data.DataProvider;
|
||||
import com.volmit.iris.util.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@ -400,7 +387,7 @@ public class IrisRegion extends IrisRegistrant implements IRare
|
||||
continue;
|
||||
}
|
||||
|
||||
IrisBiome biome = (g == null ? Iris.globaldata : g.getData()).getBiomeLoader().load(i);
|
||||
IrisBiome biome = g.getData().getBiomeLoader().load(i);
|
||||
|
||||
names.remove(i);
|
||||
if(biome == null)
|
||||
@ -460,7 +447,7 @@ public class IrisRegion extends IrisRegistrant implements IRare
|
||||
|
||||
for(String i : getCaveBiomes())
|
||||
{
|
||||
realCaveBiomes.add((g == null ? Iris.globaldata : g.getData()).getBiomeLoader().load(i));
|
||||
realCaveBiomes.add(g.getData().getBiomeLoader().load(i));
|
||||
}
|
||||
|
||||
return realCaveBiomes;
|
||||
@ -475,7 +462,7 @@ public class IrisRegion extends IrisRegistrant implements IRare
|
||||
|
||||
for(String i : getLakeBiomes())
|
||||
{
|
||||
realLakeBiomes.add((g == null ? Iris.globaldata : g.getData()).getBiomeLoader().load(i));
|
||||
realLakeBiomes.add(g.getData().getBiomeLoader().load(i));
|
||||
}
|
||||
|
||||
return realLakeBiomes;
|
||||
@ -490,7 +477,7 @@ public class IrisRegion extends IrisRegistrant implements IRare
|
||||
|
||||
for(String i : getRiverBiomes())
|
||||
{
|
||||
realRiverBiomes.add((g == null ? Iris.globaldata : g.getData()).getBiomeLoader().load(i));
|
||||
realRiverBiomes.add(g.getData().getBiomeLoader().load(i));
|
||||
}
|
||||
|
||||
return realRiverBiomes;
|
||||
@ -505,7 +492,7 @@ public class IrisRegion extends IrisRegistrant implements IRare
|
||||
|
||||
for(String i : getShoreBiomes())
|
||||
{
|
||||
realShoreBiomes.add((g == null ? Iris.globaldata : g.getData()).getBiomeLoader().load(i));
|
||||
realShoreBiomes.add(g.getData().getBiomeLoader().load(i));
|
||||
}
|
||||
|
||||
return realShoreBiomes;
|
||||
@ -520,7 +507,7 @@ public class IrisRegion extends IrisRegistrant implements IRare
|
||||
|
||||
for(String i : getSeaBiomes())
|
||||
{
|
||||
realSeaBiomes.add((g == null ? Iris.globaldata : g.getData()).getBiomeLoader().load(i));
|
||||
realSeaBiomes.add(g.getData().getBiomeLoader().load(i));
|
||||
}
|
||||
|
||||
return realSeaBiomes;
|
||||
@ -535,7 +522,7 @@ public class IrisRegion extends IrisRegistrant implements IRare
|
||||
|
||||
for(String i : getLandBiomes())
|
||||
{
|
||||
realLandBiomes.add((g == null ? Iris.globaldata : g.getData()).getBiomeLoader().load(i));
|
||||
realLandBiomes.add(g.getData().getBiomeLoader().load(i));
|
||||
}
|
||||
|
||||
return realLandBiomes;
|
||||
|
@ -1,12 +1,15 @@
|
||||
package com.volmit.iris.object;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import com.volmit.iris.manager.IrisDataManager;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
@Data
|
||||
public class IrisRegistrant
|
||||
{
|
||||
private transient IrisDataManager loader;
|
||||
|
||||
private transient String loadKey;
|
||||
|
||||
private transient File loadFile;
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.volmit.iris.object;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.generator.legacy.atomics.AtomicCache;
|
||||
import com.volmit.iris.generator.noise.CellGenerator;
|
||||
import com.volmit.iris.scaffold.data.DataProvider;
|
||||
@ -84,7 +83,7 @@ public class IrisStructurePlacement
|
||||
|
||||
public IrisStructure getStructure(DataProvider g)
|
||||
{
|
||||
return structure.aquire(() -> (g == null ? Iris.globaldata : g.getData()).getStructureLoader().load(getTileset()));
|
||||
return structure.aquire(() -> g.getData().getStructureLoader().load(getTileset()));
|
||||
}
|
||||
|
||||
public CellGenerator getChanceGenerator(RNG g)
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.volmit.iris.scaffold;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.manager.IrisDataManager;
|
||||
import com.volmit.iris.object.IrisDimension;
|
||||
import com.volmit.iris.scaffold.engine.EngineCompositeGenerator;
|
||||
import org.bukkit.World;
|
||||
@ -71,7 +71,7 @@ public class IrisWorldCreator
|
||||
return World.Environment.NORMAL;
|
||||
}
|
||||
|
||||
IrisDimension dim = Iris.globaldata.getDimensionLoader().load(dimensionName);
|
||||
IrisDimension dim = IrisDataManager.loadAnyDimension(dimensionName);
|
||||
|
||||
if(dim != null)
|
||||
{
|
||||
|
@ -58,7 +58,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
||||
|
||||
public void hotload()
|
||||
{
|
||||
Iris.globaldata.dump();
|
||||
getData().dump();
|
||||
initialized.lazySet(false);
|
||||
}
|
||||
|
||||
@ -78,7 +78,8 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
||||
for (File j : i.listFiles()) {
|
||||
if (j.isFile() && j.getName().endsWith(".json")) {
|
||||
hint = j.getName().replaceAll("\\Q.json\\E", "");
|
||||
break searching;
|
||||
Iris.error("Found v1 install. Please create a new world, this will cause chunks to change in your existing iris worlds!");
|
||||
throw new RuntimeException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -97,14 +98,14 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
||||
throw new RuntimeException("Cannot find iris dimension data for world: " + world.getName() + "! FAILED");
|
||||
}
|
||||
|
||||
dim = Iris.globaldata.preferFolder(hint).getDimensionLoader().load(hint);
|
||||
dim = IrisDataManager.loadAnyDimension(hint);
|
||||
|
||||
if (dim == null) {
|
||||
throw new RuntimeException("Cannot find dimension: " + hint);
|
||||
}
|
||||
|
||||
if (production) {
|
||||
dim = new IrisDataManager(getDataFolder(world), true).preferFolder(dim.getLoadKey()).getDimensionLoader().load(dim.getLoadKey());
|
||||
dim = new IrisDataManager(getDataFolder(world)).getDimensionLoader().load(dim.getLoadKey());
|
||||
|
||||
if (dim == null) {
|
||||
throw new RuntimeException("Cannot find dimension: " + hint);
|
||||
@ -119,9 +120,8 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
||||
return;
|
||||
}
|
||||
|
||||
IrisDataManager data = production ? new IrisDataManager(getDataFolder(world)) : Iris.globaldata.copy();
|
||||
IrisDimension dim = getDimension(world);
|
||||
data.preferFolder(dim.getLoadKey());
|
||||
IrisDataManager data = production ? new IrisDataManager(getDataFolder(world)) : dim.getLoader().copy();
|
||||
compound = new IrisEngineCompound(world, dim, data, Iris.getThreadCount());
|
||||
initialized.set(true);
|
||||
populators.clear();
|
||||
|
@ -137,7 +137,7 @@ public interface IrisAccess extends Hotloadable, DataProvider {
|
||||
|
||||
public default Location lookForRegion(IrisRegion reg, long timeout, Consumer<Integer> triesc)
|
||||
{
|
||||
ChronoLatch cl = new ChronoLatch(250, false);
|
||||
ChronoLatch cl = new ChronoLatch(3000, false);
|
||||
long s = M.ms();
|
||||
int cpus = 2+(Runtime.getRuntime().availableProcessors()/2);
|
||||
KList<Engine> engines = new KList<>();
|
||||
|
@ -1,16 +1,37 @@
|
||||
package com.volmit.iris.scaffold.parallel;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
|
||||
public class MultiBurst
|
||||
{
|
||||
public static MultiBurst burst = new MultiBurst(Runtime.getRuntime().availableProcessors());
|
||||
private ExecutorService service;
|
||||
private int tid;
|
||||
|
||||
public MultiBurst(int tc)
|
||||
{
|
||||
service = Executors.newWorkStealingPool(tc);
|
||||
service = Executors.newFixedThreadPool(tc, new ThreadFactory()
|
||||
{
|
||||
@Override
|
||||
public Thread newThread(Runnable r)
|
||||
{
|
||||
tid++;
|
||||
Thread t = new Thread(r);
|
||||
t.setName("Iris Generator " + tid);
|
||||
t.setPriority(Thread.MAX_PRIORITY);
|
||||
t.setUncaughtExceptionHandler((et, e) ->
|
||||
{
|
||||
Iris.info("Exception encountered in " + et.getName());
|
||||
e.printStackTrace();
|
||||
});
|
||||
|
||||
return t;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void burst(Runnable... r)
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.volmit.iris.util;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.manager.IrisDataManager;
|
||||
import com.volmit.iris.object.IrisObject;
|
||||
|
||||
import java.io.File;
|
||||
@ -10,9 +11,9 @@ public class ObjectResourceLoader extends ResourceLoader<IrisObject>
|
||||
private ChronoLatch useFlip = new ChronoLatch(2863);
|
||||
private KMap<String, Long> useCache = new KMap<>();
|
||||
|
||||
public ObjectResourceLoader(File root, String folderName, String resourceTypeName)
|
||||
public ObjectResourceLoader(File root, IrisDataManager idm, String folderName, String resourceTypeName)
|
||||
{
|
||||
super(root, folderName, resourceTypeName, IrisObject.class);
|
||||
super(root, idm, folderName, resourceTypeName, IrisObject.class);
|
||||
}
|
||||
|
||||
public int getSize()
|
||||
@ -92,6 +93,8 @@ public class ObjectResourceLoader extends ResourceLoader<IrisObject>
|
||||
loadCache.put(key, t);
|
||||
J.a(() -> Iris.verbose("Loading " + resourceTypeName + ": " + j.getPath()));
|
||||
t.setLoadKey(name);
|
||||
t.setLoader(manager);
|
||||
t.setLoadFile(j);
|
||||
lock.unlock();
|
||||
return t;
|
||||
}
|
||||
@ -104,64 +107,6 @@ public class ObjectResourceLoader extends ResourceLoader<IrisObject>
|
||||
}
|
||||
}
|
||||
|
||||
public String[] getPreferredKeys()
|
||||
{
|
||||
if(preferredFolder == null || preferredFolder.isEmpty())
|
||||
{
|
||||
return getPossibleKeys();
|
||||
}
|
||||
|
||||
if(possibleKeys != null)
|
||||
{
|
||||
return possibleKeys;
|
||||
}
|
||||
|
||||
Iris.info("Building " + resourceTypeName + " Preference Lists");
|
||||
KSet<String> m = new KSet<>();
|
||||
|
||||
for(File i : getFolders())
|
||||
{
|
||||
for(File j : i.listFiles())
|
||||
{
|
||||
if(!j.getPath().contains(preferredFolder))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
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[v.size()]);
|
||||
return possibleKeys;
|
||||
}
|
||||
|
||||
public String[] getPossibleKeys()
|
||||
{
|
||||
if(possibleKeys != null)
|
||||
|
@ -1,13 +1,13 @@
|
||||
package com.volmit.iris.util;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.manager.IrisDataManager;
|
||||
import com.volmit.iris.object.IrisRegistrant;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
@Data
|
||||
public class ResourceLoader<T extends IrisRegistrant>
|
||||
{
|
||||
@ -20,13 +20,13 @@ public class ResourceLoader<T extends IrisRegistrant>
|
||||
protected Class<? extends T> objectClass;
|
||||
protected String cname;
|
||||
protected IrisLock lock;
|
||||
protected String preferredFolder = null;
|
||||
protected String[] possibleKeys = null;
|
||||
protected String[] preferredKeys = null;
|
||||
protected IrisDataManager manager;
|
||||
|
||||
public ResourceLoader(File root, String folderName, String resourceTypeName, Class<? extends T> objectClass)
|
||||
public ResourceLoader(File root, IrisDataManager manager, String folderName, String resourceTypeName, Class<? extends T> objectClass)
|
||||
{
|
||||
lock = new IrisLock("Res");
|
||||
this.manager = manager;
|
||||
folderMapCache = new KMap<>();
|
||||
this.objectClass = objectClass;
|
||||
cname = objectClass.getCanonicalName();
|
||||
@ -36,53 +36,6 @@ public class ResourceLoader<T extends IrisRegistrant>
|
||||
loadCache = new KMap<>();
|
||||
}
|
||||
|
||||
public String[] getPreferredKeys()
|
||||
{
|
||||
if(preferredFolder == null || preferredFolder.isEmpty())
|
||||
{
|
||||
return getPossibleKeys();
|
||||
}
|
||||
|
||||
if(preferredKeys != null)
|
||||
{
|
||||
return preferredKeys;
|
||||
}
|
||||
|
||||
Iris.info("Building " + resourceTypeName + " Preference Lists");
|
||||
KSet<String> m = new KSet<>();
|
||||
|
||||
for(File i : getFolders())
|
||||
{
|
||||
for(File j : i.listFiles())
|
||||
{
|
||||
if(!j.getPath().contains(preferredFolder))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(j.isFile() && j.getName().endsWith(".json"))
|
||||
{
|
||||
m.add(j.getName().replaceAll("\\Q.json\\E", ""));
|
||||
}
|
||||
|
||||
else if(j.isDirectory())
|
||||
{
|
||||
for(File k : j.listFiles())
|
||||
{
|
||||
if(k.isFile() && k.getName().endsWith(".json"))
|
||||
{
|
||||
m.add(j.getName() + "/" + k.getName().replaceAll("\\Q.json\\E", ""));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
KList<String> v = new KList<>(m);
|
||||
preferredKeys = v.toArray(new String[v.size()]);
|
||||
return preferredKeys;
|
||||
}
|
||||
|
||||
public String[] getPossibleKeys()
|
||||
{
|
||||
if(possibleKeys != null)
|
||||
@ -134,6 +87,7 @@ public class ResourceLoader<T extends IrisRegistrant>
|
||||
J.a(() -> Iris.verbose("Loading " + resourceTypeName + ": " + j.getPath()));
|
||||
t.setLoadKey(name);
|
||||
t.setLoadFile(j);
|
||||
t.setLoader(manager);
|
||||
lock.unlock();
|
||||
return t;
|
||||
}
|
||||
@ -205,26 +159,10 @@ public class ResourceLoader<T extends IrisRegistrant>
|
||||
{
|
||||
if(i.isDirectory())
|
||||
{
|
||||
for(File j : i.listFiles())
|
||||
if(i.getName().equals(folderName))
|
||||
{
|
||||
if(j.isDirectory() && j.getName().equals(folderName))
|
||||
{
|
||||
folderCache.add(j);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(preferredFolder != null)
|
||||
{
|
||||
for(File i : folderCache.copy())
|
||||
{
|
||||
if(i.getParentFile().getName().equals(preferredFolder) || i.getParentFile().getParentFile().getName().equals(preferredFolder))
|
||||
{
|
||||
folderCache.remove(i);
|
||||
folderCache.add(0, i);
|
||||
Iris.verbose("Prefering " + i.getPath() + " in the folder cache because we prefer " + preferredFolder);
|
||||
folderCache.add(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -290,12 +228,6 @@ public class ResourceLoader<T extends IrisRegistrant>
|
||||
return loadCache.containsKey(next);
|
||||
}
|
||||
|
||||
public void preferFolder(String name)
|
||||
{
|
||||
clearList();
|
||||
preferredFolder = name;
|
||||
}
|
||||
|
||||
public void clearList()
|
||||
{
|
||||
lock.lock();
|
||||
|
Loading…
x
Reference in New Issue
Block a user