mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-14 20:23:42 +01:00
Dyed toolbox fixes
- Add in-world toolbox dyeing - Fix toolbox dyeing recipe not keeping stack NBT - Fix toolbox handle rendering on solid layer - Fix shadows for items on belts - Clean up other in-world dyeing and dyed block code
This commit is contained in:
parent
2db2892033
commit
fd1990f732
82 changed files with 365 additions and 1816 deletions
|
@ -1879,41 +1879,10 @@ f2dc28c600011e6e8e515cb4d56118b1bd45b743 data/create/advancements/recipes/create
|
|||
dd487f98c411f1ff22cb7fc208b8cc24b27deb2f data/create/advancements/recipes/create.base/crafting/appliances/dough.json
|
||||
911159091a9674c36e8cd49f56f63e5442988e84 data/create/advancements/recipes/create.base/crafting/appliances/linked_controller.json
|
||||
51cdcf168087f47e4458eed7543d227da1ee5ca0 data/create/advancements/recipes/create.base/crafting/appliances/tree_fertilizer.json
|
||||
d06d9445256ae19d0a8a37e97983b168fd4d774e data/create/advancements/recipes/create.base/crafting/curiosities/black_toolbox_from_main_toolbox.json
|
||||
343846c20104684b3a948e5c3a9948dd30839808 data/create/advancements/recipes/create.base/crafting/curiosities/black_toolbox_from_other_toolbox.json
|
||||
acdf76187497b3101e9ec6101e2164e11277a68a data/create/advancements/recipes/create.base/crafting/curiosities/blue_toolbox_from_main_toolbox.json
|
||||
3a8b083c1f4c67feade27a877e774f435b8e58da data/create/advancements/recipes/create.base/crafting/curiosities/blue_toolbox_from_other_toolbox.json
|
||||
bb138bedd2aec741fa54b6b52be384fdbd741249 data/create/advancements/recipes/create.base/crafting/curiosities/brown_toolbox.json
|
||||
502e8ea5b0f9cc0ca90a1018d907ffe6f3b051a3 data/create/advancements/recipes/create.base/crafting/curiosities/brown_toolbox_from_other_toolbox.json
|
||||
f2afe58a26566aac8abce76f0ab6d0924c5badb6 data/create/advancements/recipes/create.base/crafting/curiosities/cyan_toolbox_from_main_toolbox.json
|
||||
dea244d3f78e4aaf13132d48dcf071e5046bf154 data/create/advancements/recipes/create.base/crafting/curiosities/cyan_toolbox_from_other_toolbox.json
|
||||
e28c741eed426658edda99c52eeacb4ccdcac0c2 data/create/advancements/recipes/create.base/crafting/curiosities/gray_toolbox_from_main_toolbox.json
|
||||
b8df907dc00d4c28e74ba59faf9d66765ea43a6f data/create/advancements/recipes/create.base/crafting/curiosities/gray_toolbox_from_other_toolbox.json
|
||||
ecd1f21c20804cbe65e7ace983d9a78c5003e8c0 data/create/advancements/recipes/create.base/crafting/curiosities/green_toolbox_from_main_toolbox.json
|
||||
7969a391535586641e8da6ae6cd6d0eff2090369 data/create/advancements/recipes/create.base/crafting/curiosities/green_toolbox_from_other_toolbox.json
|
||||
f174c871c7a4e8403bbf17c0e13572dc6cb31f90 data/create/advancements/recipes/create.base/crafting/curiosities/light_blue_toolbox_from_main_toolbox.json
|
||||
b65a5e3f181c7ae5b63f89a51a40ad4d5d01827b data/create/advancements/recipes/create.base/crafting/curiosities/light_blue_toolbox_from_other_toolbox.json
|
||||
d89ac200d23375a24cd62847e2be3108738ec948 data/create/advancements/recipes/create.base/crafting/curiosities/light_gray_toolbox_from_main_toolbox.json
|
||||
2809c5b8f3d51b3319ae514006ec8baf38c7a8c2 data/create/advancements/recipes/create.base/crafting/curiosities/light_gray_toolbox_from_other_toolbox.json
|
||||
152eacfd9d34c377d7380663542c22cea88b92ca data/create/advancements/recipes/create.base/crafting/curiosities/lime_toolbox_from_main_toolbox.json
|
||||
acc82b0304550c4a0f8247c12b9fe92465ceee8b data/create/advancements/recipes/create.base/crafting/curiosities/lime_toolbox_from_other_toolbox.json
|
||||
e89c8d11f098150a87e4724943269f421b3d63f0 data/create/advancements/recipes/create.base/crafting/curiosities/magenta_toolbox_from_main_toolbox.json
|
||||
357899f0b14102faf4fff8bf290f854c2af38ba4 data/create/advancements/recipes/create.base/crafting/curiosities/magenta_toolbox_from_other_toolbox.json
|
||||
d531f87f425d199aee4777a588c1cd6cab6f5173 data/create/advancements/recipes/create.base/crafting/curiosities/minecart_coupling.json
|
||||
7736bf31def6c117a92cfdc7ff007e51f10a7fa7 data/create/advancements/recipes/create.base/crafting/curiosities/orange_toolbox_from_main_toolbox.json
|
||||
6eb8ae16950fb299f0762b20badac6beb88b9482 data/create/advancements/recipes/create.base/crafting/curiosities/orange_toolbox_from_other_toolbox.json
|
||||
a8c72e7e02fd0843d33fa4c5d43de81f29bc3aa4 data/create/advancements/recipes/create.base/crafting/curiosities/peculiar_bell.json
|
||||
8d9894f687a21da528a3065ee1041ff1cccb3428 data/create/advancements/recipes/create.base/crafting/curiosities/pink_toolbox_from_main_toolbox.json
|
||||
988ece3fc6f3257826f16107b995c5649b2e4e85 data/create/advancements/recipes/create.base/crafting/curiosities/pink_toolbox_from_other_toolbox.json
|
||||
c645dd051a8d06fdb2d09083ba632c44b7794e9e data/create/advancements/recipes/create.base/crafting/curiosities/purple_toolbox_from_main_toolbox.json
|
||||
2a4d5fa85d0c306791c67f283c4298200f2a6cd8 data/create/advancements/recipes/create.base/crafting/curiosities/purple_toolbox_from_other_toolbox.json
|
||||
0567ca2d349306df05adaebe3e056fc4f75e287f data/create/advancements/recipes/create.base/crafting/curiosities/red_toolbox_from_main_toolbox.json
|
||||
c71be67bfa6fac32be60424049cb221e10840016 data/create/advancements/recipes/create.base/crafting/curiosities/red_toolbox_from_other_toolbox.json
|
||||
2eef3201017af03f6a2f0f015645e3ff5e25d9c1 data/create/advancements/recipes/create.base/crafting/curiosities/wand_of_symmetry.json
|
||||
bb1650d8a9a5877bf64964a2d92f8a93364637f4 data/create/advancements/recipes/create.base/crafting/curiosities/white_toolbox_from_main_toolbox.json
|
||||
514974b3b902a910358453b10619cbc1ac13476d data/create/advancements/recipes/create.base/crafting/curiosities/white_toolbox_from_other_toolbox.json
|
||||
13180b17064fedda97cfaa18e4158e2bfcd6b332 data/create/advancements/recipes/create.base/crafting/curiosities/yellow_toolbox_from_main_toolbox.json
|
||||
8ab0365e0aa21ecd1a671d7c0b8717626951e2cb data/create/advancements/recipes/create.base/crafting/curiosities/yellow_toolbox_from_other_toolbox.json
|
||||
80155fa8e28e7de87adad3dc2cd79564496d7ef7 data/create/advancements/recipes/create.base/crafting/kinetics/adjustable_chain_gearshift.json
|
||||
92416ced6ede6965fd728e1c7336bb05a3e41ea2 data/create/advancements/recipes/create.base/crafting/kinetics/analog_lever.json
|
||||
3e9753006da898d4569bbeabf95997e8c90847c8 data/create/advancements/recipes/create.base/crafting/kinetics/attribute_filter.json
|
||||
|
@ -3029,41 +2998,11 @@ c077375d16b4505e52548613fbc9356993556e6b data/create/recipes/crafting/appliances
|
|||
75cdbd88973a8ca943ebe890153b01a344b96b01 data/create/recipes/crafting/appliances/linked_controller.json
|
||||
7b5f863dda3d05a79cb85943a178eba0bd8a7dc7 data/create/recipes/crafting/appliances/slime_ball.json
|
||||
b159ba84428eee6ef6e23df1766f2a18f2c8a63e data/create/recipes/crafting/appliances/tree_fertilizer.json
|
||||
0de0507bc9bb44271b21a64cceb7cd94f7dbe61d data/create/recipes/crafting/curiosities/black_toolbox_from_main_toolbox.json
|
||||
e89b2dd52cfe2d4d723f49aeec8f4f8c37a82dca data/create/recipes/crafting/curiosities/black_toolbox_from_other_toolbox.json
|
||||
5588aa83b6fbb2ee3dc01e95b3261ccc38e40ad1 data/create/recipes/crafting/curiosities/blue_toolbox_from_main_toolbox.json
|
||||
19c9fe34e311e7a11114acc10cc3777fc95ed3ab data/create/recipes/crafting/curiosities/blue_toolbox_from_other_toolbox.json
|
||||
4754ca20a7efdf382f32be150f38bdf4e8183fc4 data/create/recipes/crafting/curiosities/brown_toolbox.json
|
||||
14a85c9011a6ca667ac83e95dd7e8eabfac4a4c5 data/create/recipes/crafting/curiosities/brown_toolbox_from_other_toolbox.json
|
||||
39e6d65af1c8ca0dec19e5b15a2f0e28e69542eb data/create/recipes/crafting/curiosities/cyan_toolbox_from_main_toolbox.json
|
||||
39e055d841536e691c798acc09145f821eeb32ae data/create/recipes/crafting/curiosities/cyan_toolbox_from_other_toolbox.json
|
||||
567a09f08bbbd5fd8eb34555bb9e62e7066c8c93 data/create/recipes/crafting/curiosities/gray_toolbox_from_main_toolbox.json
|
||||
f6ee1a69e32851487a753a27290c7fee163de87f data/create/recipes/crafting/curiosities/gray_toolbox_from_other_toolbox.json
|
||||
5e0e201caff1f11092c8dc5a524bab00dec52848 data/create/recipes/crafting/curiosities/green_toolbox_from_main_toolbox.json
|
||||
9c9d9e1c9a0b76561b2fd97fe5a9adc7660935af data/create/recipes/crafting/curiosities/green_toolbox_from_other_toolbox.json
|
||||
3750f44691883b644ce80b869f69785a151c63ce data/create/recipes/crafting/curiosities/light_blue_toolbox_from_main_toolbox.json
|
||||
3511ddf935de95789db27cd546b51835051b0612 data/create/recipes/crafting/curiosities/light_blue_toolbox_from_other_toolbox.json
|
||||
6f6e22a1d7d27098dfa15cdd7a9dc841116dd085 data/create/recipes/crafting/curiosities/light_gray_toolbox_from_main_toolbox.json
|
||||
b2d9ddb013d550f335c28a64360aad5a2c9ef109 data/create/recipes/crafting/curiosities/light_gray_toolbox_from_other_toolbox.json
|
||||
0b55ab5174983f503355c52e6bff1cfb199d833b data/create/recipes/crafting/curiosities/lime_toolbox_from_main_toolbox.json
|
||||
8e50132d045351427ad33aec3463437f93024970 data/create/recipes/crafting/curiosities/lime_toolbox_from_other_toolbox.json
|
||||
8912a48550b1e763a75eb8db0412d39992350cde data/create/recipes/crafting/curiosities/magenta_toolbox_from_main_toolbox.json
|
||||
53fa044e156eae089c3bdd037b168169f3dedde8 data/create/recipes/crafting/curiosities/magenta_toolbox_from_other_toolbox.json
|
||||
660e92da2b1b6698b1c0df74bd74a56a25fb3eca data/create/recipes/crafting/curiosities/minecart_coupling.json
|
||||
0639c9c090321f4f95576df3b79f73138dd47b37 data/create/recipes/crafting/curiosities/orange_toolbox_from_main_toolbox.json
|
||||
8ff510405b3890f3de0f1f11b733f081a2abafaf data/create/recipes/crafting/curiosities/orange_toolbox_from_other_toolbox.json
|
||||
1f8f96ab57363166b7e132a1dd082001a5a0d5f0 data/create/recipes/crafting/curiosities/peculiar_bell.json
|
||||
a47f561abcf3521f1407101c37e13e5a888403be data/create/recipes/crafting/curiosities/pink_toolbox_from_main_toolbox.json
|
||||
84a4f2a38a73aa704a6eadfa6e30942ceace60c6 data/create/recipes/crafting/curiosities/pink_toolbox_from_other_toolbox.json
|
||||
4f158ed3edf7451d1c2aa7d50efbbc58a4d5b7d0 data/create/recipes/crafting/curiosities/purple_toolbox_from_main_toolbox.json
|
||||
46d792a2e1252b42b4c7975a8c76c9b818cdfafe data/create/recipes/crafting/curiosities/purple_toolbox_from_other_toolbox.json
|
||||
9f0adcbf9abe39cb8ae9dfc4ea02953f8103acc9 data/create/recipes/crafting/curiosities/red_toolbox_from_main_toolbox.json
|
||||
574f0198e7f0c683ae96221ec69d3a88c39f10e6 data/create/recipes/crafting/curiosities/red_toolbox_from_other_toolbox.json
|
||||
07b3ca3a3e44ee1f76c69132ffa6556e027e5b0e data/create/recipes/crafting/curiosities/toolbox_dyeing.json
|
||||
fcbc04d0a7eaf820a74bc7e4736a4a581e0a9dff data/create/recipes/crafting/curiosities/wand_of_symmetry.json
|
||||
ef8e81e889747a35669ccd5851e43d0349225115 data/create/recipes/crafting/curiosities/white_toolbox_from_main_toolbox.json
|
||||
3222feaa77a392b45da97a410e268641998864c6 data/create/recipes/crafting/curiosities/white_toolbox_from_other_toolbox.json
|
||||
71272236f542469e82b92f5208122b18f72f365d data/create/recipes/crafting/curiosities/yellow_toolbox_from_main_toolbox.json
|
||||
56e3950037a751edd931942ccc52563228680cb2 data/create/recipes/crafting/curiosities/yellow_toolbox_from_other_toolbox.json
|
||||
cc56d21a25286a9024e506dde9fa161230eaf46d data/create/recipes/crafting/kinetics/adjustable_chain_gearshift.json
|
||||
88de51b451469698665b7319e5b9cfb9a87ae3e0 data/create/recipes/crafting/kinetics/analog_lever.json
|
||||
cf1f3a6306d47025cebe153cf05949ef69ccbe5a data/create/recipes/crafting/kinetics/attribute_filter.json
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/black_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/black_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/black_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/black_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/blue_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/blue_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/blue_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/blue_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/brown_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/brown_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/cyan_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/cyan_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/cyan_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/cyan_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/gray_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/gray_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/gray_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/gray_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/green_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/green_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/green_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/green_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/light_blue_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/light_blue_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/light_blue_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/light_blue_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/light_gray_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/light_gray_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/light_gray_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/light_gray_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/lime_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/lime_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/lime_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/lime_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/magenta_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/magenta_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/magenta_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/magenta_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/orange_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/orange_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/orange_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/orange_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/pink_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/pink_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/pink_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/pink_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/purple_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/purple_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/purple_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/purple_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/red_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/red_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/red_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/red_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/white_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/white_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/white_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/white_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/yellow_toolbox_from_main_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/yellow_toolbox_from_main_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/curiosities/yellow_toolbox_from_other_toolbox"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_toolbox": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/curiosities/yellow_toolbox_from_other_toolbox"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_toolbox",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/black"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:black_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/black"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:black_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/blue"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:blue_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/blue"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:blue_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/brown"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/cyan"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:cyan_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/cyan"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:cyan_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/gray"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:gray_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/gray"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:gray_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/green"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:green_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/green"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:green_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/light_blue"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:light_blue_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/light_blue"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:light_blue_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/light_gray"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:light_gray_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/light_gray"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:light_gray_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/lime"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:lime_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/lime"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:lime_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/magenta"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:magenta_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/magenta"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:magenta_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/orange"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:orange_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/orange"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:orange_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/pink"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:pink_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/pink"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:pink_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/purple"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:purple_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/purple"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:purple_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/red"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:red_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/red"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:red_toolbox"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"type": "create:toolbox_dyeing"
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/white"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:white_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/white"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:white_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/yellow"
|
||||
},
|
||||
"-": {
|
||||
"item": "create:brown_toolbox"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:yellow_toolbox"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"#",
|
||||
"-"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:dyes/yellow"
|
||||
},
|
||||
"-": {
|
||||
"tag": "create:toolboxes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:yellow_toolbox"
|
||||
}
|
||||
}
|
|
@ -643,12 +643,12 @@ public class AllBlocks {
|
|||
|
||||
public static final DyedBlockList<ValveHandleBlock> DYED_VALVE_HANDLES = new DyedBlockList<>(colour -> {
|
||||
String colourName = colour.getSerializedName();
|
||||
return REGISTRATE.block(colourName + "_valve_handle", ValveHandleBlock::dyed)
|
||||
return REGISTRATE.block(colourName + "_valve_handle", p -> ValveHandleBlock.dyed(p, colour))
|
||||
.transform(BuilderTransformers.valveHandle(colour))
|
||||
.recipe((c, p) -> ShapedRecipeBuilder.shaped(c.get())
|
||||
.pattern("#")
|
||||
.pattern("-")
|
||||
.define('#', DyeHelper.getTagOfDye(colour))
|
||||
.define('#', colour.getTag())
|
||||
.define('-', AllItemTags.VALVE_HANDLES.tag)
|
||||
.unlockedBy("has_valve", RegistrateRecipeProvider.hasItem(AllItemTags.VALVE_HANDLES.tag))
|
||||
.save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_valve_handle")))
|
||||
|
@ -975,7 +975,7 @@ public class AllBlocks {
|
|||
public static final DyedBlockList<SeatBlock> SEATS = new DyedBlockList<>(colour -> {
|
||||
String colourName = colour.getSerializedName();
|
||||
SeatMovementBehaviour movementBehaviour = new SeatMovementBehaviour();
|
||||
return REGISTRATE.block(colourName + "_seat", p -> new SeatBlock(p, colour == DyeColor.RED))
|
||||
return REGISTRATE.block(colourName + "_seat", p -> new SeatBlock(p, colour, colour == DyeColor.RED))
|
||||
.initialProperties(SharedProperties::wooden)
|
||||
.onRegister(addMovementBehaviour(movementBehaviour))
|
||||
.blockstate((c, p) -> {
|
||||
|
@ -995,7 +995,7 @@ public class AllBlocks {
|
|||
ShapedRecipeBuilder.shaped(c.get())
|
||||
.pattern("#")
|
||||
.pattern("-")
|
||||
.define('#', DyeHelper.getTagOfDye(colour))
|
||||
.define('#', colour.getTag())
|
||||
.define('-', AllItemTags.SEATS.tag)
|
||||
.unlockedBy("has_seat", RegistrateRecipeProvider.hasItem(AllItemTags.SEATS.tag))
|
||||
.save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_seat"));
|
||||
|
@ -1017,7 +1017,7 @@ public class AllBlocks {
|
|||
.simpleItem()
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<SailBlock> SAIL = REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p))
|
||||
public static final BlockEntry<SailBlock> SAIL = REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p, DyeColor.WHITE))
|
||||
.initialProperties(SharedProperties::wooden)
|
||||
.properties(AbstractBlock.Properties::noOcclusion)
|
||||
.blockstate(BlockStateGen.directionalBlockProvider(false))
|
||||
|
@ -1030,7 +1030,7 @@ public class AllBlocks {
|
|||
return SAIL;
|
||||
}
|
||||
String colourName = colour.getSerializedName();
|
||||
return REGISTRATE.block(colourName + "_sail", p -> SailBlock.withCanvas(p))
|
||||
return REGISTRATE.block(colourName + "_sail", p -> SailBlock.withCanvas(p, colour))
|
||||
.properties(AbstractBlock.Properties::noOcclusion)
|
||||
.initialProperties(SharedProperties::wooden)
|
||||
.blockstate((c, p) -> p.directionalBlock(c.get(), p.models()
|
||||
|
@ -1372,23 +1372,6 @@ public class AllBlocks {
|
|||
.withExistingParent(colourName + "_toolbox", p.modLoc("block/toolbox/block"))
|
||||
.texture("0", p.modLoc("block/toolbox/" + colourName)));
|
||||
})
|
||||
.recipe((c, p) -> {
|
||||
ShapedRecipeBuilder.shaped(c.get())
|
||||
.pattern("#")
|
||||
.pattern("-")
|
||||
.define('#', DyeHelper.getTagOfDye(colour))
|
||||
.define('-', AllItemTags.TOOLBOXES.tag)
|
||||
.unlockedBy("has_toolbox", RegistrateRecipeProvider.hasItem(AllItemTags.TOOLBOXES.tag))
|
||||
.save(p, Create.asResource("crafting/curiosities/" + c.getName() + "_from_other_toolbox"));
|
||||
if (colour != DyeColor.BROWN)
|
||||
ShapedRecipeBuilder.shaped(c.get())
|
||||
.pattern("#")
|
||||
.pattern("-")
|
||||
.define('#', DyeHelper.getTagOfDye(colour))
|
||||
.define('-', ToolboxBlock.getMainBox())
|
||||
.unlockedBy("has_toolbox", RegistrateRecipeProvider.hasItem(AllItemTags.TOOLBOXES.tag))
|
||||
.save(p, Create.asResource("crafting/curiosities/" + c.getName() + "_from_main_toolbox"));
|
||||
})
|
||||
.onRegisterAfter(Item.class, v -> TooltipHelper.referTo(v, "block.create.toolbox"))
|
||||
.tag(AllBlockTags.TOOLBOXES.tag)
|
||||
.item()
|
||||
|
|
|
@ -19,6 +19,7 @@ import com.simibubi.create.content.contraptions.processing.BasinRecipe;
|
|||
import com.simibubi.create.content.contraptions.processing.EmptyingRecipe;
|
||||
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeFactory;
|
||||
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSerializer;
|
||||
import com.simibubi.create.content.curiosities.toolbox.ToolboxDyeingRecipe;
|
||||
import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo;
|
||||
|
@ -28,6 +29,7 @@ import net.minecraft.item.crafting.IRecipe;
|
|||
import net.minecraft.item.crafting.IRecipeSerializer;
|
||||
import net.minecraft.item.crafting.IRecipeType;
|
||||
import net.minecraft.item.crafting.ShapedRecipe;
|
||||
import net.minecraft.item.crafting.SpecialRecipeSerializer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.world.World;
|
||||
|
@ -35,7 +37,6 @@ import net.minecraftforge.event.RegistryEvent;
|
|||
|
||||
public enum AllRecipeTypes implements IRecipeTypeInfo {
|
||||
|
||||
MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new),
|
||||
CONVERSION(ConversionRecipe::new),
|
||||
CRUSHING(CrushingRecipe::new),
|
||||
CUTTING(CuttingRecipe::new),
|
||||
|
@ -49,8 +50,12 @@ public enum AllRecipeTypes implements IRecipeTypeInfo {
|
|||
DEPLOYING(DeployerApplicationRecipe::new),
|
||||
FILLING(FillingRecipe::new),
|
||||
EMPTYING(EmptyingRecipe::new),
|
||||
|
||||
MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new),
|
||||
SEQUENCED_ASSEMBLY(SequencedAssemblyRecipeSerializer::new),
|
||||
|
||||
TOOLBOX_DYEING(() -> new SpecialRecipeSerializer<>(ToolboxDyeingRecipe::new), IRecipeType.CRAFTING);
|
||||
|
||||
;
|
||||
|
||||
private ResourceLocation id;
|
||||
|
|
|
@ -7,12 +7,11 @@ import javax.annotation.ParametersAreNonnullByDefault;
|
|||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.foundation.utility.DyeHelper;
|
||||
import com.simibubi.create.foundation.utility.BlockHelper;
|
||||
|
||||
import mcp.MethodsReturnNonnullByDefault;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.entity.MobEntity;
|
||||
|
@ -37,10 +36,12 @@ import net.minecraft.world.World;
|
|||
@MethodsReturnNonnullByDefault
|
||||
public class SeatBlock extends Block {
|
||||
|
||||
private final boolean inCreativeTab;
|
||||
protected final DyeColor color;
|
||||
protected final boolean inCreativeTab;
|
||||
|
||||
public SeatBlock(Properties p_i48440_1_, boolean inCreativeTab) {
|
||||
super(p_i48440_1_);
|
||||
public SeatBlock(Properties properties, DyeColor color, boolean inCreativeTab) {
|
||||
super(properties);
|
||||
this.color = color;
|
||||
this.inCreativeTab = inCreativeTab;
|
||||
}
|
||||
|
||||
|
@ -60,7 +61,7 @@ public class SeatBlock extends Block {
|
|||
public void updateEntityAfterFallOn(IBlockReader reader, Entity entity) {
|
||||
BlockPos pos = entity.blockPosition();
|
||||
if (entity instanceof PlayerEntity || !(entity instanceof LivingEntity) || !canBePickedUp(entity) || isSeatOccupied(entity.level, pos)) {
|
||||
Blocks.PINK_BED.updateEntityAfterFallOn(reader, entity);
|
||||
super.updateEntityAfterFallOn(reader, entity);
|
||||
return;
|
||||
}
|
||||
if (reader.getBlockState(pos)
|
||||
|
@ -94,17 +95,13 @@ public class SeatBlock extends Block {
|
|||
return ActionResultType.PASS;
|
||||
|
||||
ItemStack heldItem = player.getItemInHand(hand);
|
||||
for (DyeColor color : DyeColor.values()) {
|
||||
if (!heldItem.getItem()
|
||||
.is(DyeHelper.getTagOfDye(color)))
|
||||
continue;
|
||||
DyeColor color = DyeColor.getColor(heldItem);
|
||||
if (color != null && color != this.color) {
|
||||
if (world.isClientSide)
|
||||
return ActionResultType.SUCCESS;
|
||||
|
||||
BlockState newState = AllBlocks.SEATS.get(color).getDefaultState();
|
||||
if (newState != state)
|
||||
world.setBlockAndUpdate(pos, newState);
|
||||
return ActionResultType.SUCCESS;
|
||||
BlockState newState = BlockHelper.copyProperties(state, AllBlocks.SEATS.get(color).getDefaultState());
|
||||
world.setBlockAndUpdate(pos, newState);
|
||||
return ActionResultType.sidedSuccess(world.isClientSide);
|
||||
}
|
||||
|
||||
List<SeatEntity> seats = world.getEntitiesOfClass(SeatEntity.class, new AxisAlignedBB(pos));
|
||||
|
@ -144,6 +141,10 @@ public class SeatBlock extends Block {
|
|||
entity.startRiding(seat, true);
|
||||
}
|
||||
|
||||
public DyeColor getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPathfindable(BlockState state, IBlockReader reader, BlockPos pos, PathType type) {
|
||||
return false;
|
||||
|
|
|
@ -4,7 +4,7 @@ import javax.annotation.ParametersAreNonnullByDefault;
|
|||
|
||||
import com.jozufozu.flywheel.core.PartialModel;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.foundation.utility.DyeHelper;
|
||||
import com.simibubi.create.foundation.utility.BlockHelper;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
|
@ -22,41 +22,38 @@ import net.minecraftforge.api.distmarker.OnlyIn;
|
|||
|
||||
@ParametersAreNonnullByDefault
|
||||
public class ValveHandleBlock extends HandCrankBlock {
|
||||
|
||||
private final DyeColor color;
|
||||
private final boolean inCreativeTab;
|
||||
|
||||
public static ValveHandleBlock copper(Properties properties) {
|
||||
return new ValveHandleBlock(properties, true);
|
||||
return new ValveHandleBlock(properties, null, true);
|
||||
}
|
||||
|
||||
public static ValveHandleBlock dyed(Properties properties) {
|
||||
return new ValveHandleBlock(properties, false);
|
||||
public static ValveHandleBlock dyed(Properties properties, DyeColor color) {
|
||||
return new ValveHandleBlock(properties, color, false);
|
||||
}
|
||||
|
||||
private ValveHandleBlock(Properties properties, boolean inCreativeTab) {
|
||||
private ValveHandleBlock(Properties properties, DyeColor color, boolean inCreativeTab) {
|
||||
super(properties);
|
||||
this.color = color;
|
||||
this.inCreativeTab = inCreativeTab;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResultType use(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn,
|
||||
public ActionResultType use(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand,
|
||||
BlockRayTraceResult hit) {
|
||||
ItemStack heldItem = player.getItemInHand(handIn);
|
||||
for (DyeColor color : DyeColor.values()) {
|
||||
if (!heldItem.getItem()
|
||||
.is(DyeHelper.getTagOfDye(color)))
|
||||
continue;
|
||||
if (worldIn.isClientSide)
|
||||
ItemStack heldItem = player.getItemInHand(hand);
|
||||
DyeColor color = DyeColor.getColor(heldItem);
|
||||
if (color != null && color != this.color) {
|
||||
if (world.isClientSide)
|
||||
return ActionResultType.SUCCESS;
|
||||
|
||||
BlockState newState = AllBlocks.DYED_VALVE_HANDLES.get(color)
|
||||
.getDefaultState()
|
||||
.setValue(FACING, state.getValue(FACING));
|
||||
if (newState != state)
|
||||
worldIn.setBlockAndUpdate(pos, newState);
|
||||
BlockState newState = BlockHelper.copyProperties(state, AllBlocks.DYED_VALVE_HANDLES.get(color).getDefaultState());
|
||||
world.setBlockAndUpdate(pos, newState);
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
|
||||
return super.use(state, worldIn, pos, player, handIn, hit);
|
||||
return super.use(state, world, pos, player, hand, hit);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -11,7 +11,7 @@ import javax.annotation.Nullable;
|
|||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
||||
import com.simibubi.create.foundation.utility.DyeHelper;
|
||||
import com.simibubi.create.foundation.utility.BlockHelper;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.placement.IPlacementHelper;
|
||||
import com.simibubi.create.foundation.utility.placement.PlacementHelpers;
|
||||
|
@ -44,20 +44,22 @@ import net.minecraft.world.World;
|
|||
public class SailBlock extends WrenchableDirectionalBlock {
|
||||
|
||||
public static SailBlock frame(Properties properties) {
|
||||
return new SailBlock(properties, true);
|
||||
return new SailBlock(properties, true, null);
|
||||
}
|
||||
|
||||
public static SailBlock withCanvas(Properties properties) {
|
||||
return new SailBlock(properties, false);
|
||||
public static SailBlock withCanvas(Properties properties, DyeColor color) {
|
||||
return new SailBlock(properties, false, color);
|
||||
}
|
||||
|
||||
private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper());
|
||||
|
||||
private final boolean frame;
|
||||
protected final boolean frame;
|
||||
protected final DyeColor color;
|
||||
|
||||
protected SailBlock(Properties p_i48415_1_, boolean frame) {
|
||||
super(p_i48415_1_);
|
||||
protected SailBlock(Properties properties, boolean frame, DyeColor color) {
|
||||
super(properties);
|
||||
this.frame = frame;
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -83,10 +85,8 @@ public class SailBlock extends WrenchableDirectionalBlock {
|
|||
if (frame)
|
||||
return ActionResultType.PASS;
|
||||
|
||||
for (DyeColor color : DyeColor.values()) {
|
||||
if (!heldItem.getItem()
|
||||
.is(DyeHelper.getTagOfDye(color)))
|
||||
continue;
|
||||
DyeColor color = DyeColor.getColor(heldItem);
|
||||
if (color != null && color != this.color) {
|
||||
if (!world.isClientSide)
|
||||
applyDye(state, world, pos, color);
|
||||
return ActionResultType.SUCCESS;
|
||||
|
@ -97,8 +97,8 @@ public class SailBlock extends WrenchableDirectionalBlock {
|
|||
|
||||
protected void applyDye(BlockState state, World world, BlockPos pos, @Nullable DyeColor color) {
|
||||
BlockState newState =
|
||||
(color == null ? AllBlocks.SAIL_FRAME : AllBlocks.DYED_SAILS.get(color)).getDefaultState()
|
||||
.setValue(FACING, state.getValue(FACING));
|
||||
(color == null ? AllBlocks.SAIL_FRAME : AllBlocks.DYED_SAILS.get(color)).getDefaultState();
|
||||
newState = BlockHelper.copyProperties(state, newState);
|
||||
|
||||
// Dye the block itself
|
||||
if (state != newState) {
|
||||
|
@ -202,6 +202,14 @@ public class SailBlock extends WrenchableDirectionalBlock {
|
|||
return false;
|
||||
}
|
||||
|
||||
public boolean isFrame() {
|
||||
return frame;
|
||||
}
|
||||
|
||||
public DyeColor getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
@MethodsReturnNonnullByDefault
|
||||
private static class PlacementHelper implements IPlacementHelper {
|
||||
@Override
|
||||
|
|
|
@ -28,10 +28,10 @@ import net.minecraft.block.BlockState;
|
|||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.ItemRenderer;
|
||||
import net.minecraft.client.renderer.LightTexture;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||
import net.minecraft.client.settings.GraphicsFanciness;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.item.DyeColor;
|
||||
import net.minecraft.util.Direction;
|
||||
|
@ -189,7 +189,7 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
|
|||
Vector3i directionVec = beltFacing
|
||||
.getNormal();
|
||||
Vector3d beltStartOffset = Vector3d.atLowerCornerOf(directionVec).scale(-.5)
|
||||
.add(.5, 13 / 16f + .125f, .5);
|
||||
.add(.5, 15 / 16f, .5);
|
||||
ms.translate(beltStartOffset.x, beltStartOffset.y, beltStartOffset.z);
|
||||
BeltSlope slope = te.getBlockState()
|
||||
.getValue(BeltBlock.SLOPE);
|
||||
|
@ -204,22 +204,26 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
|
|||
ms.pushPose();
|
||||
MatrixTransformStack.of(ms)
|
||||
.nudge(transported.angle);
|
||||
float offset = MathHelper.lerp(partialTicks, transported.prevBeltPosition, transported.beltPosition);
|
||||
float sideOffset = MathHelper.lerp(partialTicks, transported.prevSideOffset, transported.sideOffset);
|
||||
float verticalMovement = verticality;
|
||||
|
||||
float offset;
|
||||
float sideOffset;
|
||||
float verticalMovement;
|
||||
|
||||
if (te.getSpeed() == 0) {
|
||||
offset = transported.beltPosition;
|
||||
sideOffset = transported.sideOffset;
|
||||
} else {
|
||||
offset = MathHelper.lerp(partialTicks, transported.prevBeltPosition, transported.beltPosition);
|
||||
sideOffset = MathHelper.lerp(partialTicks, transported.prevSideOffset, transported.sideOffset);
|
||||
}
|
||||
|
||||
int stackLight = onContraption ? light : getPackedLight(te, offset);
|
||||
|
||||
if (offset < .5)
|
||||
verticalMovement = 0;
|
||||
verticalMovement = verticalMovement * (Math.min(offset, te.beltLength - .5f) - .5f);
|
||||
Vector3d offsetVec = Vector3d.atLowerCornerOf(directionVec).scale(offset)
|
||||
.add(0, verticalMovement, 0);
|
||||
else
|
||||
verticalMovement = verticality * (Math.min(offset, te.beltLength - .5f) - .5f);
|
||||
Vector3d offsetVec = Vector3d.atLowerCornerOf(directionVec).scale(offset);
|
||||
if (verticalMovement != 0)
|
||||
offsetVec = offsetVec.add(0, verticalMovement, 0);
|
||||
boolean onSlope =
|
||||
slope != BeltSlope.HORIZONTAL && MathHelper.clamp(offset, .5f, te.beltLength - .5f) == offset;
|
||||
boolean tiltForward = (slope == BeltSlope.DOWNWARD ^ beltFacing
|
||||
|
@ -236,6 +240,7 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
|
|||
sideOffset *= -1;
|
||||
ms.translate(alongX ? sideOffset : 0, 0, alongX ? 0 : sideOffset);
|
||||
|
||||
int stackLight = onContraption ? light : getPackedLight(te, offset);
|
||||
ItemRenderer itemRenderer = Minecraft.getInstance()
|
||||
.getItemRenderer();
|
||||
boolean renderUpright = BeltHelper.isItemUpright(transported.stack);
|
||||
|
@ -244,29 +249,34 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
|
|||
int count = (int) (MathHelper.log2((int) (transported.stack.getCount()))) / 2;
|
||||
Random r = new Random(transported.angle);
|
||||
|
||||
if (Minecraft.getInstance().options.graphicsMode == GraphicsFanciness.FANCY) {
|
||||
Vector3d shadowPos = Vector3d.atLowerCornerOf(te.getBlockPos()).add(beltStartOffset.scale(1)
|
||||
.add(offsetVec)
|
||||
.add(alongX ? sideOffset : 0, .39, alongX ? 0 : sideOffset));
|
||||
ShadowRenderHelper.renderShadow(ms, buffer, shadowPos, .75f, blockItem ? .2f : .2f);
|
||||
boolean slopeShadowOnly = renderUpright && onSlope;
|
||||
float slopeOffset = 1 / 8f;
|
||||
if (slopeShadowOnly)
|
||||
ms.pushPose();
|
||||
if (!renderUpright || slopeShadowOnly)
|
||||
ms.mulPose(new Vector3f(slopeAlongX ? 0 : 1, 0, slopeAlongX ? 1 : 0).rotationDegrees(slopeAngle));
|
||||
if (onSlope)
|
||||
ms.translate(0, slopeOffset, 0);
|
||||
ms.pushPose();
|
||||
ms.translate(0, -1 / 8f + 0.005f, 0);
|
||||
ShadowRenderHelper.renderShadow(ms, buffer, .75f, .2f);
|
||||
ms.popPose();
|
||||
if (slopeShadowOnly) {
|
||||
ms.popPose();
|
||||
ms.translate(0, slopeOffset, 0);
|
||||
}
|
||||
|
||||
|
||||
if (renderUpright) {
|
||||
Entity renderViewEntity = Minecraft.getInstance().cameraEntity;
|
||||
if (renderViewEntity != null) {
|
||||
Vector3d positionVec = renderViewEntity.position();
|
||||
Vector3d vectorForOffset = BeltHelper.getVectorForOffset(te, offset);
|
||||
Vector3d diff = vectorForOffset.subtract(positionVec);
|
||||
float yRot = (float) MathHelper.atan2(diff.z, -diff.x);
|
||||
ms.mulPose(Vector3f.YP.rotation((float) (yRot + Math.PI / 2)));
|
||||
float yRot = (float) (MathHelper.atan2(diff.x, diff.z) + Math.PI);
|
||||
ms.mulPose(Vector3f.YP.rotation(yRot));
|
||||
}
|
||||
ms.translate(0, 3 / 32d, 1 / 16f);
|
||||
}
|
||||
if (!renderUpright)
|
||||
ms.mulPose(new Vector3f(slopeAlongX ? 0 : 1, 0, slopeAlongX ? 1 : 0).rotationDegrees(slopeAngle));
|
||||
|
||||
if (onSlope)
|
||||
ms.translate(0, 1 / 8f, 0);
|
||||
|
||||
for (int i = 0; i <= count; i++) {
|
||||
ms.pushPose();
|
||||
|
@ -282,7 +292,7 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
|
|||
}
|
||||
|
||||
ms.scale(.5f, .5f, .5f);
|
||||
itemRenderer.renderStatic(transported.stack, TransformType.FIXED, stackLight, overlay, ms, buffer);
|
||||
itemRenderer.renderStatic(null, transported.stack, TransformType.FIXED, false, ms, buffer, te.getLevel(), stackLight, overlay);
|
||||
ms.popPose();
|
||||
|
||||
if (!renderUpright) {
|
||||
|
@ -304,6 +314,7 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
|
|||
if (controller.light == null || segment >= controller.light.length || segment < 0)
|
||||
return 0;
|
||||
|
||||
return (controller.light[segment + 1] << 20) | (controller.light[segment] << 4);
|
||||
return LightTexture.pack(controller.light[segment], controller.light[segment + 1]);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import com.simibubi.create.AllBlocks;
|
|||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
import com.simibubi.create.foundation.utility.BlockHelper;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
|
@ -44,12 +45,12 @@ import net.minecraftforge.fml.network.NetworkHooks;
|
|||
|
||||
public class ToolboxBlock extends HorizontalBlock implements IWaterLoggable, ITE<ToolboxTileEntity> {
|
||||
|
||||
private final DyeColor color;
|
||||
protected final DyeColor color;
|
||||
|
||||
public ToolboxBlock(Properties p_i48440_1_, DyeColor color) {
|
||||
super(p_i48440_1_);
|
||||
public ToolboxBlock(Properties properties, DyeColor color) {
|
||||
super(properties);
|
||||
this.color = color;
|
||||
registerDefaultState(super.defaultBlockState().setValue(WATERLOGGED, false));
|
||||
registerDefaultState(defaultBlockState().setValue(WATERLOGGED, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -87,7 +88,7 @@ public class ToolboxBlock extends HorizontalBlock implements IWaterLoggable, ITE
|
|||
|
||||
@Override
|
||||
public void onRemove(BlockState state, World world, BlockPos pos, BlockState newState, boolean moving) {
|
||||
if (state.hasTileEntity() && (!state.is(newState.getBlock()) || !newState.hasTileEntity()))
|
||||
if (state.hasTileEntity() && (!newState.hasTileEntity() || !(newState.getBlock() instanceof ToolboxBlock)))
|
||||
world.removeBlockEntity(pos);
|
||||
}
|
||||
|
||||
|
@ -133,8 +134,8 @@ public class ToolboxBlock extends HorizontalBlock implements IWaterLoggable, ITE
|
|||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_,
|
||||
ISelectionContext p_220053_4_) {
|
||||
public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos,
|
||||
ISelectionContext context) {
|
||||
return AllShapes.TOOLBOX.get(state.getValue(FACING));
|
||||
}
|
||||
|
||||
|
@ -149,6 +150,17 @@ public class ToolboxBlock extends HorizontalBlock implements IWaterLoggable, ITE
|
|||
|
||||
if (player == null || player.isCrouching())
|
||||
return ActionResultType.PASS;
|
||||
|
||||
ItemStack stack = player.getItemInHand(hand);
|
||||
DyeColor color = DyeColor.getColor(stack);
|
||||
if (color != null && color != this.color) {
|
||||
if (world.isClientSide)
|
||||
return ActionResultType.SUCCESS;
|
||||
BlockState newState = BlockHelper.copyProperties(state, AllBlocks.TOOLBOXES.get(color).getDefaultState());
|
||||
world.setBlockAndUpdate(pos, newState);
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
|
||||
if (player instanceof FakePlayer)
|
||||
return ActionResultType.PASS;
|
||||
if (world.isClientSide)
|
||||
|
|
|
@ -0,0 +1,86 @@
|
|||
package com.simibubi.create.content.curiosities.toolbox;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllRecipeTypes;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.inventory.CraftingInventory;
|
||||
import net.minecraft.item.DyeColor;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.IRecipeSerializer;
|
||||
import net.minecraft.item.crafting.SpecialRecipe;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.Tags;
|
||||
|
||||
public class ToolboxDyeingRecipe extends SpecialRecipe {
|
||||
|
||||
public ToolboxDyeingRecipe(ResourceLocation rl) {
|
||||
super(rl);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(CraftingInventory inventory, World world) {
|
||||
int toolboxes = 0;
|
||||
int dyes = 0;
|
||||
|
||||
for (int i = 0; i < inventory.getContainerSize(); ++i) {
|
||||
ItemStack stack = inventory.getItem(i);
|
||||
if (!stack.isEmpty()) {
|
||||
if (Block.byItem(stack.getItem()) instanceof ToolboxBlock) {
|
||||
++toolboxes;
|
||||
} else {
|
||||
if (!stack.getItem().is(Tags.Items.DYES)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
++dyes;
|
||||
}
|
||||
|
||||
if (dyes > 1 || toolboxes > 1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return toolboxes == 1 && dyes == 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack assemble(CraftingInventory inventory) {
|
||||
ItemStack toolbox = ItemStack.EMPTY;
|
||||
DyeColor color = DyeColor.BROWN;
|
||||
|
||||
for (int i = 0; i < inventory.getContainerSize(); ++i) {
|
||||
ItemStack stack = inventory.getItem(i);
|
||||
if (!stack.isEmpty()) {
|
||||
if (Block.byItem(stack.getItem()) instanceof ToolboxBlock) {
|
||||
toolbox = stack;
|
||||
} else {
|
||||
DyeColor color1 = DyeColor.getColor(stack);
|
||||
if (color1 != null) {
|
||||
color = color1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ItemStack dyedToolbox = AllBlocks.TOOLBOXES.get(color).asStack();
|
||||
if (toolbox.hasTag()) {
|
||||
dyedToolbox.setTag(toolbox.getTag().copy());
|
||||
}
|
||||
|
||||
return dyedToolbox;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCraftInDimensions(int width, int height) {
|
||||
return width * height >= 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IRecipeSerializer<?> getSerializer() {
|
||||
return AllRecipeTypes.TOOLBOX_DYEING.getSerializer();
|
||||
}
|
||||
|
||||
}
|
|
@ -34,7 +34,7 @@ public class ToolboxRenderer extends SmartTileEntityRenderer<ToolboxTileEntity>
|
|||
float lidAngle = tileEntityIn.lid.getValue(partialTicks);
|
||||
float drawerOffset = tileEntityIn.drawers.getValue(partialTicks);
|
||||
|
||||
IVertexBuilder layer = buffer.getBuffer(RenderType.solid());
|
||||
IVertexBuilder builder = buffer.getBuffer(RenderType.cutoutMipped());
|
||||
lid.matrixStacker()
|
||||
.centre()
|
||||
.rotateY(-facing.toYRot())
|
||||
|
@ -43,7 +43,7 @@ public class ToolboxRenderer extends SmartTileEntityRenderer<ToolboxTileEntity>
|
|||
.rotateX(135 * lidAngle)
|
||||
.translate(0, -6 / 16f, -12 / 16f);
|
||||
lid.light(light)
|
||||
.renderInto(ms, layer);
|
||||
.renderInto(ms, builder);
|
||||
|
||||
for (int offset : Iterate.zeroAndOne) {
|
||||
drawer.matrixStacker()
|
||||
|
@ -52,7 +52,7 @@ public class ToolboxRenderer extends SmartTileEntityRenderer<ToolboxTileEntity>
|
|||
.unCentre();
|
||||
drawer.translate(0, offset * 1 / 8f, -drawerOffset * .175f * (2 - offset))
|
||||
.light(light)
|
||||
.renderInto(ms, layer);
|
||||
.renderInto(ms, builder);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import java.util.WeakHashMap;
|
|||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.ResetableLazy;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
|
||||
|
@ -49,7 +50,7 @@ public class ToolboxTileEntity extends SmartTileEntity implements INamedContaine
|
|||
|
||||
ToolboxInventory inventory;
|
||||
LazyOptional<IItemHandler> inventoryProvider;
|
||||
LazyOptional<DyeColor> colorProvider;
|
||||
ResetableLazy<DyeColor> colorProvider;
|
||||
protected int openCount;
|
||||
|
||||
Map<Integer, WeakHashMap<PlayerEntity, Integer>> connectedPlayers;
|
||||
|
@ -61,7 +62,7 @@ public class ToolboxTileEntity extends SmartTileEntity implements INamedContaine
|
|||
connectedPlayers = new HashMap<>();
|
||||
inventory = new ToolboxInventory(this);
|
||||
inventoryProvider = LazyOptional.of(() -> inventory);
|
||||
colorProvider = LazyOptional.of(() -> {
|
||||
colorProvider = ResetableLazy.of(() -> {
|
||||
BlockState blockState = getBlockState();
|
||||
if (blockState != null && blockState.getBlock() instanceof ToolboxBlock)
|
||||
return ((ToolboxBlock) blockState.getBlock()).getColor();
|
||||
|
@ -71,7 +72,7 @@ public class ToolboxTileEntity extends SmartTileEntity implements INamedContaine
|
|||
}
|
||||
|
||||
public DyeColor getColor() {
|
||||
return colorProvider.orElse(DyeColor.BROWN);
|
||||
return colorProvider.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -387,4 +388,16 @@ public class ToolboxTileEntity extends SmartTileEntity implements INamedContaine
|
|||
return customName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearCache() {
|
||||
super.clearCache();
|
||||
colorProvider.reset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setChanged() {
|
||||
super.setChanged();
|
||||
colorProvider.reset();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@ import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement;
|
|||
import com.simibubi.create.content.schematics.ItemRequirement;
|
||||
import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
import com.simibubi.create.foundation.utility.DyeHelper;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
|
@ -42,7 +41,8 @@ public class NixieTubeBlock extends HorizontalBlock
|
|||
implements ITE<NixieTubeTileEntity>, IWrenchable, ISpecialBlockItemRequirement {
|
||||
|
||||
public static final BooleanProperty CEILING = BooleanProperty.create("ceiling");
|
||||
private DyeColor color;
|
||||
|
||||
protected final DyeColor color;
|
||||
|
||||
public NixieTubeBlock(Properties properties, DyeColor color) {
|
||||
super(properties);
|
||||
|
@ -54,13 +54,14 @@ public class NixieTubeBlock extends HorizontalBlock
|
|||
public ActionResultType use(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand,
|
||||
BlockRayTraceResult ray) {
|
||||
|
||||
if (player.isShiftKeyDown())
|
||||
return ActionResultType.PASS;
|
||||
|
||||
ItemStack heldItem = player.getItemInHand(hand);
|
||||
NixieTubeTileEntity nixie = getTileEntity(world, pos);
|
||||
|
||||
if (nixie == null)
|
||||
return ActionResultType.PASS;
|
||||
if (player.isShiftKeyDown())
|
||||
return ActionResultType.PASS;
|
||||
if (heldItem.isEmpty()) {
|
||||
if (nixie.reactsToRedstone())
|
||||
return ActionResultType.PASS;
|
||||
|
@ -70,11 +71,7 @@ public class NixieTubeBlock extends HorizontalBlock
|
|||
}
|
||||
|
||||
boolean display = heldItem.getItem() == Items.NAME_TAG && heldItem.hasCustomHoverName();
|
||||
DyeColor dye = null;
|
||||
for (DyeColor color : DyeColor.values())
|
||||
if (heldItem.getItem()
|
||||
.is(DyeHelper.getTagOfDye(color)))
|
||||
dye = color;
|
||||
DyeColor dye = DyeColor.getColor(heldItem);
|
||||
|
||||
if (!display && dye == null)
|
||||
return ActionResultType.PASS;
|
||||
|
@ -238,6 +235,10 @@ public class NixieTubeBlock extends HorizontalBlock
|
|||
return NixieTubeTileEntity.class;
|
||||
}
|
||||
|
||||
public DyeColor getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
public static boolean areNixieBlocksEqual(BlockState blockState, BlockState otherState) {
|
||||
if (!(blockState.getBlock() instanceof NixieTubeBlock))
|
||||
return false;
|
||||
|
|
|
@ -25,6 +25,15 @@ public class DyedBlockList<T extends Block> {
|
|||
return (BlockEntry<T>) values[color.ordinal()];
|
||||
}
|
||||
|
||||
public boolean contains(Block block) {
|
||||
for (BlockEntry<?> entry : values) {
|
||||
if (entry.is(block)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public BlockEntry<T>[] toArray() {
|
||||
return (BlockEntry<T>[]) Arrays.copyOf(values, values.length);
|
||||
|
|
|
@ -18,6 +18,7 @@ import com.google.gson.JsonArray;
|
|||
import com.google.gson.JsonObject;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.AllRecipeTypes;
|
||||
import com.simibubi.create.AllTags;
|
||||
import com.simibubi.create.AllTags.AllItemTags;
|
||||
import com.simibubi.create.Create;
|
||||
|
@ -32,6 +33,7 @@ import net.minecraft.advancements.criterion.ItemPredicate;
|
|||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.data.CookingRecipeBuilder;
|
||||
import net.minecraft.data.CustomRecipeBuilder;
|
||||
import net.minecraft.data.DataGenerator;
|
||||
import net.minecraft.data.IFinishedRecipe;
|
||||
import net.minecraft.data.ShapedRecipeBuilder;
|
||||
|
@ -42,6 +44,7 @@ import net.minecraft.item.Items;
|
|||
import net.minecraft.item.crafting.CookingRecipeSerializer;
|
||||
import net.minecraft.item.crafting.IRecipeSerializer;
|
||||
import net.minecraft.item.crafting.Ingredient;
|
||||
import net.minecraft.item.crafting.SpecialRecipeSerializer;
|
||||
import net.minecraft.tags.ITag;
|
||||
import net.minecraft.tags.ItemTags;
|
||||
import net.minecraft.util.IItemProvider;
|
||||
|
@ -177,6 +180,8 @@ public class StandardRecipeGen extends CreateRecipeProvider {
|
|||
.pattern("SWS")
|
||||
.pattern(" L ")),
|
||||
|
||||
TOOLBOX_DYEING = createSpecial(AllRecipeTypes.TOOLBOX_DYEING::getSerializer, "crafting", "toolbox_dyeing"),
|
||||
|
||||
MINECART_COUPLING = create(AllItems.MINECART_COUPLING).unlockedBy(I::andesite)
|
||||
.viaShaped(b -> b.define('E', I.andesite())
|
||||
.define('O', I.ironSheet())
|
||||
|
@ -1085,6 +1090,14 @@ public class StandardRecipeGen extends CreateRecipeProvider {
|
|||
return create(result::get);
|
||||
}
|
||||
|
||||
GeneratedRecipe createSpecial(Supplier<? extends SpecialRecipeSerializer<?>> serializer, String recipeType, String path) {
|
||||
ResourceLocation location = Create.asResource(recipeType + "/" + currentFolder + "/" + path);
|
||||
return register(consumer -> {
|
||||
CustomRecipeBuilder b = CustomRecipeBuilder.special(serializer.get());
|
||||
b.save(consumer, location.toString());
|
||||
});
|
||||
}
|
||||
|
||||
GeneratedRecipe blastCrushedMetal(Supplier<? extends IItemProvider> result,
|
||||
Supplier<? extends IItemProvider> ingredient) {
|
||||
return create(result::get).withSuffix("_from_crushed")
|
||||
|
|
|
@ -5,7 +5,6 @@ import com.mojang.blaze3d.vertex.IVertexBuilder;
|
|||
|
||||
import net.minecraft.block.BlockRenderType;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
|
@ -18,16 +17,27 @@ import net.minecraft.util.math.vector.Vector3d;
|
|||
import net.minecraft.world.IWorldReader;
|
||||
|
||||
/**
|
||||
* Stolen from EntityRendererManager
|
||||
* Taken from EntityRendererManager
|
||||
*/
|
||||
public class ShadowRenderHelper {
|
||||
|
||||
private static final RenderType SHADOW_LAYER =
|
||||
RenderType.entityNoOutline(new ResourceLocation("textures/misc/shadow.png"));
|
||||
|
||||
public static void renderShadow(MatrixStack p_229096_0_, IRenderTypeBuffer p_229096_1_, Vector3d pos,
|
||||
float p_229096_3_, float p_229096_6_) {
|
||||
float f = p_229096_6_;
|
||||
public static void renderShadow(MatrixStack matrixStack, IRenderTypeBuffer buffer, float opacity, float radius) {
|
||||
MatrixStack.Entry entry = matrixStack.last();
|
||||
IVertexBuilder builder = buffer.getBuffer(SHADOW_LAYER);
|
||||
|
||||
opacity /= 2;
|
||||
shadowVertex(entry, builder, opacity, -1 * radius, 0, -1 * radius, 0, 0);
|
||||
shadowVertex(entry, builder, opacity, -1 * radius, 0, 1 * radius, 0, 1);
|
||||
shadowVertex(entry, builder, opacity, 1 * radius, 0, 1 * radius, 1, 1);
|
||||
shadowVertex(entry, builder, opacity, 1 * radius, 0, -1 * radius, 1, 0);
|
||||
}
|
||||
|
||||
public static void renderShadow(MatrixStack matrixStack, IRenderTypeBuffer buffer, IWorldReader world,
|
||||
Vector3d pos, float opacity, float radius) {
|
||||
float f = radius;
|
||||
|
||||
double d2 = pos.x();
|
||||
double d0 = pos.y();
|
||||
|
@ -38,67 +48,66 @@ public class ShadowRenderHelper {
|
|||
int l = MathHelper.floor(d0);
|
||||
int i1 = MathHelper.floor(d1 - (double) f);
|
||||
int j1 = MathHelper.floor(d1 + (double) f);
|
||||
MatrixStack.Entry matrixstack$entry = p_229096_0_.last();
|
||||
IVertexBuilder ivertexbuilder = p_229096_1_.getBuffer(SHADOW_LAYER);
|
||||
MatrixStack.Entry entry = matrixStack.last();
|
||||
IVertexBuilder builder = buffer.getBuffer(SHADOW_LAYER);
|
||||
|
||||
for (BlockPos blockpos : BlockPos.betweenClosed(new BlockPos(i, k, i1), new BlockPos(j, l, j1))) {
|
||||
renderShadowPart(matrixstack$entry, ivertexbuilder, Minecraft.getInstance().level, blockpos, d2, d0, d1, f,
|
||||
p_229096_3_);
|
||||
renderBlockShadow(entry, builder, world, blockpos, d2, d0, d1, f,
|
||||
opacity);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void renderShadowPart(MatrixStack.Entry p_229092_0_, IVertexBuilder p_229092_1_,
|
||||
IWorldReader p_229092_2_, BlockPos p_229092_3_, double p_229092_4_, double p_229092_6_, double p_229092_8_,
|
||||
float p_229092_10_, float p_229092_11_) {
|
||||
BlockPos blockpos = p_229092_3_.below();
|
||||
BlockState blockstate = p_229092_2_.getBlockState(blockpos);
|
||||
if (blockstate.getRenderShape() != BlockRenderType.INVISIBLE && p_229092_2_.getMaxLocalRawBrightness(p_229092_3_) > 3) {
|
||||
if (blockstate.isCollisionShapeFullBlock(p_229092_2_, blockpos)) {
|
||||
VoxelShape voxelshape = blockstate.getShape(p_229092_2_, p_229092_3_.below());
|
||||
private static void renderBlockShadow(MatrixStack.Entry entry, IVertexBuilder builder,
|
||||
IWorldReader world, BlockPos pos, double x, double y, double z,
|
||||
float radius, float opacity) {
|
||||
BlockPos blockpos = pos.below();
|
||||
BlockState blockstate = world.getBlockState(blockpos);
|
||||
if (blockstate.getRenderShape() != BlockRenderType.INVISIBLE && world.getMaxLocalRawBrightness(pos) > 3) {
|
||||
if (blockstate.isCollisionShapeFullBlock(world, blockpos)) {
|
||||
VoxelShape voxelshape = blockstate.getShape(world, pos.below());
|
||||
if (!voxelshape.isEmpty()) {
|
||||
@SuppressWarnings("deprecation")
|
||||
float f = (float) (((double) p_229092_11_ - (p_229092_6_ - (double) p_229092_3_.getY()) / 2.0D)
|
||||
* 0.5D * (double) p_229092_2_.getBrightness(p_229092_3_));
|
||||
float f = (float) (((double) opacity - (y - (double) pos.getY()) / 2.0D)
|
||||
* 0.5D * (double) world.getBrightness(pos));
|
||||
if (f >= 0.0F) {
|
||||
if (f > 1.0F) {
|
||||
f = 1.0F;
|
||||
}
|
||||
|
||||
AxisAlignedBB axisalignedbb = voxelshape.bounds();
|
||||
double d0 = (double) p_229092_3_.getX() + axisalignedbb.minX;
|
||||
double d1 = (double) p_229092_3_.getX() + axisalignedbb.maxX;
|
||||
double d2 = (double) p_229092_3_.getY() + axisalignedbb.minY;
|
||||
double d3 = (double) p_229092_3_.getZ() + axisalignedbb.minZ;
|
||||
double d4 = (double) p_229092_3_.getZ() + axisalignedbb.maxZ;
|
||||
float f1 = (float) (d0 - p_229092_4_);
|
||||
float f2 = (float) (d1 - p_229092_4_);
|
||||
float f3 = (float) (d2 - p_229092_6_ + 0.015625D);
|
||||
float f4 = (float) (d3 - p_229092_8_);
|
||||
float f5 = (float) (d4 - p_229092_8_);
|
||||
float f6 = -f1 / 2.0F / p_229092_10_ + 0.5F;
|
||||
float f7 = -f2 / 2.0F / p_229092_10_ + 0.5F;
|
||||
float f8 = -f4 / 2.0F / p_229092_10_ + 0.5F;
|
||||
float f9 = -f5 / 2.0F / p_229092_10_ + 0.5F;
|
||||
shadowVertex(p_229092_0_, p_229092_1_, f, f1, f3, f4, f6, f8);
|
||||
shadowVertex(p_229092_0_, p_229092_1_, f, f1, f3, f5, f6, f9);
|
||||
shadowVertex(p_229092_0_, p_229092_1_, f, f2, f3, f5, f7, f9);
|
||||
shadowVertex(p_229092_0_, p_229092_1_, f, f2, f3, f4, f7, f8);
|
||||
double d0 = (double) pos.getX() + axisalignedbb.minX;
|
||||
double d1 = (double) pos.getX() + axisalignedbb.maxX;
|
||||
double d2 = (double) pos.getY() + axisalignedbb.minY;
|
||||
double d3 = (double) pos.getZ() + axisalignedbb.minZ;
|
||||
double d4 = (double) pos.getZ() + axisalignedbb.maxZ;
|
||||
float f1 = (float) (d0 - x);
|
||||
float f2 = (float) (d1 - x);
|
||||
float f3 = (float) (d2 - y + 0.015625D);
|
||||
float f4 = (float) (d3 - z);
|
||||
float f5 = (float) (d4 - z);
|
||||
float f6 = -f1 / 2.0F / radius + 0.5F;
|
||||
float f7 = -f2 / 2.0F / radius + 0.5F;
|
||||
float f8 = -f4 / 2.0F / radius + 0.5F;
|
||||
float f9 = -f5 / 2.0F / radius + 0.5F;
|
||||
shadowVertex(entry, builder, f, f1, f3, f4, f6, f8);
|
||||
shadowVertex(entry, builder, f, f1, f3, f5, f6, f9);
|
||||
shadowVertex(entry, builder, f, f2, f3, f5, f7, f9);
|
||||
shadowVertex(entry, builder, f, f2, f3, f4, f7, f8);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void shadowVertex(MatrixStack.Entry p_229091_0_, IVertexBuilder p_229091_1_, float p_229091_2_,
|
||||
float p_229091_3_, float p_229091_4_, float p_229091_5_, float p_229091_6_, float p_229091_7_) {
|
||||
p_229091_1_.vertex(p_229091_0_.pose(), p_229091_3_, p_229091_4_, p_229091_5_)
|
||||
.color(1.0F, 1.0F, 1.0F, p_229091_2_)
|
||||
.uv(p_229091_6_, p_229091_7_)
|
||||
private static void shadowVertex(MatrixStack.Entry entry, IVertexBuilder builder, float alpha,
|
||||
float x, float y, float z, float u, float v) {
|
||||
builder.vertex(entry.pose(), x, y, z)
|
||||
.color(1.0F, 1.0F, 1.0F, alpha)
|
||||
.uv(u, v)
|
||||
.overlayCoords(OverlayTexture.NO_OVERLAY)
|
||||
.uv2(15728880)
|
||||
.normal(p_229091_0_.normal(), 0.0F, 1.0F, 0.0F)
|
||||
.uv2(0xF000F0)
|
||||
.normal(entry.normal(), 0.0F, 1.0F, 0.0F)
|
||||
.endVertex();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ public abstract class SyncedTileEntity extends TileEntity {
|
|||
|
||||
@Override
|
||||
public SUpdateTileEntityPacket getUpdatePacket() {
|
||||
return new SUpdateTileEntityPacket(getBlockPos(), 1, writeToClient(new CompoundNBT()));
|
||||
return new SUpdateTileEntityPacket(getBlockPos(), 0, writeToClient(new CompoundNBT()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -26,6 +26,7 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.item.Items;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.particles.ParticleTypes;
|
||||
import net.minecraft.state.Property;
|
||||
import net.minecraft.state.properties.BlockStateProperties;
|
||||
import net.minecraft.state.properties.SlabType;
|
||||
import net.minecraft.stats.Stats;
|
||||
|
@ -341,4 +342,19 @@ public class BlockHelper {
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static BlockState copyProperties(BlockState fromState, BlockState toState) {
|
||||
for (Property<?> property : fromState.getProperties()) {
|
||||
toState = copyProperty(property, fromState, toState);
|
||||
}
|
||||
return toState;
|
||||
}
|
||||
|
||||
public static <T extends Comparable<T>> BlockState copyProperty(Property<T> property, BlockState fromState, BlockState toState) {
|
||||
if (fromState.hasProperty(property) && toState.hasProperty(property)) {
|
||||
return toState.setValue(property, fromState.getValue(property));
|
||||
}
|
||||
return toState;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,9 +2,7 @@ package com.simibubi.create.foundation.utility;
|
|||
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.item.DyeColor;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.IItemProvider;
|
||||
import net.minecraftforge.common.Tags;
|
||||
|
||||
public class DyeHelper {
|
||||
|
||||
|
@ -46,41 +44,4 @@ public class DyeHelper {
|
|||
}
|
||||
}
|
||||
|
||||
public static Tags.IOptionalNamedTag<Item> getTagOfDye(DyeColor color) {
|
||||
switch (color) {
|
||||
case BLACK:
|
||||
return Tags.Items.DYES_BLACK;
|
||||
case BLUE:
|
||||
return Tags.Items.DYES_BLUE;
|
||||
case BROWN:
|
||||
return Tags.Items.DYES_BROWN;
|
||||
case CYAN:
|
||||
return Tags.Items.DYES_CYAN;
|
||||
case GRAY:
|
||||
return Tags.Items.DYES_GRAY;
|
||||
case GREEN:
|
||||
return Tags.Items.DYES_GREEN;
|
||||
case LIGHT_BLUE:
|
||||
return Tags.Items.DYES_LIGHT_BLUE;
|
||||
case LIGHT_GRAY:
|
||||
return Tags.Items.DYES_LIGHT_GRAY;
|
||||
case LIME:
|
||||
return Tags.Items.DYES_LIME;
|
||||
case MAGENTA:
|
||||
return Tags.Items.DYES_MAGENTA;
|
||||
case ORANGE:
|
||||
return Tags.Items.DYES_ORANGE;
|
||||
case PINK:
|
||||
return Tags.Items.DYES_PINK;
|
||||
case PURPLE:
|
||||
return Tags.Items.DYES_PURPLE;
|
||||
case RED:
|
||||
return Tags.Items.DYES_RED;
|
||||
case YELLOW:
|
||||
return Tags.Items.DYES_YELLOW;
|
||||
case WHITE:
|
||||
default:
|
||||
return Tags.Items.DYES_WHITE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package com.simibubi.create.foundation.utility;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import net.minecraftforge.common.util.NonNullSupplier;
|
||||
|
||||
public class ResetableLazy<T> implements Supplier<T> {
|
||||
|
||||
private final NonNullSupplier<T> supplier;
|
||||
private T value;
|
||||
|
||||
public ResetableLazy(NonNullSupplier<T> supplier) {
|
||||
this.supplier = supplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T get() {
|
||||
if (value == null) {
|
||||
value = supplier.get();
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
value = null;
|
||||
}
|
||||
|
||||
public static <T> ResetableLazy<T> of(NonNullSupplier<T> supplier) {
|
||||
return new ResetableLazy<>(supplier);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue