More porty todos

- Added back the silk touch requirement to suitable loot tables
- Added generated recipes and tags for glass and window blocks
- Fixed blockzappers selecting new blocks upon firing
- Removed duplicate recipes and lang entries
- Fixed some outdated translation keys in ui screens
This commit is contained in:
simibubi 2020-05-31 23:37:31 +02:00
parent daee93dc48
commit 33b5338828
82 changed files with 1613 additions and 299 deletions

View file

@ -324,7 +324,7 @@ c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_lim
7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json
c47cfc7aae111eb9136f9cd3b6240669f920550d assets\create\lang\en_ud.json c47cfc7aae111eb9136f9cd3b6240669f920550d assets\create\lang\en_ud.json
ad62841621bbd81a70950c611aa747341953cde9 assets\create\lang\en_us.json 9691b16416906b5f42f30420210d9f3937defed0 assets\create\lang\en_us.json
846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json
1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json
1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json
@ -1282,6 +1282,8 @@ b2782692d27ffb105e3167174cebe1ebdd4a9867 data\create\advancements\recipes\create
df6f220e693f5256bb3df8d6c7769bc931820ae5 data\create\advancements\recipes\create.base\copper_block.json df6f220e693f5256bb3df8d6c7769bc931820ae5 data\create\advancements\recipes\create.base\copper_block.json
22e0798a182df482aa6e7b3da5312ea2e21b9e7d data\create\advancements\recipes\create.base\copper_shingles.json 22e0798a182df482aa6e7b3da5312ea2e21b9e7d data\create\advancements\recipes\create.base\copper_shingles.json
82280c50b78dd7e8c179cb8e8f0c074b26ec9586 data\create\advancements\recipes\create.base\zinc_block.json 82280c50b78dd7e8c179cb8e8f0c074b26ec9586 data\create\advancements\recipes\create.base\zinc_block.json
909345eb2f5541a2be592a52800319a8765ca345 data\create\advancements\recipes\create.palettes\acacia_window.json
73f99cd857b056da5e19ff8304a4f5eeacc4f8cd data\create\advancements\recipes\create.palettes\acacia_window_pane.json
06479f24d7b2655ee590b5314861a3c9c422ebbe data\create\advancements\recipes\create.palettes\andesite_bricks_from_andesite_stonecutting.json 06479f24d7b2655ee590b5314861a3c9c422ebbe data\create\advancements\recipes\create.palettes\andesite_bricks_from_andesite_stonecutting.json
916ff114deb04257ea18cd68226bfab9fc291d8e data\create\advancements\recipes\create.palettes\andesite_bricks_slab.json 916ff114deb04257ea18cd68226bfab9fc291d8e data\create\advancements\recipes\create.palettes\andesite_bricks_slab.json
8137bcfe84651a6b8ca323298ca66fedc5486390 data\create\advancements\recipes\create.palettes\andesite_bricks_slab_from_andesite_bricks_stonecutting.json 8137bcfe84651a6b8ca323298ca66fedc5486390 data\create\advancements\recipes\create.palettes\andesite_bricks_slab_from_andesite_bricks_stonecutting.json
@ -1298,12 +1300,16 @@ bd79e63c29d68fbf87ded63ac1eedba3d7287996 data\create\advancements\recipes\create
0ed4c084f05b2bd4c134293ad3554d6e31a1d568 data\create\advancements\recipes\create.palettes\andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json 0ed4c084f05b2bd4c134293ad3554d6e31a1d568 data\create\advancements\recipes\create.palettes\andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json
a453d05704cadb3279318192aac87e623738cdaa data\create\advancements\recipes\create.palettes\andesite_pillar.json a453d05704cadb3279318192aac87e623738cdaa data\create\advancements\recipes\create.palettes\andesite_pillar.json
d6f31097aef040e12eb288ab755d459f55269a70 data\create\advancements\recipes\create.palettes\andesite_pillar_from_andesite_stonecutting.json d6f31097aef040e12eb288ab755d459f55269a70 data\create\advancements\recipes\create.palettes\andesite_pillar_from_andesite_stonecutting.json
f10a4369147cc5e36d3ab1b0008d29fd36ffc8f6 data\create\advancements\recipes\create.palettes\birch_window.json
bfea45da3f8df1c63f6c7ff1b63ad7e08c1d44b0 data\create\advancements\recipes\create.palettes\birch_window_pane.json
83d09fdf47ca2b5a70643f9005cbdcdf5ab586b6 data\create\advancements\recipes\create.palettes\chiseled_dark_scoria_from_dark_scoria_stonecutting.json 83d09fdf47ca2b5a70643f9005cbdcdf5ab586b6 data\create\advancements\recipes\create.palettes\chiseled_dark_scoria_from_dark_scoria_stonecutting.json
c31a4d1eacc892a0248315270a12c0b49f5edc63 data\create\advancements\recipes\create.palettes\chiseled_dolomite_from_dolomite_stonecutting.json c31a4d1eacc892a0248315270a12c0b49f5edc63 data\create\advancements\recipes\create.palettes\chiseled_dolomite_from_dolomite_stonecutting.json
74348dc4a1d8a41c67d12ea046772737e9e6d206 data\create\advancements\recipes\create.palettes\chiseled_gabbro_from_gabbro_stonecutting.json 74348dc4a1d8a41c67d12ea046772737e9e6d206 data\create\advancements\recipes\create.palettes\chiseled_gabbro_from_gabbro_stonecutting.json
4474c65e52362492fccc901b55773648b2714819 data\create\advancements\recipes\create.palettes\chiseled_limestone_from_limestone_stonecutting.json 4474c65e52362492fccc901b55773648b2714819 data\create\advancements\recipes\create.palettes\chiseled_limestone_from_limestone_stonecutting.json
b873bd961cd865866a6f5035bee583a400073a3c data\create\advancements\recipes\create.palettes\chiseled_scoria_from_scoria_stonecutting.json b873bd961cd865866a6f5035bee583a400073a3c data\create\advancements\recipes\create.palettes\chiseled_scoria_from_scoria_stonecutting.json
0ace6bef40eab8e365959e529a16cd04d15adfe6 data\create\advancements\recipes\create.palettes\chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json 0ace6bef40eab8e365959e529a16cd04d15adfe6 data\create\advancements\recipes\create.palettes\chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json
25991d5667252d551e02c4fbbfa27ebf4353d28d data\create\advancements\recipes\create.palettes\dark_oak_window.json
4819383b1a7885b4401fdc25955d2c51f75b6236 data\create\advancements\recipes\create.palettes\dark_oak_window_pane.json
ebd6413d530325eef6fcf42a0ee0ac840c1f7366 data\create\advancements\recipes\create.palettes\dark_scoria_bricks_from_dark_scoria_stonecutting.json ebd6413d530325eef6fcf42a0ee0ac840c1f7366 data\create\advancements\recipes\create.palettes\dark_scoria_bricks_from_dark_scoria_stonecutting.json
030ce9b61b8af158cf54e7a9ab673ccb7251483f data\create\advancements\recipes\create.palettes\dark_scoria_bricks_slab.json 030ce9b61b8af158cf54e7a9ab673ccb7251483f data\create\advancements\recipes\create.palettes\dark_scoria_bricks_slab.json
ac44d03859cfd4c00ddcbd1dafbb9acc51d849d7 data\create\advancements\recipes\create.palettes\dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json ac44d03859cfd4c00ddcbd1dafbb9acc51d849d7 data\create\advancements\recipes\create.palettes\dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json
@ -1415,6 +1421,8 @@ e76e9b9bba421e846c06bb48c19815bc50c889e2 data\create\advancements\recipes\create
d51bee4b276805ecf1a93a37ec6d610e75c0117e data\create\advancements\recipes\create.palettes\fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json d51bee4b276805ecf1a93a37ec6d610e75c0117e data\create\advancements\recipes\create.palettes\fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json
767733a2cc9fd2e96302c4e3813da86856e7c418 data\create\advancements\recipes\create.palettes\fancy_weathered_limestone_bricks_wall.json 767733a2cc9fd2e96302c4e3813da86856e7c418 data\create\advancements\recipes\create.palettes\fancy_weathered_limestone_bricks_wall.json
17e02efc06d935c094bde5bb73a5127bc98e4758 data\create\advancements\recipes\create.palettes\fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json 17e02efc06d935c094bde5bb73a5127bc98e4758 data\create\advancements\recipes\create.palettes\fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json
05331b5f1701453ecdfd0b3e6429b22ec209ba67 data\create\advancements\recipes\create.palettes\framed_glass_from_glass_colorless_stonecutting.json
605476eaf4e964936c031732cfef534edfdd749a data\create\advancements\recipes\create.palettes\framed_glass_pane.json
b835dd583d670e2d7f6af4dd74e44f5817b03b21 data\create\advancements\recipes\create.palettes\gabbro_bricks_from_gabbro_stonecutting.json b835dd583d670e2d7f6af4dd74e44f5817b03b21 data\create\advancements\recipes\create.palettes\gabbro_bricks_from_gabbro_stonecutting.json
2bfac04754aaf07423b330134984d887ae43f00a data\create\advancements\recipes\create.palettes\gabbro_bricks_slab.json 2bfac04754aaf07423b330134984d887ae43f00a data\create\advancements\recipes\create.palettes\gabbro_bricks_slab.json
f05bb35d52866abc7dae9c7f3f5fc85257760564 data\create\advancements\recipes\create.palettes\gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json f05bb35d52866abc7dae9c7f3f5fc85257760564 data\create\advancements\recipes\create.palettes\gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json
@ -1447,6 +1455,10 @@ c39e86c111a2c76ef9cb7046d2b87262524b06b9 data\create\advancements\recipes\create
d6b622a2cf302d0c39e0d38d24b0a17e1461d13b data\create\advancements\recipes\create.palettes\granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json d6b622a2cf302d0c39e0d38d24b0a17e1461d13b data\create\advancements\recipes\create.palettes\granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json
03c3a88e1a320afe9866a1c09ef34b46763c8ec1 data\create\advancements\recipes\create.palettes\granite_pillar.json 03c3a88e1a320afe9866a1c09ef34b46763c8ec1 data\create\advancements\recipes\create.palettes\granite_pillar.json
97cc61b1b510849ebc0bf51cf2b8107a5c43fc17 data\create\advancements\recipes\create.palettes\granite_pillar_from_granite_stonecutting.json 97cc61b1b510849ebc0bf51cf2b8107a5c43fc17 data\create\advancements\recipes\create.palettes\granite_pillar_from_granite_stonecutting.json
cbb40e82dba460ee126966a52f0164e740ac1f11 data\create\advancements\recipes\create.palettes\horizontal_framed_glass_from_glass_colorless_stonecutting.json
29e2e2aeca3800c8ba432be30d54d046a3991217 data\create\advancements\recipes\create.palettes\horizontal_framed_glass_pane.json
4efc9a8c871cf18c8517c82f5a05d4dfec045778 data\create\advancements\recipes\create.palettes\jungle_window.json
995b9cb9c370cd319da3390d8a3a46028bbe7840 data\create\advancements\recipes\create.palettes\jungle_window_pane.json
6b07d0abcfd0710e16a6b7a62fff984a332cbf90 data\create\advancements\recipes\create.palettes\layered_andesite_from_andesite_stonecutting.json 6b07d0abcfd0710e16a6b7a62fff984a332cbf90 data\create\advancements\recipes\create.palettes\layered_andesite_from_andesite_stonecutting.json
1cf78657f901bea4a27e4e7cf885310f50fa8d00 data\create\advancements\recipes\create.palettes\layered_dark_scoria_from_dark_scoria_stonecutting.json 1cf78657f901bea4a27e4e7cf885310f50fa8d00 data\create\advancements\recipes\create.palettes\layered_dark_scoria_from_dark_scoria_stonecutting.json
5ceb87c9142f85f980d5854dab05bf3f97d2f1d9 data\create\advancements\recipes\create.palettes\layered_diorite_from_diorite_stonecutting.json 5ceb87c9142f85f980d5854dab05bf3f97d2f1d9 data\create\advancements\recipes\create.palettes\layered_diorite_from_diorite_stonecutting.json
@ -1481,6 +1493,10 @@ a65d2d91acfb335d22fbafffda91e84827414263 data\create\advancements\recipes\create
7fe51c57ee061b33b25647da030df867c4963a3f data\create\advancements\recipes\create.palettes\mossy_limestone_from_limestone_stonecutting.json 7fe51c57ee061b33b25647da030df867c4963a3f data\create\advancements\recipes\create.palettes\mossy_limestone_from_limestone_stonecutting.json
01a3b7a445f9fad73d04f25b5f8c2c1d3ceabe8c data\create\advancements\recipes\create.palettes\mossy_scoria_from_scoria_stonecutting.json 01a3b7a445f9fad73d04f25b5f8c2c1d3ceabe8c data\create\advancements\recipes\create.palettes\mossy_scoria_from_scoria_stonecutting.json
549c1413c986e6abab295a0cd3784b8cf5b21137 data\create\advancements\recipes\create.palettes\mossy_weathered_limestone_from_weathered_limestone_stonecutting.json 549c1413c986e6abab295a0cd3784b8cf5b21137 data\create\advancements\recipes\create.palettes\mossy_weathered_limestone_from_weathered_limestone_stonecutting.json
6d73c9fb9b80bdb6fcbed9fc22d5d96f2eab9324 data\create\advancements\recipes\create.palettes\oak_window.json
3da6acdecb6de1a0f93cd99766dad34b29abea3d data\create\advancements\recipes\create.palettes\oak_window_pane.json
e8989bcb3be35e7e80fbea52139c5770cca7d63a data\create\advancements\recipes\create.palettes\ornate_iron_window.json
fb6e99d0d4c07a6ffea26e66707b1954f474c4dd data\create\advancements\recipes\create.palettes\ornate_iron_window_pane.json
8a2734dfe0c55b77bb2fb6eeb8baf8c7f77e793f data\create\advancements\recipes\create.palettes\overgrown_andesite_from_andesite_stonecutting.json 8a2734dfe0c55b77bb2fb6eeb8baf8c7f77e793f data\create\advancements\recipes\create.palettes\overgrown_andesite_from_andesite_stonecutting.json
ba1ddc8234275e46677c5d8ccd9a52d48d20c166 data\create\advancements\recipes\create.palettes\overgrown_dark_scoria_from_dark_scoria_stonecutting.json ba1ddc8234275e46677c5d8ccd9a52d48d20c166 data\create\advancements\recipes\create.palettes\overgrown_dark_scoria_from_dark_scoria_stonecutting.json
baee20fee4acbf477e35658c7d6d43a03c8594c3 data\create\advancements\recipes\create.palettes\overgrown_diorite_from_diorite_stonecutting.json baee20fee4acbf477e35658c7d6d43a03c8594c3 data\create\advancements\recipes\create.palettes\overgrown_diorite_from_diorite_stonecutting.json
@ -1617,6 +1633,12 @@ a43d45efa0fb0d3eaace93c18d80a14d4dcddf38 data\create\advancements\recipes\create
e340721aa78f260c2666214aa149241a37de216e data\create\advancements\recipes\create.palettes\scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json e340721aa78f260c2666214aa149241a37de216e data\create\advancements\recipes\create.palettes\scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json
53cc5b006a19158e04094308accb66a7c35d2b26 data\create\advancements\recipes\create.palettes\scoria_pillar.json 53cc5b006a19158e04094308accb66a7c35d2b26 data\create\advancements\recipes\create.palettes\scoria_pillar.json
53712a9ae59976dece952bea7ecaf73b679448f0 data\create\advancements\recipes\create.palettes\scoria_pillar_from_scoria_stonecutting.json 53712a9ae59976dece952bea7ecaf73b679448f0 data\create\advancements\recipes\create.palettes\scoria_pillar_from_scoria_stonecutting.json
459538728b06d4c72d7e65d8f7c98a75a48f3a52 data\create\advancements\recipes\create.palettes\spruce_window.json
6aaf96cdaa845b63ab67ba4b968ea4d811e2fef5 data\create\advancements\recipes\create.palettes\spruce_window_pane.json
ab0cacba05f8def9cc91b993d464c297babf6fc3 data\create\advancements\recipes\create.palettes\tiled_glass_from_glass_colorless_stonecutting.json
d40c7ce6b79630ace624d17b92667286998d93bc data\create\advancements\recipes\create.palettes\tiled_glass_pane.json
24fafe59013a3e0439a73ea4e0cef114fc9a8e4b data\create\advancements\recipes\create.palettes\vertical_framed_glass_from_glass_colorless_stonecutting.json
cd5ee73117872ee98434be1d24b4f271f7e94a48 data\create\advancements\recipes\create.palettes\vertical_framed_glass_pane.json
ef0d351d13f7e9c633581b537c59bddc1fa4c3a4 data\create\advancements\recipes\create.palettes\weathered_limestone_bricks_from_weathered_limestone_stonecutting.json ef0d351d13f7e9c633581b537c59bddc1fa4c3a4 data\create\advancements\recipes\create.palettes\weathered_limestone_bricks_from_weathered_limestone_stonecutting.json
1c931e15af3e5b5f78a0a62b8c159fdf9f0d7f3e data\create\advancements\recipes\create.palettes\weathered_limestone_bricks_slab.json 1c931e15af3e5b5f78a0a62b8c159fdf9f0d7f3e data\create\advancements\recipes\create.palettes\weathered_limestone_bricks_slab.json
bba639941526cc23570e328e0b5e2a5545667219 data\create\advancements\recipes\create.palettes\weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json bba639941526cc23570e328e0b5e2a5545667219 data\create\advancements\recipes\create.palettes\weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json
@ -1646,8 +1668,8 @@ b457a54be7202999be24bb6bcce534f310489412 data\create\advancements\stress_gauge.j
50935316d27336ef0858d5a7c5ccc563d288a494 data\create\advancements\water_wheel.json 50935316d27336ef0858d5a7c5ccc563d288a494 data\create\advancements\water_wheel.json
4513d0c4dd40c948028a3fc8e6f3b4d0356c0a90 data\create\advancements\wrench.json 4513d0c4dd40c948028a3fc8e6f3b4d0356c0a90 data\create\advancements\wrench.json
33c1224f4f6a7bb0a3439eb0f8b8af9341b62574 data\create\advancements\zapper.json 33c1224f4f6a7bb0a3439eb0f8b8af9341b62574 data\create\advancements\zapper.json
aa22b35bb0564055114dcec6dca8a2d603de2481 data\create\loot_tables\blocks\acacia_window.json 054392b614e410c6d1b37c546b4bfd36f50aec4a data\create\loot_tables\blocks\acacia_window.json
6bd966ac4678affb255d64fe0aea7fc0f2448757 data\create\loot_tables\blocks\acacia_window_pane.json 64b95066bf96a3f0de95919d526243ba4f5a3ade data\create\loot_tables\blocks\acacia_window_pane.json
191b117d0a25940248ed54d419ea0bb0afb482d0 data\create\loot_tables\blocks\adjustable_crate.json 191b117d0a25940248ed54d419ea0bb0afb482d0 data\create\loot_tables\blocks\adjustable_crate.json
3e1314b2ccb1eade4f8ff7caa429ce4b327f0d6b data\create\loot_tables\blocks\adjustable_pulley.json 3e1314b2ccb1eade4f8ff7caa429ce4b327f0d6b data\create\loot_tables\blocks\adjustable_pulley.json
417da41ebd0520ae22ddc3541eb490daf2af95dd data\create\loot_tables\blocks\adjustable_pulse_repeater.json 417da41ebd0520ae22ddc3541eb490daf2af95dd data\create\loot_tables\blocks\adjustable_pulse_repeater.json
@ -1667,8 +1689,8 @@ cb36b039a511aca643fe674a63de8d6ad8478256 data\create\loot_tables\blocks\andesite
c7f81e30c31837a287d6d6040cdb02c7dec11441 data\create\loot_tables\blocks\belt.json c7f81e30c31837a287d6d6040cdb02c7dec11441 data\create\loot_tables\blocks\belt.json
1104e323abb2a8c25769c47dc5d1154965113cc9 data\create\loot_tables\blocks\belt_observer.json 1104e323abb2a8c25769c47dc5d1154965113cc9 data\create\loot_tables\blocks\belt_observer.json
f2acadb49cac3aa6347cae606536cbbde89f0a5f data\create\loot_tables\blocks\belt_tunnel.json f2acadb49cac3aa6347cae606536cbbde89f0a5f data\create\loot_tables\blocks\belt_tunnel.json
1818b0b62c1e2ad8b030638a59fd7132a4b7bd0a data\create\loot_tables\blocks\birch_window.json 67a8e2513c3cb09e6fe80279fda94f79d5018c37 data\create\loot_tables\blocks\birch_window.json
151728f0001f3e890bf05535075224c25caa775c data\create\loot_tables\blocks\birch_window_pane.json bf1d5843f93533f84bc4adec5b77da2114fa2025 data\create\loot_tables\blocks\birch_window_pane.json
70d9d4def43d5b31fa7cdc5ca5002c71cf4a90b0 data\create\loot_tables\blocks\brass_block.json 70d9d4def43d5b31fa7cdc5ca5002c71cf4a90b0 data\create\loot_tables\blocks\brass_block.json
8a14258ad5d79d9e4dc5a318905644b446196420 data\create\loot_tables\blocks\brass_casing.json 8a14258ad5d79d9e4dc5a318905644b446196420 data\create\loot_tables\blocks\brass_casing.json
0be542fef3bc0e1a0d556883568a1400a8b97df1 data\create\loot_tables\blocks\cart_assembler.json 0be542fef3bc0e1a0d556883568a1400a8b97df1 data\create\loot_tables\blocks\cart_assembler.json
@ -1690,8 +1712,8 @@ d8f2f8921b9200b1d9476a77ee1be32c25308ac3 data\create\loot_tables\blocks\creative
c28fa42746a4d5ca2f824001b67e58673810169e data\create\loot_tables\blocks\crushing_wheel.json c28fa42746a4d5ca2f824001b67e58673810169e data\create\loot_tables\blocks\crushing_wheel.json
205f5899101262f31f5c1a88bb7d954918d08d04 data\create\loot_tables\blocks\crushing_wheel_controller.json 205f5899101262f31f5c1a88bb7d954918d08d04 data\create\loot_tables\blocks\crushing_wheel_controller.json
d370ee874b5b6b98e9a8c368218fe61f644d956d data\create\loot_tables\blocks\cuckoo_clock.json d370ee874b5b6b98e9a8c368218fe61f644d956d data\create\loot_tables\blocks\cuckoo_clock.json
077c2f6f957afcc1925a96f80b6261fca484263a data\create\loot_tables\blocks\dark_oak_window.json fd309e1d39dcbcb25c3361edecd8c9afa0f847d0 data\create\loot_tables\blocks\dark_oak_window.json
5abd6030828decc9f84963786dce88d194cdbcdb data\create\loot_tables\blocks\dark_oak_window_pane.json 58e6307ba0efa65a0715662a391fe7dc6fba0c68 data\create\loot_tables\blocks\dark_oak_window_pane.json
7a40002e4c05f6456b52558b9ee9607cfc868a69 data\create\loot_tables\blocks\dark_scoria.json 7a40002e4c05f6456b52558b9ee9607cfc868a69 data\create\loot_tables\blocks\dark_scoria.json
502160551afd210c68582a1dfd41a2df720f53a1 data\create\loot_tables\blocks\dark_scoria_bricks.json 502160551afd210c68582a1dfd41a2df720f53a1 data\create\loot_tables\blocks\dark_scoria_bricks.json
5bce6b714e1131ccc11a670f57fa627cbb0f4409 data\create\loot_tables\blocks\dark_scoria_bricks_slab.json 5bce6b714e1131ccc11a670f57fa627cbb0f4409 data\create\loot_tables\blocks\dark_scoria_bricks_slab.json
@ -1763,8 +1785,8 @@ e4d0fe35d3441a5815bd4e1357329b284e63ecd8 data\create\loot_tables\blocks\fancy_we
1be3aae5c0aa8b3c3750db79699e9350adb12231 data\create\loot_tables\blocks\fancy_weathered_limestone_bricks_stairs.json 1be3aae5c0aa8b3c3750db79699e9350adb12231 data\create\loot_tables\blocks\fancy_weathered_limestone_bricks_stairs.json
6bb505bad78cbb01a5cb5a069435bf4ed0e62adf data\create\loot_tables\blocks\fancy_weathered_limestone_bricks_wall.json 6bb505bad78cbb01a5cb5a069435bf4ed0e62adf data\create\loot_tables\blocks\fancy_weathered_limestone_bricks_wall.json
f37526c092c645045c22674dea6c7b1ec503c9c3 data\create\loot_tables\blocks\flywheel.json f37526c092c645045c22674dea6c7b1ec503c9c3 data\create\loot_tables\blocks\flywheel.json
8fbd865f350c615031ec3f56eb98b51ce3008de3 data\create\loot_tables\blocks\framed_glass.json ce0bb978b11935bc2d1218445f8ab18099af6b8a data\create\loot_tables\blocks\framed_glass.json
44c8bc7271fa367ff052bef242e1ae26fb435175 data\create\loot_tables\blocks\framed_glass_pane.json 89bd90ecd7a1ce1f75bd873989cc58a84c8dcef9 data\create\loot_tables\blocks\framed_glass_pane.json
ed895ef7dcb97ad9b00d80a4fa9c331229dd532e data\create\loot_tables\blocks\funnel.json ed895ef7dcb97ad9b00d80a4fa9c331229dd532e data\create\loot_tables\blocks\funnel.json
4063880eda871fe63a4eb549a19daecabce849e5 data\create\loot_tables\blocks\furnace_engine.json 4063880eda871fe63a4eb549a19daecabce849e5 data\create\loot_tables\blocks\furnace_engine.json
1070cba1c0f46cf7ebe31089f35333f5eadda6e4 data\create\loot_tables\blocks\gabbro.json 1070cba1c0f46cf7ebe31089f35333f5eadda6e4 data\create\loot_tables\blocks\gabbro.json
@ -1789,10 +1811,10 @@ feca8a1f62e0e13fcb2252d5f782d74938b84431 data\create\loot_tables\blocks\granite_
1d225a68b09d6f389aa7ed48aa05979bdaa482a9 data\create\loot_tables\blocks\granite_cobblestone_wall.json 1d225a68b09d6f389aa7ed48aa05979bdaa482a9 data\create\loot_tables\blocks\granite_cobblestone_wall.json
87a4ac3db5ec80613b940abccc72fc4b37cee0ba data\create\loot_tables\blocks\granite_pillar.json 87a4ac3db5ec80613b940abccc72fc4b37cee0ba data\create\loot_tables\blocks\granite_pillar.json
9bdc47ea3ffc52f037f12f40f387e6b72a352c4e data\create\loot_tables\blocks\hand_crank.json 9bdc47ea3ffc52f037f12f40f387e6b72a352c4e data\create\loot_tables\blocks\hand_crank.json
3b64c7ad421415a876c0131f204e3fc598cc1730 data\create\loot_tables\blocks\horizontal_framed_glass.json 22012e7759f1dbccbb06bcaf0311a54190270825 data\create\loot_tables\blocks\horizontal_framed_glass.json
a2477ce42e29e7fa4f006ca3bf11fa889f300489 data\create\loot_tables\blocks\horizontal_framed_glass_pane.json 5d3f585539942f13bbc458a0a002849c1f034fc1 data\create\loot_tables\blocks\horizontal_framed_glass_pane.json
881183719cca3324bfdf0faabb18b70415c3f9d2 data\create\loot_tables\blocks\jungle_window.json cf2bfae903e7f8510962e672b6266c0e74176aae data\create\loot_tables\blocks\jungle_window.json
07d090ed661fe862fa625cc1063113959a2a291a data\create\loot_tables\blocks\jungle_window_pane.json 1a3a19517f95fc632286d3cc693bfee4a59dfa0a data\create\loot_tables\blocks\jungle_window_pane.json
4d948f80fb7a8b6b99897544681f43fe3d2058f0 data\create\loot_tables\blocks\large_cogwheel.json 4d948f80fb7a8b6b99897544681f43fe3d2058f0 data\create\loot_tables\blocks\large_cogwheel.json
49cab25e7aa6431d4c1e180cdceb76b6f6f73fe5 data\create\loot_tables\blocks\layered_andesite.json 49cab25e7aa6431d4c1e180cdceb76b6f6f73fe5 data\create\loot_tables\blocks\layered_andesite.json
7610175c7f064bcb3ba95d20d37dfae5f9ca7bac data\create\loot_tables\blocks\layered_dark_scoria.json 7610175c7f064bcb3ba95d20d37dfae5f9ca7bac data\create\loot_tables\blocks\layered_dark_scoria.json
@ -1839,12 +1861,12 @@ bd4ff2a38643d53cdc63e1af08af90e9adadcc0f data\create\loot_tables\blocks\mossy_gr
7107b08ed07b23964df537ae689b48af29b80a2f data\create\loot_tables\blocks\mossy_scoria.json 7107b08ed07b23964df537ae689b48af29b80a2f data\create\loot_tables\blocks\mossy_scoria.json
fdff3d59c214ecbcc2ddcaef778ea661df128b56 data\create\loot_tables\blocks\mossy_weathered_limestone.json fdff3d59c214ecbcc2ddcaef778ea661df128b56 data\create\loot_tables\blocks\mossy_weathered_limestone.json
fedbee3e023d469c9f3aba9d11d5be6cdae77083 data\create\loot_tables\blocks\mysterious_cuckoo_clock.json fedbee3e023d469c9f3aba9d11d5be6cdae77083 data\create\loot_tables\blocks\mysterious_cuckoo_clock.json
13d606c73195633ccd6ee08b761513ead56e27b5 data\create\loot_tables\blocks\natural_scoria.json ecd7afac9eb0989075fced6626e1061d5487c2f4 data\create\loot_tables\blocks\natural_scoria.json
6237eb3999181f1db09ca01b08e7785b70722d3b data\create\loot_tables\blocks\nozzle.json 6237eb3999181f1db09ca01b08e7785b70722d3b data\create\loot_tables\blocks\nozzle.json
a432e3e50f96cbef3efcffb7e7ed89bb2dc318de data\create\loot_tables\blocks\oak_window.json 0b2b142cfb3ebe9d4506e498a8e31f48d00db58d data\create\loot_tables\blocks\oak_window.json
95c624e05873f46ac74fe840f902986386546722 data\create\loot_tables\blocks\oak_window_pane.json 90cc4d5857f47c48e2b82f394de9567023c5c8ce data\create\loot_tables\blocks\oak_window_pane.json
1b8d1eef28233bd517eed40f23fc0c57b72bf2cd data\create\loot_tables\blocks\ornate_iron_window.json 267e9e24fac93e3496a80fcb6ed8e9d1c329d2d2 data\create\loot_tables\blocks\ornate_iron_window.json
a641ce4277d97dee2f6c19421e43f68b9d15d180 data\create\loot_tables\blocks\ornate_iron_window_pane.json 1fe77a16f4c86993b5fb30f1f48362787fd7cd0b data\create\loot_tables\blocks\ornate_iron_window_pane.json
8d91485a5f353c6fb84e16bd0d9d4a55aaeb31ab data\create\loot_tables\blocks\overgrown_andesite.json 8d91485a5f353c6fb84e16bd0d9d4a55aaeb31ab data\create\loot_tables\blocks\overgrown_andesite.json
2110e98310c61952b98100f01ea348dce062d945 data\create\loot_tables\blocks\overgrown_dark_scoria.json 2110e98310c61952b98100f01ea348dce062d945 data\create\loot_tables\blocks\overgrown_dark_scoria.json
552fa22bf8265abde5d7426681b18ef89a8f1159 data\create\loot_tables\blocks\overgrown_diorite.json 552fa22bf8265abde5d7426681b18ef89a8f1159 data\create\loot_tables\blocks\overgrown_diorite.json
@ -1942,18 +1964,18 @@ f70c5b7e7da7abffc82e3d1828499799883bbe85 data\create\loot_tables\blocks\secondar
e4f6dccb8bce21b5214c1d8cfb440fc0ba4159d7 data\create\loot_tables\blocks\sequenced_gearshift.json e4f6dccb8bce21b5214c1d8cfb440fc0ba4159d7 data\create\loot_tables\blocks\sequenced_gearshift.json
b127cb6920e6d7d9c8b2402cb186402a9a8dd3fc data\create\loot_tables\blocks\shaft.json b127cb6920e6d7d9c8b2402cb186402a9a8dd3fc data\create\loot_tables\blocks\shaft.json
70b6e82e9198d3910877e62c2eab86d46ca27089 data\create\loot_tables\blocks\speedometer.json 70b6e82e9198d3910877e62c2eab86d46ca27089 data\create\loot_tables\blocks\speedometer.json
de7b316679373e65101819aaa869a943a5d50c5e data\create\loot_tables\blocks\spruce_window.json a23a1e332c9ba84474e3c0588e8a0857afe346e0 data\create\loot_tables\blocks\spruce_window.json
d43db633e13e073a7e255495ed9fec0cb0e4917d data\create\loot_tables\blocks\spruce_window_pane.json 3ee2350936ea82fef716bc58e4cd088a384616f0 data\create\loot_tables\blocks\spruce_window_pane.json
8d2970acd61b96844a4308d87e858b1612d5862e data\create\loot_tables\blocks\sticky_mechanical_piston.json 8d2970acd61b96844a4308d87e858b1612d5862e data\create\loot_tables\blocks\sticky_mechanical_piston.json
ec2889e712702644092197a4b41a682fb953817d data\create\loot_tables\blocks\stockpile_switch.json ec2889e712702644092197a4b41a682fb953817d data\create\loot_tables\blocks\stockpile_switch.json
3479775008a256bc35f98b31655975f7d5c836b2 data\create\loot_tables\blocks\stressometer.json 3479775008a256bc35f98b31655975f7d5c836b2 data\create\loot_tables\blocks\stressometer.json
05e843ca6eb5e299bf41de123977a1045c120ad4 data\create\loot_tables\blocks\tiled_glass.json 05e843ca6eb5e299bf41de123977a1045c120ad4 data\create\loot_tables\blocks\tiled_glass.json
2082f3fb39185cb65555ab93178081a2f53f6046 data\create\loot_tables\blocks\tiled_glass_pane.json e999969f05d2625e61757aa82092d232b99f6e0a data\create\loot_tables\blocks\tiled_glass_pane.json
b201436ae6d2ad5a7d47dca0ee8c7016b4c28fa5 data\create\loot_tables\blocks\transposer.json b201436ae6d2ad5a7d47dca0ee8c7016b4c28fa5 data\create\loot_tables\blocks\transposer.json
7b66ad2c48449bafd0cdbd086ac41218cb73a814 data\create\loot_tables\blocks\turntable.json 7b66ad2c48449bafd0cdbd086ac41218cb73a814 data\create\loot_tables\blocks\turntable.json
5a47c1535c866184b4ffca65763f5676f319e0aa data\create\loot_tables\blocks\vertical_extractor.json 5a47c1535c866184b4ffca65763f5676f319e0aa data\create\loot_tables\blocks\vertical_extractor.json
eb3086010565ff1e83e30aa3712f82819bcc0e99 data\create\loot_tables\blocks\vertical_framed_glass.json 028e293b5cd694017962f67dc80dba719f904e28 data\create\loot_tables\blocks\vertical_framed_glass.json
15019b1b2b77e6be8a0f4ccd20f35ebb4a82a090 data\create\loot_tables\blocks\vertical_framed_glass_pane.json d0156602dd5f4a274c293df67e19374820c72890 data\create\loot_tables\blocks\vertical_framed_glass_pane.json
ed895ef7dcb97ad9b00d80a4fa9c331229dd532e data\create\loot_tables\blocks\vertical_funnel.json ed895ef7dcb97ad9b00d80a4fa9c331229dd532e data\create\loot_tables\blocks\vertical_funnel.json
dac789cf53b00eed34308848b5e267b7ccec090c data\create\loot_tables\blocks\vertical_linked_extractor.json dac789cf53b00eed34308848b5e267b7ccec090c data\create\loot_tables\blocks\vertical_linked_extractor.json
7af5a13c9e10903b11732fbc01ae3299328216f0 data\create\loot_tables\blocks\vertical_linked_transposer.json 7af5a13c9e10903b11732fbc01ae3299328216f0 data\create\loot_tables\blocks\vertical_linked_transposer.json
@ -1971,6 +1993,8 @@ e8f3af61d9a2fd1ff5b32c9bb474ed005e6d70c4 data\create\loot_tables\blocks\weathere
54358a64639957cc66ffa5296ff45723f7adf00e data\create\loot_tables\blocks\weathered_limestone_pillar.json 54358a64639957cc66ffa5296ff45723f7adf00e data\create\loot_tables\blocks\weathered_limestone_pillar.json
94661e726b3d19271550359ae898a5590939512e data\create\loot_tables\blocks\zinc_block.json 94661e726b3d19271550359ae898a5590939512e data\create\loot_tables\blocks\zinc_block.json
37248ca92d474e440b91c27e3c8e78e568328100 data\create\loot_tables\blocks\zinc_ore.json 37248ca92d474e440b91c27e3c8e78e568328100 data\create\loot_tables\blocks\zinc_ore.json
b65bac8bc2fbfd476040c1aab1c0588b8bd59ebe data\create\recipes\acacia_window.json
35b4da9c14da60584c32e959efc2223f64bb3ec2 data\create\recipes\acacia_window_pane.json
96bb0bceb7798c96d5cf9b9c24b8ef822080cb1e data\create\recipes\andesite_bricks_from_andesite_stonecutting.json 96bb0bceb7798c96d5cf9b9c24b8ef822080cb1e data\create\recipes\andesite_bricks_from_andesite_stonecutting.json
01867b07039615dc69bad1b9fd217a1d86e69062 data\create\recipes\andesite_bricks_slab.json 01867b07039615dc69bad1b9fd217a1d86e69062 data\create\recipes\andesite_bricks_slab.json
376ada0e08cc797c705c22ec35fe54baa5f24efe data\create\recipes\andesite_bricks_slab_from_andesite_bricks_stonecutting.json 376ada0e08cc797c705c22ec35fe54baa5f24efe data\create\recipes\andesite_bricks_slab_from_andesite_bricks_stonecutting.json
@ -1987,6 +2011,8 @@ bb88bb3c7656adb5159910c6c03a0b0d908ff10d data\create\recipes\andesite_cobbleston
51fa768e66043a7f5629b19b0bc7a4e95281037f data\create\recipes\andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json 51fa768e66043a7f5629b19b0bc7a4e95281037f data\create\recipes\andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json
a961cdd11e807bc4658bbdba6c278801b5981234 data\create\recipes\andesite_pillar.json a961cdd11e807bc4658bbdba6c278801b5981234 data\create\recipes\andesite_pillar.json
dcdad7a04838ef202b42f84a15243e3d2472b14e data\create\recipes\andesite_pillar_from_andesite_stonecutting.json dcdad7a04838ef202b42f84a15243e3d2472b14e data\create\recipes\andesite_pillar_from_andesite_stonecutting.json
2b291b77860254b7ba8500cf2199a04ca1fca7b5 data\create\recipes\birch_window.json
288d80210f7efb4664e2e9c9d9111049863e5f60 data\create\recipes\birch_window_pane.json
d5c30af1052332ff3ef6d837ca2bf51c51e14c8d data\create\recipes\brass_block.json d5c30af1052332ff3ef6d837ca2bf51c51e14c8d data\create\recipes\brass_block.json
8851b4a339f22bed4da120c3e34d1f32120d0d66 data\create\recipes\chiseled_dark_scoria_from_dark_scoria_stonecutting.json 8851b4a339f22bed4da120c3e34d1f32120d0d66 data\create\recipes\chiseled_dark_scoria_from_dark_scoria_stonecutting.json
66937d62734328f4bff6254e6755b3490d4dfa16 data\create\recipes\chiseled_dolomite_from_dolomite_stonecutting.json 66937d62734328f4bff6254e6755b3490d4dfa16 data\create\recipes\chiseled_dolomite_from_dolomite_stonecutting.json
@ -1996,6 +2022,8 @@ da9a919b476954c1de34826aa7706bf6056a8f12 data\create\recipes\chiseled_scoria_fro
09faa4ddcf9f3907dcdb3ab3e8b68c1deb2486e5 data\create\recipes\chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json 09faa4ddcf9f3907dcdb3ab3e8b68c1deb2486e5 data\create\recipes\chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json
386c52f0aad6e2239f31dc85f7e745b47230846b data\create\recipes\copper_block.json 386c52f0aad6e2239f31dc85f7e745b47230846b data\create\recipes\copper_block.json
f863c101808434316da5261b0274f09d80065ea5 data\create\recipes\copper_shingles.json f863c101808434316da5261b0274f09d80065ea5 data\create\recipes\copper_shingles.json
f2c317e03ac4d42fb631e1625607061e10c480fe data\create\recipes\dark_oak_window.json
d9dbae6e237eb38e53a619a0f1b339fca7c59b4d data\create\recipes\dark_oak_window_pane.json
55596a590962e3ddd40949917661f0bd94408274 data\create\recipes\dark_scoria_bricks_from_dark_scoria_stonecutting.json 55596a590962e3ddd40949917661f0bd94408274 data\create\recipes\dark_scoria_bricks_from_dark_scoria_stonecutting.json
2489fc29c47d3c9cb63f5f2f09dc79ea1ca1728e data\create\recipes\dark_scoria_bricks_slab.json 2489fc29c47d3c9cb63f5f2f09dc79ea1ca1728e data\create\recipes\dark_scoria_bricks_slab.json
86f4d54ebcc5bc8786c72167395d8efee833744c data\create\recipes\dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json 86f4d54ebcc5bc8786c72167395d8efee833744c data\create\recipes\dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json
@ -2107,6 +2135,8 @@ bd355332d17adcb0460b1d43146ca288efb78395 data\create\recipes\fancy_weathered_lim
d2ab9ce73636773165564506580f2ec13bd1fc50 data\create\recipes\fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json d2ab9ce73636773165564506580f2ec13bd1fc50 data\create\recipes\fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json
36947f27d2b2e57b00440fd5acd06a7554e5a387 data\create\recipes\fancy_weathered_limestone_bricks_wall.json 36947f27d2b2e57b00440fd5acd06a7554e5a387 data\create\recipes\fancy_weathered_limestone_bricks_wall.json
1d0e41ca98e48073c72adf4077610c96e592f9a5 data\create\recipes\fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json 1d0e41ca98e48073c72adf4077610c96e592f9a5 data\create\recipes\fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json
5b8bbde7f8b270ab75fac18d6858f2fadbc0efa3 data\create\recipes\framed_glass_from_glass_colorless_stonecutting.json
d697de0c9b706ca4e18da7a2d769e7e5fe8d769d data\create\recipes\framed_glass_pane.json
a0dae50faaa1b7142bb4309675e3084c68daa547 data\create\recipes\gabbro_bricks_from_gabbro_stonecutting.json a0dae50faaa1b7142bb4309675e3084c68daa547 data\create\recipes\gabbro_bricks_from_gabbro_stonecutting.json
a19f047fa8507e994eb026795c86bc10ff5c373b data\create\recipes\gabbro_bricks_slab.json a19f047fa8507e994eb026795c86bc10ff5c373b data\create\recipes\gabbro_bricks_slab.json
84d83643f7987864eca0e2ca7cda4330ad9f1f86 data\create\recipes\gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json 84d83643f7987864eca0e2ca7cda4330ad9f1f86 data\create\recipes\gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json
@ -2139,6 +2169,10 @@ fa02e54eaa63121998593403736ecbe86ae03518 data\create\recipes\granite_cobblestone
c84f7bfa2d901684dbc7c0afa133a9c87e6e9975 data\create\recipes\granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json c84f7bfa2d901684dbc7c0afa133a9c87e6e9975 data\create\recipes\granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json
41ba9d3b7b1b0eb99a61d69774ccc0490804e5d1 data\create\recipes\granite_pillar.json 41ba9d3b7b1b0eb99a61d69774ccc0490804e5d1 data\create\recipes\granite_pillar.json
d0c541bbefb9f3f861ae5751645493c8e1687b5c data\create\recipes\granite_pillar_from_granite_stonecutting.json d0c541bbefb9f3f861ae5751645493c8e1687b5c data\create\recipes\granite_pillar_from_granite_stonecutting.json
05908d48b6ac0c117da0b4b9ae4ae5e933ed900e data\create\recipes\horizontal_framed_glass_from_glass_colorless_stonecutting.json
4e8d49934f9899f788d45d4347bfc085b2836699 data\create\recipes\horizontal_framed_glass_pane.json
c3ccd16b7fe9878cc734d699b4c8b219ad556f46 data\create\recipes\jungle_window.json
76dab06d0bda78c4247f76d6a849e1aa083fceb1 data\create\recipes\jungle_window_pane.json
fc00b0e336c45698df1f94ad470f9941e19b0e24 data\create\recipes\layered_andesite_from_andesite_stonecutting.json fc00b0e336c45698df1f94ad470f9941e19b0e24 data\create\recipes\layered_andesite_from_andesite_stonecutting.json
7d66cee5fc4b1f4a94d05ada6ec731bb3a788d0e data\create\recipes\layered_dark_scoria_from_dark_scoria_stonecutting.json 7d66cee5fc4b1f4a94d05ada6ec731bb3a788d0e data\create\recipes\layered_dark_scoria_from_dark_scoria_stonecutting.json
938b2805fbed7a68afe26e4cf9b20ac5d3c3a91f data\create\recipes\layered_diorite_from_diorite_stonecutting.json 938b2805fbed7a68afe26e4cf9b20ac5d3c3a91f data\create\recipes\layered_diorite_from_diorite_stonecutting.json
@ -2173,6 +2207,10 @@ f343c547a57df1e26d29d1cbb3ffe1ef2cd14817 data\create\recipes\mossy_dolomite_from
f4ed015bde948b6330cd00f0ae2d05263d4eaa59 data\create\recipes\mossy_limestone_from_limestone_stonecutting.json f4ed015bde948b6330cd00f0ae2d05263d4eaa59 data\create\recipes\mossy_limestone_from_limestone_stonecutting.json
1e5efd72a84b858513cf7665334ddc17debbf6a2 data\create\recipes\mossy_scoria_from_scoria_stonecutting.json 1e5efd72a84b858513cf7665334ddc17debbf6a2 data\create\recipes\mossy_scoria_from_scoria_stonecutting.json
2545b5e7501404df697e3856620a51b63ec8cbfc data\create\recipes\mossy_weathered_limestone_from_weathered_limestone_stonecutting.json 2545b5e7501404df697e3856620a51b63ec8cbfc data\create\recipes\mossy_weathered_limestone_from_weathered_limestone_stonecutting.json
4865d07d0e07e22d41b961f0673041e087df7d5f data\create\recipes\oak_window.json
f06c8d1565a1f4d4914436b21e32d147de868d46 data\create\recipes\oak_window_pane.json
850e67f6f890de9cb8e4c6865aa4ecb8a316c240 data\create\recipes\ornate_iron_window.json
4ef1a7279f8deff6e2fd5fe027ec903694656bf9 data\create\recipes\ornate_iron_window_pane.json
d1cd83af24f6086fdc5e2a50bf43fe4e566afa37 data\create\recipes\overgrown_andesite_from_andesite_stonecutting.json d1cd83af24f6086fdc5e2a50bf43fe4e566afa37 data\create\recipes\overgrown_andesite_from_andesite_stonecutting.json
84691017310f584b19cdc492f0317e116c672390 data\create\recipes\overgrown_dark_scoria_from_dark_scoria_stonecutting.json 84691017310f584b19cdc492f0317e116c672390 data\create\recipes\overgrown_dark_scoria_from_dark_scoria_stonecutting.json
a5dde9dbbf0e64cc2079ecfc2bef714b001bf53d data\create\recipes\overgrown_diorite_from_diorite_stonecutting.json a5dde9dbbf0e64cc2079ecfc2bef714b001bf53d data\create\recipes\overgrown_diorite_from_diorite_stonecutting.json
@ -2309,6 +2347,12 @@ f7b7ff190929ae525297fecb3c116f32fc05fd88 data\create\recipes\scoria_cobblestone_
a9096822db9d12b6014d6d34e52de5821305c03f data\create\recipes\scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json a9096822db9d12b6014d6d34e52de5821305c03f data\create\recipes\scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json
a513468ce4d55fe3b3919bd76ba2bd5b6fac4d4e data\create\recipes\scoria_pillar.json a513468ce4d55fe3b3919bd76ba2bd5b6fac4d4e data\create\recipes\scoria_pillar.json
2e0ecbd3619f080d0fc6fe48307c5a5bcc2e91b4 data\create\recipes\scoria_pillar_from_scoria_stonecutting.json 2e0ecbd3619f080d0fc6fe48307c5a5bcc2e91b4 data\create\recipes\scoria_pillar_from_scoria_stonecutting.json
7a4e163767827fc8cef3646204c2f2bf0f8aac99 data\create\recipes\spruce_window.json
96d515ff0172dafa04d650ab69d68ed508e99e6f data\create\recipes\spruce_window_pane.json
1f689453146c7dd2d315e8b5fb5e7cdc0aaf0fa2 data\create\recipes\tiled_glass_from_glass_colorless_stonecutting.json
39bd4bcaad003edbe035c91ffde61c51ee1edb87 data\create\recipes\tiled_glass_pane.json
7c6778a30bb670762c3a410cb19d1effc55a7063 data\create\recipes\vertical_framed_glass_from_glass_colorless_stonecutting.json
dc6093427210bd7034a0e2184f6a1630c7b33b3e data\create\recipes\vertical_framed_glass_pane.json
f75f25d3259dd51c29bee6ada2a4540a7a2bbeab data\create\recipes\weathered_limestone_bricks_from_weathered_limestone_stonecutting.json f75f25d3259dd51c29bee6ada2a4540a7a2bbeab data\create\recipes\weathered_limestone_bricks_from_weathered_limestone_stonecutting.json
f58ef5eb552fc7dcd89f30aa4231286ecef5e00a data\create\recipes\weathered_limestone_bricks_slab.json f58ef5eb552fc7dcd89f30aa4231286ecef5e00a data\create\recipes\weathered_limestone_bricks_slab.json
ca9b163b3aaa526d6c3b070c2a7e50a56a38c6f4 data\create\recipes\weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json ca9b163b3aaa526d6c3b070c2a7e50a56a38c6f4 data\create\recipes\weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json
@ -2327,11 +2371,15 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data\create\recipes\weathered_limestone
11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data\create\recipes\weathered_limestone_pillar_from_weathered_limestone_stonecutting.json 11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data\create\recipes\weathered_limestone_pillar_from_weathered_limestone_stonecutting.json
266f08e604d229a9d2b46f7272c0b06ec270bf3d data\create\recipes\zinc_block.json 266f08e604d229a9d2b46f7272c0b06ec270bf3d data\create\recipes\zinc_block.json
d2dc4ff179ef7b2aa9276455c196e15d44aa95a8 data\create\tags\items\crushed_ores.json d2dc4ff179ef7b2aa9276455c196e15d44aa95a8 data\create\tags\items\crushed_ores.json
16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data\forge\tags\blocks\glass\colorless.json
81ced867d24ec814942909965dd4576eff1db685 data\forge\tags\blocks\glass_panes.json
4a0b13a9835106de9a1dd0a71a02372abb48e7b6 data\forge\tags\blocks\ores\copper.json 4a0b13a9835106de9a1dd0a71a02372abb48e7b6 data\forge\tags\blocks\ores\copper.json
d5ea262a0f5fb210612d22521818e26cf08e591a data\forge\tags\blocks\ores\zinc.json d5ea262a0f5fb210612d22521818e26cf08e591a data\forge\tags\blocks\ores\zinc.json
ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data\forge\tags\blocks\storage_blocks\brass.json ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data\forge\tags\blocks\storage_blocks\brass.json
f6c8f34ceb475546dba5cc6ff288863ea795d20b data\forge\tags\blocks\storage_blocks\copper.json f6c8f34ceb475546dba5cc6ff288863ea795d20b data\forge\tags\blocks\storage_blocks\copper.json
7f71a774800111e50b42de0e6159ed2d2a807d32 data\forge\tags\blocks\storage_blocks\zinc.json 7f71a774800111e50b42de0e6159ed2d2a807d32 data\forge\tags\blocks\storage_blocks\zinc.json
16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data\forge\tags\items\glass\colorless.json
81ced867d24ec814942909965dd4576eff1db685 data\forge\tags\items\glass_panes.json
2dfd21017cb51d4bdc18d977a7d16f103cc3a985 data\forge\tags\items\ingots\brass.json 2dfd21017cb51d4bdc18d977a7d16f103cc3a985 data\forge\tags\items\ingots\brass.json
8e0ca32df10a50544f54fbe3dbfe485971b23315 data\forge\tags\items\ingots\copper.json 8e0ca32df10a50544f54fbe3dbfe485971b23315 data\forge\tags\items\ingots\copper.json
2f9ac80569a5cc168061742f9e3c36277d4d056e data\forge\tags\items\ingots\zinc.json 2f9ac80569a5cc168061742f9e3c36277d4d056e data\forge\tags\items\ingots\zinc.json

