Fixing up some bugs

This commit is contained in:
thedarkcolour 2023-08-09 22:58:18 -07:00
parent 779277ebc0
commit 7b7de0371d
99 changed files with 1250 additions and 77 deletions

View File

@ -1,5 +1,7 @@
// 1.20.1 2023-08-07T23:41:30.832699 Tags for minecraft:block mod id exdeorum
// 1.20.1 2023-08-09T20:30:27.4274718 Tags for minecraft:block mod id exdeorum
187f79162711777f2242b8184a878ad9f2d775f2 data/exdeorum/tags/blocks/watering_can_tickable.json
f6a9610ebae09549baf17e27200037cd17318055 data/minecraft/tags/blocks/leaves.json
2fb8f4567073001f8a70968950e8a728144e1214 data/minecraft/tags/blocks/mineable/axe.json
f6a9610ebae09549baf17e27200037cd17318055 data/minecraft/tags/blocks/mineable/hoe.json
a23ae1801375c0c9525c3d712cb0eeb87174c219 data/minecraft/tags/blocks/mineable/pickaxe.json
0fc927ffe01dd23fd511dea057c7894680ae9807 data/minecraft/tags/blocks/mineable/shovel.json

View File

@ -1,4 +1,4 @@
// 1.20.1 2023-08-08T15:59:08.3284326 Recipes
// 1.20.1 2023-08-09T22:07:08.2490849 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
@ -84,21 +84,27 @@ b04a381b3dc085153b5acc8085792297be9f5abb data/exdeorum/recipes/acacia_crucible.j
ffd7c016eef42ed756f88aed5dbf6bd7c1d61767 data/exdeorum/recipes/bamboo_crucible.json
233f10c1363ab42fc9556c6533634db8c288b43f data/exdeorum/recipes/bamboo_sieve.json
7940ebf503b4fa5a89b5279f623a9aeda8629940 data/exdeorum/recipes/barrel_compost/apple.json
99202b6fff6163156770be24fb2e9b7dd9b61885 data/exdeorum/recipes/barrel_compost/bamboo.json
1b13c3e0c90d978f574e865d951e05f29b1fb77b data/exdeorum/recipes/barrel_compost/beef.json
7b2e90d846a0ee0ae4db096448ebc4f7b73c7485 data/exdeorum/recipes/barrel_compost/beetroot.json
33b36a52c05f2c9ea4d501cf7ce34626dd4fe08a data/exdeorum/recipes/barrel_compost/beetroot_soup.json
96cd94a5121301bb47bc8b6c89cdccc05c9b76dd data/exdeorum/recipes/barrel_compost/berries.json
30c75da3bbf2917418045d6b971572cafa970e09 data/exdeorum/recipes/barrel_compost/bread.json
9396ffe81f82401ad3c583bd9f418b0da1775a08 data/exdeorum/recipes/barrel_compost/cactus.json
177efefdd5b58a1feab7e93986631edbb69644ad data/exdeorum/recipes/barrel_compost/cake.json
2494118c311271ea0eac052e9f379e651f576b19 data/exdeorum/recipes/barrel_compost/carrots.json
33e7e6193af5fb1e818e155d13f7fa5191811d3d data/exdeorum/recipes/barrel_compost/chicken.json
ff51c9b05dba8297d2aa5031d5a9e32007d05351 data/exdeorum/recipes/barrel_compost/chorus_flower.json
e7845703d2de3304d06b697373a0528f6c84952d data/exdeorum/recipes/barrel_compost/chorus_fruit.json
e1b7b92f1a348440188ea6aacccd3591a00c862d data/exdeorum/recipes/barrel_compost/chorus_plant.json
fdb1992a1f288ad308a32661d471ab08675011d0 data/exdeorum/recipes/barrel_compost/cod.json
1f04665bbda29747d8071cf45114a86a41415cb6 data/exdeorum/recipes/barrel_compost/cookie.json
f6ee5b900f693e7839961e26fa690b1df4eaa893 data/exdeorum/recipes/barrel_compost/dead_bush.json
fea2a11e64ae425b6dcc29480e9793fad877792b data/exdeorum/recipes/barrel_compost/egg.json
09f8e54e4112aa8f163967130087c9a24f9d03a0 data/exdeorum/recipes/barrel_compost/fermented_spider_eye.json
79bbe21466b4700c57cdcaeb15ebc5af741eafd4 data/exdeorum/recipes/barrel_compost/golden_apples.json
7e4e8500b94b97fded88c19b66b5c4f2fa8c3b38 data/exdeorum/recipes/barrel_compost/grass.json
b26f3f6922af80bbe8830ad00844880ab5d1d389 data/exdeorum/recipes/barrel_compost/kelp.json
48e6e1cb9f5a9208a6f6110328c592a087a0c04d data/exdeorum/recipes/barrel_compost/kelp.json
dbc452bd95428da7c2c44fe0f2f55c04a0939e25 data/exdeorum/recipes/barrel_compost/leaves.json
ef787402b9a0735b03fd72f2f6eac1a312de54d1 data/exdeorum/recipes/barrel_compost/lily_pad.json
1173cffa62b08f64f95456808197800883f8e754 data/exdeorum/recipes/barrel_compost/melon.json
@ -115,24 +121,28 @@ f53dc1607f4f2cffb472a89c1295061a78393bc8 data/exdeorum/recipes/barrel_compost/pu
b691840022019ce1ebcb8528f77066e68162e58c data/exdeorum/recipes/barrel_compost/pumpkin.json
8e293fa1db1397714f8e41c8f13f6a8e59566edc data/exdeorum/recipes/barrel_compost/pumpkin_pie.json
c648fa75a79e170a8a882a92b20ee3a6780b5849 data/exdeorum/recipes/barrel_compost/rabbit.json
763e95952aabe2520e4c623aaed3a34cf6397e91 data/exdeorum/recipes/barrel_compost/rabbit_foot.json
76aa0436b058163a9d3aef9541fe7f398ed8995c data/exdeorum/recipes/barrel_compost/rabbit_foot.json
9e184580291c74607690a8c26ddec3c62d020fd8 data/exdeorum/recipes/barrel_compost/rabbit_stew.json
c720509d8f087f6b6a95b86f66068e94d09ecb56 data/exdeorum/recipes/barrel_compost/rotten_flesh.json
2e7fda4c3ae928ad3fa442e30deec859f4e8b143 data/exdeorum/recipes/barrel_compost/salmon.json
12e54efe4b3b86d27b57c8169e3c0ae873ab781f data/exdeorum/recipes/barrel_compost/saplings.json
67f76ee0fd778b1cacf014d04010d8dae0bc9501 data/exdeorum/recipes/barrel_compost/seagrass.json
7589caff9f198eeda1f7690c969759ab05bba5e2 data/exdeorum/recipes/barrel_compost/sea_pickle.json
226beec982c238b26acef781942b2ebdde3eb5a0 data/exdeorum/recipes/barrel_compost/seeds.json
0448b2c0b447b8f9143cca678d3caf9a66fb81d2 data/exdeorum/recipes/barrel_compost/silk_worms.json
e0a9b437cd796c609fb8719325661c6117f59d4f data/exdeorum/recipes/barrel_compost/small_flowers.json
8f8075014f8f4200abd8253b5135d23cd37d45ba data/exdeorum/recipes/barrel_compost/spider_eye.json
61aa8e3c09be7880fad18822ed8d051e986c9772 data/exdeorum/recipes/barrel_compost/spores_and_seeds.json
9d661193a7dd59c10fb6c4e3278e22a463a1902a data/exdeorum/recipes/barrel_compost/spore_blossom.json
0f979382681cc620280b2dc12cd28687ca2d46f9 data/exdeorum/recipes/barrel_compost/string.json
e6077478cfc6b699909e15fd4f2113e703c4046f data/exdeorum/recipes/barrel_compost/sugar_cane.json
ef56ceb8bdda8c13d3d1dc2d6a2355789f3f1634 data/exdeorum/recipes/barrel_compost/suspicious_stew.json
ea698e109eb94b25b670be314de756955b3e1d58 data/exdeorum/recipes/barrel_compost/tall_flowers.json
b6c9b1329b400953c4239eb0444367772a2f67a8 data/exdeorum/recipes/barrel_compost/tall_grass.json
cc365b1961a4d1ac668c1ea33f52a4b74517d8c0 data/exdeorum/recipes/barrel_compost/tropical_fish.json
f17f12ac67e700f7838cb3bab740ec254bbfe13c data/exdeorum/recipes/barrel_compost/twisting_vines.json
653a42a46a6bd977a2eddea7336df4beabbbeecf data/exdeorum/recipes/barrel_compost/vine.json
c4ecb4272c220282de403852031b3ca92651d91c data/exdeorum/recipes/barrel_compost/weeping_vines.json
5677e23fdc74130523d602ebf9e557f659af57c5 data/exdeorum/recipes/barrel_compost/wheat.json
72f969f4db1f82a627df573c866a1b291e540a0a data/exdeorum/recipes/barrel_mixing/end_stone.json
37f73e219fda3c6f56bf55f8ec7f97586ecdbae1 data/exdeorum/recipes/barrel_mixing/ice.json
@ -213,7 +223,7 @@ f4ea515ec72c867b9c0b54df162bd07c62e1a7ce data/exdeorum/recipes/iron_watering_can
bffa756563ac5aa791f299ae6d7d042813c2614a data/exdeorum/recipes/jungle_sieve.json
d24ed2178e5875da5e0a6f82b5ac9c2ece4b64ff data/exdeorum/recipes/lava_crucible/cobblestone.json
0963c17c9f78907017fa0192c684f016c39f31eb data/exdeorum/recipes/lava_crucible/gravel.json
a23123d1144e9d03450cc373e54237ab64641567 data/exdeorum/recipes/lava_crucible/netherrack.json
e9affa16c926fe63ca2270a81aba4e33cd0b198b data/exdeorum/recipes/lava_crucible/netherrack.json
20744c980e4a68f67acea24af617f1ddb865f9a3 data/exdeorum/recipes/lava_crucible/stone.json
8efa8d7c8da52d42d8e1a831004dfc080423a500 data/exdeorum/recipes/mangrove_barrel.json
95edd369ab19abd17ef56cfa2350a2dc185c7747 data/exdeorum/recipes/mangrove_crucible.json
@ -577,6 +587,7 @@ e31b10ea506eb9a2d94aa9efdd7db4cdd8d78237 data/exdeorum/recipes/sieve/moss_block/
c3cb1b7c924b35323e3d7cb1ffdff46cff7bb849 data/exdeorum/recipes/sieve/moss_block/diamond/mangrove_propagule.json
9cd8e7df8913168eb5f3176e07bb02620025165e data/exdeorum/recipes/sieve/moss_block/diamond/oak_sapling.json
46372d4865910944bc43ef67b7e9f83987bcd591 data/exdeorum/recipes/sieve/moss_block/diamond/small_dripleaf.json
ab9c7574d8d2ca3343f170e8cb9d78737873ee2f data/exdeorum/recipes/sieve/moss_block/diamond/spore_blossom.json
f41a1dd1c6a62bc8b34baa677a53e18150185e5a data/exdeorum/recipes/sieve/moss_block/diamond/spruce_sapling.json
f81c5c7b83ff1dd7ded1b46cb3b602ce56ae3ba7 data/exdeorum/recipes/sieve/moss_block/flint/acacia_sapling.json
c1687b96d45092b8fa43d15caf049dabaf1aa648 data/exdeorum/recipes/sieve/moss_block/flint/big_dripleaf.json
@ -590,6 +601,7 @@ cbd39e058b88538e00884c336289d08a45122d58 data/exdeorum/recipes/sieve/moss_block/
c63138cd4e3095885913923bee0685064442871a data/exdeorum/recipes/sieve/moss_block/flint/mangrove_propagule.json
6f1e11d47cd47a4607ba7da396f1802e2ff3266f data/exdeorum/recipes/sieve/moss_block/flint/oak_sapling.json
01e4ada58ba8c4a5ea450f62e752f9324cfda6d3 data/exdeorum/recipes/sieve/moss_block/flint/small_dripleaf.json
366055d40ffa8bb5df3aa4a173df789ca7387e18 data/exdeorum/recipes/sieve/moss_block/flint/spore_blossom.json
0f9eb10e52f5800d0543fbbff9c13559095d2e5f data/exdeorum/recipes/sieve/moss_block/flint/spruce_sapling.json
4ac5ebd110597a27940d6d6c8ca5858b5a09d153 data/exdeorum/recipes/sieve/moss_block/flint/sweet_berries.json
862a8042232a5b063cf8fdb30142100a32a04372 data/exdeorum/recipes/sieve/moss_block/golden/acacia_sapling.json
@ -602,6 +614,7 @@ c9aed5b2b7e641177e6cd08968d6a658de5a3779 data/exdeorum/recipes/sieve/moss_block/
0ad8b7d2ac32bdc810249f9039a355096beca263 data/exdeorum/recipes/sieve/moss_block/golden/mangrove_propagule.json
74979d3b2db6d6fe305c63ee717542a06188d133 data/exdeorum/recipes/sieve/moss_block/golden/oak_sapling.json
ab5ae026900f1d6c82f93d8beb2955695ace87fa data/exdeorum/recipes/sieve/moss_block/golden/small_dripleaf.json
47a1c47daea852999f58845e542a7e2a7f43b04a data/exdeorum/recipes/sieve/moss_block/golden/spore_blossom.json
9ed8aaa5555765dacc2df79e05e8799cf7bc6e5b data/exdeorum/recipes/sieve/moss_block/golden/spruce_sapling.json
aa77cca261f061b6c67d7b76cfbee948eb6a3e8d data/exdeorum/recipes/sieve/moss_block/iron/acacia_sapling.json
dab4403fa7e1cf72c062422421e609f4f27407be data/exdeorum/recipes/sieve/moss_block/iron/big_dripleaf.json
@ -613,6 +626,7 @@ dab4403fa7e1cf72c062422421e609f4f27407be data/exdeorum/recipes/sieve/moss_block/
5f508e67c7944764f807b0b55436b33f5e97699b data/exdeorum/recipes/sieve/moss_block/iron/mangrove_propagule.json
6621371034fb0c5ddcaf54fa2d89bf614d84f41e data/exdeorum/recipes/sieve/moss_block/iron/oak_sapling.json
e46a4beb26c5f1572354e87bfe4553e0a4122576 data/exdeorum/recipes/sieve/moss_block/iron/small_dripleaf.json
0075db25f4650ba9dc172f15814725754d9f97e5 data/exdeorum/recipes/sieve/moss_block/iron/spore_blossom.json
93cb208475c16ebfdb286a2704a54b1594354c7f data/exdeorum/recipes/sieve/moss_block/iron/spruce_sapling.json
64ef5a4f025effef3ac4a2b90488c4b910729bec data/exdeorum/recipes/sieve/moss_block/netherite/acacia_sapling.json
415b6baad54d477f2182ff7c2c5f009e85ae9deb data/exdeorum/recipes/sieve/moss_block/netherite/big_dripleaf.json
@ -624,6 +638,7 @@ a216466ec9cace1bd1de0c0c19469e41c49205f9 data/exdeorum/recipes/sieve/moss_block/
e19bd9157fd5fb35ce43953b9ea27e9102945574 data/exdeorum/recipes/sieve/moss_block/netherite/mangrove_propagule.json
21d5202805e1da22beb0c1caee7f721dd937615c data/exdeorum/recipes/sieve/moss_block/netherite/oak_sapling.json
253817ef4f1a350d988df5e122a32fa8fd576819 data/exdeorum/recipes/sieve/moss_block/netherite/small_dripleaf.json
913767318dab8eda863e2816e06164f8b2b7d049 data/exdeorum/recipes/sieve/moss_block/netherite/spore_blossom.json
7b16289fd38e015d5b5f6bfe70314d8a507ca4b0 data/exdeorum/recipes/sieve/moss_block/netherite/spruce_sapling.json
959d21cfb914761dac53844cea56de55f6260a27 data/exdeorum/recipes/sieve/moss_block/string/acacia_sapling.json
6232ad4b9611b1d7276ad22924f878b83df668c0 data/exdeorum/recipes/sieve/moss_block/string/big_dripleaf.json
@ -635,6 +650,7 @@ ee240ebb80802c83d48985d9e431bc12410589a4 data/exdeorum/recipes/sieve/moss_block/
621c67156656594f50ee49456f4cc58dbd540752 data/exdeorum/recipes/sieve/moss_block/string/mangrove_propagule.json
98bc0e4cd532316a91814bf618588c7cfa389a44 data/exdeorum/recipes/sieve/moss_block/string/oak_sapling.json
e5351932ff3700bf95f2ec770cd051f08debee9c data/exdeorum/recipes/sieve/moss_block/string/small_dripleaf.json
64280db27eca51b0aa8fddc970756c1e3a25db08 data/exdeorum/recipes/sieve/moss_block/string/spore_blossom.json
fec8737e1aba9773807c7cd582c685e4532f488d data/exdeorum/recipes/sieve/moss_block/string/spruce_sapling.json
c63500f17bbac4d47caac5a48f3cedfe750916a5 data/exdeorum/recipes/sieve/sand/diamond/flint.json
3b0c8920c2c19e3731e0258bd005b4d2cc2bd5ab data/exdeorum/recipes/sieve/sand/diamond/gold_nugget.json
@ -749,18 +765,30 @@ e6ff95b6fbc43c73a537174e01c9eb519e8fdef1 data/exdeorum/recipes/unfired_porcelain
1ae1b311f2e370c924041da80fea01ac8da870c5 data/exdeorum/recipes/warped_crucible.json
7d589e398d803bc7a30614f6ee4aa0d48ca3540e data/exdeorum/recipes/warped_sieve.json
4fbb682aa185e8d9d945619554dc98015221a4eb data/exdeorum/recipes/water_crucible/apple.json
fa23650a3d75ed6278d9c3860aa6ea086371210b data/exdeorum/recipes/water_crucible/beetroot.json
8fed4fdb981ca82436919a074fc1166a2fc6385d data/exdeorum/recipes/water_crucible/cactus.json
8d9de0f7eb46ffb7990a9ac311ec697dffa40443 data/exdeorum/recipes/water_crucible/carrot.json
b191c567f221393c91baaaf456212caebee30048 data/exdeorum/recipes/water_crucible/grass.json
a71db1fcbabb44ed0a0a709175ca2a419b98caa8 data/exdeorum/recipes/water_crucible/grass_block.json
1a31f9a9826fc882acc135c40845b1f227476c7c data/exdeorum/recipes/water_crucible/leaves.json
08d92cfb7b7e83651d1bc26d3abbe7340fab511f data/exdeorum/recipes/water_crucible/lily_pad.json
0e8f136f5fa986bc1c73e063cad5377597fc1a6d data/exdeorum/recipes/water_crucible/lily_pad.json
27134a6501957007812b98886e16d22cd8517ee0 data/exdeorum/recipes/water_crucible/melon.json
d9c0f111e2ae9715cd76a9d5f0ceadce72e34c87 data/exdeorum/recipes/water_crucible/melon_slice.json
3252ccfd40508d9b50e881cee8b5e50e1be7ccee data/exdeorum/recipes/water_crucible/moss.json
8e2e91cb5d81688355ef9ad4f1eb859af24973bb data/exdeorum/recipes/water_crucible/moss_carpet.json
4a5b07cf133e13fc6c2c5d3ea56a60b21d836c27 data/exdeorum/recipes/water_crucible/mushrooms.json
b4674be18b463bed47425ea85f4dd992480c2409 data/exdeorum/recipes/water_crucible/potato.json
0505bf31de1c13f3a22ee2cbdd1595bbb4857692 data/exdeorum/recipes/water_crucible/pumpkin.json
8b04ebb043ce62c0f17adf40cb45431f8e54701f data/exdeorum/recipes/water_crucible/saplings.json
8b68ac02a0b642270163f77c7840a50bae0a54a4 data/exdeorum/recipes/water_crucible/seeds_and_spores.json
c3ac3ad583b38351ae54d5fe291506dd87d402ab data/exdeorum/recipes/water_crucible/seagrass.json
a48d1f3abe9bf8607096ee8be1ec70d670dfd8d3 data/exdeorum/recipes/water_crucible/sea_pickle.json
43440237534dba69b9f4d97b84148b0e6f131c61 data/exdeorum/recipes/water_crucible/seeds.json
7668124adff54b4cc345e1338ec90ed8b84662c9 data/exdeorum/recipes/water_crucible/seeds_and_spores.json
dabaaa0c9db5dd4668b528df176606609f45c0ce data/exdeorum/recipes/water_crucible/small_flowers.json
0b210ee847c361d8568e0b581ea1e0dfca16fc6c data/exdeorum/recipes/water_crucible/spore_blossom.json
8198da30f7d529f2350f8e276a7660a15bba0a4f data/exdeorum/recipes/water_crucible/sugar_cane.json
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
8356651dbd67d7c3b820a78d0720afa5a1ee5713 data/exdeorum/recipes/wooden_hammer.json
20b1ab005d3c3d552d4300f53444a931b230cb3b data/exdeorum/recipes/wooden_watering_can.json

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "exdeorum:item/end_cake"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "exdeorum:item/sculk_core"
}
}

View File

@ -0,0 +1,35 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_item": {
"conditions": {
"items": [
{
"items": [
"exdeorum:crushed_end_stone"
]
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "exdeorum:end_cake"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
],
"rewards": {
"recipes": [
"exdeorum:end_cake"
]
},
"sends_telemetry_event": true
}

View File

@ -0,0 +1,35 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_item": {
"conditions": {
"items": [
{
"items": [
"minecraft:echo_shard"
]
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "exdeorum:sculk_core"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
],
"rewards": {
"recipes": [
"exdeorum:sculk_core"
]
},
"sends_telemetry_event": true
}

View File

@ -0,0 +1,7 @@
{
"type": "exdeorum:barrel_compost",
"ingredient": {
"item": "minecraft:bamboo"
},
"volume": 100
}

View File

@ -0,0 +1,7 @@
{
"type": "exdeorum:barrel_compost",
"ingredient": {
"item": "minecraft:cactus"
},
"volume": 125
}

View File

@ -0,0 +1,7 @@
{
"type": "exdeorum:barrel_compost",
"ingredient": {
"item": "minecraft:chorus_flower"
},
"volume": 150
}

View File

@ -0,0 +1,7 @@
{
"type": "exdeorum:barrel_compost",
"ingredient": {
"item": "minecraft:chorus_fruit"
},
"volume": 80
}

View File

@ -0,0 +1,7 @@
{
"type": "exdeorum:barrel_compost",
"ingredient": {
"item": "minecraft:chorus_plant"
},
"volume": 150
}

View File

@ -0,0 +1,7 @@
{
"type": "exdeorum:barrel_compost",
"ingredient": {
"item": "minecraft:dead_bush"
},
"volume": 80
}

View File

@ -8,5 +8,5 @@
"item": "minecraft:dried_kelp"
}
],
"volume": 40
"volume": 80
}

