Ponder and Polish

- Ponder scenes for depot, chute and smart chute
- Fixed saws and drains ejecting items when mounted funnel is backstuffed
- Fixed extracting funnels allowing items to be inserted by arms and belt input
- Vanilla items in ponder tags are marked purple instead of red
- Vertical funnels now block chutes
- Large cogs can no longer be placed right next to crafters or millstones
- Mechanical Arms now stall targeted belt items
This commit is contained in:
simibubi 2021-03-21 03:51:22 +01:00
parent f6cfd377a7
commit a356f8a91a
47 changed files with 1174 additions and 358 deletions

View file

@ -140,7 +140,7 @@ de8a40b7daf1497d5aecee47a43b3e0b1d030b00 assets/create/blockstates/fancy_scoria_
fc9ac0a7e7191b93516719455a17177fa6524ecc assets/create/blockstates/fancy_weathered_limestone_bricks_slab.json fc9ac0a7e7191b93516719455a17177fa6524ecc assets/create/blockstates/fancy_weathered_limestone_bricks_slab.json
b2a7c321b1795f20e7433f81a55ce4683de081b8 assets/create/blockstates/fancy_weathered_limestone_bricks_stairs.json b2a7c321b1795f20e7433f81a55ce4683de081b8 assets/create/blockstates/fancy_weathered_limestone_bricks_stairs.json
6372fe02ba0065acb0758121c45a15a1a8fdc5de assets/create/blockstates/fancy_weathered_limestone_bricks_wall.json 6372fe02ba0065acb0758121c45a15a1a8fdc5de assets/create/blockstates/fancy_weathered_limestone_bricks_wall.json
48086bf71a824faf14841b698050cc8544b09a9b assets/create/blockstates/fluid_pipe.json 37bc041b7449dc4d7962225e606125ba1b188974 assets/create/blockstates/fluid_pipe.json
f0eaab18e16c4f3f65ebf3b55b08f0dc445720fe assets/create/blockstates/fluid_tank.json f0eaab18e16c4f3f65ebf3b55b08f0dc445720fe assets/create/blockstates/fluid_tank.json
5408d92ab02af86539ac42971d4033545970bb3a assets/create/blockstates/fluid_valve.json 5408d92ab02af86539ac42971d4033545970bb3a assets/create/blockstates/fluid_valve.json
e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets/create/blockstates/flywheel.json e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets/create/blockstates/flywheel.json
@ -337,7 +337,7 @@ e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets/create/blockstates/powered_toggl
d06cd9a1101b18d306a786320aab12018b1325d6 assets/create/blockstates/purple_sail.json d06cd9a1101b18d306a786320aab12018b1325d6 assets/create/blockstates/purple_sail.json
92957119abd5fbcca36a113b2a80255fd70fc303 assets/create/blockstates/purple_seat.json 92957119abd5fbcca36a113b2a80255fd70fc303 assets/create/blockstates/purple_seat.json
61035f8afe75ff7bbd291da5d8690bcbebe679eb assets/create/blockstates/purple_valve_handle.json 61035f8afe75ff7bbd291da5d8690bcbebe679eb assets/create/blockstates/purple_valve_handle.json
4439fc83a8c7370ab44b211a3fd48abde20a4728 assets/create/blockstates/radial_chassis.json 8d7e653bfd9846e684a0d3725595714a19201017 assets/create/blockstates/radial_chassis.json
45877c4d90a7185c2f304edbd67379d800920439 assets/create/blockstates/red_sail.json 45877c4d90a7185c2f304edbd67379d800920439 assets/create/blockstates/red_sail.json
da1b08387af7afa0855ee8d040f620c01f20660a assets/create/blockstates/red_seat.json da1b08387af7afa0855ee8d040f620c01f20660a assets/create/blockstates/red_seat.json
722fc77bbf387af8a4016e42cbf9501d2b968881 assets/create/blockstates/red_valve_handle.json 722fc77bbf387af8a4016e42cbf9501d2b968881 assets/create/blockstates/red_valve_handle.json
@ -402,19 +402,19 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
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
2b12f3cf99e498899207a8c4855210e7b5dc55cd assets/create/lang/en_ud.json 2b12f3cf99e498899207a8c4855210e7b5dc55cd assets/create/lang/en_ud.json
cb22b256847375aa973491ca51858a704a3edf2c assets/create/lang/en_us.json 3522bc1dd15fd219aaf506766fb96be5f65b1939 assets/create/lang/en_us.json
d2c8c43f990f7844f3dea35fd0a98ee7f4d40576 assets/create/lang/unfinished/de_de.json d389c171d3d6a7382fb5b2e80b14e9bee53d8179 assets/create/lang/unfinished/de_de.json
69ce4c93ab2d6afd93352fd269be68f4c53ed963 assets/create/lang/unfinished/es_es.json b3caab7bb37be53ea93895cbaae2081452cd095e assets/create/lang/unfinished/es_es.json
2a63880625f84655bee39fa5ff0e4d5f0933f8f9 assets/create/lang/unfinished/es_mx.json 0039068794faea032b0a39c954f142e2c8e4dfc1 assets/create/lang/unfinished/es_mx.json
a568c0d8943021d8f438d80692a62e7987b35c7d assets/create/lang/unfinished/fr_fr.json 1e34083359caea11cf9fdbb3f04a5881ea62a55e assets/create/lang/unfinished/fr_fr.json
b21c69ffdb9f09324bfb51fb843af000bf9c2c13 assets/create/lang/unfinished/it_it.json c9abd10d296055f56877317a5c7dee14d0e33bf5 assets/create/lang/unfinished/it_it.json
230ab0c62a7e8b6a6e0c68b3081f06e0148e120a assets/create/lang/unfinished/ja_jp.json 83298d57034c2bb54924dff2d9b5257502ac3b9a assets/create/lang/unfinished/ja_jp.json
c42a6c5d2ae9b97d4c79751cd7f60f70864f8c36 assets/create/lang/unfinished/ko_kr.json 2c0e5fbfc813949d973e9f95af9501ed65b80b82 assets/create/lang/unfinished/ko_kr.json
b640c6137991b8e25139105a44d0d13b0b66ed18 assets/create/lang/unfinished/nl_nl.json 4b3b113e5f9351b741974bc18d13d9d648d38f91 assets/create/lang/unfinished/nl_nl.json
b9c2f45ac232045e6c1124d48017154504096dbd assets/create/lang/unfinished/pt_br.json 9bddfffdf5349353d37d7003546c94799c6e812d assets/create/lang/unfinished/pt_br.json
d69e5e26891d5ff7a1d93a1f5cc0bd775e1dfa08 assets/create/lang/unfinished/ru_ru.json 5119b6690e8faa7e25450674caebf3c9c53fd54b assets/create/lang/unfinished/ru_ru.json
dbf513ee2276e1460adf3f3f50f336d104a74884 assets/create/lang/unfinished/zh_cn.json f11eb922b49753b60894f0dfe8baabe004d13e05 assets/create/lang/unfinished/zh_cn.json
40fd381d585db529a20f31adf001ecaf6dc77104 assets/create/lang/unfinished/zh_tw.json 017a9c9cc6f4538c8c497097cbd59f590b4af160 assets/create/lang/unfinished/zh_tw.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
@ -1585,7 +1585,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear
9f9455ccb5fc9e3cbfce73862b46078346a522a5 assets/create/models/item/zinc_nugget.json 9f9455ccb5fc9e3cbfce73862b46078346a522a5 assets/create/models/item/zinc_nugget.json
b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json
e76041b7ae829fdd7dc0524f6ca4d2f89fca51bb assets/create/sounds.json e76041b7ae829fdd7dc0524f6ca4d2f89fca51bb assets/create/sounds.json
0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json 5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json
187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json 187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json
0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json 0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json
356f4855a2a6c65be3fb51d7d1aabf2ca6034d42 data/create/advancements/arm_blaze_burner.json 356f4855a2a6c65be3fb51d7d1aabf2ca6034d42 data/create/advancements/arm_blaze_burner.json

View file

