From 6f29da192627a79b21d882b73743982e3366bd58 Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Sun, 27 Dec 2020 02:01:35 -0500 Subject: [PATCH] Connect up jigsaw pools with pieces --- .../com/volmit/iris/manager/IrisProject.java | 3 +- .../volmit/iris/manager/SchemaBuilder.java | 42 +++++++++++++++++-- .../object/IrisStructurePieceConnector.java | 10 +++-- 3 files changed, 47 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/volmit/iris/manager/IrisProject.java b/src/main/java/com/volmit/iris/manager/IrisProject.java index a1cc91ac4..9d965ddb5 100644 --- a/src/main/java/com/volmit/iris/manager/IrisProject.java +++ b/src/main/java/com/volmit/iris/manager/IrisProject.java @@ -283,7 +283,8 @@ public class IrisProject 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(IrisStructurePiece.class, dm, "/structure-pieces/*.json")); + schemas.put(getSchemaEntry(IrisStructurePiece.class, dm, "/jigsaw-pieces/*.json")); + schemas.put(getSchemaEntry(IrisStructurePool.class, dm, "/jigsaw-pools/*.json")); schemas.put(getSchemaEntry(IrisBlockData.class, dm, "/blocks/*.json")); schemas.put(getSchemaEntry(IrisLootTable.class, dm, "/loot/*.json")); settings.put("json.schemas", schemas); diff --git a/src/main/java/com/volmit/iris/manager/SchemaBuilder.java b/src/main/java/com/volmit/iris/manager/SchemaBuilder.java index 07fc1ddcb..2bc71978b 100644 --- a/src/main/java/com/volmit/iris/manager/SchemaBuilder.java +++ b/src/main/java/com/volmit/iris/manager/SchemaBuilder.java @@ -393,9 +393,25 @@ public class SchemaBuilder definitions.put(key, j); } - fancyType = "Iris Structure Piece"; + fancyType = "Iris Jigsaw Piece"; prop.put("$ref", "#/definitions/" + key); - description.add(SYMBOL_TYPE__N + " Must be a valid Structure Piece (use ctrl+space for auto complete!)"); + description.add(SYMBOL_TYPE__N + " Must be a valid Jigsaw Piece (use ctrl+space for auto complete!)"); + } + + else if(k.isAnnotationPresent(RegistryListStructurePool.class)) + { + String key = "enum-reg-structure-pool"; + + if(!definitions.containsKey(key)) + { + JSONObject j = new JSONObject(); + j.put("enum", new JSONArray(data.getStructurePoolLoader().getPossibleKeys())); + definitions.put(key, j); + } + + fancyType = "Iris Jigsaw Pool"; + prop.put("$ref", "#/definitions/" + key); + description.add(SYMBOL_TYPE__N + " Must be a valid Jigsaw Piece (use ctrl+space for auto complete!)"); } else if(k.getType().equals(Enchantment.class)) @@ -783,7 +799,7 @@ public class SchemaBuilder else if(k.isAnnotationPresent(RegistryListStructurePiece.class)) { - fancyType = "List of Iris Structure Pieces"; + fancyType = "List of Iris Jigsaw Pieces"; String key = "enum-reg-structure-piece"; if(!definitions.containsKey(key)) @@ -796,7 +812,25 @@ public class SchemaBuilder JSONObject items = new JSONObject(); items.put("$ref", "#/definitions/" + key); prop.put("items", items); - description.add(SYMBOL_TYPE__N + " Must be a valid Structure Piece (use ctrl+space for auto complete!)"); + description.add(SYMBOL_TYPE__N + " Must be a valid Jigsaw Piece (use ctrl+space for auto complete!)"); + } + + else if(k.isAnnotationPresent(RegistryListStructurePool.class)) + { + fancyType = "List of Iris Jigsaw Pools"; + String key = "enum-reg-structure-pool"; + + if(!definitions.containsKey(key)) + { + JSONObject j = new JSONObject(); + j.put("enum", new JSONArray(data.getStructurePoolLoader().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 Pool (use ctrl+space for auto complete!)"); } else if(t.type().equals(Enchantment.class)) diff --git a/src/main/java/com/volmit/iris/object/IrisStructurePieceConnector.java b/src/main/java/com/volmit/iris/object/IrisStructurePieceConnector.java index fefd9aa4d..b50c5d1e1 100644 --- a/src/main/java/com/volmit/iris/object/IrisStructurePieceConnector.java +++ b/src/main/java/com/volmit/iris/object/IrisStructurePieceConnector.java @@ -1,8 +1,6 @@ package com.volmit.iris.object; -import com.volmit.iris.util.Desc; -import com.volmit.iris.util.DontObfuscate; -import com.volmit.iris.util.Required; +import com.volmit.iris.util.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -31,6 +29,12 @@ public class IrisStructurePieceConnector @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 + @Desc("Pick piece pools to place onto this connector") + @ArrayType(type = String.class, min = 1) + @Required + private KList pools = new KList<>(); + @DontObfuscate @Desc("The relative position this connector is located at for connecting to other pieces") @Required