Merge branch 'mc1.15/dev' into mc1.16/dev

This commit is contained in:
simibubi 2020-11-30 18:54:13 +01:00
commit 2888ba9f39
62 changed files with 526 additions and 984 deletions

View File

@ -49,7 +49,7 @@ b59324f051f21d8ce1a48a08f4721a61a3c414d6 assets/create/blockstates/chute.json
1f33834c685e3243882acfe20183fe64dfa872be assets/create/blockstates/clutch.json
e5e3757e99c139d67b2a70288466d8a74d818841 assets/create/blockstates/cogwheel.json
36f54136a7756c97f71bc6b47ef4e8e575e72879 assets/create/blockstates/content_observer.json
c309aead7e052aef770baebfb4d0e65dfd257b66 assets/create/blockstates/controller_rail.json
cfea7283f0ebd2432d67e80a523f2a12e24c0bd5 assets/create/blockstates/controller_rail.json
f8eff64c75fc599e9a44a003f54ae9931cd8ce7c assets/create/blockstates/copper_block.json
cabf6b8c59eb0e3d56a0a5a856ca058bb3200882 assets/create/blockstates/copper_casing.json
3355a852cdc717e257ca19b3db836068964733e3 assets/create/blockstates/copper_ore.json
@ -140,7 +140,7 @@ fc652317e03b57c76e23a805da16a28d15254029 assets/create/blockstates/fancy_scoria_
fc9ac0a7e7191b93516719455a17177fa6524ecc assets/create/blockstates/fancy_weathered_limestone_bricks_slab.json
b2a7c321b1795f20e7433f81a55ce4683de081b8 assets/create/blockstates/fancy_weathered_limestone_bricks_stairs.json
8e532856c3c2b4e4e59c65a2a81a694e35d14658 assets/create/blockstates/fancy_weathered_limestone_bricks_wall.json
3d97226b5e8d8f70ed08e45e78db1faf78d5e28b assets/create/blockstates/fluid_pipe.json
6e9589feb7fab2ac3bed5b4d70be383dfd7e9d7c assets/create/blockstates/fluid_pipe.json
f0eaab18e16c4f3f65ebf3b55b08f0dc445720fe assets/create/blockstates/fluid_tank.json
5408d92ab02af86539ac42971d4033545970bb3a assets/create/blockstates/fluid_valve.json
e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets/create/blockstates/flywheel.json
@ -334,7 +334,7 @@ e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets/create/blockstates/powered_toggl
d06cd9a1101b18d306a786320aab12018b1325d6 assets/create/blockstates/purple_sail.json
92957119abd5fbcca36a113b2a80255fd70fc303 assets/create/blockstates/purple_seat.json
61035f8afe75ff7bbd291da5d8690bcbebe679eb assets/create/blockstates/purple_valve_handle.json
8d7e653bfd9846e684a0d3725595714a19201017 assets/create/blockstates/radial_chassis.json
4bb26546ac954604a0317b059f2c36a1123772cb assets/create/blockstates/radial_chassis.json
45877c4d90a7185c2f304edbd67379d800920439 assets/create/blockstates/red_sail.json
da1b08387af7afa0855ee8d040f620c01f20660a assets/create/blockstates/red_seat.json
722fc77bbf387af8a4016e42cbf9501d2b968881 assets/create/blockstates/red_valve_handle.json
@ -399,16 +399,16 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
0818cf173b4de38b28dc3350d57265cb2cfeecef assets/create/lang/en_ud.json
5583aad2ad39680a334b4a5bf36309a90189ae97 assets/create/lang/en_us.json
aa1b156e35c1f1d98984b6fc21439aad38c3fa2d assets/create/lang/unfinished/de_de.json
8f7bbbbc4da32798751742300a57403e40e842d3 assets/create/lang/unfinished/fr_fr.json
59f771f54220e922f2d3b3b351b279357142b158 assets/create/lang/unfinished/it_it.json
3ce96d122be8a453ebbd0d233386cf139e6925e3 assets/create/lang/unfinished/ja_jp.json
46ba934fcbc2d106d5011be1642f5e64b046ec2e assets/create/lang/unfinished/ko_kr.json
de37a1e084aa6ed4e64aa11907a204730ba5794c assets/create/lang/unfinished/nl_nl.json
59f7da327f9b9bafd916c0cb2c23811cec112ae4 assets/create/lang/unfinished/pt_br.json
368657c789f9297d5e7bb994e637e41f9928e111 assets/create/lang/unfinished/ru_ru.json
b84418c554f0a373cf036dffb15bdcf8f081d904 assets/create/lang/unfinished/zh_cn.json
a7bab585394476bcd60cd1830e683e0442d11146 assets/create/lang/en_us.json
2e28b75914db0ce50cb932ad39184733295a133a assets/create/lang/unfinished/de_de.json
4d0851a65217705fa9fdc853f97ba7e018fa9c85 assets/create/lang/unfinished/fr_fr.json
cc26369f8f17da973a85518f63465a08fc2eb7e4 assets/create/lang/unfinished/it_it.json
60bd143d7aeee9d25e66871545195abc1f04d521 assets/create/lang/unfinished/ja_jp.json
d92aa511fe1efb9ed17995e19cf2b556f7297ad0 assets/create/lang/unfinished/ko_kr.json
271f510a7024eaf0f66251f4d65240dad598d277 assets/create/lang/unfinished/nl_nl.json
d3b9a27d8d4f198e7dd2e13f1dbdb734dc89bafe assets/create/lang/unfinished/pt_br.json
1822ab6835574ef6e00db85d8c06ed8749bfa31a assets/create/lang/unfinished/ru_ru.json
c70d14495882c22790c6072c642e81d412c5a4ac assets/create/lang/unfinished/zh_cn.json
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json
@ -1216,7 +1216,7 @@ c1da21be9f1af4f7a2ef4ec9cd92195d65ada316 assets/create/models/item/clockwork_bea
0a2a0f0aafeab0088172f77afd40c1fa2cc1f2b8 assets/create/models/item/clutch.json
dcb09deae110077bcddf090996b51cc66e9a7de3 assets/create/models/item/cogwheel.json
7717e3b21cff39f497f07687c70c1fa40eaa756d assets/create/models/item/content_observer.json
affb7308b2ff8341d8be1d34c38ee2126d6b48b9 assets/create/models/item/controller_rail.json
e903818e22c6286af8e09dc01551335174a83fe0 assets/create/models/item/controller_rail.json
965a90a882d85dba93b30af9bce7ecf8e68ce747 assets/create/models/item/copper_block.json
759bcb5fe7dfdd628716f9b4ff19a5ab00393381 assets/create/models/item/copper_casing.json
c2a320162daa2d24cef969d1d14a0cbd55eb574f assets/create/models/item/copper_ingot.json
@ -1653,6 +1653,7 @@ d3ca638ffbca177b4970f046f6c42770e757e33e data/create/advancements/recipes/create
a49a70403523bc9d4eadffdac5507806aca9fd9d data/create/advancements/recipes/create.base/crafting/kinetics/clockwork_bearing.json
403fd0da8ee42a52234e544cf532e454fb80137b data/create/advancements/recipes/create.base/crafting/kinetics/clutch.json
5bbaac432fce5435c8c3df56ec81d31a0b76a4ee data/create/advancements/recipes/create.base/crafting/kinetics/cogwheel.json
b42213bffce4e51618e1bba481959208d247c120 data/create/advancements/recipes/create.base/crafting/kinetics/controller_rail.json
27930edef02aac6e74bfab62128688ecfb575008 data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle.json
512e4d45657f6df3df2639040e8c5e76f9119f17 data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle_from_others.json
7b80f6b25e1e21e9545120592bc1a3561ee49603 data/create/advancements/recipes/create.base/crafting/kinetics/crafter_slot_cover.json
@ -2671,10 +2672,11 @@ c50077a130bc43cd3659faa02ce95789399478b2 data/create/recipes/crafting/kinetics/b
a3c99b38fc8896c9971a5e9dcbae747786ff610d data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json
43233c87cfb80d57345a561c3dd2646c8d3c0d8a data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json
860796dce8756c4cd234f18bbe52108f3b2254c2 data/create/recipes/crafting/kinetics/cart_assembler.json
3bc3510b64e576d68b19f4ceb5d9bd6591dbcf6c data/create/recipes/crafting/kinetics/chute.json
abf8a28b4b8ae4ba15beed938736ef3a5a7b27ff data/create/recipes/crafting/kinetics/chute.json
a80e3eabbeba2931d0d58dd9492018a0d78da8b5 data/create/recipes/crafting/kinetics/clockwork_bearing.json
501ad764d087b40ce36f3d4256b0d5ee25b2081e data/create/recipes/crafting/kinetics/clutch.json
e46bcc6778ff5118252fe6371ef817ae1302253a data/create/recipes/crafting/kinetics/cogwheel.json
11fe2ccc11f470e5735c3e848a944f889697ff73 data/create/recipes/crafting/kinetics/controller_rail.json
3093be508f6597eee2f3230cd9072f12d2821a6f data/create/recipes/crafting/kinetics/copper_valve_handle.json
886caa21481e62d44d70fd103f8d29f9bac64d60 data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json
59db5170cec390fe6c20a27d6154deebe044580c data/create/recipes/crafting/kinetics/crafter_slot_cover.json
@ -2832,6 +2834,7 @@ b83ef0af844ca068e0353330b8273bace5b6a8c3 data/create/recipes/crushing/coal_ore.j
da4ed79975391ec9f263869936b84474f1f727d3 data/create/recipes/crushing/copper_block.json
d49472887067c871943de1b80887b169682eeca9 data/create/recipes/crushing/copper_ore.json
4c482db5575b74b4111800602d7fce22b2e6d32a data/create/recipes/crushing/diamond_horse_armor.json
28ba8cf655bd11bb6c600cd862b98349c812915f data/create/recipes/crushing/diamond_ore.json
e1bb927c62c59f5bf5063bd110da9231de378a1f data/create/recipes/crushing/emerald_ore.json
b26b1f0dccf2ffb194ce12173890a83e93369b39 data/create/recipes/crushing/glowstone.json
50e75cdde6996c47b5dc25f27b84367040249107 data/create/recipes/crushing/gold_ore.json
@ -3347,7 +3350,7 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data/create/recipes/weathered_limestone
0f3c993eb6dd3f37953f304b8fad15bf60469ef4 data/create/recipes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json
6eceb25fabbb6b389ca35de3b829ad061c9c456a data/create/recipes/weathered_limestone_pillar.json
11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data/create/recipes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json
f9ecec40e11a87de73c9dc7c2963c1cb10b1a180 data/create/tags/blocks/brittle.json
eedf31af7134d03656c5fa57229982f9c5bed07c data/create/tags/blocks/brittle.json
13b55d6e905a02403d2e95e9ba2357f99c5f2241 data/create/tags/blocks/fan_heaters.json
3bc64e3a1e7980237435b1770a9ba2102d57fcd4 data/create/tags/blocks/fan_transparent.json
74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/blocks/non_movable.json

View File

@ -1,724 +1,49 @@
{
"variants": {
"backwards=false,power=0,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_off"
"backwards=false,shape=north_south": {
"model": "create:block/controller_rail/block_north_south"
},
"backwards=true,power=0,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_off",
"backwards=true,shape=north_south": {
"model": "create:block/controller_rail/block_north_south",
"y": 180
},
"backwards=false,power=1,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
"backwards=false,shape=east_west": {
"model": "create:block/controller_rail/block_north_south",
"y": 270
},
"backwards=true,power=1,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"backwards=true,shape=east_west": {
"model": "create:block/controller_rail/block_north_south",
"y": 90
},
"backwards=false,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south",
"y": 270
},
"backwards=true,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north",
"y": 90
},
"backwards=false,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north",
"y": 270
},
"backwards=true,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south",
"y": 90
},
"backwards=false,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north"
},
"backwards=true,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south",
"y": 180
},
"backwards=false,power=2,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
"backwards=false,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south"
},
"backwards=true,power=2,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"backwards=true,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north",
"y": 180
},
"backwards=false,power=3,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
},
"backwards=true,power=3,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 180
},
"backwards=false,power=4,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
},
"backwards=true,power=4,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 180
},
"backwards=false,power=5,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
},
"backwards=true,power=5,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 180
},
"backwards=false,power=6,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
},
"backwards=true,power=6,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 180
},
"backwards=false,power=7,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
},
"backwards=true,power=7,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 180
},
"backwards=false,power=8,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
},
"backwards=true,power=8,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 180
},
"backwards=false,power=9,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
},
"backwards=true,power=9,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 180
},
"backwards=false,power=10,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
},
"backwards=true,power=10,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 180
},
"backwards=false,power=11,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
},
"backwards=true,power=11,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 180
},
"backwards=false,power=12,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
},
"backwards=true,power=12,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 180
},
"backwards=false,power=13,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
},
"backwards=true,power=13,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 180
},
"backwards=false,power=14,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog"
},
"backwards=true,power=14,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 180
},
"backwards=false,power=15,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_on"
},
"backwards=true,power=15,shape=north_south": {
"model": "create:block/controller_rail/block_north_south_on",
"y": 180
},
"backwards=false,power=0,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_off",
"y": 270
},
"backwards=true,power=0,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_off",
"y": 90
},
"backwards=false,power=1,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=1,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=2,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=2,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=3,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=3,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=4,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=4,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=5,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=5,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=6,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=6,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=7,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=7,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=8,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=8,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=9,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=9,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=10,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=10,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=11,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=11,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=12,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=12,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=13,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=13,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=14,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 270
},
"backwards=true,power=14,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_analog",
"y": 90
},
"backwards=false,power=15,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_on",
"y": 270
},
"backwards=true,power=15,shape=east_west": {
"model": "create:block/controller_rail/block_north_south_on",
"y": 90
},
"backwards=false,power=0,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_off",
"y": 90
},
"backwards=true,power=0,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_off",
"y": 270
},
"backwards=false,power=1,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=1,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=2,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=2,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=3,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=3,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=4,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=4,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=5,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=5,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=6,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=6,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=7,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=7,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=8,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=8,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=9,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=9,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=10,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=10,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=11,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=11,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=12,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=12,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=13,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=13,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=14,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 90
},
"backwards=true,power=14,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 270
},
"backwards=false,power=15,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_north_on",
"y": 90
},
"backwards=true,power=15,shape=ascending_east": {
"model": "create:block/controller_rail/block_ascending_south_on",
"y": 270
},
"backwards=false,power=0,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_off",
"y": 270
},
"backwards=true,power=0,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_off",
"y": 90
},
"backwards=false,power=1,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=1,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=2,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=2,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=3,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=3,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=4,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=4,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=5,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=5,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=6,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=6,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=7,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=7,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=8,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=8,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=9,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=9,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=10,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=10,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=11,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=11,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=12,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=12,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=13,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=13,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=14,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 270
},
"backwards=true,power=14,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 90
},
"backwards=false,power=15,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_north_on",
"y": 270
},
"backwards=true,power=15,shape=ascending_west": {
"model": "create:block/controller_rail/block_ascending_south_on",
"y": 90
},
"backwards=false,power=0,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_off"
},
"backwards=true,power=0,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_off",
"y": 180
},
"backwards=false,power=1,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=1,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=2,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=2,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=3,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=3,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=4,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=4,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=5,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=5,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=6,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=6,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=7,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=7,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=8,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=8,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=9,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=9,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=10,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=10,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=11,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=11,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=12,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=12,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=13,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=13,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=14,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_analog"
},
"backwards=true,power=14,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_analog",
"y": 180
},
"backwards=false,power=15,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_north_on"
},
"backwards=true,power=15,shape=ascending_north": {
"model": "create:block/controller_rail/block_ascending_south_on",
"y": 180
},
"backwards=false,power=0,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_off",
"y": 180
},
"backwards=true,power=0,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_off"
},
"backwards=false,power=1,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=1,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=2,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=2,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=3,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=3,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=4,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=4,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=5,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=5,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=6,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=6,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=7,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=7,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=8,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=8,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=9,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=9,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=10,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=10,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=11,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=11,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=12,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=12,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=13,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=13,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=14,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_analog",
"y": 180
},
"backwards=true,power=14,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_analog"
},
"backwards=false,power=15,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_north_on",
"y": 180
},
"backwards=true,power=15,shape=ascending_south": {
"model": "create:block/controller_rail/block_ascending_south_on"
}
}
}