View file

@ -382,55 +382,6 @@
"_": "->------------------------] We aren't in Registrate yet [------------------------<-", "_": "->------------------------] We aren't in Registrate yet [------------------------<-",
"item.create.wand_of_symmetry": "Staff of Symmetry",
"item.create.handheld_blockzapper": "Handheld Blockzapper",
"item.create.handheld_worldshaper": "Handheld Worldshaper",
"item.create.tree_fertilizer": "Tree Fertilizer",
"item.create.empty_schematic": "Empty Schematic",
"item.create.andesite_alloy": "Andesite Alloy",
"item.create.chromatic_compound": "Chromatic Compound",
"item.create.shadow_steel": "Shadow Steel",
"item.create.schematic_and_quill": "Schematic and Quill",
"item.create.schematic": "Schematic",
"item.create.belt_connector": "Mechanical Belt",
"item.create.goggles": "Engineer's Goggles",
"item.create.filter": "Filter",
"item.create.attribute_filter": "Attribute Filter",
"item.create.rose_quartz": "Rose Quartz",
"item.create.polished_rose_quartz": "Polished Rose Quartz",
"item.create.refined_radiance": "Refined Radiance",
"item.create.iron_sheet": "Iron Sheets",
"item.create.gold_sheet": "Gold Sheets",
"item.create.lapis_plate": "Lapis Plating",
"item.create.obsidian_dust": "Powdered Obsidian",
"item.create.propeller": "Propeller",
"item.create.whisk": "Whisk",
"item.create.brass_hand": "Hand",
"item.create.crafter_slot_cover": "Crafter Slot Cover",
"item.create.flour": "Wheat Flour",
"item.create.dough": "Dough",
"item.create.wrench": "Wrench",
"item.create.deforester": "Deforester",
"item.create.crushed_iron": "Crushed Iron Ore",
"item.create.crushed_gold": "Crushed Gold Ore",
"item.create.sand_paper": "Sand Paper",
"item.create.red_sand_paper": "Red Sand Paper",
"item.create.super_glue": "Super Glue",
"item.create.minecart_contraption": "Minecart with Contraption",
"item.create.brass_ingot": "Brass Ingot",
"item.create.brass_sheet": "Brass Sheets",
"item.create.brass_nugget": "Brass Nugget",
"item.create.crushed_brass": "Crushed Brass",
"item.create.zinc_ingot": "Zinc Bar",
"item.create.zinc_nugget": "Zinc Nugget",
"item.create.crushed_zinc": "Crushed Zinc",
"item.create.copper_sheet": "Copper Sheets",
"item.create.copper_ingot": "Copper Ingot",
"item.create.copper_nugget": "Copper Nugget",
"item.create.crushed_copper": "Crushed Copper",
"item.create.electron_tube": "Electron Tube",
"item.create.integrated_circuit": "Integrated Circuit",
"entity.create.contraption": "Moving Contraption", "entity.create.contraption": "Moving Contraption",
"entity.create.stationary_contraption": "Stationary Contraption", "entity.create.stationary_contraption": "Stationary Contraption",
"entity.create.super_glue": "Superglue", "entity.create.super_glue": "Superglue",

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:acacia_window"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "minecraft:acacia_planks"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:acacia_window"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:acacia_window_pane"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:acacia_window"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:acacia_window_pane"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:birch_window"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "minecraft:birch_planks"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:birch_window"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:birch_window_pane"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:birch_window"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:birch_window_pane"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:dark_oak_window"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "minecraft:dark_oak_planks"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:dark_oak_window"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:dark_oak_window_pane"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:dark_oak_window"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:dark_oak_window_pane"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:framed_glass_from_glass_colorless_stonecutting"
]
},
"criteria": {
"has_glass_colorless": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "forge:glass/colorless"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:framed_glass_from_glass_colorless_stonecutting"
}
}
},
"requirements": [
[
"has_glass_colorless",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:framed_glass_pane"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:framed_glass"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:framed_glass_pane"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:horizontal_framed_glass_from_glass_colorless_stonecutting"
]
},
"criteria": {
"has_glass_colorless": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "forge:glass/colorless"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:horizontal_framed_glass_from_glass_colorless_stonecutting"
}
}
},
"requirements": [
[
"has_glass_colorless",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:horizontal_framed_glass_pane"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:horizontal_framed_glass"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:horizontal_framed_glass_pane"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:jungle_window"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "minecraft:jungle_planks"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:jungle_window"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:jungle_window_pane"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:jungle_window"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:jungle_window_pane"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:oak_window"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "minecraft:oak_planks"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:oak_window"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:oak_window_pane"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:oak_window"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:oak_window_pane"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:ornate_iron_window"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:andesite_alloy"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:ornate_iron_window"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:ornate_iron_window_pane"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:ornate_iron_window"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:ornate_iron_window_pane"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:spruce_window"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "minecraft:spruce_planks"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:spruce_window"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:spruce_window_pane"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:spruce_window"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:spruce_window_pane"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:tiled_glass_from_glass_colorless_stonecutting"
]
},
"criteria": {
"has_glass_colorless": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "forge:glass/colorless"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:tiled_glass_from_glass_colorless_stonecutting"
}
}
},
"requirements": [
[
"has_glass_colorless",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:tiled_glass_pane"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:tiled_glass"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:tiled_glass_pane"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:vertical_framed_glass_from_glass_colorless_stonecutting"
]
},
"criteria": {
"has_glass_colorless": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "forge:glass/colorless"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:vertical_framed_glass_from_glass_colorless_stonecutting"
}
}
},
"requirements": [
[
"has_glass_colorless",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:vertical_framed_glass_pane"
]
},
"criteria": {
"has_ingredient": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:vertical_framed_glass"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:vertical_framed_glass_pane"
}
}
},
"requirements": [
[
"has_ingredient",
"has_the_recipe"
]
]
}

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -5,13 +5,37 @@
"rolls": 1, "rolls": 1,
"entries": [ "entries": [
{ {
"type": "minecraft:item", "type": "minecraft:alternatives",
"name": "create:natural_scoria" "children": [
} {
], "type": "minecraft:item",
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
],
"name": "create:natural_scoria"
},
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"name": "create:scoria"
}
]
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -11,7 +11,17 @@
], ],
"conditions": [ "conditions": [
{ {
"condition": "minecraft:survives_explosion" "condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
} }
] ]
} }

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
" # ",
"#X#"
],
"key": {
"#": {
"item": "minecraft:acacia_planks"
},
"X": {
"tag": "forge:glass/colorless"
}
},
"result": {
"item": "create:acacia_window",
"count": 2
}
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###"
],
"key": {
"#": {
"item": "create:acacia_window"
}
},
"result": {
"item": "create:acacia_window_pane",
"count": 16
}
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
" # ",
"#X#"
],
"key": {
"#": {
"item": "minecraft:birch_planks"
},
"X": {
"tag": "forge:glass/colorless"
}
},
"result": {
"item": "create:birch_window",
"count": 2
}
}

View file

@ -1,16 +1,16 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"pattern": [ "pattern": [
"###",
"###", "###",
"###" "###"
], ],
"key": { "key": {
"#": { "#": {
"tag": "forge:ingots/zinc" "item": "create:birch_window"
} }
}, },
"result": { "result": {
"item": "create:zinc_block" "item": "create:birch_window_pane",
"count": 16
} }
} }

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
" # ",
"#X#"
],
"key": {
"#": {
"item": "minecraft:dark_oak_planks"
},
"X": {
"tag": "forge:glass/colorless"
}
},
"result": {
"item": "create:dark_oak_window",
"count": 2
}
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###"
],
"key": {
"#": {
"item": "create:dark_oak_window"
}
},
"result": {
"item": "create:dark_oak_window_pane",
"count": 16
}
}

View file

@ -0,0 +1,8 @@
{
"type": "minecraft:stonecutting",
"ingredient": {
"tag": "forge:glass/colorless"
},
"result": "create:framed_glass",
"count": 1
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###"
],
"key": {
"#": {
"item": "create:framed_glass"
}
},
"result": {
"item": "create:framed_glass_pane",
"count": 16
}
}

View file

@ -0,0 +1,8 @@
{
"type": "minecraft:stonecutting",
"ingredient": {
"tag": "forge:glass/colorless"
},
"result": "create:horizontal_framed_glass",
"count": 1
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###"
],
"key": {
"#": {
"item": "create:horizontal_framed_glass"
}
},
"result": {
"item": "create:horizontal_framed_glass_pane",
"count": 16
}
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
" # ",
"#X#"
],
"key": {
"#": {
"item": "minecraft:jungle_planks"
},
"X": {
"tag": "forge:glass/colorless"
}
},
"result": {
"item": "create:jungle_window",
"count": 2
}
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###"
],
"key": {
"#": {
"item": "create:jungle_window"
}
},
"result": {
"item": "create:jungle_window_pane",
"count": 16
}
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
" # ",
"#X#"
],
"key": {
"#": {
"item": "minecraft:oak_planks"
},
"X": {
"tag": "forge:glass/colorless"
}
},
"result": {
"item": "create:oak_window",
"count": 2
}
}