View File

@ -3,5 +3,5 @@
"ingredient": {
"item": "minecraft:rabbit_foot"
},
"volume": 40
"volume": 100
}

View File

@ -0,0 +1,7 @@
{
"type": "exdeorum:barrel_compost",
"ingredient": {
"item": "minecraft:sea_pickle"
},
"volume": 80
}

View File

@ -0,0 +1,7 @@
{
"type": "exdeorum:barrel_compost",
"ingredient": {
"item": "minecraft:spore_blossom"
},
"volume": 125
}

View File

@ -0,0 +1,18 @@
{
"type": "exdeorum:barrel_compost",
"ingredient": [
{
"item": "exdeorum:grass_seeds"
},
{
"item": "exdeorum:mycelium_spores"
},
{
"item": "exdeorum:warped_nylium_spores"
},
{
"item": "exdeorum:crimson_nylium_spores"
}
],
"volume": 80
}

View File

@ -0,0 +1,7 @@
{
"type": "exdeorum:barrel_compost",
"ingredient": {
"item": "minecraft:twisting_vines"
},
"volume": 100
}

View File

@ -0,0 +1,7 @@
{
"type": "exdeorum:barrel_compost",
"ingredient": {
"item": "minecraft:weeping_vines"
},
"volume": 100
}

View File

@ -0,0 +1,27 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"C": {
"item": "exdeorum:crushed_end_stone"
},
"E": {
"tag": "forge:eggs"
},
"P": {
"item": "minecraft:ender_eye"
},
"S": {
"item": "minecraft:sugar"
}
},
"pattern": [
"PPP",
"SES",
"CCC"
],
"result": {
"item": "exdeorum:end_cake"
},
"show_notification": true
}

View File

@ -1,7 +1,7 @@
{
"type": "exdeorum:lava_crucible",
"fluid": {
"Amount": 1000,
"Amount": 500,
"FluidName": "minecraft:lava"
},
"ingredient": {

View File

@ -0,0 +1,21 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"#": {
"item": "minecraft:echo_shard"
},
"O": {
"item": "minecraft:ender_pearl"
}
},
"pattern": [
" # ",
"#O#",
" # "
],
"result": {
"item": "exdeorum:sculk_core"
},
"show_notification": true
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:diamond_mesh",
"result": "minecraft:chorus_flower",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.04
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:diamond_mesh",
"result": "minecraft:chorus_fruit",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.1
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:diamond_mesh",
"result": "minecraft:ender_eye",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.09
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:diamond_mesh",
"result": "minecraft:ender_pearl",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.15
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:flint_mesh",
"result": "minecraft:chorus_flower",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.06
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:flint_mesh",
"result": "minecraft:chorus_fruit",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.11
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:flint_mesh",
"result": "minecraft:ender_eye",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.03
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:flint_mesh",
"result": "minecraft:ender_pearl",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.08
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:golden_mesh",
"result": "minecraft:chorus_flower",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.06
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:golden_mesh",
"result": "minecraft:chorus_fruit",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.12
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:golden_mesh",
"result": "minecraft:ender_eye",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.07
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:golden_mesh",
"result": "minecraft:ender_pearl",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.12
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:iron_mesh",
"result": "minecraft:chorus_flower",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.07
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:iron_mesh",
"result": "minecraft:chorus_fruit",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.13
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:iron_mesh",
"result": "minecraft:ender_eye",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.04
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:iron_mesh",
"result": "minecraft:ender_pearl",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.1
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:netherite_mesh",
"result": "minecraft:chorus_flower",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.04
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:netherite_mesh",
"result": "minecraft:chorus_fruit",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.1
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:netherite_mesh",
"result": "minecraft:echo_shard",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.03
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:netherite_mesh",
"result": "minecraft:ender_eye",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.09
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:netherite_mesh",
"result": "minecraft:ender_pearl",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.17
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:netherite_mesh",
"result": "minecraft:sculk_shrieker",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.01
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:string_mesh",
"result": "minecraft:chorus_flower",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.04
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:string_mesh",
"result": "minecraft:chorus_fruit",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.09
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:string_mesh",
"result": "minecraft:ender_eye",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.02
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "exdeorum:crushed_end_stone"
},
"mesh": "exdeorum:string_mesh",
"result": "minecraft:ender_pearl",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.07
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:moss_block"
},
"mesh": "exdeorum:diamond_mesh",
"result": "minecraft:spore_blossom",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.089999996
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:moss_block"
},
"mesh": "exdeorum:flint_mesh",
"result": "minecraft:spore_blossom",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.044999998
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:moss_block"
},
"mesh": "exdeorum:golden_mesh",
"result": "minecraft:spore_blossom",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.074999996
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:moss_block"
},
"mesh": "exdeorum:iron_mesh",
"result": "minecraft:spore_blossom",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.06
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:moss_block"
},
"mesh": "exdeorum:netherite_mesh",
"result": "minecraft:spore_blossom",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.105
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:moss_block"
},
"mesh": "exdeorum:string_mesh",
"result": "minecraft:spore_blossom",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.03
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:sand"
},
"mesh": "exdeorum:golden_mesh",
"result": "minecraft:coast_armor_trim_smithing_template",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.01
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:sand"
},
"mesh": "exdeorum:golden_mesh",
"result": "minecraft:host_armor_trim_smithing_template",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.01
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:sand"
},
"mesh": "exdeorum:golden_mesh",
"result": "minecraft:raiser_armor_trim_smithing_template",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.01
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:sand"
},
"mesh": "exdeorum:golden_mesh",
"result": "minecraft:shaper_armor_trim_smithing_template",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.01
}
}