@ -181,10 +181,10 @@
}, },
{ {
"when": { "when": {
"south": "true", "east": "false",
"west": "true", "west": "true",
"north": "false", "south": "true",
"east": "false" "north": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/lu_y" "model": "create:block/fluid_pipe/lu_y"
@ -192,10 +192,10 @@
}, },
{ {
"when": { "when": {
"south": "true", "east": "true",
"west": "false", "west": "false",
"north": "false", "south": "true",
"east": "true" "north": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/ru_y" "model": "create:block/fluid_pipe/ru_y"
@ -203,10 +203,10 @@
}, },
{ {
"when": { "when": {
"south": "false", "east": "false",
"west": "true", "west": "true",
"north": "true", "south": "false",
"east": "false" "north": "true"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/ld_y" "model": "create:block/fluid_pipe/ld_y"
@ -214,10 +214,10 @@
}, },
{ {
"when": { "when": {
"south": "false", "east": "true",
"west": "false", "west": "false",
"north": "true", "south": "false",
"east": "true" "north": "true"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/rd_y" "model": "create:block/fluid_pipe/rd_y"
@ -225,10 +225,10 @@
}, },
{ {
"when": { "when": {
"east": "false",
"west": "false",
"south": "true", "south": "true",
"west": "false", "north": "true"
"north": "true",
"east": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/ud_y" "model": "create:block/fluid_pipe/ud_y"
@ -236,10 +236,10 @@
}, },
{ {
"when": { "when": {
"east": "false",
"west": "false",
"south": "true", "south": "true",
"west": "false", "north": "false"
"north": "false",
"east": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/ud_y" "model": "create:block/fluid_pipe/ud_y"
@ -247,10 +247,10 @@
}, },
{ {
"when": { "when": {
"south": "false", "east": "false",
"west": "false", "west": "false",
"north": "true", "south": "false",
"east": "false" "north": "true"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/ud_y" "model": "create:block/fluid_pipe/ud_y"
@ -258,10 +258,10 @@
}, },
{ {
"when": { "when": {
"south": "false", "east": "true",
"west": "true", "west": "true",
"north": "false", "south": "false",
"east": "true" "north": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/lr_y" "model": "create:block/fluid_pipe/lr_y"
@ -269,10 +269,10 @@
}, },
{ {
"when": { "when": {
"south": "false", "east": "false",
"west": "true", "west": "true",
"north": "false", "south": "false",
"east": "false" "north": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/lr_y" "model": "create:block/fluid_pipe/lr_y"
@ -280,10 +280,10 @@
}, },
{ {
"when": { "when": {
"south": "false", "east": "true",
"west": "false", "west": "false",
"north": "false", "south": "false",
"east": "true" "north": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/lr_y" "model": "create:block/fluid_pipe/lr_y"
@ -291,10 +291,10 @@
}, },
{ {
"when": { "when": {
"south": "false", "east": "false",
"west": "false", "west": "false",
"north": "false", "south": "false",
"east": "false" "north": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/none_y" "model": "create:block/fluid_pipe/none_y"
@ -303,9 +303,9 @@
{ {
"when": { "when": {
"down": "false", "down": "false",
"up": "true", "east": "true",
"west": "false", "west": "false",
"east": "true" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/lu_z" "model": "create:block/fluid_pipe/lu_z"
@ -314,9 +314,9 @@
{ {
"when": { "when": {
"down": "false", "down": "false",
"up": "true", "east": "false",
"west": "true", "west": "true",
"east": "false" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/ru_z" "model": "create:block/fluid_pipe/ru_z"
@ -325,9 +325,9 @@
{ {
"when": { "when": {
"down": "true", "down": "true",
"up": "false", "east": "true",
"west": "false", "west": "false",
"east": "true" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/ld_z" "model": "create:block/fluid_pipe/ld_z"
@ -336,9 +336,9 @@
{ {
"when": { "when": {
"down": "true", "down": "true",
"up": "false", "east": "false",
"west": "true", "west": "true",
"east": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/rd_z" "model": "create:block/fluid_pipe/rd_z"
@ -347,9 +347,9 @@
{ {
"when": { "when": {
"down": "true", "down": "true",
"up": "true", "east": "false",
"west": "false", "west": "false",
"east": "false" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/ud_z" "model": "create:block/fluid_pipe/ud_z"
@ -358,9 +358,9 @@
{ {
"when": { "when": {
"down": "false", "down": "false",
"up": "true", "east": "false",
"west": "false", "west": "false",
"east": "false" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/ud_z" "model": "create:block/fluid_pipe/ud_z"
@ -369,9 +369,9 @@
{ {
"when": { "when": {
"down": "true", "down": "true",
"up": "false", "east": "false",
"west": "false", "west": "false",
"east": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/ud_z" "model": "create:block/fluid_pipe/ud_z"
@ -380,9 +380,9 @@
{ {
"when": { "when": {
"down": "false", "down": "false",
"up": "false", "east": "true",
"west": "true", "west": "true",
"east": "true" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/lr_z" "model": "create:block/fluid_pipe/lr_z"
@ -391,9 +391,9 @@
{ {
"when": { "when": {
"down": "false", "down": "false",
"up": "false", "east": "true",
"west": "false", "west": "false",
"east": "true" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/lr_z" "model": "create:block/fluid_pipe/lr_z"
@ -402,9 +402,9 @@
{ {
"when": { "when": {
"down": "false", "down": "false",
"up": "false", "east": "false",
"west": "true", "west": "true",
"east": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/lr_z" "model": "create:block/fluid_pipe/lr_z"
@ -413,9 +413,9 @@
{ {
"when": { "when": {
"down": "false", "down": "false",
"up": "false", "east": "false",
"west": "false", "west": "false",
"east": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/fluid_pipe/none_z" "model": "create:block/fluid_pipe/none_z"

View file

@ -29,8 +29,8 @@
}, },
{ {
"when": { "when": {
"axis": "x", "sticky_south": "true",
"sticky_south": "true" "axis": "x"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x_sticky", "model": "create:block/radial_chassis_side_x_sticky",
@ -39,8 +39,8 @@
}, },
{ {
"when": { "when": {
"axis": "y", "sticky_south": "true",
"sticky_south": "true" "axis": "y"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_y_sticky" "model": "create:block/radial_chassis_side_y_sticky"
@ -48,8 +48,8 @@
}, },
{ {
"when": { "when": {
"axis": "z", "sticky_south": "true",
"sticky_south": "true" "axis": "z"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x_sticky", "model": "create:block/radial_chassis_side_x_sticky",
@ -59,8 +59,8 @@
}, },
{ {
"when": { "when": {
"axis": "x", "sticky_south": "false",
"sticky_south": "false" "axis": "x"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x", "model": "create:block/radial_chassis_side_x",
@ -69,8 +69,8 @@
}, },
{ {
"when": { "when": {
"axis": "y", "sticky_south": "false",
"sticky_south": "false" "axis": "y"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_y" "model": "create:block/radial_chassis_side_y"
@ -78,8 +78,8 @@
}, },
{ {
"when": { "when": {
"axis": "z", "sticky_south": "false",
"sticky_south": "false" "axis": "z"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x", "model": "create:block/radial_chassis_side_x",
@ -89,8 +89,8 @@
}, },
{ {
"when": { "when": {
"axis": "x", "sticky_west": "true",
"sticky_west": "true" "axis": "x"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x_sticky", "model": "create:block/radial_chassis_side_x_sticky",
@ -99,8 +99,8 @@
}, },
{ {
"when": { "when": {
"axis": "y", "sticky_west": "true",
"sticky_west": "true" "axis": "y"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_y_sticky", "model": "create:block/radial_chassis_side_y_sticky",
@ -109,8 +109,8 @@
}, },
{ {
"when": { "when": {
"axis": "z", "sticky_west": "true",
"sticky_west": "true" "axis": "z"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_z_sticky", "model": "create:block/radial_chassis_side_z_sticky",
@ -119,8 +119,8 @@
}, },
{ {
"when": { "when": {
"axis": "x", "sticky_west": "false",
"sticky_west": "false" "axis": "x"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x", "model": "create:block/radial_chassis_side_x",
@ -129,8 +129,8 @@
}, },
{ {
"when": { "when": {
"axis": "y", "sticky_west": "false",
"sticky_west": "false" "axis": "y"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_y", "model": "create:block/radial_chassis_side_y",
@ -139,8 +139,8 @@
}, },
{ {
"when": { "when": {
"axis": "z", "sticky_west": "false",
"sticky_west": "false" "axis": "z"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_z", "model": "create:block/radial_chassis_side_z",
@ -149,8 +149,8 @@
}, },
{ {
"when": { "when": {
"axis": "x", "sticky_north": "true",
"sticky_north": "true" "axis": "x"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x_sticky" "model": "create:block/radial_chassis_side_x_sticky"
@ -158,8 +158,8 @@
}, },
{ {
"when": { "when": {
"axis": "y", "sticky_north": "true",
"sticky_north": "true" "axis": "y"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_y_sticky", "model": "create:block/radial_chassis_side_y_sticky",
@ -168,8 +168,8 @@
}, },
{ {
"when": { "when": {
"axis": "z", "sticky_north": "true",
"sticky_north": "true" "axis": "z"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x_sticky", "model": "create:block/radial_chassis_side_x_sticky",
@ -178,8 +178,8 @@
}, },
{ {
"when": { "when": {
"axis": "x", "sticky_north": "false",
"sticky_north": "false" "axis": "x"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x" "model": "create:block/radial_chassis_side_x"
@ -187,8 +187,8 @@
}, },
{ {
"when": { "when": {
"axis": "y", "sticky_north": "false",
"sticky_north": "false" "axis": "y"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_y", "model": "create:block/radial_chassis_side_y",
@ -197,8 +197,8 @@
}, },
{ {
"when": { "when": {
"axis": "z", "sticky_north": "false",
"sticky_north": "false" "axis": "z"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x", "model": "create:block/radial_chassis_side_x",
@ -207,8 +207,8 @@
}, },
{ {
"when": { "when": {
"axis": "x", "sticky_east": "true",
"sticky_east": "true" "axis": "x"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x_sticky", "model": "create:block/radial_chassis_side_x_sticky",
@ -217,8 +217,8 @@
}, },
{ {
"when": { "when": {
"axis": "y", "sticky_east": "true",
"sticky_east": "true" "axis": "y"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_y_sticky", "model": "create:block/radial_chassis_side_y_sticky",
@ -227,8 +227,8 @@
}, },
{ {
"when": { "when": {
"axis": "z", "sticky_east": "true",
"sticky_east": "true" "axis": "z"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_z_sticky" "model": "create:block/radial_chassis_side_z_sticky"
@ -236,8 +236,8 @@
}, },
{ {
"when": { "when": {
"axis": "x", "sticky_east": "false",
"sticky_east": "false" "axis": "x"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x", "model": "create:block/radial_chassis_side_x",
@ -246,8 +246,8 @@
}, },
{ {
"when": { "when": {
"axis": "y", "sticky_east": "false",
"sticky_east": "false" "axis": "y"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_y", "model": "create:block/radial_chassis_side_y",
@ -256,8 +256,8 @@
}, },
{ {
"when": { "when": {
"axis": "z", "sticky_east": "false",
"sticky_east": "false" "axis": "z"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_z" "model": "create:block/radial_chassis_side_z"

View file

@ -1906,7 +1906,7 @@
"create.ponder.belt_directions.text_3": "2. They can connect diagonally", "create.ponder.belt_directions.text_3": "2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "3. They can connect vertically", "create.ponder.belt_directions.text_4": "3. They can connect vertically",
"create.ponder.belt_directions.text_5": "4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "Moving belts will transport Items and other Entities",
@ -1957,6 +1957,16 @@
"create.ponder.chain_gearshift.text_5": "Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "12 RPM", "create.ponder.chain_gearshift.text_6": "12 RPM",
"create.ponder.chute.header": "Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2021,6 +2031,12 @@
"create.ponder.deployer_redstone.text_2": "Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "Using Depots",
"create.ponder.depot.text_1": "Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "Alternatively, Blazes can be collected from their Spawners directly",
@ -2068,7 +2084,7 @@
"create.ponder.funnel_intro.text_1": "Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "Redstone control", "create.ponder.funnel_redstone.header": "Redstone control",
"create.ponder.funnel_redstone.text_1": "Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "Direct transfer", "create.ponder.funnel_transfer.header": "Direct transfer",
"create.ponder.funnel_transfer.text_1": "Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "Funnels cannot ever transfer between closed inventories directly.",
@ -2294,6 +2310,12 @@
"create.ponder.shaft_casing.header": "Encasing Shafts", "create.ponder.shaft_casing.header": "Encasing Shafts",
"create.ponder.shaft_casing.text_1": "Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1425", "_": "Missing Localizations: 1443",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1907,7 +1907,7 @@
"create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically",
"create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities",
@ -1958,6 +1958,16 @@
"create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2022,6 +2032,12 @@
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "UNLOCALIZED: Using Depots",
"create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly",
@ -2069,7 +2085,7 @@
"create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control",
"create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer",
"create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.",
@ -2295,6 +2311,12 @@
"create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts",
"create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 456", "_": "Missing Localizations: 474",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1907,7 +1907,7 @@
"create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically",
"create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities",
@ -1958,6 +1958,16 @@
"create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2022,6 +2032,12 @@
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "UNLOCALIZED: Using Depots",
"create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly",
@ -2069,7 +2085,7 @@
"create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control",
"create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer",
"create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.",
@ -2295,6 +2311,12 @@
"create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts",
"create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1355", "_": "Missing Localizations: 1373",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1907,7 +1907,7 @@
"create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically",
"create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities",
@ -1958,6 +1958,16 @@
"create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2022,6 +2032,12 @@
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "UNLOCALIZED: Using Depots",
"create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly",
@ -2069,7 +2085,7 @@
"create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control",
"create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer",
"create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.",
@ -2295,6 +2311,12 @@
"create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts",
"create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1137", "_": "Missing Localizations: 1155",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1907,7 +1907,7 @@
"create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically",
"create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities",
@ -1958,6 +1958,16 @@
"create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2022,6 +2032,12 @@
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "UNLOCALIZED: Using Depots",
"create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly",
@ -2069,7 +2085,7 @@
"create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control",
"create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer",
"create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.",
@ -2295,6 +2311,12 @@
"create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts",
"create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 473", "_": "Missing Localizations: 491",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1907,7 +1907,7 @@
"create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically",
"create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities",
@ -1958,6 +1958,16 @@
"create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2022,6 +2032,12 @@
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "UNLOCALIZED: Using Depots",
"create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly",
@ -2069,7 +2085,7 @@
"create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control",
"create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer",
"create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.",
@ -2295,6 +2311,12 @@
"create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts",
"create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 480", "_": "Missing Localizations: 498",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1907,7 +1907,7 @@
"create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically",
"create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities",
@ -1958,6 +1958,16 @@
"create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2022,6 +2032,12 @@
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "UNLOCALIZED: Using Depots",
"create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly",
@ -2069,7 +2085,7 @@
"create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control",
"create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer",
"create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.",
@ -2295,6 +2311,12 @@
"create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts",
"create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 526", "_": "Missing Localizations: 544",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1907,7 +1907,7 @@
"create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically",
"create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities",
@ -1958,6 +1958,16 @@
"create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2022,6 +2032,12 @@
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "UNLOCALIZED: Using Depots",
"create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly",
@ -2069,7 +2085,7 @@
"create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control",
"create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer",
"create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.",
@ -2295,6 +2311,12 @@
"create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts",
"create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1624", "_": "Missing Localizations: 1642",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1907,7 +1907,7 @@
"create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically",
"create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities",
@ -1958,6 +1958,16 @@
"create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2022,6 +2032,12 @@
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "UNLOCALIZED: Using Depots",
"create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly",
@ -2069,7 +2085,7 @@
"create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control",
"create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer",
"create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.",
@ -2295,6 +2311,12 @@
"create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts",
"create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1690", "_": "Missing Localizations: 1708",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1907,7 +1907,7 @@
"create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically",
"create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities",
@ -1958,6 +1958,16 @@
"create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2022,6 +2032,12 @@
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "UNLOCALIZED: Using Depots",
"create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly",
@ -2069,7 +2085,7 @@
"create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control",
"create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer",
"create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.",
@ -2295,6 +2311,12 @@
"create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts",
"create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 476", "_": "Missing Localizations: 494",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1907,7 +1907,7 @@
"create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically",
"create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities",
@ -1958,6 +1958,16 @@
"create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2022,6 +2032,12 @@
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "UNLOCALIZED: Using Depots",
"create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly",
@ -2069,7 +2085,7 @@
"create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control",
"create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer",
"create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.",
@ -2295,6 +2311,12 @@
"create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts",
"create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 474", "_": "Missing Localizations: 492",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1907,7 +1907,7 @@
"create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically",
"create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities",
@ -1958,6 +1958,16 @@
"create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2022,6 +2032,12 @@
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "UNLOCALIZED: Using Depots",
"create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly",
@ -2069,7 +2085,7 @@
"create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control",
"create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer",
"create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.",
@ -2295,6 +2311,12 @@
"create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts",
"create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 479", "_": "Missing Localizations: 497",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1907,7 +1907,7 @@
"create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally",
"create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically",
"create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally",
"create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions.\nBelts can span any Length between 2 and 20 blocks", "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks",
"create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics",
"create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities",
@ -1958,6 +1958,16 @@
"create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes",
"create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories",
"create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created",
"create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal",
"create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes",
"create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward",
"create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction",
"create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides",
"create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings",
"create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them",
"create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day",
@ -2022,6 +2032,12 @@
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.depot.header": "UNLOCALIZED: Using Depots",
"create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements",
"create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it",
"create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing",
"create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms",
"create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners",
"create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it",
"create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly",
@ -2069,7 +2085,7 @@
"create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.",
"create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control",
"create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting.", "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting",
"create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer",
"create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.",
@ -2295,6 +2311,12 @@
"create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts",
"create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts",
"create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes",
"create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control",
"create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer",
"create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size",
"create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.",
"create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer",
"create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components",
"create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge",

View file

@ -28,8 +28,8 @@
"trigger": "create:bracket_apply", "trigger": "create:bracket_apply",
"conditions": { "conditions": {
"accepted_entries": [ "accepted_entries": [
"create:cogwheel", "create:large_cogwheel",
"create:large_cogwheel" "create:cogwheel"
] ]
} }
}, },

View file

@ -7,6 +7,8 @@ import java.util.Random;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.ParametersAreNonnullByDefault;
import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.content.contraptions.components.actors.BlockBreakingKineticTileEntity; import com.simibubi.create.content.contraptions.components.actors.BlockBreakingKineticTileEntity;
import com.simibubi.create.content.contraptions.processing.ProcessingInventory; import com.simibubi.create.content.contraptions.processing.ProcessingInventory;
@ -57,15 +59,13 @@ import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import javax.annotation.ParametersAreNonnullByDefault;
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault @MethodsReturnNonnullByDefault
public class SawTileEntity extends BlockBreakingKineticTileEntity { public class SawTileEntity extends BlockBreakingKineticTileEntity {
private static final Object cuttingRecipesKey = new Object(); private static final Object cuttingRecipesKey = new Object();
public static final LazyValue<IRecipeType<?>> woodcuttingRecipeType = new LazyValue<>(() -> Registry.RECIPE_TYPE.getOrDefault(new ResourceLocation("druidcraft", "woodcutting"))); public static final LazyValue<IRecipeType<?>> woodcuttingRecipeType =
new LazyValue<>(() -> Registry.RECIPE_TYPE.getOrDefault(new ResourceLocation("druidcraft", "woodcutting")));
public ProcessingInventory inventory; public ProcessingInventory inventory;
private int recipeIndex; private int recipeIndex;
@ -151,10 +151,14 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
continue; continue;
ItemStack tryExportingToBeltFunnel = getBehaviour(DirectBeltInputBehaviour.TYPE) ItemStack tryExportingToBeltFunnel = getBehaviour(DirectBeltInputBehaviour.TYPE)
.tryExportingToBeltFunnel(stack, itemMovementFacing.getOpposite()); .tryExportingToBeltFunnel(stack, itemMovementFacing.getOpposite());
if (tryExportingToBeltFunnel.getCount() != stack.getCount()) { if (tryExportingToBeltFunnel != null) {
inventory.setStackInSlot(slot, tryExportingToBeltFunnel); if (tryExportingToBeltFunnel.getCount() != stack.getCount()) {
notifyUpdate(); inventory.setStackInSlot(slot, tryExportingToBeltFunnel);
return; notifyUpdate();
return;
}
if (!tryExportingToBeltFunnel.isEmpty())
return;
} }
} }
@ -277,19 +281,19 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
private List<? extends IRecipe<?>> getRecipes() { private List<? extends IRecipe<?>> getRecipes() {
/* /*
Predicate<IRecipe<?>> types = AllConfigs.SERVER.recipes.allowStonecuttingOnSaw.get() * Predicate<IRecipe<?>> types =
? RecipeConditions.isOfType(IRecipeType.STONECUTTING, AllRecipeTypes.CUTTING.getType()) * AllConfigs.SERVER.recipes.allowStonecuttingOnSaw.get() ?
: RecipeConditions.isOfType(AllRecipeTypes.CUTTING.getType()); * RecipeConditions.isOfType(IRecipeType.STONECUTTING,
* AllRecipeTypes.CUTTING.getType()) :
* RecipeConditions.isOfType(AllRecipeTypes.CUTTING.getType());
*
*/ */
Predicate<IRecipe<?>> types = RecipeConditions.isOfType( Predicate<IRecipe<?>> types = RecipeConditions.isOfType(AllRecipeTypes.CUTTING.getType(),
AllRecipeTypes.CUTTING.getType(),
AllConfigs.SERVER.recipes.allowStonecuttingOnSaw.get() ? IRecipeType.STONECUTTING : null, AllConfigs.SERVER.recipes.allowStonecuttingOnSaw.get() ? IRecipeType.STONECUTTING : null,
AllConfigs.SERVER.recipes.allowWoodcuttingOnSaw.get() ? woodcuttingRecipeType.getValue() : null AllConfigs.SERVER.recipes.allowWoodcuttingOnSaw.get() ? woodcuttingRecipeType.getValue() : null);
);
List<IRecipe<?>> startedSearch = RecipeFinder.get(cuttingRecipesKey, world, types); List<IRecipe<?>> startedSearch = RecipeFinder.get(cuttingRecipesKey, world, types);
return startedSearch.stream() return startedSearch.stream()
.filter(RecipeConditions.outputMatchesFilter(filtering)) .filter(RecipeConditions.outputMatchesFilter(filtering))
.filter(RecipeConditions.firstIngredientMatches(inventory.getStackInSlot(0))) .filter(RecipeConditions.firstIngredientMatches(inventory.getStackInSlot(0)))

View file

@ -99,7 +99,7 @@ public class ItemDrainTileEntity extends SmartTileEntity implements IHaveGoggleI
} }
boolean onClient = world.isRemote && !isVirtual(); boolean onClient = world.isRemote && !isVirtual();
if (processingTicks > 0) { if (processingTicks > 0) {
heldItem.prevBeltPosition = .5f; heldItem.prevBeltPosition = .5f;
boolean wasAtBeginning = processingTicks == FILLING_TIME; boolean wasAtBeginning = processingTicks == FILLING_TIME;
@ -129,13 +129,17 @@ public class ItemDrainTileEntity extends SmartTileEntity implements IHaveGoggleI
ItemStack tryExportingToBeltFunnel = getBehaviour(DirectBeltInputBehaviour.TYPE) ItemStack tryExportingToBeltFunnel = getBehaviour(DirectBeltInputBehaviour.TYPE)
.tryExportingToBeltFunnel(heldItem.stack, side.getOpposite()); .tryExportingToBeltFunnel(heldItem.stack, side.getOpposite());
if (tryExportingToBeltFunnel.getCount() != heldItem.stack.getCount()) { if (tryExportingToBeltFunnel != null) {
if (tryExportingToBeltFunnel.isEmpty()) if (tryExportingToBeltFunnel.getCount() != heldItem.stack.getCount()) {
heldItem = null; if (tryExportingToBeltFunnel.isEmpty())
else heldItem = null;
heldItem.stack = tryExportingToBeltFunnel; else
notifyUpdate(); heldItem.stack = tryExportingToBeltFunnel;
return; notifyUpdate();
return;
}
if (!tryExportingToBeltFunnel.isEmpty())
return;
} }
BlockPos nextPosition = pos.offset(side); BlockPos nextPosition = pos.offset(side);

View file

@ -237,7 +237,8 @@ public class BeltTileEntity extends KineticTileEntity implements ILightListener
if (casingBefore == casing) if (casingBefore == casing)
return; return;
requestModelDataUpdate(); if (!isVirtual())
requestModelDataUpdate();
if (hasWorld()) if (hasWorld())
world.notifyBlockUpdate(getPos(), getBlockState(), getBlockState(), 16); world.notifyBlockUpdate(getPos(), getBlockState(), getBlockState(), 16);
} }
@ -290,10 +291,8 @@ public class BeltTileEntity extends KineticTileEntity implements ILightListener
} }
public boolean isController() { public boolean isController() {
return controller != null && return controller != null && pos.getX() == controller.getX() && pos.getY() == controller.getY()
pos.getX() == controller.getX() && && pos.getZ() == controller.getZ();
pos.getY() == controller.getY() &&
pos.getZ() == controller.getZ();
} }
public float getBeltMovementSpeed() { public float getBeltMovementSpeed() {

View file

@ -107,6 +107,12 @@ public class BeltInventory {
// Don't move if held by processing (client) // Don't move if held by processing (client)
if (world.isRemote && currentItem.locked) if (world.isRemote && currentItem.locked)
continue; continue;
// Don't move if held by external components
if (currentItem.lockedExternally) {
currentItem.lockedExternally = false;
continue;
}
// Don't move if other items are waiting in front // Don't move if other items are waiting in front
float currentPos = currentItem.beltPosition; float currentPos = currentItem.beltPosition;

View file

@ -20,6 +20,7 @@ public class TransportedItemStack implements Comparable<TransportedItemStack> {
public int insertedAt; public int insertedAt;
public Direction insertedFrom; public Direction insertedFrom;
public boolean locked; public boolean locked;
public boolean lockedExternally;
public float prevBeltPosition; public float prevBeltPosition;
public float prevSideOffset; public float prevSideOffset;
@ -73,7 +74,10 @@ public class TransportedItemStack implements Comparable<TransportedItemStack> {
nbt.putInt("InSegment", insertedAt); nbt.putInt("InSegment", insertedAt);
nbt.putInt("Angle", angle); nbt.putInt("Angle", angle);
nbt.putInt("InDirection", insertedFrom.getIndex()); nbt.putInt("InDirection", insertedFrom.getIndex());
nbt.putBoolean("Locked", locked); if (locked)
nbt.putBoolean("Locked", locked);
if (lockedExternally)
nbt.putBoolean("LockedExternally", lockedExternally);
return nbt; return nbt;
} }
@ -87,6 +91,7 @@ public class TransportedItemStack implements Comparable<TransportedItemStack> {
stack.angle = nbt.getInt("Angle"); stack.angle = nbt.getInt("Angle");
stack.insertedFrom = Direction.byIndex(nbt.getInt("InDirection")); stack.insertedFrom = Direction.byIndex(nbt.getInt("InDirection"));
stack.locked = nbt.getBoolean("Locked"); stack.locked = nbt.getBoolean("Locked");
stack.lockedExternally = nbt.getBoolean("LockedExternally");
return stack; return stack;
} }

View file

@ -26,102 +26,114 @@ import net.minecraft.world.World;
public class CogWheelBlock extends AbstractShaftBlock { public class CogWheelBlock extends AbstractShaftBlock {
boolean isLarge; boolean isLarge;
private CogWheelBlock(boolean large, Properties properties) { private CogWheelBlock(boolean large, Properties properties) {
super(properties); super(properties);
isLarge = large; isLarge = large;
} }
public static CogWheelBlock small(Properties properties) { public static CogWheelBlock small(Properties properties) {
return new CogWheelBlock(false, properties); return new CogWheelBlock(false, properties);
} }
public static CogWheelBlock large(Properties properties) { public static CogWheelBlock large(Properties properties) {
return new CogWheelBlock(true, properties); return new CogWheelBlock(true, properties);
} }
public static boolean isSmallCog(BlockState state) { public static boolean isSmallCog(BlockState state) {
return AllBlocks.COGWHEEL.has(state); return AllBlocks.COGWHEEL.has(state);
} }
public static boolean isLargeCog(BlockState state) { public static boolean isLargeCog(BlockState state) {
return AllBlocks.LARGE_COGWHEEL.has(state); return AllBlocks.LARGE_COGWHEEL.has(state);
} }
@Override @Override
public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
return (isLarge ? AllShapes.LARGE_GEAR : AllShapes.SMALL_GEAR).get(state.get(AXIS)); return (isLarge ? AllShapes.LARGE_GEAR : AllShapes.SMALL_GEAR).get(state.get(AXIS));
} }
@Override @Override
public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) {
for (Direction facing : Iterate.directions) { for (Direction facing : Iterate.directions) {
if (facing.getAxis() == state.get(AXIS)) if (facing.getAxis() == state.get(AXIS))
continue; continue;
BlockState blockState = worldIn.getBlockState(pos.offset(facing)); BlockPos offsetPos = pos.offset(facing);
if (blockState.has(AXIS) && facing.getAxis() == blockState.get(AXIS)) BlockState blockState = worldIn.getBlockState(offsetPos);
continue; if (blockState.has(AXIS) && facing.getAxis() == blockState.get(AXIS))
continue;
if (isLargeCog(blockState) || isLarge && isSmallCog(blockState))
return false;
}
return true;
}
@Override boolean smallCog = isSmallCog(blockState);
public BlockState getStateForPlacement(BlockItemUseContext context) { if (!smallCog && blockState.getBlock() instanceof IRotate)
BlockPos placedOnPos = context.getPos().offset(context.getFace().getOpposite()); smallCog = ((IRotate) blockState.getBlock()).hasIntegratedCogwheel(worldIn, offsetPos, blockState);
World world = context.getWorld();
BlockState placedAgainst = world.getBlockState(placedOnPos);
Block block = placedAgainst.getBlock();
if (context.getPlayer() != null && context.getPlayer().isSneaking()) if (isLargeCog(blockState) || isLarge && smallCog)
return this.getDefaultState().with(AXIS, context.getFace().getAxis()); return false;
}
BlockState stateBelow = world.getBlockState(context.getPos() return true;
.down()); }
IFluidState ifluidstate = context.getWorld().getFluidState(context.getPos());
if (AllBlocks.ROTATION_SPEED_CONTROLLER.has(stateBelow) && isLarge) {
return this.getDefaultState()
.with(BlockStateProperties.WATERLOGGED, ifluidstate.getFluid() == Fluids.WATER)
.with(AXIS, stateBelow.get(SpeedControllerBlock.HORIZONTAL_AXIS) == Axis.X ? Axis.Z : Axis.X);
}
if (!(block instanceof IRotate) @Override
|| !(((IRotate) block).hasIntegratedCogwheel(world, placedOnPos, placedAgainst))) { public BlockState getStateForPlacement(BlockItemUseContext context) {
Axis preferredAxis = getPreferredAxis(context); BlockPos placedOnPos = context.getPos()
if (preferredAxis != null) .offset(context.getFace()
return this.getDefaultState() .getOpposite());
.with(AXIS, preferredAxis) World world = context.getWorld();
.with(BlockStateProperties.WATERLOGGED, ifluidstate.getFluid() == Fluids.WATER); BlockState placedAgainst = world.getBlockState(placedOnPos);
return this.getDefaultState() Block block = placedAgainst.getBlock();
.with(AXIS, context.getFace().getAxis())
.with(BlockStateProperties.WATERLOGGED, ifluidstate.getFluid() == Fluids.WATER);
}
return getDefaultState().with(AXIS, ((IRotate) block).getRotationAxis(placedAgainst)); if (context.getPlayer() != null && context.getPlayer()
} .isSneaking())
return this.getDefaultState()
.with(AXIS, context.getFace()
.getAxis());
@Override BlockState stateBelow = world.getBlockState(context.getPos()
public float getParticleTargetRadius() { .down());
return isLarge ? 1.125f : .65f; IFluidState ifluidstate = context.getWorld()
} .getFluidState(context.getPos());
if (AllBlocks.ROTATION_SPEED_CONTROLLER.has(stateBelow) && isLarge) {
return this.getDefaultState()
.with(BlockStateProperties.WATERLOGGED, ifluidstate.getFluid() == Fluids.WATER)
.with(AXIS, stateBelow.get(SpeedControllerBlock.HORIZONTAL_AXIS) == Axis.X ? Axis.Z : Axis.X);
}
@Override if (!(block instanceof IRotate)
public float getParticleInitialRadius() { || !(((IRotate) block).hasIntegratedCogwheel(world, placedOnPos, placedAgainst))) {
return isLarge ? 1f : .75f; Axis preferredAxis = getPreferredAxis(context);
} if (preferredAxis != null)
return this.getDefaultState()
.with(AXIS, preferredAxis)
.with(BlockStateProperties.WATERLOGGED, ifluidstate.getFluid() == Fluids.WATER);
return this.getDefaultState()
.with(AXIS, context.getFace()
.getAxis())
.with(BlockStateProperties.WATERLOGGED, ifluidstate.getFluid() == Fluids.WATER);
}
public void fillItemGroup(ItemGroup group, NonNullList<ItemStack> items) { return getDefaultState().with(AXIS, ((IRotate) block).getRotationAxis(placedAgainst));
items.add(new ItemStack(this)); }
}
// IRotate @Override
public float getParticleTargetRadius() {
return isLarge ? 1.125f : .65f;
}
@Override @Override
public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state) { public float getParticleInitialRadius() {
return !isLarge; return isLarge ? 1f : .75f;
} }
public void fillItemGroup(ItemGroup group, NonNullList<ItemStack> items) {
items.add(new ItemStack(this));
}
// IRotate
@Override
public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state) {
return !isLarge;
}
} }

View file

@ -4,7 +4,6 @@ import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder; import com.mojang.blaze3d.vertex.IVertexBuilder;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.SuperByteBuffer;
import com.simibubi.create.foundation.render.backend.Backend;
import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher;
import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer; import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer;
import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AngleHelper;

View file

@ -1,19 +1,22 @@
package com.simibubi.create.content.logistics.block.belts.tunnel; package com.simibubi.create.content.logistics.block.belts.tunnel;
import java.util.*; import java.util.EnumMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.simibubi.create.content.logistics.packet.TunnelFlapPacket;
import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue;
import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.render.backend.FastRenderDispatcher;
import com.simibubi.create.foundation.render.backend.instancing.IInstanceRendered;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock.Shape; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock.Shape;
import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock;
import com.simibubi.create.content.logistics.packet.TunnelFlapPacket;
import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue;
import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.render.backend.FastRenderDispatcher;
import com.simibubi.create.foundation.render.backend.instancing.IInstanceRendered;
import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Iterate;
@ -29,9 +32,11 @@ import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.Axis;
import net.minecraft.util.Direction.AxisDirection; import net.minecraft.util.Direction.AxisDirection;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.Constants.NBT;
import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
@ -100,7 +105,7 @@ public class BeltTunnelTileEntity extends SmartTileEntity implements IInstanceRe
super.read(compound, clientPacket); super.read(compound, clientPacket);
if (clientPacket) if (clientPacket)
DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> FastRenderDispatcher.enqueueUpdate(this)); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FastRenderDispatcher.enqueueUpdate(this));
} }
public void updateTunnelConnections() { public void updateTunnelConnections() {
@ -172,6 +177,11 @@ public class BeltTunnelTileEntity extends SmartTileEntity implements IInstanceRe
flapsToSend.clear(); flapsToSend.clear();
} }
@Override
public boolean shouldRenderAsTE() {
return true;
}
@Override @Override
public void addBehaviours(List<TileEntityBehaviour> behaviours) {} public void addBehaviours(List<TileEntityBehaviour> behaviours) {}

View file

@ -13,6 +13,7 @@ import com.simibubi.create.content.contraptions.components.fan.EncasedFanBlock;
import com.simibubi.create.content.contraptions.components.fan.EncasedFanTileEntity; import com.simibubi.create.content.contraptions.components.fan.EncasedFanTileEntity;
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
import com.simibubi.create.content.contraptions.particle.AirParticleData; import com.simibubi.create.content.contraptions.particle.AirParticleData;
import com.simibubi.create.content.logistics.block.funnel.FunnelBlock;
import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.advancement.AllTriggers;
import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.gui.widgets.InterpolatedValue; import com.simibubi.create.foundation.gui.widgets.InterpolatedValue;
@ -155,7 +156,7 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
if (!handleDownwardOutput(true)) if (!handleDownwardOutput(true))
nextOffset = .5f; nextOffset = .5f;
else if (nextOffset < 0) { else if (nextOffset < 0) {
handleDownwardOutput(world.isRemote); handleDownwardOutput(world.isRemote && !isVirtual());
return; return;
} }
} }
@ -166,7 +167,7 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
if (!handleUpwardOutput(true)) if (!handleUpwardOutput(true))
nextOffset = .5f; nextOffset = .5f;
else if (nextOffset > 1) { else if (nextOffset > 1) {
handleUpwardOutput(world.isRemote); handleUpwardOutput(world.isRemote && !isVirtual());
return; return;
} }
} }
@ -380,6 +381,8 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
.isHorizontal()) .isHorizontal())
return false; return false;
if (FunnelBlock.getFunnelFacing(world.getBlockState(pos.down())) == Direction.DOWN)
return false;
if (Block.hasSolidSideOnTop(world, pos.down())) if (Block.hasSolidSideOnTop(world, pos.down()))
return false; return false;
@ -434,6 +437,8 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
return true; return true;
} }
if (FunnelBlock.getFunnelFacing(world.getBlockState(pos.up())) == Direction.UP)
return false;
if (Block.hasSolidSide(stateAbove, world, pos.up(), Direction.DOWN)) if (Block.hasSolidSide(stateAbove, world, pos.up(), Direction.DOWN))
return false; return false;
if (!inputChutes.isEmpty()) if (!inputChutes.isEmpty())

View file

@ -98,6 +98,8 @@ public class DepotTileEntity extends SmartTileEntity {
continue; continue;
ItemStack afterInsert = ItemStack afterInsert =
getBehaviour(DirectBeltInputBehaviour.TYPE).tryExportingToBeltFunnel(previousItem, null); getBehaviour(DirectBeltInputBehaviour.TYPE).tryExportingToBeltFunnel(previousItem, null);
if (afterInsert == null)
return false;
if (previousItem.getCount() != afterInsert.getCount()) { if (previousItem.getCount() != afterInsert.getCount()) {
processingOutputBuffer.setStackInSlot(slot, afterInsert); processingOutputBuffer.setStackInSlot(slot, afterInsert);
notifyUpdate(); notifyUpdate();
@ -108,6 +110,8 @@ public class DepotTileEntity extends SmartTileEntity {
ItemStack previousItem = heldItem.stack; ItemStack previousItem = heldItem.stack;
ItemStack afterInsert = ItemStack afterInsert =
getBehaviour(DirectBeltInputBehaviour.TYPE).tryExportingToBeltFunnel(previousItem, null); getBehaviour(DirectBeltInputBehaviour.TYPE).tryExportingToBeltFunnel(previousItem, null);
if (afterInsert == null)
return false;
if (previousItem.getCount() != afterInsert.getCount()) { if (previousItem.getCount() != afterInsert.getCount()) {
if (afterInsert.isEmpty()) if (afterInsert.isEmpty())
heldItem = null; heldItem = null;

View file

@ -263,6 +263,8 @@ public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringIn
return false; return false;
if (!(blockState.getBlock() instanceof FunnelBlock)) if (!(blockState.getBlock() instanceof FunnelBlock))
return false; return false;
if (blockState.get(FunnelBlock.EXTRACTING))
return false;
return FunnelBlock.getFunnelFacing(blockState) == Direction.UP; return FunnelBlock.getFunnelFacing(blockState) == Direction.UP;
} }

View file

@ -1,5 +1,11 @@
package com.simibubi.create.content.logistics.block.mechanicalArm; package com.simibubi.create.content.logistics.block.mechanicalArm;
import java.util.function.Supplier;
import javax.annotation.Nullable;
import org.apache.commons.lang3.mutable.MutableBoolean;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
@ -10,17 +16,25 @@ import com.simibubi.create.content.contraptions.components.crafter.MechanicalCra
import com.simibubi.create.content.contraptions.components.deployer.DeployerBlock; import com.simibubi.create.content.contraptions.components.deployer.DeployerBlock;
import com.simibubi.create.content.contraptions.components.saw.SawBlock; import com.simibubi.create.content.contraptions.components.saw.SawBlock;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock;
import com.simibubi.create.content.contraptions.relays.belt.BeltHelper;
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock;
import com.simibubi.create.content.logistics.block.chute.AbstractChuteBlock; import com.simibubi.create.content.logistics.block.chute.AbstractChuteBlock;
import com.simibubi.create.content.logistics.block.funnel.AbstractFunnelBlock;
import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock;
import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape;
import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; import com.simibubi.create.content.logistics.block.funnel.FunnelBlock;
import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity;
import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.advancement.AllTriggers;
import com.simibubi.create.foundation.item.SmartInventory; import com.simibubi.create.foundation.item.SmartInventory;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult;
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InvManipulationBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InvManipulationBehaviour;
import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
import net.minecraft.block.ComposterBlock; import net.minecraft.block.ComposterBlock;
@ -39,6 +53,7 @@ import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockReader; import net.minecraft.world.IBlockReader;
import net.minecraft.world.IWorld;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
@ -48,9 +63,6 @@ import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.items.wrapper.InvWrapper; import net.minecraftforge.items.wrapper.InvWrapper;
import javax.annotation.Nullable;
import java.util.function.Supplier;
public abstract class ArmInteractionPoint { public abstract class ArmInteractionPoint {
enum Mode { enum Mode {
@ -65,21 +77,21 @@ public abstract class ArmInteractionPoint {
private ArmAngleTarget cachedAngles; private ArmAngleTarget cachedAngles;
private static ImmutableMap<ArmInteractionPoint, Supplier<ArmInteractionPoint>> POINTS = private static ImmutableMap<ArmInteractionPoint, Supplier<ArmInteractionPoint>> POINTS =
ImmutableMap.<ArmInteractionPoint, Supplier<ArmInteractionPoint>>builder() ImmutableMap.<ArmInteractionPoint, Supplier<ArmInteractionPoint>>builder()
.put(new Saw(), Saw::new) .put(new Saw(), Saw::new)
.put(new Belt(), Belt::new) .put(new Belt(), Belt::new)
.put(new Depot(), Depot::new) .put(new Depot(), Depot::new)
.put(new Chute(), Chute::new) .put(new Chute(), Chute::new)
.put(new Basin(), Basin::new) .put(new Basin(), Basin::new)
.put(new Funnel(), Funnel::new) .put(new Funnel(), Funnel::new)
.put(new Jukebox(), Jukebox::new) .put(new Jukebox(), Jukebox::new)
.put(new Crafter(), Crafter::new) .put(new Crafter(), Crafter::new)
.put(new Deployer(), Deployer::new) .put(new Deployer(), Deployer::new)
.put(new Composter(), Composter::new) .put(new Composter(), Composter::new)
.put(new Millstone(), Millstone::new) .put(new Millstone(), Millstone::new)
.put(new BlazeBurner(), BlazeBurner::new) .put(new BlazeBurner(), BlazeBurner::new)
.put(new CrushingWheels(), CrushingWheels::new) .put(new CrushingWheels(), CrushingWheels::new)
.build(); .build();
public ArmInteractionPoint() { public ArmInteractionPoint() {
cachedHandler = LazyOptional.empty(); cachedHandler = LazyOptional.empty();
@ -108,6 +120,8 @@ public abstract class ArmInteractionPoint {
return isValid(reader, pos, reader.getBlockState(pos)); return isValid(reader, pos, reader.getBlockState(pos));
} }
void keepAlive(IWorld world) {}
abstract boolean isValid(IBlockReader reader, BlockPos pos, BlockState state); abstract boolean isValid(IBlockReader reader, BlockPos pos, BlockState state);
static boolean isInteractable(IBlockReader reader, BlockPos pos, BlockState state) { static boolean isInteractable(IBlockReader reader, BlockPos pos, BlockState state) {
@ -119,7 +133,8 @@ public abstract class ArmInteractionPoint {
ArmAngleTarget getTargetAngles(BlockPos armPos, boolean ceiling) { ArmAngleTarget getTargetAngles(BlockPos armPos, boolean ceiling) {
if (cachedAngles == null) if (cachedAngles == null)
cachedAngles = new ArmAngleTarget(armPos, getInteractionPositionVector(), getInteractionDirection(), ceiling); cachedAngles =
new ArmAngleTarget(armPos, getInteractionPositionVector(), getInteractionDirection(), ceiling);
return cachedAngles; return cachedAngles;
} }
@ -167,7 +182,8 @@ public abstract class ArmInteractionPoint {
for (ArmInteractionPoint armInteractionPoint : POINTS.keySet()) for (ArmInteractionPoint armInteractionPoint : POINTS.keySet())
if (armInteractionPoint.isValid(world, pos, state)) if (armInteractionPoint.isValid(world, pos, state))
point = POINTS.get(armInteractionPoint).get(); point = POINTS.get(armInteractionPoint)
.get();
if (point != null) { if (point != null) {
point.state = state; point.state = state;
@ -222,7 +238,7 @@ public abstract class ArmInteractionPoint {
@Override @Override
boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) {
return AllBlocks.MECHANICAL_SAW.has(state) && state.get(SawBlock.FACING) == Direction.UP return AllBlocks.MECHANICAL_SAW.has(state) && state.get(SawBlock.FACING) == Direction.UP
&& ((KineticTileEntity) reader.getTileEntity(pos)).getSpeed() != 0; && ((KineticTileEntity) reader.getTileEntity(pos)).getSpeed() != 0;
} }
} }
@ -260,7 +276,8 @@ public abstract class ArmInteractionPoint {
@Nullable @Nullable
@Override @Override
IItemHandler getHandler(World world) { IItemHandler getHandler(World world) {
return new InvWrapper(((ComposterBlock) Blocks.COMPOSTER).createInventory(world.getBlockState(pos), world, pos)); return new InvWrapper(
((ComposterBlock) Blocks.COMPOSTER).createInventory(world.getBlockState(pos), world, pos));
} }
} }
@ -273,12 +290,14 @@ public abstract class ArmInteractionPoint {
@Override @Override
Direction getInteractionDirection() { Direction getInteractionDirection() {
return state.get(DeployerBlock.FACING).getOpposite(); return state.get(DeployerBlock.FACING)
.getOpposite();
} }
@Override @Override
Vec3d getInteractionPositionVector() { Vec3d getInteractionPositionVector() {
return super.getInteractionPositionVector().add(new Vec3d(getInteractionDirection().getDirectionVec()).scale(.65f)); return super.getInteractionPositionVector()
.add(new Vec3d(getInteractionDirection().getDirectionVec()).scale(.65f));
} }
} }
@ -298,13 +317,15 @@ public abstract class ArmInteractionPoint {
@Override @Override
ItemStack insert(World world, ItemStack stack, boolean simulate) { ItemStack insert(World world, ItemStack stack, boolean simulate) {
ItemStack input = stack.copy(); ItemStack input = stack.copy();
if (!BlazeBurnerBlock.tryInsert(state, world, pos, input, false, true).getResult().isEmpty()) { if (!BlazeBurnerBlock.tryInsert(state, world, pos, input, false, true)
.getResult()
.isEmpty()) {
return stack; return stack;
} }
ActionResult<ItemStack> res = BlazeBurnerBlock.tryInsert(state, world, pos, input, false, simulate); ActionResult<ItemStack> res = BlazeBurnerBlock.tryInsert(state, world, pos, input, false, simulate);
return res.getType() == ActionResultType.SUCCESS return res.getType() == ActionResultType.SUCCESS
? ItemHandlerHelper.copyStackWithSize(stack, stack.getCount() - 1) ? ItemHandlerHelper.copyStackWithSize(stack, stack.getCount() - 1)
: stack; : stack;
} }
@Override @Override
@ -321,7 +342,8 @@ public abstract class ArmInteractionPoint {
@Override @Override
Direction getInteractionDirection() { Direction getInteractionDirection() {
return state.get(MechanicalCrafterBlock.HORIZONTAL_FACING).getOpposite(); return state.get(MechanicalCrafterBlock.HORIZONTAL_FACING)
.getOpposite();
} }
@Override @Override
@ -339,7 +361,8 @@ public abstract class ArmInteractionPoint {
@Override @Override
Vec3d getInteractionPositionVector() { Vec3d getInteractionPositionVector() {
return super.getInteractionPositionVector().add(new Vec3d(getInteractionDirection().getDirectionVec()).scale(.5f)); return super.getInteractionPositionVector()
.add(new Vec3d(getInteractionDirection().getDirectionVec()).scale(.5f));
} }
} }
@ -374,7 +397,8 @@ public abstract class ArmInteractionPoint {
return stack; return stack;
JukeboxBlock jukeboxBlock = (JukeboxBlock) state.getBlock(); JukeboxBlock jukeboxBlock = (JukeboxBlock) state.getBlock();
JukeboxTileEntity jukeboxTE = (JukeboxTileEntity) tileEntity; JukeboxTileEntity jukeboxTE = (JukeboxTileEntity) tileEntity;
if (!jukeboxTE.getRecord().isEmpty()) if (!jukeboxTE.getRecord()
.isEmpty())
return stack; return stack;
if (!(stack.getItem() instanceof MusicDiscItem)) if (!(stack.getItem() instanceof MusicDiscItem))
return stack; return stack;
@ -413,8 +437,30 @@ public abstract class ArmInteractionPoint {
@Override @Override
boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) {
return AllBlocks.BELT.has(state) && !(reader.getBlockState(pos.up()).getBlock() instanceof BeltTunnelBlock); return AllBlocks.BELT.has(state) && !(reader.getBlockState(pos.up())
.getBlock() instanceof BeltTunnelBlock);
} }
@Override
void keepAlive(IWorld world) {
super.keepAlive(world);
BeltTileEntity beltTE = BeltHelper.getSegmentTE(world, pos);
if (beltTE == null)
return;
TransportedItemStackHandlerBehaviour transport =
beltTE.getBehaviour(TransportedItemStackHandlerBehaviour.TYPE);
if (transport == null)
return;
MutableBoolean found = new MutableBoolean(false);
transport.handleProcessingOnAllItems(tis -> {
if (found.isTrue())
return TransportedResult.doNothing();
tis.lockedExternally = true;
found.setTrue();
return TransportedResult.doNothing();
});
}
} }
static class Chute extends TopFaceArmInteractionPoint { static class Chute extends TopFaceArmInteractionPoint {
@ -429,7 +475,9 @@ public abstract class ArmInteractionPoint {
@Override @Override
Vec3d getInteractionPositionVector() { Vec3d getInteractionPositionVector() {
return VecHelper.getCenterOf(pos).add(new Vec3d(FunnelBlock.getFunnelFacing(state).getDirectionVec()).scale(-.15f)); return VecHelper.getCenterOf(pos)
.add(new Vec3d(FunnelBlock.getFunnelFacing(state)
.getDirectionVec()).scale(-.15f));
} }
@Override @Override
@ -444,7 +492,8 @@ public abstract class ArmInteractionPoint {
@Override @Override
Direction getInteractionDirection() { Direction getInteractionDirection() {
return FunnelBlock.getFunnelFacing(state).getOpposite(); return FunnelBlock.getFunnelFacing(state)
.getOpposite();
} }
@Override @Override
@ -475,7 +524,9 @@ public abstract class ArmInteractionPoint {
@Override @Override
boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) {
return state.getBlock() instanceof FunnelBlock && !state.get(FunnelBlock.EXTRACTING); return state.getBlock() instanceof AbstractFunnelBlock
&& !(state.has(FunnelBlock.EXTRACTING) && state.get(FunnelBlock.EXTRACTING))
&& !(state.has(BeltFunnelBlock.SHAPE) && state.get(BeltFunnelBlock.SHAPE) == Shape.PUSHING);
} }
@Override @Override

View file

@ -66,7 +66,7 @@ public class ArmTileEntity extends KineticTileEntity {
protected int lastOutputIndex = -1; protected int lastOutputIndex = -1;
protected boolean redstoneLocked; protected boolean redstoneLocked;
enum Phase { public enum Phase {
SEARCH_INPUTS, MOVE_TO_INPUT, SEARCH_OUTPUTS, MOVE_TO_OUTPUT, DANCING SEARCH_INPUTS, MOVE_TO_INPUT, SEARCH_OUTPUTS, MOVE_TO_OUTPUT, DANCING
} }
@ -108,9 +108,15 @@ public class ArmTileEntity extends KineticTileEntity {
initInteractionPoints(); initInteractionPoints();
boolean targetReached = tickMovementProgress(); boolean targetReached = tickMovementProgress();
if (world.isRemote) if (chasedPointProgress < 1) {
if (phase == Phase.MOVE_TO_INPUT) {
ArmInteractionPoint point = getTargetedInteractionPoint();
if (point != null)
point.keepAlive(world);
}
return; return;
if (chasedPointProgress < 1) }
if (world.isRemote)
return; return;
if (phase == Phase.MOVE_TO_INPUT) if (phase == Phase.MOVE_TO_INPUT)

View file

@ -94,7 +94,7 @@ public class SchematicWorld extends WrappedWorld {
try { try {
TileEntity tileEntity = blockState.createTileEntity(this); TileEntity tileEntity = blockState.createTileEntity(this);
if (tileEntity != null) { if (tileEntity != null) {
tileEntity.setLocation(this, pos); onTEadded(tileEntity, pos);
tileEntities.put(pos, tileEntity); tileEntities.put(pos, tileEntity);
renderedTileEntities.add(tileEntity); renderedTileEntities.add(tileEntity);
} }
@ -105,6 +105,10 @@ public class SchematicWorld extends WrappedWorld {
} }
return null; return null;
} }
protected void onTEadded(TileEntity tileEntity, BlockPos pos) {
tileEntity.setLocation(this, pos);
}
@Override @Override
public BlockState getBlockState(BlockPos globalPos) { public BlockState getBlockState(BlockPos globalPos) {

View file

@ -92,14 +92,14 @@ public class PonderWorld extends SchematicWorld {
originalBlocks.forEach((k, v) -> blocks.put(k, v)); originalBlocks.forEach((k, v) -> blocks.put(k, v));
originalTileEntities.forEach((k, v) -> { originalTileEntities.forEach((k, v) -> {
TileEntity te = TileEntity.create(v.write(new CompoundNBT())); TileEntity te = TileEntity.create(v.write(new CompoundNBT()));
te.setLocation(this, te.getPos()); onTEadded(te, te.getPos());
tileEntities.put(k, te); tileEntities.put(k, te);
renderedTileEntities.add(te); renderedTileEntities.add(te);
}); });
originalEntities.forEach(e -> EntityType.loadEntityUnchecked(e.serializeNBT(), this) originalEntities.forEach(e -> EntityType.loadEntityUnchecked(e.serializeNBT(), this)
.ifPresent(entities::add)); .ifPresent(entities::add));
particles.clearEffects(); particles.clearEffects();
fixVirtualTileEntities(); fixBeltTileEntities();
} }
public void restoreBlocks(Selection selection) { public void restoreBlocks(Selection selection) {
@ -225,16 +225,20 @@ public class PonderWorld extends SchematicWorld {
particles.addParticle(p); particles.addParticle(p);
} }
public void fixVirtualTileEntities() { @Override
for (TileEntity tileEntity : tileEntities.values()) { protected void onTEadded(TileEntity tileEntity, BlockPos pos) {
if (!(tileEntity instanceof SmartTileEntity)) super.onTEadded(tileEntity, pos);
continue; if (!(tileEntity instanceof SmartTileEntity))
SmartTileEntity smartTileEntity = (SmartTileEntity) tileEntity; return;
smartTileEntity.markVirtual(); SmartTileEntity smartTileEntity = (SmartTileEntity) tileEntity;
smartTileEntity.markVirtual();
}
if (!(smartTileEntity instanceof BeltTileEntity)) public void fixBeltTileEntities() {
for (TileEntity tileEntity : tileEntities.values()) {
if (!(tileEntity instanceof BeltTileEntity))
continue; continue;
BeltTileEntity beltTileEntity = (BeltTileEntity) smartTileEntity; BeltTileEntity beltTileEntity = (BeltTileEntity) tileEntity;
if (!beltTileEntity.isController()) if (!beltTileEntity.isController())
continue; continue;
BlockPos controllerPos = tileEntity.getPos(); BlockPos controllerPos = tileEntity.getPos();

View file

@ -16,6 +16,7 @@ import com.simibubi.create.content.contraptions.particle.RotationIndicatorPartic
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
import com.simibubi.create.content.contraptions.relays.gauge.SpeedGaugeTileEntity; import com.simibubi.create.content.contraptions.relays.gauge.SpeedGaugeTileEntity;
import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity;
import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity;
import com.simibubi.create.foundation.ponder.content.PonderPalette; import com.simibubi.create.foundation.ponder.content.PonderPalette;
import com.simibubi.create.foundation.ponder.elements.AnimatedSceneElement; import com.simibubi.create.foundation.ponder.elements.AnimatedSceneElement;
import com.simibubi.create.foundation.ponder.elements.BeltItemElement; import com.simibubi.create.foundation.ponder.elements.BeltItemElement;
@ -56,6 +57,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputB
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult;
import com.simibubi.create.foundation.utility.ColorHelper; import com.simibubi.create.foundation.utility.ColorHelper;
import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
@ -761,6 +763,16 @@ public class SceneBuilder {
}, reDrawBlocks)); }, reDrawBlocks));
} }
public void instructArm(BlockPos armLocation, ArmTileEntity.Phase phase, ItemStack heldItem,
int targetedPoint) {
modifyTileNBT(scene.getSceneBuildingUtil().select.position(armLocation), ArmTileEntity.class, compound -> {
NBTHelper.writeEnum(compound, "Phase", phase);
compound.put("HeldItem", heldItem.serializeNBT());
compound.putInt("TargetPointIndex", targetedPoint);
compound.putFloat("MovementProgress", 0);
});
}
public void flapFunnel(BlockPos position, boolean outward) { public void flapFunnel(BlockPos position, boolean outward) {
modifyTileEntity(position, FunnelTileEntity.class, funnel -> funnel.flap(!outward)); modifyTileEntity(position, FunnelTileEntity.class, funnel -> funnel.flap(!outward));
} }

View file

@ -3,6 +3,7 @@ package com.simibubi.create.foundation.ponder.content;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.components.actors.HarvesterTileEntity; import com.simibubi.create.content.contraptions.components.actors.HarvesterTileEntity;
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.SailBlock; import com.simibubi.create.content.contraptions.components.structureMovement.bearing.SailBlock;
import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity;
import com.simibubi.create.foundation.ponder.ElementLink; import com.simibubi.create.foundation.ponder.ElementLink;
import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuilder;
import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.SceneBuildingUtil;
@ -12,6 +13,7 @@ import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.Pointing; import com.simibubi.create.foundation.utility.Pointing;
import net.minecraft.entity.Entity;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.Axis;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@ -149,6 +151,7 @@ public class BearingScenes {
scene.title("windmill_structure", "Windmill Contraptions"); scene.title("windmill_structure", "Windmill Contraptions");
scene.configureBasePlate(1, 1, 5); scene.configureBasePlate(1, 1, 5);
scene.setSceneOffsetY(-1); scene.setSceneOffsetY(-1);
scene.world.modifyEntities(SuperGlueEntity.class, Entity::remove);
scene.world.showSection(util.select.layer(0), Direction.UP); scene.world.showSection(util.select.layer(0), Direction.UP);
scene.idle(5); scene.idle(5);

View file

@ -6,10 +6,14 @@ import java.util.List;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems; import com.simibubi.create.AllItems;
import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity;
import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity.Mode;
import com.simibubi.create.content.contraptions.fluids.actors.SpoutTileEntity;
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
import com.simibubi.create.content.contraptions.relays.belt.BeltPart; import com.simibubi.create.content.contraptions.relays.belt.BeltPart;
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock;
import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity.Phase;
import com.simibubi.create.foundation.ponder.ElementLink; import com.simibubi.create.foundation.ponder.ElementLink;
import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuilder;
import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.SceneBuildingUtil;
@ -23,6 +27,7 @@ import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.Pointing; import com.simibubi.create.foundation.utility.Pointing;
import net.minecraft.block.Blocks;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.item.ItemEntity;
import net.minecraft.item.DyeColor; import net.minecraft.item.DyeColor;
@ -299,7 +304,7 @@ public class BeltScenes {
scene.idle(10); scene.idle(10);
scene.overlay.showText(160) scene.overlay.showText(160)
.text("These are all possible directions.\nBelts can span any Length between 2 and 20 blocks"); .text("These are all possible directions. Belts can span any Length between 2 and 20 blocks");
scene.markAsFinished(); scene.markAsFinished();
} }
@ -461,4 +466,112 @@ public class BeltScenes {
.pointAt(util.vector.blockSurface(beltPos.south(), Direction.WEST)); .pointAt(util.vector.blockSurface(beltPos.south(), Direction.WEST));
} }
public static void depot(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("depot", "Using Depots");
scene.configureBasePlate(0, 0, 5);
scene.showBasePlate();
scene.idle(5);
scene.world.setBlock(util.grid.at(3, 2, 2), Blocks.WATER.getDefaultState(), false);
BlockPos depotPos = util.grid.at(2, 1, 2);
scene.world.showSection(util.select.position(2, 1, 2), Direction.DOWN);
Vec3d topOf = util.vector.topOf(depotPos);
scene.overlay.showText(60)
.attachKeyFrame()
.text("Depots can serve as 'stationary' belt elements")
.placeNearTarget()
.pointAt(topOf);
scene.idle(70);
scene.overlay.showControls(new InputWindowElement(topOf, Pointing.DOWN).rightClick()
.withItem(AllBlocks.COPPER_BLOCK.asStack()), 20);
scene.idle(7);
scene.world.createItemOnBeltLike(depotPos, Direction.NORTH, AllBlocks.COPPER_BLOCK.asStack());
scene.idle(10);
scene.overlay.showText(70)
.attachKeyFrame()
.text("Right-Click to manually place or remove Items from it")
.placeNearTarget()
.pointAt(topOf);
scene.idle(80);
scene.overlay.showControls(new InputWindowElement(topOf, Pointing.DOWN).rightClick(), 20);
scene.idle(7);
scene.world.removeItemsFromBelt(depotPos);
scene.effects.indicateSuccess(depotPos);
scene.idle(20);
scene.world.showSection(util.select.position(depotPos.up(2)), Direction.SOUTH);
scene.overlay.showText(70)
.attachKeyFrame()
.text("Just like Mechanical Belts, it can provide items to processing")
.placeNearTarget()
.pointAt(util.vector.blockSurface(depotPos.up(2), Direction.WEST));
ItemStack bottle = new ItemStack(Items.BUCKET);
scene.world.createItemOnBeltLike(depotPos, Direction.NORTH, bottle);
scene.idle(20);
scene.world.modifyTileNBT(util.select.position(depotPos.up(2)), SpoutTileEntity.class,
nbt -> nbt.putInt("ProcessingTicks", 20));
scene.idle(20);
scene.world.removeItemsFromBelt(depotPos);
scene.world.createItemOnBeltLike(depotPos, Direction.UP, new ItemStack(Items.WATER_BUCKET));
scene.world.modifyTileNBT(util.select.position(depotPos.up(2)), SpoutTileEntity.class,
nbt -> nbt.putBoolean("Splash", true));
scene.idle(30);
scene.world.removeItemsFromBelt(depotPos);
scene.world.hideSection(util.select.position(depotPos.up(2)), Direction.SOUTH);
scene.idle(20);
ElementLink<WorldSectionElement> spout = scene.world.showIndependentSection(util.select.position(depotPos.up(2)
.west()), Direction.SOUTH);
scene.world.moveSection(spout, util.vector.of(1, 0, 0), 0);
BlockPos pressPos = depotPos.up(2)
.west();
ItemStack copper = AllItems.COPPER_INGOT.asStack();
scene.world.createItemOnBeltLike(depotPos, Direction.NORTH, copper);
Vec3d depotCenter = util.vector.centerOf(depotPos);
scene.idle(10);
Class<MechanicalPressTileEntity> type = MechanicalPressTileEntity.class;
scene.world.modifyTileEntity(pressPos, type, pte -> pte.start(Mode.BELT));
scene.idle(15);
scene.world.modifyTileEntity(pressPos, type,
pte -> pte.makePressingParticleEffect(depotCenter.add(0, 8 / 16f, 0), copper));
scene.world.removeItemsFromBelt(depotPos);
ItemStack sheet = AllItems.COPPER_SHEET.asStack();
scene.world.createItemOnBeltLike(depotPos, Direction.UP, sheet);
scene.idle(20);
scene.world.hideIndependentSection(spout, Direction.SOUTH);
scene.idle(10);
Selection fanSelect = util.select.fromTo(4, 1, 3, 5, 2, 2)
.add(util.select.position(3, 1, 2))
.add(util.select.position(5, 0, 2));
scene.world.showSection(fanSelect, Direction.SOUTH);
ElementLink<WorldSectionElement> water =
scene.world.showIndependentSection(util.select.position(3, 1, 0), Direction.SOUTH);
scene.world.moveSection(water, util.vector.of(0, 1, 2), 0);
scene.idle(30);
scene.world.hideSection(fanSelect, Direction.SOUTH);
scene.world.hideIndependentSection(water, Direction.SOUTH);
scene.idle(30);
scene.world.showSection(util.select.fromTo(2, 1, 4, 2, 1, 5)
.add(util.select.position(2, 0, 5)), Direction.DOWN);
BlockPos armPos = util.grid.at(2, 1, 4);
scene.overlay.showText(70)
.attachKeyFrame()
.text("...as well as provide Items to Mechanical Arms")
.placeNearTarget()
.pointAt(util.vector.blockSurface(armPos, Direction.WEST));
scene.idle(20);
scene.world.instructArm(armPos, Phase.MOVE_TO_INPUT, ItemStack.EMPTY, 0);
scene.idle(37);
scene.world.removeItemsFromBelt(depotPos);
scene.world.instructArm(armPos, Phase.SEARCH_OUTPUTS, sheet, -1);
}
} }

View file

@ -0,0 +1,265 @@
package com.simibubi.create.foundation.ponder.content;
import static com.simibubi.create.content.logistics.block.chute.ChuteBlock.SHAPE;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.content.logistics.block.chute.ChuteBlock;
import com.simibubi.create.content.logistics.block.chute.ChuteBlock.Shape;
import com.simibubi.create.content.logistics.block.chute.SmartChuteTileEntity;
import com.simibubi.create.foundation.ponder.ElementLink;
import com.simibubi.create.foundation.ponder.SceneBuilder;
import com.simibubi.create.foundation.ponder.SceneBuildingUtil;
import com.simibubi.create.foundation.ponder.Selection;
import com.simibubi.create.foundation.ponder.elements.EntityElement;
import com.simibubi.create.foundation.ponder.elements.InputWindowElement;
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
import com.simibubi.create.foundation.utility.Pointing;
import net.minecraft.block.Blocks;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
public class ChuteScenes {
public static void downward(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("chute", "Transporting Items downward via Chutes");
scene.configureBasePlate(0, 0, 5);
scene.scaleSceneView(.9f);
scene.world.showSection(util.select.layer(0), Direction.UP);
ElementLink<WorldSectionElement> top =
scene.world.showIndependentSection(util.select.fromTo(3, 3, 3, 3, 4, 3), Direction.DOWN);
ElementLink<WorldSectionElement> bottom =
scene.world.showIndependentSection(util.select.fromTo(3, 2, 3, 3, 1, 3), Direction.DOWN);
scene.world.moveSection(bottom, util.vector.of(-2, 0, -1), 0);
scene.world.moveSection(top, util.vector.of(0, 0, -1), 0);
scene.idle(20);
ItemStack stack = AllBlocks.COPPER_BLOCK.asStack();
scene.world.createItemEntity(util.vector.centerOf(util.grid.at(3, 3, 2)), util.vector.of(0, -0.1, 0), stack);
scene.idle(20);
ElementLink<EntityElement> remove =
scene.world.createItemEntity(util.vector.centerOf(util.grid.at(1, 5, 2)), util.vector.of(0, 0.1, 0), stack);
scene.idle(15);
scene.world.modifyEntity(remove, Entity::remove);
scene.overlay.showText(60)
.attachKeyFrame()
.pointAt(util.vector.topOf(util.grid.at(1, 2, 2)))
.placeNearTarget()
.text("Chutes can transport items vertically from and to inventories");
scene.idle(70);
scene.world.modifyEntities(ItemEntity.class, Entity::remove);
scene.world.moveSection(bottom, util.vector.of(1, 0, 0), 10);
scene.world.moveSection(top, util.vector.of(-1, 0, 0), 10);
scene.idle(20);
scene.overlay.showControls(
new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 3, 2), Direction.NORTH), Pointing.RIGHT)
.rightClick()
.withWrench(),
40);
scene.idle(7);
scene.world.modifyBlock(util.grid.at(3, 3, 3), s -> s.with(ChuteBlock.SHAPE, ChuteBlock.Shape.WINDOW), false);
scene.overlay.showText(50)
.attachKeyFrame()
.pointAt(util.vector.blockSurface(util.grid.at(2, 3, 2), Direction.WEST))
.placeNearTarget()
.text("Using the Wrench, a window can be created");
scene.idle(10);
scene.world.modifyBlock(util.grid.at(3, 2, 3), s -> s.with(SHAPE, Shape.WINDOW), false);
for (int i = 0; i < 8; i++) {
scene.idle(10);
scene.world.createItemOnBeltLike(util.grid.at(3, 3, 3), Direction.UP, stack);
}
scene.idle(20);
scene.world.hideIndependentSection(bottom, Direction.EAST);
scene.world.hideIndependentSection(top, Direction.EAST);
scene.idle(15);
scene.rotateCameraY(-90);
scene.world.modifyBlock(util.grid.at(2, 2, 1), s -> s.with(SHAPE, Shape.NORMAL), false);
scene.world.showSection(util.select.fromTo(2, 1, 1, 2, 2, 1), Direction.DOWN);
scene.idle(30);
ItemStack chuteItem = AllBlocks.CHUTE.asStack();
scene.overlay.showControls(
new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 2, 1), Direction.SOUTH), Pointing.LEFT)
.rightClick()
.withItem(chuteItem),
30);
scene.idle(7);
scene.world.showSection(util.select.position(2, 3, 2), Direction.NORTH);
scene.world.restoreBlocks(util.select.position(2, 2, 1));
scene.idle(35);
scene.overlay.showControls(
new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 3, 2), Direction.SOUTH), Pointing.LEFT)
.rightClick()
.withItem(chuteItem),
30);
scene.idle(7);
scene.world.showSection(util.select.position(2, 4, 3), Direction.NORTH);
scene.idle(35);
scene.overlay.showText(70)
.attachKeyFrame()
.pointAt(util.vector.blockSurface(util.grid.at(2, 4, 3), Direction.WEST))
.placeNearTarget()
.text("Placing chutes targeting the side faces of another will make it diagonal");
scene.idle(15);
scene.rotateCameraY(90);
scene.idle(35);
Direction offset = Direction.NORTH;
for (int i = 0; i < 3; i++) {
remove = scene.world.createItemEntity(util.vector.centerOf(util.grid.at(2, 6, 3)
.offset(offset)), util.vector.of(0, 0.1, 0)
.add(new Vec3d(offset.getDirectionVec()).scale(-.1)),
stack);
scene.idle(12);
scene.world.createItemOnBeltLike(util.grid.at(2, 4, 3), Direction.UP, stack);
scene.world.modifyEntity(remove, Entity::remove);
scene.idle(3);
offset = offset.rotateY();
}
scene.idle(10);
scene.overlay.showControls(
new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 1, 1), Direction.NORTH), Pointing.RIGHT)
.withItem(stack),
50);
}
public static void upward(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("chute_upward", "Transporting Items upward via Chutes");
scene.configureBasePlate(0, 0, 5);
scene.scaleSceneView(.9f);
scene.showBasePlate();
Selection chute = util.select.fromTo(1, 2, 2, 1, 4, 2);
scene.world.setBlocks(chute, Blocks.AIR.getDefaultState(), false);
scene.world.showSection(util.select.position(1, 1, 2), Direction.UP);
scene.idle(20);
scene.world.restoreBlocks(chute);
scene.world.showSection(chute, Direction.DOWN);
scene.idle(20);
scene.world.setKineticSpeed(util.select.position(1, 1, 2), 0);
Vec3d surface = util.vector.blockSurface(util.grid.at(1, 2, 2), Direction.WEST);
scene.overlay.showText(70)
.text("Using Encased Fans at the top or bottom, a Chute can move items upward")
.attachKeyFrame()
.pointAt(surface)
.placeNearTarget();
scene.idle(80);
scene.overlay.showControls(
new InputWindowElement(util.vector.blockSurface(util.grid.at(1, 2, 2), Direction.NORTH), Pointing.RIGHT)
.withItem(AllItems.GOGGLES.asStack()),
50);
scene.overlay.showText(70)
.text("Inspecting chutes with Engineers' Goggles reveals information about the movement direction")
.attachKeyFrame()
.pointAt(surface)
.placeNearTarget();
scene.idle(80);
scene.world.showSection(util.select.fromTo(2, 2, 2, 4, 1, 5)
.add(util.select.position(3, 0, 5)), Direction.DOWN);
ItemStack stack = AllBlocks.COPPER_BLOCK.asStack();
scene.world.createItemOnBelt(util.grid.at(4, 1, 2), Direction.EAST, stack);
scene.idle(10);
scene.rotateCameraY(60);
scene.overlay.showText(70)
.text("On the 'blocked' end, items will have to be inserted/taken from the sides")
.attachKeyFrame()
.pointAt(util.vector.centerOf(util.grid.at(3, 1, 2))
.add(0, 3 / 16f, 0))
.placeNearTarget();
scene.idle(32);
scene.world.flapFunnel(util.grid.at(2, 2, 2), false);
scene.world.removeItemsFromBelt(util.grid.at(2, 1, 2));
scene.world.createItemOnBeltLike(util.grid.at(1, 2, 2), Direction.EAST, stack);
}
public static void smart(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("smart_chute", "Filtering Items using Smart Chutes");
scene.configureBasePlate(0, 0, 5);
scene.scaleSceneView(.9f);
Selection lever = util.select.fromTo(0, 1, 2, 1, 3, 2);
BlockPos smarty = util.grid.at(2, 3, 2);
scene.world.showSection(util.select.layer(0), Direction.UP);
scene.idle(5);
scene.world.showSection(util.select.fromTo(2, 1, 2, 2, 2, 2), Direction.DOWN);
scene.idle(10);
scene.world.showSection(util.select.position(2, 3, 2), Direction.DOWN);
scene.idle(5);
scene.world.showSection(util.select.position(2, 4, 2), Direction.DOWN);
scene.overlay.showText(60)
.text("Smart Chutes are vertical chutes with additional control")
.attachKeyFrame()
.pointAt(util.vector.blockSurface(smarty, Direction.WEST))
.placeNearTarget();
scene.idle(70);
Vec3d filter = util.vector.blockSurface(smarty, Direction.NORTH)
.add(0, 0.25, 0);
scene.overlay.showFilterSlotInput(filter, 60);
ItemStack copper = new ItemStack(Items.IRON_INGOT);
scene.overlay.showControls(new InputWindowElement(filter, Pointing.DOWN).rightClick()
.withItem(copper), 40);
scene.idle(7);
scene.world.setFilterData(util.select.position(smarty), SmartChuteTileEntity.class, copper);
scene.idle(10);
scene.rotateCameraY(20);
scene.overlay.showText(60)
.text("Items in the filter slot specify what exactly they can extract and transfer")
.attachKeyFrame()
.pointAt(filter)
.placeNearTarget();
scene.idle(10);
for (int i = 0; i < 18; i++) {
scene.idle(10);
scene.world.createItemOnBeltLike(util.grid.at(2, 2, 2), Direction.UP, copper);
if (i == 8) {
scene.rotateCameraY(-20);
scene.overlay.showControls(new InputWindowElement(filter, Pointing.DOWN).scroll(), 40);
scene.overlay.showText(50)
.text("Use the Mouse Wheel to specify the extracted stack size")
.attachKeyFrame()
.pointAt(filter)
.placeNearTarget();
}
if (i == 13)
scene.world.showSection(lever, Direction.NORTH);
}
scene.world.toggleRedstonePower(lever.add(util.select.position(smarty)));
scene.effects.indicateRedstone(util.grid.at(0, 3, 2));
scene.overlay.showText(50)
.text("Redstone power will prevent Smart Chutes from acting.")
.attachKeyFrame()
.colored(PonderPalette.RED)
.pointAt(util.vector.blockSurface(util.grid.at(0, 2, 2), Direction.UP))
.placeNearTarget();
scene.idle(70);
scene.world.toggleRedstonePower(lever.add(util.select.position(smarty)));
scene.markAsFinished();
for (int i = 0; i < 8; i++) {
scene.idle(10);
scene.world.createItemOnBeltLike(util.grid.at(2, 2, 2), Direction.UP, copper);
}
}
}

View file

@ -332,7 +332,7 @@ public class FunnelScenes {
scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, funnel, redstoneBB, 80); scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, funnel, redstoneBB, 80);
scene.overlay.showText(80) scene.overlay.showText(80)
.colored(PonderPalette.RED) .colored(PonderPalette.RED)
.text("Redstone power will prevent any funnel from acting.") .text("Redstone power will prevent any funnel from acting")
.pointAt(util.vector.blockSurface(funnel, Direction.DOWN)); .pointAt(util.vector.blockSurface(funnel, Direction.DOWN));
} else { } else {
scene.idle(4); scene.idle(4);

View file

@ -95,6 +95,14 @@ public class PonderIndex {
PonderRegistry.addStoryBoard(AllItems.EMPTY_BLAZE_BURNER, "empty_blaze_burner", PonderRegistry.addStoryBoard(AllItems.EMPTY_BLAZE_BURNER, "empty_blaze_burner",
ProcessingScenes::emptyBlazeBurner); ProcessingScenes::emptyBlazeBurner);
PonderRegistry.addStoryBoard(AllBlocks.BLAZE_BURNER, "blaze_burner", ProcessingScenes::blazeBurner); PonderRegistry.addStoryBoard(AllBlocks.BLAZE_BURNER, "blaze_burner", ProcessingScenes::blazeBurner);
PonderRegistry.addStoryBoard(AllBlocks.DEPOT, "depot", BeltScenes::depot);
// Chutes
PonderRegistry.forComponents(AllBlocks.CHUTE)
.addStoryBoard("chute/downward", ChuteScenes::downward, PonderTag.LOGISTICS)
.addStoryBoard("chute/upward", ChuteScenes::upward);
PonderRegistry.forComponents(AllBlocks.CHUTE, AllBlocks.SMART_CHUTE)
.addStoryBoard("chute/smart", ChuteScenes::smart);
// Funnels // Funnels
PonderRegistry.addStoryBoard(AllBlocks.BRASS_FUNNEL, "funnels/brass", FunnelScenes::brass); PonderRegistry.addStoryBoard(AllBlocks.BRASS_FUNNEL, "funnels/brass", FunnelScenes::brass);
@ -287,10 +295,10 @@ public class PonderIndex {
.add(AllBlocks.MILLSTONE) .add(AllBlocks.MILLSTONE)
.add(AllBlocks.DEPLOYER) .add(AllBlocks.DEPLOYER)
.add(AllBlocks.MECHANICAL_SAW) .add(AllBlocks.MECHANICAL_SAW)
.add(Blocks.COMPOSTER)
.add(AllBlocks.BLAZE_BURNER) .add(AllBlocks.BLAZE_BURNER)
.add(Blocks.JUKEBOX) .add(AllBlocks.CRUSHING_WHEEL)
.add(AllBlocks.CRUSHING_WHEEL); .add(Blocks.COMPOSTER)
.add(Blocks.JUKEBOX);
PonderRegistry.tags.forTag(PonderTag.LOGISTICS) PonderRegistry.tags.forTag(PonderTag.LOGISTICS)
.add(AllItems.BELT_CONNECTOR) .add(AllItems.BELT_CONNECTOR)

View file

@ -7,6 +7,7 @@ import java.util.Objects;
import org.apache.commons.lang3.mutable.MutableBoolean; import org.apache.commons.lang3.mutable.MutableBoolean;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.gui.ScreenOpener;
import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.UIRenderHelper;
import com.simibubi.create.foundation.ponder.NavigatableSimiScreen; import com.simibubi.create.foundation.ponder.NavigatableSimiScreen;
@ -25,6 +26,7 @@ import net.minecraft.client.gui.widget.Widget;
import net.minecraft.client.renderer.Rectangle2d; import net.minecraft.client.renderer.Rectangle2d;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
@ -87,7 +89,12 @@ public class PonderTagScreen extends NavigatableSimiScreen {
ScreenOpener.transitionTo(PonderUI.of(new ItemStack(i), tag)); ScreenOpener.transitionTo(PonderUI.of(new ItemStack(i), tag));
}).showing(new ItemStack(i)); }).showing(new ItemStack(i));
if (!canClick) if (!canClick)
button.noClickEvent(); if (i.getRegistryName()
.getNamespace()
.equals(Create.ID))
button.customColors(0x70984500, 0x70692400);
else
button.customColors(0x505000FF, 0x50300077);
button.fade(1); button.fade(1);
widgets.add(button); widgets.add(button);
@ -96,9 +103,10 @@ public class PonderTagScreen extends NavigatableSimiScreen {
if (!tag.getMainItem() if (!tag.getMainItem()
.isEmpty()) { .isEmpty()) {
final boolean canClick = PonderRegistry.all.containsKey(tag.getMainItem() ResourceLocation registryName = tag.getMainItem()
.getItem() .getItem()
.getRegistryName()); .getRegistryName();
final boolean canClick = PonderRegistry.all.containsKey(registryName);
PonderButton button = PonderButton button =
new PonderButton(itemCenterX - layout.getTotalWidth() / 2 - 42, itemCenterY - 10, (mouseX, mouseY) -> { new PonderButton(itemCenterX - layout.getTotalWidth() / 2 - 42, itemCenterY - 10, (mouseX, mouseY) -> {
if (!canClick) if (!canClick)
@ -107,7 +115,11 @@ public class PonderTagScreen extends NavigatableSimiScreen {
ScreenOpener.transitionTo(PonderUI.of(tag.getMainItem(), tag)); ScreenOpener.transitionTo(PonderUI.of(tag.getMainItem(), tag));
}).showing(tag.getMainItem()); }).showing(tag.getMainItem());
if (!canClick) if (!canClick)
button.noClickEvent(); if (registryName.getNamespace()
.equals(Create.ID))
button.customColors(0x70984500, 0x70692400);
else
button.customColors(0x505000FF, 0x50300077);
button.fade(1); button.fade(1);
widgets.add(button); widgets.add(button);
@ -202,7 +214,7 @@ public class PonderTagScreen extends NavigatableSimiScreen {
RenderSystem.translated(0, 0, 100); RenderSystem.translated(0, 0, 100);
FontHelper.drawSplitString(font, desc, x, y, w, 0xeeeeee); FontHelper.drawSplitString(font, desc, x, y, w, 0xeeeeee);
RenderSystem.popMatrix(); RenderSystem.popMatrix();
} }
protected void renderItems(int mouseX, int mouseY, float partialTicks) { protected void renderItems(int mouseX, int mouseY, float partialTicks) {
@ -301,7 +313,7 @@ public class PonderTagScreen extends NavigatableSimiScreen {
return tag == ((PonderTagScreen) other).tag; return tag == ((PonderTagScreen) other).tag;
return super.isEquivalentTo(other); return super.isEquivalentTo(other);
} }
@Override @Override
public boolean isPauseScreen() { public boolean isPauseScreen() {
return true; return true;

View file

@ -618,14 +618,14 @@ public class ProcessingScenes {
scene.idle(7); scene.idle(7);
scene.world.setBlock(util.grid.at(3, 1, 2), AllBlocks.LIT_BLAZE_BURNER.getDefaultState(), true); scene.world.setBlock(util.grid.at(3, 1, 2), AllBlocks.LIT_BLAZE_BURNER.getDefaultState(), true);
scene.idle(10); scene.idle(10);
scene.overlay.showText(90) scene.overlay.showText(70)
.text("For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel") .text("For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel")
.attachKeyFrame() .attachKeyFrame()
.pointAt(util.vector.blockSurface(center.east() .pointAt(util.vector.blockSurface(center.east()
.up(), Direction.UP)) .up(), Direction.UP))
.placeNearTarget(); .placeNearTarget();
scene.idle(70); scene.idle(80);
scene.overlay.showText(90) scene.overlay.showText(60)
.colored(PonderPalette.RED) .colored(PonderPalette.RED)
.text("However, these are not suitable for industrial heating") .text("However, these are not suitable for industrial heating")
.pointAt(util.vector.blockSurface(center.east() .pointAt(util.vector.blockSurface(center.east()

View file

@ -35,9 +35,9 @@ public class TileEntityDataInstruction extends WorldModifyInstruction {
if (!type.isInstance(tileEntity)) if (!type.isInstance(tileEntity))
return; return;
CompoundNBT apply = data.apply(tileEntity.write(new CompoundNBT())); CompoundNBT apply = data.apply(tileEntity.write(new CompoundNBT()));
tileEntity.read(apply);
if (tileEntity instanceof SyncedTileEntity) if (tileEntity instanceof SyncedTileEntity)
((SyncedTileEntity) tileEntity).readClientUpdate(apply); ((SyncedTileEntity) tileEntity).readClientUpdate(apply);
tileEntity.read(apply);
}); });
} }

View file

@ -8,6 +8,7 @@ import com.simibubi.create.foundation.gui.IScreenRenderable;
import com.simibubi.create.foundation.gui.widgets.AbstractSimiWidget; import com.simibubi.create.foundation.gui.widgets.AbstractSimiWidget;
import com.simibubi.create.foundation.ponder.PonderUI; import com.simibubi.create.foundation.ponder.PonderUI;
import com.simibubi.create.foundation.utility.ColorHelper; import com.simibubi.create.foundation.utility.ColorHelper;
import com.simibubi.create.foundation.utility.Couple;
import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -25,7 +26,7 @@ public class PonderButton extends AbstractSimiWidget {
private float fade; private float fade;
private KeyBinding shortcut; private KeyBinding shortcut;
private LerpedFloat flash; private LerpedFloat flash;
private boolean noClickEvent; private Couple<Integer> customPassiveBorder;
public static final int SIZE = 20; public static final int SIZE = 20;
@ -54,8 +55,8 @@ public class PonderButton extends AbstractSimiWidget {
return this; return this;
} }
public PonderButton noClickEvent() { public PonderButton customColors(int start, int end) {
this.noClickEvent = true; this.customPassiveBorder = Couple.create(start, end);
return this; return this;
} }
@ -103,10 +104,10 @@ public class PonderButton extends AbstractSimiWidget {
fade *= 3 * flashValue + Math.sin((PonderUI.ponderTicks + partialTicks) / 6); fade *= 3 * flashValue + Math.sin((PonderUI.ponderTicks + partialTicks) / 6);
int backgroundColor = ColorHelper.applyAlpha(0xdd000000, fade); int backgroundColor = ColorHelper.applyAlpha(0xdd000000, fade);
int borderColorStart = int borderColorStart = customPassiveBorder != null ? customPassiveBorder.getFirst() : isHovered ? 0x70ffffff : 0x40aa9999;
ColorHelper.applyAlpha(noClickEvent ? 0x70984500 : isHovered ? 0x70ffffff : 0x40aa9999, fade); int borderColorEnd = customPassiveBorder != null ? customPassiveBorder.getSecond() : isHovered ? 0x30ffffff : 0x20aa9999;
int borderColorEnd = borderColorStart = ColorHelper.applyAlpha(borderColorStart, fade);
ColorHelper.applyAlpha(noClickEvent ? 0x70692400 : isHovered ? 0x30ffffff : 0x20aa9999, fade); borderColorEnd = ColorHelper.applyAlpha(borderColorEnd, fade);
PonderUI.renderBox(x, y, width, height, backgroundColor, borderColorStart, borderColorEnd); PonderUI.renderBox(x, y, width, height, backgroundColor, borderColorStart, borderColorEnd);
RenderSystem.translated(0, 0, 800); RenderSystem.translated(0, 0, 800);

View file

@ -47,7 +47,7 @@ public class DirectBeltInputBehaviour extends TileEntityBehaviour {
supportsBeltFunnels = pred; supportsBeltFunnels = pred;
return this; return this;
} }
public DirectBeltInputBehaviour allowingBeltFunnels() { public DirectBeltInputBehaviour allowingBeltFunnels() {
supportsBeltFunnels = () -> true; supportsBeltFunnels = () -> true;
return this; return this;
@ -97,20 +97,21 @@ public class DirectBeltInputBehaviour extends TileEntityBehaviour {
public boolean test(Direction side); public boolean test(Direction side);
} }
@Nullable
public ItemStack tryExportingToBeltFunnel(ItemStack stack, @Nullable Direction side) { public ItemStack tryExportingToBeltFunnel(ItemStack stack, @Nullable Direction side) {
BlockPos funnelPos = tileEntity.getPos() BlockPos funnelPos = tileEntity.getPos()
.up(); .up();
World world = getWorld(); World world = getWorld();
BlockState funnelState = world.getBlockState(funnelPos); BlockState funnelState = world.getBlockState(funnelPos);
if (!(funnelState.getBlock() instanceof BeltFunnelBlock)) if (!(funnelState.getBlock() instanceof BeltFunnelBlock))
return stack; return null;
if (funnelState.get(BeltFunnelBlock.SHAPE) != Shape.PULLING) if (funnelState.get(BeltFunnelBlock.SHAPE) != Shape.PULLING)
return stack; return null;
if (side != null && FunnelBlock.getFunnelFacing(funnelState) != side) if (side != null && FunnelBlock.getFunnelFacing(funnelState) != side)
return stack; return null;
TileEntity te = world.getTileEntity(funnelPos); TileEntity te = world.getTileEntity(funnelPos);
if (!(te instanceof FunnelTileEntity)) if (!(te instanceof FunnelTileEntity))
return stack; return null;
ItemStack insert = FunnelBlock.tryInsert(world, funnelPos, stack, false); ItemStack insert = FunnelBlock.tryInsert(world, funnelPos, stack, false);
if (insert.getCount() != stack.getCount()) if (insert.getCount() != stack.getCount())
((FunnelTileEntity) te).flap(true); ((FunnelTileEntity) te).flap(true);

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.