9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-29 12:09:07 +00:00

Works, but somehow i broke parallax

This commit is contained in:
Daniel Mills
2020-11-11 20:58:47 -05:00
parent 4c44957764
commit bf9c4c602b
29 changed files with 413 additions and 640 deletions

View File

@@ -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;
}
}

View File

@@ -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;
});

View File

@@ -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);

View File

@@ -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)

View File

@@ -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);
}

View File

@@ -41,6 +41,9 @@ public class CommandIris extends MortarCommand
@Command
private CommandIrisLMM lmm;
@Command
private CommandIrisIDM idm;
@Command
private CommandIrisRegen regen;

View File

@@ -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 "";
}
}

View File

@@ -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");

View File

@@ -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)
{

View File

@@ -30,9 +30,6 @@ public class CommandIrisStudio extends MortarCommand
@Command
private CommandIrisStudioMap map;
@Command
private CommandIrisStudioList list;
@Command
private CommandIrisStudioGoto got0;

View File

@@ -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)
{

View File

@@ -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 "";
}
}

View File

@@ -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);