View File

@ -0,0 +1,13 @@
{
"type": "exdeorum:sieve",
"ingredient": {
"item": "minecraft:sand"
},
"mesh": "exdeorum:golden_mesh",
"result": "minecraft:wayfinder_armor_trim_smithing_template",
"result_amount": {
"type": "minecraft:binomial",
"n": 1.0,
"p": 0.01
}
}

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 100,
"FluidName": "minecraft:water"
},
"ingredient": {
"item": "minecraft:beetroot"
}
}

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 100,
"FluidName": "minecraft:water"
},
"ingredient": {
"item": "minecraft:carrot"
}
}

View File

@ -0,0 +1,15 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 100,
"FluidName": "minecraft:water"
},
"ingredient": [
{
"item": "minecraft:grass"
},
{
"item": "minecraft:tall_grass"
}
]
}

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 150,
"FluidName": "minecraft:water"
},
"ingredient": {
"item": "minecraft:grass_block"
}
}

View File

@ -1,7 +1,7 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 100,
"Amount": 150,
"FluidName": "minecraft:water"
},
"ingredient": {

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 150,
"FluidName": "minecraft:water"
},
"ingredient": {
"item": "minecraft:moss_block"
}
}

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 100,
"FluidName": "minecraft:water"
},
"ingredient": {
"item": "minecraft:moss_carpet"
}
}

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 100,
"FluidName": "minecraft:water"
},
"ingredient": {
"tag": "forge:mushrooms"
}
}

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 100,
"FluidName": "minecraft:water"
},
"ingredient": {
"item": "minecraft:potato"
}
}

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 200,
"FluidName": "minecraft:water"
},
"ingredient": {
"item": "minecraft:sea_pickle"
}
}

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 100,
"FluidName": "minecraft:water"
},
"ingredient": {
"item": "minecraft:seagrass"
}
}

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 50,
"FluidName": "minecraft:water"
},
"ingredient": {
"tag": "forge:seeds"
}
}

View File

@ -0,0 +1,21 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 50,
"FluidName": "minecraft:water"
},
"ingredient": [
{
"item": "exdeorum:grass_seeds"
},
{
"item": "exdeorum:mycelium_spores"
},
{
"item": "exdeorum:warped_nylium_spores"
},
{
"item": "exdeorum:crimson_nylium_spores"
}
]
}

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 150,
"FluidName": "minecraft:water"
},
"ingredient": {
"item": "minecraft:spore_blossom"
}
}

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 100,
"FluidName": "minecraft:water"
},
"ingredient": {
"item": "minecraft:sugar_cane"
}
}

View File

@ -0,0 +1,10 @@
{
"type": "exdeorum:water_crucible",
"fluid": {
"Amount": 100,
"FluidName": "minecraft:water"
},
"ingredient": {
"item": "minecraft:vine"
}
}

View File

@ -0,0 +1,17 @@
{
"values": [
"minecraft:grass_block",
"minecraft:mycelium",
"minecraft:crimson_fungus",
"minecraft:warped_fungus",
"minecraft:red_mushroom",
"minecraft:brown_mushroom",
"minecraft:cactus",
"minecraft:sugar_cane",
"minecraft:sweet_berry_bush",
"minecraft:cocoa",
"#minecraft:saplings",
"#minecraft:nylium",
"#minecraft:bee_growables"
]
}

View File

@ -0,0 +1,5 @@
{
"values": [
"minecraft:ender_eye"
]
}

View File

@ -0,0 +1,9 @@
{
"values": [
"exdeorum:dust",
"exdeorum:crushed_netherrack",
"exdeorum:crushed_end_stone",
"exdeorum:crushed_deepslate",
"exdeorum:crushed_blackstone"
]
}

View File

@ -37,6 +37,7 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.phys.HitResult;
import net.minecraftforge.fml.loading.FMLEnvironment;
import org.jetbrains.annotations.Nullable;
import thedarkcolour.exdeorum.blockentity.InfestedLeavesBlockEntity;
import thedarkcolour.exdeorum.config.EConfig;
@ -88,6 +89,6 @@ public class InfestedLeavesBlock extends LeavesBlock implements EntityBlock {
@Override
public RenderShape getRenderShape(BlockState pState) {
return EConfig.CLIENT.useFastInfestedLeaves.get() ? RenderShape.MODEL : RenderShape.INVISIBLE;
return EConfig.CLIENT_SPEC.isLoaded() && EConfig.CLIENT.useFastInfestedLeaves.get() ? RenderShape.MODEL : RenderShape.INVISIBLE;
}
}

View File

