From 5f50fa420296fdbc36b8e524cd5c70ccdc9fc68e Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Sat, 26 Dec 2020 05:00:26 -0500 Subject: [PATCH] Registry for jigsaw --- .../volmit/iris/manager/IrisDataManager.java | 12 ++++++++- .../volmit/iris/object/IrisStructurePool.java | 25 +++++++++++++++++++ .../iris/util/RegistryListStructurePool.java | 14 +++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/volmit/iris/object/IrisStructurePool.java create mode 100644 src/main/java/com/volmit/iris/util/RegistryListStructurePool.java diff --git a/src/main/java/com/volmit/iris/manager/IrisDataManager.java b/src/main/java/com/volmit/iris/manager/IrisDataManager.java index 8b238527e..1ce64aa6e 100644 --- a/src/main/java/com/volmit/iris/manager/IrisDataManager.java +++ b/src/main/java/com/volmit/iris/manager/IrisDataManager.java @@ -20,6 +20,7 @@ public class IrisDataManager private ResourceLoader generatorLoader; private ResourceLoader structureLoader; private ResourceLoader structurePieceLoader; + private ResourceLoader structurePoolLoader; private ResourceLoader entityLoader; private ResourceLoader blockLoader; private ObjectResourceLoader objectLoader; @@ -50,6 +51,7 @@ public class IrisDataManager this.biomeLoader = null; this.dimensionLoader = null; this.structureLoader = null; + this.structurePoolLoader = null; this.structurePieceLoader = null; this.generatorLoader = null; this.blockLoader = null; @@ -80,7 +82,8 @@ public class IrisDataManager 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.structurePieceLoader = new ResourceLoader<>(packs, this, "structure-pieces", "Structure Piece", IrisStructurePiece.class); + this.structurePoolLoader = new ResourceLoader<>(packs, this, "jigsaw-pools", "Jigsaw Pool", IrisStructurePool.class); + this.structurePieceLoader = new ResourceLoader<>(packs, this, "jigsaw-pieces", "Jigsaw Piece", IrisStructurePiece.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"); @@ -97,6 +100,7 @@ public class IrisDataManager lootLoader.clearCache(); objectLoader.clearCache(); structurePieceLoader.clearCache(); + structurePoolLoader.clearCache(); regionLoader.clearCache(); dimensionLoader.clearCache(); entityLoader.clearCache(); @@ -119,6 +123,7 @@ public class IrisDataManager dimensionLoader.clearList(); generatorLoader.clearList(); structureLoader.clearList(); + structurePoolLoader.clearList(); structurePieceLoader.clearList(); objectLoader.clearList(); } @@ -143,6 +148,11 @@ public class IrisDataManager return loadAny(key, (dm) -> dm.getStructurePieceLoader().load(key, false)); } + public static IrisStructurePool loadAnyStructurePool(String key) + { + return loadAny(key, (dm) -> dm.getStructurePoolLoader().load(key, false)); + } + public static IrisEntity loadAnyEntity(String key) { return loadAny(key, (dm) -> dm.getEntityLoader().load(key, false)); diff --git a/src/main/java/com/volmit/iris/object/IrisStructurePool.java b/src/main/java/com/volmit/iris/object/IrisStructurePool.java new file mode 100644 index 000000000..3d1ddd441 --- /dev/null +++ b/src/main/java/com/volmit/iris/object/IrisStructurePool.java @@ -0,0 +1,25 @@ +package com.volmit.iris.object; + +import com.volmit.iris.util.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@DontObfuscate +@Desc("Represents a structure piece pool") +@Data +@EqualsAndHashCode(callSuper = false) +public class IrisStructurePool extends IrisRegistrant +{ + @RegistryListStructurePiece + @Required + @DontObfuscate + @ArrayType(min = 1,type = String.class) + @Desc("A list of structure piece pools") + private KList pieces = new KList<>(); +} diff --git a/src/main/java/com/volmit/iris/util/RegistryListStructurePool.java b/src/main/java/com/volmit/iris/util/RegistryListStructurePool.java new file mode 100644 index 000000000..6dd609287 --- /dev/null +++ b/src/main/java/com/volmit/iris/util/RegistryListStructurePool.java @@ -0,0 +1,14 @@ +package com.volmit.iris.util; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@Retention(RUNTIME) +@Target({PARAMETER, TYPE, FIELD}) +public @interface RegistryListStructurePool +{ + +}