From 2ce1c631110b0c07caa6867d1197fd2086701bd4 Mon Sep 17 00:00:00 2001 From: alterNERDtive Date: Wed, 26 Jul 2023 16:10:25 +0200 Subject: [PATCH] added vaultar requiremnts tagging --- CHANGELOG.md | 1 + README.md | 13 ++- build.gradle | 1 + .../tags/items/altar_requirements.json | 9 ++ .../tags/items/altar_requirements/0.json | 9 ++ .../tags/items/altar_requirements/10.json | 9 ++ .../tags/items/altar_requirements/20.json | 9 ++ .../tags/items/altar_requirements/40.json | 9 ++ .../tags/items/altar_requirements/75.json | 9 ++ .../tags/items/altar_requirements/90.json | 6 + .../items/altar_requirements/farmable.json | 10 ++ .../items/altar_requirements/farmable/0.json | 20 ++++ .../items/altar_requirements/farmable/10.json | 28 +++++ .../items/altar_requirements/farmable/20.json | 20 ++++ .../items/altar_requirements/farmable/40.json | 12 ++ .../items/altar_requirements/farmable/75.json | 6 + .../tags/items/altar_requirements/misc.json | 11 ++ .../tags/items/altar_requirements/misc/0.json | 14 +++ .../items/altar_requirements/misc/10.json | 8 ++ .../items/altar_requirements/misc/20.json | 8 ++ .../items/altar_requirements/misc/40.json | 31 ++++++ .../items/altar_requirements/misc/75.json | 8 ++ .../items/altar_requirements/misc/90.json | 19 ++++ .../tags/items/altar_requirements/mob.json | 10 ++ .../tags/items/altar_requirements/mob/0.json | 10 ++ .../tags/items/altar_requirements/mob/10.json | 36 ++++++ .../tags/items/altar_requirements/mob/20.json | 13 +++ .../tags/items/altar_requirements/mob/40.json | 11 ++ .../tags/items/altar_requirements/mob/75.json | 6 + .../items/altar_requirements/resource.json | 10 ++ .../items/altar_requirements/resource/0.json | 20 ++++ .../items/altar_requirements/resource/10.json | 64 +++++++++++ .../items/altar_requirements/resource/20.json | 43 +++++++ .../items/altar_requirements/resource/40.json | 14 +++ .../items/altar_requirements/resource/75.json | 11 ++ .../VaultModTweaks/VaultModTweaks.java | 24 +++- .../integration/TagManager.java | 105 ++++++++++++++++++ .../IMixinVaultAltarIngredientsConfig.java | 42 +++++++ .../mixin/MixinEnchantmentEntry.java | 2 +- .../resources/mixins.the_vault_tweaks.json | 1 + 40 files changed, 685 insertions(+), 7 deletions(-) create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/0.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/10.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/20.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/40.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/75.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/90.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/0.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/10.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/20.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/40.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/75.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/misc.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/0.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/10.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/20.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/40.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/75.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/90.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/mob.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/0.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/10.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/20.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/40.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/75.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/resource.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/0.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/10.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/20.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/40.json create mode 100644 src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/75.json create mode 100644 src/main/java/tv/alterNERD/VaultModTweaks/integration/TagManager.java create mode 100644 src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/IMixinVaultAltarIngredientsConfig.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 77ce921..1ce1b2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ * Balance changes are now disabled by default, bug fixes enabled. Will not affect exsting worlds/configs. * Modularized Portal block configuration; you can now define your own blocks to build Vault Portals out of. +* Altar requirement tags! Generated from the actual config file. # 3.11.1.0 (2023-07-25) diff --git a/README.md b/README.md index cee05c8..dfb030b 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ This little companion mod for the Vault mod of the Vault Hunters mod pack fixes a few bugs and brings a couple QoL and balance changes. -All of these can be individually disabled in client & server config files. +All of these can be individually toggled and configured in a server config file. Bug fixes are enabled, balance changes disabled by default. -If you do not disable the changes that affect expertises, I recommend a full expertise reset after installing this mod. +If you enable the changes that affect expertises, I recommend a full expertise reset after installing this mod. ## Configuration @@ -22,6 +22,15 @@ The mod is configured via a server configuration file. To change settings, do th * Relic fragments \#5 are now equally as likely to drop as the others. * AE2 auto crafting no longer requires manually giving its fake player all research. +## Miscellaneous + +* Added support for making Vault Portals out of arbitrary blocks. +* Added tags to all Vault Altar requirements: + * `the_vault:altar_requirements` + * `the_vault:altar_requirements/` + * `the_vault:altar_requirements/` + * `the_vault:altar_requirements//` + ## Balance Changes * Removed enchanting cost from Vault Enchanter. diff --git a/build.gradle b/build.gradle index fd50733..780cdad 100644 --- a/build.gradle +++ b/build.gradle @@ -199,6 +199,7 @@ dependencies { implementation fg.deobf("curse.maven:curios-309927:4418032") implementation fg.deobf("curse.maven:quark-243121:3840125") implementation fg.deobf("curse.maven:autoreglib-250363:3642382") + implementation fg.deobf("curse.maven:ecologics-570463:4171283") // util implementation fg.deobf("curse.maven:lazydfu-433518:3209972") diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements.json new file mode 100644 index 0000000..a380031 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "#the_vault:altar_requirements/mob", + "#the_vault:altar_requirements/resource", + "#the_vault:altar_requirements/farmable", + "#the_vault:altar_requirements/misc" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/0.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/0.json new file mode 100644 index 0000000..34c7e92 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/0.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "#the_vault:altar_requirements/mob/0", + "#the_vault:altar_requirements/resource/0", + "#the_vault:altar_requirements/farmable/0", + "#the_vault:altar_requirements/misc/0" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/10.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/10.json new file mode 100644 index 0000000..40307a0 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/10.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "#the_vault:altar_requirements/mob/10", + "#the_vault:altar_requirements/resource/10", + "#the_vault:altar_requirements/farmable/10", + "#the_vault:altar_requirements/misc/10" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/20.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/20.json new file mode 100644 index 0000000..fad3d7e --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/20.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "#the_vault:altar_requirements/mob/20", + "#the_vault:altar_requirements/resource/20", + "#the_vault:altar_requirements/farmable/20", + "#the_vault:altar_requirements/misc/20" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/40.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/40.json new file mode 100644 index 0000000..779a8d7 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/40.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "#the_vault:altar_requirements/mob/40", + "#the_vault:altar_requirements/resource/40", + "#the_vault:altar_requirements/farmable/40", + "#the_vault:altar_requirements/misc/40" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/75.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/75.json new file mode 100644 index 0000000..cf85531 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/75.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "#the_vault:altar_requirements/mob/75", + "#the_vault:altar_requirements/resource/75", + "#the_vault:altar_requirements/farmable/75", + "#the_vault:altar_requirements/misc/75" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/90.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/90.json new file mode 100644 index 0000000..c74d46a --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/90.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#the_vault:altar_requirements/misc/90" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable.json new file mode 100644 index 0000000..b0b8c85 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "#the_vault:altar_requirements/farmable/0", + "#the_vault:altar_requirements/farmable/10", + "#the_vault:altar_requirements/farmable/20", + "#the_vault:altar_requirements/farmable/40", + "#the_vault:altar_requirements/farmable/75" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/0.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/0.json new file mode 100644 index 0000000..f26dc07 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/0.json @@ -0,0 +1,20 @@ +{ + "replace": false, + "values": [ + "minecraft:sugar_cane", + "minecraft:carrot", + "minecraft:potato", + "minecraft:wheat_seeds", + "minecraft:wheat", + "minecraft:oak_leaves", + "minecraft:spruce_leaves", + "minecraft:birch_leaves", + "minecraft:jungle_leaves", + "minecraft:acacia_leaves", + "minecraft:dark_oak_leaves", + "minecraft:azalea_leaves", + "minecraft:flowering_azalea_leaves", + "ecologics:coconut_leaves", + "ecologics:walnut_leaves" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/10.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/10.json new file mode 100644 index 0000000..37172b8 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/10.json @@ -0,0 +1,28 @@ +{ + "replace": false, + "values": [ + "minecraft:kelp", + "minecraft:cactus", + "minecraft:bamboo", + "minecraft:vine", + "minecraft:beetroot", + "minecraft:snowball", + "minecraft:pumpkin", + "minecraft:melon", + "minecraft:azalea", + "minecraft:flowering_azalea", + "minecraft:sea_pickle", + "minecraft:dandelion", + "minecraft:poppy", + "minecraft:blue_orchid", + "minecraft:allium", + "minecraft:azure_bluet", + "minecraft:oxeye_daisy", + "minecraft:cornflower", + "minecraft:lily_of_the_valley", + "minecraft:beetroot_seeds", + "minecraft:sweet_berries", + "minecraft:apple", + "minecraft:seagrass" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/20.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/20.json new file mode 100644 index 0000000..06b72ad --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/20.json @@ -0,0 +1,20 @@ +{ + "replace": false, + "values": [ + "minecraft:brown_mushroom", + "minecraft:red_mushroom", + "minecraft:red_tulip", + "minecraft:orange_tulip", + "minecraft:white_tulip", + "minecraft:pink_tulip", + "minecraft:sunflower", + "minecraft:rose_bush", + "minecraft:peony", + "minecraft:lilac", + "minecraft:glow_lichen", + "minecraft:clay_ball", + "minecraft:brick", + "minecraft:glow_berries", + "minecraft:nether_wart" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/40.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/40.json new file mode 100644 index 0000000..f199c1b --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/40.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "minecraft:twisting_vines", + "minecraft:weeping_vines", + "minecraft:big_dripleaf", + "minecraft:crimson_fungus", + "minecraft:warped_fungus", + "minecraft:chorus_fruit", + "minecraft:lily_pad" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/75.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/75.json new file mode 100644 index 0000000..b8c47ff --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/farmable/75.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:wither_rose" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc.json new file mode 100644 index 0000000..51d8baa --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "#the_vault:altar_requirements/misc/0", + "#the_vault:altar_requirements/misc/10", + "#the_vault:altar_requirements/misc/20", + "#the_vault:altar_requirements/misc/40", + "#the_vault:altar_requirements/misc/75", + "#the_vault:altar_requirements/misc/90" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/0.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/0.json new file mode 100644 index 0000000..570bfea --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/0.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "minecraft:pointed_dripstone", + "minecraft:gold_ingot", + "minecraft:iron_ingot", + "minecraft:redstone", + "minecraft:emerald", + "minecraft:lapis_lazuli", + "minecraft:copper_ingot", + "minecraft:coal", + "minecraft:charcoal" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/10.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/10.json new file mode 100644 index 0000000..5bdc6b9 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/10.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "minecraft:amethyst_shard", + "minecraft:diamond", + "minecraft:spore_blossom" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/20.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/20.json new file mode 100644 index 0000000..bb0746e --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/20.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "minecraft:glowstone_dust", + "minecraft:quartz", + "minecraft:name_tag" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/40.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/40.json new file mode 100644 index 0000000..98975a3 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/40.json @@ -0,0 +1,31 @@ +{ + "replace": false, + "values": [ + "minecraft:prismarine_shard", + "minecraft:prismarine_crystals", + "minecraft:chorus_flower", + "minecraft:dead_brain_coral", + "minecraft:dead_bubble_coral", + "minecraft:dead_fire_coral", + "minecraft:dead_horn_coral", + "minecraft:dead_tube_coral", + "minecraft:dead_tube_coral_fan", + "minecraft:dead_brain_coral_fan", + "minecraft:dead_bubble_coral_fan", + "minecraft:dead_fire_coral_fan", + "minecraft:dead_horn_coral_fan", + "minecraft:brain_coral", + "minecraft:bubble_coral", + "minecraft:fire_coral", + "minecraft:horn_coral", + "minecraft:tube_coral", + "minecraft:tube_coral_fan", + "minecraft:brain_coral_fan", + "minecraft:bubble_coral_fan", + "minecraft:fire_coral_fan", + "minecraft:horn_coral_fan", + "minecraft:totem_of_undying", + "minecraft:saddle", + "minecraft:cobweb" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/75.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/75.json new file mode 100644 index 0000000..8855fff --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/75.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "minecraft:sponge", + "minecraft:nether_star", + "minecraft:trident" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/90.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/90.json new file mode 100644 index 0000000..bb6f4b7 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/misc/90.json @@ -0,0 +1,19 @@ +{ + "replace": false, + "values": [ + "minecraft:music_disc_13", + "minecraft:music_disc_cat", + "minecraft:music_disc_blocks", + "minecraft:music_disc_chirp", + "minecraft:music_disc_far", + "minecraft:music_disc_mall", + "minecraft:music_disc_mellohi", + "minecraft:music_disc_stal", + "minecraft:music_disc_strad", + "minecraft:music_disc_ward", + "minecraft:music_disc_11", + "minecraft:music_disc_wait", + "minecraft:music_disc_otherside", + "minecraft:music_disc_pigstep" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob.json new file mode 100644 index 0000000..a4542dd --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "#the_vault:altar_requirements/mob/0", + "#the_vault:altar_requirements/mob/10", + "#the_vault:altar_requirements/mob/20", + "#the_vault:altar_requirements/mob/40", + "#the_vault:altar_requirements/mob/75" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/0.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/0.json new file mode 100644 index 0000000..aa5148d --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/0.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "minecraft:string", + "minecraft:rotten_flesh", + "minecraft:bone", + "minecraft:spider_eye", + "minecraft:arrow" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/10.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/10.json new file mode 100644 index 0000000..0c38fd5 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/10.json @@ -0,0 +1,36 @@ +{ + "replace": false, + "values": [ + "minecraft:feather", + "minecraft:porkchop", + "minecraft:beef", + "minecraft:chicken", + "minecraft:rabbit", + "minecraft:slime_ball", + "minecraft:egg", + "minecraft:leather", + "minecraft:rabbit_hide", + "minecraft:white_dye", + "minecraft:orange_dye", + "minecraft:magenta_dye", + "minecraft:light_blue_dye", + "minecraft:yellow_dye", + "minecraft:lime_dye", + "minecraft:pink_dye", + "minecraft:gray_dye", + "minecraft:light_gray_dye", + "minecraft:cyan_dye", + "minecraft:purple_dye", + "minecraft:blue_dye", + "minecraft:brown_dye", + "minecraft:green_dye", + "minecraft:red_dye", + "minecraft:black_dye", + "minecraft:poisonous_potato", + "minecraft:mutton", + "minecraft:salmon", + "minecraft:cod", + "minecraft:cocoa_beans", + "minecraft:gunpowder" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/20.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/20.json new file mode 100644 index 0000000..52ca932 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/20.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "minecraft:honey_bottle", + "minecraft:blaze_rod", + "minecraft:ender_pearl", + "minecraft:rabbit_foot", + "minecraft:honeycomb", + "minecraft:ink_sac", + "minecraft:glow_ink_sac", + "minecraft:pufferfish" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/40.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/40.json new file mode 100644 index 0000000..d8dce55 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/40.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "minecraft:tropical_fish", + "minecraft:ghast_tear", + "minecraft:magma_cream", + "minecraft:nautilus_shell", + "minecraft:turtle_egg", + "minecraft:wither_skeleton_skull" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/75.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/75.json new file mode 100644 index 0000000..7421de5 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/mob/75.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:phantom_membrane" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource.json new file mode 100644 index 0000000..dff1440 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "#the_vault:altar_requirements/resource/0", + "#the_vault:altar_requirements/resource/10", + "#the_vault:altar_requirements/resource/20", + "#the_vault:altar_requirements/resource/40", + "#the_vault:altar_requirements/resource/75" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/0.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/0.json new file mode 100644 index 0000000..06ca775 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/0.json @@ -0,0 +1,20 @@ +{ + "replace": false, + "values": [ + "minecraft:cobblestone", + "minecraft:diorite", + "minecraft:andesite", + "minecraft:granite", + "minecraft:stone", + "minecraft:gravel", + "minecraft:sand", + "minecraft:red_sand", + "minecraft:dirt", + "minecraft:oak_log", + "minecraft:spruce_log", + "minecraft:birch_log", + "minecraft:jungle_log", + "minecraft:acacia_log", + "minecraft:dark_oak_log" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/10.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/10.json new file mode 100644 index 0000000..1c63172 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/10.json @@ -0,0 +1,64 @@ +{ + "replace": false, + "values": [ + "minecraft:moss_block", + "minecraft:white_wool", + "minecraft:orange_wool", + "minecraft:magenta_wool", + "minecraft:light_blue_wool", + "minecraft:yellow_wool", + "minecraft:lime_wool", + "minecraft:pink_wool", + "minecraft:gray_wool", + "minecraft:light_gray_wool", + "minecraft:cyan_wool", + "minecraft:purple_wool", + "minecraft:blue_wool", + "minecraft:brown_wool", + "minecraft:green_wool", + "minecraft:red_wool", + "minecraft:black_wool", + "minecraft:glass", + "minecraft:white_stained_glass", + "minecraft:orange_stained_glass", + "minecraft:magenta_stained_glass", + "minecraft:light_blue_stained_glass", + "minecraft:yellow_stained_glass", + "minecraft:lime_stained_glass", + "minecraft:pink_stained_glass", + "minecraft:gray_stained_glass", + "minecraft:light_gray_stained_glass", + "minecraft:cyan_stained_glass", + "minecraft:purple_stained_glass", + "minecraft:blue_stained_glass", + "minecraft:brown_stained_glass", + "minecraft:green_stained_glass", + "minecraft:red_stained_glass", + "minecraft:black_stained_glass", + "minecraft:smooth_stone", + "minecraft:bricks", + "minecraft:netherrack", + "minecraft:soul_sand", + "minecraft:basalt", + "minecraft:white_terracotta", + "minecraft:orange_terracotta", + "minecraft:magenta_terracotta", + "minecraft:light_blue_terracotta", + "minecraft:yellow_terracotta", + "minecraft:lime_terracotta", + "minecraft:pink_terracotta", + "minecraft:gray_terracotta", + "minecraft:light_gray_terracotta", + "minecraft:cyan_terracotta", + "minecraft:purple_terracotta", + "minecraft:blue_terracotta", + "minecraft:brown_terracotta", + "minecraft:green_terracotta", + "minecraft:red_terracotta", + "minecraft:black_terracotta", + "minecraft:terracotta", + "minecraft:deepslate", + "minecraft:cobbled_deepslate", + "minecraft:tuff" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/20.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/20.json new file mode 100644 index 0000000..3cd2ac4 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/20.json @@ -0,0 +1,43 @@ +{ + "replace": false, + "values": [ + "minecraft:mossy_cobblestone", + "minecraft:obsidian", + "minecraft:ice", + "minecraft:white_concrete", + "minecraft:orange_concrete", + "minecraft:magenta_concrete", + "minecraft:light_blue_concrete", + "minecraft:yellow_concrete", + "minecraft:lime_concrete", + "minecraft:pink_concrete", + "minecraft:gray_concrete", + "minecraft:light_gray_concrete", + "minecraft:cyan_concrete", + "minecraft:purple_concrete", + "minecraft:blue_concrete", + "minecraft:brown_concrete", + "minecraft:green_concrete", + "minecraft:red_concrete", + "minecraft:black_concrete", + "minecraft:white_concrete_powder", + "minecraft:orange_concrete_powder", + "minecraft:magenta_concrete_powder", + "minecraft:light_blue_concrete_powder", + "minecraft:yellow_concrete_powder", + "minecraft:lime_concrete_powder", + "minecraft:pink_concrete_powder", + "minecraft:gray_concrete_powder", + "minecraft:light_gray_concrete_powder", + "minecraft:cyan_concrete_powder", + "minecraft:purple_concrete_powder", + "minecraft:blue_concrete_powder", + "minecraft:brown_concrete_powder", + "minecraft:green_concrete_powder", + "minecraft:red_concrete_powder", + "minecraft:black_concrete_powder", + "minecraft:blackstone", + "minecraft:dripstone_block", + "minecraft:prismarine" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/40.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/40.json new file mode 100644 index 0000000..0bf3bee --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/40.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "minecraft:soul_soil", + "minecraft:purpur_block", + "minecraft:mycelium", + "minecraft:end_stone", + "minecraft:magma_block", + "minecraft:nether_wart_block", + "minecraft:warped_wart_block", + "minecraft:shroomlight", + "minecraft:podzol" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/75.json b/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/75.json new file mode 100644 index 0000000..08dab35 --- /dev/null +++ b/src/generated/resources/data/the_vault/tags/items/altar_requirements/resource/75.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "minecraft:blue_ice", + "minecraft:crimson_stem", + "minecraft:warped_stem", + "minecraft:crying_obsidian", + "minecraft:calcite", + "minecraft:rooted_dirt" + ] +} \ No newline at end of file diff --git a/src/main/java/tv/alterNERD/VaultModTweaks/VaultModTweaks.java b/src/main/java/tv/alterNERD/VaultModTweaks/VaultModTweaks.java index 06d373f..914ad6d 100644 --- a/src/main/java/tv/alterNERD/VaultModTweaks/VaultModTweaks.java +++ b/src/main/java/tv/alterNERD/VaultModTweaks/VaultModTweaks.java @@ -21,26 +21,42 @@ import org.slf4j.Logger; import com.mojang.logging.LogUtils; +import net.minecraft.data.DataProvider; +import net.minecraft.data.tags.BlockTagsProvider; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.forge.event.lifecycle.GatherDataEvent; +import tv.alterNERD.VaultModTweaks.integration.TagManager; @Mod("the_vault_tweaks") public class VaultModTweaks { public static final Logger LOGGER = LogUtils.getLogger(); + public static final String MOD_ID = "the_vault_tweaks"; - public VaultModTweaks() - { + public VaultModTweaks() { FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup); + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::gatherData); ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, Configuration.CONFIG); ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, Configuration.CLIENTCONFIG); } - private void setup(final FMLCommonSetupEvent event) - { + private void setup(final FMLCommonSetupEvent event) { LOGGER.info("Vault Mod Tweaks by alterNERDtive"); } + + private void gatherData(final GatherDataEvent event) { + BlockTagsProvider blockTagsProvider = new BlockTagsProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper()); + event.getGenerator().addProvider(blockTagsProvider); + event.getGenerator().addProvider( + (DataProvider) new TagManager( + event.getGenerator(), + blockTagsProvider, + MOD_ID, + event.getExistingFileHelper()) + ); + } } diff --git a/src/main/java/tv/alterNERD/VaultModTweaks/integration/TagManager.java b/src/main/java/tv/alterNERD/VaultModTweaks/integration/TagManager.java new file mode 100644 index 0000000..f7d70fb --- /dev/null +++ b/src/main/java/tv/alterNERD/VaultModTweaks/integration/TagManager.java @@ -0,0 +1,105 @@ +/** + * Copyright 2023 alterNERDtive. + * + * This file is part of Vault Mod Tweaks. + * + * Vault Mod Tweaks is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Vault Mod Tweaks is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with Vault Mod Tweaks. If not, see . + */ +package tv.alterNERD.VaultModTweaks.integration; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.SortedMap; +import java.util.TreeMap; + +import org.jetbrains.annotations.Nullable; + +import iskallia.vault.config.altar.VaultAltarIngredientsConfig; +import iskallia.vault.config.altar.entry.AltarIngredientEntry; +import iskallia.vault.config.entry.LevelEntryMap; +import iskallia.vault.util.data.WeightedList; +import net.minecraft.core.Registry; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraft.data.tags.ItemTagsProvider; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraftforge.common.data.ExistingFileHelper; +import tv.alterNERD.VaultModTweaks.integration.mixin.IMixinVaultAltarIngredientsConfig; + +/** + * Adds custom Tags. + */ +public class TagManager +extends ItemTagsProvider +{ + public TagManager(DataGenerator generator, BlockTagsProvider blockTagsProvider, String modId, + @Nullable ExistingFileHelper existingFileHelper) { + super(generator, blockTagsProvider, modId, existingFileHelper); + } + + @Override + protected void addTags() { + LevelEntryMap>> levelIngredientsMap = ((IMixinVaultAltarIngredientsConfig) (VaultAltarIngredientsConfig) new VaultAltarIngredientsConfig().readConfig()).getLEVELS(); + + Map>> poolMap = new HashMap>>(); + + // Convert the level -> pool → list format to what we need: + // pool -> level -> list + levelIngredientsMap.forEach((level, ingredients) -> { + ingredients.forEach((pool, ingredientEntryList) -> { + SortedMap> poolItems = poolMap.getOrDefault(pool, new TreeMap>()); + List itemList = poolItems.getOrDefault(level, new ArrayList()); + + ingredientEntryList.forEach((ingredientEntry, weight) -> { + ingredientEntry.getItems().forEach(itemStack -> { + itemList.add(itemStack.getItem()); + }); + }); + + poolItems.putIfAbsent(level, itemList); + poolMap.putIfAbsent(pool, poolItems); + }); + }); + + // Create (and populate) the actual tags + TagKey altarTag = TagKey.create(Registry.ITEM_REGISTRY, new ResourceLocation("the_vault:altar_requirements")); + poolMap.forEach((pool, levelItemMap) -> { + TagKey poolTag = TagKey.create(Registry.ITEM_REGISTRY, new ResourceLocation("the_vault:altar_requirements/%s".formatted(pool))); + List itemsToRemove = new ArrayList(); + levelItemMap.forEach((level, items) -> { + + // Lets make sure to _only_ tag items with the current level that are _not_ included in previous levels + items.removeAll(itemsToRemove); + + if (!items.isEmpty()) { + TagKey levelTag = TagKey.create(Registry.ITEM_REGISTRY, new ResourceLocation("the_vault:altar_requirements/%s".formatted(level))); + TagKey poolLevelTag = TagKey.create(Registry.ITEM_REGISTRY, new ResourceLocation("the_vault:altar_requirements/%s/%s".formatted(pool, level))); + + items.forEach(item -> { + tag(poolLevelTag).add(item); + }); + + itemsToRemove.addAll(items); + + tag(levelTag).addTag(poolLevelTag); + tag(poolTag).addTag(poolLevelTag); + } + }); + tag(altarTag).addTag(poolTag); + }); + } +} diff --git a/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/IMixinVaultAltarIngredientsConfig.java b/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/IMixinVaultAltarIngredientsConfig.java new file mode 100644 index 0000000..fdbf04f --- /dev/null +++ b/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/IMixinVaultAltarIngredientsConfig.java @@ -0,0 +1,42 @@ +/** + * Copyright 2023 alterNERDtive. + * + * This file is part of Vault Mod Tweaks. + * + * Vault Mod Tweaks is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Vault Mod Tweaks is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with Vault Mod Tweaks. If not, see . + */ +package tv.alterNERD.VaultModTweaks.integration.mixin; + +import java.util.Map; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import iskallia.vault.config.altar.VaultAltarIngredientsConfig; +import iskallia.vault.config.altar.entry.AltarIngredientEntry; +import iskallia.vault.config.entry.LevelEntryMap; +import iskallia.vault.util.data.WeightedList; + +/** + * Changes the {@link iskallia.vault.config.altar.VaultAltarIngredientsConfig} + * class for managing altar recipes. + */ +@Mixin(VaultAltarIngredientsConfig.class) +public interface IMixinVaultAltarIngredientsConfig { + /** + * Makes the private level/entry Map available. + * @return The level/entry Map + */ + @Accessor(remap = false) + LevelEntryMap>> getLEVELS(); +} diff --git a/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/MixinEnchantmentEntry.java b/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/MixinEnchantmentEntry.java index f2dd955..311ac20 100644 --- a/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/MixinEnchantmentEntry.java +++ b/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/MixinEnchantmentEntry.java @@ -39,7 +39,7 @@ import tv.alterNERD.VaultModTweaks.util.I18n; */ @Mixin(EnchantmentEntry.class) public abstract class MixinEnchantmentEntry - { +{ @Shadow(remap = false) private int level; @Shadow(remap = false) diff --git a/src/main/resources/mixins.the_vault_tweaks.json b/src/main/resources/mixins.the_vault_tweaks.json index adaac69..e2d8928 100644 --- a/src/main/resources/mixins.the_vault_tweaks.json +++ b/src/main/resources/mixins.the_vault_tweaks.json @@ -5,6 +5,7 @@ "compatibilityLevel": "JAVA_17", "refmap": "mixins.the_vault_tweaks.refmap.json", "mixins": [ + "IMixinVaultAltarIngredientsConfig", "MixinCrystalBuddingConfig", "MixinEnchantmentEntry", "MixinExpertisesGuiConfig",