View file

@ -1,16 +1,16 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"pattern": [ "pattern": [
"###",
"###", "###",
"###" "###"
], ],
"key": { "key": {
"#": { "#": {
"tag": "forge:ingots/brass" "item": "create:oak_window"
} }
}, },
"result": { "result": {
"item": "create:brass_block" "item": "create:oak_window_pane",
"count": 16
} }
} }

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
" # ",
"#X#"
],
"key": {
"#": {
"item": "create:andesite_alloy"
},
"X": {
"tag": "forge:glass/colorless"
}
},
"result": {
"item": "create:ornate_iron_window",
"count": 2
}
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###"
],
"key": {
"#": {
"item": "create:ornate_iron_window"
}
},
"result": {
"item": "create:ornate_iron_window_pane",
"count": 16
}
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
" # ",
"#X#"
],
"key": {
"#": {
"item": "minecraft:spruce_planks"
},
"X": {
"tag": "forge:glass/colorless"
}
},
"result": {
"item": "create:spruce_window",
"count": 2
}
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###"
],
"key": {
"#": {
"item": "create:spruce_window"
}
},
"result": {
"item": "create:spruce_window_pane",
"count": 16
}
}

View file

@ -0,0 +1,8 @@
{
"type": "minecraft:stonecutting",
"ingredient": {
"tag": "forge:glass/colorless"
},
"result": "create:tiled_glass",
"count": 1
}