View File

@ -303,8 +303,8 @@
{
"when": {
"west": "false",
"down": "false",
"east": "true",
"down": "false",
"up": "true"
},
"apply": {
@ -314,8 +314,8 @@
{
"when": {
"west": "true",
"down": "false",
"east": "false",
"down": "false",
"up": "true"
},
"apply": {
@ -325,8 +325,8 @@
{
"when": {
"west": "false",
"down": "true",
"east": "true",
"down": "true",
"up": "false"
},
"apply": {
@ -336,8 +336,8 @@
{
"when": {
"west": "true",
"down": "true",
"east": "false",
"down": "true",
"up": "false"
},
"apply": {
@ -347,8 +347,8 @@
{
"when": {
"west": "false",
"down": "true",
"east": "false",
"down": "true",
"up": "true"
},
"apply": {
@ -358,8 +358,8 @@
{
"when": {
"west": "false",
"down": "false",
"east": "false",
"down": "false",
"up": "true"
},
"apply": {
@ -369,8 +369,8 @@
{
"when": {
"west": "false",
"down": "true",
"east": "false",
"down": "true",
"up": "false"
},
"apply": {
@ -380,8 +380,8 @@
{
"when": {
"west": "true",
"down": "false",
"east": "true",
"down": "false",
"up": "false"
},
"apply": {
@ -391,8 +391,8 @@
{
"when": {
"west": "false",
"down": "false",
"east": "true",
"down": "false",
"up": "false"
},
"apply": {
@ -402,8 +402,8 @@
{
"when": {
"west": "true",
"down": "false",
"east": "false",
"down": "false",
"up": "false"
},
"apply": {
@ -413,8 +413,8 @@
{
"when": {
"west": "false",
"down": "false",
"east": "false",
"down": "false",
"up": "false"
},
"apply": {

View File

@ -726,6 +726,7 @@
"create.gui.goggles.generator_stats": "Generator Stats:",
"create.gui.goggles.kinetic_stats": "Kinetic Stats:",
"create.gui.goggles.at_current_speed": "at current speed",
"create.gui.goggles.pole_length": "Pole Length:",
"create.gui.gauge.info_header": "Gauge Information:",
"create.gui.speedometer.title": "Rotation Speed",
"create.gui.stressometer.title": "Network Stress",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1055",
"_": "Missing Localizations: 1056",
"_": "->------------------------] Game Elements [------------------------<-",
@ -727,6 +727,7 @@
"create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:",
"create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:",
"create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:",
"create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed",
"create.gui.stressometer.title": "UNLOCALIZED: Network Stress",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 685",
"_": "Missing Localizations: 686",
"_": "->------------------------] Game Elements [------------------------<-",
@ -727,6 +727,7 @@
"create.gui.goggles.generator_stats": "Statistiques du générateur:",
"create.gui.goggles.kinetic_stats": "Statistiques cinétiques:",
"create.gui.goggles.at_current_speed": "À la vitesse actuelle",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.gauge.info_header": "Informations sur la jauge:",
"create.gui.speedometer.title": "Vitesse de rotation",
"create.gui.stressometer.title": "Stress du réseau",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 669",
"_": "Missing Localizations: 670",
"_": "->------------------------] Game Elements [------------------------<-",
@ -727,6 +727,7 @@
"create.gui.goggles.generator_stats": "Statistiche del Generatore:",
"create.gui.goggles.kinetic_stats": "Statistiche Cinetiche:",
"create.gui.goggles.at_current_speed": "Alla velocità Attuale",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.gauge.info_header": "Informazioni sul Calibro:",
"create.gui.speedometer.title": "Velocità di Rotazione",
"create.gui.stressometer.title": "Stress della Rete",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 668",
"_": "Missing Localizations: 669",
"_": "->------------------------] Game Elements [------------------------<-",
@ -727,6 +727,7 @@
"create.gui.goggles.generator_stats": "ジェネレータの統計:",
"create.gui.goggles.kinetic_stats": "動力の統計:",
"create.gui.goggles.at_current_speed": "現在の速度",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.gauge.info_header": "計器の情報:",
"create.gui.speedometer.title": "回転速度",
"create.gui.stressometer.title": "ネットワークの応力",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 669",
"_": "Missing Localizations: 670",
"_": "->------------------------] Game Elements [------------------------<-",
@ -727,6 +727,7 @@
"create.gui.goggles.generator_stats": "발전 상태:",
"create.gui.goggles.kinetic_stats": "가동 상태:",
"create.gui.goggles.at_current_speed": "현재 속도",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.gauge.info_header": "게이지 정보:",
"create.gui.speedometer.title": "회전 속도",
"create.gui.stressometer.title": "네트워크 부하",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 996",
"_": "Missing Localizations: 997",
"_": "->------------------------] Game Elements [------------------------<-",
@ -727,6 +727,7 @@
"create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:",
"create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:",
"create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:",
"create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed",
"create.gui.stressometer.title": "UNLOCALIZED: Network Stress",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1062",
"_": "Missing Localizations: 1063",
"_": "->------------------------] Game Elements [------------------------<-",
@ -727,6 +727,7 @@
"create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:",
"create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:",
"create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:",
"create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed",
"create.gui.stressometer.title": "UNLOCALIZED: Network Stress",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 338",
"_": "Missing Localizations: 339",
"_": "->------------------------] Game Elements [------------------------<-",
@ -727,6 +727,7 @@
"create.gui.goggles.generator_stats": "Статистика генератора:",
"create.gui.goggles.kinetic_stats": "Кинетическая статистика:",
"create.gui.goggles.at_current_speed": "На текущей скорости",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.gauge.info_header": "Калибровочная информация:",
"create.gui.speedometer.title": "Скорость вращения",
"create.gui.stressometer.title": "Сетевой момент",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 351",
"_": "Missing Localizations: 352",
"_": "->------------------------] Game Elements [------------------------<-",
@ -727,6 +727,7 @@
"create.gui.goggles.generator_stats": "产能器状态:",
"create.gui.goggles.kinetic_stats": "动能状态:",
"create.gui.goggles.at_current_speed": "当前速度应力值",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.gauge.info_header": "仪表信息:",
"create.gui.speedometer.title": "旋转速度",
"create.gui.stressometer.title": "网络应力",

View File

@ -1,6 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "create:block/controller_rail_analog"
"layer0": "create:block/controller_rail_item"
}
}

View File

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:crafting/kinetics/controller_rail"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "minecraft:powered_rail"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:crafting/kinetics/controller_rail"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View File

@ -13,6 +13,7 @@
}
},
"result": {
"item": "create:chute"
"item": "create:chute",
"count": 4
}
}

View File

@ -0,0 +1,23 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"A A",
"ASA",
"AEA"
],
"key": {
"A": {
"tag": "forge:ingots/gold"
},
"E": {
"item": "create:electron_tube"
},
"S": {
"tag": "forge:rods/wooden"
}
},
"result": {
"item": "create:controller_rail",
"count": 6
}
}

View File

@ -0,0 +1,23 @@
{
"type": "create:crushing",
"ingredients": [
{
"item": "minecraft:diamond_ore"
}
],
"results": [
{
"item": "minecraft:diamond",
"count": 2
},
{
"item": "minecraft:diamond",
"chance": 0.25
},
{
"item": "minecraft:cobblestone",
"chance": 0.125
}
],
"processingTime": 500
}

View File

@ -26,6 +26,7 @@
"create:redstone_link",
"#minecraft:doors",
"minecraft:flower_pot",
"minecraft:bell"
"minecraft:bell",
"minecraft:cocoa"
]
}

View File

@ -62,6 +62,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pis
import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonExtensionPoleBlock;
import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock;
import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock;
import com.simibubi.create.content.contraptions.components.tracks.ControllerRailGenerator;
import com.simibubi.create.content.contraptions.components.tracks.ReinforcedRailBlock;
import com.simibubi.create.content.contraptions.components.turntable.TurntableBlock;
import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelBlock;
@ -740,12 +741,14 @@ public class AllBlocks {
public static final BlockEntry<ControllerRailBlock> CONTROLLER_RAIL =
REGISTRATE.block("controller_rail", ControllerRailBlock::new)
.initialProperties(() -> Blocks.POWERED_RAIL)
.blockstate(BlockStateGen.controllerRail())
.blockstate(new ControllerRailGenerator()::generate)
.addLayer(() -> RenderType::getCutoutMipped)
.onRegister(CreateRegistrate.blockColors(() -> AllColorHandlers::getRedstonePower))
.tag(BlockTags.RAILS)
.item()
.model((c, p) -> p.generated(c, Create.asResource("block/controller_rail_analog")))
.build().register();
.model((c, p) -> p.generated(c, Create.asResource("block/" + c.getName() + "_item")))
.build()
.register();
public static final BlockEntry<MinecartAnchorBlock> MINECART_ANCHOR =
REGISTRATE.block("minecart_anchor", MinecartAnchorBlock::new)

View File

@ -1,30 +1,31 @@
package com.simibubi.create;
import java.util.HashMap;
import java.util.Map;
import com.simibubi.create.foundation.block.IBlockVertexColor;
import com.simibubi.create.foundation.block.render.ColoredVertexModel;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.RedstoneWireBlock;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.color.BlockColors;
import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.client.renderer.color.ItemColors;
import net.minecraft.item.ItemStack;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.util.IItemProvider;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.GrassColors;
import net.minecraft.world.IBlockDisplayReader;
import net.minecraft.world.biome.BiomeColors;
import java.util.HashMap;
import java.util.Map;
public class AllColorHandlers {
private Map<Block, IBlockVertexColor> coloredVertexBlocks = new HashMap<>();
private Map<Block, IBlockColor> coloredBlocks = new HashMap<>();
private Map<IItemProvider, IItemColor> coloredItems = new HashMap<>();
private final Map<Block, IBlockVertexColor> coloredVertexBlocks = new HashMap<>();
private final Map<Block, IBlockColor> coloredBlocks = new HashMap<>();
private final Map<IItemProvider, IItemColor> coloredItems = new HashMap<>();
//
@ -38,6 +39,12 @@ public class AllColorHandlers {
return new ItemColor((stack, layer) -> GrassColors.get(0.5D, 1.0D));
}
public static IBlockColor getRedstonePower() {
return new BlockColor(
(state, world, pos, layer) -> RedstoneWireBlock.colorMultiplier(pos != null && world != null ? state.get(BlockStateProperties.POWER_0_15) : 0)
);
}
//
public void register(Block block, IBlockColor color) {

View File

@ -161,7 +161,7 @@ public class AllTags {
AllBlockTags.WINDMILL_SAILS.includeAll(BlockTags.WOOL);
AllBlockTags.BRITTLE.includeAll(BlockTags.DOORS);
AllBlockTags.BRITTLE.add(Blocks.FLOWER_POT, Blocks.BELL);
AllBlockTags.BRITTLE.add(Blocks.FLOWER_POT, Blocks.BELL, Blocks.COCOA);
AllBlockTags.FAN_TRANSPARENT.includeAll(BlockTags.FENCES);
AllBlockTags.FAN_TRANSPARENT.add(Blocks.IRON_BARS);

View File

@ -131,7 +131,7 @@ public class PistonExtensionPoleBlock extends ProperDirectionalBlock implements
return ActionResultType.SUCCESS;
world.setBlockState(newPos, AllBlocks.PISTON_EXTENSION_POLE.getDefaultState()
.with(FACING, offset.getFirst()));
.with(FACING, state.get(FACING)));
if (!player.isCreative())
heldItem.shrink(1);
@ -162,4 +162,5 @@ public class PistonExtensionPoleBlock extends ProperDirectionalBlock implements
}
return state;
}
}

View File

@ -33,7 +33,10 @@ public class PistonPolePlacementHelper {
BlockRayTraceResult ray = (BlockRayTraceResult) mc.objectMouseOver;
if (!isHoldingPole(mc.player))
if (mc.player != null && !isHoldingPole(mc.player))
return;
if (mc.player.isSneaking())
return;
BlockPos pos = ray.getPos();

View File

@ -1,19 +1,35 @@
package com.simibubi.create.content.contraptions.components.tracks;
import static net.minecraft.state.properties.RailShape.NORTH_SOUTH;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.VecHelper;
import mcp.MethodsReturnNonnullByDefault;
import net.minecraft.block.AbstractRailBlock;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.entity.item.minecart.AbstractMinecartEntity;
import net.minecraft.entity.item.minecart.FurnaceMinecartEntity;
import net.minecraft.item.BlockItemUseContext;
import net.minecraft.item.ItemUseContext;
import net.minecraft.state.*;
import net.minecraft.state.BooleanProperty;
import net.minecraft.state.EnumProperty;
import net.minecraft.state.IntegerProperty;
import net.minecraft.state.Property;
import net.minecraft.state.StateContainer;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.state.properties.RailShape;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis;
import net.minecraft.util.Direction.AxisDirection;
import net.minecraft.util.Mirror;
import net.minecraft.util.Rotation;
import net.minecraft.util.math.BlockPos;
@ -23,58 +39,94 @@ import net.minecraft.util.math.vector.Vector3i;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.World;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import static net.minecraft.state.properties.RailShape.*;
@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
@SuppressWarnings("deprecation")
public class ControllerRailBlock extends AbstractRailBlock implements IWrenchable {
public static final EnumProperty<RailShape> SHAPE = BlockStateProperties.RAIL_SHAPE_STRAIGHT;
public static final IntegerProperty POWER = BlockStateProperties.POWER_0_15;
public static final BooleanProperty BACKWARDS = BooleanProperty.create("backwards");
public ControllerRailBlock(Properties p_i48444_2_) {
super(true, p_i48444_2_);
this.setDefaultState(this.stateContainer.getBaseState().with(POWER, 0).with(BACKWARDS, false).with(SHAPE, NORTH_SOUTH));
public static final EnumProperty<RailShape> SHAPE = BlockStateProperties.RAIL_SHAPE_STRAIGHT;
public static final BooleanProperty BACKWARDS = BooleanProperty.create("backwards");
public static final IntegerProperty POWER = BlockStateProperties.POWER_0_15;
public ControllerRailBlock(Properties properties) {
super(true, properties);
this.setDefaultState(this.stateContainer.getBaseState()
.with(POWER, 0)
.with(BACKWARDS, false)
.with(SHAPE, NORTH_SOUTH));
}
private static Vector3i getAccelerationVector(BlockState state) {
Direction pointingTo = getPointingTowards(state);
return (state.get(BACKWARDS) ? pointingTo.getOpposite() : pointingTo).getDirectionVec();
return (isStateBackwards(state) ? pointingTo.getOpposite() : pointingTo).getDirectionVec();
}
private static Direction getPointingTowards(BlockState state) {
switch (state.get(SHAPE)) {
case ASCENDING_WEST:
case EAST_WEST:
return Direction.WEST;
case ASCENDING_EAST:
return Direction.EAST;
case ASCENDING_SOUTH:
return Direction.SOUTH;
default:
return Direction.NORTH;
case ASCENDING_WEST:
case EAST_WEST:
return Direction.WEST;
case ASCENDING_EAST:
return Direction.EAST;
case ASCENDING_SOUTH:
return Direction.SOUTH;
default:
return Direction.NORTH;
}
}
@Override
protected BlockState getUpdatedState(World world, BlockPos pos, BlockState state, boolean p_208489_4_) {
BlockState updatedState = super.getUpdatedState(world, pos, state, p_208489_4_);
if (updatedState.get(SHAPE) == state.get(SHAPE))
return updatedState;
BlockState reversedUpdatedState = updatedState;
// Rails snapping to others at 90 degrees should follow their direction
if (getPointingTowards(state).getAxis() != getPointingTowards(updatedState).getAxis()) {
for (boolean opposite : Iterate.trueAndFalse) {
Direction offset = getPointingTowards(updatedState);
if (opposite)
offset = offset.getOpposite();
for (BlockPos adjPos : Iterate.hereBelowAndAbove(pos.offset(offset))) {
BlockState adjState = world.getBlockState(adjPos);
if (!AllBlocks.CONTROLLER_RAIL.has(adjState))
continue;
if (getPointingTowards(adjState).getAxis() != offset.getAxis())
continue;
if (adjState.get(BACKWARDS) != reversedUpdatedState.get(BACKWARDS))
reversedUpdatedState = reversedUpdatedState.cycle(BACKWARDS);
}
}
}
// Replace if changed
if (reversedUpdatedState != updatedState)
world.setBlockState(pos, reversedUpdatedState);
return reversedUpdatedState;
}
private static void decelerateCart(BlockPos pos, AbstractMinecartEntity cart) {
Vector3d diff = VecHelper.getCenterOf(pos).subtract(cart.getPositionVec());
Vector3d diff = VecHelper.getCenterOf(pos)
.subtract(cart.getPositionVec());
cart.setMotion(diff.x / 16f, 0, diff.z / 16f);
if (cart instanceof FurnaceMinecartEntity) {
FurnaceMinecartEntity fme = (FurnaceMinecartEntity) cart;
fme.pushX = fme.pushZ = 0;
}
}
private static boolean isStableWith(BlockState testState, IBlockReader world, BlockPos pos) {
return hasSolidSideOnTop(world, pos.down()) && (!testState.get(SHAPE).isAscending() || hasSolidSideOnTop(world, pos.offset(getPointingTowards(testState))));
return hasSolidSideOnTop(world, pos.down()) && (!testState.get(SHAPE)
.isAscending() || hasSolidSideOnTop(world, pos.offset(getPointingTowards(testState))));
}
@Override
public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) {
Direction direction = p_196258_1_.getPlacementHorizontalFacing();
BlockState base = super.getStateForPlacement(p_196258_1_);
return (base == null ? getDefaultState() : base).with(BACKWARDS, direction == Direction.SOUTH || direction == Direction.EAST);
return (base == null ? getDefaultState() : base).with(BACKWARDS,
direction.getAxisDirection() == AxisDirection.POSITIVE);
}
@Override
@ -91,9 +143,18 @@ public class ControllerRailBlock extends AbstractRailBlock implements IWrenchabl
public void onMinecartPass(BlockState state, World world, BlockPos pos, AbstractMinecartEntity cart) {
if (world.isRemote)
return;
Vector3d accelerationVec = Vector3d.of(getAccelerationVector(state));
double targetSpeed = cart.getMaxSpeedWithRail() * state.get(POWER) / 15.;
if ((cart.getMotion().dotProduct(accelerationVec) >= 0 || cart.getMotion().lengthSquared() < 0.0001) && targetSpeed > 0)
double targetSpeed = cart.getMaxSpeedWithRail() * state.get(POWER) / 15f;
if (cart instanceof FurnaceMinecartEntity) {
FurnaceMinecartEntity fme = (FurnaceMinecartEntity) cart;
fme.pushX = accelerationVec.x;
fme.pushZ = accelerationVec.z;
}
Vector3d motion = cart.getMotion();
if ((motion.dotProduct(accelerationVec) >= 0 || motion.lengthSquared() < 0.0001) && targetSpeed > 0)
cart.setMotion(accelerationVec.scale(targetSpeed));
else
decelerateCart(pos, cart);
@ -138,105 +199,27 @@ public class ControllerRailBlock extends AbstractRailBlock implements IWrenchabl
if (backwardsPower != 0)
break;
}
if (forwardDistance > 8 && backwardsDistance > 8)
return 0;
else if (backwardsPower == 0 && forwardDistance <= 8)
if (backwardsPower == 0 && forwardDistance <= 8)
return forwardPower;
else if (forwardPower == 0 && backwardsDistance <= 8)
if (forwardPower == 0 && backwardsDistance <= 8)
return backwardsPower;
else if (backwardsPower != 0 && forwardPower != 0)
return MathHelper.ceil((backwardsPower * forwardDistance + forwardPower * backwardsDistance) / (double) (forwardDistance + backwardsDistance));
if (backwardsPower != 0 && forwardPower != 0)
return MathHelper.ceil((backwardsPower * forwardDistance + forwardPower * backwardsDistance)
/ (double) (forwardDistance + backwardsDistance));
return 0;
}
@Override
public BlockState rotate(BlockState p_185499_1_, Rotation p_185499_2_) {
switch (p_185499_2_) {
case CLOCKWISE_180:
switch (p_185499_1_.get(SHAPE)) {
case ASCENDING_EAST:
return p_185499_1_.with(SHAPE, ASCENDING_WEST);
case ASCENDING_WEST:
return p_185499_1_.with(SHAPE, ASCENDING_EAST);
case ASCENDING_NORTH:
return p_185499_1_.with(SHAPE, ASCENDING_SOUTH);
case ASCENDING_SOUTH:
return p_185499_1_.with(SHAPE, ASCENDING_NORTH);
default:
return p_185499_1_.with(BACKWARDS, !p_185499_1_.get(BACKWARDS));
}
case COUNTERCLOCKWISE_90:
switch (p_185499_1_.get(SHAPE)) {
case ASCENDING_EAST:
return p_185499_1_.with(SHAPE, ASCENDING_NORTH);
case ASCENDING_WEST:
return p_185499_1_.with(SHAPE, ASCENDING_SOUTH);
case ASCENDING_NORTH:
return p_185499_1_.with(SHAPE, ASCENDING_WEST);
case ASCENDING_SOUTH:
return p_185499_1_.with(SHAPE, ASCENDING_EAST);
case NORTH_SOUTH:
return p_185499_1_.with(SHAPE, EAST_WEST);
case EAST_WEST:
return p_185499_1_.with(SHAPE, NORTH_SOUTH).with(BACKWARDS, !p_185499_1_.get(BACKWARDS));
}
case CLOCKWISE_90:
switch (p_185499_1_.get(SHAPE)) {
case ASCENDING_EAST:
return p_185499_1_.with(SHAPE, ASCENDING_SOUTH);
case ASCENDING_WEST:
return p_185499_1_.with(SHAPE, ASCENDING_NORTH);
case ASCENDING_NORTH:
return p_185499_1_.with(SHAPE, ASCENDING_EAST);
case ASCENDING_SOUTH:
return p_185499_1_.with(SHAPE, ASCENDING_WEST);
case NORTH_SOUTH:
return p_185499_1_.with(SHAPE, EAST_WEST).with(BACKWARDS, !p_185499_1_.get(BACKWARDS));
case EAST_WEST:
return p_185499_1_.with(SHAPE, NORTH_SOUTH);
}
default:
return p_185499_1_;
}
}
@Override
public BlockState mirror(BlockState p_185471_1_, Mirror p_185471_2_) {
RailShape railshape = p_185471_1_.get(SHAPE);
switch (p_185471_2_) {
case LEFT_RIGHT:
switch (railshape) {
case ASCENDING_NORTH:
return p_185471_1_.with(SHAPE, RailShape.ASCENDING_SOUTH);
case ASCENDING_SOUTH:
return p_185471_1_.with(SHAPE, RailShape.ASCENDING_NORTH);
case NORTH_SOUTH:
return p_185471_1_.with(BACKWARDS, !p_185471_1_.get(BACKWARDS));
default:
return super.mirror(p_185471_1_, p_185471_2_);
}
case FRONT_BACK:
switch (railshape) {
case ASCENDING_EAST:
return p_185471_1_.with(SHAPE, RailShape.ASCENDING_WEST);
case ASCENDING_WEST:
return p_185471_1_.with(SHAPE, RailShape.ASCENDING_EAST);
case EAST_WEST:
return p_185471_1_.with(BACKWARDS, !p_185471_1_.get(BACKWARDS));
default:
break;
}
}
return super.mirror(p_185471_1_, p_185471_2_);
}
@Override
public ActionResultType onWrenched(BlockState state, ItemUseContext context) {
World world = context.getWorld();
if (world.isRemote)
return ActionResultType.SUCCESS;
BlockPos pos = context.getPos();
for (Rotation testRotation : new Rotation[]{Rotation.CLOCKWISE_90, Rotation.CLOCKWISE_180, Rotation.COUNTERCLOCKWISE_90}) {
for (Rotation testRotation : new Rotation[] { Rotation.CLOCKWISE_90, Rotation.CLOCKWISE_180,
Rotation.COUNTERCLOCKWISE_90 }) {
BlockState testState = rotate(state, testRotation);
if (isStableWith(testState, world, pos)) {
placeAndNotify(testState, pos, world);
@ -259,7 +242,8 @@ public class ControllerRailBlock extends AbstractRailBlock implements IWrenchabl
private void placeAndNotify(BlockState state, BlockPos pos, World world) {
world.setBlockState(pos, state, 3);
world.notifyNeighborsOfStateChange(pos.down(), this);
if (state.get(SHAPE).isAscending())
if (state.get(SHAPE)
.isAscending())
world.notifyNeighborsOfStateChange(pos.up(), this);
}
@ -270,11 +254,13 @@ public class ControllerRailBlock extends AbstractRailBlock implements IWrenchabl
return null;
Vector3i accelerationVec = getAccelerationVector(current);
BlockPos baseTestPos = reversed ? from.subtract(accelerationVec) : from.add(accelerationVec);
for (BlockPos testPos : new BlockPos[]{baseTestPos, baseTestPos.down(), baseTestPos.up()}) {
if (testPos.getY() > from.getY() && !current.get(SHAPE).isAscending())
for (BlockPos testPos : Iterate.hereBelowAndAbove(baseTestPos)) {
if (testPos.getY() > from.getY() && !current.get(SHAPE)
.isAscending())
continue;
BlockState testState = world.getBlockState(testPos);
if (testState.getBlock() instanceof ControllerRailBlock && getAccelerationVector(testState).equals(accelerationVec))
if (testState.getBlock() instanceof ControllerRailBlock
&& getAccelerationVector(testState).equals(accelerationVec))
return testPos;
}
return null;
@ -289,4 +275,47 @@ public class ControllerRailBlock extends AbstractRailBlock implements IWrenchabl
public int getComparatorInputOverride(BlockState state, World world, BlockPos pos) {
return state.get(POWER);
}
@Override
public BlockState rotate(BlockState state, Rotation rotation) {
if (rotation == Rotation.NONE)
return state;
RailShape railshape = Blocks.POWERED_RAIL.getDefaultState()
.with(SHAPE, state.get(SHAPE))
.rotate(rotation)
.get(SHAPE);
state = state.with(SHAPE, railshape);
if (rotation == Rotation.CLOCKWISE_180
|| (getPointingTowards(state).getAxis() == Axis.Z) == (rotation == Rotation.COUNTERCLOCKWISE_90))
return state.cycle(BACKWARDS);
return state;
}
@Override
public BlockState mirror(BlockState state, Mirror mirror) {
if (mirror == Mirror.NONE)
return state;
RailShape railshape = Blocks.POWERED_RAIL.getDefaultState()
.with(SHAPE, state.get(SHAPE))
.mirror(mirror)
.get(SHAPE);
state = state.with(SHAPE, railshape);
if ((getPointingTowards(state).getAxis() == Axis.Z) == (mirror == Mirror.LEFT_RIGHT))
return state.cycle(BACKWARDS);
return state;
}
public static boolean isStateBackwards(BlockState state) {
return state.get(BACKWARDS) ^ isReversedSlope(state);
}
public static boolean isReversedSlope(BlockState state) {
return state.get(SHAPE) == RailShape.ASCENDING_SOUTH || state.get(SHAPE) == RailShape.ASCENDING_EAST;
}
}

View File

@ -0,0 +1,55 @@
package com.simibubi.create.content.contraptions.components.tracks;
import com.simibubi.create.foundation.data.AssetLookup;
import com.simibubi.create.foundation.data.SpecialBlockStateGen;
import com.tterrag.registrate.providers.DataGenContext;
import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.state.IProperty;
import net.minecraft.state.properties.RailShape;
import net.minecraftforge.client.model.generators.ModelFile;
public class ControllerRailGenerator extends SpecialBlockStateGen {
@Override
protected IProperty<?>[] getIgnoredProperties() {
return new IProperty<?>[] { ControllerRailBlock.POWER };
}
@Override
protected int getXRotation(BlockState state) {
return 0;
}
@Override
protected int getYRotation(BlockState state) {
RailShape shape = state.get(ControllerRailBlock.SHAPE);
boolean backwards = ControllerRailBlock.isStateBackwards(state);
int rotation = backwards ? 180 : 0;
switch (shape) {
case EAST_WEST:
case ASCENDING_WEST:
return rotation + 270;
case ASCENDING_EAST:
return rotation + 90;
case ASCENDING_SOUTH:
return rotation + 180;
default:
return rotation;
}
}
@Override
public <T extends Block> ModelFile getModel(DataGenContext<Block, T> ctx, RegistrateBlockstateProvider prov,
BlockState state) {
RailShape shape = state.get(ControllerRailBlock.SHAPE);
boolean backwards = ControllerRailBlock.isStateBackwards(state);
String model = shape.isAscending() ? backwards ? "ascending_south" : "ascending_north" : "north_south";
return AssetLookup.partialBaseModel(ctx, prov, model);
}
}

View File

@ -12,6 +12,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pis
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.gui.GuiGameElement;
import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
@ -100,7 +101,9 @@ public class GoggleOverlayRenderer {
if (!tooltip.isEmpty())
tooltip.add(StringTextComponent.EMPTY);
tooltip.add(IHaveGoggleInformation.componentSpacing.copy().append(new StringTextComponent("Pole length: " + poles)));
tooltip.add(IHaveGoggleInformation.componentSpacing.copy()
.append(Lang.translate("gui.goggles.pole_length"))
.append(new StringTextComponent(" " + poles)));
}
if (tooltip.isEmpty())

View File

@ -9,7 +9,6 @@ import java.util.Vector;
import java.util.function.BiFunction;
import java.util.function.Function;
import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock;
import org.apache.commons.lang3.tuple.Pair;
import com.google.common.collect.ImmutableList;
@ -435,47 +434,4 @@ public class BlockStateGen {
.end();
}
public static NonNullBiConsumer<DataGenContext<Block, ControllerRailBlock>, RegistrateBlockstateProvider> controllerRail() {
return (c, p) -> p.getVariantBuilder(c.get())
.forAllStates(state -> {
int power = state.get(ControllerRailBlock.POWER);
boolean backwards = state.get(ControllerRailBlock.BACKWARDS);
String powerStr = power == 0 ? "off" : (power == 15 ? "on" : "analog");
RailShape shape = state.get(ControllerRailBlock.SHAPE);
String shapeName = shape.isAscending() ? RailShape.ASCENDING_NORTH.getString() : RailShape.NORTH_SOUTH.getString();
int rotation = 0;
switch (shape) {
case EAST_WEST:
rotation += 270;
shapeName = RailShape.NORTH_SOUTH.getString();
break;
case ASCENDING_EAST:
rotation += 90;
break;
case ASCENDING_SOUTH:
rotation += 180;
break;
case ASCENDING_WEST:
rotation += 270;
break;
default:
break;
}
if (backwards) {
rotation += 180;
shapeName = shape.isAscending() ? RailShape.ASCENDING_SOUTH.getString() : RailShape.NORTH_SOUTH.getString();
}
return ConfiguredModel.builder()
.modelFile(p.models()
.getExistingFile(p.modLoc(
"block/" + c.getName() + "/block_" + shapeName + "_" +
powerStr)))
.rotationY(rotation % 360)
.build();
});
}
}

View File

@ -5,21 +5,26 @@ import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.state.IProperty;
import net.minecraft.util.Direction;
import net.minecraftforge.client.model.generators.ConfiguredModel;
import net.minecraftforge.client.model.generators.ModelFile;
public abstract class SpecialBlockStateGen {
protected IProperty<?>[] getIgnoredProperties() {
return new IProperty<?>[0];
}
public final <T extends Block> void generate(DataGenContext<Block, T> ctx, RegistrateBlockstateProvider prov) {
prov.getVariantBuilder(ctx.getEntry())
.forAllStates(state -> {
.forAllStatesExcept(state -> {
return ConfiguredModel.builder()
.modelFile(getModel(ctx, prov, state))
.rotationX((getXRotation(state) + 360) % 360)
.rotationY((getYRotation(state) + 360) % 360)
.build();
});
}, getIgnoredProperties());
}
protected int horizontalAngle(Direction direction) {

View File

@ -75,6 +75,11 @@ public class CrushingRecipeGen extends ProcessingRecipeGen {
.output(Items.EMERALD, 2)
.output(.25f, Items.EMERALD, 1)
.output(.125f, Blocks.COBBLESTONE)),
DIAMOND_ORE = create(() -> Blocks.DIAMOND_ORE, b -> b.duration(500)
.output(Items.DIAMOND, 2)
.output(.25f, Items.DIAMOND, 1)
.output(.125f, Blocks.COBBLESTONE)),
NETHER_WART_NO_QUARK = create("nether_wart_block_no_quark", b -> b.duration(150)
.require(Blocks.NETHER_WART_BLOCK)

View File

@ -329,6 +329,15 @@ public class StandardRecipeGen extends CreateRecipeProvider {
.patternLine("CRC")
.patternLine("L L")),
CONTROLLER_RAIL = create(AllBlocks.CONTROLLER_RAIL).returns(6)
.unlockedBy(() -> Items.POWERED_RAIL)
.viaShaped(b -> b.key('A', I.gold())
.key('E', I.electronTube())
.key('S', Tags.Items.RODS_WOODEN)
.patternLine("A A")
.patternLine("ASA")
.patternLine("AEA")),
HAND_CRANK = create(AllBlocks.HAND_CRANK).unlockedBy(I::andesite)
.viaShaped(b -> b.key('A', I.andesite())
.key('C', ItemTags.PLANKS)
@ -536,6 +545,7 @@ public class StandardRecipeGen extends CreateRecipeProvider {
.patternLine("AA")),
CHUTE = create(AllBlocks.CHUTE).unlockedBy(I::andesite)
.returns(4)
.viaShaped(b -> b.key('A', I.ironSheet())
.key('I', I.andesite())
.patternLine("II")

View File

@ -38,4 +38,8 @@ public class Iterate {
public static List<BlockPos> hereAndBelow(BlockPos pos) {
return Arrays.asList(pos, pos.down());
}
public static List<BlockPos> hereBelowAndAbove(BlockPos pos) {
return Arrays.asList(pos, pos.down(), pos.up());
}
}

View File

@ -170,7 +170,8 @@
"create.gui.goggles.generator_stats": "Generator Stats:",
"create.gui.goggles.kinetic_stats": "Kinetic Stats:",
"create.gui.goggles.at_current_speed": "at current speed",
"create.gui.goggles.pole_length": "Pole Length:",
"create.gui.gauge.info_header": "Gauge Information:",
"create.gui.speedometer.title": "Rotation Speed",
"create.gui.stressometer.title": "Network Stress",

View File

@ -0,0 +1,36 @@
{
"ambientocclusion": false,
"textures": {
"particle": "#rail",
"rail": "create:block/controller_rail_base",
"tint": "create:block/controller_rail_tint"
},
"elements": [
{ "from": [ 0, 9, 0 ],
"to": [ 16, 9, 16 ],
"rotation": {
"origin": [ 8, 9, 8 ],
"axis": "x",
"angle": 45,
"rescale": true
},
"faces": {
"down": { "uv": [ 0, 16, 16, 0 ], "texture": "#rail" },
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rail" }
}
},
{ "from": [ 0, 9, 0 ],
"to": [ 16, 9, 16 ],
"rotation": {
"origin": [ 8, 9, 8 ],
"axis": "x",
"angle": 45,
"rescale": true
},
"faces": {
"down": { "uv": [ 0, 16, 16, 0 ], "texture": "#tint", "tintindex": 0 },
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#tint", "tintindex": 0 }
}
}
]
}

View File

@ -1,6 +0,0 @@
{
"parent": "minecraft:block/template_rail_raised_ne",
"textures": {
"rail": "create:block/controller_rail_analog"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "minecraft:block/template_rail_raised_ne",
"textures": {
"rail": "create:block/controller_rail_off"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "minecraft:block/template_rail_raised_ne",
"textures": {
"rail": "create:block/controller_rail_on"
}
}

View File

@ -0,0 +1,36 @@
{
"ambientocclusion": false,
"textures": {
"particle": "#rail",
"rail": "create:block/controller_rail_base",
"tint": "create:block/controller_rail_tint"
},
"elements": [
{ "from": [ 0, 9, 0 ],
"to": [ 16, 9, 16 ],
"rotation": {
"origin": [ 8, 9, 8 ],
"axis": "x",
"angle": -45,
"rescale": true
},
"faces": {
"down": { "uv": [ 0, 16, 16, 0 ], "texture": "#rail" },
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rail" }
}
},
{ "from": [ 0, 9, 0 ],
"to": [ 16, 9, 16 ],
"rotation": {
"origin": [ 8, 9, 8 ],
"axis": "x",
"angle": -45,
"rescale": true
},
"faces": {
"down": { "uv": [ 0, 16, 16, 0 ], "texture": "#tint", "tintindex": 0 },
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#tint", "tintindex": 0 }
}
}
]
}

View File

@ -1,6 +0,0 @@
{
"parent": "minecraft:block/template_rail_raised_sw",
"textures": {
"rail": "create:block/controller_rail_analog"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "minecraft:block/template_rail_raised_sw",
"textures": {
"rail": "create:block/controller_rail_off"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "minecraft:block/template_rail_raised_sw",
"textures": {
"rail": "create:block/controller_rail_on"
}
}

View File

@ -0,0 +1,24 @@
{
"ambientocclusion": false,
"textures": {
"particle": "#rail",
"rail": "create:block/controller_rail_base",
"tint": "create:block/controller_rail_tint"
},
"elements": [
{ "from": [ 0, 1, 0 ],
"to": [ 16, 1, 16 ],
"faces": {
"down": { "uv": [ 0, 16, 16, 0 ], "texture": "#rail" },
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rail" }
}
},
{ "from": [ 0, 1, 0 ],
"to": [ 16, 1, 16 ],
"faces": {
"down": { "uv": [ 0, 16, 16, 0 ], "texture": "#tint", "tintindex": 0 },
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#tint", "tintindex": 0 }
}
}
]
}

View File

@ -1,6 +0,0 @@
{
"parent": "minecraft:block/rail_flat",
"textures": {
"rail": "create:block/controller_rail_analog"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "minecraft:block/rail_flat",
"textures": {
"rail": "create:block/controller_rail_off"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "minecraft:block/rail_flat",
"textures": {
"rail": "create:block/controller_rail_on"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 552 B

After

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 669 B

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 696 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 B

After

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 822 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 535 B

After

Width:  |  Height:  |  Size: 524 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 402 B

After

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB