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

Eradicate the old structure system

This commit is contained in:
Daniel Mills
2021-01-12 06:05:37 -05:00
parent 93508d7514
commit dd7a8bae16
32 changed files with 3 additions and 2574 deletions

View File

@@ -18,7 +18,6 @@ public class IrisDataManager
private ResourceLoader<IrisRegion> regionLoader;
private ResourceLoader<IrisDimension> dimensionLoader;
private ResourceLoader<IrisGenerator> generatorLoader;
private ResourceLoader<IrisStructure> structureLoader;
private ResourceLoader<IrisJigsawPiece> jigsawPieceLoader;
private ResourceLoader<IrisJigsawPool> jigsawPoolLoader;
private ResourceLoader<IrisJigsawStructure> jigsawStructureLoader;
@@ -51,7 +50,6 @@ public class IrisDataManager
this.regionLoader = null;
this.biomeLoader = null;
this.dimensionLoader = null;
this.structureLoader = null;
this.jigsawPoolLoader = null;
this.jigsawPieceLoader = null;
this.generatorLoader = null;
@@ -83,7 +81,6 @@ public class IrisDataManager
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.jigsawPoolLoader = new ResourceLoader<>(packs, this, "jigsaw-pools", "Jigsaw Pool", IrisJigsawPool.class);
this.jigsawStructureLoader = new ResourceLoader<>(packs, this, "jigsaw-structures", "Jigsaw Structure", IrisJigsawStructure.class);
this.jigsawPieceLoader = new ResourceLoader<>(packs, this, "jigsaw-pieces", "Jigsaw Piece", IrisJigsawPiece.class);
@@ -109,7 +106,6 @@ public class IrisDataManager
dimensionLoader.clearCache();
entityLoader.clearCache();
generatorLoader.clearCache();
structureLoader.clearCache();
}
public void clearLists()
@@ -127,7 +123,6 @@ public class IrisDataManager
dimensionLoader.clearList();
generatorLoader.clearList();
jigsawStructureLoader.clearList();
structureLoader.clearList();
jigsawPoolLoader.clearList();
jigsawPieceLoader.clearList();
objectLoader.clearList();
@@ -143,11 +138,6 @@ public class IrisDataManager
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 IrisJigsawPiece loadAnyJigsawPiece(String key)
{
return loadAny(key, (dm) -> dm.getJigsawPieceLoader().load(key, false));

View File

@@ -281,7 +281,6 @@ public class IrisProject
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(IrisJigsawPiece.class, dm, "/jigsaw-pieces/*.json"));
schemas.put(getSchemaEntry(IrisJigsawPool.class, dm, "/jigsaw-pools/*.json"));
schemas.put(getSchemaEntry(IrisJigsawStructure.class, dm, "/jigsaw-structures/*.json"));
@@ -315,7 +314,6 @@ public class IrisProject
KSet<IrisRegion> regions = new KSet<>();
KSet<IrisBiome> biomes = new KSet<>();
KSet<IrisEntity> entities = new KSet<>();
KSet<IrisStructure> structures = new KSet<>();
KSet<IrisGenerator> generators = new KSet<>();
KSet<IrisLootTable> loot = new KSet<>();
KSet<IrisBlockData> blocks = new KSet<>();
@@ -330,19 +328,11 @@ public class IrisProject
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(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())));
@@ -352,31 +342,6 @@ public class IrisProject
StringBuilder c = new StringBuilder();
sender.sendMessage("Serializing Objects");
for(IrisStructure i : structures)
{
for(IrisStructureTile j : i.getTiles())
{
b.append(j.hashCode());
KList<String> newNames = new KList<>();
for(String k : j.getObjects())
{
if(renameObjects.containsKey(k))
{
newNames.add(renameObjects.get(k));
continue;
}
String name = !obfuscate ? k : UUID.randomUUID().toString().replaceAll("-", "");
b.append(name);
newNames.add(name);
renameObjects.put(k, name);
}
j.setObjects(newNames);
}
}
for(IrisBiome i : biomes)
{
for(IrisObjectPlacement j : i.getObjects())
@@ -455,29 +420,6 @@ public class IrisProject
}
})));
structures.forEach((i) -> i.getTiles().forEach((j) -> j.getObjects().forEach((k) ->
{
try
{
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);
if(cl.flip())
{
int g = ggg.get();
ggg.set(0);
sender.sendMessage("Wrote another " + g + " Objects");
}
}
catch(Throwable e)
{
}
})));
dimension.getMutations().forEach((i) -> i.getObjects().forEach((j) -> j.getPlace().forEach((k) ->
{
try
@@ -537,13 +479,6 @@ public class IrisProject
b.append(IO.hash(a));
}
for(IrisStructure i : structures)
{
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
IO.writeAll(new File(folder, "structures/" + i.getLoadKey() + ".json"), a);
b.append(IO.hash(a));
}
for(IrisBiome i : biomes)
{
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);

View File

@@ -366,22 +366,6 @@ public class SchemaBuilder
}
else if(k.isAnnotationPresent(RegistryListStructure.class))
{
String key = "enum-reg-structure-tileset";
if(!definitions.containsKey(key))
{
JSONObject j = new JSONObject();
j.put("enum", new JSONArray(data.getStructureLoader().getPossibleKeys()));
definitions.put(key, j);
}
fancyType = "Iris Structure Tileset";
prop.put("$ref", "#/definitions/" + key);
description.add(SYMBOL_TYPE__N + " Must be a valid Structure Tileset (use ctrl+space for auto complete!)");
}
else if(k.isAnnotationPresent(RegistryListJigsawPiece.class))
{
String key = "enum-reg-structure-piece";
@@ -795,24 +779,6 @@ public class SchemaBuilder
description.add(SYMBOL_TYPE__N + " Must be a valid Region (use ctrl+space for auto complete!)");
}
else if(k.isAnnotationPresent(RegistryListStructure.class))
{
fancyType = "List of Iris Structure Tilesets";
String key = "enum-reg-structure-tileset";
if(!definitions.containsKey(key))
{
JSONObject j = new JSONObject();
j.put("enum", new JSONArray(data.getStructureLoader().getPossibleKeys()));
definitions.put(key, j);
}
JSONObject items = new JSONObject();
items.put("$ref", "#/definitions/" + key);
prop.put("items", items);
description.add(SYMBOL_TYPE__N + " Must be a valid Structure Tileset (use ctrl+space for auto complete!)");
}
else if(k.isAnnotationPresent(RegistryListJigsawPiece.class))
{
fancyType = "List of Iris Jigsaw Pieces";

View File

@@ -1,55 +0,0 @@
package com.volmit.iris.manager;
import org.bukkit.entity.Player;
import com.volmit.iris.manager.structure.StructureTemplate;
import com.volmit.iris.util.KList;
public class StructureManager
{
private KList<StructureTemplate> openEditors;
public StructureManager()
{
this.openEditors = new KList<>();
}
public void closeall()
{
for(StructureTemplate i : openEditors.copy())
{
i.close();
}
}
public void open(StructureTemplate t)
{
for(StructureTemplate i : openEditors.copy())
{
if(t.getWorker().equals(i.getWorker()))
{
i.close();
}
}
openEditors.add(t);
}
public void remove(StructureTemplate s)
{
openEditors.remove(s);
}
public StructureTemplate get(Player p)
{
for(StructureTemplate i : openEditors)
{
if(i.getWorker().equals(p))
{
return i;
}
}
return null;
}
}

View File

@@ -20,9 +20,6 @@ public class CommandIris extends MortarCommand
@Command
private CommandIrisJigsaw jigsaw;
@Command
private CommandIrisStructure structure;
@Command
private CommandIrisObject object;

View File

@@ -1,67 +0,0 @@
package com.volmit.iris.manager.command;
import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings;
import com.volmit.iris.util.Command;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender;
public class CommandIrisStructure extends MortarCommand
{
@Command
private CommandIrisStructureCreate create;
@Command
private CommandIrisStructureOpen open;
@Command
private CommandIrisStructureSave save;
@Command
private CommandIrisStructureMove more;
@Command
private CommandIrisStructureExpand expand;
@Command
private CommandIrisStructureVariants variants;
@Command
private CommandIrisStructureClose close;
public CommandIrisStructure()
{
super("structure", "struct", "str");
requiresPermission(Iris.perm);
setCategory("Structure");
setDescription("Structure Commands");
}
@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 Structures, please enable studio in Iris/settings.json");
return true;
}
sender.sendMessage("Iris Structure Commands");
printHelp(sender);
sender.sendMessage("Note: This is a Procedural Structure creator,");
sender.sendMessage("not an object creator, see '/iris object'.");
return true;
}
@Override
protected String getArgsUsage()
{
return "[subcommand]";
}
}

View File

@@ -1,62 +0,0 @@
package com.volmit.iris.manager.command;
import com.volmit.iris.util.KList;
import org.bukkit.entity.Player;
import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings;
import com.volmit.iris.manager.structure.StructureTemplate;
import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender;
public class CommandIrisStructureClose extends MortarCommand
{
public CommandIrisStructureClose()
{
super("close", "x");
requiresPermission(Iris.perm);
setCategory("Structure");
setDescription("Close a structure");
}
@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 Structures, please enable studio in Iris/settings.json");
return true;
}
if(!sender.isPlayer())
{
sender.sendMessage("You don't have a wand");
return true;
}
Player p = sender.player();
StructureTemplate m = Iris.struct.get(p);
if(m == null)
{
sender.sendMessage("You do not have an open structure");
return true;
}
m.close();
sender.sendMessage("Saved & Closed!");
return true;
}
@Override
protected String getArgsUsage()
{
return "";
}
}