View file

@ -1,16 +1,16 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"pattern": [ "pattern": [
"###",
"###", "###",
"###" "###"
], ],
"key": { "key": {
"#": { "#": {
"tag": "forge:ingots/copper" "item": "create:tiled_glass"
} }
}, },
"result": { "result": {
"item": "create:copper_block" "item": "create:tiled_glass_pane",
"count": 16
} }
} }

View file

@ -0,0 +1,8 @@
{
"type": "minecraft:stonecutting",
"ingredient": {
"tag": "forge:glass/colorless"
},
"result": "create:vertical_framed_glass",
"count": 1
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###"
],
"key": {
"#": {
"item": "create:vertical_framed_glass"
}
},
"result": {
"item": "create:vertical_framed_glass_pane",
"count": 16
}
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"create:tiled_glass",
"create:framed_glass",
"create:horizontal_framed_glass",
"create:vertical_framed_glass"
]
}

View file

@ -0,0 +1,16 @@
{
"replace": false,
"values": [
"create:tiled_glass_pane",
"create:framed_glass_pane",
"create:horizontal_framed_glass_pane",
"create:vertical_framed_glass_pane",
"create:oak_window_pane",
"create:spruce_window_pane",
"create:birch_window_pane",
"create:jungle_window_pane",
"create:acacia_window_pane",
"create:dark_oak_window_pane",
"create:ornate_iron_window_pane"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"create:tiled_glass",
"create:framed_glass",
"create:horizontal_framed_glass",
"create:vertical_framed_glass"
]
}

View file

@ -0,0 +1,16 @@
{
"replace": false,
"values": [
"create:tiled_glass_pane",
"create:framed_glass_pane",
"create:horizontal_framed_glass_pane",
"create:vertical_framed_glass_pane",
"create:oak_window_pane",
"create:spruce_window_pane",
"create:birch_window_pane",
"create:jungle_window_pane",
"create:acacia_window_pane",
"create:dark_oak_window_pane",
"create:ornate_iron_window_pane"
]
}

View file

@ -815,7 +815,6 @@ public class AllBlocks {
.initialProperties(() -> Blocks.IRON_BLOCK) .initialProperties(() -> Blocks.IRON_BLOCK)
.item() .item()
.transform(oxidizedItemModel()) .transform(oxidizedItemModel())
.recipe((ctx, prov) -> prov.square(DataIngredient.tag(forgeItemTag("plates/copper")), ctx, true))
.transform(oxidizedBlockstate()) .transform(oxidizedBlockstate())
.register(); .register();

View file

@ -24,7 +24,7 @@ public class AllTags {
.item() .item()
.tag(forgeItemTag(tagName)); .tag(forgeItemTag(tagName));
} }
public static Tag<Block> forgeBlockTag(String name) { public static Tag<Block> forgeBlockTag(String name) {
return forgeTag(BlockTags.getCollection(), name); return forgeTag(BlockTags.getCollection(), name);
} }

View file

@ -0,0 +1,102 @@
package com.simibubi.create.content.curiosities.zapper;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.networking.NbtPacket;
import com.simibubi.create.foundation.utility.BlockHelper;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.NBTUtil;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.state.properties.StairsShape;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.RayTraceContext;
import net.minecraft.util.math.RayTraceContext.BlockMode;
import net.minecraft.util.math.RayTraceContext.FluidMode;
import net.minecraft.util.math.Vec3d;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
@EventBusSubscriber(value = Dist.CLIENT)
public class ZapperInteractionHandler {
@SubscribeEvent
public static void leftClickingTheZapperSelectsANewBlock(PlayerInteractEvent.LeftClickEmpty event) {
ItemStack heldItem = event.getPlayer()
.getHeldItemMainhand();
if (heldItem.getItem() instanceof ZapperItem && trySelect(heldItem, event.getPlayer()))
AllPackets.channel.sendToServer(new NbtPacket(heldItem, Hand.MAIN_HAND));
}
@SubscribeEvent
public static void leftClickingBlocksWithTheZapperSelectsTheBlock(PlayerInteractEvent.LeftClickBlock event) {
ItemStack heldItem = event.getPlayer()
.getHeldItemMainhand();
if (heldItem.getItem() instanceof ZapperItem && trySelect(heldItem, event.getPlayer())) {
event.setCancellationResult(ActionResultType.FAIL);
event.setCanceled(true);
AllPackets.channel.sendToServer(new NbtPacket(heldItem, Hand.MAIN_HAND));
}
}
public static boolean trySelect(ItemStack stack, PlayerEntity player) {
if (player.isSneaking())
return false;
Vec3d start = player.getPositionVec()
.add(0, player.getEyeHeight(), 0);
Vec3d range = player.getLookVec()
.scale(getRange(stack));
BlockRayTraceResult raytrace = player.world
.rayTraceBlocks(new RayTraceContext(start, start.add(range), BlockMode.OUTLINE, FluidMode.NONE, player));
BlockPos pos = raytrace.getPos();
if (pos == null)
return false;
player.world.sendBlockBreakProgress(player.getEntityId(), pos, -1);
BlockState newState = player.world.getBlockState(pos);
if (BlockHelper.getRequiredItem(newState)
.isEmpty())
return false;
if (player.world.getTileEntity(pos) != null)
return false;
if (newState.has(BlockStateProperties.DOUBLE_BLOCK_HALF))
return false;
if (newState.has(BlockStateProperties.ATTACHED))
return false;
if (newState.has(BlockStateProperties.HANGING))
return false;
if (newState.has(BlockStateProperties.BED_PART))
return false;
if (newState.has(BlockStateProperties.STAIRS_SHAPE))
newState = newState.with(BlockStateProperties.STAIRS_SHAPE, StairsShape.STRAIGHT);
if (newState.has(BlockStateProperties.PERSISTENT))
newState = newState.with(BlockStateProperties.PERSISTENT, true);
CompoundNBT tag = stack.getOrCreateTag();
if (tag.contains("BlockUsed") && NBTUtil.readBlockState(stack.getTag()
.getCompound("BlockUsed")) == newState)
return false;
tag.put("BlockUsed", NBTUtil.writeBlockState(newState));
player.world.playSound(player, player.getPosition(), AllSoundEvents.BLOCKZAPPER_CONFIRM.get(),
SoundCategory.BLOCKS, 0.5f, 0.8f);
return true;
}
public static int getRange(ItemStack stack) {
if (stack.getItem() instanceof ZapperItem)
return ((ZapperItem) stack.getItem()).getZappingRange(stack);
return 0;
}
}

View file

@ -5,7 +5,6 @@ import java.util.List;
import com.simibubi.create.AllSoundEvents; import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.foundation.item.ItemDescription; import com.simibubi.create.foundation.item.ItemDescription;
import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.utility.BlockHelper;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
@ -21,8 +20,6 @@ import net.minecraft.item.Rarity;
import net.minecraft.item.UseAction; import net.minecraft.item.UseAction;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.NBTUtil; import net.minecraft.nbt.NBTUtil;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.state.properties.StairsShape;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.ActionResultType; import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
@ -217,6 +214,11 @@ public abstract class ZapperItem extends Item {
.setCooldown(item.getItem(), dual ? delay * 2 / 3 : delay); .setCooldown(item.getItem(), dual ? delay * 2 / 3 : delay);
} }
@Override
public boolean onEntitySwing(ItemStack stack, LivingEntity entity) {
return true;
}
@Override @Override
public boolean canPlayerBreakBlockWhileHolding(BlockState state, World worldIn, BlockPos pos, PlayerEntity player) { public boolean canPlayerBreakBlockWhileHolding(BlockState state, World worldIn, BlockPos pos, PlayerEntity player) {
return false; return false;
@ -227,56 +229,4 @@ public abstract class ZapperItem extends Item {
return UseAction.NONE; return UseAction.NONE;
} }
@Override
public boolean onEntitySwing(ItemStack stack, LivingEntity entity) {
if (!(entity instanceof PlayerEntity))
return false;
if (entity.isSneaking())
return true;
if (entity.world.isRemote)
return true;
Vec3d start = entity.getPositionVec()
.add(0, entity.getEyeHeight(), 0);
Vec3d range = entity.getLookVec()
.scale(getZappingRange(stack));
BlockRayTraceResult raytrace = entity.world
.rayTraceBlocks(new RayTraceContext(start, start.add(range), BlockMode.OUTLINE, FluidMode.NONE, entity));
BlockPos pos = raytrace.getPos();
if (pos == null)
return true;
entity.world.sendBlockBreakProgress(entity.getEntityId(), pos, -1);
BlockState newState = entity.world.getBlockState(pos);
if (BlockHelper.getRequiredItem(newState)
.isEmpty())
return true;
if (entity.world.getTileEntity(pos) != null)
return true;
if (newState.has(BlockStateProperties.DOUBLE_BLOCK_HALF))
return true;
if (newState.has(BlockStateProperties.ATTACHED))
return true;
if (newState.has(BlockStateProperties.HANGING))
return true;
if (newState.has(BlockStateProperties.BED_PART))
return true;
if (newState.has(BlockStateProperties.STAIRS_SHAPE))
newState = newState.with(BlockStateProperties.STAIRS_SHAPE, StairsShape.STRAIGHT);
if (newState.has(BlockStateProperties.PERSISTENT))
newState = newState.with(BlockStateProperties.PERSISTENT, true);
CompoundNBT tag = stack.getOrCreateTag();
if (tag.contains("BlockUsed") && NBTUtil.readBlockState(stack.getTag()
.getCompound("BlockUsed")) == newState)
return true;
tag.put("BlockUsed", NBTUtil.writeBlockState(newState));
entity.world.playSound(null, entity.getPosition(), AllSoundEvents.BLOCKZAPPER_CONFIRM.get(),
SoundCategory.BLOCKS, 0.5f, 0.8f);
return true;
}
} }

View file

@ -8,6 +8,7 @@ import java.util.Set;
import com.simibubi.create.AllItems; import com.simibubi.create.AllItems;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.content.curiosities.zapper.PlacementPatterns; import com.simibubi.create.content.curiosities.zapper.PlacementPatterns;
import com.simibubi.create.content.curiosities.zapper.ZapperInteractionHandler;
import com.simibubi.create.content.curiosities.zapper.ZapperItem; import com.simibubi.create.content.curiosities.zapper.ZapperItem;
import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.advancement.AllTriggers;
import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.gui.ScreenOpener;
@ -189,7 +190,7 @@ public class BlockzapperItem extends ZapperItem {
Vec3d start = player.getPositionVec() Vec3d start = player.getPositionVec()
.add(0, player.getEyeHeight(), 0); .add(0, player.getEyeHeight(), 0);
Vec3d range = player.getLookVec() Vec3d range = player.getLookVec()
.scale(getRange(stack)); .scale(ZapperInteractionHandler.getRange(stack));
BlockRayTraceResult raytrace = player.world BlockRayTraceResult raytrace = player.world
.rayTraceBlocks(new RayTraceContext(start, start.add(range), BlockMode.COLLIDER, FluidMode.NONE, player)); .rayTraceBlocks(new RayTraceContext(start, start.add(range), BlockMode.COLLIDER, FluidMode.NONE, player));
BlockPos pos = raytrace.getPos() BlockPos pos = raytrace.getPos()
@ -315,10 +316,6 @@ public class BlockzapperItem extends ZapperItem {
@Override @Override
protected int getZappingRange(ItemStack stack) { protected int getZappingRange(ItemStack stack) {
return getRange(stack);
}
public static int getRange(ItemStack stack) {
ComponentTier tier = getTier(Components.Scope, stack); ComponentTier tier = getTier(Components.Scope, stack);
if (tier == ComponentTier.None) if (tier == ComponentTier.None)
return 15; return 15;

View file

@ -33,8 +33,8 @@ public class AdjustableCrateScreen extends AbstractSimiContainerScreen<Adjustabl
private List<Rectangle2d> extraAreas; private List<Rectangle2d> extraAreas;
private final ItemStack renderedItem = new ItemStack(AllBlocks.ADJUSTABLE_CRATE.get()); private final ItemStack renderedItem = new ItemStack(AllBlocks.ADJUSTABLE_CRATE.get());
private final String title = Lang.translate("gui.flexcrate.title"); private final String title = Lang.translate("gui.adjustable_crate.title");
private final String storageSpace = Lang.translate("gui.flexcrate.storageSpace"); private final String storageSpace = Lang.translate("gui.adjustable_crate.storageSpace");
public AdjustableCrateScreen(AdjustableCrateContainer container, PlayerInventory inv, ITextComponent title) { public AdjustableCrateScreen(AdjustableCrateContainer container, PlayerInventory inv, ITextComponent title) {
super(container, inv, title); super(container, inv, title);

View file

@ -24,13 +24,13 @@ public class StockpileSwitchScreen extends AbstractSimiScreen {
private ScrollInput onAbove; private ScrollInput onAbove;
private Label onAboveLabel; private Label onAboveLabel;
private final String title = Lang.translate("gui.stockswitch.title"); private final String title = Lang.translate("gui.stockpile_switch.title");
private final String startAbove = Lang.translate("gui.stockswitch.startAbove"); private final String startAbove = Lang.translate("gui.stockpile_switch.startAbove");
private final String startAt = Lang.translate("gui.stockswitch.startAt"); private final String startAt = Lang.translate("gui.stockpile_switch.startAt");
private final String stopBelow = Lang.translate("gui.stockswitch.stopBelow"); private final String stopBelow = Lang.translate("gui.stockpile_switch.stopBelow");
private final String stopAt = Lang.translate("gui.stockswitch.stopAt"); private final String stopAt = Lang.translate("gui.stockpile_switch.stopAt");
private final String lowerLimit = Lang.translate("gui.stockswitch.lowerLimit"); private final String lowerLimit = Lang.translate("gui.stockpile_switch.lowerLimit");
private final String upperLimit = Lang.translate("gui.stockswitch.upperLimit"); private final String upperLimit = Lang.translate("gui.stockpile_switch.upperLimit");
private final ItemStack renderedItem = new ItemStack(AllBlocks.STOCKPILE_SWITCH.get()); private final ItemStack renderedItem = new ItemStack(AllBlocks.STOCKPILE_SWITCH.get());
private int lastModification; private int lastModification;

View file

@ -7,6 +7,7 @@ import static com.simibubi.create.foundation.data.WindowGen.framedGlassPane;
import static com.simibubi.create.foundation.data.WindowGen.woodenWindowBlock; import static com.simibubi.create.foundation.data.WindowGen.woodenWindowBlock;
import static com.simibubi.create.foundation.data.WindowGen.woodenWindowPane; import static com.simibubi.create.foundation.data.WindowGen.woodenWindowPane;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllSpriteShifts; import com.simibubi.create.AllSpriteShifts;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.content.AllSections; import com.simibubi.create.content.AllSections;
@ -17,6 +18,8 @@ import com.simibubi.create.foundation.data.CreateRegistrate;
import com.simibubi.create.foundation.data.WindowGen; import com.simibubi.create.foundation.data.WindowGen;
import com.tterrag.registrate.providers.DataGenContext; import com.tterrag.registrate.providers.DataGenContext;
import com.tterrag.registrate.providers.RegistrateBlockstateProvider; import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
import com.tterrag.registrate.providers.loot.RegistrateBlockLootTables;
import com.tterrag.registrate.util.DataIngredient;
import com.tterrag.registrate.util.entry.BlockEntry; import com.tterrag.registrate.util.entry.BlockEntry;
import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullBiConsumer;
@ -27,20 +30,25 @@ import net.minecraft.block.SandBlock;
import net.minecraft.block.WoodType; import net.minecraft.block.WoodType;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.Tags;
public class AllPaletteBlocks { public class AllPaletteBlocks {
private static final CreateRegistrate REGISTRATE = Create.registrate() private static final CreateRegistrate REGISTRATE = Create.registrate()
.itemGroup(() -> Create.palettesCreativeTab) .itemGroup(() -> Create.palettesCreativeTab)
.startSection(AllSections.PALETTES); .startSection(AllSections.PALETTES);
// Windows and Glass // Windows and Glass
public static final BlockEntry<GlassBlock> TILED_GLASS = REGISTRATE.block("tiled_glass", GlassBlock::new) public static final BlockEntry<GlassBlock> TILED_GLASS = REGISTRATE.block("tiled_glass", GlassBlock::new)
.initialProperties(() -> Blocks.GLASS) .initialProperties(() -> Blocks.GLASS)
.addLayer(() -> RenderType::getCutoutMipped) .addLayer(() -> RenderType::getCutoutMipped)
.recipe((c, p) -> p.stonecutting(DataIngredient.tag(Tags.Items.GLASS_COLORLESS), c::get))
.blockstate(palettesCubeAll()) .blockstate(palettesCubeAll())
.simpleItem() .tag(Tags.Blocks.GLASS_COLORLESS)
.item()
.tag(Tags.Items.GLASS_COLORLESS)
.build()
.register(); .register();
public static final BlockEntry<ConnectedGlassBlock> FRAMED_GLASS = public static final BlockEntry<ConnectedGlassBlock> FRAMED_GLASS =
@ -51,33 +59,34 @@ public class AllPaletteBlocks {
framedGlass("vertical_framed_glass", new HorizontalCTBehaviour(AllSpriteShifts.VERTICAL_FRAMED_GLASS)); framedGlass("vertical_framed_glass", new HorizontalCTBehaviour(AllSpriteShifts.VERTICAL_FRAMED_GLASS));
public static final BlockEntry<GlassPaneBlock> TILED_GLASS_PANE = public static final BlockEntry<GlassPaneBlock> TILED_GLASS_PANE =
WindowGen.standardGlassPane("tiled_glass", Create.asResource("block/palettes/tiled_glass"), WindowGen.standardGlassPane("tiled_glass", TILED_GLASS, Create.asResource("block/palettes/tiled_glass"),
new ResourceLocation("block/glass_pane_top"), () -> RenderType::getCutoutMipped); new ResourceLocation("block/glass_pane_top"), () -> RenderType::getCutoutMipped);
public static final BlockEntry<ConnectedGlassPaneBlock> FRAMED_GLASS_PANE = public static final BlockEntry<ConnectedGlassPaneBlock> FRAMED_GLASS_PANE =
framedGlassPane("framed_glass", AllSpriteShifts.FRAMED_GLASS), framedGlassPane("framed_glass", FRAMED_GLASS, AllSpriteShifts.FRAMED_GLASS),
HORIZONTAL_FRAMED_GLASS_PANE = framedGlassPane("horizontal_framed_glass", AllSpriteShifts.HORIZONTAL_FRAMED_GLASS), HORIZONTAL_FRAMED_GLASS_PANE = framedGlassPane("horizontal_framed_glass", HORIZONTAL_FRAMED_GLASS,
VERTICAL_FRAMED_GLASS_PANE = framedGlassPane("vertical_framed_glass", AllSpriteShifts.VERTICAL_FRAMED_GLASS); AllSpriteShifts.HORIZONTAL_FRAMED_GLASS),
VERTICAL_FRAMED_GLASS_PANE =
framedGlassPane("vertical_framed_glass", VERTICAL_FRAMED_GLASS, AllSpriteShifts.VERTICAL_FRAMED_GLASS);
public static final BlockEntry<WindowBlock> public static final BlockEntry<WindowBlock> OAK_WINDOW = woodenWindowBlock(WoodType.OAK, Blocks.OAK_PLANKS),
OAK_WINDOW = woodenWindowBlock(WoodType.OAK), SPRUCE_WINDOW = woodenWindowBlock(WoodType.SPRUCE, Blocks.SPRUCE_PLANKS),
SPRUCE_WINDOW = woodenWindowBlock(WoodType.SPRUCE), BIRCH_WINDOW = woodenWindowBlock(WoodType.BIRCH, Blocks.BIRCH_PLANKS, () -> RenderType::getTranslucent),
BIRCH_WINDOW = woodenWindowBlock(WoodType.BIRCH, () -> RenderType::getTranslucent), JUNGLE_WINDOW = woodenWindowBlock(WoodType.JUNGLE, Blocks.JUNGLE_PLANKS),
JUNGLE_WINDOW = woodenWindowBlock(WoodType.JUNGLE), ACACIA_WINDOW = woodenWindowBlock(WoodType.ACACIA, Blocks.ACACIA_PLANKS),
ACACIA_WINDOW = woodenWindowBlock(WoodType.ACACIA), DARK_OAK_WINDOW = woodenWindowBlock(WoodType.DARK_OAK, Blocks.DARK_OAK_PLANKS),
DARK_OAK_WINDOW = woodenWindowBlock(WoodType.DARK_OAK), ORNATE_IRON_WINDOW = customWindowBlock("ornate_iron_window", AllItems.ANDESITE_ALLOY,
ORNATE_IRON_WINDOW = AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::getCutoutMipped);
customWindowBlock("ornate_iron_window", AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::getCutoutMipped);
public static final BlockEntry<ConnectedGlassPaneBlock> public static final BlockEntry<ConnectedGlassPaneBlock> OAK_WINDOW_PANE =
OAK_WINDOW_PANE = woodenWindowPane(WoodType.OAK), woodenWindowPane(WoodType.OAK, OAK_WINDOW),
SPRUCE_WINDOW_PANE = woodenWindowPane(WoodType.SPRUCE), SPRUCE_WINDOW_PANE = woodenWindowPane(WoodType.SPRUCE, SPRUCE_WINDOW),
BIRCH_WINDOW_PANE = woodenWindowPane(WoodType.BIRCH, () -> RenderType::getTranslucent), BIRCH_WINDOW_PANE = woodenWindowPane(WoodType.BIRCH, BIRCH_WINDOW, () -> RenderType::getTranslucent),
JUNGLE_WINDOW_PANE = woodenWindowPane(WoodType.JUNGLE), JUNGLE_WINDOW_PANE = woodenWindowPane(WoodType.JUNGLE, JUNGLE_WINDOW),
ACACIA_WINDOW_PANE = woodenWindowPane(WoodType.ACACIA), ACACIA_WINDOW_PANE = woodenWindowPane(WoodType.ACACIA, ACACIA_WINDOW),
DARK_OAK_WINDOW_PANE = woodenWindowPane(WoodType.DARK_OAK), DARK_OAK_WINDOW_PANE = woodenWindowPane(WoodType.DARK_OAK, DARK_OAK_WINDOW),
ORNATE_IRON_WINDOW_PANE = ORNATE_IRON_WINDOW_PANE = customWindowPane("ornate_iron_window", ORNATE_IRON_WINDOW,
customWindowPane("ornate_iron_window", AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::getCutoutMipped); AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::getCutoutMipped);
// Vanilla stone variant patterns // Vanilla stone variant patterns
@ -87,8 +96,8 @@ public class AllPaletteBlocks {
public static final PalettesVariantEntry DIORITE_VARIANTS = public static final PalettesVariantEntry DIORITE_VARIANTS =
new PalettesVariantEntry(PaletteStoneVariants.DIORITE, PaletteBlockPatterns.vanillaRange, () -> Blocks.DIORITE); new PalettesVariantEntry(PaletteStoneVariants.DIORITE, PaletteBlockPatterns.vanillaRange, () -> Blocks.DIORITE);
public static final PalettesVariantEntry ANDESITE_VARIANTS = public static final PalettesVariantEntry ANDESITE_VARIANTS = new PalettesVariantEntry(PaletteStoneVariants.ANDESITE,
new PalettesVariantEntry(PaletteStoneVariants.ANDESITE, PaletteBlockPatterns.vanillaRange, () -> Blocks.ANDESITE); PaletteBlockPatterns.vanillaRange, () -> Blocks.ANDESITE);
// Create stone variants // Create stone variants
@ -109,8 +118,8 @@ public class AllPaletteBlocks {
REGISTRATE.baseBlock("weathered_limestone", Block::new, () -> Blocks.SANDSTONE) REGISTRATE.baseBlock("weathered_limestone", Block::new, () -> Blocks.SANDSTONE)
.register(); .register();
public static final PalettesVariantEntry WEATHERED_LIMESTONE_VARIANTS = public static final PalettesVariantEntry WEATHERED_LIMESTONE_VARIANTS = new PalettesVariantEntry(
new PalettesVariantEntry(PaletteStoneVariants.WEATHERED_LIMESTONE, PaletteBlockPatterns.standardRange, WEATHERED_LIMESTONE); PaletteStoneVariants.WEATHERED_LIMESTONE, PaletteBlockPatterns.standardRange, WEATHERED_LIMESTONE);
public static final BlockEntry<Block> DOLOMITE = public static final BlockEntry<Block> DOLOMITE =
REGISTRATE.baseBlock("dolomite", Block::new, () -> Blocks.QUARTZ_BLOCK) REGISTRATE.baseBlock("dolomite", Block::new, () -> Blocks.QUARTZ_BLOCK)
@ -125,16 +134,17 @@ public class AllPaletteBlocks {
public static final PalettesVariantEntry GABBRO_VARIANTS = public static final PalettesVariantEntry GABBRO_VARIANTS =
new PalettesVariantEntry(PaletteStoneVariants.GABBRO, PaletteBlockPatterns.standardRange, GABBRO); new PalettesVariantEntry(PaletteStoneVariants.GABBRO, PaletteBlockPatterns.standardRange, GABBRO);
public static final BlockEntry<Block> SCORIA = REGISTRATE.baseBlock("scoria", Block::new, () -> Blocks.ANDESITE)
.register();
public static final BlockEntry<Block> NATURAL_SCORIA = REGISTRATE.block("natural_scoria", Block::new) public static final BlockEntry<Block> NATURAL_SCORIA = REGISTRATE.block("natural_scoria", Block::new)
.initialProperties(() -> Blocks.ANDESITE) .initialProperties(() -> Blocks.ANDESITE)
.onRegister(CreateRegistrate.blockVertexColors(new ScoriaVertexColor())) .onRegister(CreateRegistrate.blockVertexColors(new ScoriaVertexColor()))
.loot((p, g) -> p.registerLootTable(g, RegistrateBlockLootTables.droppingWithSilkTouch(g, SCORIA.get())))
.blockstate(palettesCubeAll()) .blockstate(palettesCubeAll())
.simpleItem() .simpleItem()
.register(); .register();
public static final BlockEntry<Block> SCORIA = REGISTRATE.baseBlock("scoria", Block::new, () -> Blocks.ANDESITE)
.register();
public static final PalettesVariantEntry SCORIA_VARIANTS = public static final PalettesVariantEntry SCORIA_VARIANTS =
new PalettesVariantEntry(PaletteStoneVariants.SCORIA, PaletteBlockPatterns.standardRange, SCORIA); new PalettesVariantEntry(PaletteStoneVariants.SCORIA, PaletteBlockPatterns.standardRange, SCORIA);

View file

@ -17,6 +17,7 @@ import com.simibubi.create.foundation.block.connected.GlassPaneCTBehaviour;
import com.simibubi.create.foundation.block.connected.HorizontalCTBehaviour; import com.simibubi.create.foundation.block.connected.HorizontalCTBehaviour;
import com.tterrag.registrate.providers.DataGenContext; import com.tterrag.registrate.providers.DataGenContext;
import com.tterrag.registrate.providers.RegistrateBlockstateProvider; import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
import com.tterrag.registrate.util.DataIngredient;
import com.tterrag.registrate.util.entry.BlockEntry; import com.tterrag.registrate.util.entry.BlockEntry;
import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullBiConsumer;
import com.tterrag.registrate.util.nullness.NonNullConsumer; import com.tterrag.registrate.util.nullness.NonNullConsumer;
@ -27,41 +28,53 @@ import net.minecraft.block.Block.Properties;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
import net.minecraft.block.WoodType; import net.minecraft.block.WoodType;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.data.ShapedRecipeBuilder;
import net.minecraft.util.IItemProvider;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.generators.ModelFile; import net.minecraftforge.client.model.generators.ModelFile;
import net.minecraftforge.common.Tags;
public class WindowGen { public class WindowGen {
private static final CreateRegistrate REGISTRATE = Create.registrate(); private static final CreateRegistrate REGISTRATE = Create.registrate();
public static BlockEntry<WindowBlock> woodenWindowBlock(WoodType woodType) { public static BlockEntry<WindowBlock> woodenWindowBlock(WoodType woodType, Block planksBlock) {
return woodenWindowBlock(woodType, () -> RenderType::getCutoutMipped); return woodenWindowBlock(woodType, planksBlock, () -> RenderType::getCutoutMipped);
} }
public static BlockEntry<WindowBlock> customWindowBlock(String name, CTSpriteShiftEntry ct, public static BlockEntry<WindowBlock> customWindowBlock(String name, Supplier<? extends IItemProvider> ingredient,
Supplier<Supplier<RenderType>> renderType) { CTSpriteShiftEntry ct, Supplier<Supplier<RenderType>> renderType) {
NonNullFunction<String, ResourceLocation> end_texture = n -> Create.asResource(palettesDir() + name + "_end"); NonNullFunction<String, ResourceLocation> end_texture = n -> Create.asResource(palettesDir() + name + "_end");
NonNullFunction<String, ResourceLocation> side_texture = n -> Create.asResource(palettesDir() + n); NonNullFunction<String, ResourceLocation> side_texture = n -> Create.asResource(palettesDir() + n);
return windowBlock(name, ct, renderType, end_texture, side_texture); return windowBlock(name, ingredient, ct, renderType, end_texture, side_texture);
} }
public static BlockEntry<WindowBlock> woodenWindowBlock(WoodType woodType, public static BlockEntry<WindowBlock> woodenWindowBlock(WoodType woodType, Block planksBlock,
Supplier<Supplier<RenderType>> renderType) { Supplier<Supplier<RenderType>> renderType) {
String woodName = woodType.getName(); String woodName = woodType.getName();
String name = woodName + "_window"; String name = woodName + "_window";
NonNullFunction<String, ResourceLocation> end_texture = NonNullFunction<String, ResourceLocation> end_texture =
$ -> new ResourceLocation("block/" + woodName + "_planks"); $ -> new ResourceLocation("block/" + woodName + "_planks");
NonNullFunction<String, ResourceLocation> side_texture = n -> Create.asResource(palettesDir() + n); NonNullFunction<String, ResourceLocation> side_texture = n -> Create.asResource(palettesDir() + n);
return windowBlock(name, AllSpriteShifts.getWoodenWindow(woodType), renderType, end_texture, side_texture); return windowBlock(name, () -> planksBlock, AllSpriteShifts.getWoodenWindow(woodType), renderType, end_texture,
side_texture);
} }
public static BlockEntry<WindowBlock> windowBlock(String name, CTSpriteShiftEntry ct, public static BlockEntry<WindowBlock> windowBlock(String name, Supplier<? extends IItemProvider> ingredient,
Supplier<Supplier<RenderType>> renderType, NonNullFunction<String, ResourceLocation> endTexture, CTSpriteShiftEntry ct, Supplier<Supplier<RenderType>> renderType,
NonNullFunction<String, ResourceLocation> sideTexture) { NonNullFunction<String, ResourceLocation> endTexture, NonNullFunction<String, ResourceLocation> sideTexture) {
return REGISTRATE.block(name, WindowBlock::new) return REGISTRATE.block(name, WindowBlock::new)
.onRegister(connectedTextures(new HorizontalCTBehaviour(ct))) .onRegister(connectedTextures(new HorizontalCTBehaviour(ct)))
.addLayer(renderType) .addLayer(renderType)
.recipe((c, p) -> ShapedRecipeBuilder.shapedRecipe(c.get(), 2)
.patternLine(" # ")
.patternLine("#X#")
.key('#', ingredient.get())
.key('X', DataIngredient.tag(Tags.Items.GLASS_COLORLESS))
.addCriterion("has_ingredient", p.hasItem(ingredient.get()))
.build(p::accept))
.initialProperties(() -> Blocks.GLASS) .initialProperties(() -> Blocks.GLASS)
.loot((t, g) -> t.registerSilkTouch(g))
.blockstate((c, p) -> p.simpleBlock(c.get(), p.models() .blockstate((c, p) -> p.simpleBlock(c.get(), p.models()
.cubeColumn(c.getName(), sideTexture.apply(c.getName()), endTexture.apply(c.getName())))) .cubeColumn(c.getName(), sideTexture.apply(c.getName()), endTexture.apply(c.getName()))))
.simpleItem() .simpleItem()
@ -73,55 +86,62 @@ public class WindowGen {
.onRegister(connectedTextures(behaviour)) .onRegister(connectedTextures(behaviour))
.addLayer(() -> RenderType::getTranslucent) .addLayer(() -> RenderType::getTranslucent)
.initialProperties(() -> Blocks.GLASS) .initialProperties(() -> Blocks.GLASS)
.loot((t, g) -> t.registerSilkTouch(g))
.recipe((c, p) -> p.stonecutting(DataIngredient.tag(Tags.Items.GLASS_COLORLESS), c::get))
.blockstate((c, p) -> BlockStateGen.cubeAll(c, p, "palettes/", "framed_glass")) .blockstate((c, p) -> BlockStateGen.cubeAll(c, p, "palettes/", "framed_glass"))
.tag(Tags.Blocks.GLASS_COLORLESS)
.item() .item()
.tag(Tags.Items.GLASS_COLORLESS)
.model((c, p) -> p.cubeColumn(c.getName(), p.modLoc(palettesDir() + c.getName()), .model((c, p) -> p.cubeColumn(c.getName(), p.modLoc(palettesDir() + c.getName()),
p.modLoc("block/palettes/framed_glass"))) p.modLoc("block/palettes/framed_glass")))
.build() .build()
.register(); .register();
} }
public static BlockEntry<ConnectedGlassPaneBlock> framedGlassPane(String name, CTSpriteShiftEntry ctshift) { public static BlockEntry<ConnectedGlassPaneBlock> framedGlassPane(String name, Supplier<? extends Block> parent,
CTSpriteShiftEntry ctshift) {
ResourceLocation sideTexture = Create.asResource(palettesDir() + "framed_glass"); ResourceLocation sideTexture = Create.asResource(palettesDir() + "framed_glass");
ResourceLocation itemSideTexture = Create.asResource(palettesDir() + name); ResourceLocation itemSideTexture = Create.asResource(palettesDir() + name);
ResourceLocation topTexture = Create.asResource(palettesDir() + "framed_glass_pane_top"); ResourceLocation topTexture = Create.asResource(palettesDir() + "framed_glass_pane_top");
Supplier<Supplier<RenderType>> renderType = () -> RenderType::getTranslucent; Supplier<Supplier<RenderType>> renderType = () -> RenderType::getTranslucent;
return connectedGlassPane(name, ctshift, sideTexture, itemSideTexture, topTexture, renderType); return connectedGlassPane(name, parent, ctshift, sideTexture, itemSideTexture, topTexture, renderType);
} }
public static BlockEntry<ConnectedGlassPaneBlock> customWindowPane(String name, CTSpriteShiftEntry ctshift, public static BlockEntry<ConnectedGlassPaneBlock> customWindowPane(String name, Supplier<? extends Block> parent,
Supplier<Supplier<RenderType>> renderType) { CTSpriteShiftEntry ctshift, Supplier<Supplier<RenderType>> renderType) {
ResourceLocation topTexture = Create.asResource(palettesDir() + name + "_pane_top"); ResourceLocation topTexture = Create.asResource(palettesDir() + name + "_pane_top");
ResourceLocation sideTexture = Create.asResource(palettesDir() + name); ResourceLocation sideTexture = Create.asResource(palettesDir() + name);
return connectedGlassPane(name, ctshift, sideTexture, sideTexture, topTexture, renderType); return connectedGlassPane(name, parent, ctshift, sideTexture, sideTexture, topTexture, renderType);
}
public static BlockEntry<ConnectedGlassPaneBlock> woodenWindowPane(WoodType woodType) {
return woodenWindowPane(woodType, () -> RenderType::getCutoutMipped);
} }
public static BlockEntry<ConnectedGlassPaneBlock> woodenWindowPane(WoodType woodType, public static BlockEntry<ConnectedGlassPaneBlock> woodenWindowPane(WoodType woodType,
Supplier<Supplier<RenderType>> renderType) { Supplier<? extends Block> parent) {
return woodenWindowPane(woodType, parent, () -> RenderType::getCutoutMipped);
}
public static BlockEntry<ConnectedGlassPaneBlock> woodenWindowPane(WoodType woodType,
Supplier<? extends Block> parent, Supplier<Supplier<RenderType>> renderType) {
String woodName = woodType.getName(); String woodName = woodType.getName();
String name = woodName + "_window"; String name = woodName + "_window";
ResourceLocation topTexture = new ResourceLocation("block/" + woodName + "_planks"); ResourceLocation topTexture = new ResourceLocation("block/" + woodName + "_planks");
ResourceLocation sideTexture = Create.asResource(palettesDir() + name); ResourceLocation sideTexture = Create.asResource(palettesDir() + name);
return connectedGlassPane(name, AllSpriteShifts.getWoodenWindow(woodType), sideTexture, sideTexture, topTexture, return connectedGlassPane(name, parent, AllSpriteShifts.getWoodenWindow(woodType), sideTexture, sideTexture,
renderType); topTexture, renderType);
} }
public static BlockEntry<GlassPaneBlock> standardGlassPane(String name, ResourceLocation sideTexture, public static BlockEntry<GlassPaneBlock> standardGlassPane(String name, Supplier<? extends Block> parent,
ResourceLocation topTexture, Supplier<Supplier<RenderType>> renderType) { ResourceLocation sideTexture, ResourceLocation topTexture, Supplier<Supplier<RenderType>> renderType) {
NonNullBiConsumer<DataGenContext<Block, GlassPaneBlock>, RegistrateBlockstateProvider> stateProvider = NonNullBiConsumer<DataGenContext<Block, GlassPaneBlock>, RegistrateBlockstateProvider> stateProvider =
(c, p) -> p.paneBlock(c.get(), sideTexture, topTexture); (c, p) -> p.paneBlock(c.get(), sideTexture, topTexture);
return glassPane(name, sideTexture, topTexture, GlassPaneBlock::new, renderType, $ -> { return glassPane(name, parent, sideTexture, topTexture, GlassPaneBlock::new, renderType, $ -> {
}, stateProvider); }, stateProvider);
} }
private static BlockEntry<ConnectedGlassPaneBlock> connectedGlassPane(String name, CTSpriteShiftEntry ctshift, private static BlockEntry<ConnectedGlassPaneBlock> connectedGlassPane(String name, Supplier<? extends Block> parent,
ResourceLocation sideTexture, ResourceLocation itemSideTexture, ResourceLocation topTexture, CTSpriteShiftEntry ctshift, ResourceLocation sideTexture, ResourceLocation itemSideTexture,
Supplier<Supplier<RenderType>> renderType) { ResourceLocation topTexture, Supplier<Supplier<RenderType>> renderType) {
NonNullConsumer<? super ConnectedGlassPaneBlock> connectedTextures = connectedTextures(new GlassPaneCTBehaviour(ctshift)); NonNullConsumer<? super ConnectedGlassPaneBlock> connectedTextures =
connectedTextures(new GlassPaneCTBehaviour(ctshift));
String CGPparents = "block/connected_glass_pane/"; String CGPparents = "block/connected_glass_pane/";
String prefix = name + "_pane_"; String prefix = name + "_pane_";
@ -136,8 +156,8 @@ public class WindowGen {
(c, p) -> p.paneBlock(c.get(), post.apply(p), side.apply(p), sideAlt.apply(p), noSide.apply(p), (c, p) -> p.paneBlock(c.get(), post.apply(p), side.apply(p), sideAlt.apply(p), noSide.apply(p),
noSideAlt.apply(p)); noSideAlt.apply(p));
return glassPane(name, itemSideTexture, topTexture, ConnectedGlassPaneBlock::new, renderType, connectedTextures, return glassPane(name, parent, itemSideTexture, topTexture, ConnectedGlassPaneBlock::new, renderType,
stateProvider); connectedTextures, stateProvider);
} }
private static Function<RegistrateBlockstateProvider, ModelFile> getPaneModelProvider(String CGPparents, private static Function<RegistrateBlockstateProvider, ModelFile> getPaneModelProvider(String CGPparents,
@ -148,9 +168,9 @@ public class WindowGen {
.texture("edge", topTexture); .texture("edge", topTexture);
} }
private static <G extends GlassPaneBlock> BlockEntry<G> glassPane(String name, ResourceLocation sideTexture, private static <G extends GlassPaneBlock> BlockEntry<G> glassPane(String name, Supplier<? extends Block> parent,
ResourceLocation topTexture, NonNullFunction<Properties, G> factory, Supplier<Supplier<RenderType>> renderType, ResourceLocation sideTexture, ResourceLocation topTexture, NonNullFunction<Properties, G> factory,
NonNullConsumer<? super G> connectedTextures, Supplier<Supplier<RenderType>> renderType, NonNullConsumer<? super G> connectedTextures,
NonNullBiConsumer<DataGenContext<Block, G>, RegistrateBlockstateProvider> stateProvider) { NonNullBiConsumer<DataGenContext<Block, G>, RegistrateBlockstateProvider> stateProvider) {
name += "_pane"; name += "_pane";
@ -159,7 +179,16 @@ public class WindowGen {
.addLayer(renderType) .addLayer(renderType)
.initialProperties(() -> Blocks.GLASS_PANE) .initialProperties(() -> Blocks.GLASS_PANE)
.blockstate(stateProvider) .blockstate(stateProvider)
.recipe((c, p) -> ShapedRecipeBuilder.shapedRecipe(c.get(), 16)
.patternLine("###")
.patternLine("###")
.key('#', parent.get())
.addCriterion("has_ingredient", p.hasItem(parent.get()))
.build(p::accept))
.tag(Tags.Blocks.GLASS_PANES)
.loot((t, g) -> t.registerSilkTouch(g))
.item() .item()
.tag(Tags.Items.GLASS_PANES)
.model((c, p) -> p.withExistingParent(c.getName(), new ResourceLocation(Create.ID, "item/pane")) .model((c, p) -> p.withExistingParent(c.getName(), new ResourceLocation(Create.ID, "item/pane"))
.texture("pane", sideTexture) .texture("pane", sideTexture)
.texture("edge", topTexture)) .texture("edge", topTexture))

View file

@ -1,58 +1,5 @@
{ {
"item.create.wand_of_symmetry": "Staff of Symmetry",
"item.create.handheld_blockzapper": "Handheld Blockzapper",
"item.create.handheld_worldshaper": "Handheld Worldshaper",
"item.create.tree_fertilizer": "Tree Fertilizer",
"item.create.empty_schematic": "Empty Schematic",
"item.create.andesite_alloy": "Andesite Alloy",
"item.create.chromatic_compound": "Chromatic Compound",
"item.create.shadow_steel": "Shadow Steel",
"item.create.schematic_and_quill": "Schematic and Quill",
"item.create.schematic": "Schematic",
"item.create.belt_connector": "Mechanical Belt",
"item.create.goggles": "Engineer's Goggles",
"item.create.filter": "Filter",
"item.create.attribute_filter": "Attribute Filter",
"item.create.rose_quartz": "Rose Quartz",
"item.create.polished_rose_quartz": "Polished Rose Quartz",
"item.create.refined_radiance": "Refined Radiance",
"item.create.iron_sheet": "Iron Sheets",
"item.create.gold_sheet": "Gold Sheets",
"item.create.lapis_plate": "Lapis Plating",
"item.create.obsidian_dust": "Powdered Obsidian",
"item.create.propeller": "Propeller",
"item.create.whisk": "Whisk",
"item.create.brass_hand": "Hand",
"item.create.crafter_slot_cover": "Crafter Slot Cover",
"item.create.flour": "Wheat Flour",
"item.create.dough": "Dough",
"item.create.wrench": "Wrench",
"item.create.deforester": "Deforester",
"item.create.crushed_iron": "Crushed Iron Ore",
"item.create.crushed_gold": "Crushed Gold Ore",
"item.create.sand_paper": "Sand Paper",
"item.create.red_sand_paper": "Red Sand Paper",
"item.create.super_glue": "Super Glue",
"item.create.minecart_contraption": "Minecart with Contraption",
"item.create.brass_ingot": "Brass Ingot",
"item.create.brass_sheet": "Brass Sheets",
"item.create.brass_nugget": "Brass Nugget",
"item.create.crushed_brass": "Crushed Brass",
"item.create.zinc_ingot": "Zinc Bar",
"item.create.zinc_nugget": "Zinc Nugget",
"item.create.crushed_zinc": "Crushed Zinc",
"item.create.copper_sheet": "Copper Sheets",
"item.create.copper_ingot": "Copper Ingot",
"item.create.copper_nugget": "Copper Nugget",
"item.create.crushed_copper": "Crushed Copper",
"item.create.electron_tube": "Electron Tube",
"item.create.integrated_circuit": "Integrated Circuit",
"entity.create.contraption": "Moving Contraption", "entity.create.contraption": "Moving Contraption",
"entity.create.stationary_contraption": "Stationary Contraption", "entity.create.stationary_contraption": "Stationary Contraption",
"entity.create.super_glue": "Superglue" "entity.create.super_glue": "Superglue"
} }