diff --git a/src/main/java/com/volmit/iris/manager/ProjectManager.java b/src/main/java/com/volmit/iris/manager/ProjectManager.java index b9f0a560b..d604b0dc6 100644 --- a/src/main/java/com/volmit/iris/manager/ProjectManager.java +++ b/src/main/java/com/volmit/iris/manager/ProjectManager.java @@ -77,6 +77,7 @@ 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.RegistryListObject; import com.volmit.iris.util.RegistryListRegion; @@ -1120,6 +1121,11 @@ public class ProjectManager prop.put("enum", new JSONArray(getBlockTypeList(dat))); } + if(k.isAnnotationPresent(RegistryListItemType.class)) + { + prop.put("enum", new JSONArray(getItemTypeList(dat))); + } + if(k.isAnnotationPresent(RegistryListEntity.class)) { prop.put("enum", new JSONArray(getEntityList(dat))); @@ -1306,6 +1312,26 @@ public class ProjectManager continue; } + if(k.isAnnotationPresent(RegistryListItemType.class)) + { + String name = "enitmty" + t.type().getSimpleName().toLowerCase(); + if(!def.containsKey(name)) + { + JSONObject deff = new JSONObject(); + deff.put("type", tx); + deff.put("enum", new JSONArray(getItemTypeList(dat))); + def.put(name, deff); + } + + JSONObject items = new JSONObject(); + items.put("$ref", "#/definitions/" + name); + prop.put("items", items); + prop.put("description", tp + "\n\n" + k.getAnnotation(Desc.class).value()); + prop.put("type", tp); + properties.put(k.getName(), prop); + continue; + } + if(k.isAnnotationPresent(RegistryListEntity.class)) { String name = "enent" + t.type().getSimpleName().toLowerCase(); @@ -1648,6 +1674,11 @@ public class ProjectManager return B.getBlockTypes(); } + private String[] getItemTypeList(IrisDataManager data) + { + return B.getItemTypes(); + } + private String[] getEntityList(IrisDataManager data) { return data.getEntityLoader().getPossibleKeys(); diff --git a/src/main/java/com/volmit/iris/object/IrisLoot.java b/src/main/java/com/volmit/iris/object/IrisLoot.java index 438d46c50..5c80b703f 100644 --- a/src/main/java/com/volmit/iris/object/IrisLoot.java +++ b/src/main/java/com/volmit/iris/object/IrisLoot.java @@ -24,6 +24,7 @@ import com.volmit.iris.util.KList; import com.volmit.iris.util.MaxNumber; import com.volmit.iris.util.MinNumber; import com.volmit.iris.util.RNG; +import com.volmit.iris.util.RegistryListItemType; import com.volmit.iris.util.Required; import lombok.AllArgsConstructor; @@ -103,6 +104,7 @@ public class IrisLoot @Desc("Add lore to this item") private KList lore = new KList<>(); + @RegistryListItemType @Required @DontObfuscate @Desc("This is the item or block type. Does not accept minecraft:*. Only materials such as DIAMOND_SWORD or DIRT.") diff --git a/src/main/java/com/volmit/iris/util/B.java b/src/main/java/com/volmit/iris/util/B.java index e351d3937..7b9184b39 100644 --- a/src/main/java/com/volmit/iris/util/B.java +++ b/src/main/java/com/volmit/iris/util/B.java @@ -104,6 +104,19 @@ public class B return bt.toArray(new String[bt.size()]); } + public static String[] getItemTypes() + { + KList bt = new KList(); + + for(Material i : Material.values()) + { + String v = i.name().toLowerCase().trim(); + bt.add(v); + } + + return bt.toArray(new String[bt.size()]); + } + public static BlockData getBlockData(String bdxf, IrisDimension resolver) { try @@ -190,33 +203,8 @@ public class B return true; } - //@NoArgsConstructor - boolean str = mat.equals(B.mat("CHEST")) - || mat.equals(B.mat("TRAPPED_CHEST")) - || mat.equals(B.mat("SHULKER_BOX")) - || mat.equals(B.mat("WHITE_SHULKER_BOX")) - || mat.equals(B.mat("ORANGE_SHULKER_BOX")) - || mat.equals(B.mat("MAGENTA_SHULKER_BOX")) - || mat.equals(B.mat("LIGHT_BLUE_SHULKER_BOX")) - || mat.equals(B.mat("YELLOW_SHULKER_BOX")) - || mat.equals(B.mat("LIME_SHULKER_BOX")) - || mat.equals(B.mat("PINK_SHULKER_BOX")) - || mat.equals(B.mat("GRAY_SHULKER_BOX")) - || mat.equals(B.mat("LIGHT_GRAY_SHULKER_BOX")) - || mat.equals(B.mat("CYAN_SHULKER_BOX")) - || mat.equals(B.mat("PURPLE_SHULKER_BOX")) - || mat.equals(B.mat("BLUE_SHULKER_BOX")) - || mat.equals(B.mat("BROWN_SHULKER_BOX")) - || mat.equals(B.mat("GREEN_SHULKER_BOX")) - || mat.equals(B.mat("RED_SHULKER_BOX")) - || mat.equals(B.mat("BLACK_SHULKER_BOX")) - || mat.equals(B.mat("BARREL")) - || mat.equals(B.mat("DISPENSER")) - || mat.equals(B.mat("DROPPER")) - || mat.equals(B.mat("HOPPER")) - || mat.equals(B.mat("FURNACE")) - || mat.equals(B.mat("BLAST_FURNACE")) - || mat.equals(B.mat("SMOKER")); + // @NoArgsConstructor + boolean str = mat.equals(B.mat("CHEST")) || mat.equals(B.mat("TRAPPED_CHEST")) || mat.equals(B.mat("SHULKER_BOX")) || mat.equals(B.mat("WHITE_SHULKER_BOX")) || mat.equals(B.mat("ORANGE_SHULKER_BOX")) || mat.equals(B.mat("MAGENTA_SHULKER_BOX")) || mat.equals(B.mat("LIGHT_BLUE_SHULKER_BOX")) || mat.equals(B.mat("YELLOW_SHULKER_BOX")) || mat.equals(B.mat("LIME_SHULKER_BOX")) || mat.equals(B.mat("PINK_SHULKER_BOX")) || mat.equals(B.mat("GRAY_SHULKER_BOX")) || mat.equals(B.mat("LIGHT_GRAY_SHULKER_BOX")) || mat.equals(B.mat("CYAN_SHULKER_BOX")) || mat.equals(B.mat("PURPLE_SHULKER_BOX")) || mat.equals(B.mat("BLUE_SHULKER_BOX")) || mat.equals(B.mat("BROWN_SHULKER_BOX")) || mat.equals(B.mat("GREEN_SHULKER_BOX")) || mat.equals(B.mat("RED_SHULKER_BOX")) || mat.equals(B.mat("BLACK_SHULKER_BOX")) || mat.equals(B.mat("BARREL")) || mat.equals(B.mat("DISPENSER")) || mat.equals(B.mat("DROPPER")) || mat.equals(B.mat("HOPPER")) || mat.equals(B.mat("FURNACE")) || mat.equals(B.mat("BLAST_FURNACE")) || mat.equals(B.mat("SMOKER")); //@done if(str) @@ -237,30 +225,8 @@ public class B return true; } - //@NoArgsConstructor - boolean str = mat.equals(B.mat("CHEST")) - || mat.equals(B.mat("TRAPPED_CHEST")) - || mat.equals(B.mat("SHULKER_BOX")) - || mat.equals(B.mat("WHITE_SHULKER_BOX")) - || mat.equals(B.mat("ORANGE_SHULKER_BOX")) - || mat.equals(B.mat("MAGENTA_SHULKER_BOX")) - || mat.equals(B.mat("LIGHT_BLUE_SHULKER_BOX")) - || mat.equals(B.mat("YELLOW_SHULKER_BOX")) - || mat.equals(B.mat("LIME_SHULKER_BOX")) - || mat.equals(B.mat("PINK_SHULKER_BOX")) - || mat.equals(B.mat("GRAY_SHULKER_BOX")) - || mat.equals(B.mat("LIGHT_GRAY_SHULKER_BOX")) - || mat.equals(B.mat("CYAN_SHULKER_BOX")) - || mat.equals(B.mat("PURPLE_SHULKER_BOX")) - || mat.equals(B.mat("BLUE_SHULKER_BOX")) - || mat.equals(B.mat("BROWN_SHULKER_BOX")) - || mat.equals(B.mat("GREEN_SHULKER_BOX")) - || mat.equals(B.mat("RED_SHULKER_BOX")) - || mat.equals(B.mat("BLACK_SHULKER_BOX")) - || mat.equals(B.mat("BARREL")) - || mat.equals(B.mat("DISPENSER")) - || mat.equals(B.mat("DROPPER")) - || mat.equals(B.mat("HOPPER")); + // @NoArgsConstructor + boolean str = mat.equals(B.mat("CHEST")) || mat.equals(B.mat("TRAPPED_CHEST")) || mat.equals(B.mat("SHULKER_BOX")) || mat.equals(B.mat("WHITE_SHULKER_BOX")) || mat.equals(B.mat("ORANGE_SHULKER_BOX")) || mat.equals(B.mat("MAGENTA_SHULKER_BOX")) || mat.equals(B.mat("LIGHT_BLUE_SHULKER_BOX")) || mat.equals(B.mat("YELLOW_SHULKER_BOX")) || mat.equals(B.mat("LIME_SHULKER_BOX")) || mat.equals(B.mat("PINK_SHULKER_BOX")) || mat.equals(B.mat("GRAY_SHULKER_BOX")) || mat.equals(B.mat("LIGHT_GRAY_SHULKER_BOX")) || mat.equals(B.mat("CYAN_SHULKER_BOX")) || mat.equals(B.mat("PURPLE_SHULKER_BOX")) || mat.equals(B.mat("BLUE_SHULKER_BOX")) || mat.equals(B.mat("BROWN_SHULKER_BOX")) || mat.equals(B.mat("GREEN_SHULKER_BOX")) || mat.equals(B.mat("RED_SHULKER_BOX")) || mat.equals(B.mat("BLACK_SHULKER_BOX")) || mat.equals(B.mat("BARREL")) || mat.equals(B.mat("DISPENSER")) || mat.equals(B.mat("DROPPER")) || mat.equals(B.mat("HOPPER")); //@done if(str) @@ -281,28 +247,8 @@ public class B return true; } - //@NoArgsConstructor - boolean str = mat.equals(B.mat("GLOWSTONE")) - || mat.equals(B.mat("END_ROD")) - || mat.equals(B.mat("SOUL_SAND")) - || mat.equals(B.mat("TORCH")) - || mat.equals(Material.REDSTONE_TORCH) - || mat.equals(B.mat("SOUL_TORCH")) - || mat.equals(Material.REDSTONE_WALL_TORCH) - || mat.equals(Material.WALL_TORCH) - || mat.equals(B.mat("SOUL_WALL_TORCH")) - || mat.equals(B.mat("LANTERN")) - || mat.equals(Material.JACK_O_LANTERN) - || mat.equals(Material.REDSTONE_LAMP) - || mat.equals(Material.MAGMA_BLOCK) - || mat.equals(B.mat("SHROOMLIGHT")) - || mat.equals(B.mat("SEA_LANTERN")) - || mat.equals(B.mat("SOUL_LANTERN")) - || mat.equals(Material.FIRE) - || mat.equals(B.mat("SOUL_FIRE")) - || mat.equals(B.mat("SEA_PICKLE")) - || mat.equals(Material.BREWING_STAND) - || mat.equals(Material.REDSTONE_ORE); + // @NoArgsConstructor + boolean str = mat.equals(B.mat("GLOWSTONE")) || mat.equals(B.mat("END_ROD")) || mat.equals(B.mat("SOUL_SAND")) || mat.equals(B.mat("TORCH")) || mat.equals(Material.REDSTONE_TORCH) || mat.equals(B.mat("SOUL_TORCH")) || mat.equals(Material.REDSTONE_WALL_TORCH) || mat.equals(Material.WALL_TORCH) || mat.equals(B.mat("SOUL_WALL_TORCH")) || mat.equals(B.mat("LANTERN")) || mat.equals(Material.JACK_O_LANTERN) || mat.equals(Material.REDSTONE_LAMP) || mat.equals(Material.MAGMA_BLOCK) || mat.equals(B.mat("SHROOMLIGHT")) || mat.equals(B.mat("SEA_LANTERN")) || mat.equals(B.mat("SOUL_LANTERN")) || mat.equals(Material.FIRE) || mat.equals(B.mat("SOUL_FIRE")) || mat.equals(B.mat("SEA_PICKLE")) || mat.equals(Material.BREWING_STAND) || mat.equals(Material.REDSTONE_ORE); //@done if(str) { @@ -351,36 +297,8 @@ public class B } Material mat = d.getMaterial(); - //@NoArgsConstructor - return mat.equals(Material.POPPY) - || mat.equals(Material.DANDELION) - || mat.equals(B.mat("CORNFLOWER")) - || mat.equals(B.mat("SWEET_BERRY_BUSH")) - || mat.equals(B.mat("CRIMSON_ROOTS")) - || mat.equals(B.mat("WARPED_ROOTS")) - || mat.equals(B.mat("NETHER_SPROUTS")) - || mat.equals(B.mat("ALLIUM")) - || mat.equals(B.mat("AZURE_BLUET")) - || mat.equals(B.mat("BLUE_ORCHID")) - || mat.equals(B.mat("POPPY")) - || mat.equals(B.mat("DANDELION")) - || mat.equals(B.mat("OXEYE_DAISY")) - || mat.equals(B.mat("LILY_OF_THE_VALLEY")) - || mat.equals(B.mat("WITHER_ROSE")) - || mat.equals(Material.DARK_OAK_SAPLING) - || mat.equals(Material.ACACIA_SAPLING) - || mat.equals(Material.JUNGLE_SAPLING) - || mat.equals(Material.BIRCH_SAPLING) - || mat.equals(Material.SPRUCE_SAPLING) - || mat.equals(Material.OAK_SAPLING) - || mat.equals(Material.ORANGE_TULIP) - || mat.equals(Material.PINK_TULIP) - || mat.equals(Material.RED_TULIP) - || mat.equals(Material.WHITE_TULIP) - || mat.equals(Material.FERN) - || mat.equals(Material.LARGE_FERN) - || mat.equals(Material.GRASS) - || mat.equals(Material.TALL_GRASS); + // @NoArgsConstructor + return mat.equals(Material.POPPY) || mat.equals(Material.DANDELION) || mat.equals(B.mat("CORNFLOWER")) || mat.equals(B.mat("SWEET_BERRY_BUSH")) || mat.equals(B.mat("CRIMSON_ROOTS")) || mat.equals(B.mat("WARPED_ROOTS")) || mat.equals(B.mat("NETHER_SPROUTS")) || mat.equals(B.mat("ALLIUM")) || mat.equals(B.mat("AZURE_BLUET")) || mat.equals(B.mat("BLUE_ORCHID")) || mat.equals(B.mat("POPPY")) || mat.equals(B.mat("DANDELION")) || mat.equals(B.mat("OXEYE_DAISY")) || mat.equals(B.mat("LILY_OF_THE_VALLEY")) || mat.equals(B.mat("WITHER_ROSE")) || mat.equals(Material.DARK_OAK_SAPLING) || mat.equals(Material.ACACIA_SAPLING) || mat.equals(Material.JUNGLE_SAPLING) || mat.equals(Material.BIRCH_SAPLING) || mat.equals(Material.SPRUCE_SAPLING) || mat.equals(Material.OAK_SAPLING) || mat.equals(Material.ORANGE_TULIP) || mat.equals(Material.PINK_TULIP) || mat.equals(Material.RED_TULIP) || mat.equals(Material.WHITE_TULIP) || mat.equals(Material.FERN) || mat.equals(Material.LARGE_FERN) || mat.equals(Material.GRASS) || mat.equals(Material.TALL_GRASS); //@done } @@ -452,59 +370,8 @@ public class B return true; } - //@NoArgsConstructor - boolean str = m.equals(Material.GRASS) - || m.equals(Material.TALL_GRASS) - || m.equals(B.mat("CORNFLOWER")) - || m.equals(Material.SUNFLOWER) - || m.equals(Material.CHORUS_FLOWER) - || m.equals(Material.POPPY) - || m.equals(Material.DANDELION) - || m.equals(Material.OXEYE_DAISY) - || m.equals(Material.ORANGE_TULIP) - || m.equals(Material.PINK_TULIP) - || m.equals(Material.RED_TULIP) - || m.equals(Material.WHITE_TULIP) - || m.equals(Material.LILAC) - || m.equals(Material.DEAD_BUSH) - || m.equals(B.mat("SWEET_BERRY_BUSH")) - || m.equals(Material.ROSE_BUSH) - || m.equals(B.mat("WITHER_ROSE")) - || m.equals(Material.ALLIUM) - || m.equals(Material.BLUE_ORCHID) - || m.equals(B.mat("LILY_OF_THE_VALLEY")) - || m.equals(B.mat("CRIMSON_FUNGUS")) - || m.equals(B.mat("WARPED_FUNGUS")) - || m.equals(Material.RED_MUSHROOM) - || m.equals(Material.BROWN_MUSHROOM) - || m.equals(B.mat("CRIMSON_ROOTS")) - || m.equals(B.mat("AZURE_BLUET")) - || m.equals(B.mat("WEEPING_VINES")) - || m.equals(B.mat("WEEPING_VINES_PLANT")) - || m.equals(B.mat("WARPED_ROOTS")) - || m.equals(B.mat("NETHER_SPROUTS")) - || m.equals(B.mat("TWISTING_VINES")) - || m.equals(B.mat("TWISTING_VINES_PLANT")) - || m.equals(Material.SUGAR_CANE) - || m.equals(Material.WHEAT) - || m.equals(Material.POTATOES) - || m.equals(Material.CARROTS) - || m.equals(Material.BEETROOTS) - || m.equals(Material.NETHER_WART) - || m.equals(B.mat("SEA_PICKLE")) - || m.equals(B.mat("SEAGRASS")) - || m.equals(B.mat("ACACIA_BUTTON")) - || m.equals(B.mat("BIRCH_BUTTON")) - || m.equals(B.mat("CRIMSON_BUTTON")) - || m.equals(B.mat("DARK_OAK_BUTTON")) - || m.equals(B.mat("JUNGLE_BUTTON")) - || m.equals(B.mat("OAK_BUTTON")) - || m.equals(B.mat("POLISHED_BLACKSTONE_BUTTON")) - || m.equals(B.mat("SPRUCE_BUTTON")) - || m.equals(B.mat("STONE_BUTTON")) - || m.equals(B.mat("WARPED_BUTTON")) - || m.equals(Material.TORCH) - || m.equals(B.mat("SOUL_TORCH")); + // @NoArgsConstructor + boolean str = m.equals(Material.GRASS) || m.equals(Material.TALL_GRASS) || m.equals(B.mat("CORNFLOWER")) || m.equals(Material.SUNFLOWER) || m.equals(Material.CHORUS_FLOWER) || m.equals(Material.POPPY) || m.equals(Material.DANDELION) || m.equals(Material.OXEYE_DAISY) || m.equals(Material.ORANGE_TULIP) || m.equals(Material.PINK_TULIP) || m.equals(Material.RED_TULIP) || m.equals(Material.WHITE_TULIP) || m.equals(Material.LILAC) || m.equals(Material.DEAD_BUSH) || m.equals(B.mat("SWEET_BERRY_BUSH")) || m.equals(Material.ROSE_BUSH) || m.equals(B.mat("WITHER_ROSE")) || m.equals(Material.ALLIUM) || m.equals(Material.BLUE_ORCHID) || m.equals(B.mat("LILY_OF_THE_VALLEY")) || m.equals(B.mat("CRIMSON_FUNGUS")) || m.equals(B.mat("WARPED_FUNGUS")) || m.equals(Material.RED_MUSHROOM) || m.equals(Material.BROWN_MUSHROOM) || m.equals(B.mat("CRIMSON_ROOTS")) || m.equals(B.mat("AZURE_BLUET")) || m.equals(B.mat("WEEPING_VINES")) || m.equals(B.mat("WEEPING_VINES_PLANT")) || m.equals(B.mat("WARPED_ROOTS")) || m.equals(B.mat("NETHER_SPROUTS")) || m.equals(B.mat("TWISTING_VINES")) || m.equals(B.mat("TWISTING_VINES_PLANT")) || m.equals(Material.SUGAR_CANE) || m.equals(Material.WHEAT) || m.equals(Material.POTATOES) || m.equals(Material.CARROTS) || m.equals(Material.BEETROOTS) || m.equals(Material.NETHER_WART) || m.equals(B.mat("SEA_PICKLE")) || m.equals(B.mat("SEAGRASS")) || m.equals(B.mat("ACACIA_BUTTON")) || m.equals(B.mat("BIRCH_BUTTON")) || m.equals(B.mat("CRIMSON_BUTTON")) || m.equals(B.mat("DARK_OAK_BUTTON")) || m.equals(B.mat("JUNGLE_BUTTON")) || m.equals(B.mat("OAK_BUTTON")) || m.equals(B.mat("POLISHED_BLACKSTONE_BUTTON")) || m.equals(B.mat("SPRUCE_BUTTON")) || m.equals(B.mat("STONE_BUTTON")) || m.equals(B.mat("WARPED_BUTTON")) || m.equals(Material.TORCH) || m.equals(B.mat("SOUL_TORCH")); //@done if(str) diff --git a/src/main/java/com/volmit/iris/util/RegistryListItemType.java b/src/main/java/com/volmit/iris/util/RegistryListItemType.java new file mode 100644 index 000000000..830124659 --- /dev/null +++ b/src/main/java/com/volmit/iris/util/RegistryListItemType.java @@ -0,0 +1,14 @@ +package com.volmit.iris.util; + +import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.RetentionPolicy.*; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +@Retention(RUNTIME) +@Target({PARAMETER, TYPE, FIELD}) +public @interface RegistryListItemType +{ + +}