View File

@@ -1,104 +0,0 @@
package com.volmit.iris.manager.command;
import com.volmit.iris.util.KList;
import org.bukkit.entity.Player;
import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings;
import com.volmit.iris.manager.structure.StructureTemplate;
import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender;
public class CommandIrisStructureCreate extends MortarCommand
{
public CommandIrisStructureCreate()
{
super("new", "create", "+");
requiresPermission(Iris.perm);
setCategory("Structure");
setDescription("Create a structure");
}
@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 Structures, please enable studio in Iris/settings.json");
return true;
}
if (!sender.isPlayer()) {
sender.sendMessage("You cannot run this from console");
return true;
}
Player p = sender.player();
boolean d3 = false;
int width;
int height;
if (args.length == 0){
sender.sendMessage("Please specify the name of the object you wish to create");
return true;
} else if (args.length == 1){
sender.sendMessage("Please specify the name of the dimension you are in");
return true;
} else if (args.length == 2){
sender.sendMessage("No width and height specified. Taking defaults (5 and 5)");
width = 5;
height = 5;
} else if (args.length == 3){
if (args[2].equalsIgnoreCase("-3d"))
{
sender.sendMessage("No width and height specified. Taking defaults (5 and 5)");
width = 5;
height = 5;
d3 = true;
} else {
sender.sendMessage("No height specified, taking width as height");
width = Integer.parseInt(args[2]);
height = Integer.parseInt(args[2]);
}
} else if (args.length == 4){
width = Integer.parseInt(args[2]);
if (args[3].equalsIgnoreCase("-3d"))
{
sender.sendMessage("No height specified, taking width as height");
height = Integer.parseInt(args[2]);
} else {
height = Integer.parseInt(args[3]);
}
} else {
for (String i : args){
if (i.equalsIgnoreCase("-3d")){
d3 = true;
}
}
width = Integer.parseInt(args[2]);
height = Integer.parseInt(args[3]);
}
if (width % 2 == 0){
sender.sendMessage("Width is an even number. Adding one");
width += width % 2 == 0 ? 1 : 0;
}
sender.sendMessage("Creating new Structure");
new StructureTemplate(args[0], args[1], p, p.getLocation(), 5, width, height, d3);
return true;
}
@Override
protected String getArgsUsage()
{
return "<name> <dimension> <tile-width> <tile-height> [-3d]";
}
}

