From 31a3c287f161f172e42c8c167001f7a2d7eaafde Mon Sep 17 00:00:00 2001 From: thedarkcolour <30441001+thedarkcolour@users.noreply.github.com> Date: Tue, 10 Oct 2023 10:37:04 -0700 Subject: [PATCH] Ex Deorum 1.6 --- build.gradle | 2 +- changelog.md | 5 + .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 32 ++- .../data/exdeorum/recipes/dead_barrel.json | 34 +++ .../data/exdeorum/recipes/dead_crucible.json | 34 +++ .../data/exdeorum/recipes/dead_sieve.json | 37 +++ .../data/exdeorum/recipes/fir_barrel.json | 34 +++ .../data/exdeorum/recipes/fir_crucible.json | 34 +++ .../data/exdeorum/recipes/fir_sieve.json | 37 +++ .../exdeorum/recipes/hellbark_barrel.json | 34 +++ .../exdeorum/recipes/hellbark_crucible.json | 34 +++ .../data/exdeorum/recipes/hellbark_sieve.json | 37 +++ .../exdeorum/recipes/jacaranda_barrel.json | 34 +++ .../exdeorum/recipes/jacaranda_crucible.json | 34 +++ .../exdeorum/recipes/jacaranda_sieve.json | 37 +++ .../data/exdeorum/recipes/magic_barrel.json | 34 +++ .../data/exdeorum/recipes/magic_crucible.json | 34 +++ .../data/exdeorum/recipes/magic_sieve.json | 37 +++ .../exdeorum/recipes/mahogany_barrel.json | 34 +++ .../exdeorum/recipes/mahogany_crucible.json | 34 +++ .../data/exdeorum/recipes/mahogany_sieve.json | 37 +++ .../data/exdeorum/recipes/palm_barrel.json | 34 +++ .../data/exdeorum/recipes/palm_crucible.json | 34 +++ .../data/exdeorum/recipes/palm_sieve.json | 37 +++ .../data/exdeorum/recipes/redwood_barrel.json | 34 +++ .../exdeorum/recipes/redwood_crucible.json | 34 +++ .../data/exdeorum/recipes/redwood_sieve.json | 37 +++ .../data/exdeorum/recipes/umbran_barrel.json | 34 +++ .../exdeorum/recipes/umbran_crucible.json | 34 +++ .../data/exdeorum/recipes/umbran_sieve.json | 37 +++ .../data/exdeorum/recipes/willow_barrel.json | 34 +++ .../exdeorum/recipes/willow_crucible.json | 34 +++ .../data/exdeorum/recipes/willow_sieve.json | 37 +++ .../thedarkcolour/exdeorum/asm/ASMHooks.java | 13 + .../exdeorum/data/ModCompatData.java | 62 ++++ .../exdeorum/data/recipe/Recipes.java | 60 ++++ .../exdeorum/data/recipe/SieveRecipes.java | 267 +++++++++--------- src/main/resources/coremods.js | 50 ++++ 38 files changed, 1401 insertions(+), 140 deletions(-) create mode 100644 src/generated/resources/data/exdeorum/recipes/dead_barrel.json create mode 100644 src/generated/resources/data/exdeorum/recipes/dead_crucible.json create mode 100644 src/generated/resources/data/exdeorum/recipes/dead_sieve.json create mode 100644 src/generated/resources/data/exdeorum/recipes/fir_barrel.json create mode 100644 src/generated/resources/data/exdeorum/recipes/fir_crucible.json create mode 100644 src/generated/resources/data/exdeorum/recipes/fir_sieve.json create mode 100644 src/generated/resources/data/exdeorum/recipes/hellbark_barrel.json create mode 100644 src/generated/resources/data/exdeorum/recipes/hellbark_crucible.json create mode 100644 src/generated/resources/data/exdeorum/recipes/hellbark_sieve.json create mode 100644 src/generated/resources/data/exdeorum/recipes/jacaranda_barrel.json create mode 100644 src/generated/resources/data/exdeorum/recipes/jacaranda_crucible.json create mode 100644 src/generated/resources/data/exdeorum/recipes/jacaranda_sieve.json create mode 100644 src/generated/resources/data/exdeorum/recipes/magic_barrel.json create mode 100644 src/generated/resources/data/exdeorum/recipes/magic_crucible.json create mode 100644 src/generated/resources/data/exdeorum/recipes/magic_sieve.json create mode 100644 src/generated/resources/data/exdeorum/recipes/mahogany_barrel.json create mode 100644 src/generated/resources/data/exdeorum/recipes/mahogany_crucible.json create mode 100644 src/generated/resources/data/exdeorum/recipes/mahogany_sieve.json create mode 100644 src/generated/resources/data/exdeorum/recipes/palm_barrel.json create mode 100644 src/generated/resources/data/exdeorum/recipes/palm_crucible.json create mode 100644 src/generated/resources/data/exdeorum/recipes/palm_sieve.json create mode 100644 src/generated/resources/data/exdeorum/recipes/redwood_barrel.json create mode 100644 src/generated/resources/data/exdeorum/recipes/redwood_crucible.json create mode 100644 src/generated/resources/data/exdeorum/recipes/redwood_sieve.json create mode 100644 src/generated/resources/data/exdeorum/recipes/umbran_barrel.json create mode 100644 src/generated/resources/data/exdeorum/recipes/umbran_crucible.json create mode 100644 src/generated/resources/data/exdeorum/recipes/umbran_sieve.json create mode 100644 src/generated/resources/data/exdeorum/recipes/willow_barrel.json create mode 100644 src/generated/resources/data/exdeorum/recipes/willow_crucible.json create mode 100644 src/generated/resources/data/exdeorum/recipes/willow_sieve.json diff --git a/build.gradle b/build.gradle index de91a193..30319ba0 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { id 'org.spongepowered.mixin' version '0.7.+' } -version = '1.5' +version = '1.6' group = 'thedarkcolour.exdeorum' base { archivesName = 'exdeorum' diff --git a/changelog.md b/changelog.md index 3bfd3441..9ca70651 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,8 @@ +## Ex Deorum 1.6 +- Added way to obtain sky stone dust from AE2. +- Fixed End Portal not generating properly. +- Fixed missing Biomes O' Plenty recipes for the sieves, barrels, and crucibles. + ## Ex Deorum 1.5 - Added Random Pottery Sherd and Random Armor Trim items to replace the bloated sand loot tables for obtaining pottery sherds and armor trims. - Added compatibility with Biomes O' Plenty (sieves, barrels, crucibles, saplings obtainable from sifting moss like other saplings) diff --git a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 1709a4b7..c2611d65 100644 --- a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,4 +1,4 @@ -// 1.20.1 2023-09-23T17:16:17.6613223 Recipes +// 1.20.1 2023-10-10T10:32:34.2619562 Recipes 5ad481a0c376c1a1785a5d3b992064d0ec0bf3b0 data/exdeorum/advancements/recipes/food/end_cake.json 25dd027e844a72b03c95dbe5e3c3dd8c738ceb00 data/exdeorum/advancements/recipes/misc/acacia_barrel.json 376be94a64c9ca97a9ea2346547b6e617f13a815 data/exdeorum/advancements/recipes/misc/acacia_crucible.json @@ -192,11 +192,17 @@ f6a9036c1bbc4fa0cdc25ef4c851de5ddac0a4ff data/exdeorum/recipes/crook.json f41b9a2782302d6684a89127b90f47ba432b35f1 data/exdeorum/recipes/dark_oak_barrel.json 88de5b2df3c7cbb668195ebff7d60235fa897cdf data/exdeorum/recipes/dark_oak_crucible.json b14283dd10c79ddb507aa849a9a432266b615f19 data/exdeorum/recipes/dark_oak_sieve.json +4dd77f3c2a9995562882de58c014882b846c0e46 data/exdeorum/recipes/dead_barrel.json +1d146b95340c76f0f79202dd81fb4f29bb6d074f data/exdeorum/recipes/dead_crucible.json +49db33903b6892db0f17ce50e9a3ca78aef007ed data/exdeorum/recipes/dead_sieve.json 0558034d3940e2bd4046ad2af07c42068852dc76 data/exdeorum/recipes/diamond_hammer.json 4bb1b1df247eaa495b18df77893ac6cfaaa9477a data/exdeorum/recipes/diamond_mesh.json 8244864c8c0fb88af380c18bb593a8cb3982abbd data/exdeorum/recipes/diamond_watering_can.json 596e6fb9a4c633938b7b3c778baad53cdd9fd2ed data/exdeorum/recipes/diorite.json 04ae3d6df1f7ed4d376c3f95bc4924651a1148e8 data/exdeorum/recipes/end_cake.json +a3b9f47a73b9cbb4d908ac0b8ad90b308271c04c data/exdeorum/recipes/fir_barrel.json +7f7a034824513701aa0493267f7f8219d8fdef89 data/exdeorum/recipes/fir_crucible.json +8821d420a2f1dae54a0276cf33f94b5689eda056 data/exdeorum/recipes/fir_sieve.json fafeef8c11df81d877166ba0d4add3823515dad3 data/exdeorum/recipes/flint_mesh.json 4adddee39d6ff6ee58dedfdeb32265a051f9a722 data/exdeorum/recipes/golden_hammer.json a32f858ab7b6b5d5546b8474175a44a93d85f8bc data/exdeorum/recipes/golden_mesh.json @@ -227,10 +233,16 @@ b592554bc00ab20d8affdfd1627406858ac10797 data/exdeorum/recipes/hammer/sand.json 0e879c5bcf28023efdcd257d3e12e7153bd0bef7 data/exdeorum/recipes/hammer/stone_pebbles.json 3bf60837b935bd09248a84fd8f22968fc244ea46 data/exdeorum/recipes/hammer/tube_coral.json f9654d25e05276b2bce6445e2cf7c1f2d9170124 data/exdeorum/recipes/hammer/tube_coral_fan.json +89bc76bd0dd2350b25ac8981f3597e0119dff939 data/exdeorum/recipes/hellbark_barrel.json +4c3b4daf2bed2d4ee662e2e80f4547b3f0b2a271 data/exdeorum/recipes/hellbark_crucible.json +2995ec75979bfb8b0415b8a1da7db7001b9ae433 data/exdeorum/recipes/hellbark_sieve.json 3067ccffd037b6d16ba09ae181813be6471d2050 data/exdeorum/recipes/iron_hammer.json f046e0fa73b12cea658363a082ad0da48e21e85d data/exdeorum/recipes/iron_mesh.json 6f06b4d91979afc8000988cd20519379152a373b data/exdeorum/recipes/iron_ore.json f4ea515ec72c867b9c0b54df162bd07c62e1a7ce data/exdeorum/recipes/iron_watering_can.json +4d7d68580f0271eea4728062fa608b87aa04570f data/exdeorum/recipes/jacaranda_barrel.json +15db77ae5c82626af0a52a96b71aef0a55754de5 data/exdeorum/recipes/jacaranda_crucible.json +f1368be282014a882ece8c28d43ea1d3f8c19ad2 data/exdeorum/recipes/jacaranda_sieve.json 332d5396af038b56047e88fcad713478e45cbd97 data/exdeorum/recipes/jungle_barrel.json 7239040d0cee42fe9077c89eaa3d768a07db0557 data/exdeorum/recipes/jungle_crucible.json bffa756563ac5aa791f299ae6d7d042813c2614a data/exdeorum/recipes/jungle_sieve.json @@ -238,6 +250,12 @@ d24ed2178e5875da5e0a6f82b5ac9c2ece4b64ff data/exdeorum/recipes/lava_crucible/cob 0963c17c9f78907017fa0192c684f016c39f31eb data/exdeorum/recipes/lava_crucible/gravel.json e9affa16c926fe63ca2270a81aba4e33cd0b198b data/exdeorum/recipes/lava_crucible/netherrack.json 20744c980e4a68f67acea24af617f1ddb865f9a3 data/exdeorum/recipes/lava_crucible/stone.json +eefb8d9a0b49405d1a9788425df1c9c7937458e4 data/exdeorum/recipes/magic_barrel.json +19ccb45f92da97401ef10f7def8d7b439d683910 data/exdeorum/recipes/magic_crucible.json +10c7971c338d0079d1125a7b320fe407ceabe089 data/exdeorum/recipes/magic_sieve.json +b012c1b39678d3e560365bc01a59c9a88182388e data/exdeorum/recipes/mahogany_barrel.json +49cb4e7d62855ef0b42a98c6b3b03a7b2acfe8f5 data/exdeorum/recipes/mahogany_crucible.json +6c10f7034e705ed28d9e9342e18e0675ed14d546 data/exdeorum/recipes/mahogany_sieve.json 8efa8d7c8da52d42d8e1a831004dfc080423a500 data/exdeorum/recipes/mangrove_barrel.json 95edd369ab19abd17ef56cfa2350a2dc185c7747 data/exdeorum/recipes/mangrove_crucible.json 9c38235abb08f3cdd8838c0a0efb98154dee97e3 data/exdeorum/recipes/mangrove_sieve.json @@ -259,9 +277,15 @@ ad3a4c8b0ffd433528d7b2d10b98301843ba5417 data/exdeorum/recipes/ores/osmium_tag.j e50e0f6fb83cd233214ca62718e0c9155f29d7c1 data/exdeorum/recipes/ores/tin_tag.json ece0731639c9063416fb0183309fdf8252d774eb data/exdeorum/recipes/ores/uranium_tag.json 56600e7db58d4c74326a2f38bc014a47ddbeb731 data/exdeorum/recipes/ores/zinc_tag.json +bbe74a530536071b2bb8e94563ae8ae426b45188 data/exdeorum/recipes/palm_barrel.json +44f3f267ac2e7de4aa22e2647e4a68736041b039 data/exdeorum/recipes/palm_crucible.json +ec53c60562bd39028e9fe497b73efdc7af562263 data/exdeorum/recipes/palm_sieve.json fd95c29e2e4f6eb08729c3c821e8f1dad427aef8 data/exdeorum/recipes/porcelain_bucket.json a2d4a9158c46bf81649e0a16621302cbf3754582 data/exdeorum/recipes/porcelain_clay_ball.json 53adc0da4d944ac57a437a38e14fec0f6563e9b2 data/exdeorum/recipes/porcelain_crucible.json +7e0e860075ea2ed301be1b52babac09130b4ddc5 data/exdeorum/recipes/redwood_barrel.json +586e9a05cc04d028912f40d41bcd067976005dd8 data/exdeorum/recipes/redwood_crucible.json +7c5a28c2621a975df088f28c00729f7495bcf773 data/exdeorum/recipes/redwood_sieve.json 45050ac51fb86e362cec2d35e0a03ec1e5ab51c1 data/exdeorum/recipes/sculk_core.json 9520f7f3b42fb795748c715cb402133fca4b9ce3 data/exdeorum/recipes/sieve/crushed_blackstone/diamond/ancient_debris.json 72e126a6f9808fbe7d4e2fc95d432b1cba33fcea data/exdeorum/recipes/sieve/crushed_blackstone/diamond/blackstone_pebble.json @@ -1032,6 +1056,9 @@ b4531ee1e1478da1145f099271cff9a9c2069c46 data/exdeorum/recipes/spruce_sieve.json 8a3b28ce7f95cb82cd4693caee0cfbd856324fd5 data/exdeorum/recipes/stone_watering_can.json 09df4d1fa4f1e079f6190b943fc45085cc6d6596 data/exdeorum/recipes/string_mesh.json ba8d21134dd2e019a9dd579a765d12685c19380d data/exdeorum/recipes/tuff.json +f3f7e1c6aac0f738e2c68b07628d0c793bbf4118 data/exdeorum/recipes/umbran_barrel.json +4065e6de49bd7618c9f133cc62123181ed76b99d data/exdeorum/recipes/umbran_crucible.json +390a33dc92677248f4c2d3a6a21d5e553f6df243 data/exdeorum/recipes/umbran_sieve.json 480cf1a3e2f5476e7aa9fc8a9ad310adef9e25e9 data/exdeorum/recipes/unfired_porcelain_bucket.json e6ff95b6fbc43c73a537174e01c9eb519e8fdef1 data/exdeorum/recipes/unfired_porcelain_crucible.json 346b70c2d2516f6e735fd1f156e22a649175813d data/exdeorum/recipes/warped_barrel.json @@ -1063,5 +1090,8 @@ dabaaa0c9db5dd4668b528df176606609f45c0ce data/exdeorum/recipes/water_crucible/sm 3927d17ed5a24132956fa60b51bdb22e67ef4626 data/exdeorum/recipes/water_crucible/sweet_berries.json 9d4abedfd8af2e988c4f11d62ed66743f3e8ac07 data/exdeorum/recipes/water_crucible/tall_flowers.json a5333ee537aa0e10b740e20a137a24b7699ff52b data/exdeorum/recipes/water_crucible/vine.json +05c12b51cdd74a0619df2b35d4d6fafffb84ee0c data/exdeorum/recipes/willow_barrel.json +c1dd98278720c97caccca82449d769c6a8a0f5e0 data/exdeorum/recipes/willow_crucible.json +24e72702e3ae9d0832deac8917603c4565f7aed2 data/exdeorum/recipes/willow_sieve.json 8356651dbd67d7c3b820a78d0720afa5a1ee5713 data/exdeorum/recipes/wooden_hammer.json 20b1ab005d3c3d552d4300f53444a931b230cb3b data/exdeorum/recipes/wooden_watering_can.json diff --git a/src/generated/resources/data/exdeorum/recipes/dead_barrel.json b/src/generated/resources/data/exdeorum/recipes/dead_barrel.json new file mode 100644 index 00000000..b9923a7e --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/dead_barrel.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:dead_slab" + }, + "s": { + "item": "biomesoplenty:dead_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:dead_barrel" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/dead_crucible.json b/src/generated/resources/data/exdeorum/recipes/dead_crucible.json new file mode 100644 index 00000000..2e350865 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/dead_crucible.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:dead_slab" + }, + "s": { + "item": "biomesoplenty:dead_log" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:dead_crucible" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/dead_sieve.json b/src/generated/resources/data/exdeorum/recipes/dead_sieve.json new file mode 100644 index 00000000..6efca9ed --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/dead_sieve.json @@ -0,0 +1,37 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:rods/wooden" + }, + "O": { + "item": "biomesoplenty:dead_planks" + }, + "_": { + "item": "biomesoplenty:dead_slab" + } + }, + "pattern": [ + "O O", + "O_O", + "I I" + ], + "result": { + "item": "exdeorum:dead_sieve" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/fir_barrel.json b/src/generated/resources/data/exdeorum/recipes/fir_barrel.json new file mode 100644 index 00000000..ad0c5ff5 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/fir_barrel.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:fir_slab" + }, + "s": { + "item": "biomesoplenty:fir_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:fir_barrel" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/fir_crucible.json b/src/generated/resources/data/exdeorum/recipes/fir_crucible.json new file mode 100644 index 00000000..1377fecc --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/fir_crucible.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:fir_slab" + }, + "s": { + "item": "biomesoplenty:fir_log" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:fir_crucible" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/fir_sieve.json b/src/generated/resources/data/exdeorum/recipes/fir_sieve.json new file mode 100644 index 00000000..e4ea8654 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/fir_sieve.json @@ -0,0 +1,37 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:rods/wooden" + }, + "O": { + "item": "biomesoplenty:fir_planks" + }, + "_": { + "item": "biomesoplenty:fir_slab" + } + }, + "pattern": [ + "O O", + "O_O", + "I I" + ], + "result": { + "item": "exdeorum:fir_sieve" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/hellbark_barrel.json b/src/generated/resources/data/exdeorum/recipes/hellbark_barrel.json new file mode 100644 index 00000000..15725d57 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/hellbark_barrel.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:hellbark_slab" + }, + "s": { + "item": "biomesoplenty:hellbark_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:hellbark_barrel" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/hellbark_crucible.json b/src/generated/resources/data/exdeorum/recipes/hellbark_crucible.json new file mode 100644 index 00000000..500a7799 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/hellbark_crucible.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:hellbark_slab" + }, + "s": { + "item": "biomesoplenty:hellbark_log" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:hellbark_crucible" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/hellbark_sieve.json b/src/generated/resources/data/exdeorum/recipes/hellbark_sieve.json new file mode 100644 index 00000000..5a0b4394 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/hellbark_sieve.json @@ -0,0 +1,37 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:rods/wooden" + }, + "O": { + "item": "biomesoplenty:hellbark_planks" + }, + "_": { + "item": "biomesoplenty:hellbark_slab" + } + }, + "pattern": [ + "O O", + "O_O", + "I I" + ], + "result": { + "item": "exdeorum:hellbark_sieve" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/jacaranda_barrel.json b/src/generated/resources/data/exdeorum/recipes/jacaranda_barrel.json new file mode 100644 index 00000000..6e1421e3 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/jacaranda_barrel.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:jacaranda_slab" + }, + "s": { + "item": "biomesoplenty:jacaranda_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:jacaranda_barrel" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/jacaranda_crucible.json b/src/generated/resources/data/exdeorum/recipes/jacaranda_crucible.json new file mode 100644 index 00000000..40f27ab2 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/jacaranda_crucible.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:jacaranda_slab" + }, + "s": { + "item": "biomesoplenty:jacaranda_log" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:jacaranda_crucible" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/jacaranda_sieve.json b/src/generated/resources/data/exdeorum/recipes/jacaranda_sieve.json new file mode 100644 index 00000000..cceabd4b --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/jacaranda_sieve.json @@ -0,0 +1,37 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:rods/wooden" + }, + "O": { + "item": "biomesoplenty:jacaranda_planks" + }, + "_": { + "item": "biomesoplenty:jacaranda_slab" + } + }, + "pattern": [ + "O O", + "O_O", + "I I" + ], + "result": { + "item": "exdeorum:jacaranda_sieve" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/magic_barrel.json b/src/generated/resources/data/exdeorum/recipes/magic_barrel.json new file mode 100644 index 00000000..cfdafb00 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/magic_barrel.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:magic_slab" + }, + "s": { + "item": "biomesoplenty:magic_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:magic_barrel" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/magic_crucible.json b/src/generated/resources/data/exdeorum/recipes/magic_crucible.json new file mode 100644 index 00000000..1fff9abe --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/magic_crucible.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:magic_slab" + }, + "s": { + "item": "biomesoplenty:magic_log" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:magic_crucible" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/magic_sieve.json b/src/generated/resources/data/exdeorum/recipes/magic_sieve.json new file mode 100644 index 00000000..4e400e40 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/magic_sieve.json @@ -0,0 +1,37 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:rods/wooden" + }, + "O": { + "item": "biomesoplenty:magic_planks" + }, + "_": { + "item": "biomesoplenty:magic_slab" + } + }, + "pattern": [ + "O O", + "O_O", + "I I" + ], + "result": { + "item": "exdeorum:magic_sieve" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/mahogany_barrel.json b/src/generated/resources/data/exdeorum/recipes/mahogany_barrel.json new file mode 100644 index 00000000..63c9b77f --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/mahogany_barrel.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:mahogany_slab" + }, + "s": { + "item": "biomesoplenty:mahogany_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:mahogany_barrel" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/mahogany_crucible.json b/src/generated/resources/data/exdeorum/recipes/mahogany_crucible.json new file mode 100644 index 00000000..2401b47e --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/mahogany_crucible.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:mahogany_slab" + }, + "s": { + "item": "biomesoplenty:mahogany_log" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:mahogany_crucible" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/mahogany_sieve.json b/src/generated/resources/data/exdeorum/recipes/mahogany_sieve.json new file mode 100644 index 00000000..4571bff0 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/mahogany_sieve.json @@ -0,0 +1,37 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:rods/wooden" + }, + "O": { + "item": "biomesoplenty:mahogany_planks" + }, + "_": { + "item": "biomesoplenty:mahogany_slab" + } + }, + "pattern": [ + "O O", + "O_O", + "I I" + ], + "result": { + "item": "exdeorum:mahogany_sieve" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/palm_barrel.json b/src/generated/resources/data/exdeorum/recipes/palm_barrel.json new file mode 100644 index 00000000..5178549c --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/palm_barrel.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:palm_slab" + }, + "s": { + "item": "biomesoplenty:palm_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:palm_barrel" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/palm_crucible.json b/src/generated/resources/data/exdeorum/recipes/palm_crucible.json new file mode 100644 index 00000000..8d6e4549 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/palm_crucible.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:palm_slab" + }, + "s": { + "item": "biomesoplenty:palm_log" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:palm_crucible" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/palm_sieve.json b/src/generated/resources/data/exdeorum/recipes/palm_sieve.json new file mode 100644 index 00000000..7783eebd --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/palm_sieve.json @@ -0,0 +1,37 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:rods/wooden" + }, + "O": { + "item": "biomesoplenty:palm_planks" + }, + "_": { + "item": "biomesoplenty:palm_slab" + } + }, + "pattern": [ + "O O", + "O_O", + "I I" + ], + "result": { + "item": "exdeorum:palm_sieve" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/redwood_barrel.json b/src/generated/resources/data/exdeorum/recipes/redwood_barrel.json new file mode 100644 index 00000000..afe32328 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/redwood_barrel.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:redwood_slab" + }, + "s": { + "item": "biomesoplenty:redwood_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:redwood_barrel" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/redwood_crucible.json b/src/generated/resources/data/exdeorum/recipes/redwood_crucible.json new file mode 100644 index 00000000..1e8e8887 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/redwood_crucible.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:redwood_slab" + }, + "s": { + "item": "biomesoplenty:redwood_log" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:redwood_crucible" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/redwood_sieve.json b/src/generated/resources/data/exdeorum/recipes/redwood_sieve.json new file mode 100644 index 00000000..0fae45a6 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/redwood_sieve.json @@ -0,0 +1,37 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:rods/wooden" + }, + "O": { + "item": "biomesoplenty:redwood_planks" + }, + "_": { + "item": "biomesoplenty:redwood_slab" + } + }, + "pattern": [ + "O O", + "O_O", + "I I" + ], + "result": { + "item": "exdeorum:redwood_sieve" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/umbran_barrel.json b/src/generated/resources/data/exdeorum/recipes/umbran_barrel.json new file mode 100644 index 00000000..5d701d4a --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/umbran_barrel.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:umbran_slab" + }, + "s": { + "item": "biomesoplenty:umbran_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:umbran_barrel" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/umbran_crucible.json b/src/generated/resources/data/exdeorum/recipes/umbran_crucible.json new file mode 100644 index 00000000..ca7e6830 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/umbran_crucible.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:umbran_slab" + }, + "s": { + "item": "biomesoplenty:umbran_log" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:umbran_crucible" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/umbran_sieve.json b/src/generated/resources/data/exdeorum/recipes/umbran_sieve.json new file mode 100644 index 00000000..c58224d2 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/umbran_sieve.json @@ -0,0 +1,37 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:rods/wooden" + }, + "O": { + "item": "biomesoplenty:umbran_planks" + }, + "_": { + "item": "biomesoplenty:umbran_slab" + } + }, + "pattern": [ + "O O", + "O_O", + "I I" + ], + "result": { + "item": "exdeorum:umbran_sieve" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/willow_barrel.json b/src/generated/resources/data/exdeorum/recipes/willow_barrel.json new file mode 100644 index 00000000..ed641324 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/willow_barrel.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:willow_slab" + }, + "s": { + "item": "biomesoplenty:willow_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:willow_barrel" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/willow_crucible.json b/src/generated/resources/data/exdeorum/recipes/willow_crucible.json new file mode 100644 index 00000000..79aea5a4 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/willow_crucible.json @@ -0,0 +1,34 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "biomesoplenty:willow_slab" + }, + "s": { + "item": "biomesoplenty:willow_log" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exdeorum:willow_crucible" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/recipes/willow_sieve.json b/src/generated/resources/data/exdeorum/recipes/willow_sieve.json new file mode 100644 index 00000000..0a201334 --- /dev/null +++ b/src/generated/resources/data/exdeorum/recipes/willow_sieve.json @@ -0,0 +1,37 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "biomesoplenty" + } + ], + "recipe": { + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:rods/wooden" + }, + "O": { + "item": "biomesoplenty:willow_planks" + }, + "_": { + "item": "biomesoplenty:willow_slab" + } + }, + "pattern": [ + "O O", + "O_O", + "I I" + ], + "result": { + "item": "exdeorum:willow_sieve" + }, + "show_notification": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/java/thedarkcolour/exdeorum/asm/ASMHooks.java b/src/main/java/thedarkcolour/exdeorum/asm/ASMHooks.java index d332bf35..cd3daa86 100644 --- a/src/main/java/thedarkcolour/exdeorum/asm/ASMHooks.java +++ b/src/main/java/thedarkcolour/exdeorum/asm/ASMHooks.java @@ -35,4 +35,17 @@ public final class ASMHooks { return pos; } } + + /** + * Called in {@link net.minecraft.world.level.dimension.end.EndDragonFight#spawnExitPortal(boolean)} + * right before EndPodiumFeature.place is called to fix End Portal not spawning fully, + * with part of it being generated outside the world in the void. + */ + public static BlockPos prePlaceEndPodium(BlockPos pos) { + if (pos.getY() < 4) { + return pos.above(32); + } else { + return pos.immutable(); + } + } } diff --git a/src/main/java/thedarkcolour/exdeorum/data/ModCompatData.java b/src/main/java/thedarkcolour/exdeorum/data/ModCompatData.java index 75f0c580..b0ae0956 100644 --- a/src/main/java/thedarkcolour/exdeorum/data/ModCompatData.java +++ b/src/main/java/thedarkcolour/exdeorum/data/ModCompatData.java @@ -47,6 +47,36 @@ public class ModCompatData { public static RegistryObject MAGIC_PLANKS; public static RegistryObject UMBRAN_PLANKS; public static RegistryObject HELLBARK_PLANKS; + public static RegistryObject FIR_PLANKS_ITEM; + public static RegistryObject REDWOOD_PLANKS_ITEM; + public static RegistryObject MAHOGANY_PLANKS_ITEM; + public static RegistryObject JACARANDA_PLANKS_ITEM; + public static RegistryObject PALM_PLANKS_ITEM; + public static RegistryObject WILLOW_PLANKS_ITEM; + public static RegistryObject DEAD_PLANKS_ITEM; + public static RegistryObject MAGIC_PLANKS_ITEM; + public static RegistryObject UMBRAN_PLANKS_ITEM; + public static RegistryObject HELLBARK_PLANKS_ITEM; + public static RegistryObject FIR_SLAB; + public static RegistryObject REDWOOD_SLAB; + public static RegistryObject MAHOGANY_SLAB; + public static RegistryObject JACARANDA_SLAB; + public static RegistryObject PALM_SLAB; + public static RegistryObject WILLOW_SLAB; + public static RegistryObject DEAD_SLAB; + public static RegistryObject MAGIC_SLAB; + public static RegistryObject UMBRAN_SLAB; + public static RegistryObject HELLBARK_SLAB; + public static RegistryObject FIR_LOG_ITEM; + public static RegistryObject REDWOOD_LOG_ITEM; + public static RegistryObject MAHOGANY_LOG_ITEM; + public static RegistryObject JACARANDA_LOG_ITEM; + public static RegistryObject PALM_LOG_ITEM; + public static RegistryObject WILLOW_LOG_ITEM; + public static RegistryObject DEAD_LOG_ITEM; + public static RegistryObject MAGIC_LOG_ITEM; + public static RegistryObject UMBRAN_LOG_ITEM; + public static RegistryObject HELLBARK_LOG_ITEM; public static RegistryObject FIR_LOG; public static RegistryObject REDWOOD_LOG; public static RegistryObject MAHOGANY_LOG; @@ -78,6 +108,7 @@ public class ModCompatData { public static RegistryObject CERTUS_QUARTZ_CRYSTAL; public static RegistryObject CHARGED_CERTUS_QUARTZ_CRYSTAL; public static RegistryObject CERTUS_QUARTZ_DUST; + public static RegistryObject SKY_STONE_DUST; public static void registerModData() { registerModItems(ModIds.ENDERIO, addItem -> GRAINS_OF_INFINITY = addItem.apply("grains_of_infinity")); @@ -105,6 +136,26 @@ public class ModCompatData { HELLBARK_LOG = addBlock.apply("hellbark_log"); }); registerModItems(ModIds.BIOMES_O_PLENTY, addItem -> { + FIR_PLANKS_ITEM = addItem.apply("fir_planks"); + REDWOOD_PLANKS_ITEM = addItem.apply("redwood_planks"); + MAHOGANY_PLANKS_ITEM = addItem.apply("mahogany_planks"); + JACARANDA_PLANKS_ITEM = addItem.apply("jacaranda_planks"); + PALM_PLANKS_ITEM = addItem.apply("palm_planks"); + WILLOW_PLANKS_ITEM = addItem.apply("willow_planks"); + DEAD_PLANKS_ITEM = addItem.apply("dead_planks"); + MAGIC_PLANKS_ITEM = addItem.apply("magic_planks"); + UMBRAN_PLANKS_ITEM = addItem.apply("umbran_planks"); + HELLBARK_PLANKS_ITEM = addItem.apply("hellbark_planks"); + FIR_SLAB = addItem.apply("fir_slab"); + REDWOOD_SLAB = addItem.apply("redwood_slab"); + MAHOGANY_SLAB = addItem.apply("mahogany_slab"); + JACARANDA_SLAB = addItem.apply("jacaranda_slab"); + PALM_SLAB = addItem.apply("palm_slab"); + WILLOW_SLAB = addItem.apply("willow_slab"); + DEAD_SLAB = addItem.apply("dead_slab"); + MAGIC_SLAB = addItem.apply("magic_slab"); + UMBRAN_SLAB = addItem.apply("umbran_slab"); + HELLBARK_SLAB = addItem.apply("hellbark_slab"); ORIGIN_SAPLING = addItem.apply("origin_sapling"); FLOWERING_OAK_SAPLING = addItem.apply("flowering_oak_sapling"); SNOWBLOSSOM_SAPLING = addItem.apply("snowblossom_sapling"); @@ -122,11 +173,22 @@ public class ModCompatData { MAGIC_SAPLING = addItem.apply("magic_sapling"); UMBRAN_SAPLING = addItem.apply("umbran_sapling"); HELLBARK_SAPLING = addItem.apply("hellbark_sapling"); + FIR_LOG_ITEM = addItem.apply("fir_log"); + REDWOOD_LOG_ITEM = addItem.apply("redwood_log"); + MAHOGANY_LOG_ITEM = addItem.apply("mahogany_log"); + JACARANDA_LOG_ITEM = addItem.apply("jacaranda_log"); + PALM_LOG_ITEM = addItem.apply("palm_log"); + WILLOW_LOG_ITEM = addItem.apply("willow_log"); + DEAD_LOG_ITEM = addItem.apply("dead_log"); + MAGIC_LOG_ITEM = addItem.apply("magic_log"); + UMBRAN_LOG_ITEM = addItem.apply("umbran_log"); + HELLBARK_LOG_ITEM = addItem.apply("hellbark_log"); }); registerModItems(ModIds.APPLIED_ENERGISTICS_2, addItem -> { CERTUS_QUARTZ_CRYSTAL = addItem.apply("certus_quartz_crystal"); CHARGED_CERTUS_QUARTZ_CRYSTAL = addItem.apply("charged_certus_quartz_crystal"); CERTUS_QUARTZ_DUST = addItem.apply("certus_quartz_dust"); + SKY_STONE_DUST = addItem.apply("sky_stone_dust"); }); } diff --git a/src/main/java/thedarkcolour/exdeorum/data/recipe/Recipes.java b/src/main/java/thedarkcolour/exdeorum/data/recipe/Recipes.java index f621cbdc..fde1591d 100644 --- a/src/main/java/thedarkcolour/exdeorum/data/recipe/Recipes.java +++ b/src/main/java/thedarkcolour/exdeorum/data/recipe/Recipes.java @@ -35,9 +35,15 @@ import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.NumberProvider; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; import net.minecraftforge.common.Tags; +import net.minecraftforge.common.crafting.conditions.ICondition; +import net.minecraftforge.common.crafting.conditions.ModLoadedCondition; +import net.minecraftforge.common.crafting.conditions.NotCondition; +import net.minecraftforge.common.crafting.conditions.TagEmptyCondition; import net.minecraftforge.registries.RegistryObject; import org.apache.commons.lang3.mutable.MutableObject; import thedarkcolour.exdeorum.ExDeorum; +import thedarkcolour.exdeorum.compat.ModIds; +import thedarkcolour.exdeorum.data.ModCompatData; import thedarkcolour.exdeorum.recipe.TagResultRecipe; import thedarkcolour.exdeorum.recipe.barrel.FinishedBarrelCompostRecipe; import thedarkcolour.exdeorum.recipe.barrel.FinishedBarrelMixingRecipe; @@ -50,6 +56,7 @@ import thedarkcolour.exdeorum.registry.ERecipeSerializers; import thedarkcolour.exdeorum.tag.EItemTags; import thedarkcolour.modkit.data.MKRecipeProvider; +import java.util.List; import java.util.function.Consumer; import java.util.function.Supplier; @@ -95,6 +102,17 @@ public class Recipes { uShaped(recipes, EItems.CRIMSON_CRUCIBLE, ingredient(Items.CRIMSON_STEM), ingredient(Items.CRIMSON_SLAB)); uShaped(recipes, EItems.WARPED_CRUCIBLE, ingredient(Items.WARPED_STEM), ingredient(Items.WARPED_SLAB)); uShaped(recipes, EItems.UNFIRED_PORCELAIN_CRUCIBLE, ingredient(EItems.PORCELAIN_CLAY_BALL.get()), ingredient(EItems.PORCELAIN_CLAY_BALL.get())); + // Modded crucibles + bopUShaped(recipes, EItems.FIR_CRUCIBLE, ModCompatData.FIR_LOG_ITEM, ModCompatData.FIR_SLAB); + bopUShaped(recipes, EItems.REDWOOD_CRUCIBLE, ModCompatData.REDWOOD_LOG_ITEM, ModCompatData.REDWOOD_SLAB); + bopUShaped(recipes, EItems.MAHOGANY_CRUCIBLE, ModCompatData.MAHOGANY_LOG_ITEM, ModCompatData.MAHOGANY_SLAB); + bopUShaped(recipes, EItems.JACARANDA_CRUCIBLE, ModCompatData.JACARANDA_LOG_ITEM, ModCompatData.JACARANDA_SLAB); + bopUShaped(recipes, EItems.PALM_CRUCIBLE, ModCompatData.PALM_LOG_ITEM, ModCompatData.PALM_SLAB); + bopUShaped(recipes, EItems.WILLOW_CRUCIBLE, ModCompatData.WILLOW_LOG_ITEM, ModCompatData.WILLOW_SLAB); + bopUShaped(recipes, EItems.DEAD_CRUCIBLE, ModCompatData.DEAD_LOG_ITEM, ModCompatData.DEAD_SLAB); + bopUShaped(recipes, EItems.MAGIC_CRUCIBLE, ModCompatData.MAGIC_LOG_ITEM, ModCompatData.MAGIC_SLAB); + bopUShaped(recipes, EItems.UMBRAN_CRUCIBLE, ModCompatData.UMBRAN_LOG_ITEM, ModCompatData.UMBRAN_SLAB); + bopUShaped(recipes, EItems.HELLBARK_CRUCIBLE, ModCompatData.HELLBARK_LOG_ITEM, ModCompatData.HELLBARK_SLAB); // Barrels uShaped(recipes, EItems.OAK_BARREL, ingredient(Items.OAK_PLANKS), ingredient(Items.OAK_SLAB)); @@ -109,6 +127,17 @@ public class Recipes { uShaped(recipes, EItems.CRIMSON_BARREL, ingredient(Items.CRIMSON_PLANKS), ingredient(Items.CRIMSON_SLAB)); uShaped(recipes, EItems.WARPED_BARREL, ingredient(Items.WARPED_PLANKS), ingredient(Items.WARPED_SLAB)); uShaped(recipes, EItems.STONE_BARREL, ingredient(Items.STONE), ingredient(Items.STONE_SLAB)); + // Modded barrels + bopUShaped(recipes, EItems.FIR_BARREL, ModCompatData.FIR_PLANKS_ITEM, ModCompatData.FIR_SLAB); + bopUShaped(recipes, EItems.REDWOOD_BARREL, ModCompatData.REDWOOD_PLANKS_ITEM, ModCompatData.REDWOOD_SLAB); + bopUShaped(recipes, EItems.MAHOGANY_BARREL, ModCompatData.MAHOGANY_PLANKS_ITEM, ModCompatData.MAHOGANY_SLAB); + bopUShaped(recipes, EItems.JACARANDA_BARREL, ModCompatData.JACARANDA_PLANKS_ITEM, ModCompatData.JACARANDA_SLAB); + bopUShaped(recipes, EItems.PALM_BARREL, ModCompatData.PALM_PLANKS_ITEM, ModCompatData.PALM_SLAB); + bopUShaped(recipes, EItems.WILLOW_BARREL, ModCompatData.WILLOW_PLANKS_ITEM, ModCompatData.WILLOW_SLAB); + bopUShaped(recipes, EItems.DEAD_BARREL, ModCompatData.DEAD_PLANKS_ITEM, ModCompatData.DEAD_SLAB); + bopUShaped(recipes, EItems.MAGIC_BARREL, ModCompatData.MAGIC_PLANKS_ITEM, ModCompatData.MAGIC_SLAB); + bopUShaped(recipes, EItems.UMBRAN_BARREL, ModCompatData.UMBRAN_PLANKS_ITEM, ModCompatData.UMBRAN_SLAB); + bopUShaped(recipes, EItems.HELLBARK_BARREL, ModCompatData.HELLBARK_PLANKS_ITEM, ModCompatData.HELLBARK_SLAB); // Pebbles and ore chunks recipes.grid2x2(Items.COBBLESTONE, ingredient(EItems.STONE_PEBBLE)); @@ -150,6 +179,17 @@ public class Recipes { sieve(recipes, EItems.BAMBOO_SIEVE, Items.BAMBOO_PLANKS, Items.BAMBOO_SLAB); sieve(recipes, EItems.CRIMSON_SIEVE, Items.CRIMSON_PLANKS, Items.CRIMSON_SLAB); sieve(recipes, EItems.WARPED_SIEVE, Items.WARPED_PLANKS, Items.WARPED_SLAB); + // Modded sieves + bopSieve(recipes, EItems.FIR_SIEVE, ModCompatData.FIR_PLANKS_ITEM, ModCompatData.FIR_SLAB); + bopSieve(recipes, EItems.REDWOOD_SIEVE, ModCompatData.REDWOOD_PLANKS_ITEM, ModCompatData.REDWOOD_SLAB); + bopSieve(recipes, EItems.MAHOGANY_SIEVE, ModCompatData.MAHOGANY_PLANKS_ITEM, ModCompatData.MAHOGANY_SLAB); + bopSieve(recipes, EItems.JACARANDA_SIEVE, ModCompatData.JACARANDA_PLANKS_ITEM, ModCompatData.JACARANDA_SLAB); + bopSieve(recipes, EItems.PALM_SIEVE, ModCompatData.PALM_PLANKS_ITEM, ModCompatData.PALM_SLAB); + bopSieve(recipes, EItems.WILLOW_SIEVE, ModCompatData.WILLOW_PLANKS_ITEM, ModCompatData.WILLOW_SLAB); + bopSieve(recipes, EItems.DEAD_SIEVE, ModCompatData.DEAD_PLANKS_ITEM, ModCompatData.DEAD_SLAB); + bopSieve(recipes, EItems.MAGIC_SIEVE, ModCompatData.MAGIC_PLANKS_ITEM, ModCompatData.MAGIC_SLAB); + bopSieve(recipes, EItems.UMBRAN_SIEVE, ModCompatData.UMBRAN_PLANKS_ITEM, ModCompatData.UMBRAN_SLAB); + bopSieve(recipes, EItems.HELLBARK_SIEVE, ModCompatData.HELLBARK_PLANKS_ITEM, ModCompatData.HELLBARK_SLAB); // Meshes recipes.grid3x3(EItems.STRING_MESH.get(), ingredient(Tags.Items.STRING)); @@ -192,6 +232,18 @@ public class Recipes { }); } + private static void bopUShaped(MKRecipeProvider recipes, RegistryObject result, RegistryObject sides, RegistryObject middle) { + recipes.conditional(result.getId().getPath(), List.of(modInstalled(ModIds.BIOMES_O_PLENTY)), writer1 -> { + uShaped(recipes, result, ingredient(sides), ingredient(middle)); + }); + } + + private static void bopSieve(MKRecipeProvider recipes, RegistryObject result, RegistryObject planks, RegistryObject slab) { + recipes.conditional(result.getId().getPath(), List.of(modInstalled(ModIds.BIOMES_O_PLENTY)), writer1 -> { + sieve(recipes, result, planks.get(), slab.get()); + }); + } + private static void grid2x2TagResult(Consumer writer, MKRecipeProvider recipes, TagKey resultTag, Ingredient ingredient) { var ref = new MutableObject(); recipes.pushWriter(ref::setValue, newWriter -> { @@ -454,4 +506,12 @@ public class Recipes { private static void barrelMixing(Consumer writer, String suffix, Ingredient ingredient, Fluid fluidType, Item result) { writer.accept(new FinishedBarrelMixingRecipe(new ResourceLocation(ExDeorum.ID, "barrel_mixing/" + path(result) + suffix), ingredient, fluidType, 1000, result)); } + + static ICondition tagNotEmpty(TagKey tag) { + return new NotCondition(new TagEmptyCondition(tag.location())); + } + + static ICondition modInstalled(String modid) { + return new ModLoadedCondition(modid); + } } diff --git a/src/main/java/thedarkcolour/exdeorum/data/recipe/SieveRecipes.java b/src/main/java/thedarkcolour/exdeorum/data/recipe/SieveRecipes.java index 6f0d6b02..5ccb9b01 100644 --- a/src/main/java/thedarkcolour/exdeorum/data/recipe/SieveRecipes.java +++ b/src/main/java/thedarkcolour/exdeorum/data/recipe/SieveRecipes.java @@ -29,9 +29,6 @@ import net.minecraft.world.level.storage.loot.providers.number.BinomialDistribut import net.minecraft.world.level.storage.loot.providers.number.NumberProvider; import net.minecraftforge.common.crafting.ConditionalRecipe; import net.minecraftforge.common.crafting.conditions.ICondition; -import net.minecraftforge.common.crafting.conditions.ModLoadedCondition; -import net.minecraftforge.common.crafting.conditions.NotCondition; -import net.minecraftforge.common.crafting.conditions.TagEmptyCondition; import net.minecraftforge.registries.RegistryObject; import thedarkcolour.exdeorum.ExDeorum; import thedarkcolour.exdeorum.compat.ModIds; @@ -50,6 +47,7 @@ import static net.minecraft.world.level.storage.loot.providers.number.BinomialDi import static thedarkcolour.modkit.data.MKRecipeProvider.ingredient; import static thedarkcolour.modkit.data.MKRecipeProvider.path; +// todo sky stone dust from Dust block class SieveRecipes { static void sieveRecipes(Consumer writer) { var allMeshes = List.of(EItems.STRING_MESH, EItems.FLINT_MESH, EItems.IRON_MESH, EItems.GOLDEN_MESH, EItems.DIAMOND_MESH, EItems.NETHERITE_MESH); @@ -166,14 +164,14 @@ class SieveRecipes { addDrop.accept(Items.EMERALD, chance(0.01f)); addDrop.accept(Items.AMETHYST_SHARD, chance(0.01f)); - addConditionalDrop.accept(EItems.ALUMINUM_ORE_CHUNK.get(), chance(0.04f), tagNotEmpty(EItemTags.ORES_ALUMINUM)); - addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.04f), tagNotEmpty(EItemTags.ORES_SILVER)); - addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.04f), tagNotEmpty(EItemTags.ORES_LEAD)); - addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.03f), tagNotEmpty(EItemTags.ORES_OSMIUM)); - addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.04f), tagNotEmpty(EItemTags.ORES_NICKEL)); - addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.06f), tagNotEmpty(EItemTags.ORES_TIN)); - addConditionalDrop.accept(EItems.ZINC_ORE_CHUNK.get(), chance(0.035f), tagNotEmpty(EItemTags.ORES_ZINC)); - addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.03f), tagNotEmpty(EItemTags.ORES_IRIDIUM)); + addConditionalDrop.accept(EItems.ALUMINUM_ORE_CHUNK.get(), chance(0.04f), Recipes.tagNotEmpty(EItemTags.ORES_ALUMINUM)); + addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.04f), Recipes.tagNotEmpty(EItemTags.ORES_SILVER)); + addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.04f), Recipes.tagNotEmpty(EItemTags.ORES_LEAD)); + addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.03f), Recipes.tagNotEmpty(EItemTags.ORES_OSMIUM)); + addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.04f), Recipes.tagNotEmpty(EItemTags.ORES_NICKEL)); + addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.06f), Recipes.tagNotEmpty(EItemTags.ORES_TIN)); + addConditionalDrop.accept(EItems.ZINC_ORE_CHUNK.get(), chance(0.035f), Recipes.tagNotEmpty(EItemTags.ORES_ZINC)); + addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.03f), Recipes.tagNotEmpty(EItemTags.ORES_IRIDIUM)); }); // Gravel -> Flint mesh forMesh(writer, ingredient(Items.GRAVEL), EItems.FLINT_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { @@ -192,14 +190,14 @@ class SieveRecipes { addDrop.accept(Items.EMERALD, chance(0.015f)); addDrop.accept(Items.AMETHYST_SHARD, chance(0.015f)); - addConditionalDrop.accept(EItems.ALUMINUM_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_ALUMINUM)); - addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_SILVER)); - addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_LEAD)); - addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.04f), tagNotEmpty(EItemTags.ORES_OSMIUM)); - addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.055f), tagNotEmpty(EItemTags.ORES_NICKEL)); - addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.07f), tagNotEmpty(EItemTags.ORES_TIN)); - addConditionalDrop.accept(EItems.ZINC_ORE_CHUNK.get(), chance(0.04f), tagNotEmpty(EItemTags.ORES_ZINC)); - addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.03f), tagNotEmpty(EItemTags.ORES_IRIDIUM)); + addConditionalDrop.accept(EItems.ALUMINUM_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_ALUMINUM)); + addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_SILVER)); + addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_LEAD)); + addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.04f), Recipes.tagNotEmpty(EItemTags.ORES_OSMIUM)); + addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.055f), Recipes.tagNotEmpty(EItemTags.ORES_NICKEL)); + addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.07f), Recipes.tagNotEmpty(EItemTags.ORES_TIN)); + addConditionalDrop.accept(EItems.ZINC_ORE_CHUNK.get(), chance(0.04f), Recipes.tagNotEmpty(EItemTags.ORES_ZINC)); + addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.03f), Recipes.tagNotEmpty(EItemTags.ORES_IRIDIUM)); }); // Gravel -> Iron mesh forMesh(writer, ingredient(Items.GRAVEL), EItems.IRON_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { @@ -215,14 +213,14 @@ class SieveRecipes { addDrop.accept(Items.EMERALD, chance(0.04f)); addDrop.accept(Items.AMETHYST_SHARD, chance(0.04f)); - addConditionalDrop.accept(EItems.ALUMINUM_ORE_CHUNK.get(), chance(0.06f), tagNotEmpty(EItemTags.ORES_ALUMINUM)); - addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.055f), tagNotEmpty(EItemTags.ORES_SILVER)); - addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.06f), tagNotEmpty(EItemTags.ORES_LEAD)); - addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.045f), tagNotEmpty(EItemTags.ORES_OSMIUM)); - addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.07f), tagNotEmpty(EItemTags.ORES_NICKEL)); - addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.09f), tagNotEmpty(EItemTags.ORES_TIN)); - addConditionalDrop.accept(EItems.ZINC_ORE_CHUNK.get(), chance(0.06f), tagNotEmpty(EItemTags.ORES_ZINC)); - addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.04f), tagNotEmpty(EItemTags.ORES_IRIDIUM)); + addConditionalDrop.accept(EItems.ALUMINUM_ORE_CHUNK.get(), chance(0.06f), Recipes.tagNotEmpty(EItemTags.ORES_ALUMINUM)); + addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.055f), Recipes.tagNotEmpty(EItemTags.ORES_SILVER)); + addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.06f), Recipes.tagNotEmpty(EItemTags.ORES_LEAD)); + addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.045f), Recipes.tagNotEmpty(EItemTags.ORES_OSMIUM)); + addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.07f), Recipes.tagNotEmpty(EItemTags.ORES_NICKEL)); + addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.09f), Recipes.tagNotEmpty(EItemTags.ORES_TIN)); + addConditionalDrop.accept(EItems.ZINC_ORE_CHUNK.get(), chance(0.06f), Recipes.tagNotEmpty(EItemTags.ORES_ZINC)); + addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.04f), Recipes.tagNotEmpty(EItemTags.ORES_IRIDIUM)); }); // Golden mesh has much higher drops for gold and gems, but at the cost of much lower drops for metals // Gravel -> Golden mesh @@ -241,14 +239,14 @@ class SieveRecipes { addDrop.accept(Items.GOLD_NUGGET, chance(0.08f)); addDrop.accept(Items.RAW_GOLD, chance(0.02f)); - addConditionalDrop.accept(EItems.ALUMINUM_ORE_CHUNK.get(), chance(0.07f), tagNotEmpty(EItemTags.ORES_ALUMINUM)); - addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.12f), tagNotEmpty(EItemTags.ORES_SILVER)); - addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.07f), tagNotEmpty(EItemTags.ORES_LEAD)); - addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_OSMIUM)); - addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.07f), tagNotEmpty(EItemTags.ORES_NICKEL)); - addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.07f), tagNotEmpty(EItemTags.ORES_TIN)); - addConditionalDrop.accept(EItems.ZINC_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_ZINC)); - addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_IRIDIUM)); + addConditionalDrop.accept(EItems.ALUMINUM_ORE_CHUNK.get(), chance(0.07f), Recipes.tagNotEmpty(EItemTags.ORES_ALUMINUM)); + addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.12f), Recipes.tagNotEmpty(EItemTags.ORES_SILVER)); + addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.07f), Recipes.tagNotEmpty(EItemTags.ORES_LEAD)); + addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_OSMIUM)); + addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.07f), Recipes.tagNotEmpty(EItemTags.ORES_NICKEL)); + addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.07f), Recipes.tagNotEmpty(EItemTags.ORES_TIN)); + addConditionalDrop.accept(EItems.ZINC_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_ZINC)); + addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_IRIDIUM)); }); // Gravel -> Diamond mesh forMesh(writer, ingredient(Items.GRAVEL), EItems.DIAMOND_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { @@ -263,14 +261,14 @@ class SieveRecipes { addDrop.accept(Items.EMERALD, chance(0.07f)); addDrop.accept(Items.AMETHYST_SHARD, chance(0.06f)); - addConditionalDrop.accept(EItems.ALUMINUM_ORE_CHUNK.get(), chance(0.08f), tagNotEmpty(EItemTags.ORES_ALUMINUM)); - addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.08f), tagNotEmpty(EItemTags.ORES_SILVER)); - addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.09f), tagNotEmpty(EItemTags.ORES_LEAD)); - addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.07f), tagNotEmpty(EItemTags.ORES_OSMIUM)); - addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.09f), tagNotEmpty(EItemTags.ORES_NICKEL)); - addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.11f), tagNotEmpty(EItemTags.ORES_TIN)); - addConditionalDrop.accept(EItems.ZINC_ORE_CHUNK.get(), chance(0.08f), tagNotEmpty(EItemTags.ORES_ZINC)); - addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_IRIDIUM)); + addConditionalDrop.accept(EItems.ALUMINUM_ORE_CHUNK.get(), chance(0.08f), Recipes.tagNotEmpty(EItemTags.ORES_ALUMINUM)); + addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.08f), Recipes.tagNotEmpty(EItemTags.ORES_SILVER)); + addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.09f), Recipes.tagNotEmpty(EItemTags.ORES_LEAD)); + addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.07f), Recipes.tagNotEmpty(EItemTags.ORES_OSMIUM)); + addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.09f), Recipes.tagNotEmpty(EItemTags.ORES_NICKEL)); + addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.11f), Recipes.tagNotEmpty(EItemTags.ORES_TIN)); + addConditionalDrop.accept(EItems.ZINC_ORE_CHUNK.get(), chance(0.08f), Recipes.tagNotEmpty(EItemTags.ORES_ZINC)); + addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_IRIDIUM)); }); // Gravel -> Netherite mesh forMesh(writer, ingredient(Items.GRAVEL), EItems.NETHERITE_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { @@ -286,14 +284,14 @@ class SieveRecipes { addDrop.accept(Items.GOLD_NUGGET, chance(0.04f)); addDrop.accept(Items.RAW_GOLD, chance(0.01f)); - addConditionalDrop.accept(EItems.ALUMINUM_ORE_CHUNK.get(), chance(0.09f), tagNotEmpty(EItemTags.ORES_ALUMINUM)); - addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.11f), tagNotEmpty(EItemTags.ORES_SILVER)); - addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.11f), tagNotEmpty(EItemTags.ORES_LEAD)); - addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.09f), tagNotEmpty(EItemTags.ORES_OSMIUM)); - addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.10f), tagNotEmpty(EItemTags.ORES_NICKEL)); - addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.12f), tagNotEmpty(EItemTags.ORES_TIN)); - addConditionalDrop.accept(EItems.ZINC_ORE_CHUNK.get(), chance(0.08f), tagNotEmpty(EItemTags.ORES_ZINC)); - addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.055f), tagNotEmpty(EItemTags.ORES_IRIDIUM)); + addConditionalDrop.accept(EItems.ALUMINUM_ORE_CHUNK.get(), chance(0.09f), Recipes.tagNotEmpty(EItemTags.ORES_ALUMINUM)); + addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.11f), Recipes.tagNotEmpty(EItemTags.ORES_SILVER)); + addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.11f), Recipes.tagNotEmpty(EItemTags.ORES_LEAD)); + addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.09f), Recipes.tagNotEmpty(EItemTags.ORES_OSMIUM)); + addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.10f), Recipes.tagNotEmpty(EItemTags.ORES_NICKEL)); + addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.12f), Recipes.tagNotEmpty(EItemTags.ORES_TIN)); + addConditionalDrop.accept(EItems.ZINC_ORE_CHUNK.get(), chance(0.08f), Recipes.tagNotEmpty(EItemTags.ORES_ZINC)); + addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.055f), Recipes.tagNotEmpty(EItemTags.ORES_IRIDIUM)); }); // Sand -> String mesh @@ -306,8 +304,8 @@ class SieveRecipes { addDrop.accept(Items.KELP, chance(0.1f)); addDrop.accept(Items.SEA_PICKLE, chance(0.05f)); - addConditionalDrop.accept(ModCompatData.CERTUS_QUARTZ_CRYSTAL.get(), chance(0.03f), modInstalled(ModIds.APPLIED_ENERGISTICS_2)); - addConditionalDrop.accept(ModCompatData.CHARGED_CERTUS_QUARTZ_CRYSTAL.get(), chance(0.005f), modInstalled(ModIds.APPLIED_ENERGISTICS_2)); + addConditionalDrop.accept(ModCompatData.CERTUS_QUARTZ_CRYSTAL.get(), chance(0.03f), Recipes.modInstalled(ModIds.APPLIED_ENERGISTICS_2)); + addConditionalDrop.accept(ModCompatData.CHARGED_CERTUS_QUARTZ_CRYSTAL.get(), chance(0.005f), Recipes.modInstalled(ModIds.APPLIED_ENERGISTICS_2)); }); forMesh(writer, ingredient(Items.SAND), EItems.FLINT_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(Items.FLINT, binomial(2, 0.2f)); @@ -316,8 +314,8 @@ class SieveRecipes { addDrop.accept(Items.IRON_NUGGET, chance(0.16f)); addDrop.accept(EItems.RANDOM_POTTERY_SHERD.get(), chance(0.04f)); - addConditionalDrop.accept(ModCompatData.CERTUS_QUARTZ_CRYSTAL.get(), chance(0.04f), modInstalled(ModIds.APPLIED_ENERGISTICS_2)); - addConditionalDrop.accept(ModCompatData.CHARGED_CERTUS_QUARTZ_CRYSTAL.get(), chance(0.005f), modInstalled(ModIds.APPLIED_ENERGISTICS_2)); + addConditionalDrop.accept(ModCompatData.CERTUS_QUARTZ_CRYSTAL.get(), chance(0.04f), Recipes.modInstalled(ModIds.APPLIED_ENERGISTICS_2)); + addConditionalDrop.accept(ModCompatData.CHARGED_CERTUS_QUARTZ_CRYSTAL.get(), chance(0.005f), Recipes.modInstalled(ModIds.APPLIED_ENERGISTICS_2)); }); forMesh(writer, ingredient(Items.SAND), EItems.IRON_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(Items.CACTUS, chance(0.13f)); @@ -330,8 +328,8 @@ class SieveRecipes { addDrop.accept(Items.PRISMARINE_SHARD, chance(0.06f)); addDrop.accept(Items.PRISMARINE_CRYSTALS, chance(0.06f)); - addConditionalDrop.accept(ModCompatData.CERTUS_QUARTZ_CRYSTAL.get(), chance(0.06f), modInstalled(ModIds.APPLIED_ENERGISTICS_2)); - addConditionalDrop.accept(ModCompatData.CHARGED_CERTUS_QUARTZ_CRYSTAL.get(), chance(0.0125f), modInstalled(ModIds.APPLIED_ENERGISTICS_2)); + addConditionalDrop.accept(ModCompatData.CERTUS_QUARTZ_CRYSTAL.get(), chance(0.06f), Recipes.modInstalled(ModIds.APPLIED_ENERGISTICS_2)); + addConditionalDrop.accept(ModCompatData.CHARGED_CERTUS_QUARTZ_CRYSTAL.get(), chance(0.0125f), Recipes.modInstalled(ModIds.APPLIED_ENERGISTICS_2)); }); forMesh(writer, ingredient(Items.SAND), EItems.GOLDEN_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(Items.CACTUS, chance(0.10f)); @@ -346,8 +344,8 @@ class SieveRecipes { addDrop.accept(Items.RAW_GOLD, chance(0.04f)); addDrop.accept(EItems.RANDOM_ARMOR_TRIM.get(), chance(0.02f)); - addConditionalDrop.accept(ModCompatData.CERTUS_QUARTZ_CRYSTAL.get(), chance(0.07f), modInstalled(ModIds.APPLIED_ENERGISTICS_2)); - addConditionalDrop.accept(ModCompatData.CHARGED_CERTUS_QUARTZ_CRYSTAL.get(), chance(0.015f), modInstalled(ModIds.APPLIED_ENERGISTICS_2)); + addConditionalDrop.accept(ModCompatData.CERTUS_QUARTZ_CRYSTAL.get(), chance(0.07f), Recipes.modInstalled(ModIds.APPLIED_ENERGISTICS_2)); + addConditionalDrop.accept(ModCompatData.CHARGED_CERTUS_QUARTZ_CRYSTAL.get(), chance(0.015f), Recipes.modInstalled(ModIds.APPLIED_ENERGISTICS_2)); }); forMesh(writer, ingredient(Items.SAND), EItems.DIAMOND_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(Items.FLINT, chance(0.23f)); @@ -356,8 +354,8 @@ class SieveRecipes { addDrop.accept(Items.PRISMARINE_SHARD, chance(0.09f)); addDrop.accept(Items.PRISMARINE_CRYSTALS, chance(0.09f)); - addConditionalDrop.accept(ModCompatData.CERTUS_QUARTZ_CRYSTAL.get(), chance(0.09f), modInstalled(ModIds.APPLIED_ENERGISTICS_2)); - addConditionalDrop.accept(ModCompatData.CHARGED_CERTUS_QUARTZ_CRYSTAL.get(), chance(0.02f), modInstalled(ModIds.APPLIED_ENERGISTICS_2)); + addConditionalDrop.accept(ModCompatData.CERTUS_QUARTZ_CRYSTAL.get(), chance(0.09f), Recipes.modInstalled(ModIds.APPLIED_ENERGISTICS_2)); + addConditionalDrop.accept(ModCompatData.CHARGED_CERTUS_QUARTZ_CRYSTAL.get(), chance(0.02f), Recipes.modInstalled(ModIds.APPLIED_ENERGISTICS_2)); }); forMesh(writer, ingredient(Items.SAND), EItems.NETHERITE_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(Items.CACTUS, chance(0.15f)); @@ -369,8 +367,8 @@ class SieveRecipes { addDrop.accept(Items.PRISMARINE_SHARD, chance(0.12f)); addDrop.accept(Items.PRISMARINE_CRYSTALS, chance(0.12f)); - addConditionalDrop.accept(ModCompatData.CERTUS_QUARTZ_CRYSTAL.get(), chance(0.095f), modInstalled(ModIds.APPLIED_ENERGISTICS_2)); - addConditionalDrop.accept(ModCompatData.CHARGED_CERTUS_QUARTZ_CRYSTAL.get(), chance(0.035f), modInstalled(ModIds.APPLIED_ENERGISTICS_2)); + addConditionalDrop.accept(ModCompatData.CERTUS_QUARTZ_CRYSTAL.get(), chance(0.095f), Recipes.modInstalled(ModIds.APPLIED_ENERGISTICS_2)); + addConditionalDrop.accept(ModCompatData.CHARGED_CERTUS_QUARTZ_CRYSTAL.get(), chance(0.035f), Recipes.modInstalled(ModIds.APPLIED_ENERGISTICS_2)); }); // Red Sand -> String mesh @@ -423,8 +421,9 @@ class SieveRecipes { addDrop.accept(Items.GLOWSTONE_DUST, chance(0.04f)); addDrop.accept(Items.BLAZE_POWDER, chance(0.03f)); - addConditionalDrop.accept(ModCompatData.GRAINS_OF_INFINITY.get(), chance(0.06f), modInstalled(ModIds.ENDERIO)); - addConditionalDrop.accept(ModCompatData.YELLORIUM_DUST.get(), chance(0.05f), modInstalled(ModIds.EXTREME_REACTORS)); + addConditionalDrop.accept(ModCompatData.GRAINS_OF_INFINITY.get(), chance(0.06f), Recipes.modInstalled(ModIds.ENDERIO)); + addConditionalDrop.accept(ModCompatData.YELLORIUM_DUST.get(), chance(0.05f), Recipes.modInstalled(ModIds.EXTREME_REACTORS)); + }); forMesh(writer, ingredient(EItems.DUST.get()), EItems.FLINT_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(Items.GUNPOWDER, chance(0.11f)); @@ -433,8 +432,8 @@ class SieveRecipes { addDrop.accept(Items.GLOWSTONE_DUST, chance(0.07f)); addDrop.accept(Items.BLAZE_POWDER, chance(0.04f)); - addConditionalDrop.accept(ModCompatData.GRAINS_OF_INFINITY.get(), chance(0.07f), modInstalled(ModIds.ENDERIO)); - addConditionalDrop.accept(ModCompatData.YELLORIUM_DUST.get(), chance(0.055f), modInstalled(ModIds.EXTREME_REACTORS)); + addConditionalDrop.accept(ModCompatData.GRAINS_OF_INFINITY.get(), chance(0.07f), Recipes.modInstalled(ModIds.ENDERIO)); + addConditionalDrop.accept(ModCompatData.YELLORIUM_DUST.get(), chance(0.055f), Recipes.modInstalled(ModIds.EXTREME_REACTORS)); }); forMesh(writer, ingredient(EItems.DUST.get()), EItems.IRON_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(Items.GUNPOWDER, chance(0.13f)); @@ -444,8 +443,8 @@ class SieveRecipes { addDrop.accept(Items.BLAZE_POWDER, chance(0.05f)); addDrop.accept(Items.IRON_NUGGET, chance(0.06f)); - addConditionalDrop.accept(ModCompatData.GRAINS_OF_INFINITY.get(), chance(0.09f), modInstalled(ModIds.ENDERIO)); - addConditionalDrop.accept(ModCompatData.YELLORIUM_DUST.get(), chance(0.08f), modInstalled(ModIds.EXTREME_REACTORS)); + addConditionalDrop.accept(ModCompatData.GRAINS_OF_INFINITY.get(), chance(0.09f), Recipes.modInstalled(ModIds.ENDERIO)); + addConditionalDrop.accept(ModCompatData.YELLORIUM_DUST.get(), chance(0.08f), Recipes.modInstalled(ModIds.EXTREME_REACTORS)); }); forMesh(writer, ingredient(EItems.DUST.get()), EItems.GOLDEN_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(Items.GUNPOWDER, chance(0.13f)); @@ -456,8 +455,8 @@ class SieveRecipes { addDrop.accept(Items.GOLD_NUGGET, binomial(2, 0.18f)); addDrop.accept(Items.RAW_GOLD, chance(0.02f)); - addConditionalDrop.accept(ModCompatData.GRAINS_OF_INFINITY.get(), chance(0.11f), modInstalled(ModIds.ENDERIO)); - addConditionalDrop.accept(ModCompatData.YELLORIUM_DUST.get(), chance(0.10f), modInstalled(ModIds.EXTREME_REACTORS)); + addConditionalDrop.accept(ModCompatData.GRAINS_OF_INFINITY.get(), chance(0.11f), Recipes.modInstalled(ModIds.ENDERIO)); + addConditionalDrop.accept(ModCompatData.YELLORIUM_DUST.get(), chance(0.10f), Recipes.modInstalled(ModIds.EXTREME_REACTORS)); }); forMesh(writer, ingredient(EItems.DUST.get()), EItems.DIAMOND_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(Items.GUNPOWDER, chance(0.14f)); @@ -467,8 +466,8 @@ class SieveRecipes { addDrop.accept(Items.BLAZE_POWDER, chance(0.06f)); addDrop.accept(Items.GOLD_NUGGET, chance(0.08f)); - addConditionalDrop.accept(ModCompatData.GRAINS_OF_INFINITY.get(), chance(0.12f), modInstalled(ModIds.ENDERIO)); - addConditionalDrop.accept(ModCompatData.YELLORIUM_DUST.get(), chance(0.12f), modInstalled(ModIds.EXTREME_REACTORS)); + addConditionalDrop.accept(ModCompatData.GRAINS_OF_INFINITY.get(), chance(0.12f), Recipes.modInstalled(ModIds.ENDERIO)); + addConditionalDrop.accept(ModCompatData.YELLORIUM_DUST.get(), chance(0.12f), Recipes.modInstalled(ModIds.EXTREME_REACTORS)); }); forMesh(writer, ingredient(EItems.DUST.get()), EItems.NETHERITE_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(Items.GUNPOWDER, chance(0.14f)); @@ -479,8 +478,8 @@ class SieveRecipes { addDrop.accept(Items.GOLD_NUGGET, chance(0.08f)); addDrop.accept(Items.IRON_NUGGET, chance(0.08f)); - addConditionalDrop.accept(ModCompatData.GRAINS_OF_INFINITY.get(), chance(0.135f), modInstalled(ModIds.ENDERIO)); - addConditionalDrop.accept(ModCompatData.YELLORIUM_DUST.get(), chance(0.14f), modInstalled(ModIds.EXTREME_REACTORS)); + addConditionalDrop.accept(ModCompatData.GRAINS_OF_INFINITY.get(), chance(0.135f), Recipes.modInstalled(ModIds.ENDERIO)); + addConditionalDrop.accept(ModCompatData.YELLORIUM_DUST.get(), chance(0.14f), Recipes.modInstalled(ModIds.EXTREME_REACTORS)); }); // Crushed Deepslate -> String mesh @@ -494,14 +493,14 @@ class SieveRecipes { addDrop.accept(Items.LAPIS_LAZULI, chance(0.04f)); addDrop.accept(Items.EMERALD, chance(0.03f)); - addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_SILVER)); - addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_LEAD)); - addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.06f), tagNotEmpty(EItemTags.ORES_OSMIUM)); - addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.04f), tagNotEmpty(EItemTags.ORES_NICKEL)); - addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_TIN)); - addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.04f), tagNotEmpty(EItemTags.ORES_IRIDIUM)); - addConditionalDrop.accept(EItems.PLATINUM_ORE_CHUNK.get(), chance(0.03f), tagNotEmpty(EItemTags.ORES_PLATINUM)); - addConditionalDrop.accept(EItems.URANIUM_ORE_CHUNK.get(), chance(0.04f), tagNotEmpty(EItemTags.ORES_URANIUM)); + addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_SILVER)); + addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_LEAD)); + addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.06f), Recipes.tagNotEmpty(EItemTags.ORES_OSMIUM)); + addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.04f), Recipes.tagNotEmpty(EItemTags.ORES_NICKEL)); + addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_TIN)); + addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.04f), Recipes.tagNotEmpty(EItemTags.ORES_IRIDIUM)); + addConditionalDrop.accept(EItems.PLATINUM_ORE_CHUNK.get(), chance(0.03f), Recipes.tagNotEmpty(EItemTags.ORES_PLATINUM)); + addConditionalDrop.accept(EItems.URANIUM_ORE_CHUNK.get(), chance(0.04f), Recipes.tagNotEmpty(EItemTags.ORES_URANIUM)); }); forMesh(writer, ingredient(EItems.CRUSHED_DEEPSLATE.get()), EItems.FLINT_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(EItems.DEEPSLATE_PEBBLE.get(), binomial(4, 0.5f)); @@ -516,14 +515,14 @@ class SieveRecipes { addDrop.accept(Items.LAPIS_LAZULI, chance(0.05f)); addDrop.accept(Items.EMERALD, chance(0.04f)); - addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.08f), tagNotEmpty(EItemTags.ORES_SILVER)); - addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.08f), tagNotEmpty(EItemTags.ORES_LEAD)); - addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.08f), tagNotEmpty(EItemTags.ORES_OSMIUM)); - addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.06f), tagNotEmpty(EItemTags.ORES_NICKEL)); - addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.07f), tagNotEmpty(EItemTags.ORES_TIN)); - addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_IRIDIUM)); - addConditionalDrop.accept(EItems.PLATINUM_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_PLATINUM)); - addConditionalDrop.accept(EItems.URANIUM_ORE_CHUNK.get(), chance(0.06f), tagNotEmpty(EItemTags.ORES_URANIUM)); + addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.08f), Recipes.tagNotEmpty(EItemTags.ORES_SILVER)); + addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.08f), Recipes.tagNotEmpty(EItemTags.ORES_LEAD)); + addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.08f), Recipes.tagNotEmpty(EItemTags.ORES_OSMIUM)); + addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.06f), Recipes.tagNotEmpty(EItemTags.ORES_NICKEL)); + addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.07f), Recipes.tagNotEmpty(EItemTags.ORES_TIN)); + addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_IRIDIUM)); + addConditionalDrop.accept(EItems.PLATINUM_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_PLATINUM)); + addConditionalDrop.accept(EItems.URANIUM_ORE_CHUNK.get(), chance(0.06f), Recipes.tagNotEmpty(EItemTags.ORES_URANIUM)); }); forMesh(writer, ingredient(EItems.CRUSHED_DEEPSLATE.get()), EItems.IRON_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(EItems.DEEPSLATE_PEBBLE.get(), binomial(4, 0.6f)); @@ -535,14 +534,14 @@ class SieveRecipes { addDrop.accept(Items.LAPIS_LAZULI, chance(0.08f)); addDrop.accept(Items.EMERALD, chance(0.05f)); - addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.1f), tagNotEmpty(EItemTags.ORES_SILVER)); - addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.1f), tagNotEmpty(EItemTags.ORES_LEAD)); - addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.10f), tagNotEmpty(EItemTags.ORES_OSMIUM)); - addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.09f), tagNotEmpty(EItemTags.ORES_NICKEL)); - addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.11f), tagNotEmpty(EItemTags.ORES_TIN)); - addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.06f), tagNotEmpty(EItemTags.ORES_IRIDIUM)); - addConditionalDrop.accept(EItems.PLATINUM_ORE_CHUNK.get(), chance(0.065f), tagNotEmpty(EItemTags.ORES_PLATINUM)); - addConditionalDrop.accept(EItems.URANIUM_ORE_CHUNK.get(), chance(0.08f), tagNotEmpty(EItemTags.ORES_URANIUM)); + addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.1f), Recipes.tagNotEmpty(EItemTags.ORES_SILVER)); + addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.1f), Recipes.tagNotEmpty(EItemTags.ORES_LEAD)); + addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.10f), Recipes.tagNotEmpty(EItemTags.ORES_OSMIUM)); + addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.09f), Recipes.tagNotEmpty(EItemTags.ORES_NICKEL)); + addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.11f), Recipes.tagNotEmpty(EItemTags.ORES_TIN)); + addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.06f), Recipes.tagNotEmpty(EItemTags.ORES_IRIDIUM)); + addConditionalDrop.accept(EItems.PLATINUM_ORE_CHUNK.get(), chance(0.065f), Recipes.tagNotEmpty(EItemTags.ORES_PLATINUM)); + addConditionalDrop.accept(EItems.URANIUM_ORE_CHUNK.get(), chance(0.08f), Recipes.tagNotEmpty(EItemTags.ORES_URANIUM)); }); forMesh(writer, ingredient(EItems.CRUSHED_DEEPSLATE.get()), EItems.GOLDEN_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(EItems.DEEPSLATE_PEBBLE.get(), binomial(4, 0.65f)); @@ -556,14 +555,14 @@ class SieveRecipes { addDrop.accept(Items.RAW_GOLD, chance(0.05f)); addDrop.accept(Items.GOLD_NUGGET, binomial(3, 0.1f)); - addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.15f), tagNotEmpty(EItemTags.ORES_SILVER)); - addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.09f), tagNotEmpty(EItemTags.ORES_LEAD)); - addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.09f), tagNotEmpty(EItemTags.ORES_OSMIUM)); - addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.11f), tagNotEmpty(EItemTags.ORES_NICKEL)); - addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.12f), tagNotEmpty(EItemTags.ORES_TIN)); - addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.04f), tagNotEmpty(EItemTags.ORES_IRIDIUM)); - addConditionalDrop.accept(EItems.PLATINUM_ORE_CHUNK.get(), chance(0.09f), tagNotEmpty(EItemTags.ORES_PLATINUM)); - addConditionalDrop.accept(EItems.URANIUM_ORE_CHUNK.get(), chance(0.07f), tagNotEmpty(EItemTags.ORES_URANIUM)); + addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.15f), Recipes.tagNotEmpty(EItemTags.ORES_SILVER)); + addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.09f), Recipes.tagNotEmpty(EItemTags.ORES_LEAD)); + addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.09f), Recipes.tagNotEmpty(EItemTags.ORES_OSMIUM)); + addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.11f), Recipes.tagNotEmpty(EItemTags.ORES_NICKEL)); + addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.12f), Recipes.tagNotEmpty(EItemTags.ORES_TIN)); + addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.04f), Recipes.tagNotEmpty(EItemTags.ORES_IRIDIUM)); + addConditionalDrop.accept(EItems.PLATINUM_ORE_CHUNK.get(), chance(0.09f), Recipes.tagNotEmpty(EItemTags.ORES_PLATINUM)); + addConditionalDrop.accept(EItems.URANIUM_ORE_CHUNK.get(), chance(0.07f), Recipes.tagNotEmpty(EItemTags.ORES_URANIUM)); }); forMesh(writer, ingredient(EItems.CRUSHED_DEEPSLATE.get()), EItems.DIAMOND_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(EItems.DEEPSLATE_PEBBLE.get(), binomial(4, 0.65f)); @@ -575,14 +574,14 @@ class SieveRecipes { addDrop.accept(Items.LAPIS_LAZULI, chance(0.12f)); addDrop.accept(Items.EMERALD, chance(0.08f)); - addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.11f), tagNotEmpty(EItemTags.ORES_SILVER)); - addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.11f), tagNotEmpty(EItemTags.ORES_LEAD)); - addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.12f), tagNotEmpty(EItemTags.ORES_OSMIUM)); - addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.11f), tagNotEmpty(EItemTags.ORES_NICKEL)); - addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.13f), tagNotEmpty(EItemTags.ORES_TIN)); - addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.065f), tagNotEmpty(EItemTags.ORES_IRIDIUM)); - addConditionalDrop.accept(EItems.PLATINUM_ORE_CHUNK.get(), chance(0.075f), tagNotEmpty(EItemTags.ORES_PLATINUM)); - addConditionalDrop.accept(EItems.URANIUM_ORE_CHUNK.get(), chance(0.1f), tagNotEmpty(EItemTags.ORES_URANIUM)); + addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.11f), Recipes.tagNotEmpty(EItemTags.ORES_SILVER)); + addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.11f), Recipes.tagNotEmpty(EItemTags.ORES_LEAD)); + addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.12f), Recipes.tagNotEmpty(EItemTags.ORES_OSMIUM)); + addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.11f), Recipes.tagNotEmpty(EItemTags.ORES_NICKEL)); + addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.13f), Recipes.tagNotEmpty(EItemTags.ORES_TIN)); + addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.065f), Recipes.tagNotEmpty(EItemTags.ORES_IRIDIUM)); + addConditionalDrop.accept(EItems.PLATINUM_ORE_CHUNK.get(), chance(0.075f), Recipes.tagNotEmpty(EItemTags.ORES_PLATINUM)); + addConditionalDrop.accept(EItems.URANIUM_ORE_CHUNK.get(), chance(0.1f), Recipes.tagNotEmpty(EItemTags.ORES_URANIUM)); }); forMesh(writer, ingredient(EItems.CRUSHED_DEEPSLATE.get()), EItems.NETHERITE_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(EItems.DEEPSLATE_PEBBLE.get(), binomial(4, 0.7f)); @@ -594,14 +593,14 @@ class SieveRecipes { addDrop.accept(Items.LAPIS_LAZULI, chance(0.14f)); addDrop.accept(Items.EMERALD, chance(0.1f)); - addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.12f), tagNotEmpty(EItemTags.ORES_SILVER)); - addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.12f), tagNotEmpty(EItemTags.ORES_LEAD)); - addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.14f), tagNotEmpty(EItemTags.ORES_OSMIUM)); - addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.15f), tagNotEmpty(EItemTags.ORES_NICKEL)); - addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.16f), tagNotEmpty(EItemTags.ORES_TIN)); - addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.065f), tagNotEmpty(EItemTags.ORES_IRIDIUM)); - addConditionalDrop.accept(EItems.PLATINUM_ORE_CHUNK.get(), chance(0.09f), tagNotEmpty(EItemTags.ORES_PLATINUM)); - addConditionalDrop.accept(EItems.URANIUM_ORE_CHUNK.get(), chance(0.12f), tagNotEmpty(EItemTags.ORES_URANIUM)); + addConditionalDrop.accept(EItems.SILVER_ORE_CHUNK.get(), chance(0.12f), Recipes.tagNotEmpty(EItemTags.ORES_SILVER)); + addConditionalDrop.accept(EItems.LEAD_ORE_CHUNK.get(), chance(0.12f), Recipes.tagNotEmpty(EItemTags.ORES_LEAD)); + addConditionalDrop.accept(EItems.OSMIUM_ORE_CHUNK.get(), chance(0.14f), Recipes.tagNotEmpty(EItemTags.ORES_OSMIUM)); + addConditionalDrop.accept(EItems.NICKEL_ORE_CHUNK.get(), chance(0.15f), Recipes.tagNotEmpty(EItemTags.ORES_NICKEL)); + addConditionalDrop.accept(EItems.TIN_ORE_CHUNK.get(), chance(0.16f), Recipes.tagNotEmpty(EItemTags.ORES_TIN)); + addConditionalDrop.accept(EItems.IRIDIUM_ORE_CHUNK.get(), chance(0.065f), Recipes.tagNotEmpty(EItemTags.ORES_IRIDIUM)); + addConditionalDrop.accept(EItems.PLATINUM_ORE_CHUNK.get(), chance(0.09f), Recipes.tagNotEmpty(EItemTags.ORES_PLATINUM)); + addConditionalDrop.accept(EItems.URANIUM_ORE_CHUNK.get(), chance(0.12f), Recipes.tagNotEmpty(EItemTags.ORES_URANIUM)); }); forMesh(writer, ingredient(EItems.CRUSHED_BLACKSTONE.get()), EItems.STRING_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { @@ -666,7 +665,7 @@ class SieveRecipes { addDrop.accept(EItems.CRIMSON_NYLIUM_SPORES.get(), chance(0.05f)); addDrop.accept(Items.GOLD_NUGGET, chance(0.07f)); - addConditionalDrop.accept(EItems.COBALT_ORE_CHUNK.get(), chance(0.04f), tagNotEmpty(EItemTags.ORES_COBALT)); + addConditionalDrop.accept(EItems.COBALT_ORE_CHUNK.get(), chance(0.04f), Recipes.tagNotEmpty(EItemTags.ORES_COBALT)); }); forMesh(writer, ingredient(EItems.CRUSHED_NETHERRACK.get()), EItems.FLINT_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(EItems.BLACKSTONE_PEBBLE.get(), binomial(4, 0.5f)); @@ -679,7 +678,7 @@ class SieveRecipes { addDrop.accept(EItems.CRIMSON_NYLIUM_SPORES.get(), chance(0.07f)); addDrop.accept(Items.GOLD_NUGGET, chance(0.08f)); - addConditionalDrop.accept(EItems.COBALT_ORE_CHUNK.get(), chance(0.05f), tagNotEmpty(EItemTags.ORES_COBALT)); + addConditionalDrop.accept(EItems.COBALT_ORE_CHUNK.get(), chance(0.05f), Recipes.tagNotEmpty(EItemTags.ORES_COBALT)); }); forMesh(writer, ingredient(EItems.CRUSHED_NETHERRACK.get()), EItems.IRON_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(EItems.BLACKSTONE_PEBBLE.get(), binomial(4, 0.6f)); @@ -692,7 +691,7 @@ class SieveRecipes { addDrop.accept(EItems.CRIMSON_NYLIUM_SPORES.get(), chance(0.08f)); addDrop.accept(Items.GOLD_NUGGET, chance(0.1f)); - addConditionalDrop.accept(EItems.COBALT_ORE_CHUNK.get(), chance(0.065f), tagNotEmpty(EItemTags.ORES_COBALT)); + addConditionalDrop.accept(EItems.COBALT_ORE_CHUNK.get(), chance(0.065f), Recipes.tagNotEmpty(EItemTags.ORES_COBALT)); }); forMesh(writer, ingredient(EItems.CRUSHED_NETHERRACK.get()), EItems.GOLDEN_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(EItems.BLACKSTONE_PEBBLE.get(), binomial(4, 0.6f)); @@ -706,7 +705,7 @@ class SieveRecipes { addDrop.accept(Items.GOLD_NUGGET, chance(0.14f)); addDrop.accept(Items.RAW_GOLD, chance(0.03f)); - addConditionalDrop.accept(EItems.COBALT_ORE_CHUNK.get(), chance(0.07f), tagNotEmpty(EItemTags.ORES_COBALT)); + addConditionalDrop.accept(EItems.COBALT_ORE_CHUNK.get(), chance(0.07f), Recipes.tagNotEmpty(EItemTags.ORES_COBALT)); }); forMesh(writer, ingredient(EItems.CRUSHED_NETHERRACK.get()), EItems.DIAMOND_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(EItems.BLACKSTONE_PEBBLE.get(), binomial(4, 0.6f)); @@ -716,7 +715,7 @@ class SieveRecipes { addDrop.accept(Items.GUNPOWDER, chance(0.13f)); addDrop.accept(Items.GOLD_NUGGET, chance(0.12f)); - addConditionalDrop.accept(EItems.COBALT_ORE_CHUNK.get(), chance(0.09f), tagNotEmpty(EItemTags.ORES_COBALT)); + addConditionalDrop.accept(EItems.COBALT_ORE_CHUNK.get(), chance(0.09f), Recipes.tagNotEmpty(EItemTags.ORES_COBALT)); }); forMesh(writer, ingredient(EItems.CRUSHED_NETHERRACK.get()), EItems.NETHERITE_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { addDrop.accept(EItems.BLACKSTONE_PEBBLE.get(), binomial(5, 0.65f)); @@ -726,7 +725,7 @@ class SieveRecipes { addDrop.accept(Items.GUNPOWDER, chance(0.13f)); addDrop.accept(Items.GOLD_NUGGET, chance(0.12f)); - addConditionalDrop.accept(EItems.COBALT_ORE_CHUNK.get(), chance(0.11f), tagNotEmpty(EItemTags.ORES_COBALT)); + addConditionalDrop.accept(EItems.COBALT_ORE_CHUNK.get(), chance(0.11f), Recipes.tagNotEmpty(EItemTags.ORES_COBALT)); }); forMesh(writer, ingredient(Items.SOUL_SAND), EItems.STRING_MESH, (addDrop, addTagDrop, addConditionalDrop) -> { @@ -830,7 +829,7 @@ class SieveRecipes { addDrop.accept(Items.BIG_DRIPLEAF, chance(0.05f + j * 0.02f)); addDrop.accept(Items.SPORE_BLOSSOM, chance(0.03f + j * 0.015f)); - var bop = modInstalled(ModIds.BIOMES_O_PLENTY); + var bop = Recipes.modInstalled(ModIds.BIOMES_O_PLENTY); addConditionalDrop.accept(ModCompatData.ORIGIN_SAPLING.get(), chance(0.04f), bop); addConditionalDrop.accept(ModCompatData.FLOWERING_OAK_SAPLING.get(), chance(0.04f), bop); addConditionalDrop.accept(ModCompatData.SNOWBLOSSOM_SAPLING.get(), chance(0.04f), bop); @@ -863,14 +862,6 @@ class SieveRecipes { return binomial(1, p); } - private static ICondition tagNotEmpty(TagKey tag) { - return new NotCondition(new TagEmptyCondition(tag.location())); - } - - private static ICondition modInstalled(String modid) { - return new ModLoadedCondition(modid); - } - private static void forMesh(Consumer writer, Ingredient block, RegistryObject mesh, ForMeshContext addDrops) { var folder = mesh.getId().getPath().replace("_mesh", "/"); var basePath = path(block.getItems()[0].getItem()) + "/" + folder; diff --git a/src/main/resources/coremods.js b/src/main/resources/coremods.js index 2e87a667..d794f91b 100644 --- a/src/main/resources/coremods.js +++ b/src/main/resources/coremods.js @@ -3,9 +3,11 @@ var Opcodes = Java.type('org.objectweb.asm.Opcodes'); var InsnList = Java.type('org.objectweb.asm.tree.InsnList'); var VarInsnNode = Java.type('org.objectweb.asm.tree.VarInsnNode'); +var FieldInsnNode = Java.type('org.objectweb.asm.tree.FieldInsnNode'); var MethodInsnNode = Java.type('org.objectweb.asm.tree.MethodInsnNode'); var LdcInsnNode = Java.type('org.objectweb.asm.tree.LdcInsnNode'); var TypeInsnNode = Java.type('org.objectweb.asm.tree.TypeInsnNode'); +var InsnNode = Java.type('org.objectweb.asm.tree.InsnNode'); var ASMAPI = Java.type('net.minecraftforge.coremod.api.ASMAPI'); @@ -66,6 +68,54 @@ function initializeCoreMod() { ASMAPI.log('ERROR', 'Unable to patch server.properties, you will have to set "level-type" to "exdeorum:void_world" manually.'); return method; } + }, + // Fixes heightmap issues when placing the end portal podium that would only spawn half of the portal + 'EndPortalPatch': { + 'target': { + 'type': 'METHOD', + 'class': 'net.minecraft.world.level.dimension.end.EndDragonFight', + 'methodName': 'm_64093_', // spawnExitPortal + 'methodDesc': '(Z)V' + }, + 'transformer': function(method) { + var insnList = method.instructions; + // Cache the mapped method name + var randomSourceCreate = ASMAPI.mapMethod('m_216327_'); + + // Start at 2 to avoid null getPrevious().getPrevious() + for (var i = 2; i < insnList.size(); ++i) { + var insn = insnList.get(i); + + // we want insn to be the GETFIELD portalLocation instruction after RandomSource.create + var previous = insnList.get(i - 2); + if (previous.getOpcode() === Opcodes.INVOKESTATIC && previous.name.equals(randomSourceCreate)) { + // labels and frame nodes use -1 as their opcode + if (insn.getNext().getOpcode() === -1) { + insn = insn.getNext(); + } + + // ALOAD 0 (there are two in a row) + insnList.insertBefore(insn, new VarInsnNode(Opcodes.ALOAD, 0)); + + // INVOKESTATIC to my hook + // DUP_X1 + // PUTFIELD + insnList.insert(insn, ASMAPI.listOf( + new MethodInsnNode(Opcodes.INVOKESTATIC, 'thedarkcolour/exdeorum/asm/ASMHooks', 'prePlaceEndPodium', '(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/core/BlockPos;', false), + new InsnNode(Opcodes.DUP_X1), + new FieldInsnNode(Opcodes.PUTFIELD, insn.owner, insn.name, insn.desc) + )); + + ASMAPI.log('INFO', 'The node we are patching at: { opcode: ' + insn.getOpcode() + ', name: ' + insn.getName()); + + ASMAPI.log('INFO', 'Successfully patched end portal.'); + return method; + } + } + + ASMAPI.log('ERROR', 'Unable to patch End Portal, it will not spawn properly and you will be unable to return to the overworld without cheats.'); + return method; + } } }; } \ No newline at end of file