@ -18,7 +18,6 @@
package thedarkcolour.exdeorum.blockentity;
import com.mojang.serialization.codecs.EitherMapCodec;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
@ -33,6 +32,7 @@ import net.minecraft.world.item.Items;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.SaplingBlock;
import net.minecraft.world.level.block.entity.BlockEntityTicker;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
@ -210,6 +210,19 @@ public abstract class AbstractCrucibleBlockEntity extends EBlockEntity {
overrides.put(EItems.MYCELIUM_SPORES.get(), Blocks.MYCELIUM);
overrides.put(EItems.WARPED_NYLIUM_SPORES.get(), Blocks.WARPED_NYLIUM);
overrides.put(EItems.CRIMSON_NYLIUM_SPORES.get(), Blocks.WARPED_NYLIUM);
for (var sapling : ForgeRegistries.BLOCKS.getEntries()) {
var key = sapling.getKey().location();
if (key.getPath().endsWith("sapling")) {
try {
var item = sapling.getValue().asItem();
ForgeRegistries.BLOCKS.getValue(new ResourceLocation(key.getNamespace(), key.getPath().replace("sapling", "leaves")));
overrides.put(item, Blocks.OAK_LEAVES);
} catch (Exception ignored) {
}
}
}
}
private static class FluidHandler extends FluidTank {

View File

@ -152,7 +152,7 @@ public class CompostColors {
if (!readMods.contains(modid)) {
var id = entry.getKey().location().getPath();
var jarFile = ModList.get().getModFileById(ExDeorum.ID).getFile();
var jarFile = ModList.get().getModFileById(modid).getFile();
var modelPath = jarFile.findResource("assets/" + modid + "/models/item/" + id + ".json");
if (Files.exists(modelPath)) {
@ -180,7 +180,8 @@ public class CompostColors {
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
int pixel = img.getRGB(x, y);if (pixel != 0) {
int pixel = img.getRGB(x, y);
if (pixel != 0) {
totalR += (pixel >> 16) & 0xff;
totalG += (pixel >> 8) & 0xff;
totalB += (pixel) & 0xff;

View File

@ -46,13 +46,10 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.LegacyRandomSource;
import net.minecraft.world.level.material.Fluid;
import net.minecraftforge.client.ChunkRenderTypeSet;
import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions;
import net.minecraftforge.client.model.data.ModelData;
import net.minecraftforge.fml.unsafe.UnsafeHacks;
import net.minecraftforge.registries.ForgeRegistries;
import org.joml.Vector3f;
import sun.misc.Unsafe;
import thedarkcolour.exdeorum.ExDeorum;
import thedarkcolour.exdeorum.client.ter.SieveRenderer;
@ -81,22 +78,16 @@ public class RenderUtil {
@Override
public TextureAtlasSprite load(Block key) {
var registryName = ForgeRegistries.BLOCKS.getKey(key);
var textureLoc = registryName.withPrefix("block/");
var sprite = blockAtlas.getSprite(textureLoc);
var blockLoc = registryName.withPrefix("block/");
var sprite = blockAtlas.getSprite(blockLoc);
// for stuff like azalea bush, retry to get the top texture
if (isMissingTexture(sprite)) {
textureLoc = new ResourceLocation(registryName.getNamespace(), "block/" + registryName.getPath() + "_top");
sprite = blockAtlas.getSprite(textureLoc);
blockLoc = new ResourceLocation(registryName.getNamespace(), "block/" + registryName.getPath() + "_top");
sprite = blockAtlas.getSprite(blockLoc);
}
return sprite;
}
});
// shut up Forge
//var set = UnsafeHacks.newInstance(ChunkRenderTypeSet.class);
//try {
// UnsafeHacks.setField(ChunkRenderTypeSet.class.getDeclaredField("bits"), set, );
//} catch (NoSuchFieldException e) {}
}
public static BakedModel getMimicModel(BlockState state) {
@ -184,4 +175,8 @@ public class RenderUtil {
public static ShaderInstance getRenderTypeTintedCutoutMippedShader() {
return renderTypeTintedCutoutMippedShader;
}
public static int getFluidColor(Fluid fluid, Level level, BlockPos pos) {
return IClientFluidTypeExtensions.of(fluid).getTintColor(fluid.defaultFluidState(), level, pos);
}
}

View File

@ -73,7 +73,7 @@ public class BarrelRenderer implements BlockEntityRenderer<BarrelBlockEntity> {
var pos = barrel.getBlockPos();
var percentage = fluidStack.getAmount() / 1000.0f;
var y = Mth.lerp(percentage, 1.0f, 14.0f) / 16f;
var col = IClientFluidTypeExtensions.of(fluid).getTintColor(fluidStack);
var col = RenderUtil.getFluidColor(fluid, level, pos);
// Split into RGB components
var r = (col >> 16) & 0xff;
var g = (col >> 8) & 0xff;

View File

@ -32,6 +32,9 @@ public class CrucibleRenderer implements BlockEntityRenderer<AbstractCrucibleBlo
@Override
public void render(AbstractCrucibleBlockEntity crucible, float partialTicks, PoseStack stack, MultiBufferSource buffers, int light, int overlay) {
crucible.getCapability(ForgeCapabilities.FLUID_HANDLER).ifPresent(tank -> {
var level = crucible.getLevel();
if (level == null) return;
var fluidStack = tank.getFluidInTank(0);
// These are percentages
@ -39,12 +42,11 @@ public class CrucibleRenderer implements BlockEntityRenderer<AbstractCrucibleBlo
var liquid = (float) fluidStack.getAmount() / (float) tank.getTankCapacity(0);
if (solids != 0 || liquid != 0) {
var level = crucible.getLevel();
var pos = crucible.getBlockPos();
if (liquid != 0) {
var fluid = fluidStack.getFluid();
var color = IClientFluidTypeExtensions.of(fluid).getTintColor(fluid.defaultFluidState(), level, pos);
var color = RenderUtil.getFluidColor(fluid, level, pos);
float y = Mth.lerp(liquid, 4.0f, 14.0f) / 16f;
RenderUtil.renderFlatFluidSprite(buffers, stack, level, pos, y, 2.0f, light, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff, fluid);

View File

@ -0,0 +1,24 @@
/*
* Ex Deorum
* Copyright (c) 2023 thedarkcolour
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package thedarkcolour.exdeorum.compat;
public class ModIds {
public static final String THERMAL_FOUNDATION = "thermalfoundation";
public static final String THE_ONE_PROBE = "theoneprobe";
}

View File

@ -49,8 +49,8 @@ public class BarrelMixingCategory implements IRecipeCategory<BarrelMixingRecipe>
this.slot = helper.getSlotDrawable();
this.plus = plus;
this.arrow = arrow;
this.icon = helper.createDrawableItemStack(new ItemStack(EBlocks.OAK_BARREL.get()));
this.title = Component.literal(TranslationKeys.BARREL_MIXING_CATEGORY_TITLE);
this.icon = helper.createDrawableItemStack(new ItemStack(EBlocks.STONE_BARREL.get()));
this.title = Component.translatable(TranslationKeys.BARREL_MIXING_CATEGORY_TITLE);
}
@Override

View File

@ -50,6 +50,19 @@ public class EConfig {
public final DoubleValue barrelProgressStep;
public final BooleanValue witchWaterNetherrackGenerator;
// todo preferred ores
//public final ConfigValue<ResourceLocation> preferredAluminumOre;
//public final ConfigValue<ResourceLocation> preferredSilverOre;
//public final ConfigValue<ResourceLocation> preferredLeadOre;
//public final ConfigValue<ResourceLocation> preferredNickelOre;
//public final ConfigValue<ResourceLocation> preferredUraniumOre;
//public final ConfigValue<ResourceLocation> preferredOsmiumOre;
//public final ConfigValue<ResourceLocation> preferredTinOre;
//public final ConfigValue<ResourceLocation> preferredZincOre;
//public final ConfigValue<ResourceLocation> preferredCobaltOre;
//public final ConfigValue<ResourceLocation> preferredIridiumOre;
public Server(ForgeConfigSpec.Builder builder) {
builder.comment("Server configuration for Ex Deorum").push("server");
@ -64,11 +77,19 @@ public class EConfig {
.define("simultaneous_sieve_usage", true);
this.barrelProgressStep = builder
.comment("The progress to increment by each tick for barrel composting and witch water transformation.")
.defineInRange("barrel_progress_step", 0.004f, 0.0f, 1.0f);
.defineInRange("barrel_progress_step", 0.004, 0.0f, 1.0f);
this.witchWaterNetherrackGenerator = builder
.comment("Whether Witch Water forms netherrack when lava flows into it, allowing for a netherrack version of a cobblestone generator.")
.define("witch_water_netherrack_generator", true);
// Preferred ore items
//builder.push("preferred_tag_items");
//this.preferredTinOre = builder
// .comment("The ID of the item to use for Ex Deorum recipes that craft into tin ore.")
// .define("preferred_tin_ore", (ResourceLocation) null);
//builder.pop();
builder.pop();
}
}

View File

@ -26,22 +26,29 @@ import net.minecraft.tags.FluidTags;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import net.minecraft.world.level.levelgen.structure.BuiltinStructureSets;
import net.minecraft.world.level.levelgen.structure.StructureSet;
import net.minecraft.world.level.material.Fluid;
import net.minecraftforge.common.Tags;
import thedarkcolour.exdeorum.ExDeorum;
import thedarkcolour.exdeorum.block.EBlock;
import thedarkcolour.exdeorum.registry.EBlocks;
import thedarkcolour.exdeorum.registry.EFluids;
import thedarkcolour.exdeorum.registry.EItems;
import thedarkcolour.exdeorum.tag.EBlockTags;
import thedarkcolour.exdeorum.tag.EItemTags;
import thedarkcolour.exdeorum.tag.EStructureSetTags;
import thedarkcolour.modkit.data.MKTagsProvider;
class ModTags {
public static void createBlockTags(MKTagsProvider<Block> tags) {
tags.tag(EBlockTags.WATERING_CAN_TICKABLE).add(Blocks.GRASS_BLOCK, Blocks.MYCELIUM, Blocks.CRIMSON_FUNGUS, Blocks.WARPED_FUNGUS, Blocks.RED_MUSHROOM, Blocks.BROWN_MUSHROOM, Blocks.CACTUS, Blocks.SUGAR_CANE, Blocks.SWEET_BERRY_BUSH, Blocks.COCOA).addTags(BlockTags.SAPLINGS, BlockTags.NYLIUM, BlockTags.BEE_GROWABLES);
tags.tag(BlockTags.MINEABLE_WITH_AXE).add(EBlocks.OAK_BARREL.get(), EBlocks.SPRUCE_BARREL.get(), EBlocks.BIRCH_BARREL.get(), EBlocks.JUNGLE_BARREL.get(), EBlocks.ACACIA_BARREL.get(), EBlocks.DARK_OAK_BARREL.get(), EBlocks.MANGROVE_BARREL.get(), EBlocks.CHERRY_BARREL.get(), EBlocks.BAMBOO_BARREL.get(), EBlocks.CRIMSON_BARREL.get(), EBlocks.WARPED_BARREL.get(), EBlocks.OAK_SIEVE.get(), EBlocks.SPRUCE_SIEVE.get(), EBlocks.BIRCH_SIEVE.get(), EBlocks.JUNGLE_SIEVE.get(), EBlocks.ACACIA_SIEVE.get(), EBlocks.DARK_OAK_SIEVE.get(), EBlocks.MANGROVE_SIEVE.get(), EBlocks.CHERRY_SIEVE.get(), EBlocks.BAMBOO_SIEVE.get(), EBlocks.CRIMSON_SIEVE.get(), EBlocks.WARPED_SIEVE.get(), EBlocks.WARPED_CRUCIBLE.get(), EBlocks.CRIMSON_CRUCIBLE.get(), EBlocks.OAK_CRUCIBLE.get(), EBlocks.SPRUCE_CRUCIBLE.get(), EBlocks.BIRCH_CRUCIBLE.get(), EBlocks.JUNGLE_CRUCIBLE.get(), EBlocks.ACACIA_CRUCIBLE.get(), EBlocks.DARK_OAK_CRUCIBLE.get(), EBlocks.MANGROVE_CRUCIBLE.get(), EBlocks.CHERRY_CRUCIBLE.get(), EBlocks.BAMBOO_CRUCIBLE.get());
tags.tag(BlockTags.MINEABLE_WITH_PICKAXE).add(EBlocks.STONE_BARREL, EBlocks.PORCELAIN_CRUCIBLE, EBlocks.UNFIRED_PORCELAIN_CRUCIBLE);
tags.tag(BlockTags.MINEABLE_WITH_SHOVEL).add(EBlocks.DUST, EBlocks.CRUSHED_NETHERRACK, EBlocks.CRUSHED_END_STONE, EBlocks.CRUSHED_DEEPSLATE, EBlocks.CRUSHED_BLACKSTONE);
tags.tag(BlockTags.MINEABLE_WITH_HOE).add(EBlocks.INFESTED_LEAVES);
tags.tag(BlockTags.LEAVES).add(EBlocks.INFESTED_LEAVES);
}

View File

@ -838,6 +838,7 @@ class Recipes {
addDrop.accept(Items.GLOW_BERRIES, chance(0.04f + j * 0.075f));
addDrop.accept(Items.SMALL_DRIPLEAF, chance(0.07f + j * 0.025f));
addDrop.accept(Items.BIG_DRIPLEAF, chance(0.05f + j * 0.02f));
addDrop.accept(Items.SPORE_BLOSSOM, chance(0.03f + j * 0.015f));
});
}
forMesh(writer, ingredient(Items.MOSS_BLOCK), EItems.FLINT_MESH, addDrop -> {
@ -864,27 +865,34 @@ class Recipes {
lavaCrucible(writer, "cobblestone", ingredient(Tags.Items.COBBLESTONE), 250);
lavaCrucible(writer, "stone", ingredient(Tags.Items.STONE), 250);
lavaCrucible(writer, "gravel", ingredient(Tags.Items.GRAVEL), 250);
lavaCrucible(writer, "netherrack", ingredient(Tags.Items.NETHERRACK), 1000);
waterCrucible(writer, "sweet_berries", ingredient(Items.SWEET_BERRIES, Items.GLOW_BERRIES), 50);
waterCrucible(writer, "melon_slice", ingredient(Items.MELON_SLICE), 50);
lavaCrucible(writer, "netherrack", ingredient(Tags.Items.NETHERRACK), 500);
waterCrucible(writer, "saplings", ingredient(ItemTags.SAPLINGS), 100);
waterCrucible(writer, "leaves", ingredient(ItemTags.LEAVES), 250);
waterCrucible(writer, "small_flowers", ingredient(ItemTags.SMALL_FLOWERS), 100);
waterCrucible(writer, "apple", ingredient(Items.APPLE), 100);
waterCrucible(writer, "tall_flowers", ingredient(ItemTags.TALL_FLOWERS), 200);
waterCrucible(writer, "mushrooms", ingredient(Tags.Items.MUSHROOMS), 100);
waterCrucible(writer, "lily_pad", ingredient(Items.LILY_PAD), 150);
waterCrucible(writer, "sugar_cane", ingredient(Items.SUGAR_CANE), 100);
waterCrucible(writer, "vine", ingredient(Items.VINE), 100);
waterCrucible(writer, "seeds_and_spores", SPORES_AND_SEEDS, 50);
waterCrucible(writer, "seeds", ingredient(Tags.Items.SEEDS), 50);
waterCrucible(writer, "grass", ingredient(Items.GRASS, Items.TALL_GRASS), 100);
waterCrucible(writer, "grass_block", ingredient(Items.GRASS_BLOCK), 150);
waterCrucible(writer, "sweet_berries", ingredient(Items.SWEET_BERRIES, Items.GLOW_BERRIES), 50);
waterCrucible(writer, "melon_slice", ingredient(Items.MELON_SLICE), 50);
waterCrucible(writer, "potato", ingredient(Items.POTATO), 100);
waterCrucible(writer, "carrot", ingredient(Items.CARROT), 100);
waterCrucible(writer, "beetroot", ingredient(Items.BEETROOT), 100);
waterCrucible(writer, "apple", ingredient(Items.APPLE), 100);
waterCrucible(writer, "cactus", ingredient(Items.CACTUS), 250);
waterCrucible(writer, "pumpkin", ingredient(Items.PUMPKIN), 250);
waterCrucible(writer, "melon", ingredient(Items.MELON), 250);
waterCrucible(writer, "leaves", ingredient(ItemTags.LEAVES), 250);
waterCrucible(writer, "lily_pad", ingredient(Items.LILY_PAD), 100);
waterCrucible(writer, "seagrass", ingredient(Items.SEAGRASS), 100);
waterCrucible(writer, "sea_pickle", ingredient(Items.SEA_PICKLE), 200);
waterCrucible(writer, "moss", ingredient(Items.MOSS_BLOCK), 150);
waterCrucible(writer, "moss_carpet", ingredient(Items.MOSS_CARPET), 100);
waterCrucible(writer, "seeds_and_spores", SPORES_AND_SEEDS, 100);
waterCrucible(writer, "spore_blossom", ingredient(Items.SPORE_BLOSSOM), 150);
}
private static void lavaCrucible(Consumer<FinishedRecipe> writer, String id, Ingredient ingredient, int volume) {
@ -961,12 +969,23 @@ class Recipes {
barrelCompost(writer, "moss_block", ingredient(Items.MOSS_BLOCK), 150);
barrelCompost(writer, "moss_carpet", ingredient(Items.MOSS_CARPET), 100);
barrelCompost(writer, "spores_and_seeds", SPORES_AND_SEEDS, 80);
barrelCompost(writer, "bamboo", ingredient(Items.BAMBOO), 100);
barrelCompost(writer, "cactus", ingredient(Items.CACTUS), 125);
barrelCompost(writer, "dead_bush", ingredient(Items.DEAD_BUSH), 80);
barrelCompost(writer, "chorus_flower", ingredient(Items.CHORUS_FLOWER), 150);
barrelCompost(writer, "chorus_fruit", ingredient(Items.CHORUS_FRUIT), 80);
barrelCompost(writer, "chorus_plant", ingredient(Items.CHORUS_PLANT), 150);
barrelCompost(writer, "kelp", ingredient(Items.KELP, Items.DRIED_KELP), 80);
barrelCompost(writer, "sea_pickle", ingredient(Items.SEA_PICKLE), 80);
barrelCompost(writer, "spore_blossom", ingredient(Items.SPORE_BLOSSOM), 125);
barrelCompost(writer, "weeping_vines", ingredient(Items.WEEPING_VINES), 100);
barrelCompost(writer, "twisting_vines", ingredient(Items.TWISTING_VINES), 100);
// flesh
barrelCompost(writer, "rotten_flesh", ingredient(Items.ROTTEN_FLESH), 100);
barrelCompost(writer, "spider_eye", ingredient(Items.SPIDER_EYE), 80);
barrelCompost(writer, "fermented_spider_eye", ingredient(Items.FERMENTED_SPIDER_EYE), 100);
barrelCompost(writer, "string", ingredient(Items.STRING), 40);
barrelCompost(writer, "rabbit_foot", ingredient(Items.RABBIT_FOOT), 40);
barrelCompost(writer, "rabbit_foot", ingredient(Items.RABBIT_FOOT), 100);
// meats
barrelCompost(writer, "pork", ingredient(Items.PORKCHOP, Items.COOKED_PORKCHOP), 150);
barrelCompost(writer, "beef", ingredient(Items.BEEF, Items.COOKED_BEEF), 150);
@ -980,7 +999,6 @@ class Recipes {
barrelCompost(writer, "egg", ingredient(Items.EGG), 100);
// foods
barrelCompost(writer, "melon_slice", ingredient(Items.MELON_SLICE), 40);
barrelCompost(writer, "kelp", ingredient(Items.KELP, Items.DRIED_KELP), 40);
barrelCompost(writer, "silk_worms", ingredient(EItems.SILK_WORM.get(), EItems.COOKED_SILK_WORM.get()), 40);
barrelCompost(writer, "apple", ingredient(Items.APPLE), 100);
barrelCompost(writer, "cookie", ingredient(Items.COOKIE), 100);

View File

@ -42,13 +42,13 @@ import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.AddReloadListenerEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.event.level.LevelEvent;
import net.minecraftforge.eventbus.api.Event;
import net.minecraftforge.fluids.FluidInteractionRegistry;
import net.minecraftforge.fml.InterModComms;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import thedarkcolour.exdeorum.ExDeorum;
import thedarkcolour.exdeorum.compat.ModIds;
import thedarkcolour.exdeorum.config.EConfig;
import thedarkcolour.exdeorum.item.WateringCanItem;
import thedarkcolour.exdeorum.recipe.RecipeUtil;
@ -114,7 +114,7 @@ public final class EventHandler {
private static void onCommonSetup(FMLCommonSetupEvent event) {
event.enqueueWork(() -> {
FluidInteractionRegistry.addInteraction(ForgeMod.LAVA_TYPE.get(), new FluidInteractionRegistry.InteractionInformation(
ForgeMod.WATER_TYPE.get(),
EFluids.WITCH_WATER_TYPE.get(),
fluidState -> fluidState.isSource() ? Blocks.OBSIDIAN.defaultBlockState() : (EConfig.SERVER.witchWaterNetherrackGenerator.get() ? Blocks.NETHERRACK.defaultBlockState() : Blocks.COBBLESTONE.defaultBlockState())
));
});
@ -125,19 +125,17 @@ public final class EventHandler {
if (player.serverLevel().getChunkSource().getGenerator() instanceof VoidChunkGenerator) {
NetworkHandler.sendVoidWorld(player);
var advancement = player.server.getAdvancements().getAdvancement(new ResourceLocation(ExDeorum.ID, "core/root"));
if (advancement != null) {
player.getAdvancements().award(advancement, "in_void_world");
} else {
ExDeorum.LOGGER.error("Unable to grant player the Void World advancement. Ex Nihilo Reborn advancements will not show");
}
if (player.getStats().getValue(Stats.CUSTOM.get(Stats.DEATHS)) == 0 && player.tickCount == 0) {
if (advancement != null && !player.getAdvancements().getOrStartProgress(advancement).isDone()) {
player.getAdvancements().award(advancement, "in_void_world");
if (EConfig.SERVER.startingTorch.get()) {
player.getInventory().add(new ItemStack(Items.TORCH));
}
if (EConfig.SERVER.startingWateringCan.get()) {
player.getInventory().add(WateringCanItem.getFull(EItems.WOODEN_WATERING_CAN));
}
} else {
ExDeorum.LOGGER.error("Unable to grant player the Void World advancement. Ex Nihilo Reborn advancements will not show");
}
}
}
@ -145,7 +143,7 @@ public final class EventHandler {
// Send messages to other mods
public static void interModEnqueue(InterModEnqueueEvent event) {
InterModComms.sendTo("theoneprobe", "getTheOneProbe", ExDeorumTopCompat::new);
InterModComms.sendTo(ModIds.THE_ONE_PROBE, "getTheOneProbe", ExDeorumTopCompat::new);
}
private static void addReloadListeners(AddReloadListenerEvent event) {

View File

@ -49,11 +49,14 @@ public class SculkCoreItem extends Item {
}
level.setBlock(pos, state.setValue(SculkShriekerBlock.CAN_SUMMON, true), 3);
} else {
var rand = level.random;
for (int i = 0; i < 10; i++) {
int j = i * 36;
double radians = Math.toRadians(j);
level.addParticle(ParticleTypes.PORTAL, pos.getX() + 0.5, pos.getY() + 0.5625, pos.getZ() + 0.5,
Math.cos(radians) * 0.15, 0.15, Math.sin(radians) * 0.15);
for (int k = 0; k < 3; k++) {
level.addParticle(ParticleTypes.PORTAL, pos.getX() + 0.5 + 0.3 * (-0.5 + rand.nextFloat()), pos.getY() + 0.5625, pos.getZ() + 0.5 + 0.3 * (-0.5 + rand.nextFloat()),
Math.cos(radians) * 0.15, 0.15, Math.sin(radians) * 0.15);
}
}
}
level.playSound(null, pos, SoundEvents.SCULK_SHRIEKER_SHRIEK, SoundSource.BLOCKS, 1.0f, 1.0f);

View File

@ -47,6 +47,7 @@ import net.minecraft.world.level.block.BucketPickup;
import net.minecraft.world.level.block.FarmBlock;
import net.minecraft.world.level.block.LevelEvent;
import net.minecraft.world.level.block.SpreadingSnowyDirtBlock;
import net.minecraft.world.level.block.SugarCaneBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.phys.BlockHitResult;
@ -61,7 +62,9 @@ import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import thedarkcolour.exdeorum.blockentity.BarrelBlockEntity;
import thedarkcolour.exdeorum.data.TranslationKeys;
import thedarkcolour.exdeorum.tag.EBlockTags;
import java.util.List;
import java.util.function.Consumer;
@ -222,17 +225,29 @@ public class WateringCanItem extends Item {
}
protected void tryWatering(ServerLevel level, BlockPos pos, BlockState state) {
if (state.is(BlockTags.SAPLINGS)) {
if (level.random.nextInt(3) == 0) {
if (state.is(EBlockTags.WATERING_CAN_TICKABLE)) {
if (state.is(BlockTags.SAPLINGS)) {
if (level.random.nextInt(3) == 0) {
state.randomTick(level, pos, level.random);
level.levelEvent(LevelEvent.PARTICLES_AND_SOUND_PLANT_GROWTH, pos, 0);
}
} else if (state.getBlock() instanceof SugarCaneBlock block) {
var cursor = pos.mutable();
while (level.isInWorldBounds(cursor.move(0, 1, 0)) && level.getBlockState(cursor).getBlock() == block) {
// just keep looping
}
// randomTick only works on the top sugarcane block
var topState = level.getBlockState(cursor.move(0, -1, 0));
topState.randomTick(level, cursor, level.random);
} else {
state.randomTick(level, pos, level.random);
level.levelEvent(LevelEvent.PARTICLES_AND_SOUND_PLANT_GROWTH, pos, 0);
}
} else if (state.is(BlockTags.CROPS) || state.getBlock() instanceof SpreadingSnowyDirtBlock) {
state.randomTick(level, pos, level.random);
} else if (state.getBlock() == Blocks.LAVA) {
level.levelEvent(LevelEvent.LAVA_FIZZ, pos, 0);
} else if (state.getBlock() == Blocks.FARMLAND) {
hydrateFarmland(level, pos, state);
} else {
if (BarrelBlockEntity.isHotFluid(state.getFluidState().getFluidType())) {
level.levelEvent(LevelEvent.LAVA_FIZZ, pos, 0);
} else if (state.getBlock() == Blocks.FARMLAND) {
hydrateFarmland(level, pos, state);
}
}
var below = pos.below();
var belowState = level.getBlockState(below);

View File

@ -0,0 +1,104 @@
/*
* Ex Deorum
* Copyright (c) 2023 thedarkcolour
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package thedarkcolour.exdeorum.recipe;
import com.google.gson.JsonObject;
import net.minecraft.core.RegistryAccess;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.TagKey;
import net.minecraft.world.Container;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.Level;
import org.apache.http.impl.client.StandardHttpRequestRetryHandler;
import org.jetbrains.annotations.Nullable;
import thedarkcolour.exdeorum.registry.ERecipeSerializers;
import thedarkcolour.exdeorum.registry.ERecipeTypes;
@SuppressWarnings({"rawtypes", "unchecked"})
public class TagResultRecipe implements Recipe<Container> {
private final ResourceLocation id;
private final Recipe<Container> wrapped;
private final TagKey<Item> result;
public TagResultRecipe(ResourceLocation id, Recipe wrapped, TagKey<Item> result) {
this.id = id;
this.wrapped = wrapped;
this.result = result;
}
@Override
public boolean matches(Container container, Level level) {
return this.wrapped.matches(container, level);
}
@Override
public ItemStack assemble(Container container, RegistryAccess access) {
access.registryOrThrow(Registries.ITEM).getTag(result);
throw new UnsupportedOperationException("TagResultRecipe#assemble");
}
@Override
public boolean canCraftInDimensions(int width, int height) {
return this.wrapped.canCraftInDimensions(width, height);
}
@Override
public ItemStack getResultItem(RegistryAccess access) {
throw new UnsupportedOperationException("TagResultRecipe#getResultItem");
}
@Override
public ResourceLocation getId() {
return this.id;
}
@Override
public RecipeSerializer<?> getSerializer() {
return ERecipeSerializers.TAG_RESULT.get();
}
@Override
public RecipeType<?> getType() {
return ERecipeTypes.TAG_RESULT.get();
}
public static class Serializer implements RecipeSerializer<TagResultRecipe> {
@Override
public TagResultRecipe fromJson(ResourceLocation id, JsonObject json) {
return null;
}
@Override
public @Nullable TagResultRecipe fromNetwork(ResourceLocation id, FriendlyByteBuf buffer) {
return null;
}
@Override
public void toNetwork(FriendlyByteBuf buffer, TagResultRecipe recipe) {
((RecipeSerializer) recipe.wrapped.getSerializer()).toNetwork(buffer, recipe.wrapped);
//buffer.writeResourceLocation(recipe.tag.location());
}
}
}

View File

@ -21,9 +21,11 @@ package thedarkcolour.exdeorum.registry;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.FallingBlock;
import net.minecraft.world.level.block.LiquidBlock;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.material.MapColor;
import net.minecraft.world.level.material.PushReaction;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
@ -43,11 +45,11 @@ public class EBlocks {
public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, ExDeorum.ID);
// Materials
public static final RegistryObject<Block> DUST = BLOCKS.register("dust", () -> new Block(of().sound(SoundType.SAND).strength(0.4f)));
public static final RegistryObject<Block> CRUSHED_NETHERRACK = BLOCKS.register("crushed_netherrack", () -> new Block(of().mapColor(MapColor.NETHER).sound(SoundType.SAND).strength(0.6f)));
public static final RegistryObject<Block> CRUSHED_END_STONE = BLOCKS.register("crushed_end_stone", () -> new Block(of().mapColor(MapColor.SAND).sound(SoundType.SAND).strength(0.6f)));
public static final RegistryObject<Block> CRUSHED_DEEPSLATE = BLOCKS.register("crushed_deepslate", () -> new Block(of().mapColor(DyeColor.GRAY).sound(SoundType.SAND).strength(0.8f)));
public static final RegistryObject<Block> CRUSHED_BLACKSTONE = BLOCKS.register("crushed_blackstone", () -> new Block(of().mapColor(DyeColor.BLACK).sound(SoundType.SAND).strength(0.6f)));
public static final RegistryObject<Block> DUST = BLOCKS.register("dust", () -> new FallingBlock(of().sound(SoundType.SAND).strength(0.4f)));
public static final RegistryObject<Block> CRUSHED_NETHERRACK = BLOCKS.register("crushed_netherrack", () -> new FallingBlock(of().mapColor(MapColor.NETHER).sound(SoundType.SAND).strength(0.6f)));
public static final RegistryObject<Block> CRUSHED_END_STONE = BLOCKS.register("crushed_end_stone", () -> new FallingBlock(of().mapColor(MapColor.SAND).sound(SoundType.SAND).strength(0.6f)));
public static final RegistryObject<Block> CRUSHED_DEEPSLATE = BLOCKS.register("crushed_deepslate", () -> new FallingBlock(of().mapColor(DyeColor.GRAY).sound(SoundType.SAND).strength(0.8f)));
public static final RegistryObject<Block> CRUSHED_BLACKSTONE = BLOCKS.register("crushed_blackstone", () -> new FallingBlock(of().mapColor(DyeColor.BLACK).sound(SoundType.SAND).strength(0.6f)));
// Barrels
public static final RegistryObject<BarrelBlock> OAK_BARREL = registerBarrel("oak_barrel", false, false, MapColor.WOOD);
@ -96,15 +98,17 @@ public class EBlocks {
// Misc
public static final RegistryObject<InfestedLeavesBlock> INFESTED_LEAVES = BLOCKS.register("infested_leaves", () -> new InfestedLeavesBlock(copy(Blocks.OAK_LEAVES)));
public static final RegistryObject<LiquidBlock> WITCH_WATER = BLOCKS.register("witch_water", () -> new LiquidBlock(EFluids.WITCH_WATER, copy(Blocks.WATER).mapColor(MapColor.COLOR_PURPLE)));
public static final RegistryObject<EndCakeBlock> END_CAKE = BLOCKS.register("end_cake", () -> new EndCakeBlock(of().noLootTable().mapColor(MapColor.COLOR_BLACK)));
public static final RegistryObject<EndCakeBlock> END_CAKE = BLOCKS.register("end_cake", () -> new EndCakeBlock(of().noLootTable().mapColor(MapColor.COLOR_BLACK).forceSolidOn().strength(0.5F).sound(SoundType.WOOL).pushReaction(PushReaction.BLOCK)));
public static RegistryObject<SieveBlock> registerSieve(String name) {
return BLOCKS.register(name, () -> new SieveBlock(of().strength(2.0f).noOcclusion().sound(SoundType.WOOD)));
var bamboo = name.equals("bamboo_sieve");
return BLOCKS.register(name, () -> new SieveBlock(of().strength(2.0f).noOcclusion().sound(bamboo ? SoundType.BAMBOO_WOOD : SoundType.WOOD)));
}
public static RegistryObject<BarrelBlock> registerBarrel(String name, boolean stone, boolean fireproof, MapColor color) {
var bamboo = name.equals("bamboo_barrel");
return BLOCKS.register(name, () -> {
var props = of().noOcclusion().strength(stone ? 4.0f : 2.0f).sound(stone ? SoundType.STONE : SoundType.WOOD);
var props = of().noOcclusion().strength(stone ? 4.0f : 2.0f).sound(stone ? SoundType.STONE : (bamboo ? SoundType.BAMBOO_WOOD : SoundType.WOOD));
if (!stone) {
if (!fireproof) {
props.ignitedByLava();
@ -128,6 +132,7 @@ public class EBlocks {
}
public static RegistryObject<WaterCrucibleBlock> registerWaterCrucible(String name) {
return BLOCKS.register(name, () -> new WaterCrucibleBlock(of().strength(1.5f).sound(SoundType.WOOD)));
var bamboo = name.equals("bamboo_crucible");
return BLOCKS.register(name, () -> new WaterCrucibleBlock(of().strength(1.5f).sound(bamboo ? SoundType.BAMBOO_WOOD : SoundType.WOOD)));
}
}

View File

@ -23,6 +23,7 @@ import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import thedarkcolour.exdeorum.ExDeorum;
import thedarkcolour.exdeorum.recipe.TagResultRecipe;
import thedarkcolour.exdeorum.recipe.barrel.BarrelCompostRecipe;
import thedarkcolour.exdeorum.recipe.barrel.BarrelMixingRecipe;
import thedarkcolour.exdeorum.recipe.crucible.CrucibleRecipe;
@ -41,4 +42,6 @@ public class ERecipeSerializers {
public static final RegistryObject<RecipeSerializer<CrucibleRecipe>> WATER_CRUCIBLE = RECIPE_SERIALIZERS.register("water_crucible", () -> new CrucibleRecipe.Serializer(ERecipeTypes.WATER_CRUCIBLE.get()));
public static final RegistryObject<RecipeSerializer<SieveRecipe>> SIEVE = RECIPE_SERIALIZERS.register("sieve", SieveRecipe.Serializer::new);
public static final RegistryObject<RecipeSerializer<TagResultRecipe>> TAG_RESULT = RECIPE_SERIALIZERS.register("tag_result", TagResultRecipe.Serializer::new);
}

View File

@ -23,11 +23,13 @@ import net.minecraft.world.item.crafting.RecipeType;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;
import thedarkcolour.exdeorum.ExDeorum;
import thedarkcolour.exdeorum.recipe.TagResultRecipe;
import thedarkcolour.exdeorum.recipe.barrel.BarrelCompostRecipe;
import thedarkcolour.exdeorum.recipe.barrel.BarrelMixingRecipe;
import thedarkcolour.exdeorum.recipe.crucible.CrucibleRecipe;
import thedarkcolour.exdeorum.recipe.hammer.HammerRecipe;
import thedarkcolour.exdeorum.recipe.sieve.SieveRecipe;
import thedarkcolour.exdeorum.voidworld.VoidChunkGenerator;
public class ERecipeTypes {
public static final DeferredRegister<RecipeType<?>> RECIPE_TYPES = DeferredRegister.create(Registries.RECIPE_TYPE, ExDeorum.ID);
@ -41,4 +43,5 @@ public class ERecipeTypes {
public static final RegistryObject<RecipeType<HammerRecipe>> HAMMER = RECIPE_TYPES.register("hammer", () -> RecipeType.simple(ERecipeTypes.HAMMER.getId()));
public static final RegistryObject<RecipeType<SieveRecipe>> SIEVE = RECIPE_TYPES.register("sieve", () -> RecipeType.simple(ERecipeTypes.SIEVE.getId()));
public static final RegistryObject<RecipeType<TagResultRecipe>> TAG_RESULT = RECIPE_TYPES.register("tag_result", () -> RecipeType.simple(ERecipeTypes.TAG_RESULT.getId()));
}

View File

@ -0,0 +1,33 @@
/*
* Ex Deorum
* Copyright (c) 2023 thedarkcolour
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package thedarkcolour.exdeorum.tag;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.TagKey;
import net.minecraft.world.level.block.Block;
import thedarkcolour.exdeorum.ExDeorum;
public class EBlockTags {
public static final TagKey<Block> WATERING_CAN_TICKABLE = tag("watering_can_tickable");
public static TagKey<Block> tag(String name) {
return BlockTags.create(new ResourceLocation(ExDeorum.ID, name));
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

View File

@ -46,5 +46,6 @@ class RecipeUtilTest {
assertFalse(RecipeUtil.areIngredientsEqual(Ingredient.of(Tags.Items.INGOTS_IRON), Ingredient.of(Tags.Items.GEMS_DIAMOND)));
assertTrue(RecipeUtil.areIngredientsEqual(Ingredient.of(Items.OAK_SLAB, Items.SPRUCE_SLAB), Ingredient.of(Items.OAK_SLAB, Items.SPRUCE_SLAB)));
assertTrue(RecipeUtil.areIngredientsEqual(Ingredient.of(Items.OAK_SLAB, Items.SPRUCE_SLAB), Ingredient.of(Items.SPRUCE_SLAB, Items.OAK_SLAB)));
assertFalse(RecipeUtil.areIngredientsEqual(Ingredient.of(Items.OAK_SLAB, Items.SPRUCE_SLAB), Ingredient.of(Items.SPRUCE_SLAB, Items.OAK_SLAB, Items.OAK_SLAB)));
}
}