View File

@@ -1,62 +0,0 @@
package com.volmit.iris.manager.command;
import com.volmit.iris.util.KList;
import org.bukkit.entity.Player;
import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings;
import com.volmit.iris.manager.structure.StructureTemplate;
import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender;
public class CommandIrisStructureExpand extends MortarCommand
{
public CommandIrisStructureExpand()
{
super("expand", "++");
requiresPermission(Iris.perm);
setCategory("Structure");
setDescription("Expand out more of the structure");
}
@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 Structures, please enable studio in Iris/settings.json");
return true;
}
if(!sender.isPlayer())
{
sender.sendMessage("You don't have a wand");
return true;
}
Player p = sender.player();
StructureTemplate m = Iris.struct.get(p);
if(m == null)
{
sender.sendMessage("You do not have an open structure");
return true;
}
m.expand();
sender.sendMessage("Loading More!");
return true;
}
@Override
protected String getArgsUsage()
{
return "";
}
}

View File

@@ -1,62 +0,0 @@
package com.volmit.iris.manager.command;
import com.volmit.iris.util.KList;
import org.bukkit.entity.Player;
import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings;
import com.volmit.iris.manager.structure.StructureTemplate;
import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender;
public class CommandIrisStructureMove extends MortarCommand
{
public CommandIrisStructureMove()
{
super("move", "here");
requiresPermission(Iris.perm);
setCategory("Structure");
setDescription("Load more of the structure");
}
@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 Structures, please enable studio in Iris/settings.json");
return true;
}
if(!sender.isPlayer())
{
sender.sendMessage("You don't have a wand");
return true;
}
Player p = sender.player();
StructureTemplate m = Iris.struct.get(p);
if(m == null)
{
sender.sendMessage("You do not have an open structure");
return true;
}
m.more();
sender.sendMessage("Moving Structure Builder!");
return true;
}
@Override
protected String getArgsUsage()
{
return "";
}
}

