diff --git a/pom.xml b/pom.xml index 4c86a507e..af6cf6af4 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.volmit Iris - 1.1.9 + 1.1.10 Iris false diff --git a/src/main/java/com/volmit/iris/manager/IrisDataManager.java b/src/main/java/com/volmit/iris/manager/IrisDataManager.java index b0c2b37c5..3fff41b68 100644 --- a/src/main/java/com/volmit/iris/manager/IrisDataManager.java +++ b/src/main/java/com/volmit/iris/manager/IrisDataManager.java @@ -19,8 +19,9 @@ public class IrisDataManager private ResourceLoader dimensionLoader; private ResourceLoader generatorLoader; private ResourceLoader structureLoader; - private ResourceLoader structurePieceLoader; - private ResourceLoader structurePoolLoader; + private ResourceLoader jigsawPieceLoader; + private ResourceLoader jigsawPoolLoader; + private ResourceLoader jigsawStructureLoader; private ResourceLoader entityLoader; private ResourceLoader blockLoader; private ObjectResourceLoader objectLoader; @@ -51,9 +52,10 @@ public class IrisDataManager this.biomeLoader = null; this.dimensionLoader = null; this.structureLoader = null; - this.structurePoolLoader = null; - this.structurePieceLoader = null; + this.jigsawPoolLoader = null; + this.jigsawPieceLoader = null; this.generatorLoader = null; + this.jigsawStructureLoader = null; this.blockLoader = null; this.objectLoader = null; } @@ -82,8 +84,9 @@ 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.structurePoolLoader = new ResourceLoader<>(packs, this, "jigsaw-pools", "Jigsaw Pool", IrisJigsawPool.class); - this.structurePieceLoader = new ResourceLoader<>(packs, this, "jigsaw-pieces", "Jigsaw Piece", IrisJigsawPiece.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); 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"); @@ -99,8 +102,9 @@ public class IrisDataManager blockLoader.clearCache(); lootLoader.clearCache(); objectLoader.clearCache(); - structurePieceLoader.clearCache(); - structurePoolLoader.clearCache(); + jigsawPieceLoader.clearCache(); + jigsawPoolLoader.clearCache(); + jigsawStructureLoader.clearCache(); regionLoader.clearCache(); dimensionLoader.clearCache(); entityLoader.clearCache(); @@ -122,9 +126,10 @@ public class IrisDataManager regionLoader.clearList(); dimensionLoader.clearList(); generatorLoader.clearList(); + jigsawStructureLoader.clearList(); structureLoader.clearList(); - structurePoolLoader.clearList(); - structurePieceLoader.clearList(); + jigsawPoolLoader.clearList(); + jigsawPieceLoader.clearList(); objectLoader.clearList(); } @@ -143,14 +148,14 @@ public class IrisDataManager return loadAny(key, (dm) -> dm.getStructureLoader().load(key, false)); } - public static IrisJigsawPiece loadAnyStructurePiece(String key) + public static IrisJigsawPiece loadAnyJigsawPiece(String key) { - return loadAny(key, (dm) -> dm.getStructurePieceLoader().load(key, false)); + return loadAny(key, (dm) -> dm.getJigsawPieceLoader().load(key, false)); } - public static IrisJigsawPool loadAnyStructurePool(String key) + public static IrisJigsawPool loadAnyJigsawPool(String key) { - return loadAny(key, (dm) -> dm.getStructurePoolLoader().load(key, false)); + return loadAny(key, (dm) -> dm.getJigsawPoolLoader().load(key, false)); } public static IrisEntity loadAnyEntity(String key) @@ -178,6 +183,11 @@ public class IrisDataManager return loadAny(key, (dm) -> dm.getDimensionLoader().load(key, false)); } + public static IrisJigsawStructure loadAnyJigsawStructure(String key) + { + return loadAny(key, (dm) -> dm.getJigsawStructureLoader().load(key, false)); + } + public static IrisGenerator loadAnyGenerator(String key) { return loadAny(key, (dm) -> dm.getGeneratorLoader().load(key, false)); diff --git a/src/main/java/com/volmit/iris/manager/IrisProject.java b/src/main/java/com/volmit/iris/manager/IrisProject.java index 1368c1846..c66b6566e 100644 --- a/src/main/java/com/volmit/iris/manager/IrisProject.java +++ b/src/main/java/com/volmit/iris/manager/IrisProject.java @@ -285,6 +285,7 @@ public class IrisProject 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")); schemas.put(getSchemaEntry(IrisBlockData.class, dm, "/blocks/*.json")); schemas.put(getSchemaEntry(IrisLootTable.class, dm, "/loot/*.json")); settings.put("json.schemas", schemas); @@ -325,7 +326,7 @@ public class IrisProject blocks.add(dm.getBlockLoader().load(i)); } - //TODO: EXPORT STRUCTURE PIECES FROM STRUCTURES + //TODO: EXPORT JIGSAW PIECES FROM STRUCTURES 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))); diff --git a/src/main/java/com/volmit/iris/manager/SchemaBuilder.java b/src/main/java/com/volmit/iris/manager/SchemaBuilder.java index 2bc71978b..63239ad98 100644 --- a/src/main/java/com/volmit/iris/manager/SchemaBuilder.java +++ b/src/main/java/com/volmit/iris/manager/SchemaBuilder.java @@ -382,14 +382,14 @@ public class SchemaBuilder description.add(SYMBOL_TYPE__N + " Must be a valid Structure Tileset (use ctrl+space for auto complete!)"); } - else if(k.isAnnotationPresent(RegistryListStructurePiece.class)) + else if(k.isAnnotationPresent(RegistryListJigsawPiece.class)) { String key = "enum-reg-structure-piece"; if(!definitions.containsKey(key)) { JSONObject j = new JSONObject(); - j.put("enum", new JSONArray(data.getStructurePieceLoader().getPossibleKeys())); + j.put("enum", new JSONArray(data.getJigsawPieceLoader().getPossibleKeys())); definitions.put(key, j); } @@ -398,14 +398,30 @@ public class SchemaBuilder description.add(SYMBOL_TYPE__N + " Must be a valid Jigsaw Piece (use ctrl+space for auto complete!)"); } - else if(k.isAnnotationPresent(RegistryListStructurePool.class)) + else if(k.isAnnotationPresent(RegistryListJigsaw.class)) + { + String key = "enum-reg-jigsaw"; + + if(!definitions.containsKey(key)) + { + JSONObject j = new JSONObject(); + j.put("enum", new JSONArray(data.getJigsawStructureLoader().getPossibleKeys())); + definitions.put(key, j); + } + + fancyType = "Iris Jigsaw"; + prop.put("$ref", "#/definitions/" + key); + description.add(SYMBOL_TYPE__N + " Must be a valid Jigsaw (use ctrl+space for auto complete!)"); + } + + else if(k.isAnnotationPresent(RegistryListJigsawPool.class)) { String key = "enum-reg-structure-pool"; if(!definitions.containsKey(key)) { JSONObject j = new JSONObject(); - j.put("enum", new JSONArray(data.getStructurePoolLoader().getPossibleKeys())); + j.put("enum", new JSONArray(data.getJigsawPoolLoader().getPossibleKeys())); definitions.put(key, j); } @@ -797,7 +813,7 @@ public class SchemaBuilder description.add(SYMBOL_TYPE__N + " Must be a valid Structure Tileset (use ctrl+space for auto complete!)"); } - else if(k.isAnnotationPresent(RegistryListStructurePiece.class)) + else if(k.isAnnotationPresent(RegistryListJigsawPiece.class)) { fancyType = "List of Iris Jigsaw Pieces"; String key = "enum-reg-structure-piece"; @@ -805,7 +821,7 @@ public class SchemaBuilder if(!definitions.containsKey(key)) { JSONObject j = new JSONObject(); - j.put("enum", new JSONArray(data.getStructurePieceLoader().getPossibleKeys())); + j.put("enum", new JSONArray(data.getJigsawPieceLoader().getPossibleKeys())); definitions.put(key, j); } @@ -815,7 +831,7 @@ public class SchemaBuilder description.add(SYMBOL_TYPE__N + " Must be a valid Jigsaw Piece (use ctrl+space for auto complete!)"); } - else if(k.isAnnotationPresent(RegistryListStructurePool.class)) + else if(k.isAnnotationPresent(RegistryListJigsawPool.class)) { fancyType = "List of Iris Jigsaw Pools"; String key = "enum-reg-structure-pool"; @@ -823,7 +839,7 @@ public class SchemaBuilder if(!definitions.containsKey(key)) { JSONObject j = new JSONObject(); - j.put("enum", new JSONArray(data.getStructurePoolLoader().getPossibleKeys())); + j.put("enum", new JSONArray(data.getJigsawPoolLoader().getPossibleKeys())); definitions.put(key, j); } @@ -833,6 +849,24 @@ public class SchemaBuilder description.add(SYMBOL_TYPE__N + " Must be a valid Jigsaw Pool (use ctrl+space for auto complete!)"); } + else if(k.isAnnotationPresent(RegistryListJigsaw.class)) + { + fancyType = "List of Iris Jigsaw Structures"; + String key = "enum-reg-jigsaw"; + + if(!definitions.containsKey(key)) + { + JSONObject j = new JSONObject(); + j.put("enum", new JSONArray(data.getJigsawStructureLoader().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 Jigsaw (use ctrl+space for auto complete!)"); + } + else if(t.type().equals(Enchantment.class)) { fancyType = "List of Enchantment Types"; diff --git a/src/main/java/com/volmit/iris/manager/command/CommandIrisJigsawEdit.java b/src/main/java/com/volmit/iris/manager/command/CommandIrisJigsawEdit.java index 4fe7b514c..e54314ed1 100644 --- a/src/main/java/com/volmit/iris/manager/command/CommandIrisJigsawEdit.java +++ b/src/main/java/com/volmit/iris/manager/command/CommandIrisJigsawEdit.java @@ -42,7 +42,7 @@ public class CommandIrisJigsawEdit extends MortarCommand } - IrisJigsawPiece piece = IrisDataManager.loadAnyStructurePiece(args[0]); + IrisJigsawPiece piece = IrisDataManager.loadAnyJigsawPiece(args[0]); if(piece != null) { diff --git a/src/main/java/com/volmit/iris/manager/command/CommandIrisJigsawNew.java b/src/main/java/com/volmit/iris/manager/command/CommandIrisJigsawNew.java index 2d22f8d76..8583e9405 100644 --- a/src/main/java/com/volmit/iris/manager/command/CommandIrisJigsawNew.java +++ b/src/main/java/com/volmit/iris/manager/command/CommandIrisJigsawNew.java @@ -48,7 +48,7 @@ public class CommandIrisJigsawNew extends MortarCommand } IrisObject object = IrisDataManager.loadAnyObject(args[2]); - File dest = Iris.instance.getDataFile("packs", args[1], "structure-pieces", args[0] + ".json"); + File dest = Iris.instance.getDataFile("packs", args[1], "jigsaw-pieces", args[0] + ".json"); new JigsawEditor(sender.player(), null, object, dest); sender.sendMessage("* Right Click blocks to make them connectors"); sender.sendMessage("* Right Click connectors to orient them"); diff --git a/src/main/java/com/volmit/iris/object/IrisJigsawPieceConnector.java b/src/main/java/com/volmit/iris/object/IrisJigsawPieceConnector.java index 6ccd6cbef..d10ec26b6 100644 --- a/src/main/java/com/volmit/iris/object/IrisJigsawPieceConnector.java +++ b/src/main/java/com/volmit/iris/object/IrisJigsawPieceConnector.java @@ -29,7 +29,7 @@ public class IrisJigsawPieceConnector @Desc("If set to true, this connector is allowed to place pieces inside of it's own piece. For example if you are adding a light post, or house on top of a path piece, you would set this to true to allow the piece to collide with the path bounding box.") private boolean innerConnector = false; - @RegistryListStructurePool + @RegistryListJigsawPool @Desc("Pick piece pools to place onto this connector") @ArrayType(type = String.class, min = 1) @Required diff --git a/src/main/java/com/volmit/iris/object/IrisJigsawPlacement.java b/src/main/java/com/volmit/iris/object/IrisJigsawPlacement.java new file mode 100644 index 000000000..5736f0264 --- /dev/null +++ b/src/main/java/com/volmit/iris/object/IrisJigsawPlacement.java @@ -0,0 +1,27 @@ +package com.volmit.iris.object; + +import com.volmit.iris.util.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@Desc("Represents a jigsaw placement") +@Data +public class IrisJigsawPlacement +{ + @RegistryListJigsaw + @Required + @DontObfuscate + @Desc("The jigsaw structure to use") + private String structure = ""; + + @Required + @MinNumber(1) + @DontObfuscate + @Desc("The rarity for this jigsaw structure to place on a per chunk basis") + private int rarity = 29; +} diff --git a/src/main/java/com/volmit/iris/object/IrisJigsawPool.java b/src/main/java/com/volmit/iris/object/IrisJigsawPool.java index f115169a2..9a0c79cb4 100644 --- a/src/main/java/com/volmit/iris/object/IrisJigsawPool.java +++ b/src/main/java/com/volmit/iris/object/IrisJigsawPool.java @@ -16,7 +16,7 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = false) public class IrisJigsawPool extends IrisRegistrant { - @RegistryListStructurePiece + @RegistryListJigsawPiece @Required @DontObfuscate @ArrayType(min = 1,type = String.class) diff --git a/src/main/java/com/volmit/iris/object/IrisJigsawStructure.java b/src/main/java/com/volmit/iris/object/IrisJigsawStructure.java new file mode 100644 index 000000000..be0c834c1 --- /dev/null +++ b/src/main/java/com/volmit/iris/object/IrisJigsawStructure.java @@ -0,0 +1,31 @@ +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 jigsaw structure") +@Data +@EqualsAndHashCode(callSuper = false) +public class IrisJigsawStructure extends IrisRegistrant +{ + @RegistryListJigsawPiece + @Required + @DontObfuscate + @ArrayType(min = 1,type = String.class) + @Desc("The starting pieces. Randomly chooses a starting piece, then connects pieces using the pools define in the starting piece.") + private KList pieces = new KList<>(); + + @MaxNumber(32) + @MinNumber(1) + @DontObfuscate + @Desc("The maximum pieces that can step out from the center piece") + private int maxDepth = 9; +} diff --git a/src/main/java/com/volmit/iris/scaffold/engine/DirectWorldWriter.java b/src/main/java/com/volmit/iris/scaffold/engine/DirectWorldWriter.java index 36d3595d5..69c310d15 100644 --- a/src/main/java/com/volmit/iris/scaffold/engine/DirectWorldWriter.java +++ b/src/main/java/com/volmit/iris/scaffold/engine/DirectWorldWriter.java @@ -42,7 +42,7 @@ public class DirectWorldWriter { for(Long i : new KList<>(writeBuffer.keySet())) { - if(M.ms() - lastUse.get(i) < 5000) + if(M.ms() - lastUse.get(i) < 10000) { continue; } @@ -239,6 +239,7 @@ public class DirectWorldWriter { if(f.exists()) { try { + Iris.warn("HAD TO LOAD MCA REGION FILE " + x + " " + z + " which is EXPENSIVE!"); mca = MCAUtil.read(f); try { diff --git a/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java b/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java index d3f85a040..b7c0a70ef 100644 --- a/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java +++ b/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java @@ -202,6 +202,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer RNG rng = new RNG(Cache.key(x, z)).nextParallelRNG(getEngine().getTarget().getWorld().getSeed()); IrisRegion region = getComplex().getRegionStream().get(x+8, z+8); IrisBiome biome = getComplex().getTrueBiomeStream().get(x+8, z+8); + // generateParallaxJigsaw(rng, x, z, biome, placedObjects); generateParallaxSurface(rng, x, z, biome, placedObjects); generateParallaxMutations(rng, x, z, placedObjects); generateStructures(rng, x>>4, z>>4, region, biome, placedObjects); @@ -270,7 +271,6 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer default void generateParallaxSurface(RNG rng, int x, int z, IrisBiome biome, KList objects) { for (IrisObjectPlacement i : biome.getSurfaceObjects()) { - Iris.info("Found Placement: " + i.getPlace()); if(rng.chance(i.getChance())) { place(rng, x, z, i, objects); diff --git a/src/main/java/com/volmit/iris/util/PregenJob.java b/src/main/java/com/volmit/iris/util/PregenJob.java index b24c44e11..fa4a1101c 100644 --- a/src/main/java/com/volmit/iris/util/PregenJob.java +++ b/src/main/java/com/volmit/iris/util/PregenJob.java @@ -89,12 +89,12 @@ public class PregenJob implements Listener public PregenJob(World world, int size, MortarSender sender, Runnable onDone) { - writer = new DirectWorldWriter(world.getWorldFolder()); gleaming = (IrisSettings.get().isUseGleamPregenerator()); g.set(0); burst = new MultiBurst(gleaming ? IrisSettings.get().getMaxAsyncChunkPregenThreads() : tc()); instance = this; working = new Semaphore(gleaming ? IrisSettings.get().getMaxAsyncChunkPregenThreads() : tc()); + writer =IrisSettings.get().isUseExperimentalGleamMCADirectWriteMode() ? new DirectWorldWriter(world.getWorldFolder()) : null; this.s = PrecisionStopwatch.start(); Iris.instance.registerListener(this); this.world = world; @@ -130,6 +130,10 @@ public class PregenJob implements Listener mcaX = x; mcaZ = z; chunkSpiraler.retarget(cubeSize, cubeSize); + if(writer != null) + { + writer.flush(); + } ticks++; }); @@ -169,7 +173,11 @@ public class PregenJob implements Listener { try { - instance.writer.flush(); + if(instance.writer != null) + { + instance.writer.flush(); + } + Bukkit.getScheduler().cancelTask(task); if(consumer != null) @@ -195,7 +203,11 @@ public class PregenJob implements Listener instance.pms = instance.s.getMilliseconds(); instance.paused = true; instance.pausedAt = M.ms(); - instance.writer.flush(); + + if(instance.writer != null) + { + instance.writer.flush(); + } } public static void resume() @@ -461,7 +473,15 @@ public class PregenJob implements Listener } }; - e.execute(g); + if(IrisSettings.get().isUseExperimentalGleamMCADirectWriteMode()) + { + e.execute(g); + } + + else + { + J.a(g); + } } else @@ -469,33 +489,42 @@ public class PregenJob implements Listener { consumer.accept(new ChunkPosition(chunkX, chunkZ), Color.magenta.darker().darker().darker()); } - e.execute(() -> +Runnable rr = () -> +{ + try + { + working.acquire(); + + if(consumer != null) + { + consumer.accept(new ChunkPosition(cx, cz), Color.magenta); + } + + Chunk chunk = PaperLib.getChunkAtAsync(world, cx, cz, true, true).join(); + working.release(); + genned++; + nogen = M.ms(); + + if(consumer != null) + { + consumer.accept(new ChunkPosition(chunk.getX(), chunk.getZ()), Color.green); + } + } + + catch(InterruptedException e) + { + e.printStackTrace(); + } +}; + if(IrisSettings.get().isUseExperimentalGleamMCADirectWriteMode()) { - try - { - working.acquire(); + e.execute(rr); + } - if(consumer != null) - { - consumer.accept(new ChunkPosition(cx, cz), Color.magenta); - } - - Chunk chunk = PaperLib.getChunkAtAsync(world, cx, cz, true, true).join(); - working.release(); - genned++; - nogen = M.ms(); - - if(consumer != null) - { - consumer.accept(new ChunkPosition(chunk.getX(), chunk.getZ()), Color.green); - } - } - - catch(InterruptedException e) - { - e.printStackTrace(); - } - }); + else + { + J.a(rr); + } } } @@ -609,7 +638,10 @@ public class PregenJob implements Listener Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "save-all"); } - writer.flush(); + if(instance.writer != null) + { + instance.writer.flush(); + } } public int max() diff --git a/src/main/java/com/volmit/iris/util/RegistryListStructurePool.java b/src/main/java/com/volmit/iris/util/RegistryListJigsaw.java similarity index 86% rename from src/main/java/com/volmit/iris/util/RegistryListStructurePool.java rename to src/main/java/com/volmit/iris/util/RegistryListJigsaw.java index 6dd609287..ea4173c20 100644 --- a/src/main/java/com/volmit/iris/util/RegistryListStructurePool.java +++ b/src/main/java/com/volmit/iris/util/RegistryListJigsaw.java @@ -8,7 +8,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Retention(RUNTIME) @Target({PARAMETER, TYPE, FIELD}) -public @interface RegistryListStructurePool +public @interface RegistryListJigsaw { } diff --git a/src/main/java/com/volmit/iris/util/RegistryListStructurePiece.java b/src/main/java/com/volmit/iris/util/RegistryListJigsawPiece.java similarity index 86% rename from src/main/java/com/volmit/iris/util/RegistryListStructurePiece.java rename to src/main/java/com/volmit/iris/util/RegistryListJigsawPiece.java index a21b99e4b..aca2497e3 100644 --- a/src/main/java/com/volmit/iris/util/RegistryListStructurePiece.java +++ b/src/main/java/com/volmit/iris/util/RegistryListJigsawPiece.java @@ -8,7 +8,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Retention(RUNTIME) @Target({PARAMETER, TYPE, FIELD}) -public @interface RegistryListStructurePiece +public @interface RegistryListJigsawPiece { } diff --git a/src/main/java/com/volmit/iris/util/RegistryListJigsawPool.java b/src/main/java/com/volmit/iris/util/RegistryListJigsawPool.java new file mode 100644 index 000000000..eba39a50e --- /dev/null +++ b/src/main/java/com/volmit/iris/util/RegistryListJigsawPool.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 RegistryListJigsawPool +{ + +}