View File

@@ -1,70 +0,0 @@
package com.volmit.iris.manager.command;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.util.KList;
import org.bukkit.entity.Player;
import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings;
import com.volmit.iris.object.IrisStructure;
import com.volmit.iris.manager.structure.StructureTemplate;
import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender;
public class CommandIrisStructureOpen extends MortarCommand
{
public CommandIrisStructureOpen()
{
super("load", "open", "o");
requiresPermission(Iris.perm);
setCategory("Structure");
setDescription("Open an existing structure");
}
@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 Structures, please enable studio in Iris/settings.json");
return true;
}
if(!sender.isPlayer())
{
sender.sendMessage("You don't have a wand");
return true;
}
if(args.length == 0){
sender.sendMessage("Please specify the structure you wish to load");
return true;
}
Player p = sender.player();
IrisStructure structure = IrisDataManager.loadAnyStructure(args[0]);
if(structure == null)
{
sender.sendMessage("Can't find " + args[0]);
return true;
}
String dimensionGuess = structure.getLoadFile().getParentFile().getParentFile().getName();
new StructureTemplate(structure.getName(), dimensionGuess, p, p.getLocation(), 9, structure.getGridSize(), structure.getGridHeight(), structure.getMaxLayers() > 1).loadStructures(structure);
return true;
}
@Override
protected String getArgsUsage()
{
return "<structure>";
}
}

View File

@@ -1,62 +0,0 @@
package com.volmit.iris.manager.command;
import com.volmit.iris.util.KList;
import org.bukkit.entity.Player;
import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings;
import com.volmit.iris.manager.structure.StructureTemplate;
import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender;
public class CommandIrisStructureSave extends MortarCommand
{
public CommandIrisStructureSave()
{
super("save", "s");
requiresPermission(Iris.perm);
setCategory("Structure");
setDescription("Save a structure");
}
@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 Structures, please enable studio in Iris/settings.json");
return true;
}
if(!sender.isPlayer())
{
sender.sendMessage("You don't have a wand");
return true;
}
Player p = sender.player();
StructureTemplate m = Iris.struct.get(p);
if(m == null)
{
sender.sendMessage("You do not have an open structure");
return true;
}
m.saveStructure();
sender.sendMessage("Saved!");
return true;
}
@Override
protected String getArgsUsage()
{
return "";
}
}

View File

@@ -1,61 +0,0 @@
package com.volmit.iris.manager.command;
import com.volmit.iris.util.KList;
import org.bukkit.entity.Player;
import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings;
import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender;
public class CommandIrisStructureVariants extends MortarCommand
{
public CommandIrisStructureVariants()
{
super("variants", "var", "v");
requiresPermission(Iris.perm);
setCategory("Structure");
setDescription("Change or add variants in tile looking at");
}
@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 Structures, please enable studio in Iris/settings.json");
return true;
}
if(!sender.isPlayer())
{
sender.sendMessage("You don't have a wand");
return true;
}
Player p = sender.player();
try
{
Iris.struct.get(p).openVariants();
}
catch(Throwable e)
{
sender.sendMessage("You do not have an open structure");
}
return true;
}
@Override
protected String getArgsUsage()
{
return "";
}
}

View File

@@ -34,7 +34,7 @@ public class MultiverseCoreLink
Method m = mvWorldManager.getClass().getDeclaredMethod("addWorld",
String.class, World.Environment.class, String.class, WorldType.class, Boolean.class, String.class, boolean.class);
boolean b = (boolean) m.invoke(mvWorldManager, worldName, dim.getEnvironment(), seed, WorldType.NORMAL, dim.isVanillaStructures(), "Iris", false);
boolean b = (boolean) m.invoke(mvWorldManager, worldName, dim.getEnvironment(), seed, WorldType.NORMAL, false, "Iris", false);
saveConfig();
return b;
}