Display Link, Train Controls re-polish

- Integrated new assets by Kryppers
- Data Gatherer -> Display Link
This commit is contained in:
simibubi 2022-05-15 23:40:33 +02:00
parent 32da097c26
commit ae2e144457
95 changed files with 1892 additions and 1831 deletions

View file

@ -188,13 +188,13 @@ b496452f2f7dbbba385e1fc10b560ec266e4b5e7 assets/create/blockstates/cyan_sail.jso
2c04d57e56849f243aec8a1e769574d24daac1e9 assets/create/blockstates/cyan_valve_handle.json 2c04d57e56849f243aec8a1e769574d24daac1e9 assets/create/blockstates/cyan_valve_handle.json
1726b1b9e04a0634e7e1fdcf1cf4cc898efc5c2f assets/create/blockstates/dark_oak_window.json 1726b1b9e04a0634e7e1fdcf1cf4cc898efc5c2f assets/create/blockstates/dark_oak_window.json
50d4627d8e8b5adade12de764ab528ddacfa9ea5 assets/create/blockstates/dark_oak_window_pane.json 50d4627d8e8b5adade12de764ab528ddacfa9ea5 assets/create/blockstates/dark_oak_window_pane.json
990cdcce80e6e4ea3055c2572c5fafe3ee795b0f assets/create/blockstates/data_gatherer.json
de0116bf32a26d697a3b999044d6fb0b1b98320e assets/create/blockstates/deepslate_pillar.json de0116bf32a26d697a3b999044d6fb0b1b98320e assets/create/blockstates/deepslate_pillar.json
c3317a94c509d4bb2fe9c6f64a072334421998d3 assets/create/blockstates/deepslate_zinc_ore.json c3317a94c509d4bb2fe9c6f64a072334421998d3 assets/create/blockstates/deepslate_zinc_ore.json
ac85f55d82d96fc15750e6b954297cfd1e00d04d assets/create/blockstates/deployer.json ac85f55d82d96fc15750e6b954297cfd1e00d04d assets/create/blockstates/deployer.json
3660f44309279a0347347f23ce7444c6ed98cafd assets/create/blockstates/depot.json 3660f44309279a0347347f23ce7444c6ed98cafd assets/create/blockstates/depot.json
0270b68550e19720d0cdc9e44f63618908628192 assets/create/blockstates/diorite_pillar.json 0270b68550e19720d0cdc9e44f63618908628192 assets/create/blockstates/diorite_pillar.json
62cc543abb242836570d07d619fcdb4c79c75db4 assets/create/blockstates/display_board.json 62cc543abb242836570d07d619fcdb4c79c75db4 assets/create/blockstates/display_board.json
6766818ea63026a3af2fb9d81110d3887c74b0f8 assets/create/blockstates/display_link.json
30b3422bfee9878c92521429b2536d3e0313cedb assets/create/blockstates/dripstone_pillar.json 30b3422bfee9878c92521429b2536d3e0313cedb assets/create/blockstates/dripstone_pillar.json
35fc68eb1d031d28ad09b7b603e64ae459634179 assets/create/blockstates/encased_chain_drive.json 35fc68eb1d031d28ad09b7b603e64ae459634179 assets/create/blockstates/encased_chain_drive.json
7b2b836649e729feafa60972bf95e3afb2143131 assets/create/blockstates/encased_fan.json 7b2b836649e729feafa60972bf95e3afb2143131 assets/create/blockstates/encased_fan.json
@ -543,23 +543,23 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo
6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json 6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json
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
875f9aff979888b9d63d6a425cbf544431f1af5a assets/create/lang/en_ud.json df56b5a55feb05caf63e59d7473c814cc212c593 assets/create/lang/en_ud.json
0a0155981901a175ef3d80376bd12bf6ed87fc40 assets/create/lang/en_us.json 16081fd6f3e8241aa3c4f3bd6d867d8555478787 assets/create/lang/en_us.json
2441d72bd7c3f9bd175a3b7ad6dfd08650244333 assets/create/lang/unfinished/de_de.json e61667043280cfb4414f063dd70761ea801e3129 assets/create/lang/unfinished/de_de.json
c78d38ed11410f3749b0531faddb47bc864c602e assets/create/lang/unfinished/es_cl.json 5ff1e28fe23bf3dacce2210cb3ca67a6a4f38b31 assets/create/lang/unfinished/es_cl.json
3f324c1793d15fc4efee2496ded04ef40a149eef assets/create/lang/unfinished/es_es.json 803bb955aba9425dcf77d5137fe58318524aeb42 assets/create/lang/unfinished/es_es.json
a75c200cad527244a00e9c8d8044b99ebcb4f434 assets/create/lang/unfinished/fr_fr.json 3134fecc8a92c44a0643fb89110987c4a57868a1 assets/create/lang/unfinished/fr_fr.json
f8498450f21370fc25144fb02d7f3de644302eae assets/create/lang/unfinished/it_it.json 7078cfddbdf73f65c89f8634e7d5979842ca34bb assets/create/lang/unfinished/it_it.json
fb99ffda9c4f753478d69d4a7e672d2934e4eefe assets/create/lang/unfinished/ja_jp.json 4bb376849f661b658fd941a2407b0f78158cc0d4 assets/create/lang/unfinished/ja_jp.json
c5b3a59940d9d1f31bd333acb05e77a07833f8f7 assets/create/lang/unfinished/ko_kr.json 03db667e726d137a5daaa320b7d5801640173951 assets/create/lang/unfinished/ko_kr.json
1a8e15b473cc565d4a0ce6a077ebb21b04436caa assets/create/lang/unfinished/nl_nl.json 0d5a2352092fa0218ffd3e35500ae47dec2306bc assets/create/lang/unfinished/nl_nl.json
a4c4763232172a82d131bdcf9418e8944faa4767 assets/create/lang/unfinished/pl_pl.json 67e8e20aaa1cad67581c9b7f6cd1b505c589e08a assets/create/lang/unfinished/pl_pl.json
4293a80519e12fe25df446daf66a2c93abde0c29 assets/create/lang/unfinished/pt_br.json 7be5d96ae1d40b99f98594cd2140a111462514f9 assets/create/lang/unfinished/pt_br.json
40b6e4ba6fbdc90902288bbf0be9fd65a08d0bce assets/create/lang/unfinished/pt_pt.json 428afed80b16e6def974b4d31d6609a14477cdcf assets/create/lang/unfinished/pt_pt.json
e4a748bfbb60cb7b597921115ce69b45bbfb3d79 assets/create/lang/unfinished/ro_ro.json 39219ca58890611aef68ee5d713614c4a8eaaf8e assets/create/lang/unfinished/ro_ro.json
5539e89820b997b42e5605202e5c8ba508e80b77 assets/create/lang/unfinished/ru_ru.json 5de2edb9239c491fdcfe51ee45c8206f16b3d4d3 assets/create/lang/unfinished/ru_ru.json
b3f274b8dc40d041733ba10cab527c5130f68bcf assets/create/lang/unfinished/zh_cn.json 5db28a284f52b3b6d7f33bbba8542e3aeb49e0c3 assets/create/lang/unfinished/zh_cn.json
5309ae6bd90efd2cf5e8adb730c2d2f4818edf7d assets/create/lang/unfinished/zh_tw.json 9c1d56dec09913608536eecbfecc0276bedf658c assets/create/lang/unfinished/zh_tw.json
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json 487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json 3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json
@ -1793,13 +1793,13 @@ b1eace1d7fe80e2b8dc0d844621f0d485f34cbf8 assets/create/models/item/cut_veridium_
523cd531eadaadc45fb356ca58b99a8fe206c3a7 assets/create/models/item/cyan_valve_handle.json 523cd531eadaadc45fb356ca58b99a8fe206c3a7 assets/create/models/item/cyan_valve_handle.json
f786a43e296d9f10d7c302fe3ae9cddf4ba9984e assets/create/models/item/dark_oak_window.json f786a43e296d9f10d7c302fe3ae9cddf4ba9984e assets/create/models/item/dark_oak_window.json
515d55b1ce18543fdb44b194901040fd29e75818 assets/create/models/item/dark_oak_window_pane.json 515d55b1ce18543fdb44b194901040fd29e75818 assets/create/models/item/dark_oak_window_pane.json
2faefc40f532f8480916f6d6a9c4a15e40deecef assets/create/models/item/data_gatherer.json
422c5ab12029ffdf37b315a158168d71725bd334 assets/create/models/item/deepslate_pillar.json 422c5ab12029ffdf37b315a158168d71725bd334 assets/create/models/item/deepslate_pillar.json
0f220a538e6a083debf68b4f1135d5f3ae4a3918 assets/create/models/item/deepslate_zinc_ore.json 0f220a538e6a083debf68b4f1135d5f3ae4a3918 assets/create/models/item/deepslate_zinc_ore.json
2104c1276259ab67b94f3d4fe97e14b6bc6941ac assets/create/models/item/deployer.json 2104c1276259ab67b94f3d4fe97e14b6bc6941ac assets/create/models/item/deployer.json
84d87f715efab45dc7bcb2e3c0870ed56fa20ee9 assets/create/models/item/depot.json 84d87f715efab45dc7bcb2e3c0870ed56fa20ee9 assets/create/models/item/depot.json
e0ecc0a20cf9dd54ccfc48e0041d5220b2c8316e assets/create/models/item/diorite_pillar.json e0ecc0a20cf9dd54ccfc48e0041d5220b2c8316e assets/create/models/item/diorite_pillar.json
0ff9267a39783dce5e0aa59e78088c64337ad6ee assets/create/models/item/display_board.json 0ff9267a39783dce5e0aa59e78088c64337ad6ee assets/create/models/item/display_board.json
c89ab6316518a19974cbed73edb54aaaafd073f5 assets/create/models/item/display_link.json
6006f88e56d74a3fd75a9dddb25af39075e0482b assets/create/models/item/diving_boots.json 6006f88e56d74a3fd75a9dddb25af39075e0482b assets/create/models/item/diving_boots.json
df8cfe7e8eb527329094396e11222e9097e309d7 assets/create/models/item/diving_helmet.json df8cfe7e8eb527329094396e11222e9097e309d7 assets/create/models/item/diving_helmet.json
4b2af721dccfcf4e5b5a7b0f64f295d7cfd27f69 assets/create/models/item/dough.json 4b2af721dccfcf4e5b5a7b0f64f295d7cfd27f69 assets/create/models/item/dough.json
@ -3489,13 +3489,13 @@ db7ea40bfd36b5fa864453716256aba748435e36 data/create/loot_tables/blocks/cyan_sea
8854c95ee0d78abfb0393f7b4185618dc9aecba3 data/create/loot_tables/blocks/cyan_valve_handle.json 8854c95ee0d78abfb0393f7b4185618dc9aecba3 data/create/loot_tables/blocks/cyan_valve_handle.json
0d17705688109e9cf81c99ef559b1183b0e6053c data/create/loot_tables/blocks/dark_oak_window.json 0d17705688109e9cf81c99ef559b1183b0e6053c data/create/loot_tables/blocks/dark_oak_window.json
636acaf2ebbbd790f8efe45a98cd036ffe848407 data/create/loot_tables/blocks/dark_oak_window_pane.json 636acaf2ebbbd790f8efe45a98cd036ffe848407 data/create/loot_tables/blocks/dark_oak_window_pane.json
c9dad60d36dde6522729fe433cb5022a00c12ce1 data/create/loot_tables/blocks/data_gatherer.json
18f29fec67600edc66b25217017b5b618efb1f4b data/create/loot_tables/blocks/deepslate_pillar.json 18f29fec67600edc66b25217017b5b618efb1f4b data/create/loot_tables/blocks/deepslate_pillar.json
841d6010e87a4bf4e35e8ccc411e5d7f513b484a data/create/loot_tables/blocks/deepslate_zinc_ore.json 841d6010e87a4bf4e35e8ccc411e5d7f513b484a data/create/loot_tables/blocks/deepslate_zinc_ore.json
12a02b7737557a81281369826907b7e75076b8a0 data/create/loot_tables/blocks/deployer.json 12a02b7737557a81281369826907b7e75076b8a0 data/create/loot_tables/blocks/deployer.json
b6118279802f1a27e6e0c3d0feca86f0792f85df data/create/loot_tables/blocks/depot.json b6118279802f1a27e6e0c3d0feca86f0792f85df data/create/loot_tables/blocks/depot.json
48eba3e521b190fedfb6e7580bdb10bcb3f290bd data/create/loot_tables/blocks/diorite_pillar.json 48eba3e521b190fedfb6e7580bdb10bcb3f290bd data/create/loot_tables/blocks/diorite_pillar.json
2a8d81a07e9d209349264787eee93a0b973d2510 data/create/loot_tables/blocks/display_board.json 2a8d81a07e9d209349264787eee93a0b973d2510 data/create/loot_tables/blocks/display_board.json
fd63effdc29cf565f561f8901a93c8ee3124bcaa data/create/loot_tables/blocks/display_link.json
7ab5f0aa32d6641999943636766c806a1d59e1d2 data/create/loot_tables/blocks/dripstone_pillar.json 7ab5f0aa32d6641999943636766c806a1d59e1d2 data/create/loot_tables/blocks/dripstone_pillar.json
2186860c4a0cb47a66bdfdefcde302c599cddeea data/create/loot_tables/blocks/encased_chain_drive.json 2186860c4a0cb47a66bdfdefcde302c599cddeea data/create/loot_tables/blocks/encased_chain_drive.json
7fcc15674a7583b965441fb079b8997e4244a4ff data/create/loot_tables/blocks/encased_fan.json 7fcc15674a7583b965441fb079b8997e4244a4ff data/create/loot_tables/blocks/encased_fan.json

View file

@ -1,54 +1,54 @@
{ {
"variants": { "variants": {
"facing=down,powered=false": { "facing=down,powered=false": {
"model": "create:block/data_gatherer/block", "model": "create:block/display_link/block",
"x": 180 "x": 180
}, },
"facing=up,powered=false": { "facing=up,powered=false": {
"model": "create:block/data_gatherer/block" "model": "create:block/display_link/block"
}, },
"facing=north,powered=false": { "facing=north,powered=false": {
"model": "create:block/data_gatherer/block", "model": "create:block/display_link/block",
"x": 90 "x": 90
}, },
"facing=south,powered=false": { "facing=south,powered=false": {
"model": "create:block/data_gatherer/block", "model": "create:block/display_link/block",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west,powered=false": { "facing=west,powered=false": {
"model": "create:block/data_gatherer/block", "model": "create:block/display_link/block",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east,powered=false": { "facing=east,powered=false": {
"model": "create:block/data_gatherer/block", "model": "create:block/display_link/block",
"x": 90, "x": 90,
"y": 90 "y": 90
}, },
"facing=down,powered=true": { "facing=down,powered=true": {
"model": "create:block/data_gatherer/block_powered", "model": "create:block/display_link/block_powered",
"x": 180 "x": 180
}, },
"facing=up,powered=true": { "facing=up,powered=true": {
"model": "create:block/data_gatherer/block_powered" "model": "create:block/display_link/block_powered"
}, },
"facing=north,powered=true": { "facing=north,powered=true": {
"model": "create:block/data_gatherer/block_powered", "model": "create:block/display_link/block_powered",
"x": 90 "x": 90
}, },
"facing=south,powered=true": { "facing=south,powered=true": {
"model": "create:block/data_gatherer/block_powered", "model": "create:block/display_link/block_powered",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west,powered=true": { "facing=west,powered=true": {
"model": "create:block/data_gatherer/block_powered", "model": "create:block/display_link/block_powered",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east,powered=true": { "facing=east,powered=true": {
"model": "create:block/data_gatherer/block_powered", "model": "create:block/display_link/block_powered",
"x": 90, "x": 90,
"y": 90 "y": 90
} }

View file

@ -189,13 +189,13 @@
"block.create.cyan_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B u\u0250\u028E\u0186", "block.create.cyan_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B u\u0250\u028E\u0186",
"block.create.dark_oak_window": "\u028Dopu\u0131M \u029E\u0250O \u029E\u0279\u0250\u15E1", "block.create.dark_oak_window": "\u028Dopu\u0131M \u029E\u0250O \u029E\u0279\u0250\u15E1",
"block.create.dark_oak_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u029E\u0250O \u029E\u0279\u0250\u15E1", "block.create.dark_oak_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u029E\u0250O \u029E\u0279\u0250\u15E1",
"block.create.data_gatherer": "\u0279\u01DD\u0279\u01DD\u0265\u0287\u0250\u2141 \u0250\u0287\u0250\u15E1",
"block.create.deepslate_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0250\u05DFsd\u01DD\u01DD\u15E1", "block.create.deepslate_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0250\u05DFsd\u01DD\u01DD\u15E1",
"block.create.deepslate_zinc_ore": "\u01DD\u0279O \u0254u\u0131Z \u01DD\u0287\u0250\u05DFsd\u01DD\u01DD\u15E1", "block.create.deepslate_zinc_ore": "\u01DD\u0279O \u0254u\u0131Z \u01DD\u0287\u0250\u05DFsd\u01DD\u01DD\u15E1",
"block.create.deployer": "\u0279\u01DD\u028Eo\u05DFd\u01DD\u15E1", "block.create.deployer": "\u0279\u01DD\u028Eo\u05DFd\u01DD\u15E1",
"block.create.depot": "\u0287od\u01DD\u15E1", "block.create.depot": "\u0287od\u01DD\u15E1",
"block.create.diorite_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0131\u0279o\u0131\u15E1", "block.create.diorite_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0131\u0279o\u0131\u15E1",
"block.create.display_board": "p\u0279\u0250o\u15FA \u028E\u0250\u05DFds\u0131\u15E1", "block.create.display_board": "p\u0279\u0250o\u15FA \u028E\u0250\u05DFds\u0131\u15E1",
"block.create.display_link": "\u029Eu\u0131\uA780 \u028E\u0250\u05DFds\u0131\u15E1",
"block.create.dripstone_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DDuo\u0287sd\u0131\u0279\u15E1", "block.create.dripstone_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DDuo\u0287sd\u0131\u0279\u15E1",
"block.create.encased_chain_drive": "\u01DD\u028C\u0131\u0279\u15E1 u\u0131\u0250\u0265\u0186 p\u01DDs\u0250\u0254u\u018E", "block.create.encased_chain_drive": "\u01DD\u028C\u0131\u0279\u15E1 u\u0131\u0250\u0265\u0186 p\u01DDs\u0250\u0254u\u018E",
"block.create.encased_fan": "u\u0250\u2132 p\u01DDs\u0250\u0254u\u018E", "block.create.encased_fan": "u\u0250\u2132 p\u01DDs\u0250\u0254u\u018E",

View file

@ -192,13 +192,13 @@
"block.create.cyan_valve_handle": "Cyan Valve Handle", "block.create.cyan_valve_handle": "Cyan Valve Handle",
"block.create.dark_oak_window": "Dark Oak Window", "block.create.dark_oak_window": "Dark Oak Window",
"block.create.dark_oak_window_pane": "Dark Oak Window Pane", "block.create.dark_oak_window_pane": "Dark Oak Window Pane",
"block.create.data_gatherer": "Data Gatherer",
"block.create.deepslate_pillar": "Deepslate Pillar", "block.create.deepslate_pillar": "Deepslate Pillar",
"block.create.deepslate_zinc_ore": "Deepslate Zinc Ore", "block.create.deepslate_zinc_ore": "Deepslate Zinc Ore",
"block.create.deployer": "Deployer", "block.create.deployer": "Deployer",
"block.create.depot": "Depot", "block.create.depot": "Depot",
"block.create.diorite_pillar": "Diorite Pillar", "block.create.diorite_pillar": "Diorite Pillar",
"block.create.display_board": "Display Board", "block.create.display_board": "Display Board",
"block.create.display_link": "Display Link",
"block.create.dripstone_pillar": "Dripstone Pillar", "block.create.dripstone_pillar": "Dripstone Pillar",
"block.create.encased_chain_drive": "Encased Chain Drive", "block.create.encased_chain_drive": "Encased Chain Drive",
"block.create.encased_fan": "Encased Fan", "block.create.encased_fan": "Encased Fan",
@ -1466,64 +1466,64 @@
"create.contraption.controls.stop_controlling": "Stopped controlling contraption", "create.contraption.controls.stop_controlling": "Stopped controlling contraption",
"create.contraption.controls.approach_station": "Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "Hold %1$s to approach %2$s",
"create.data_gatherer.set": "Targeted position selected", "create.display_link.set": "Targeted position selected",
"create.data_gatherer.success": "Successfully bound to targeted position", "create.display_link.success": "Successfully bound to targeted position",
"create.data_gatherer.clear": "Cleared position selection", "create.display_link.clear": "Cleared position selection",
"create.data_gatherer.too_far": "Targeted position is too far from here", "create.display_link.too_far": "Targeted position is too far from here",
"create.data_gatherer.invalid": "Gatherer has no valid target, try placing it again", "create.display_link.invalid": "Link has no valid target, try placing it again",
"create.data_gatherer.title": "Data Gatherer", "create.display_link.title": "Display Link",
"create.data_gatherer.no_source": "Not a Data Source", "create.display_link.no_source": "Not a Display Source",
"create.data_gatherer.no_target": "Not a Data Target", "create.display_link.no_target": "Not a Display Target",
"create.data_gatherer.reading_from": "Read from:", "create.display_link.reading_from": "Read from:",
"create.data_gatherer.writing_to": "Send to:", "create.display_link.writing_to": "Send to:",
"create.data_gatherer.attached_side": "Block on attached side", "create.display_link.attached_side": "Block on attached side",
"create.data_gatherer.targeted_location": "Block in targeted location", "create.display_link.targeted_location": "Block in targeted location",
"create.data_gatherer.view_compatible": "Click to view all Compatible", "create.display_link.view_compatible": "Click to view all Compatible",
"create.data_gatherer.information_type": "Type of Information", "create.display_link.information_type": "Type of Information",
"create.data_gatherer.display_on": "Write data to:", "create.display_link.display_on": "Write data to:",
"create.data_gatherer.display_on_multiline": "Start writing at:", "create.display_link.display_on_multiline": "Start writing at:",
"create.data_source.label": "Attached Label", "create.display_source.label": "Attached Label",
"create.data_source.combine_item_names": "Combine Item Names", "create.display_source.combine_item_names": "Combine Item Names",
"create.data_source.count_items": "Amount of matching Items", "create.display_source.count_items": "Amount of matching Items",
"create.data_source.list_items": "List matching Items", "create.display_source.list_items": "List matching Items",
"create.data_source.nixie_tube": "Copy Nixie Tubes", "create.display_source.nixie_tube": "Copy Nixie Tubes",
"create.data_source.fill_level": "Container Fill Level", "create.display_source.fill_level": "Container Fill Level",
"create.data_source.fill_level.display": "Display Format", "create.display_source.fill_level.display": "Display Format",
"create.data_source.fill_level.percent": "Percent", "create.display_source.fill_level.percent": "Percent",
"create.data_source.fill_level.progress_bar": "Progress Bar", "create.display_source.fill_level.progress_bar": "Progress Bar",
"create.data_source.value_list.display": "Value Display", "create.display_source.value_list.display": "Value Display",
"create.data_source.value_list.shortened": "Shortened", "create.display_source.value_list.shortened": "Shortened",
"create.data_source.value_list.full_number": "Full Number", "create.display_source.value_list.full_number": "Full Number",
"create.data_source.value_list.thousand": "k", "create.display_source.value_list.thousand": "k",
"create.data_source.value_list.million": "m", "create.display_source.value_list.million": "m",
"create.data_source.player_deaths": "Player Deaths", "create.display_source.player_deaths": "Player Deaths",
"create.data_source.scoreboard": "Scoreboard", "create.display_source.scoreboard": "Scoreboard",
"create.data_source.scoreboard.objective": "Objective ID", "create.display_source.scoreboard.objective": "Objective ID",
"create.data_source.scoreboard.objective_not_found": "'%1$s' not found", "create.display_source.scoreboard.objective_not_found": "'%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "Player Deaths", "create.display_source.scoreboard.objective.deaths": "Player Deaths",
"create.data_source.time_of_day": "Time of Day", "create.display_source.time_of_day": "Time of Day",
"create.data_source.stop_watch": "Stopwatch", "create.display_source.stop_watch": "Stopwatch",
"create.data_source.time.format": "Time Format", "create.display_source.time.format": "Time Format",
"create.data_source.time.12_hour": "12-hour", "create.display_source.time.12_hour": "12-hour",
"create.data_source.time.24_hour": "24-hour", "create.display_source.time.24_hour": "24-hour",
"create.data_source.accumulate_items": "Accumulate Item Count", "create.display_source.accumulate_items": "Accumulate Item Count",
"create.data_source.item_throughput": "Item Throughput", "create.display_source.item_throughput": "Item Throughput",
"create.data_source.item_throughput.interval": "Interval", "create.display_source.item_throughput.interval": "Interval",
"create.data_source.item_throughput.interval.second": "per Second", "create.display_source.item_throughput.interval.second": "per Second",
"create.data_source.item_throughput.interval.minute": "per Minute", "create.display_source.item_throughput.interval.minute": "per Minute",
"create.data_source.item_throughput.interval.hour": "per Hour", "create.display_source.item_throughput.interval.hour": "per Hour",
"create.data_source.station_summary": "Train Station Summary", "create.display_source.station_summary": "Train Station Summary",
"create.data_source.station_summary.filter": "Station name filter", "create.display_source.station_summary.filter": "Station name filter",
"create.data_source.station_summary.train_name_column": "Train column size", "create.display_source.station_summary.train_name_column": "Train column size",
"create.data_source.station_summary.platform_column": "Platform column size", "create.display_source.station_summary.platform_column": "Platform column size",
"create.data_source.station_summary.now": "now", "create.display_source.station_summary.now": "now",
"create.data_source.station_summary.minutes": " min", "create.display_source.station_summary.minutes": " min",
"create.data_source.station_summary.seconds": "%1$ss", "create.display_source.station_summary.seconds": "%1$ss",
"create.data_target.line": "Line %1$s", "create.display_target.line": "Line %1$s",
"create.data_target.page": "Page %1$s", "create.display_target.page": "Page %1$s",
"create.data_target.single_line": "Single Line", "create.display_target.single_line": "Single Line",
"create.flap_display.cycles.alphabet": " ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": " ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "Türkiser Ventilgriff", "block.create.cyan_valve_handle": "Türkiser Ventilgriff",
"block.create.dark_oak_window": "Schwarzeichenholzfenster", "block.create.dark_oak_window": "Schwarzeichenholzfenster",
"block.create.dark_oak_window_pane": "Schwarzeichenholzfensterscheibe", "block.create.dark_oak_window_pane": "Schwarzeichenholzfensterscheibe",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar",
"block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore",
"block.create.deployer": "Einsatzgerät", "block.create.deployer": "Einsatzgerät",
"block.create.depot": "Depot", "block.create.depot": "Depot",
"block.create.diorite_pillar": "Dioritsäule", "block.create.diorite_pillar": "Dioritsäule",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar",
"block.create.encased_chain_drive": "Ummantelter Kettenriemen", "block.create.encased_chain_drive": "Ummantelter Kettenriemen",
"block.create.encased_fan": "Ummantelter Lüfter", "block.create.encased_fan": "Ummantelter Lüfter",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "Válvula Cian", "block.create.cyan_valve_handle": "Válvula Cian",
"block.create.dark_oak_window": "Ventana de Roble Oscuro", "block.create.dark_oak_window": "Ventana de Roble Oscuro",
"block.create.dark_oak_window_pane": "Panel de Ventana de Roble Oscuro", "block.create.dark_oak_window_pane": "Panel de Ventana de Roble Oscuro",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar",
"block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore",
"block.create.deployer": "Desplegador", "block.create.deployer": "Desplegador",
"block.create.depot": "Depósito", "block.create.depot": "Depósito",
"block.create.diorite_pillar": "Pilar de Diorita", "block.create.diorite_pillar": "Pilar de Diorita",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar",
"block.create.encased_chain_drive": "Conductor en Cadena Encubierto", "block.create.encased_chain_drive": "Conductor en Cadena Encubierto",
"block.create.encased_fan": "Ventilador Encubierto", "block.create.encased_fan": "Ventilador Encubierto",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "Asa de válvula cian", "block.create.cyan_valve_handle": "Asa de válvula cian",
"block.create.dark_oak_window": "Ventana de roble oscuro", "block.create.dark_oak_window": "Ventana de roble oscuro",
"block.create.dark_oak_window_pane": "Panel de ventana de roble oscuro", "block.create.dark_oak_window_pane": "Panel de ventana de roble oscuro",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "Pilar de pizarra profunda", "block.create.deepslate_pillar": "Pilar de pizarra profunda",
"block.create.deepslate_zinc_ore": "Mena de cinc de pizarra profunda", "block.create.deepslate_zinc_ore": "Mena de cinc de pizarra profunda",
"block.create.deployer": "Desplegador", "block.create.deployer": "Desplegador",
"block.create.depot": "Depósito", "block.create.depot": "Depósito",
"block.create.diorite_pillar": "Pilar de diorita", "block.create.diorite_pillar": "Pilar de diorita",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "Pilar de espeleotema", "block.create.dripstone_pillar": "Pilar de espeleotema",
"block.create.encased_chain_drive": "Cadena de transmisión revestida", "block.create.encased_chain_drive": "Cadena de transmisión revestida",
"block.create.encased_fan": "Ventilador revestido", "block.create.encased_fan": "Ventilador revestido",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "Vanne cyan", "block.create.cyan_valve_handle": "Vanne cyan",
"block.create.dark_oak_window": "fenêtre en chêne sombre", "block.create.dark_oak_window": "fenêtre en chêne sombre",
"block.create.dark_oak_window_pane": "Vitre en chêne sombre", "block.create.dark_oak_window_pane": "Vitre en chêne sombre",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar",
"block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore",
"block.create.deployer": "Déployeur", "block.create.deployer": "Déployeur",
"block.create.depot": "Dépot", "block.create.depot": "Dépot",
"block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar",
"block.create.encased_chain_drive": "Chaine de transmission", "block.create.encased_chain_drive": "Chaine de transmission",
"block.create.encased_fan": "Ventilateur enchâssé", "block.create.encased_fan": "Ventilateur enchâssé",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "Maniglia per valvola ciano", "block.create.cyan_valve_handle": "Maniglia per valvola ciano",
"block.create.dark_oak_window": "Finestra di quercia scura", "block.create.dark_oak_window": "Finestra di quercia scura",
"block.create.dark_oak_window_pane": "Pannello di finestra di quercia scura", "block.create.dark_oak_window_pane": "Pannello di finestra di quercia scura",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar",
"block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore",
"block.create.deployer": "Installatore", "block.create.deployer": "Installatore",
"block.create.depot": "Deposito", "block.create.depot": "Deposito",
"block.create.diorite_pillar": "Pilastro di diorite", "block.create.diorite_pillar": "Pilastro di diorite",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar",
"block.create.encased_chain_drive": "Trasmissione a catena incassata", "block.create.encased_chain_drive": "Trasmissione a catena incassata",
"block.create.encased_fan": "Ventilatore incassato", "block.create.encased_fan": "Ventilatore incassato",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "水色のバルブハンドル", "block.create.cyan_valve_handle": "水色のバルブハンドル",
"block.create.dark_oak_window": "ダークオークの窓", "block.create.dark_oak_window": "ダークオークの窓",
"block.create.dark_oak_window_pane": "ダークオークの板窓", "block.create.dark_oak_window_pane": "ダークオークの板窓",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "深層岩の柱", "block.create.deepslate_pillar": "深層岩の柱",
"block.create.deepslate_zinc_ore": "深層亜鉛鉱石", "block.create.deepslate_zinc_ore": "深層亜鉛鉱石",
"block.create.deployer": "デプロイヤー", "block.create.deployer": "デプロイヤー",
"block.create.depot": "デポ", "block.create.depot": "デポ",
"block.create.diorite_pillar": "閃緑岩の柱", "block.create.diorite_pillar": "閃緑岩の柱",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "鍾乳石の柱", "block.create.dripstone_pillar": "鍾乳石の柱",
"block.create.encased_chain_drive": "ケース入りチェーンドライブ", "block.create.encased_chain_drive": "ケース入りチェーンドライブ",
"block.create.encased_fan": "ケース入りファン", "block.create.encased_fan": "ケース入りファン",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "청록색 밸브 손잡이", "block.create.cyan_valve_handle": "청록색 밸브 손잡이",
"block.create.dark_oak_window": "짙은 참나무 유리창", "block.create.dark_oak_window": "짙은 참나무 유리창",
"block.create.dark_oak_window_pane": "짙은 참나무 유리판", "block.create.dark_oak_window_pane": "짙은 참나무 유리판",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "심층암 기둥", "block.create.deepslate_pillar": "심층암 기둥",
"block.create.deepslate_zinc_ore": "심층암 아연 광석", "block.create.deepslate_zinc_ore": "심층암 아연 광석",
"block.create.deployer": "기계 손", "block.create.deployer": "기계 손",
"block.create.depot": "아이템 거치대", "block.create.depot": "아이템 거치대",
"block.create.diorite_pillar": "섬록암 기둥", "block.create.diorite_pillar": "섬록암 기둥",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "점적석 기둥", "block.create.dripstone_pillar": "점적석 기둥",
"block.create.encased_chain_drive": "체인 드라이브", "block.create.encased_chain_drive": "체인 드라이브",
"block.create.encased_fan": "선풍기", "block.create.encased_fan": "선풍기",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "UNLOCALIZED: Cyan Valve Handle", "block.create.cyan_valve_handle": "UNLOCALIZED: Cyan Valve Handle",
"block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window",
"block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar",
"block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore",
"block.create.deployer": "UNLOCALIZED: Deployer", "block.create.deployer": "UNLOCALIZED: Deployer",
"block.create.depot": "UNLOCALIZED: Depot", "block.create.depot": "UNLOCALIZED: Depot",
"block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar",
"block.create.encased_chain_drive": "UNLOCALIZED: Encased Chain Drive", "block.create.encased_chain_drive": "UNLOCALIZED: Encased Chain Drive",
"block.create.encased_fan": "Omhulsde Ventilator", "block.create.encased_fan": "Omhulsde Ventilator",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "Błękitne pokrętło", "block.create.cyan_valve_handle": "Błękitne pokrętło",
"block.create.dark_oak_window": "Ciemnodębowe okno", "block.create.dark_oak_window": "Ciemnodębowe okno",
"block.create.dark_oak_window_pane": "Ciemnodębowa szyba okienna", "block.create.dark_oak_window_pane": "Ciemnodębowa szyba okienna",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar",
"block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore",
"block.create.deployer": "Aplikator", "block.create.deployer": "Aplikator",
"block.create.depot": "Składnica", "block.create.depot": "Składnica",
"block.create.diorite_pillar": "Diorytowy filar", "block.create.diorite_pillar": "Diorytowy filar",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar",
"block.create.encased_chain_drive": "Izolowany przekaźnik łańcuchowy", "block.create.encased_chain_drive": "Izolowany przekaźnik łańcuchowy",
"block.create.encased_fan": "Izolowany wiatrak", "block.create.encased_fan": "Izolowany wiatrak",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "Válvula ciano", "block.create.cyan_valve_handle": "Válvula ciano",
"block.create.dark_oak_window": "Janela de carvalho escuro", "block.create.dark_oak_window": "Janela de carvalho escuro",
"block.create.dark_oak_window_pane": "Vidraça de carvalho escuro", "block.create.dark_oak_window_pane": "Vidraça de carvalho escuro",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "Pilar de ardósia", "block.create.deepslate_pillar": "Pilar de ardósia",
"block.create.deepslate_zinc_ore": "Minério de zinco de ardósia", "block.create.deepslate_zinc_ore": "Minério de zinco de ardósia",
"block.create.deployer": "Implantador", "block.create.deployer": "Implantador",
"block.create.depot": "Depósito", "block.create.depot": "Depósito",
"block.create.diorite_pillar": "Pilar de diorito", "block.create.diorite_pillar": "Pilar de diorito",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "Pilar de espeleotema", "block.create.dripstone_pillar": "Pilar de espeleotema",
"block.create.encased_chain_drive": "Correia Revestida", "block.create.encased_chain_drive": "Correia Revestida",
"block.create.encased_fan": "Ventilador Revestida", "block.create.encased_fan": "Ventilador Revestida",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "Manopla de válvula ciano", "block.create.cyan_valve_handle": "Manopla de válvula ciano",
"block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window",
"block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar",
"block.create.deepslate_zinc_ore": "Deepslate zinc ore", "block.create.deepslate_zinc_ore": "Deepslate zinc ore",
"block.create.deployer": "Implantador", "block.create.deployer": "Implantador",
"block.create.depot": "Depósito", "block.create.depot": "Depósito",
"block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar",
"block.create.encased_chain_drive": "Correia Revestida", "block.create.encased_chain_drive": "Correia Revestida",
"block.create.encased_fan": "Ventilador Revestida", "block.create.encased_fan": "Ventilador Revestida",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "Mâner De Supapă Turcoaz", "block.create.cyan_valve_handle": "Mâner De Supapă Turcoaz",
"block.create.dark_oak_window": "Sticlă De Stejar Negru", "block.create.dark_oak_window": "Sticlă De Stejar Negru",
"block.create.dark_oak_window_pane": "Geam De Stejar Negru", "block.create.dark_oak_window_pane": "Geam De Stejar Negru",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "Coloană De Deepslate", "block.create.deepslate_pillar": "Coloană De Deepslate",
"block.create.deepslate_zinc_ore": "Minereu De Zinc De Adâncime", "block.create.deepslate_zinc_ore": "Minereu De Zinc De Adâncime",
"block.create.deployer": "Deployer", "block.create.deployer": "Deployer",
"block.create.depot": "Depot", "block.create.depot": "Depot",
"block.create.diorite_pillar": "Coloană De Diorit", "block.create.diorite_pillar": "Coloană De Diorit",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "Coloană De Dripstone", "block.create.dripstone_pillar": "Coloană De Dripstone",
"block.create.encased_chain_drive": "Lanț De Distribuție Încapsulat", "block.create.encased_chain_drive": "Lanț De Distribuție Încapsulat",
"block.create.encased_fan": "Ventilator Încapsulat", "block.create.encased_fan": "Ventilator Încapsulat",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "Бирюзовый ручной вентиль", "block.create.cyan_valve_handle": "Бирюзовый ручной вентиль",
"block.create.dark_oak_window": "Окно из тёмного дуба", "block.create.dark_oak_window": "Окно из тёмного дуба",
"block.create.dark_oak_window_pane": "Панель из окна из тёмного дуб", "block.create.dark_oak_window_pane": "Панель из окна из тёмного дуб",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar",
"block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore",
"block.create.deployer": "Автономный активатор", "block.create.deployer": "Автономный активатор",
"block.create.depot": "Депо", "block.create.depot": "Депо",
"block.create.diorite_pillar": "Диоритовая колонна", "block.create.diorite_pillar": "Диоритовая колонна",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar",
"block.create.encased_chain_drive": "Цепной привод в корпусе", "block.create.encased_chain_drive": "Цепной привод в корпусе",
"block.create.encased_fan": "Вентилятор в корпусе", "block.create.encased_fan": "Вентилятор в корпусе",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "青色阀门手轮", "block.create.cyan_valve_handle": "青色阀门手轮",
"block.create.dark_oak_window": "深色橡木窗户", "block.create.dark_oak_window": "深色橡木窗户",
"block.create.dark_oak_window_pane": "深色橡木窗户板", "block.create.dark_oak_window_pane": "深色橡木窗户板",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "深板岩柱", "block.create.deepslate_pillar": "深板岩柱",
"block.create.deepslate_zinc_ore": "深层锌矿石", "block.create.deepslate_zinc_ore": "深层锌矿石",
"block.create.deployer": "机械手", "block.create.deployer": "机械手",
"block.create.depot": "置物台", "block.create.depot": "置物台",
"block.create.diorite_pillar": "闪长岩柱", "block.create.diorite_pillar": "闪长岩柱",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "滴水石柱", "block.create.dripstone_pillar": "滴水石柱",
"block.create.encased_chain_drive": "链式传动箱", "block.create.encased_chain_drive": "链式传动箱",
"block.create.encased_fan": "鼓风机", "block.create.encased_fan": "鼓风机",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -193,13 +193,13 @@
"block.create.cyan_valve_handle": "藍綠色閥門開關", "block.create.cyan_valve_handle": "藍綠色閥門開關",
"block.create.dark_oak_window": "黑橡木窗戶", "block.create.dark_oak_window": "黑橡木窗戶",
"block.create.dark_oak_window_pane": "黑橡木窗戶片", "block.create.dark_oak_window_pane": "黑橡木窗戶片",
"block.create.data_gatherer": "UNLOCALIZED: Data Gatherer",
"block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar",
"block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore",
"block.create.deployer": "機器手", "block.create.deployer": "機器手",
"block.create.depot": "置物臺", "block.create.depot": "置物臺",
"block.create.diorite_pillar": "豎紋閃長岩", "block.create.diorite_pillar": "豎紋閃長岩",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
"block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar",
"block.create.encased_chain_drive": "鏈式傳動箱", "block.create.encased_chain_drive": "鏈式傳動箱",
"block.create.encased_fan": "鼓風機", "block.create.encased_fan": "鼓風機",
@ -1467,64 +1467,64 @@
"create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption",
"create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s",
"create.data_gatherer.set": "UNLOCALIZED: Targeted position selected", "create.display_link.set": "UNLOCALIZED: Targeted position selected",
"create.data_gatherer.success": "UNLOCALIZED: Successfully bound to targeted position", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position",
"create.data_gatherer.clear": "UNLOCALIZED: Cleared position selection", "create.display_link.clear": "UNLOCALIZED: Cleared position selection",
"create.data_gatherer.too_far": "UNLOCALIZED: Targeted position is too far from here", "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here",
"create.data_gatherer.invalid": "UNLOCALIZED: Gatherer has no valid target, try placing it again", "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again",
"create.data_gatherer.title": "UNLOCALIZED: Data Gatherer", "create.display_link.title": "UNLOCALIZED: Display Link",
"create.data_gatherer.no_source": "UNLOCALIZED: Not a Data Source", "create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.data_gatherer.no_target": "UNLOCALIZED: Not a Data Target", "create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.data_gatherer.reading_from": "UNLOCALIZED: Read from:", "create.display_link.reading_from": "UNLOCALIZED: Read from:",
"create.data_gatherer.writing_to": "UNLOCALIZED: Send to:", "create.display_link.writing_to": "UNLOCALIZED: Send to:",
"create.data_gatherer.attached_side": "UNLOCALIZED: Block on attached side", "create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.data_gatherer.targeted_location": "UNLOCALIZED: Block in targeted location", "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.data_gatherer.view_compatible": "UNLOCALIZED: Click to view all Compatible", "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible",
"create.data_gatherer.information_type": "UNLOCALIZED: Type of Information", "create.display_link.information_type": "UNLOCALIZED: Type of Information",
"create.data_gatherer.display_on": "UNLOCALIZED: Write data to:", "create.display_link.display_on": "UNLOCALIZED: Write data to:",
"create.data_gatherer.display_on_multiline": "UNLOCALIZED: Start writing at:", "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:",
"create.data_source.label": "UNLOCALIZED: Attached Label", "create.display_source.label": "UNLOCALIZED: Attached Label",
"create.data_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.data_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.data_source.list_items": "UNLOCALIZED: List matching Items", "create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.data_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.data_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.data_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
"create.data_source.fill_level.percent": "UNLOCALIZED: Percent", "create.display_source.fill_level.percent": "UNLOCALIZED: Percent",
"create.data_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar",
"create.data_source.value_list.display": "UNLOCALIZED: Value Display", "create.display_source.value_list.display": "UNLOCALIZED: Value Display",
"create.data_source.value_list.shortened": "UNLOCALIZED: Shortened", "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened",
"create.data_source.value_list.full_number": "UNLOCALIZED: Full Number", "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.data_source.value_list.thousand": "UNLOCALIZED: k", "create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.data_source.value_list.million": "UNLOCALIZED: m", "create.display_source.value_list.million": "UNLOCALIZED: m",
"create.data_source.player_deaths": "UNLOCALIZED: Player Deaths", "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.scoreboard": "UNLOCALIZED: Scoreboard", "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard",
"create.data_source.scoreboard.objective": "UNLOCALIZED: Objective ID", "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.data_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths",
"create.data_source.time_of_day": "UNLOCALIZED: Time of Day", "create.display_source.time_of_day": "UNLOCALIZED: Time of Day",
"create.data_source.stop_watch": "UNLOCALIZED: Stopwatch", "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch",
"create.data_source.time.format": "UNLOCALIZED: Time Format", "create.display_source.time.format": "UNLOCALIZED: Time Format",
"create.data_source.time.12_hour": "UNLOCALIZED: 12-hour", "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour",
"create.data_source.time.24_hour": "UNLOCALIZED: 24-hour", "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour",
"create.data_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count",
"create.data_source.item_throughput": "UNLOCALIZED: Item Throughput", "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput",
"create.data_source.item_throughput.interval": "UNLOCALIZED: Interval", "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval",
"create.data_source.item_throughput.interval.second": "UNLOCALIZED: per Second", "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second",
"create.data_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute",
"create.data_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour",
"create.data_source.station_summary": "UNLOCALIZED: Train Station Summary", "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary",
"create.data_source.station_summary.filter": "UNLOCALIZED: Station name filter", "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter",
"create.data_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.data_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.data_source.station_summary.now": "UNLOCALIZED: now", "create.display_source.station_summary.now": "UNLOCALIZED: now",
"create.data_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.data_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.data_target.line": "UNLOCALIZED: Line %1$s", "create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.data_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
"create.data_target.single_line": "UNLOCALIZED: Single Line", "create.display_target.single_line": "UNLOCALIZED: Single Line",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",

View file

@ -1,3 +0,0 @@
{
"parent": "create:block/data_gatherer/block"
}

View file

@ -0,0 +1,3 @@
{
"parent": "create:block/display_link/block"
}

View file

@ -7,7 +7,7 @@
"entries": [ "entries": [
{ {
"type": "minecraft:item", "type": "minecraft:item",
"name": "create:data_gatherer" "name": "create:display_link"
} }
], ],
"conditions": [ "conditions": [

View file

@ -126,7 +126,7 @@ public class AllBlockPartials {
BOILER_GAUGE_DIAL = block("steam_engine/gauge_dial"), BOILER_GAUGE_DIAL = block("steam_engine/gauge_dial"),
SIGNAL_ON = block("track_signal/indicator_on"), SIGNAL_OFF = block("track_signal/indicator_off"), SIGNAL_ON = block("track_signal/indicator_on"), SIGNAL_OFF = block("track_signal/indicator_off"),
DATA_GATHERER_TUBE = block("data_gatherer/tube"), DATA_GATHERER_GLOW = block("data_gatherer/glow"), DISPLAY_LINK_TUBE = block("display_link/tube"), DISPLAY_LINK_GLOW = block("display_link/glow"),
STATION_ON = block("track_station/flag_on"), STATION_OFF = block("track_station/flag_off"), STATION_ON = block("track_station/flag_on"), STATION_OFF = block("track_station/flag_off"),
STATION_ASSEMBLE = block("track_station/flag_assemble"), STATION_ASSEMBLE = block("track_station/flag_assemble"),

View file

@ -7,7 +7,7 @@ import static com.simibubi.create.AllTags.axeOrPickaxe;
import static com.simibubi.create.AllTags.pickaxeOnly; import static com.simibubi.create.AllTags.pickaxeOnly;
import static com.simibubi.create.AllTags.tagBlockAndItem; import static com.simibubi.create.AllTags.tagBlockAndItem;
import static com.simibubi.create.content.AllSections.SCHEMATICS; import static com.simibubi.create.content.AllSections.SCHEMATICS;
import static com.simibubi.create.content.logistics.block.data.AllDataGathererBehaviours.assignDataBehaviour; import static com.simibubi.create.content.logistics.block.display.AllDisplayBehaviours.assignDataBehaviour;
import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock; import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock;
import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures; import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures;
import static com.simibubi.create.foundation.data.ModelGen.customItemModel; import static com.simibubi.create.foundation.data.ModelGen.customItemModel;
@ -144,18 +144,6 @@ import com.simibubi.create.content.logistics.block.chute.ChuteBlock;
import com.simibubi.create.content.logistics.block.chute.ChuteGenerator; import com.simibubi.create.content.logistics.block.chute.ChuteGenerator;
import com.simibubi.create.content.logistics.block.chute.ChuteItem; import com.simibubi.create.content.logistics.block.chute.ChuteItem;
import com.simibubi.create.content.logistics.block.chute.SmartChuteBlock; import com.simibubi.create.content.logistics.block.chute.SmartChuteBlock;
import com.simibubi.create.content.logistics.block.data.DataGathererBlock;
import com.simibubi.create.content.logistics.block.data.DataGathererBlockItem;
import com.simibubi.create.content.logistics.block.data.source.AccumulatedItemCountDataSource;
import com.simibubi.create.content.logistics.block.data.source.FillLevelDataSource;
import com.simibubi.create.content.logistics.block.data.source.ItemCountDataSource;
import com.simibubi.create.content.logistics.block.data.source.ItemListDataSource;
import com.simibubi.create.content.logistics.block.data.source.ItemNameDataSource;
import com.simibubi.create.content.logistics.block.data.source.ItemThoughputDataSource;
import com.simibubi.create.content.logistics.block.data.source.StationSummaryDataSource;
import com.simibubi.create.content.logistics.block.data.source.StopWatchDataSource;
import com.simibubi.create.content.logistics.block.data.source.TimeOfDayDataSource;
import com.simibubi.create.content.logistics.block.data.target.FlapDisplayDataTarget;
import com.simibubi.create.content.logistics.block.depot.DepotBlock; import com.simibubi.create.content.logistics.block.depot.DepotBlock;
import com.simibubi.create.content.logistics.block.depot.EjectorBlock; import com.simibubi.create.content.logistics.block.depot.EjectorBlock;
import com.simibubi.create.content.logistics.block.depot.EjectorItem; import com.simibubi.create.content.logistics.block.depot.EjectorItem;
@ -166,6 +154,18 @@ import com.simibubi.create.content.logistics.block.diodes.PoweredLatchBlock;
import com.simibubi.create.content.logistics.block.diodes.PoweredLatchGenerator; import com.simibubi.create.content.logistics.block.diodes.PoweredLatchGenerator;
import com.simibubi.create.content.logistics.block.diodes.ToggleLatchBlock; import com.simibubi.create.content.logistics.block.diodes.ToggleLatchBlock;
import com.simibubi.create.content.logistics.block.diodes.ToggleLatchGenerator; import com.simibubi.create.content.logistics.block.diodes.ToggleLatchGenerator;
import com.simibubi.create.content.logistics.block.display.DisplayLinkBlock;
import com.simibubi.create.content.logistics.block.display.DisplayLinkBlockItem;
import com.simibubi.create.content.logistics.block.display.source.AccumulatedItemCountDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.FillLevelDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ItemCountDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ItemListDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ItemNameDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ItemThoughputDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.StationSummaryDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.StopWatchDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.TimeOfDayDisplaySource;
import com.simibubi.create.content.logistics.block.display.target.DisplayBoardTarget;
import com.simibubi.create.content.logistics.block.funnel.AndesiteFunnelBlock; import com.simibubi.create.content.logistics.block.funnel.AndesiteFunnelBlock;
import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock;
import com.simibubi.create.content.logistics.block.funnel.BeltFunnelGenerator; import com.simibubi.create.content.logistics.block.funnel.BeltFunnelGenerator;
@ -443,7 +443,7 @@ public class AllBlocks {
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(new BeltGenerator()::generate) .blockstate(new BeltGenerator()::generate)
.transform(BlockStressDefaults.setImpact(0)) .transform(BlockStressDefaults.setImpact(0))
.onRegister(assignDataBehaviour(new ItemNameDataSource(), "combine_item_names")) .onRegister(assignDataBehaviour(new ItemNameDisplaySource(), "combine_item_names"))
.onRegister(CreateRegistrate.blockModel(() -> BeltModel::new)) .onRegister(CreateRegistrate.blockModel(() -> BeltModel::new))
.register(); .register();
@ -512,8 +512,8 @@ public class AllBlocks {
REGISTRATE.block("cuckoo_clock", CuckooClockBlock::regular) REGISTRATE.block("cuckoo_clock", CuckooClockBlock::regular)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BuilderTransformers.cuckooClock()) .transform(BuilderTransformers.cuckooClock())
.onRegister(assignDataBehaviour(new TimeOfDayDataSource(), "time_of_day")) .onRegister(assignDataBehaviour(new TimeOfDayDisplaySource(), "time_of_day"))
.onRegister(assignDataBehaviour(new StopWatchDataSource(), "stop_watch")) .onRegister(assignDataBehaviour(new StopWatchDisplaySource(), "stop_watch"))
.register(); .register();
public static final BlockEntry<CuckooClockBlock> MYSTERIOUS_CUCKOO_CLOCK = public static final BlockEntry<CuckooClockBlock> MYSTERIOUS_CUCKOO_CLOCK =
@ -627,7 +627,7 @@ public class AllBlocks {
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
.onRegister(assignDataBehaviour(new ItemNameDataSource(), "combine_item_names")) .onRegister(assignDataBehaviour(new ItemNameDisplaySource(), "combine_item_names"))
.item() .item()
.transform(customItemModel("_", "block")) .transform(customItemModel("_", "block"))
.register(); .register();
@ -639,7 +639,7 @@ public class AllBlocks {
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p), 180)) .blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p), 180))
.transform(BlockStressDefaults.setImpact(2.0)) .transform(BlockStressDefaults.setImpact(2.0))
.onRegister(assignDataBehaviour(new ItemNameDataSource(), "combine_item_names")) .onRegister(assignDataBehaviour(new ItemNameDisplaySource(), "combine_item_names"))
.item(EjectorItem::new) .item(EjectorItem::new)
.transform(customItemModel()) .transform(customItemModel())
.register(); .register();
@ -1360,7 +1360,7 @@ public class AllBlocks {
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p)))
.onRegister(assignDataBehaviour(new StationSummaryDataSource(), "station_summary")) .onRegister(assignDataBehaviour(new StationSummaryDisplaySource(), "station_summary"))
.lang("Train Station") .lang("Train Station")
.item(TrackTargetingBlockItem::new) .item(TrackTargetingBlockItem::new)
.transform(customItemModel()) .transform(customItemModel())
@ -1463,13 +1463,13 @@ public class AllBlocks {
public static final BlockEntry<BeltTunnelBlock> ANDESITE_TUNNEL = public static final BlockEntry<BeltTunnelBlock> ANDESITE_TUNNEL =
REGISTRATE.block("andesite_tunnel", BeltTunnelBlock::new) REGISTRATE.block("andesite_tunnel", BeltTunnelBlock::new)
.transform(BuilderTransformers.beltTunnel("andesite", new ResourceLocation("block/polished_andesite"))) .transform(BuilderTransformers.beltTunnel("andesite", new ResourceLocation("block/polished_andesite")))
.onRegister(assignDataBehaviour(new AccumulatedItemCountDataSource(), "accumulate_items")) .onRegister(assignDataBehaviour(new AccumulatedItemCountDisplaySource(), "accumulate_items"))
.register(); .register();
public static final BlockEntry<BrassTunnelBlock> BRASS_TUNNEL = public static final BlockEntry<BrassTunnelBlock> BRASS_TUNNEL =
REGISTRATE.block("brass_tunnel", BrassTunnelBlock::new) REGISTRATE.block("brass_tunnel", BrassTunnelBlock::new)
.transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block"))) .transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block")))
.onRegister(assignDataBehaviour(new ItemThoughputDataSource(), "item_throughput")) .onRegister(assignDataBehaviour(new ItemThoughputDisplaySource(), "item_throughput"))
.onRegister(connectedTextures(BrassTunnelCTBehaviour::new)) .onRegister(connectedTextures(BrassTunnelCTBehaviour::new))
.register(); .register();
@ -1478,8 +1478,8 @@ public class AllBlocks {
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.forPowered(c, p))) .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.forPowered(c, p)))
.onRegister(assignDataBehaviour(new ItemCountDataSource(), "count_items")) .onRegister(assignDataBehaviour(new ItemCountDisplaySource(), "count_items"))
.onRegister(assignDataBehaviour(new ItemListDataSource(), "list_items")) .onRegister(assignDataBehaviour(new ItemListDisplaySource(), "list_items"))
.item() .item()
.transform(customItemModel("_", "block")) .transform(customItemModel("_", "block"))
.register(); .register();
@ -1490,7 +1490,7 @@ public class AllBlocks {
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.horizontalBlock(c.get(), .blockstate((c, p) -> p.horizontalBlock(c.get(),
AssetLookup.withIndicator(c, p, $ -> AssetLookup.standardModel(c, p), StockpileSwitchBlock.INDICATOR))) AssetLookup.withIndicator(c, p, $ -> AssetLookup.standardModel(c, p), StockpileSwitchBlock.INDICATOR)))
.onRegister(assignDataBehaviour(new FillLevelDataSource(), "fill_level")) .onRegister(assignDataBehaviour(new FillLevelDisplaySource(), "fill_level"))
.simpleItem() .simpleItem()
.register(); .register();
@ -1500,23 +1500,23 @@ public class AllBlocks {
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.register(); .register();
public static final BlockEntry<DataGathererBlock> DATA_GATHERER = public static final BlockEntry<DisplayLinkBlock> DISPLAY_LINK =
REGISTRATE.block("data_gatherer", DataGathererBlock::new) REGISTRATE.block("display_link", DisplayLinkBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.addLayer(() -> RenderType::translucent) .addLayer(() -> RenderType::translucent)
.blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p)))
.item(DataGathererBlockItem::new) .item(DisplayLinkBlockItem::new)
.transform(customItemModel("_", "block")) .transform(customItemModel("_", "block"))
.register(); .register();
public static final BlockEntry<FlapDisplayBlock> FLAP_DISPLAY = public static final BlockEntry<FlapDisplayBlock> DISPLAY_BOARD =
REGISTRATE.block("display_board", FlapDisplayBlock::new) REGISTRATE.block("display_board", FlapDisplayBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.addLayer(() -> RenderType::cutoutMipped) .addLayer(() -> RenderType::cutoutMipped)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.transform(BlockStressDefaults.setImpact(0)) .transform(BlockStressDefaults.setImpact(0))
.blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.partialBaseModel(c, p)))
.onRegister(assignDataBehaviour(new FlapDisplayDataTarget())) .onRegister(assignDataBehaviour(new DisplayBoardTarget()))
.lang("Display Board") .lang("Display Board")
.item() .item()
.transform(customItemModel()) .transform(customItemModel())

View file

@ -1,6 +1,6 @@
package com.simibubi.create; package com.simibubi.create;
import static com.simibubi.create.content.logistics.block.data.AllDataGathererBehaviours.assignDataBehaviourTE; import static com.simibubi.create.content.logistics.block.display.AllDisplayBehaviours.assignDataBehaviourTE;
import com.simibubi.create.content.contraptions.base.CutoutRotatingInstance; import com.simibubi.create.content.contraptions.base.CutoutRotatingInstance;
import com.simibubi.create.content.contraptions.base.HalfShaftInstance; import com.simibubi.create.content.contraptions.base.HalfShaftInstance;
@ -144,10 +144,6 @@ import com.simibubi.create.content.logistics.block.chute.ChuteRenderer;
import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity; import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity;
import com.simibubi.create.content.logistics.block.chute.SmartChuteRenderer; import com.simibubi.create.content.logistics.block.chute.SmartChuteRenderer;
import com.simibubi.create.content.logistics.block.chute.SmartChuteTileEntity; import com.simibubi.create.content.logistics.block.chute.SmartChuteTileEntity;
import com.simibubi.create.content.logistics.block.data.DataGathererRenderer;
import com.simibubi.create.content.logistics.block.data.DataGathererTileEntity;
import com.simibubi.create.content.logistics.block.data.source.NixieTubeDataSource;
import com.simibubi.create.content.logistics.block.data.target.NixieTubeDataTarget;
import com.simibubi.create.content.logistics.block.depot.DepotRenderer; import com.simibubi.create.content.logistics.block.depot.DepotRenderer;
import com.simibubi.create.content.logistics.block.depot.DepotTileEntity; import com.simibubi.create.content.logistics.block.depot.DepotTileEntity;
import com.simibubi.create.content.logistics.block.depot.EjectorInstance; import com.simibubi.create.content.logistics.block.depot.EjectorInstance;
@ -157,6 +153,10 @@ import com.simibubi.create.content.logistics.block.diodes.BrassDiodeInstance;
import com.simibubi.create.content.logistics.block.diodes.BrassDiodeRenderer; import com.simibubi.create.content.logistics.block.diodes.BrassDiodeRenderer;
import com.simibubi.create.content.logistics.block.diodes.PulseExtenderTileEntity; import com.simibubi.create.content.logistics.block.diodes.PulseExtenderTileEntity;
import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterTileEntity; import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterTileEntity;
import com.simibubi.create.content.logistics.block.display.DisplayLinkRenderer;
import com.simibubi.create.content.logistics.block.display.DisplayLinkTileEntity;
import com.simibubi.create.content.logistics.block.display.source.NixieTubeDisplaySource;
import com.simibubi.create.content.logistics.block.display.target.NixieTubeDisplayTarget;
import com.simibubi.create.content.logistics.block.funnel.FunnelInstance; import com.simibubi.create.content.logistics.block.funnel.FunnelInstance;
import com.simibubi.create.content.logistics.block.funnel.FunnelRenderer; import com.simibubi.create.content.logistics.block.funnel.FunnelRenderer;
import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity;
@ -665,14 +665,14 @@ public class AllTileEntities {
.validBlocks(AllBlocks.ORANGE_NIXIE_TUBE) .validBlocks(AllBlocks.ORANGE_NIXIE_TUBE)
.validBlocks(AllBlocks.NIXIE_TUBES.toArray()) .validBlocks(AllBlocks.NIXIE_TUBES.toArray())
.renderer(() -> NixieTubeRenderer::new) .renderer(() -> NixieTubeRenderer::new)
.onRegister(assignDataBehaviourTE(new NixieTubeDataTarget())) .onRegister(assignDataBehaviourTE(new NixieTubeDisplayTarget()))
.onRegister(assignDataBehaviourTE(new NixieTubeDataSource())) .onRegister(assignDataBehaviourTE(new NixieTubeDisplaySource()))
.register(); .register();
public static final BlockEntityEntry<DataGathererTileEntity> DATA_GATHERER = Create.registrate() public static final BlockEntityEntry<DisplayLinkTileEntity> DISPLAY_LINK = Create.registrate()
.tileEntity("data_gatherer", DataGathererTileEntity::new) .tileEntity("display_link", DisplayLinkTileEntity::new)
.validBlocks(AllBlocks.DATA_GATHERER) .validBlocks(AllBlocks.DISPLAY_LINK)
.renderer(() -> DataGathererRenderer::new) .renderer(() -> DisplayLinkRenderer::new)
.register(); .register();
public static final BlockEntityEntry<StockpileSwitchTileEntity> STOCKPILE_SWITCH = Create.registrate() public static final BlockEntityEntry<StockpileSwitchTileEntity> STOCKPILE_SWITCH = Create.registrate()
@ -784,7 +784,7 @@ public class AllTileEntities {
.tileEntity("flap_display", FlapDisplayTileEntity::new) .tileEntity("flap_display", FlapDisplayTileEntity::new)
.instance(() -> MechanicalCrafterInstance::new) .instance(() -> MechanicalCrafterInstance::new)
.renderer(() -> FlapDisplayRenderer::new) .renderer(() -> FlapDisplayRenderer::new)
.validBlocks(AllBlocks.FLAP_DISPLAY) .validBlocks(AllBlocks.DISPLAY_BOARD)
.register(); .register();
public static final BlockEntityEntry<SignalTileEntity> TRACK_SIGNAL = Create.registrate() public static final BlockEntityEntry<SignalTileEntity> TRACK_SIGNAL = Create.registrate()

View file

@ -12,7 +12,7 @@ import com.simibubi.create.content.CreateItemGroup;
import com.simibubi.create.content.contraptions.TorquePropagator; import com.simibubi.create.content.contraptions.TorquePropagator;
import com.simibubi.create.content.curiosities.weapons.BuiltinPotatoProjectileTypes; import com.simibubi.create.content.curiosities.weapons.BuiltinPotatoProjectileTypes;
import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler; import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler;
import com.simibubi.create.content.logistics.block.data.AllDataGathererBehaviours; import com.simibubi.create.content.logistics.block.display.AllDisplayBehaviours;
import com.simibubi.create.content.logistics.trains.GlobalRailwayManager; import com.simibubi.create.content.logistics.trains.GlobalRailwayManager;
import com.simibubi.create.content.palettes.AllPaletteBlocks; import com.simibubi.create.content.palettes.AllPaletteBlocks;
import com.simibubi.create.content.palettes.PalettesItemGroup; import com.simibubi.create.content.palettes.PalettesItemGroup;
@ -96,7 +96,7 @@ public class Create {
AllEntityTypes.register(); AllEntityTypes.register();
AllTileEntities.register(); AllTileEntities.register();
AllMovementBehaviours.register(); AllMovementBehaviours.register();
AllDataGathererBehaviours.register(); AllDisplayBehaviours.register();
AllInteractionBehaviours.register(); AllInteractionBehaviours.register();
AllWorldFeatures.register(); AllWorldFeatures.register();
AllEnchantments.register(); AllEnchantments.register();

View file

@ -33,7 +33,7 @@ public class ControlsRenderer {
.rotateY(hAngle) .rotateY(hAngle)
.unCentre() .unCentre()
.light(matrices.getWorld(), ContraptionRenderDispatcher.getContraptionWorldLight(context, renderWorld)) .light(matrices.getWorld(), ContraptionRenderDispatcher.getContraptionWorldLight(context, renderWorld))
.renderInto(matrices.getViewProjection(), buffer.getBuffer(RenderType.solid())); .renderInto(matrices.getViewProjection(), buffer.getBuffer(RenderType.cutoutMipped()));
double yOffset = Mth.lerp(equipAnimation * equipAnimation, -0.15f, 0.05f); double yOffset = Mth.lerp(equipAnimation * equipAnimation, -0.15f, 0.05f);

View file

@ -9,8 +9,8 @@ import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock;
import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelTileEntity;
import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelBlock;
import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelTileEntity;
import com.simibubi.create.content.logistics.block.data.DataGathererBlock; import com.simibubi.create.content.logistics.block.display.DisplayLinkBlock;
import com.simibubi.create.content.logistics.block.data.source.AccumulatedItemCountDataSource; import com.simibubi.create.content.logistics.block.display.source.AccumulatedItemCountDisplaySource;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour;
import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Iterate;
@ -104,8 +104,8 @@ public class BeltTunnelInteractionHandler {
flapTunnel(beltInventory, upcomingSegment, movementFacing.getOpposite(), true); flapTunnel(beltInventory, upcomingSegment, movementFacing.getOpposite(), true);
if (nextTunnel != null) if (nextTunnel != null)
DataGathererBlock.sendToGatherers(world, nextTunnel.getBlockPos(), DisplayLinkBlock.sendToGatherers(world, nextTunnel.getBlockPos(),
(dgte, b) -> b.itemReceived(dgte, transferred), AccumulatedItemCountDataSource.class); (dgte, b) -> b.itemReceived(dgte, transferred), AccumulatedItemCountDisplaySource.class);
} }
if (removed) if (removed)

View file

@ -1,185 +0,0 @@
package com.simibubi.create.content.logistics.block.data;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import javax.annotation.Nullable;
import com.simibubi.create.Create;
import com.simibubi.create.content.logistics.block.data.source.DataGathererSource;
import com.simibubi.create.content.logistics.block.data.source.DeathCounterDataSource;
import com.simibubi.create.content.logistics.block.data.source.ScoreboardDataSource;
import com.simibubi.create.content.logistics.block.data.target.DataGathererTarget;
import com.simibubi.create.content.logistics.block.data.target.LecternDataTarget;
import com.simibubi.create.content.logistics.block.data.target.SignDataTarget;
import com.tterrag.registrate.util.nullness.NonNullConsumer;
import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
public class AllDataGathererBehaviours {
public static final HashMap<ResourceLocation, DataGathererBehaviour>
GATHERER_BEHAVIOURS = new HashMap<>();
public static final HashMap<ResourceLocation, List<DataGathererSource>>
SOURCES_BY_BLOCK = new HashMap<>(), SOURCES_BY_TILE = new HashMap<>();
public static final HashMap<ResourceLocation, DataGathererTarget>
TARGETS_BY_BLOCK = new HashMap<>(), TARGETS_BY_TILE = new HashMap<>();
public static DataGathererBehaviour register(ResourceLocation id, DataGathererBehaviour behaviour) {
if (GATHERER_BEHAVIOURS.containsKey(id))
Create.LOGGER.warn("Data Gatherer Behaviour for " + id.toString() + " was overridden");
behaviour.id = id;
GATHERER_BEHAVIOURS.put(id, behaviour);
return behaviour;
}
public static void assign(DataGathererBehaviour behaviour, Block block) {
assignBlock(behaviour, block.getRegistryName());
}
public static void assign(DataGathererBehaviour behaviour, BlockEntityType<?> teType) {
assignTileEntity(behaviour, teType.getRegistryName());
}
public static void assignBlock(DataGathererBehaviour behaviour, ResourceLocation blockId) {
if (behaviour instanceof DataGathererSource source)
SOURCES_BY_BLOCK.computeIfAbsent(blockId, r -> new ArrayList<>())
.add(source);
if (behaviour instanceof DataGathererTarget target)
TARGETS_BY_BLOCK.put(blockId, target);
}
public static void assignTileEntity(DataGathererBehaviour behaviour, ResourceLocation tileId) {
if (behaviour instanceof DataGathererSource source)
SOURCES_BY_TILE.computeIfAbsent(tileId, r -> new ArrayList<>())
.add(source);
if (behaviour instanceof DataGathererTarget target)
TARGETS_BY_TILE.put(tileId, target);
}
public static <B extends Block> NonNullConsumer<? super B> assignDataBehaviour(DataGathererBehaviour behaviour,
String... suffix) {
return b -> {
ResourceLocation registryName = b.getRegistryName();
String idSuffix = behaviour instanceof DataGathererSource ? "_source" : "_target";
if (suffix.length > 0)
idSuffix += "_" + suffix[0];
assignBlock(register(new ResourceLocation(registryName.getNamespace(), registryName.getPath() + idSuffix),
behaviour), registryName);
};
}
public static <B extends BlockEntityType<?>> NonNullConsumer<? super B> assignDataBehaviourTE(
DataGathererBehaviour behaviour, String... suffix) {
return b -> {
ResourceLocation registryName = b.getRegistryName();
String idSuffix = behaviour instanceof DataGathererSource ? "_source" : "_target";
if (suffix.length > 0)
idSuffix += "_" + suffix[0];
assignTileEntity(
register(new ResourceLocation(registryName.getNamespace(), registryName.getPath() + idSuffix),
behaviour),
registryName);
};
}
//
@Nullable
public static DataGathererSource getSource(ResourceLocation resourceLocation) {
DataGathererBehaviour available = GATHERER_BEHAVIOURS.getOrDefault(resourceLocation, null);
if (available instanceof DataGathererSource source)
return source;
return null;
}
@Nullable
public static DataGathererTarget getTarget(ResourceLocation resourceLocation) {
DataGathererBehaviour available = GATHERER_BEHAVIOURS.getOrDefault(resourceLocation, null);
if (available instanceof DataGathererTarget target)
return target;
return null;
}
//
@Nullable
public static List<DataGathererSource> sourcesOf(LevelAccessor level, BlockPos pos) {
BlockState blockState = level.getBlockState(pos);
BlockEntity blockEntity = level.getBlockEntity(pos);
List<DataGathererSource> sourcesOfBlock = sourcesOf(blockState);
List<DataGathererSource> sourcesOfTE = blockEntity == null ? Collections.emptyList() : sourcesOf(blockEntity);
if (sourcesOfTE.isEmpty())
return sourcesOfBlock;
return sourcesOfTE;
}
@Nullable
public static DataGathererTarget targetOf(LevelAccessor level, BlockPos pos) {
BlockState blockState = level.getBlockState(pos);
BlockEntity blockEntity = level.getBlockEntity(pos);
DataGathererTarget targetOfBlock = targetOf(blockState);
DataGathererTarget targetOfTE = blockEntity == null ? null : targetOf(blockEntity);
if (targetOfTE == null)
return targetOfBlock;
return targetOfTE;
}
public static List<DataGathererSource> sourcesOf(BlockState state) {
return sourcesOf(state.getBlock());
}
public static List<DataGathererSource> sourcesOf(BlockEntity tileEntity) {
return SOURCES_BY_TILE.getOrDefault(tileEntity.getType()
.getRegistryName(), Collections.emptyList());
}
public static List<DataGathererSource> sourcesOf(Block block) {
return SOURCES_BY_BLOCK.getOrDefault(block.getRegistryName(), Collections.emptyList());
}
@Nullable
public static DataGathererTarget targetOf(BlockState state) {
return targetOf(state.getBlock());
}
@Nullable
public static DataGathererTarget targetOf(BlockEntity tileEntity) {
return TARGETS_BY_TILE.get(tileEntity.getType()
.getRegistryName());
}
@Nullable
public static DataGathererTarget targetOf(Block block) {
return TARGETS_BY_BLOCK.get(block.getRegistryName());
}
//
public static void register() {
assign(register(Create.asResource("sign_data_target"), new SignDataTarget()), BlockEntityType.SIGN);
assign(register(Create.asResource("lectern_data_target"), new LecternDataTarget()), BlockEntityType.LECTERN);
assign(register(Create.asResource("death_count_data_source"), new DeathCounterDataSource()),
Blocks.RESPAWN_ANCHOR);
assign(register(Create.asResource("scoreboard_data_source"), new ScoreboardDataSource()),
BlockEntityType.COMMAND_BLOCK);
}
}

View file

@ -1,9 +0,0 @@
package com.simibubi.create.content.logistics.block.data;
import net.minecraft.resources.ResourceLocation;
public abstract class DataGathererBehaviour {
public ResourceLocation id;
}

View file

@ -1,53 +0,0 @@
package com.simibubi.create.content.logistics.block.data.source;
import com.simibubi.create.content.logistics.block.data.DataGathererBlock;
import com.simibubi.create.content.logistics.block.data.DataGathererContext;
import com.simibubi.create.content.logistics.block.data.DataGathererTileEntity;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent;
public class AccumulatedItemCountDataSource extends NumericSingleLineDataSource {
@Override
protected MutableComponent provideLine(DataGathererContext context, DataTargetStats stats) {
return new TextComponent(String.valueOf(context.sourceConfig()
.getInt("Collected")));
}
public void itemReceived(DataGathererTileEntity te, int amount) {
if (te.getBlockState()
.getOptionalValue(DataGathererBlock.POWERED)
.orElse(true))
return;
int collected = te.getSourceConfig()
.getInt("Collected");
te.getSourceConfig()
.putInt("Collected", collected + amount);
te.updateGatheredData();
}
@Override
protected String getTranslationKey() {
return "accumulate_items";
}
@Override
public int getPassiveRefreshTicks() {
return 200;
}
@Override
public void onSignalReset(DataGathererContext context) {
context.sourceConfig()
.remove("Collected");
}
@Override
protected boolean allowsLabeling(DataGathererContext context) {
return true;
}
}

View file

@ -1,22 +0,0 @@
package com.simibubi.create.content.logistics.block.data.source;
import com.simibubi.create.content.logistics.block.data.DataGathererContext;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection;
import net.minecraft.network.chat.TextComponent;
public abstract class NumericSingleLineDataSource extends SingleLineDataSource {
protected static final TextComponent ZERO = new TextComponent("0");
@Override
protected String getFlapDisplayLayoutName(DataGathererContext context) {
return "Number";
}
@Override
protected FlapDisplaySection createSectionForValue(DataGathererContext context, int size) {
return new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "numeric", false, false);
}
}

View file

@ -1,5 +0,0 @@
package com.simibubi.create.content.logistics.block.data.target;
public record DataTargetStats(int maxRows, int maxColumns, DataGathererTarget type) {
}

View file

@ -1,32 +0,0 @@
package com.simibubi.create.content.logistics.block.data.target;
import java.util.List;
import com.simibubi.create.content.logistics.block.data.DataGathererContext;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
public abstract class SingleLineDataTarget extends DataGathererTarget {
@Override
public final void acceptText(int line, List<MutableComponent> text, DataGathererContext context) {
acceptLine(text.get(0), context);
}
protected abstract void acceptLine(MutableComponent text, DataGathererContext context);
@Override
public final DataTargetStats provideStats(DataGathererContext context) {
return new DataTargetStats(1, getWidth(context), this);
}
@Override
public Component getLineOptionText(int line) {
return Lang.translate("data_target.single_line");
}
protected abstract int getWidth(DataGathererContext context);
}

View file

@ -0,0 +1,185 @@
package com.simibubi.create.content.logistics.block.display;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import javax.annotation.Nullable;
import com.simibubi.create.Create;
import com.simibubi.create.content.logistics.block.display.source.DeathCounterDataSource;
import com.simibubi.create.content.logistics.block.display.source.DisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ScoreboardDisplaySource;
import com.simibubi.create.content.logistics.block.display.target.DisplayTarget;
import com.simibubi.create.content.logistics.block.display.target.LecternDisplayTarget;
import com.simibubi.create.content.logistics.block.display.target.SignDisplayTarget;
import com.tterrag.registrate.util.nullness.NonNullConsumer;
import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
public class AllDisplayBehaviours {
public static final HashMap<ResourceLocation, DisplayBehaviour>
GATHERER_BEHAVIOURS = new HashMap<>();
public static final HashMap<ResourceLocation, List<DisplaySource>>
SOURCES_BY_BLOCK = new HashMap<>(), SOURCES_BY_TILE = new HashMap<>();
public static final HashMap<ResourceLocation, DisplayTarget>
TARGETS_BY_BLOCK = new HashMap<>(), TARGETS_BY_TILE = new HashMap<>();
public static DisplayBehaviour register(ResourceLocation id, DisplayBehaviour behaviour) {
if (GATHERER_BEHAVIOURS.containsKey(id))
Create.LOGGER.warn("Data Gatherer Behaviour for " + id.toString() + " was overridden");
behaviour.id = id;
GATHERER_BEHAVIOURS.put(id, behaviour);
return behaviour;
}
public static void assign(DisplayBehaviour behaviour, Block block) {
assignBlock(behaviour, block.getRegistryName());
}
public static void assign(DisplayBehaviour behaviour, BlockEntityType<?> teType) {
assignTileEntity(behaviour, teType.getRegistryName());
}
public static void assignBlock(DisplayBehaviour behaviour, ResourceLocation blockId) {
if (behaviour instanceof DisplaySource source)
SOURCES_BY_BLOCK.computeIfAbsent(blockId, r -> new ArrayList<>())
.add(source);
if (behaviour instanceof DisplayTarget target)
TARGETS_BY_BLOCK.put(blockId, target);
}
public static void assignTileEntity(DisplayBehaviour behaviour, ResourceLocation tileId) {
if (behaviour instanceof DisplaySource source)
SOURCES_BY_TILE.computeIfAbsent(tileId, r -> new ArrayList<>())
.add(source);
if (behaviour instanceof DisplayTarget target)
TARGETS_BY_TILE.put(tileId, target);
}
public static <B extends Block> NonNullConsumer<? super B> assignDataBehaviour(DisplayBehaviour behaviour,
String... suffix) {
return b -> {
ResourceLocation registryName = b.getRegistryName();
String idSuffix = behaviour instanceof DisplaySource ? "_source" : "_target";
if (suffix.length > 0)
idSuffix += "_" + suffix[0];
assignBlock(register(new ResourceLocation(registryName.getNamespace(), registryName.getPath() + idSuffix),
behaviour), registryName);
};
}
public static <B extends BlockEntityType<?>> NonNullConsumer<? super B> assignDataBehaviourTE(
DisplayBehaviour behaviour, String... suffix) {
return b -> {
ResourceLocation registryName = b.getRegistryName();
String idSuffix = behaviour instanceof DisplaySource ? "_source" : "_target";
if (suffix.length > 0)
idSuffix += "_" + suffix[0];
assignTileEntity(
register(new ResourceLocation(registryName.getNamespace(), registryName.getPath() + idSuffix),
behaviour),
registryName);
};
}
//
@Nullable
public static DisplaySource getSource(ResourceLocation resourceLocation) {
DisplayBehaviour available = GATHERER_BEHAVIOURS.getOrDefault(resourceLocation, null);
if (available instanceof DisplaySource source)
return source;
return null;
}
@Nullable
public static DisplayTarget getTarget(ResourceLocation resourceLocation) {
DisplayBehaviour available = GATHERER_BEHAVIOURS.getOrDefault(resourceLocation, null);
if (available instanceof DisplayTarget target)
return target;
return null;
}
//
@Nullable
public static List<DisplaySource> sourcesOf(LevelAccessor level, BlockPos pos) {
BlockState blockState = level.getBlockState(pos);
BlockEntity blockEntity = level.getBlockEntity(pos);
List<DisplaySource> sourcesOfBlock = sourcesOf(blockState);
List<DisplaySource> sourcesOfTE = blockEntity == null ? Collections.emptyList() : sourcesOf(blockEntity);
if (sourcesOfTE.isEmpty())
return sourcesOfBlock;
return sourcesOfTE;
}
@Nullable
public static DisplayTarget targetOf(LevelAccessor level, BlockPos pos) {
BlockState blockState = level.getBlockState(pos);
BlockEntity blockEntity = level.getBlockEntity(pos);
DisplayTarget targetOfBlock = targetOf(blockState);
DisplayTarget targetOfTE = blockEntity == null ? null : targetOf(blockEntity);
if (targetOfTE == null)
return targetOfBlock;
return targetOfTE;
}
public static List<DisplaySource> sourcesOf(BlockState state) {
return sourcesOf(state.getBlock());
}
public static List<DisplaySource> sourcesOf(BlockEntity tileEntity) {
return SOURCES_BY_TILE.getOrDefault(tileEntity.getType()
.getRegistryName(), Collections.emptyList());
}
public static List<DisplaySource> sourcesOf(Block block) {
return SOURCES_BY_BLOCK.getOrDefault(block.getRegistryName(), Collections.emptyList());
}
@Nullable
public static DisplayTarget targetOf(BlockState state) {
return targetOf(state.getBlock());
}
@Nullable
public static DisplayTarget targetOf(BlockEntity tileEntity) {
return TARGETS_BY_TILE.get(tileEntity.getType()
.getRegistryName());
}
@Nullable
public static DisplayTarget targetOf(Block block) {
return TARGETS_BY_BLOCK.get(block.getRegistryName());
}
//
public static void register() {
assign(register(Create.asResource("sign_display_target"), new SignDisplayTarget()), BlockEntityType.SIGN);
assign(register(Create.asResource("lectern_display_target"), new LecternDisplayTarget()), BlockEntityType.LECTERN);
assign(register(Create.asResource("death_count_display_source"), new DeathCounterDataSource()),
Blocks.RESPAWN_ANCHOR);
assign(register(Create.asResource("scoreboard_display_source"), new ScoreboardDisplaySource()),
BlockEntityType.COMMAND_BLOCK);
}
}

View file

@ -0,0 +1,9 @@
package com.simibubi.create.content.logistics.block.display;
import net.minecraft.resources.ResourceLocation;
public abstract class DisplayBehaviour {
public ResourceLocation id;
}

View file

@ -1,4 +1,4 @@
package com.simibubi.create.content.logistics.block.data; package com.simibubi.create.content.logistics.block.display;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import java.util.function.Consumer; import java.util.function.Consumer;
@ -6,7 +6,7 @@ import java.util.function.Consumer;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllShapes; import com.simibubi.create.AllShapes;
import com.simibubi.create.AllTileEntities; import com.simibubi.create.AllTileEntities;
import com.simibubi.create.content.logistics.block.data.source.DataGathererSource; import com.simibubi.create.content.logistics.block.display.source.DisplaySource;
import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.block.ITE;
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.gui.ScreenOpener;
@ -38,11 +38,11 @@ import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.DistExecutor;
public class DataGathererBlock extends WrenchableDirectionalBlock implements ITE<DataGathererTileEntity> { public class DisplayLinkBlock extends WrenchableDirectionalBlock implements ITE<DisplayLinkTileEntity> {
public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
public DataGathererBlock(Properties p_i48415_1_) { public DisplayLinkBlock(Properties p_i48415_1_) {
super(p_i48415_1_); super(p_i48415_1_);
registerDefaultState(defaultBlockState().setValue(POWERED, false)); registerDefaultState(defaultBlockState().setValue(POWERED, false));
} }
@ -55,12 +55,12 @@ public class DataGathererBlock extends WrenchableDirectionalBlock implements ITE
} }
public static void notifyGatherers(LevelAccessor level, BlockPos pos) { public static void notifyGatherers(LevelAccessor level, BlockPos pos) {
forEachAttachedGatherer(level, pos, DataGathererTileEntity::updateGatheredData); forEachAttachedGatherer(level, pos, DisplayLinkTileEntity::updateGatheredData);
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T extends DataGathererSource> void sendToGatherers(LevelAccessor level, BlockPos pos, public static <T extends DisplaySource> void sendToGatherers(LevelAccessor level, BlockPos pos,
BiConsumer<DataGathererTileEntity, T> callback, Class<T> type) { BiConsumer<DisplayLinkTileEntity, T> callback, Class<T> type) {
forEachAttachedGatherer(level, pos, dgte -> { forEachAttachedGatherer(level, pos, dgte -> {
if (type.isInstance(dgte.activeSource)) if (type.isInstance(dgte.activeSource))
callback.accept(dgte, (T) dgte.activeSource); callback.accept(dgte, (T) dgte.activeSource);
@ -68,15 +68,15 @@ public class DataGathererBlock extends WrenchableDirectionalBlock implements ITE
} }
private static void forEachAttachedGatherer(LevelAccessor level, BlockPos pos, private static void forEachAttachedGatherer(LevelAccessor level, BlockPos pos,
Consumer<DataGathererTileEntity> callback) { Consumer<DisplayLinkTileEntity> callback) {
for (Direction d : Iterate.directions) { for (Direction d : Iterate.directions) {
BlockPos offsetPos = pos.relative(d); BlockPos offsetPos = pos.relative(d);
BlockState blockState = level.getBlockState(offsetPos); BlockState blockState = level.getBlockState(offsetPos);
if (!AllBlocks.DATA_GATHERER.has(blockState)) if (!AllBlocks.DISPLAY_LINK.has(blockState))
continue; continue;
BlockEntity blockEntity = level.getBlockEntity(offsetPos); BlockEntity blockEntity = level.getBlockEntity(offsetPos);
if (!(blockEntity instanceof DataGathererTileEntity dgte)) if (!(blockEntity instanceof DisplayLinkTileEntity dgte))
continue; continue;
if (dgte.activeSource == null) if (dgte.activeSource == null)
continue; continue;
@ -97,7 +97,7 @@ public class DataGathererBlock extends WrenchableDirectionalBlock implements ITE
if (previouslyPowered != powered) { if (previouslyPowered != powered) {
worldIn.setBlock(pos, state.cycle(POWERED), 2); worldIn.setBlock(pos, state.cycle(POWERED), 2);
if (!powered) if (!powered)
withTileEntityDo(worldIn, pos, DataGathererTileEntity::onNoLongerPowered); withTileEntityDo(worldIn, pos, DisplayLinkTileEntity::onNoLongerPowered);
} }
} }
@ -132,14 +132,14 @@ public class DataGathererBlock extends WrenchableDirectionalBlock implements ITE
} }
@OnlyIn(value = Dist.CLIENT) @OnlyIn(value = Dist.CLIENT)
protected void displayScreen(DataGathererTileEntity te, Player player) { protected void displayScreen(DisplayLinkTileEntity te, Player player) {
if (!(player instanceof LocalPlayer)) if (!(player instanceof LocalPlayer))
return; return;
if (te.targetOffset.equals(BlockPos.ZERO)) { if (te.targetOffset.equals(BlockPos.ZERO)) {
player.displayClientMessage(Lang.translate("data_gatherer.invalid"), true); player.displayClientMessage(Lang.translate("display_link.invalid"), true);
return; return;
} }
ScreenOpener.open(new DataGathererScreen(te)); ScreenOpener.open(new DisplayLinkScreen(te));
} }
@Override @Override
@ -153,13 +153,13 @@ public class DataGathererBlock extends WrenchableDirectionalBlock implements ITE
} }
@Override @Override
public Class<DataGathererTileEntity> getTileEntityClass() { public Class<DisplayLinkTileEntity> getTileEntityClass() {
return DataGathererTileEntity.class; return DisplayLinkTileEntity.class;
} }
@Override @Override
public BlockEntityType<? extends DataGathererTileEntity> getTileEntityType() { public BlockEntityType<? extends DisplayLinkTileEntity> getTileEntityType() {
return AllTileEntities.DATA_GATHERER.get(); return AllTileEntities.DISPLAY_LINK.get();
} }
} }

View file

@ -1,8 +1,8 @@
package com.simibubi.create.content.logistics.block.data; package com.simibubi.create.content.logistics.block.display;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.CreateClient; import com.simibubi.create.CreateClient;
import com.simibubi.create.content.logistics.block.data.target.DataGathererTarget; import com.simibubi.create.content.logistics.block.display.target.DisplayTarget;
import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
@ -29,17 +29,17 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
@EventBusSubscriber @EventBusSubscriber
public class DataGathererBlockItem extends BlockItem { public class DisplayLinkBlockItem extends BlockItem {
public DataGathererBlockItem(Block pBlock, Properties pProperties) { public DisplayLinkBlockItem(Block pBlock, Properties pProperties) {
super(pBlock, pProperties); super(pBlock, pProperties);
} }
@SubscribeEvent @SubscribeEvent
public static void gathererItemAlwaysPlacesWhenUsed(PlayerInteractEvent.RightClickBlock event) { public static void gathererItemAlwaysPlacesWhenUsed(PlayerInteractEvent.RightClickBlock event) {
ItemStack usedItem = event.getItemStack(); ItemStack usedItem = event.getItemStack();
if (usedItem.getItem() instanceof DataGathererBlockItem) { if (usedItem.getItem() instanceof DisplayLinkBlockItem) {
if (AllBlocks.DATA_GATHERER.has(event.getWorld() if (AllBlocks.DISPLAY_LINK.has(event.getWorld()
.getBlockState(event.getPos()))) .getBlockState(event.getPos())))
return; return;
event.setUseBlock(Result.DENY); event.setUseBlock(Result.DENY);
@ -60,7 +60,7 @@ public class DataGathererBlockItem extends BlockItem {
if (player.isSteppingCarefully() && stack.hasTag()) { if (player.isSteppingCarefully() && stack.hasTag()) {
if (level.isClientSide) if (level.isClientSide)
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
player.displayClientMessage(Lang.translate("data_gatherer.clear"), true); player.displayClientMessage(Lang.translate("display_link.clear"), true);
stack.setTag(null); stack.setTag(null);
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
} }
@ -70,7 +70,7 @@ public class DataGathererBlockItem extends BlockItem {
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
CompoundTag stackTag = stack.getOrCreateTag(); CompoundTag stackTag = stack.getOrCreateTag();
stackTag.put("SelectedPos", NbtUtils.writeBlockPos(pos)); stackTag.put("SelectedPos", NbtUtils.writeBlockPos(pos));
player.displayClientMessage(Lang.translate("data_gatherer.set"), true); player.displayClientMessage(Lang.translate("display_link.set"), true);
stack.setTag(stackTag); stack.setTag(stackTag);
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
} }
@ -82,8 +82,8 @@ public class DataGathererBlockItem extends BlockItem {
BlockPos placedPos = pos.relative(pContext.getClickedFace(), state.getMaterial() BlockPos placedPos = pos.relative(pContext.getClickedFace(), state.getMaterial()
.isReplaceable() ? 0 : 1); .isReplaceable() ? 0 : 1);
if (!selectedPos.closerThan(placedPos, AllConfigs.SERVER.logistics.dataGathererRange.get())) { if (!selectedPos.closerThan(placedPos, AllConfigs.SERVER.logistics.displayLinkRange.get())) {
player.displayClientMessage(Lang.translate("data_gatherer.too_far") player.displayClientMessage(Lang.translate("display_link.too_far")
.withStyle(ChatFormatting.RED), true); .withStyle(ChatFormatting.RED), true);
return InteractionResult.FAIL; return InteractionResult.FAIL;
} }
@ -98,7 +98,7 @@ public class DataGathererBlockItem extends BlockItem {
ItemStack itemInHand = player.getItemInHand(pContext.getHand()); ItemStack itemInHand = player.getItemInHand(pContext.getHand());
if (!itemInHand.isEmpty()) if (!itemInHand.isEmpty())
itemInHand.setTag(null); itemInHand.setTag(null);
player.displayClientMessage(Lang.translate("data_gatherer.success") player.displayClientMessage(Lang.translate("display_link.success")
.withStyle(ChatFormatting.GREEN), true); .withStyle(ChatFormatting.GREEN), true);
return useOn; return useOn;
} }
@ -112,7 +112,7 @@ public class DataGathererBlockItem extends BlockItem {
if (player == null) if (player == null)
return; return;
ItemStack heldItemMainhand = player.getMainHandItem(); ItemStack heldItemMainhand = player.getMainHandItem();
if (!(heldItemMainhand.getItem() instanceof DataGathererBlockItem)) if (!(heldItemMainhand.getItem() instanceof DisplayLinkBlockItem))
return; return;
if (!heldItemMainhand.hasTag()) if (!heldItemMainhand.hasTag())
return; return;
@ -135,7 +135,7 @@ public class DataGathererBlockItem extends BlockItem {
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
private static AABB getBounds(BlockPos pos) { private static AABB getBounds(BlockPos pos) {
Level world = Minecraft.getInstance().level; Level world = Minecraft.getInstance().level;
DataGathererTarget target = AllDataGathererBehaviours.targetOf(world, pos); DisplayTarget target = AllDisplayBehaviours.targetOf(world, pos);
if (target != null) if (target != null)
return target.getMultiblockBounds(world, pos); return target.getMultiblockBounds(world, pos);

View file

@ -1,6 +1,6 @@
package com.simibubi.create.content.logistics.block.data; package com.simibubi.create.content.logistics.block.display;
import com.simibubi.create.content.logistics.block.data.source.DataGathererSource; import com.simibubi.create.content.logistics.block.display.source.DisplaySource;
import com.simibubi.create.foundation.networking.TileEntityConfigurationPacket; import com.simibubi.create.foundation.networking.TileEntityConfigurationPacket;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -8,18 +8,18 @@ import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
public class DataGathererConfigurationPacket extends TileEntityConfigurationPacket<DataGathererTileEntity> { public class DisplayLinkConfigurationPacket extends TileEntityConfigurationPacket<DisplayLinkTileEntity> {
private CompoundTag configData; private CompoundTag configData;
private int targetLine; private int targetLine;
public DataGathererConfigurationPacket(BlockPos pos, CompoundTag configData, int targetLine) { public DisplayLinkConfigurationPacket(BlockPos pos, CompoundTag configData, int targetLine) {
super(pos); super(pos);
this.configData = configData; this.configData = configData;
this.targetLine = targetLine; this.targetLine = targetLine;
} }
public DataGathererConfigurationPacket(FriendlyByteBuf buffer) { public DisplayLinkConfigurationPacket(FriendlyByteBuf buffer) {
super(buffer); super(buffer);
} }
@ -36,7 +36,7 @@ public class DataGathererConfigurationPacket extends TileEntityConfigurationPack
} }
@Override @Override
protected void applySettings(DataGathererTileEntity te) { protected void applySettings(DisplayLinkTileEntity te) {
te.targetLine = targetLine; te.targetLine = targetLine;
if (!configData.contains("Id")) { if (!configData.contains("Id")) {
@ -45,7 +45,7 @@ public class DataGathererConfigurationPacket extends TileEntityConfigurationPack
} }
ResourceLocation id = new ResourceLocation(configData.getString("Id")); ResourceLocation id = new ResourceLocation(configData.getString("Id"));
DataGathererSource source = AllDataGathererBehaviours.getSource(id); DisplaySource source = AllDisplayBehaviours.getSource(id);
if (source == null) { if (source == null) {
te.notifyUpdate(); te.notifyUpdate();
return; return;

View file

@ -1,18 +1,18 @@
package com.simibubi.create.content.logistics.block.data; package com.simibubi.create.content.logistics.block.display;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
public class DataGathererContext { public class DisplayLinkContext {
private LevelAccessor level; private LevelAccessor level;
private DataGathererTileEntity te; private DisplayLinkTileEntity te;
public Object flapDisplayContext; public Object flapDisplayContext;
public DataGathererContext(LevelAccessor level, DataGathererTileEntity te) { public DisplayLinkContext(LevelAccessor level, DisplayLinkTileEntity te) {
this.level = level; this.level = level;
this.te = te; this.te = te;
} }
@ -21,7 +21,7 @@ public class DataGathererContext {
return level; return level;
} }
public DataGathererTileEntity te() { public DisplayLinkTileEntity te() {
return te; return te;
} }

View file

@ -1,4 +1,4 @@
package com.simibubi.create.content.logistics.block.data; package com.simibubi.create.content.logistics.block.display;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
@ -16,12 +16,12 @@ import net.minecraft.core.Direction;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
public class DataGathererRenderer extends SafeTileEntityRenderer<DataGathererTileEntity> { public class DisplayLinkRenderer extends SafeTileEntityRenderer<DisplayLinkTileEntity> {
public DataGathererRenderer(BlockEntityRendererProvider.Context context) {} public DisplayLinkRenderer(BlockEntityRendererProvider.Context context) {}
@Override @Override
protected void renderSafe(DataGathererTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, protected void renderSafe(DisplayLinkTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer,
int light, int overlay) { int light, int overlay) {
float glow = te.glow.getValue(partialTicks); float glow = te.glow.getValue(partialTicks);
if (glow < .125f) if (glow < .125f)
@ -35,7 +35,7 @@ public class DataGathererRenderer extends SafeTileEntityRenderer<DataGathererTil
BlockState blockState = te.getBlockState(); BlockState blockState = te.getBlockState();
TransformStack msr = TransformStack.cast(ms); TransformStack msr = TransformStack.cast(ms);
Direction face = blockState.getOptionalValue(DataGathererBlock.FACING) Direction face = blockState.getOptionalValue(DisplayLinkBlock.FACING)
.orElse(Direction.UP); .orElse(Direction.UP);
if (face.getAxis() if (face.getAxis()
@ -49,11 +49,11 @@ public class DataGathererRenderer extends SafeTileEntityRenderer<DataGathererTil
.rotateX(-AngleHelper.verticalAngle(face) - 90) .rotateX(-AngleHelper.verticalAngle(face) - 90)
.unCentre(); .unCentre();
CachedBufferer.partial(AllBlockPartials.DATA_GATHERER_TUBE, blockState) CachedBufferer.partial(AllBlockPartials.DISPLAY_LINK_TUBE, blockState)
.light(LightTexture.FULL_BRIGHT) .light(LightTexture.FULL_BRIGHT)
.renderInto(ms, buffer.getBuffer(RenderType.translucent())); .renderInto(ms, buffer.getBuffer(RenderType.translucent()));
CachedBufferer.partial(AllBlockPartials.DATA_GATHERER_GLOW, blockState) CachedBufferer.partial(AllBlockPartials.DISPLAY_LINK_GLOW, blockState)
.light(LightTexture.FULL_BRIGHT) .light(LightTexture.FULL_BRIGHT)
.color(color, color, color, 255) .color(color, color, color, 255)
.disableDiffuseMult() .disableDiffuseMult()

View file

@ -1,4 +1,4 @@
package com.simibubi.create.content.logistics.block.data; package com.simibubi.create.content.logistics.block.display;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
@ -9,10 +9,10 @@ import java.util.function.BiConsumer;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.content.logistics.block.data.source.DataGathererSource; import com.simibubi.create.content.logistics.block.display.source.DisplaySource;
import com.simibubi.create.content.logistics.block.data.source.SingleLineDataSource; import com.simibubi.create.content.logistics.block.display.source.SingleLineDisplaySource;
import com.simibubi.create.content.logistics.block.data.target.DataGathererTarget; import com.simibubi.create.content.logistics.block.display.target.DisplayTarget;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.foundation.gui.AbstractSimiScreen; import com.simibubi.create.foundation.gui.AbstractSimiScreen;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.AllIcons;
@ -43,20 +43,20 @@ import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
public class DataGathererScreen extends AbstractSimiScreen { public class DisplayLinkScreen extends AbstractSimiScreen {
private static final ItemStack FALLBACK = new ItemStack(Items.BARRIER); private static final ItemStack FALLBACK = new ItemStack(Items.BARRIER);
private AllGuiTextures background; private AllGuiTextures background;
private DataGathererTileEntity te; private DisplayLinkTileEntity te;
private IconButton confirmButton; private IconButton confirmButton;
BlockState sourceState; BlockState sourceState;
BlockState targetState; BlockState targetState;
ItemStack sourceIcon = FALLBACK; ItemStack sourceIcon = FALLBACK;
ItemStack targetIcon = FALLBACK; ItemStack targetIcon = FALLBACK;
List<DataGathererSource> sources; List<DisplaySource> sources;
DataGathererTarget target; DisplayTarget target;
ScrollInput sourceTypeSelector; ScrollInput sourceTypeSelector;
Label sourceTypeLabel; Label sourceTypeLabel;
@ -65,7 +65,7 @@ public class DataGathererScreen extends AbstractSimiScreen {
Couple<Set<Pair<AbstractWidget, String>>> configWidgets; Couple<Set<Pair<AbstractWidget, String>>> configWidgets;
public DataGathererScreen(DataGathererTileEntity te) { public DisplayLinkScreen(DisplayLinkTileEntity te) {
this.background = AllGuiTextures.DATA_GATHERER; this.background = AllGuiTextures.DATA_GATHERER;
this.te = te; this.te = te;
sources = Collections.emptyList(); sources = Collections.emptyList();
@ -116,8 +116,8 @@ public class DataGathererScreen extends AbstractSimiScreen {
asItem = targetBlock.asItem(); asItem = targetBlock.asItem();
targetIcon = asItem == null || asItem == Items.AIR ? FALLBACK : new ItemStack(asItem); targetIcon = asItem == null || asItem == Items.AIR ? FALLBACK : new ItemStack(asItem);
sources = AllDataGathererBehaviours.sourcesOf(minecraft.level, te.getSourcePosition()); sources = AllDisplayBehaviours.sourcesOf(minecraft.level, te.getSourcePosition());
target = AllDataGathererBehaviours.targetOf(minecraft.level, te.getTargetPosition()); target = AllDisplayBehaviours.targetOf(minecraft.level, te.getTargetPosition());
removeWidget(targetLineSelector); removeWidget(targetLineSelector);
removeWidget(targetLineLabel); removeWidget(targetLineLabel);
@ -130,7 +130,7 @@ public class DataGathererScreen extends AbstractSimiScreen {
sourceTypeSelector = null; sourceTypeSelector = null;
if (target != null) { if (target != null) {
DataTargetStats stats = target.provideStats(new DataGathererContext(minecraft.level, te)); DisplayTargetStats stats = target.provideStats(new DisplayLinkContext(minecraft.level, te));
int rows = stats.maxRows(); int rows = stats.maxRows();
int startIndex = Math.min(te.targetLine, rows); int startIndex = Math.min(te.targetLine, rows);
@ -139,7 +139,7 @@ public class DataGathererScreen extends AbstractSimiScreen {
if (rows > 1) { if (rows > 1) {
targetLineSelector = new ScrollInput(x + 61, y + 105, 135, 16).withRange(0, rows) targetLineSelector = new ScrollInput(x + 61, y + 105, 135, 16).withRange(0, rows)
.titled(Lang.translate("data_gatherer.display_on")) .titled(Lang.translate("display_link.display_on"))
.inverted() .inverted()
.calling(i -> targetLineLabel.text = target.getLineOptionText(i)) .calling(i -> targetLineLabel.text = target.getLineOptionText(i))
.setState(startIndex); .setState(startIndex);
@ -158,11 +158,11 @@ public class DataGathererScreen extends AbstractSimiScreen {
if (sources.size() > 1) { if (sources.size() > 1) {
List<Component> options = sources.stream() List<Component> options = sources.stream()
.map(DataGathererSource::getName) .map(DisplaySource::getName)
.toList(); .toList();
sourceTypeSelector = new SelectionScrollInput(x + 61, y + 26, 135, 16).forOptions(options) sourceTypeSelector = new SelectionScrollInput(x + 61, y + 26, 135, 16).forOptions(options)
.writingTo(sourceTypeLabel) .writingTo(sourceTypeLabel)
.titled(Lang.translate("data_gatherer.information_type")) .titled(Lang.translate("display_link.information_type"))
.calling(this::initGathererSourceSubOptions) .calling(this::initGathererSourceSubOptions)
.setState(startIndex); .setState(startIndex);
sourceTypeSelector.onChanged(); sourceTypeSelector.onChanged();
@ -176,20 +176,20 @@ public class DataGathererScreen extends AbstractSimiScreen {
} }
private void initGathererSourceSubOptions(int i) { private void initGathererSourceSubOptions(int i) {
DataGathererSource source = sources.get(i); DisplaySource source = sources.get(i);
source.populateData(new DataGathererContext(te.getLevel(), te)); source.populateData(new DisplayLinkContext(te.getLevel(), te));
if (targetLineSelector != null) if (targetLineSelector != null)
targetLineSelector targetLineSelector
.titled(source instanceof SingleLineDataSource ? Lang.translate("data_gatherer.display_on") .titled(source instanceof SingleLineDisplaySource ? Lang.translate("display_link.display_on")
: Lang.translate("data_gatherer.display_on_multiline")); : Lang.translate("display_link.display_on_multiline"));
configWidgets.forEach(s -> { configWidgets.forEach(s -> {
s.forEach(p -> removeWidget(p.getFirst())); s.forEach(p -> removeWidget(p.getFirst()));
s.clear(); s.clear();
}); });
DataGathererContext context = new DataGathererContext(minecraft.level, te); DisplayLinkContext context = new DisplayLinkContext(minecraft.level, te);
configWidgets.forEachWithContext((s, first) -> source.initConfigurationWidgets(context, configWidgets.forEachWithContext((s, first) -> source.initConfigurationWidgets(context,
new LineBuilder(s, guiLeft + 60, guiTop + (first ? 51 : 72)), first)); new LineBuilder(s, guiLeft + 60, guiTop + (first ? 51 : 72)), first));
@ -285,7 +285,7 @@ public class DataGathererScreen extends AbstractSimiScreen {
configWidgets.forEach(s -> s.forEach(p -> saveValue(sourceData, p))); configWidgets.forEach(s -> s.forEach(p -> saveValue(sourceData, p)));
} }
AllPackets.channel.sendToServer(new DataGathererConfigurationPacket(te.getBlockPos(), sourceData, AllPackets.channel.sendToServer(new DisplayLinkConfigurationPacket(te.getBlockPos(), sourceData,
targetLineSelector == null ? 0 : targetLineSelector.getState())); targetLineSelector == null ? 0 : targetLineSelector.getState()));
} }
@ -295,13 +295,13 @@ public class DataGathererScreen extends AbstractSimiScreen {
int y = guiTop; int y = guiTop;
background.render(ms, x, y, this); background.render(ms, x, y, this);
MutableComponent header = Lang.translate("data_gatherer.title"); MutableComponent header = Lang.translate("display_link.title");
font.draw(ms, header, x + background.width / 2 - font.width(header) / 2, y + 4, 0x442000); font.draw(ms, header, x + background.width / 2 - font.width(header) / 2, y + 4, 0x442000);
if (sources.isEmpty()) if (sources.isEmpty())
font.drawShadow(ms, Lang.translate("data_gatherer.no_source"), x + 65, y + 30, 0xD3D3D3); font.drawShadow(ms, Lang.translate("display_link.no_source"), x + 65, y + 30, 0xD3D3D3);
if (target == null) if (target == null)
font.drawShadow(ms, Lang.translate("data_gatherer.no_target"), x + 65, y + 109, 0xD3D3D3); font.drawShadow(ms, Lang.translate("display_link.no_target"), x + 65, y + 109, 0xD3D3D3);
if (!sourceIcon.isEmpty()) if (!sourceIcon.isEmpty())
minecraft.getItemRenderer() minecraft.getItemRenderer()
@ -325,7 +325,7 @@ public class DataGathererScreen extends AbstractSimiScreen {
.rotateX(-22) .rotateX(-22)
.rotateY(63); .rotateY(63);
GuiGameElement.of(te.getBlockState() GuiGameElement.of(te.getBlockState()
.setValue(DataGathererBlock.FACING, Direction.UP)) .setValue(DisplayLinkBlock.FACING, Direction.UP))
.render(ms); .render(ms);
ms.popPose(); ms.popPose();
} }
@ -353,20 +353,20 @@ public class DataGathererScreen extends AbstractSimiScreen {
if (sourceState != null && mX >= 33 && mX < 53 && mY >= 24 && mY < 44) { if (sourceState != null && mX >= 33 && mX < 53 && mY >= 24 && mY < 44) {
renderComponentTooltip(ms, renderComponentTooltip(ms,
ImmutableList.of(Lang.translate("data_gatherer.reading_from"), sourceState.getBlock() ImmutableList.of(Lang.translate("display_link.reading_from"), sourceState.getBlock()
.getName() .getName()
.withStyle(s -> s.withColor(sources.isEmpty() ? 0xF68989 : 0xF2C16D)), .withStyle(s -> s.withColor(sources.isEmpty() ? 0xF68989 : 0xF2C16D)),
Lang.translate("data_gatherer.attached_side"), Lang.translate("data_gatherer.view_compatible") Lang.translate("display_link.attached_side"), Lang.translate("display_link.view_compatible")
.withStyle(ChatFormatting.GRAY)), .withStyle(ChatFormatting.GRAY)),
mouseX, mouseY); mouseX, mouseY);
} }
if (targetState != null && mX >= 33 && mX < 53 && mY >= 102 && mY < 122) { if (targetState != null && mX >= 33 && mX < 53 && mY >= 102 && mY < 122) {
renderComponentTooltip(ms, renderComponentTooltip(ms,
ImmutableList.of(Lang.translate("data_gatherer.writing_to"), targetState.getBlock() ImmutableList.of(Lang.translate("display_link.writing_to"), targetState.getBlock()
.getName() .getName()
.withStyle(s -> s.withColor(target == null ? 0xF68989 : 0xF2C16D)), .withStyle(s -> s.withColor(target == null ? 0xF68989 : 0xF2C16D)),
Lang.translate("data_gatherer.targeted_location"), Lang.translate("data_gatherer.view_compatible") Lang.translate("display_link.targeted_location"), Lang.translate("display_link.view_compatible")
.withStyle(ChatFormatting.GRAY)), .withStyle(ChatFormatting.GRAY)),
mouseX, mouseY); mouseX, mouseY);
} }

View file

@ -1,9 +1,9 @@
package com.simibubi.create.content.logistics.block.data; package com.simibubi.create.content.logistics.block.display;
import java.util.List; import java.util.List;
import com.simibubi.create.content.logistics.block.data.source.DataGathererSource; import com.simibubi.create.content.logistics.block.display.source.DisplaySource;
import com.simibubi.create.content.logistics.block.data.target.DataGathererTarget; import com.simibubi.create.content.logistics.block.display.target.DisplayTarget;
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.NBTHelper; import com.simibubi.create.foundation.utility.NBTHelper;
@ -18,14 +18,14 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
public class DataGathererTileEntity extends SmartTileEntity { public class DisplayLinkTileEntity extends SmartTileEntity {
protected BlockPos targetOffset; protected BlockPos targetOffset;
public DataGathererSource activeSource; public DisplaySource activeSource;
private CompoundTag sourceConfig; private CompoundTag sourceConfig;
public DataGathererTarget activeTarget; public DisplayTarget activeTarget;
public int targetLine; public int targetLine;
public LerpedFloat glow; public LerpedFloat glow;
@ -33,7 +33,7 @@ public class DataGathererTileEntity extends SmartTileEntity {
public int refreshTicks; public int refreshTicks;
public DataGathererTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) { public DisplayLinkTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state); super(type, pos, state);
targetOffset = BlockPos.ZERO; targetOffset = BlockPos.ZERO;
sourceConfig = new CompoundTag(); sourceConfig = new CompoundTag();
@ -62,7 +62,7 @@ public class DataGathererTileEntity extends SmartTileEntity {
public void tickSource() { public void tickSource() {
refreshTicks = 0; refreshTicks = 0;
if (getBlockState().getOptionalValue(DataGathererBlock.POWERED) if (getBlockState().getOptionalValue(DisplayLinkBlock.POWERED)
.orElse(true)) .orElse(true))
return; return;
if (!level.isClientSide) if (!level.isClientSide)
@ -73,7 +73,7 @@ public class DataGathererTileEntity extends SmartTileEntity {
if (activeSource == null) if (activeSource == null)
return; return;
refreshTicks = 0; refreshTicks = 0;
activeSource.onSignalReset(new DataGathererContext(level, this)); activeSource.onSignalReset(new DisplayLinkContext(level, this));
updateGatheredData(); updateGatheredData();
} }
@ -84,8 +84,8 @@ public class DataGathererTileEntity extends SmartTileEntity {
if (!level.isLoaded(targetPosition) || !level.isLoaded(sourcePosition)) if (!level.isLoaded(targetPosition) || !level.isLoaded(sourcePosition))
return; return;
DataGathererTarget target = AllDataGathererBehaviours.targetOf(level, targetPosition); DisplayTarget target = AllDisplayBehaviours.targetOf(level, targetPosition);
List<DataGathererSource> sources = AllDataGathererBehaviours.sourcesOf(level, sourcePosition); List<DisplaySource> sources = AllDisplayBehaviours.sourcesOf(level, sourcePosition);
boolean notify = false; boolean notify = false;
if (activeTarget != target) { if (activeTarget != target) {
@ -104,7 +104,7 @@ public class DataGathererTileEntity extends SmartTileEntity {
if (activeSource == null || activeTarget == null) if (activeSource == null || activeTarget == null)
return; return;
DataGathererContext context = new DataGathererContext(level, this); DisplayLinkContext context = new DisplayLinkContext(level, this);
activeSource.transferData(context, activeTarget, targetLine); activeSource.transferData(context, activeTarget, targetLine);
sendPulse = true; sendPulse = true;
sendData(); sendData();
@ -149,7 +149,7 @@ public class DataGathererTileEntity extends SmartTileEntity {
targetLine = tag.getInt("TargetLine"); targetLine = tag.getInt("TargetLine");
if (clientPacket && tag.contains("TargetType")) if (clientPacket && tag.contains("TargetType"))
activeTarget = AllDataGathererBehaviours.getTarget(new ResourceLocation(tag.getString("TargetType"))); activeTarget = AllDisplayBehaviours.getTarget(new ResourceLocation(tag.getString("TargetType")));
if (clientPacket && tag.contains("Pulse")) if (clientPacket && tag.contains("Pulse"))
glow.setValue(2); glow.setValue(2);
@ -157,7 +157,7 @@ public class DataGathererTileEntity extends SmartTileEntity {
return; return;
CompoundTag data = tag.getCompound("Source"); CompoundTag data = tag.getCompound("Source");
activeSource = AllDataGathererBehaviours.getSource(new ResourceLocation(data.getString("Id"))); activeSource = AllDisplayBehaviours.getSource(new ResourceLocation(data.getString("Id")));
sourceConfig = new CompoundTag(); sourceConfig = new CompoundTag();
if (activeSource != null) if (activeSource != null)
sourceConfig = data.copy(); sourceConfig = data.copy();
@ -180,7 +180,7 @@ public class DataGathererTileEntity extends SmartTileEntity {
} }
public Direction getDirection() { public Direction getDirection() {
return getBlockState().getOptionalValue(DataGathererBlock.FACING) return getBlockState().getOptionalValue(DisplayLinkBlock.FACING)
.orElse(Direction.UP) .orElse(Direction.UP)
.getOpposite(); .getOpposite();
} }

View file

@ -0,0 +1,53 @@
package com.simibubi.create.content.logistics.block.display.source;
import com.simibubi.create.content.logistics.block.display.DisplayLinkBlock;
import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.display.DisplayLinkTileEntity;
import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent;
public class AccumulatedItemCountDisplaySource extends NumericSingleLineDisplaySource {
@Override
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
return new TextComponent(String.valueOf(context.sourceConfig()
.getInt("Collected")));
}
public void itemReceived(DisplayLinkTileEntity te, int amount) {
if (te.getBlockState()
.getOptionalValue(DisplayLinkBlock.POWERED)
.orElse(true))
return;
int collected = te.getSourceConfig()
.getInt("Collected");
te.getSourceConfig()
.putInt("Collected", collected + amount);
te.updateGatheredData();
}
@Override
protected String getTranslationKey() {
return "accumulate_items";
}
@Override
public int getPassiveRefreshTicks() {
return 200;
}
@Override
public void onSignalReset(DisplayLinkContext context) {
context.sourceConfig()
.remove("Collected");
}
@Override
protected boolean allowsLabeling(DisplayLinkContext context) {
return true;
}
}

View file

@ -1,4 +1,4 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
@ -6,7 +6,7 @@ import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.stats.Stats; import net.minecraft.stats.Stats;
public class DeathCounterDataSource extends StatTrackingDataSource { public class DeathCounterDataSource extends StatTrackingDisplaySource {
@Override @Override
protected int updatedScoreOf(ServerPlayer player) { protected int updatedScoreOf(ServerPlayer player) {
@ -26,7 +26,7 @@ public class DeathCounterDataSource extends StatTrackingDataSource {
@Override @Override
protected Component getObjectiveDisplayName() { protected Component getObjectiveDisplayName() {
return Lang.translate("data_source.scoreboard.objective.deaths"); return Lang.translate("display_source.scoreboard.objective.deaths");
} }
} }

View file

@ -1,15 +1,15 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.simibubi.create.content.logistics.block.data.DataGathererBehaviour; import com.simibubi.create.content.logistics.block.display.DisplayBehaviour;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.DataGathererScreen.LineBuilder; import com.simibubi.create.content.logistics.block.display.DisplayLinkScreen.LineBuilder;
import com.simibubi.create.content.logistics.block.data.target.DataGathererTarget; import com.simibubi.create.content.logistics.block.display.target.DisplayBoardTarget;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats; import com.simibubi.create.content.logistics.block.display.target.DisplayTarget;
import com.simibubi.create.content.logistics.block.data.target.FlapDisplayDataTarget; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity;
@ -20,18 +20,18 @@ import net.minecraft.network.chat.TranslatableComponent;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
public abstract class DataGathererSource extends DataGathererBehaviour { public abstract class DisplaySource extends DisplayBehaviour {
public static final List<MutableComponent> EMPTY = ImmutableList.of(new TextComponent("")); public static final List<MutableComponent> EMPTY = ImmutableList.of(new TextComponent(""));
public static final MutableComponent EMPTY_LINE = new TextComponent(""); public static final MutableComponent EMPTY_LINE = new TextComponent("");
public static final MutableComponent WHITESPACE = new TextComponent(" "); public static final MutableComponent WHITESPACE = new TextComponent(" ");
public abstract List<MutableComponent> provideText(DataGathererContext context, DataTargetStats stats); public abstract List<MutableComponent> provideText(DisplayLinkContext context, DisplayTargetStats stats);
public void transferData(DataGathererContext context, DataGathererTarget activeTarget, int line) { public void transferData(DisplayLinkContext context, DisplayTarget activeTarget, int line) {
DataTargetStats stats = activeTarget.provideStats(context); DisplayTargetStats stats = activeTarget.provideStats(context);
if (activeTarget instanceof FlapDisplayDataTarget fddt) { if (activeTarget instanceof DisplayBoardTarget fddt) {
List<List<MutableComponent>> flapDisplayText = provideFlapDisplayText(context, stats); List<List<MutableComponent>> flapDisplayText = provideFlapDisplayText(context, stats);
fddt.acceptFlapText(line, flapDisplayText, context); fddt.acceptFlapText(line, flapDisplayText, context);
return; return;
@ -39,12 +39,11 @@ public abstract class DataGathererSource extends DataGathererBehaviour {
List<MutableComponent> text = provideText(context, stats); List<MutableComponent> text = provideText(context, stats);
activeTarget.acceptText(line, text, context); activeTarget.acceptText(line, text, context);
} }
public void onSignalReset(DataGathererContext context) {}; public void onSignalReset(DisplayLinkContext context) {};
public void populateData(DataGathererContext context) {}; public void populateData(DisplayLinkContext context) {};
public int getPassiveRefreshTicks() { public int getPassiveRefreshTicks() {
return 100; return 100;
@ -55,22 +54,22 @@ public abstract class DataGathererSource extends DataGathererBehaviour {
} }
public Component getName() { public Component getName() {
return new TranslatableComponent(id.getNamespace() + ".data_source." + getTranslationKey()); return new TranslatableComponent(id.getNamespace() + ".display_source." + getTranslationKey());
} }
public void loadFlapDisplayLayout(DataGathererContext context, FlapDisplayTileEntity flapDisplay, public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayTileEntity flapDisplay,
FlapDisplayLayout layout) { FlapDisplayLayout layout) {
if (!layout.isLayout("Default")) if (!layout.isLayout("Default"))
layout.loadDefault(flapDisplay.getMaxCharCount()); layout.loadDefault(flapDisplay.getMaxCharCount());
} }
public List<List<MutableComponent>> provideFlapDisplayText(DataGathererContext context, DataTargetStats stats) { public List<List<MutableComponent>> provideFlapDisplayText(DisplayLinkContext context, DisplayTargetStats stats) {
return provideText(context, stats).stream() return provideText(context, stats).stream()
.map(Arrays::asList) .map(Arrays::asList)
.toList(); .toList();
} }
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void initConfigurationWidgets(DataGathererContext context, LineBuilder builder, boolean isFirstLine) {} public void initConfigurationWidgets(DisplayLinkContext context, LineBuilder builder, boolean isFirstLine) {}
} }

View file

@ -1,10 +1,10 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import static com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection.WIDE_MONOSPACE; import static com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection.WIDE_MONOSPACE;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.DataGathererScreen.LineBuilder; import com.simibubi.create.content.logistics.block.display.DisplayLinkScreen.LineBuilder;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchTileEntity; import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchTileEntity;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity;
@ -18,10 +18,10 @@ import net.minecraft.world.level.block.entity.SignBlockEntity;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
public class FillLevelDataSource extends NumericSingleLineDataSource { public class FillLevelDisplaySource extends NumericSingleLineDisplaySource {
@Override @Override
protected MutableComponent provideLine(DataGathererContext context, DataTargetStats stats) { protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
BlockEntity te = context.getSourceTE(); BlockEntity te = context.getSourceTE();
if (!(te instanceof StockpileSwitchTileEntity sste)) if (!(te instanceof StockpileSwitchTileEntity sste))
return EMPTY_LINE; return EMPTY_LINE;
@ -56,7 +56,7 @@ public class FillLevelDataSource extends NumericSingleLineDataSource {
return new TextComponent(s.toString()); return new TextComponent(s.toString());
} }
private boolean usePercent(DataGathererContext context) { private boolean usePercent(DisplayLinkContext context) {
return context.sourceConfig() return context.sourceConfig()
.getInt("Mode") == 0; .getInt("Mode") == 0;
} }
@ -67,12 +67,12 @@ public class FillLevelDataSource extends NumericSingleLineDataSource {
} }
@Override @Override
protected String getFlapDisplayLayoutName(DataGathererContext context) { protected String getFlapDisplayLayoutName(DisplayLinkContext context) {
return usePercent(context) ? super.getFlapDisplayLayoutName(context) : "Progress"; return usePercent(context) ? super.getFlapDisplayLayoutName(context) : "Progress";
} }
@Override @Override
protected FlapDisplaySection createSectionForValue(DataGathererContext context, int size) { protected FlapDisplaySection createSectionForValue(DisplayLinkContext context, int size) {
return usePercent(context) ? super.createSectionForValue(context, size) return usePercent(context) ? super.createSectionForValue(context, size)
: new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "pixel", false, false).wideFlaps(); : new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "pixel", false, false).wideFlaps();
} }
@ -83,18 +83,18 @@ public class FillLevelDataSource extends NumericSingleLineDataSource {
@Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void initConfigurationWidgets(DataGathererContext context, LineBuilder builder, boolean isFirstLine) { public void initConfigurationWidgets(DisplayLinkContext context, LineBuilder builder, boolean isFirstLine) {
super.initConfigurationWidgets(context, builder, isFirstLine); super.initConfigurationWidgets(context, builder, isFirstLine);
if (isFirstLine) if (isFirstLine)
return; return;
builder.addSelectionScrollInput(0, 120, builder.addSelectionScrollInput(0, 120,
(si, l) -> si.forOptions(Lang.translatedOptions("data_source.fill_level", "percent", "progress_bar")) (si, l) -> si.forOptions(Lang.translatedOptions("display_source.fill_level", "percent", "progress_bar"))
.titled(Lang.translate("data_source.fill_level.display")), .titled(Lang.translate("display_source.fill_level.display")),
"Mode"); "Mode");
} }
@Override @Override
protected boolean allowsLabeling(DataGathererContext context) { protected boolean allowsLabeling(DisplayLinkContext context) {
return true; return true;
} }

View file

@ -1,7 +1,7 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.content.logistics.block.redstone.ContentObserverTileEntity; import com.simibubi.create.content.logistics.block.redstone.ContentObserverTileEntity;
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;
@ -12,10 +12,10 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
public class ItemCountDataSource extends NumericSingleLineDataSource { public class ItemCountDisplaySource extends NumericSingleLineDisplaySource {
@Override @Override
protected MutableComponent provideLine(DataGathererContext context, DataTargetStats stats) { protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
BlockEntity sourceTE = context.getSourceTE(); BlockEntity sourceTE = context.getSourceTE();
if (!(sourceTE instanceof ContentObserverTileEntity cote)) if (!(sourceTE instanceof ContentObserverTileEntity cote))
return ZERO; return ZERO;
@ -46,7 +46,7 @@ public class ItemCountDataSource extends NumericSingleLineDataSource {
} }
@Override @Override
protected boolean allowsLabeling(DataGathererContext context) { protected boolean allowsLabeling(DisplayLinkContext context) {
return true; return true;
} }

View file

@ -1,9 +1,8 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import java.util.ArrayList;
import java.util.stream.Stream; import java.util.stream.Stream;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.redstone.ContentObserverTileEntity; import com.simibubi.create.content.logistics.block.redstone.ContentObserverTileEntity;
import com.simibubi.create.foundation.item.CountedItemStackList; import com.simibubi.create.foundation.item.CountedItemStackList;
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
@ -14,10 +13,10 @@ import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
public class ItemListDataSource extends ValueListDataSource { public class ItemListDisplaySource extends ValueListDisplaySource {
@Override @Override
protected Stream<IntAttached<MutableComponent>> provideEntries(DataGathererContext context, int maxRows) { protected Stream<IntAttached<MutableComponent>> provideEntries(DisplayLinkContext context, int maxRows) {
BlockEntity sourceTE = context.getSourceTE(); BlockEntity sourceTE = context.getSourceTE();
if (!(sourceTE instanceof ContentObserverTileEntity cote)) if (!(sourceTE instanceof ContentObserverTileEntity cote))
return Stream.empty(); return Stream.empty();

View file

@ -1,10 +1,10 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import org.apache.commons.lang3.mutable.MutableObject; import org.apache.commons.lang3.mutable.MutableObject;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.DataGathererTileEntity; import com.simibubi.create.content.logistics.block.display.DisplayLinkTileEntity;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
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;
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult;
@ -14,11 +14,11 @@ import net.minecraft.core.Direction;
import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
public class ItemNameDataSource extends SingleLineDataSource { public class ItemNameDisplaySource extends SingleLineDisplaySource {
@Override @Override
protected MutableComponent provideLine(DataGathererContext context, DataTargetStats stats) { protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
DataGathererTileEntity gatherer = context.te(); DisplayLinkTileEntity gatherer = context.te();
Direction direction = gatherer.getDirection(); Direction direction = gatherer.getDirection();
MutableBlockPos pos = gatherer.getSourcePosition() MutableBlockPos pos = gatherer.getSourcePosition()
.mutable(); .mutable();
@ -53,12 +53,12 @@ public class ItemNameDataSource extends SingleLineDataSource {
} }
@Override @Override
protected boolean allowsLabeling(DataGathererContext context) { protected boolean allowsLabeling(DisplayLinkContext context) {
return true; return true;
} }
@Override @Override
protected String getFlapDisplayLayoutName(DataGathererContext context) { protected String getFlapDisplayLayoutName(DisplayLinkContext context) {
return "Number"; return "Number";
} }

View file

@ -1,11 +1,11 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
import com.simibubi.create.content.logistics.block.data.DataGathererBlock; import com.simibubi.create.content.logistics.block.display.DisplayLinkBlock;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.DataGathererScreen.LineBuilder; import com.simibubi.create.content.logistics.block.display.DisplayLinkScreen.LineBuilder;
import com.simibubi.create.content.logistics.block.data.DataGathererTileEntity; import com.simibubi.create.content.logistics.block.display.DisplayLinkTileEntity;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
@ -17,12 +17,12 @@ import net.minecraft.network.chat.TextComponent;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
public class ItemThoughputDataSource extends AccumulatedItemCountDataSource { public class ItemThoughputDisplaySource extends AccumulatedItemCountDisplaySource {
static final int POOL_SIZE = 10; static final int POOL_SIZE = 10;
@Override @Override
protected MutableComponent provideLine(DataGathererContext context, DataTargetStats stats) { protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
CompoundTag conf = context.sourceConfig(); CompoundTag conf = context.sourceConfig();
if (conf.contains("Inactive")) if (conf.contains("Inactive"))
return new TextComponent("0"); return new TextComponent("0");
@ -48,9 +48,9 @@ public class ItemThoughputDataSource extends AccumulatedItemCountDataSource {
return new TextComponent(IHaveGoggleInformation.format(rate)); return new TextComponent(IHaveGoggleInformation.format(rate));
} }
public void itemReceived(DataGathererTileEntity te, int amount) { public void itemReceived(DisplayLinkTileEntity te, int amount) {
if (te.getBlockState() if (te.getBlockState()
.getOptionalValue(DataGathererBlock.POWERED) .getOptionalValue(DisplayLinkBlock.POWERED)
.orElse(true)) .orElse(true))
return; return;
@ -101,14 +101,14 @@ public class ItemThoughputDataSource extends AccumulatedItemCountDataSource {
@Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void initConfigurationWidgets(DataGathererContext context, LineBuilder builder, boolean isFirstLine) { public void initConfigurationWidgets(DisplayLinkContext context, LineBuilder builder, boolean isFirstLine) {
super.initConfigurationWidgets(context, builder, isFirstLine); super.initConfigurationWidgets(context, builder, isFirstLine);
if (isFirstLine) if (isFirstLine)
return; return;
builder.addSelectionScrollInput(0, 80, (si, l) -> { builder.addSelectionScrollInput(0, 80, (si, l) -> {
si.forOptions(Lang.translatedOptions("data_source.item_throughput.interval", "second", "minute", "hour")) si.forOptions(Lang.translatedOptions("display_source.item_throughput.interval", "second", "minute", "hour"))
.titled(Lang.translate("data_source.item_throughput.interval")); .titled(Lang.translate("display_source.item_throughput.interval"));
}, "Interval"); }, "Interval");
} }

View file

@ -1,15 +1,15 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.content.logistics.block.data.target.NixieTubeDataTarget; import com.simibubi.create.content.logistics.block.display.target.NixieTubeDisplayTarget;
import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity; import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection;
import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
public class NixieTubeDataSource extends SingleLineDataSource { public class NixieTubeDisplaySource extends SingleLineDisplaySource {
@Override @Override
protected String getTranslationKey() { protected String getTranslationKey() {
@ -17,7 +17,7 @@ public class NixieTubeDataSource extends SingleLineDataSource {
} }
@Override @Override
protected MutableComponent provideLine(DataGathererContext context, DataTargetStats stats) { protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
BlockEntity sourceTE = context.getSourceTE(); BlockEntity sourceTE = context.getSourceTE();
if (!(sourceTE instanceof NixieTubeTileEntity nte)) if (!(sourceTE instanceof NixieTubeTileEntity nte))
return EMPTY_LINE; return EMPTY_LINE;
@ -35,25 +35,25 @@ public class NixieTubeDataSource extends SingleLineDataSource {
} }
@Override @Override
protected boolean allowsLabeling(DataGathererContext context) { protected boolean allowsLabeling(DisplayLinkContext context) {
return !(context.te().activeTarget instanceof NixieTubeDataTarget); return !(context.te().activeTarget instanceof NixieTubeDisplayTarget);
} }
@Override @Override
protected String getFlapDisplayLayoutName(DataGathererContext context) { protected String getFlapDisplayLayoutName(DisplayLinkContext context) {
if (isNumeric(context)) if (isNumeric(context))
return "Number"; return "Number";
return super.getFlapDisplayLayoutName(context); return super.getFlapDisplayLayoutName(context);
} }
@Override @Override
protected FlapDisplaySection createSectionForValue(DataGathererContext context, int size) { protected FlapDisplaySection createSectionForValue(DisplayLinkContext context, int size) {
if (isNumeric(context)) if (isNumeric(context))
return new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "numeric", false, false); return new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "numeric", false, false);
return super.createSectionForValue(context, size); return super.createSectionForValue(context, size);
} }
protected boolean isNumeric(DataGathererContext context) { protected boolean isNumeric(DisplayLinkContext context) {
return context.flapDisplayContext == Boolean.TRUE; return context.flapDisplayContext == Boolean.TRUE;
} }

View file

@ -0,0 +1,22 @@
package com.simibubi.create.content.logistics.block.display.source;
import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection;
import net.minecraft.network.chat.TextComponent;
public abstract class NumericSingleLineDisplaySource extends SingleLineDisplaySource {
protected static final TextComponent ZERO = new TextComponent("0");
@Override
protected String getFlapDisplayLayoutName(DisplayLinkContext context) {
return "Number";
}
@Override
protected FlapDisplaySection createSectionForValue(DisplayLinkContext context, int size) {
return new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "numeric", false, false);
}
}

View file

@ -1,11 +1,10 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import java.util.ArrayList;
import java.util.stream.Stream; import java.util.stream.Stream;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.DataGathererScreen.LineBuilder; import com.simibubi.create.content.logistics.block.display.DisplayLinkScreen.LineBuilder;
import com.simibubi.create.foundation.utility.IntAttached; import com.simibubi.create.foundation.utility.IntAttached;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
@ -16,10 +15,10 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.scores.Objective; import net.minecraft.world.scores.Objective;
public class ScoreboardDataSource extends ValueListDataSource { public class ScoreboardDisplaySource extends ValueListDisplaySource {
@Override @Override
protected Stream<IntAttached<MutableComponent>> provideEntries(DataGathererContext context, int maxRows) { protected Stream<IntAttached<MutableComponent>> provideEntries(DisplayLinkContext context, int maxRows) {
Level level = context.te() Level level = context.te()
.getLevel(); .getLevel();
if (!(level instanceof ServerLevel sLevel)) if (!(level instanceof ServerLevel sLevel))
@ -48,7 +47,7 @@ public class ScoreboardDataSource extends ValueListDataSource {
private ImmutableList<IntAttached<MutableComponent>> notFound(String objective) { private ImmutableList<IntAttached<MutableComponent>> notFound(String objective) {
return ImmutableList return ImmutableList
.of(IntAttached.with(404, Lang.translate("data_source.scoreboard.objective_not_found", objective))); .of(IntAttached.with(404, Lang.translate("display_source.scoreboard.objective_not_found", objective)));
} }
@Override @Override
@ -57,11 +56,11 @@ public class ScoreboardDataSource extends ValueListDataSource {
} }
@Override @Override
public void initConfigurationWidgets(DataGathererContext context, LineBuilder builder, boolean isFirstLine) { public void initConfigurationWidgets(DisplayLinkContext context, LineBuilder builder, boolean isFirstLine) {
if (isFirstLine) if (isFirstLine)
builder.addTextInput(0, 137, (e, t) -> { builder.addTextInput(0, 137, (e, t) -> {
e.setValue(""); e.setValue("");
t.withTooltip(ImmutableList.of(Lang.translate("data_source.scoreboard.objective") t.withTooltip(ImmutableList.of(Lang.translate("display_source.scoreboard.objective")
.withStyle(s -> s.withColor(0x5391E1)), .withStyle(s -> s.withColor(0x5391E1)),
Lang.translate("gui.schedule.lmb_edit") Lang.translate("gui.schedule.lmb_edit")
.withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC))); .withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC)));

View file

@ -1,11 +1,11 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import java.util.List; import java.util.List;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.DataGathererScreen.LineBuilder; import com.simibubi.create.content.logistics.block.display.DisplayLinkScreen.LineBuilder;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity;
@ -17,15 +17,15 @@ import net.minecraft.network.chat.TextComponent;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
public abstract class SingleLineDataSource extends DataGathererSource { public abstract class SingleLineDisplaySource extends DisplaySource {
protected abstract MutableComponent provideLine(DataGathererContext context, DataTargetStats stats); protected abstract MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats);
protected abstract boolean allowsLabeling(DataGathererContext context); protected abstract boolean allowsLabeling(DisplayLinkContext context);
@Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void initConfigurationWidgets(DataGathererContext context, LineBuilder builder, boolean isFirstLine) { public void initConfigurationWidgets(DisplayLinkContext context, LineBuilder builder, boolean isFirstLine) {
if (isFirstLine && allowsLabeling(context)) if (isFirstLine && allowsLabeling(context))
addLabelingTextBox(builder); addLabelingTextBox(builder);
} }
@ -34,7 +34,7 @@ public abstract class SingleLineDataSource extends DataGathererSource {
protected void addLabelingTextBox(LineBuilder builder) { protected void addLabelingTextBox(LineBuilder builder) {
builder.addTextInput(0, 137, (e, t) -> { builder.addTextInput(0, 137, (e, t) -> {
e.setValue(""); e.setValue("");
t.withTooltip(ImmutableList.of(Lang.translate("data_source.label") t.withTooltip(ImmutableList.of(Lang.translate("display_source.label")
.withStyle(s -> s.withColor(0x5391E1)), .withStyle(s -> s.withColor(0x5391E1)),
Lang.translate("gui.schedule.lmb_edit") Lang.translate("gui.schedule.lmb_edit")
.withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC))); .withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC)));
@ -42,7 +42,7 @@ public abstract class SingleLineDataSource extends DataGathererSource {
} }
@Override @Override
public List<MutableComponent> provideText(DataGathererContext context, DataTargetStats stats) { public List<MutableComponent> provideText(DisplayLinkContext context, DisplayTargetStats stats) {
MutableComponent line = provideLine(context, stats); MutableComponent line = provideLine(context, stats);
if (line == EMPTY_LINE) if (line == EMPTY_LINE)
return EMPTY; return EMPTY;
@ -58,7 +58,7 @@ public abstract class SingleLineDataSource extends DataGathererSource {
} }
@Override @Override
public List<List<MutableComponent>> provideFlapDisplayText(DataGathererContext context, DataTargetStats stats) { public List<List<MutableComponent>> provideFlapDisplayText(DisplayLinkContext context, DisplayTargetStats stats) {
if (allowsLabeling(context)) { if (allowsLabeling(context)) {
String label = context.sourceConfig() String label = context.sourceConfig()
@ -71,7 +71,7 @@ public abstract class SingleLineDataSource extends DataGathererSource {
} }
@Override @Override
public void loadFlapDisplayLayout(DataGathererContext context, FlapDisplayTileEntity flapDisplay, public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayTileEntity flapDisplay,
FlapDisplayLayout layout) { FlapDisplayLayout layout) {
String layoutKey = getFlapDisplayLayoutName(context); String layoutKey = getFlapDisplayLayoutName(context);
@ -107,11 +107,11 @@ public abstract class SingleLineDataSource extends DataGathererSource {
layout.configure(layoutName, ImmutableList.of(labelSection)); layout.configure(layoutName, ImmutableList.of(labelSection));
} }
protected String getFlapDisplayLayoutName(DataGathererContext context) { protected String getFlapDisplayLayoutName(DisplayLinkContext context) {
return "Default"; return "Default";
} }
protected FlapDisplaySection createSectionForValue(DataGathererContext context, int size) { protected FlapDisplaySection createSectionForValue(DisplayLinkContext context, int size) {
return new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "alphabet", false, false); return new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "alphabet", false, false);
} }

View file

@ -1,10 +1,9 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import java.util.ArrayList;
import java.util.stream.Stream; import java.util.stream.Stream;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.DataGathererScreen.LineBuilder; import com.simibubi.create.content.logistics.block.display.DisplayLinkScreen.LineBuilder;
import com.simibubi.create.foundation.utility.IntAttached; import com.simibubi.create.foundation.utility.IntAttached;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
@ -19,10 +18,10 @@ import net.minecraft.world.scores.criteria.ObjectiveCriteria.RenderType;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
public abstract class StatTrackingDataSource extends ScoreboardDataSource { public abstract class StatTrackingDisplaySource extends ScoreboardDisplaySource {
@Override @Override
protected Stream<IntAttached<MutableComponent>> provideEntries(DataGathererContext context, int maxRows) { protected Stream<IntAttached<MutableComponent>> provideEntries(DisplayLinkContext context, int maxRows) {
Level level = context.te() Level level = context.te()
.getLevel(); .getLevel();
if (!(level instanceof ServerLevel sLevel)) if (!(level instanceof ServerLevel sLevel))
@ -53,12 +52,12 @@ public abstract class StatTrackingDataSource extends ScoreboardDataSource {
} }
@Override @Override
protected boolean shortenNumbers(DataGathererContext context) { protected boolean shortenNumbers(DisplayLinkContext context) {
return false; return false;
} }
@Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void initConfigurationWidgets(DataGathererContext context, LineBuilder builder, boolean isFirstLine) {} public void initConfigurationWidgets(DisplayLinkContext context, LineBuilder builder, boolean isFirstLine) {}
} }

View file

@ -1,4 +1,4 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import static com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection.MONOSPACE; import static com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection.MONOSPACE;
@ -6,9 +6,9 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.DataGathererScreen.LineBuilder; import com.simibubi.create.content.logistics.block.display.DisplayLinkScreen.LineBuilder;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity;
@ -25,7 +25,7 @@ import net.minecraft.util.Mth;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
public class StationSummaryDataSource extends DataGathererSource { public class StationSummaryDisplaySource extends DisplaySource {
protected static final MutableComponent UNPREDICTABLE = new TextComponent(" ~ "); protected static final MutableComponent UNPREDICTABLE = new TextComponent(" ~ ");
@ -35,12 +35,12 @@ public class StationSummaryDataSource extends DataGathererSource {
ImmutableList.of(WHITESPACE, new TextComponent(" . "), WHITESPACE, WHITESPACE, WHITESPACE); ImmutableList.of(WHITESPACE, new TextComponent(" . "), WHITESPACE, WHITESPACE, WHITESPACE);
@Override @Override
public List<MutableComponent> provideText(DataGathererContext context, DataTargetStats stats) { public List<MutableComponent> provideText(DisplayLinkContext context, DisplayTargetStats stats) {
return EMPTY; return EMPTY;
} }
@Override @Override
public List<List<MutableComponent>> provideFlapDisplayText(DataGathererContext context, DataTargetStats stats) { public List<List<MutableComponent>> provideFlapDisplayText(DisplayLinkContext context, DisplayTargetStats stats) {
String filter = context.sourceConfig() String filter = context.sourceConfig()
.getString("Filter"); .getString("Filter");
boolean hasPlatform = filter.contains("*"); boolean hasPlatform = filter.contains("*");
@ -56,7 +56,7 @@ public class StationSummaryDataSource extends DataGathererSource {
} else if (prediction.ticks < 200) { } else if (prediction.ticks < 200) {
lines.add(WHITESPACE); lines.add(WHITESPACE);
lines.add(Lang.translate("data_source.station_summary.now")); lines.add(Lang.translate("display_source.station_summary.now"));
} else { } else {
int min = prediction.ticks / 1200; int min = prediction.ticks / 1200;
@ -67,8 +67,8 @@ public class StationSummaryDataSource extends DataGathererSource {
sec = 0; sec = 0;
} }
lines.add(min > 0 ? new TextComponent(String.valueOf(min)) : WHITESPACE); lines.add(min > 0 ? new TextComponent(String.valueOf(min)) : WHITESPACE);
lines.add(min > 0 ? Lang.translate("data_source.station_summary.minutes") lines.add(min > 0 ? Lang.translate("display_source.station_summary.minutes")
: Lang.translate("data_source.station_summary.seconds", sec)); : Lang.translate("display_source.station_summary.seconds", sec));
} }
lines.add(prediction.train.name.copy()); lines.add(prediction.train.name.copy());
@ -97,7 +97,7 @@ public class StationSummaryDataSource extends DataGathererSource {
} }
@Override @Override
public void loadFlapDisplayLayout(DataGathererContext context, FlapDisplayTileEntity flapDisplay, public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayTileEntity flapDisplay,
FlapDisplayLayout layout) { FlapDisplayLayout layout) {
CompoundTag conf = context.sourceConfig(); CompoundTag conf = context.sourceConfig();
int columnWidth = conf.getInt("NameColumn"); int columnWidth = conf.getInt("NameColumn");
@ -157,7 +157,7 @@ public class StationSummaryDataSource extends DataGathererSource {
} }
@Override @Override
public void populateData(DataGathererContext context) { public void populateData(DisplayLinkContext context) {
CompoundTag conf = context.sourceConfig(); CompoundTag conf = context.sourceConfig();
if (conf.contains("Filter")) if (conf.contains("Filter"))
return; return;
@ -171,11 +171,11 @@ public class StationSummaryDataSource extends DataGathererSource {
@Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void initConfigurationWidgets(DataGathererContext context, LineBuilder builder, boolean isFirstLine) { public void initConfigurationWidgets(DisplayLinkContext context, LineBuilder builder, boolean isFirstLine) {
if (isFirstLine) { if (isFirstLine) {
builder.addTextInput(0, 137, (e, t) -> { builder.addTextInput(0, 137, (e, t) -> {
e.setValue(""); e.setValue("");
t.withTooltip(ImmutableList.of(Lang.translate("data_source.station_summary.filter") t.withTooltip(ImmutableList.of(Lang.translate("display_source.station_summary.filter")
.withStyle(s -> s.withColor(0x5391E1)), .withStyle(s -> s.withColor(0x5391E1)),
Lang.translate("gui.schedule.lmb_edit") Lang.translate("gui.schedule.lmb_edit")
.withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC))); .withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC)));
@ -184,7 +184,7 @@ public class StationSummaryDataSource extends DataGathererSource {
} }
builder.addScrollInput(0, 32, (si, l) -> { builder.addScrollInput(0, 32, (si, l) -> {
si.titled(Lang.translate("data_source.station_summary.train_name_column")) si.titled(Lang.translate("display_source.station_summary.train_name_column"))
.withRange(0, 73) .withRange(0, 73)
.withShiftStep(12); .withShiftStep(12);
si.setState(50); si.setState(50);
@ -192,7 +192,7 @@ public class StationSummaryDataSource extends DataGathererSource {
}, "NameColumn"); }, "NameColumn");
builder.addScrollInput(36, 22, (si, l) -> { builder.addScrollInput(36, 22, (si, l) -> {
si.titled(Lang.translate("data_source.station_summary.platform_column")) si.titled(Lang.translate("display_source.station_summary.platform_column"))
.withRange(0, 16) .withRange(0, 16)
.withShiftStep(4); .withShiftStep(4);
si.setState(3); si.setState(3);

View file

@ -1,21 +1,21 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import com.simibubi.create.content.contraptions.components.clock.CuckooClockTileEntity; import com.simibubi.create.content.contraptions.components.clock.CuckooClockTileEntity;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection;
import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TextComponent;
public class StopWatchDataSource extends SingleLineDataSource { public class StopWatchDisplaySource extends SingleLineDisplaySource {
@Override @Override
protected MutableComponent provideLine(DataGathererContext context, DataTargetStats stats) { protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
if (!(context.getSourceTE()instanceof CuckooClockTileEntity ccte)) if (!(context.getSourceTE()instanceof CuckooClockTileEntity ccte))
return TimeOfDayDataSource.EMPTY_TIME; return TimeOfDayDisplaySource.EMPTY_TIME;
if (ccte.getSpeed() == 0) if (ccte.getSpeed() == 0)
return TimeOfDayDataSource.EMPTY_TIME; return TimeOfDayDisplaySource.EMPTY_TIME;
if (!context.sourceConfig() if (!context.sourceConfig()
.contains("StartTime")) .contains("StartTime"))
@ -39,7 +39,7 @@ public class StopWatchDataSource extends SingleLineDataSource {
} }
@Override @Override
public void onSignalReset(DataGathererContext context) { public void onSignalReset(DisplayLinkContext context) {
context.sourceConfig() context.sourceConfig()
.putLong("StartTime", context.te() .putLong("StartTime", context.te()
.getLevel() .getLevel()
@ -52,17 +52,17 @@ public class StopWatchDataSource extends SingleLineDataSource {
} }
@Override @Override
protected boolean allowsLabeling(DataGathererContext context) { protected boolean allowsLabeling(DisplayLinkContext context) {
return true; return true;
} }
@Override @Override
protected String getFlapDisplayLayoutName(DataGathererContext context) { protected String getFlapDisplayLayoutName(DisplayLinkContext context) {
return "Instant"; return "Instant";
} }
@Override @Override
protected FlapDisplaySection createSectionForValue(DataGathererContext context, int size) { protected FlapDisplaySection createSectionForValue(DisplayLinkContext context, int size) {
return new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "instant", false, false); return new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "instant", false, false);
} }

View file

@ -1,10 +1,10 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.components.clock.CuckooClockTileEntity; import com.simibubi.create.content.contraptions.components.clock.CuckooClockTileEntity;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.DataGathererScreen.LineBuilder; import com.simibubi.create.content.logistics.block.display.DisplayLinkScreen.LineBuilder;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
@ -14,12 +14,12 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
public class TimeOfDayDataSource extends SingleLineDataSource { public class TimeOfDayDisplaySource extends SingleLineDisplaySource {
public static final MutableComponent EMPTY_TIME = new TextComponent("--:--"); public static final MutableComponent EMPTY_TIME = new TextComponent("--:--");
@Override @Override
protected MutableComponent provideLine(DataGathererContext context, DataTargetStats stats) { protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
if (!(context.level()instanceof ServerLevel sLevel)) if (!(context.level()instanceof ServerLevel sLevel))
return EMPTY_TIME; return EMPTY_TIME;
if (!(context.getSourceTE() instanceof CuckooClockTileEntity ccte)) if (!(context.getSourceTE() instanceof CuckooClockTileEntity ccte))
@ -56,12 +56,12 @@ public class TimeOfDayDataSource extends SingleLineDataSource {
} }
@Override @Override
protected String getFlapDisplayLayoutName(DataGathererContext context) { protected String getFlapDisplayLayoutName(DisplayLinkContext context) {
return "Instant"; return "Instant";
} }
@Override @Override
protected FlapDisplaySection createSectionForValue(DataGathererContext context, int size) { protected FlapDisplaySection createSectionForValue(DisplayLinkContext context, int size) {
return new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "instant", false, false); return new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "instant", false, false);
} }
@ -72,19 +72,19 @@ public class TimeOfDayDataSource extends SingleLineDataSource {
@Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void initConfigurationWidgets(DataGathererContext context, LineBuilder builder, boolean isFirstLine) { public void initConfigurationWidgets(DisplayLinkContext context, LineBuilder builder, boolean isFirstLine) {
super.initConfigurationWidgets(context, builder, isFirstLine); super.initConfigurationWidgets(context, builder, isFirstLine);
if (isFirstLine) if (isFirstLine)
return; return;
builder.addSelectionScrollInput(0, 60, (si, l) -> { builder.addSelectionScrollInput(0, 60, (si, l) -> {
si.forOptions(Lang.translatedOptions("data_source.time", "12_hour", "24_hour")) si.forOptions(Lang.translatedOptions("display_source.time", "12_hour", "24_hour"))
.titled(Lang.translate("data_source.time.format")); .titled(Lang.translate("display_source.time.format"));
}, "Cycle"); }, "Cycle");
} }
@Override @Override
protected boolean allowsLabeling(DataGathererContext context) { protected boolean allowsLabeling(DisplayLinkContext context) {
return true; return true;
} }

View file

@ -1,4 +1,4 @@
package com.simibubi.create.content.logistics.block.data.source; package com.simibubi.create.content.logistics.block.display.source;
import static com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection.MONOSPACE; import static com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection.MONOSPACE;
@ -9,9 +9,9 @@ import java.util.stream.Stream;
import org.apache.commons.lang3.mutable.MutableInt; import org.apache.commons.lang3.mutable.MutableInt;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.DataGathererScreen.LineBuilder; import com.simibubi.create.content.logistics.block.display.DisplayLinkScreen.LineBuilder;
import com.simibubi.create.content.logistics.block.data.target.DataTargetStats; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity;
@ -25,14 +25,14 @@ import net.minecraft.world.level.block.entity.LecternBlockEntity;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
public abstract class ValueListDataSource extends DataGathererSource { public abstract class ValueListDisplaySource extends DisplaySource {
protected abstract Stream<IntAttached<MutableComponent>> provideEntries(DataGathererContext context, int maxRows); protected abstract Stream<IntAttached<MutableComponent>> provideEntries(DisplayLinkContext context, int maxRows);
protected abstract boolean valueFirst(); protected abstract boolean valueFirst();
@Override @Override
public List<MutableComponent> provideText(DataGathererContext context, DataTargetStats stats) { public List<MutableComponent> provideText(DisplayLinkContext context, DisplayTargetStats stats) {
boolean isBook = context.getTargetTE() instanceof LecternBlockEntity; boolean isBook = context.getTargetTE() instanceof LecternBlockEntity;
List<MutableComponent> list = provideEntries(context, stats.maxRows() * (isBook ? ENTRIES_PER_PAGE : 1)) List<MutableComponent> list = provideEntries(context, stats.maxRows() * (isBook ? ENTRIES_PER_PAGE : 1))
@ -77,7 +77,7 @@ public abstract class ValueListDataSource extends DataGathererSource {
} }
@Override @Override
public List<List<MutableComponent>> provideFlapDisplayText(DataGathererContext context, DataTargetStats stats) { public List<List<MutableComponent>> provideFlapDisplayText(DisplayLinkContext context, DisplayTargetStats stats) {
MutableInt highest = new MutableInt(0); MutableInt highest = new MutableInt(0);
context.flapDisplayContext = highest; context.flapDisplayContext = highest;
return provideEntries(context, stats.maxRows()).map(e -> { return provideEntries(context, stats.maxRows()).map(e -> {
@ -87,7 +87,7 @@ public abstract class ValueListDataSource extends DataGathererSource {
.toList(); .toList();
} }
protected List<MutableComponent> createComponentsFromEntry(DataGathererContext context, protected List<MutableComponent> createComponentsFromEntry(DisplayLinkContext context,
IntAttached<MutableComponent> entry) { IntAttached<MutableComponent> entry) {
int number = entry.getFirst(); int number = entry.getFirst();
MutableComponent name = entry.getSecond() MutableComponent name = entry.getSecond()
@ -104,7 +104,7 @@ public abstract class ValueListDataSource extends DataGathererSource {
} }
@Override @Override
public void loadFlapDisplayLayout(DataGathererContext context, FlapDisplayTileEntity flapDisplay, public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayTileEntity flapDisplay,
FlapDisplayLayout layout) { FlapDisplayLayout layout) {
boolean valueFirst = valueFirst(); boolean valueFirst = valueFirst();
@ -138,23 +138,23 @@ public abstract class ValueListDataSource extends DataGathererSource {
private Couple<MutableComponent> shorten(int number) { private Couple<MutableComponent> shorten(int number) {
if (number >= 1000000) if (number >= 1000000)
return Couple.create(new TextComponent(String.valueOf(number / 1000000)), return Couple.create(new TextComponent(String.valueOf(number / 1000000)),
Lang.translate("data_source.value_list.million") Lang.translate("display_source.value_list.million")
.append(WHITESPACE)); .append(WHITESPACE));
if (number >= 1000) if (number >= 1000)
return Couple.create(new TextComponent(String.valueOf(number / 1000)), return Couple.create(new TextComponent(String.valueOf(number / 1000)),
Lang.translate("data_source.value_list.thousand") Lang.translate("display_source.value_list.thousand")
.append(WHITESPACE)); .append(WHITESPACE));
return Couple.create(new TextComponent(String.valueOf(number)), WHITESPACE); return Couple.create(new TextComponent(String.valueOf(number)), WHITESPACE);
} }
protected boolean shortenNumbers(DataGathererContext context) { protected boolean shortenNumbers(DisplayLinkContext context) {
return context.sourceConfig() return context.sourceConfig()
.getInt("Format") == 0; .getInt("Format") == 0;
} }
@Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void initConfigurationWidgets(DataGathererContext context, LineBuilder builder, boolean isFirstLine) { public void initConfigurationWidgets(DisplayLinkContext context, LineBuilder builder, boolean isFirstLine) {
if (isFirstLine) if (isFirstLine)
addFullNumberConfig(builder); addFullNumberConfig(builder);
} }
@ -162,8 +162,8 @@ public abstract class ValueListDataSource extends DataGathererSource {
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
protected void addFullNumberConfig(LineBuilder builder) { protected void addFullNumberConfig(LineBuilder builder) {
builder.addSelectionScrollInput(0, 75, builder.addSelectionScrollInput(0, 75,
(si, l) -> si.forOptions(Lang.translatedOptions("data_source.value_list", "shortened", "full_number")) (si, l) -> si.forOptions(Lang.translatedOptions("display_source.value_list", "shortened", "full_number"))
.titled(Lang.translate("data_source.value_list.display")), .titled(Lang.translate("display_source.value_list.display")),
"Format"); "Format");
} }

View file

@ -1,10 +1,10 @@
package com.simibubi.create.content.logistics.block.data.target; package com.simibubi.create.content.logistics.block.display.target;
import java.util.List; import java.util.List;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.data.source.DataGathererSource; import com.simibubi.create.content.logistics.block.display.source.DisplaySource;
import com.simibubi.create.content.logistics.block.data.source.SingleLineDataSource; import com.simibubi.create.content.logistics.block.display.source.SingleLineDisplaySource;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity;
@ -17,19 +17,19 @@ import net.minecraft.world.phys.AABB;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
public class FlapDisplayDataTarget extends DataGathererTarget { public class DisplayBoardTarget extends DisplayTarget {
@Override @Override
public void acceptText(int line, List<MutableComponent> text, DataGathererContext context) {} public void acceptText(int line, List<MutableComponent> text, DisplayLinkContext context) {}
public void acceptFlapText(int line, List<List<MutableComponent>> text, DataGathererContext context) { public void acceptFlapText(int line, List<List<MutableComponent>> text, DisplayLinkContext context) {
FlapDisplayTileEntity controller = getController(context); FlapDisplayTileEntity controller = getController(context);
if (controller == null) if (controller == null)
return; return;
if (!controller.isSpeedRequirementFulfilled()) if (!controller.isSpeedRequirementFulfilled())
return; return;
DataGathererSource source = context.te().activeSource; DisplaySource source = context.te().activeSource;
List<FlapDisplayLayout> lines = controller.getLines(); List<FlapDisplayLayout> lines = controller.getLines();
for (int i = 0; i + line < lines.size(); i++) { for (int i = 0; i + line < lines.size(); i++) {
@ -41,7 +41,7 @@ public class FlapDisplayDataTarget extends DataGathererTarget {
FlapDisplayLayout layout = lines.get(i + line); FlapDisplayLayout layout = lines.get(i + line);
if (i >= text.size()) { if (i >= text.size()) {
if (source instanceof SingleLineDataSource) if (source instanceof SingleLineDisplaySource)
break; break;
controller.applyTextManually(i + line, null); controller.applyTextManually(i + line, null);
continue; continue;
@ -64,20 +64,20 @@ public class FlapDisplayDataTarget extends DataGathererTarget {
} }
@Override @Override
public boolean isReserved(int line, BlockEntity target, DataGathererContext context) { public boolean isReserved(int line, BlockEntity target, DisplayLinkContext context) {
return super.isReserved(line, target, context) return super.isReserved(line, target, context)
|| target instanceof FlapDisplayTileEntity fdte && fdte.manualLines.length > line && fdte.manualLines[line]; || target instanceof FlapDisplayTileEntity fdte && fdte.manualLines.length > line && fdte.manualLines[line];
} }
@Override @Override
public DataTargetStats provideStats(DataGathererContext context) { public DisplayTargetStats provideStats(DisplayLinkContext context) {
FlapDisplayTileEntity controller = getController(context); FlapDisplayTileEntity controller = getController(context);
if (controller == null) if (controller == null)
return new DataTargetStats(1, 1, this); return new DisplayTargetStats(1, 1, this);
return new DataTargetStats(controller.ySize * 2, controller.getMaxCharCount(), this); return new DisplayTargetStats(controller.ySize * 2, controller.getMaxCharCount(), this);
} }
private FlapDisplayTileEntity getController(DataGathererContext context) { private FlapDisplayTileEntity getController(DisplayLinkContext context) {
BlockEntity teIn = context.getTargetTE(); BlockEntity teIn = context.getTargetTE();
if (!(teIn instanceof FlapDisplayTileEntity te)) if (!(teIn instanceof FlapDisplayTileEntity te))
return null; return null;

View file

@ -1,10 +1,10 @@
package com.simibubi.create.content.logistics.block.data.target; package com.simibubi.create.content.logistics.block.display.target;
import java.util.List; import java.util.List;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.logistics.block.data.DataGathererBehaviour; import com.simibubi.create.content.logistics.block.display.DisplayBehaviour;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -16,11 +16,11 @@ import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraft.world.phys.shapes.VoxelShape;
public abstract class DataGathererTarget extends DataGathererBehaviour { public abstract class DisplayTarget extends DisplayBehaviour {
public abstract void acceptText(int line, List<MutableComponent> text, DataGathererContext context); public abstract void acceptText(int line, List<MutableComponent> text, DisplayLinkContext context);
public abstract DataTargetStats provideStats(DataGathererContext context); public abstract DisplayTargetStats provideStats(DisplayLinkContext context);
public AABB getMultiblockBounds(LevelAccessor level, BlockPos pos) { public AABB getMultiblockBounds(LevelAccessor level, BlockPos pos) {
VoxelShape shape = level.getBlockState(pos) VoxelShape shape = level.getBlockState(pos)
@ -32,24 +32,24 @@ public abstract class DataGathererTarget extends DataGathererBehaviour {
} }
public Component getLineOptionText(int line) { public Component getLineOptionText(int line) {
return Lang.translate("data_target.line", line + 1); return Lang.translate("display_target.line", line + 1);
} }
public static void reserve(int line, BlockEntity target, DataGathererContext context) { public static void reserve(int line, BlockEntity target, DisplayLinkContext context) {
if (line == 0) if (line == 0)
return; return;
CompoundTag tag = target.getTileData(); CompoundTag tag = target.getTileData();
CompoundTag compound = tag.getCompound("DataGatherer"); CompoundTag compound = tag.getCompound("DisplayLink");
compound.putLong("Line" + line, context.te() compound.putLong("Line" + line, context.te()
.getBlockPos() .getBlockPos()
.asLong()); .asLong());
tag.put("DataGatherer", compound); tag.put("DisplayLink", compound);
} }
public boolean isReserved(int line, BlockEntity target, DataGathererContext context) { public boolean isReserved(int line, BlockEntity target, DisplayLinkContext context) {
CompoundTag tag = target.getTileData(); CompoundTag tag = target.getTileData();
CompoundTag compound = tag.getCompound("DataGatherer"); CompoundTag compound = tag.getCompound("DisplayLink");
if (!compound.contains("Line" + line)) if (!compound.contains("Line" + line))
return false; return false;
@ -58,13 +58,13 @@ public abstract class DataGathererTarget extends DataGathererBehaviour {
BlockPos reserved = BlockPos.of(l); BlockPos reserved = BlockPos.of(l);
if (!reserved.equals(context.te() if (!reserved.equals(context.te()
.getBlockPos()) && AllBlocks.DATA_GATHERER.has(target.getLevel() .getBlockPos()) && AllBlocks.DISPLAY_LINK.has(target.getLevel()
.getBlockState(reserved))) .getBlockState(reserved)))
return true; return true;
compound.remove("Line" + line); compound.remove("Line" + line);
if (compound.isEmpty()) if (compound.isEmpty())
tag.remove("DataGatherer"); tag.remove("DisplayLink");
return false; return false;
} }

View file

@ -0,0 +1,5 @@
package com.simibubi.create.content.logistics.block.display.target;
public record DisplayTargetStats(int maxRows, int maxColumns, DisplayTarget type) {
}

View file

@ -1,8 +1,8 @@
package com.simibubi.create.content.logistics.block.data.target; package com.simibubi.create.content.logistics.block.display.target;
import java.util.List; import java.util.List;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
@ -17,10 +17,10 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.LecternBlockEntity; import net.minecraft.world.level.block.entity.LecternBlockEntity;
public class LecternDataTarget extends DataGathererTarget { public class LecternDisplayTarget extends DisplayTarget {
@Override @Override
public void acceptText(int line, List<MutableComponent> text, DataGathererContext context) { public void acceptText(int line, List<MutableComponent> text, DisplayLinkContext context) {
BlockEntity te = context.getTargetTE(); BlockEntity te = context.getTargetTE();
if (!(te instanceof LecternBlockEntity lectern)) if (!(te instanceof LecternBlockEntity lectern))
return; return;
@ -61,12 +61,12 @@ public class LecternDataTarget extends DataGathererTarget {
} }
@Override @Override
public DataTargetStats provideStats(DataGathererContext context) { public DisplayTargetStats provideStats(DisplayLinkContext context) {
return new DataTargetStats(50, 256, this); return new DisplayTargetStats(50, 256, this);
} }
public Component getLineOptionText(int line) { public Component getLineOptionText(int line) {
return Lang.translate("data_target.page", line + 1); return Lang.translate("display_target.page", line + 1);
} }
private ItemStack signBook(ItemStack book) { private ItemStack signBook(ItemStack book) {

View file

@ -1,9 +1,9 @@
package com.simibubi.create.content.logistics.block.data.target; package com.simibubi.create.content.logistics.block.display.target;
import org.apache.commons.lang3.mutable.MutableInt; import org.apache.commons.lang3.mutable.MutableInt;
import org.apache.commons.lang3.mutable.MutableObject; import org.apache.commons.lang3.mutable.MutableObject;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.redstone.NixieTubeBlock; import com.simibubi.create.content.logistics.block.redstone.NixieTubeBlock;
import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity; import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity;
@ -17,10 +17,10 @@ import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
public class NixieTubeDataTarget extends SingleLineDataTarget { public class NixieTubeDisplayTarget extends SingleLineDisplayTarget {
@Override @Override
protected void acceptLine(MutableComponent text, DataGathererContext context) { protected void acceptLine(MutableComponent text, DisplayLinkContext context) {
String tagElement = Component.Serializer.toJson(text); String tagElement = Component.Serializer.toJson(text);
NixieTubeBlock.walkNixies(context.level(), context.getTargetPos(), (currentPos, rowPosition) -> { NixieTubeBlock.walkNixies(context.level(), context.getTargetPos(), (currentPos, rowPosition) -> {
BlockEntity blockEntity = context.level() BlockEntity blockEntity = context.level()
@ -31,7 +31,7 @@ public class NixieTubeDataTarget extends SingleLineDataTarget {
} }
@Override @Override
protected int getWidth(DataGathererContext context) { protected int getWidth(DisplayLinkContext context) {
MutableInt count = new MutableInt(0); MutableInt count = new MutableInt(0);
NixieTubeBlock.walkNixies(context.level(), context.getTargetPos(), (currentPos, rowPosition) -> count.add(2)); NixieTubeBlock.walkNixies(context.level(), context.getTargetPos(), (currentPos, rowPosition) -> count.add(2));
return count.intValue(); return count.intValue();

View file

@ -1,18 +1,18 @@
package com.simibubi.create.content.logistics.block.data.target; package com.simibubi.create.content.logistics.block.display.target;
import java.util.List; import java.util.List;
import com.simibubi.create.content.logistics.block.data.DataGathererContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.SignBlockEntity; import net.minecraft.world.level.block.entity.SignBlockEntity;
public class SignDataTarget extends DataGathererTarget { public class SignDisplayTarget extends DisplayTarget {
@Override @Override
public void acceptText(int line, List<MutableComponent> text, DataGathererContext context) { public void acceptText(int line, List<MutableComponent> text, DisplayLinkContext context) {
BlockEntity te = context.getTargetTE(); BlockEntity te = context.getTargetTE();
if (!(te instanceof SignBlockEntity sign)) if (!(te instanceof SignBlockEntity sign))
return; return;
@ -33,8 +33,8 @@ public class SignDataTarget extends DataGathererTarget {
} }
@Override @Override
public DataTargetStats provideStats(DataGathererContext context) { public DisplayTargetStats provideStats(DisplayLinkContext context) {
return new DataTargetStats(4, 15, this); return new DisplayTargetStats(4, 15, this);
} }
} }

View file

@ -0,0 +1,32 @@
package com.simibubi.create.content.logistics.block.display.target;
import java.util.List;
import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
public abstract class SingleLineDisplayTarget extends DisplayTarget {
@Override
public final void acceptText(int line, List<MutableComponent> text, DisplayLinkContext context) {
acceptLine(text.get(0), context);
}
protected abstract void acceptLine(MutableComponent text, DisplayLinkContext context);
@Override
public final DisplayTargetStats provideStats(DisplayLinkContext context) {
return new DisplayTargetStats(1, getWidth(context), this);
}
@Override
public Component getLineOptionText(int line) {
return Lang.translate("display_target.single_line");
}
protected abstract int getWidth(DisplayLinkContext context);
}

View file

@ -4,7 +4,7 @@ import java.lang.ref.WeakReference;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import com.simibubi.create.content.logistics.block.data.DataGathererBlock; import com.simibubi.create.content.logistics.block.display.DisplayLinkBlock;
import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.SignalTileEntity; import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.SignalTileEntity;
import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.SignalTileEntity.SignalState; import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.SignalTileEntity.SignalState;
import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
@ -88,7 +88,7 @@ public class NixieTubeTileEntity extends SmartTileEntity {
public void updateRedstoneStrength(int signalStrength) { public void updateRedstoneStrength(int signalStrength) {
clearCustomText(); clearCustomText();
redstoneStrength = signalStrength; redstoneStrength = signalStrength;
DataGathererBlock.notifyGatherers(level, worldPosition); DisplayLinkBlock.notifyGatherers(level, worldPosition);
notifyUpdate(); notifyUpdate();
} }
@ -103,7 +103,7 @@ public class NixieTubeTileEntity extends SmartTileEntity {
component.displayCustomText(level, worldPosition, tagElement); component.displayCustomText(level, worldPosition, tagElement);
customText = Optional.of(component); customText = Optional.of(component);
nixieIndex = nixiePositionInRow; nixieIndex = nixiePositionInRow;
DataGathererBlock.notifyGatherers(level, worldPosition); DisplayLinkBlock.notifyGatherers(level, worldPosition);
notifyUpdate(); notifyUpdate();
} }

View file

@ -2,7 +2,7 @@ package com.simibubi.create.content.logistics.block.redstone;
import java.util.List; import java.util.List;
import com.simibubi.create.content.logistics.block.data.DataGathererBlock; import com.simibubi.create.content.logistics.block.display.DisplayLinkBlock;
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.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
@ -147,7 +147,7 @@ public class StockpileSwitchTileEntity extends SmartTileEntity {
scheduleBlockTick(); scheduleBlockTick();
if (changed || update) { if (changed || update) {
DataGathererBlock.notifyGatherers(level, worldPosition); DisplayLinkBlock.notifyGatherers(level, worldPosition);
notifyUpdate(); notifyUpdate();
} }
} }

View file

@ -315,12 +315,12 @@ public class FlapDisplayBlock extends HorizontalKineticBlock
private static class PlacementHelper implements IPlacementHelper { private static class PlacementHelper implements IPlacementHelper {
@Override @Override
public Predicate<ItemStack> getItemPredicate() { public Predicate<ItemStack> getItemPredicate() {
return AllBlocks.FLAP_DISPLAY::isIn; return AllBlocks.DISPLAY_BOARD::isIn;
} }
@Override @Override
public Predicate<BlockState> getStatePredicate() { public Predicate<BlockState> getStatePredicate() {
return AllBlocks.FLAP_DISPLAY::has; return AllBlocks.DISPLAY_BOARD::has;
} }
@Override @Override

View file

@ -30,8 +30,8 @@ import com.simibubi.create.content.curiosities.tools.BlueprintOverlayRenderer;
import com.simibubi.create.content.curiosities.tools.ExtendoGripRenderHandler; import com.simibubi.create.content.curiosities.tools.ExtendoGripRenderHandler;
import com.simibubi.create.content.curiosities.zapper.ZapperItem; import com.simibubi.create.content.curiosities.zapper.ZapperItem;
import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperRenderHandler; import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperRenderHandler;
import com.simibubi.create.content.logistics.block.data.DataGathererBlockItem;
import com.simibubi.create.content.logistics.block.depot.EjectorTargetHandler; import com.simibubi.create.content.logistics.block.depot.EjectorTargetHandler;
import com.simibubi.create.content.logistics.block.display.DisplayLinkBlockItem;
import com.simibubi.create.content.logistics.block.mechanicalArm.ArmInteractionPointHandler; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmInteractionPointHandler;
import com.simibubi.create.content.logistics.item.LinkedControllerClientHandler; import com.simibubi.create.content.logistics.item.LinkedControllerClientHandler;
import com.simibubi.create.content.logistics.trains.entity.CarriageCouplingRenderer; import com.simibubi.create.content.logistics.trains.entity.CarriageCouplingRenderer;
@ -161,7 +161,7 @@ public class ClientEvents {
TrackPlacement.clientTick(); TrackPlacement.clientTick();
TrackRemoval.clientTick(); TrackRemoval.clientTick();
TrainRelocator.clientTick(); TrainRelocator.clientTick();
DataGathererBlockItem.clientTick(); DisplayLinkBlockItem.clientTick();
CurvedTrackInteraction.clientTick(); CurvedTrackInteraction.clientTick();
} }

View file

@ -8,7 +8,7 @@ public class CLogistics extends ConfigBase {
public final ConfigInt psiTimeout = i(20, 1, "psiTimeout", Comments.psiTimeout); public final ConfigInt psiTimeout = i(20, 1, "psiTimeout", Comments.psiTimeout);
public final ConfigInt mechanicalArmRange = i(5, 1, "mechanicalArmRange", Comments.mechanicalArmRange); public final ConfigInt mechanicalArmRange = i(5, 1, "mechanicalArmRange", Comments.mechanicalArmRange);
public final ConfigInt linkRange = i(128, 1, "linkRange", Comments.linkRange); public final ConfigInt linkRange = i(128, 1, "linkRange", Comments.linkRange);
public final ConfigInt dataGathererRange = i(32, 1, "dataGathererRange", Comments.dataGathererRange); public final ConfigInt displayLinkRange = i(32, 1, "displayLinkRange", Comments.displayLinkRange);
public final ConfigInt vaultCapacity = i(20, 1, "vaultCapacity", Comments.vaultCapacity); public final ConfigInt vaultCapacity = i(20, 1, "vaultCapacity", Comments.vaultCapacity);
@Override @Override
@ -22,7 +22,7 @@ public class CLogistics extends ConfigBase {
static String defaultExtractionTimer = static String defaultExtractionTimer =
"The amount of ticks a funnel waits between item transferrals, when it is not re-activated by redstone."; "The amount of ticks a funnel waits between item transferrals, when it is not re-activated by redstone.";
static String linkRange = "Maximum possible range in blocks of redstone link connections."; static String linkRange = "Maximum possible range in blocks of redstone link connections.";
static String dataGathererRange = static String displayLinkRange =
"Maximum possible distance in blocks between data gatherers and their target."; "Maximum possible distance in blocks between data gatherers and their target.";
static String psiTimeout = static String psiTimeout =
"The amount of ticks a portable storage interface waits for transfers until letting contraptions move along."; "The amount of ticks a portable storage interface waits for transfers until letting contraptions move along.";

View file

@ -81,10 +81,10 @@ public enum AllGuiTextures implements ScreenElement {
PROJECTOR_END("projector", 0, 58, 162, 22), PROJECTOR_END("projector", 0, 58, 162, 22),
PROJECTOR_EMPTY("projector", 0, 80, 162, 22), PROJECTOR_EMPTY("projector", 0, 80, 162, 22),
DATA_GATHERER("data_gatherer", 235, 162), DATA_GATHERER("display_link", 235, 162),
DATA_AREA_START("data_gatherer", 0, 163, 2, 18), DATA_AREA_START("display_link", 0, 163, 2, 18),
DATA_AREA("data_gatherer", 3, 163, 1, 18), DATA_AREA("display_link", 3, 163, 1, 18),
DATA_AREA_END("data_gatherer", 5, 163, 2, 18), DATA_AREA_END("display_link", 5, 163, 2, 18),
SCHEDULE("schedule", 256, 226), SCHEDULE("schedule", 256, 226),
SCHEDULE_CARD_DARK("schedule", 5, 233, 1, 1), SCHEDULE_CARD_DARK("schedule", 5, 233, 1, 1),

View file

@ -37,10 +37,10 @@ import com.simibubi.create.content.curiosities.weapons.PotatoCannonPacket;
import com.simibubi.create.content.curiosities.weapons.PotatoProjectileTypeManager; import com.simibubi.create.content.curiosities.weapons.PotatoProjectileTypeManager;
import com.simibubi.create.content.curiosities.zapper.ZapperBeamPacket; import com.simibubi.create.content.curiosities.zapper.ZapperBeamPacket;
import com.simibubi.create.content.curiosities.zapper.terrainzapper.ConfigureWorldshaperPacket; import com.simibubi.create.content.curiosities.zapper.terrainzapper.ConfigureWorldshaperPacket;
import com.simibubi.create.content.logistics.block.data.DataGathererConfigurationPacket;
import com.simibubi.create.content.logistics.block.depot.EjectorElytraPacket; import com.simibubi.create.content.logistics.block.depot.EjectorElytraPacket;
import com.simibubi.create.content.logistics.block.depot.EjectorPlacementPacket; import com.simibubi.create.content.logistics.block.depot.EjectorPlacementPacket;
import com.simibubi.create.content.logistics.block.depot.EjectorTriggerPacket; import com.simibubi.create.content.logistics.block.depot.EjectorTriggerPacket;
import com.simibubi.create.content.logistics.block.display.DisplayLinkConfigurationPacket;
import com.simibubi.create.content.logistics.block.mechanicalArm.ArmPlacementPacket; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmPlacementPacket;
import com.simibubi.create.content.logistics.item.LinkedControllerBindPacket; import com.simibubi.create.content.logistics.item.LinkedControllerBindPacket;
import com.simibubi.create.content.logistics.item.LinkedControllerInputPacket; import com.simibubi.create.content.logistics.item.LinkedControllerInputPacket;
@ -127,7 +127,7 @@ public enum AllPackets {
RELOCATE_TRAIN(TrainRelocationPacket.class, TrainRelocationPacket::new, PLAY_TO_SERVER), RELOCATE_TRAIN(TrainRelocationPacket.class, TrainRelocationPacket::new, PLAY_TO_SERVER),
CONTROLS_INPUT(ControlsInputPacket.class, ControlsInputPacket::new, PLAY_TO_SERVER), CONTROLS_INPUT(ControlsInputPacket.class, ControlsInputPacket::new, PLAY_TO_SERVER),
REMOVE_TRACKS(TrackRemovalPacket.class, TrackRemovalPacket::new, PLAY_TO_SERVER), REMOVE_TRACKS(TrackRemovalPacket.class, TrackRemovalPacket::new, PLAY_TO_SERVER),
CONFIGURE_DATA_GATHERER(DataGathererConfigurationPacket.class, DataGathererConfigurationPacket::new, PLAY_TO_SERVER), CONFIGURE_DATA_GATHERER(DisplayLinkConfigurationPacket.class, DisplayLinkConfigurationPacket::new, PLAY_TO_SERVER),
DESTROY_CURVED_TRACK(CurvedTrackDestroyPacket.class, CurvedTrackDestroyPacket::new, PLAY_TO_SERVER), DESTROY_CURVED_TRACK(CurvedTrackDestroyPacket.class, CurvedTrackDestroyPacket::new, PLAY_TO_SERVER),
SELECT_CURVED_TRACK(CurvedTrackSelectionPacket.class, CurvedTrackSelectionPacket::new, PLAY_TO_SERVER), SELECT_CURVED_TRACK(CurvedTrackSelectionPacket.class, CurvedTrackSelectionPacket::new, PLAY_TO_SERVER),
PLACE_CURVED_TRACK(PlaceExtendedCurvePacket.class, PlaceExtendedCurvePacket::new, PLAY_TO_SERVER), PLACE_CURVED_TRACK(PlaceExtendedCurvePacket.class, PlaceExtendedCurvePacket::new, PLAY_TO_SERVER),

View file

@ -690,64 +690,64 @@
"create.contraption.controls.stop_controlling": "Stopped controlling contraption", "create.contraption.controls.stop_controlling": "Stopped controlling contraption",
"create.contraption.controls.approach_station": "Hold %1$s to approach %2$s", "create.contraption.controls.approach_station": "Hold %1$s to approach %2$s",
"create.data_gatherer.set": "Targeted position selected", "create.display_link.set": "Targeted position selected",
"create.data_gatherer.success": "Successfully bound to targeted position", "create.display_link.success": "Successfully bound to targeted position",
"create.data_gatherer.clear": "Cleared position selection", "create.display_link.clear": "Cleared position selection",
"create.data_gatherer.too_far": "Targeted position is too far from here", "create.display_link.too_far": "Targeted position is too far from here",
"create.data_gatherer.invalid": "Gatherer has no valid target, try placing it again", "create.display_link.invalid": "Link has no valid target, try placing it again",
"create.data_gatherer.title": "Data Gatherer", "create.display_link.title": "Display Link",
"create.data_gatherer.no_source": "Not a Data Source", "create.display_link.no_source": "Not a Display Source",
"create.data_gatherer.no_target": "Not a Data Target", "create.display_link.no_target": "Not a Display Target",
"create.data_gatherer.reading_from": "Read from:", "create.display_link.reading_from": "Read from:",
"create.data_gatherer.writing_to": "Send to:", "create.display_link.writing_to": "Send to:",
"create.data_gatherer.attached_side": "Block on attached side", "create.display_link.attached_side": "Block on attached side",
"create.data_gatherer.targeted_location": "Block in targeted location", "create.display_link.targeted_location": "Block in targeted location",
"create.data_gatherer.view_compatible": "Click to view all Compatible", "create.display_link.view_compatible": "Click to view all Compatible",
"create.data_gatherer.information_type": "Type of Information", "create.display_link.information_type": "Type of Information",
"create.data_gatherer.display_on": "Write data to:", "create.display_link.display_on": "Write data to:",
"create.data_gatherer.display_on_multiline": "Start writing at:", "create.display_link.display_on_multiline": "Start writing at:",
"create.data_source.label": "Attached Label", "create.display_source.label": "Attached Label",
"create.data_source.combine_item_names": "Combine Item Names", "create.display_source.combine_item_names": "Combine Item Names",
"create.data_source.count_items": "Amount of matching Items", "create.display_source.count_items": "Amount of matching Items",
"create.data_source.list_items": "List matching Items", "create.display_source.list_items": "List matching Items",
"create.data_source.nixie_tube": "Copy Nixie Tubes", "create.display_source.nixie_tube": "Copy Nixie Tubes",
"create.data_source.fill_level": "Container Fill Level", "create.display_source.fill_level": "Container Fill Level",
"create.data_source.fill_level.display": "Display Format", "create.display_source.fill_level.display": "Display Format",
"create.data_source.fill_level.percent": "Percent", "create.display_source.fill_level.percent": "Percent",
"create.data_source.fill_level.progress_bar": "Progress Bar", "create.display_source.fill_level.progress_bar": "Progress Bar",
"create.data_source.value_list.display": "Value Display", "create.display_source.value_list.display": "Value Display",
"create.data_source.value_list.shortened": "Shortened", "create.display_source.value_list.shortened": "Shortened",
"create.data_source.value_list.full_number": "Full Number", "create.display_source.value_list.full_number": "Full Number",
"create.data_source.value_list.thousand": "k", "create.display_source.value_list.thousand": "k",
"create.data_source.value_list.million": "m", "create.display_source.value_list.million": "m",
"create.data_source.player_deaths": "Player Deaths", "create.display_source.player_deaths": "Player Deaths",
"create.data_source.scoreboard": "Scoreboard", "create.display_source.scoreboard": "Scoreboard",
"create.data_source.scoreboard.objective": "Objective ID", "create.display_source.scoreboard.objective": "Objective ID",
"create.data_source.scoreboard.objective_not_found": "'%1$s' not found", "create.display_source.scoreboard.objective_not_found": "'%1$s' not found",
"create.data_source.scoreboard.objective.deaths": "Player Deaths", "create.display_source.scoreboard.objective.deaths": "Player Deaths",
"create.data_source.time_of_day": "Time of Day", "create.display_source.time_of_day": "Time of Day",
"create.data_source.stop_watch": "Stopwatch", "create.display_source.stop_watch": "Stopwatch",
"create.data_source.time.format": "Time Format", "create.display_source.time.format": "Time Format",
"create.data_source.time.12_hour": "12-hour", "create.display_source.time.12_hour": "12-hour",
"create.data_source.time.24_hour": "24-hour", "create.display_source.time.24_hour": "24-hour",
"create.data_source.accumulate_items": "Accumulate Item Count", "create.display_source.accumulate_items": "Accumulate Item Count",
"create.data_source.item_throughput": "Item Throughput", "create.display_source.item_throughput": "Item Throughput",
"create.data_source.item_throughput.interval": "Interval", "create.display_source.item_throughput.interval": "Interval",
"create.data_source.item_throughput.interval.second": "per Second", "create.display_source.item_throughput.interval.second": "per Second",
"create.data_source.item_throughput.interval.minute": "per Minute", "create.display_source.item_throughput.interval.minute": "per Minute",
"create.data_source.item_throughput.interval.hour": "per Hour", "create.display_source.item_throughput.interval.hour": "per Hour",
"create.data_source.station_summary": "Train Station Summary", "create.display_source.station_summary": "Train Station Summary",
"create.data_source.station_summary.filter": "Station name filter", "create.display_source.station_summary.filter": "Station name filter",
"create.data_source.station_summary.train_name_column": "Train column size", "create.display_source.station_summary.train_name_column": "Train column size",
"create.data_source.station_summary.platform_column": "Platform column size", "create.display_source.station_summary.platform_column": "Platform column size",
"create.data_source.station_summary.now": "now", "create.display_source.station_summary.now": "now",
"create.data_source.station_summary.minutes": " min", "create.display_source.station_summary.minutes": " min",
"create.data_source.station_summary.seconds": "%1$ss", "create.display_source.station_summary.seconds": "%1$ss",
"create.data_target.line": "Line %1$s", "create.display_target.line": "Line %1$s",
"create.data_target.page": "Page %1$s", "create.display_target.page": "Page %1$s",
"create.data_target.single_line": "Single Line", "create.display_target.single_line": "Single Line",
"create.flap_display.cycles.alphabet": " ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", "create.flap_display.cycles.alphabet": " ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9", "create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9",

View file

@ -1,42 +1,97 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": { "textures": {
"8": "create:block/controls", "4": "create:block/controls_frame",
"9": "create:block/signal_box_top", "1_7": "create:block/controls",
"particle": "create:block/bogey/particle" "particle": "create:block/bogey/particle"
}, },
"elements": [ "elements": [
{ {
"from": [0, 0, 8], "from": [14, 0, 6],
"to": [16, 5, 16], "to": [16, 14, 16],
"faces": { "faces": {
"north": {"uv": [0, 8, 8, 10.5], "texture": "#8"}, "north": {"uv": [0, 9, 1, 16], "texture": "#4"},
"east": {"uv": [16, 5.5, 12, 8], "texture": "#8"}, "east": {"uv": [13, 0, 8, 7], "texture": "#4"},
"south": {"uv": [0, 5.5, 8, 8], "texture": "#8"}, "south": {"uv": [7, 0, 8, 7], "texture": "#4"},
"west": {"uv": [12, 5.5, 16, 8], "texture": "#8"}, "west": {"uv": [16, 9, 11, 16], "texture": "#4"},
"down": {"uv": [0, 4, 16, 12], "texture": "#9"} "up": {"uv": [0, 0, 1, 5], "rotation": 180, "texture": "#1_7"},
"down": {"uv": [0, 11, 1, 16], "rotation": 180, "texture": "#1_7"}
} }
}, },
{ {
"from": [0, 5, 6], "from": [2, 5, 14],
"to": [16, 14, 16], "to": [14, 14, 16],
"faces": { "faces": {
"north": {"uv": [8, 11, 16, 15.5], "texture": "#8"}, "north": {"uv": [1, 0, 7, 4.5], "texture": "#1_7"},
"east": {"uv": [16, 0, 11, 4.5], "texture": "#8"}, "south": {"uv": [1, 0, 7, 4.5], "texture": "#4"},
"south": {"uv": [0, 0, 8, 4.5], "texture": "#8"}, "up": {"uv": [1, 0, 7, 1], "rotation": 180, "texture": "#1_7"}
"west": {"uv": [11, 0, 16, 4.5], "texture": "#8"}, }
"up": {"uv": [0, 11, 8, 16], "rotation": 180, "texture": "#8"}, },
"down": {"uv": [8, 11, 16, 16], "rotation": 180, "texture": "#8"} {
"from": [0, 0, 6],
"to": [2, 14, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
"faces": {
"north": {"uv": [7, 9, 8, 16], "texture": "#4"},
"east": {"uv": [11, 9, 16, 16], "texture": "#4"},
"south": {"uv": [0, 0, 1, 7], "texture": "#4"},
"west": {"uv": [8, 0, 13, 7], "texture": "#4"},
"up": {"uv": [7, 0, 8, 5], "rotation": 180, "texture": "#1_7"},
"down": {"uv": [7, 11, 8, 16], "rotation": 180, "texture": "#1_7"}
}
},
{
"from": [2, 5, 6],
"to": [14, 14, 14],
"faces": {
"north": {"uv": [1, 9.5, 7, 5], "rotation": 180, "texture": "#1_7"},
"up": {"uv": [1, 5, 7, 1], "texture": "#1_7"},
"down": {"uv": [1, 9.5, 7, 5.5], "texture": "#1_7"}
}
},
{
"from": [2, 0, 8],
"to": [14, 5, 16],
"faces": {
"north": {"uv": [1, 13.5, 7, 16], "texture": "#4"},
"south": {"uv": [1, 4.5, 7, 7], "texture": "#4"},
"down": {"uv": [7, 12, 1, 16], "texture": "#1_7"}
} }
} }
], ],
"groups": [ "display": {
{ "thirdperson_righthand": {
"name": "closed", "rotation": [75, 45, 0],
"origin": [0, 0, 0], "translation": [0, 2.5, 0],
"color": 0, "scale": [0.375, 0.375, 0.375]
"children": [0, 1] },
"thirdperson_lefthand": {
"rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, 45, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, 225, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 3, 0],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 225, 0],
"translation": [1.5, -0.25, 0],
"scale": [0.625, 0.625, 0.625]
},
"head": {
"translation": [0, 8.5, -2.25]
},
"fixed": {
"scale": [0.5, 0.5, 0.5]
} }
] }
} }

View file

@ -1,74 +1,97 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": { "textures": {
"7": "create:block/controls", "4": "create:block/controls_frame",
"8": "create:block/signal_box_top", "1_7": "create:block/controls",
"particle": "create:block/bogey/particle" "particle": "create:block/bogey/particle"
}, },
"elements": [ "elements": [
{ {
"from": [14, 5, 6], "from": [14, 0, 6],
"to": [16, 14, 16], "to": [16, 14, 16],
"faces": { "faces": {
"north": {"uv": [8, 11, 9, 15.5], "texture": "#7"}, "north": {"uv": [0, 9, 1, 16], "texture": "#4"},
"east": {"uv": [16, 0, 11, 4.5], "texture": "#7"}, "east": {"uv": [13, 0, 8, 7], "texture": "#4"},
"south": {"uv": [7, 0, 8, 4.5], "texture": "#7"}, "south": {"uv": [7, 0, 8, 7], "texture": "#4"},
"west": {"uv": [11, 0, 16, 4.5], "texture": "#7"}, "west": {"uv": [16, 9, 11, 16], "texture": "#4"},
"up": {"uv": [0, 11, 1, 16], "rotation": 180, "texture": "#7"}, "up": {"uv": [0, 0, 1, 5], "rotation": 180, "texture": "#1_7"},
"down": {"uv": [8, 11, 9, 16], "rotation": 180, "texture": "#7"} "down": {"uv": [0, 11, 1, 16], "rotation": 180, "texture": "#1_7"}
} }
}, },
{ {
"from": [2, 5, 14], "from": [2, 5, 14],
"to": [14, 14, 16], "to": [14, 14, 16],
"faces": { "faces": {
"north": {"uv": [1, 0, 7, 4.5], "texture": "#7"}, "north": {"uv": [1, 0, 7, 4.5], "texture": "#1_7"},
"south": {"uv": [1, 0, 7, 4.5], "texture": "#7"}, "south": {"uv": [1, 0, 7, 4.5], "texture": "#4"},
"up": {"uv": [1, 11, 7, 12], "rotation": 180, "texture": "#7"} "up": {"uv": [1, 0, 7, 1], "rotation": 180, "texture": "#1_7"}
} }
}, },
{ {
"from": [0, 5, 6], "from": [0, 0, 6],
"to": [2, 14, 16], "to": [2, 14, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
"faces": { "faces": {
"north": {"uv": [15, 11, 16, 15.5], "texture": "#7"}, "north": {"uv": [7, 9, 8, 16], "texture": "#4"},
"east": {"uv": [16, 0, 11, 4.5], "texture": "#7"}, "east": {"uv": [11, 9, 16, 16], "texture": "#4"},
"south": {"uv": [0, 0, 1, 4.5], "texture": "#7"}, "south": {"uv": [0, 0, 1, 7], "texture": "#4"},
"west": {"uv": [11, 0, 16, 4.5], "texture": "#7"}, "west": {"uv": [8, 0, 13, 7], "texture": "#4"},
"up": {"uv": [7, 11, 8, 16], "rotation": 180, "texture": "#7"}, "up": {"uv": [7, 0, 8, 5], "rotation": 180, "texture": "#1_7"},
"down": {"uv": [15, 11, 16, 16], "rotation": 180, "texture": "#7"} "down": {"uv": [7, 11, 8, 16], "rotation": 180, "texture": "#1_7"}
} }
}, },
{ {
"from": [2, 5, 7], "from": [2, 5, 7],
"to": [14, 13, 15], "to": [14, 13, 15],
"faces": { "faces": {
"north": {"uv": [8, 4.5, 12, 10.5], "rotation": 270, "texture": "#7"}, "north": {"uv": [1, 14, 7, 10.05], "rotation": 180, "texture": "#4"},
"up": {"uv": [8, 4.5, 12, 10.5], "rotation": 90, "texture": "#7"}, "up": {"uv": [1, 13.5, 7, 9.55], "texture": "#4"},
"down": {"uv": [8, 4.5, 12, 10.5], "rotation": 90, "texture": "#7"} "down": {"uv": [1, 14.5, 7, 10.5], "rotation": 180, "texture": "#4"}
} }
}, },
{ {
"from": [0, 0, 8], "from": [2, 0, 8],
"to": [16, 5, 16], "to": [14, 5, 16],
"faces": { "faces": {
"north": {"uv": [0, 8, 8, 10.5], "texture": "#7"}, "north": {"uv": [1, 13.5, 7, 16], "texture": "#4"},
"east": {"uv": [16, 5.5, 12, 8], "texture": "#7"}, "south": {"uv": [1, 4.5, 7, 7], "texture": "#4"},
"south": {"uv": [0, 5.5, 8, 8], "texture": "#7"}, "down": {"uv": [7, 12, 1, 16], "texture": "#1_7"}
"west": {"uv": [12, 5.5, 16, 8], "texture": "#7"},
"down": {"uv": [0, 4, 16, 12], "texture": "#8"}
} }
} }
], ],
"groups": [ "display": {
{ "thirdperson_righthand": {
"name": "open", "rotation": [75, 45, 0],
"origin": [0, 0, 0], "translation": [0, 2.5, 0],
"color": 0, "scale": [0.375, 0.375, 0.375]
"children": [0, 1, 2, 3]
}, },
4 "thirdperson_lefthand": {
] "rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, 45, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, 225, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 3, 0],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 225, 0],
"translation": [1.5, -0.25, 0],
"scale": [0.625, 0.625, 0.625]
},
"head": {
"translation": [0, 8.5, -2.25]
},
"fixed": {
"scale": [0.5, 0.5, 0.5]
}
}
} }

View file

@ -1,8 +1,7 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"8": "create:block/signal_box_top", "4": "create:block/controls_frame",
"12": "create:block/train_controls",
"1_7": "create:block/controls", "1_7": "create:block/controls",
"particle": "create:block/bogey/particle" "particle": "create:block/bogey/particle"
}, },
@ -12,12 +11,12 @@
"to": [6, 11, 9], "to": [6, 11, 9],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 10, 11]}, "rotation": {"angle": 45, "axis": "x", "origin": [0, 10, 11]},
"faces": { "faces": {
"north": {"uv": [0, 3, 2, 5], "rotation": 180, "texture": "#12"}, "north": {"uv": [8, 1.5, 9, 2.5], "rotation": 180, "texture": "#1_7"},
"east": {"uv": [0, 6, 2, 16], "rotation": 90, "texture": "#12"}, "east": {"uv": [9, 3, 8, 8], "rotation": 90, "texture": "#1_7"},
"south": {"uv": [0, 0, 0, 0], "texture": "#12"}, "south": {"uv": [0, 0, 0, 0], "texture": "#missing"},
"west": {"uv": [0, 6, 2, 16], "rotation": 270, "texture": "#12"}, "west": {"uv": [9, 3, 8, 8], "rotation": 270, "texture": "#1_7"},
"up": {"uv": [0, 6, 2, 16], "texture": "#12"}, "up": {"uv": [8, 3, 9, 8], "texture": "#1_7"},
"down": {"uv": [0, 6, 2, 16], "rotation": 180, "texture": "#12"} "down": {"uv": [8, 3, 9, 8], "rotation": 180, "texture": "#1_7"}
} }
}, },
{ {
@ -25,33 +24,32 @@
"to": [12, 11, 9], "to": [12, 11, 9],
"rotation": {"angle": 22.5, "axis": "x", "origin": [0, 10, 11]}, "rotation": {"angle": 22.5, "axis": "x", "origin": [0, 10, 11]},
"faces": { "faces": {
"north": {"uv": [0, 3, 2, 5], "rotation": 180, "texture": "#12"}, "north": {"uv": [8, 1.5, 9, 2.5], "rotation": 180, "texture": "#1_7"},
"east": {"uv": [0, 6, 2, 16], "rotation": 90, "texture": "#12"}, "east": {"uv": [9, 3, 8, 8], "rotation": 90, "texture": "#1_7"},
"south": {"uv": [0, 0, 0, 0], "texture": "#12"}, "west": {"uv": [9, 3, 8, 8], "rotation": 270, "texture": "#1_7"},
"west": {"uv": [0, 6, 2, 16], "rotation": 270, "texture": "#12"}, "up": {"uv": [8, 3, 9, 8], "texture": "#1_7"},
"up": {"uv": [0, 6, 2, 16], "texture": "#12"}, "down": {"uv": [8, 3, 9, 8], "rotation": 180, "texture": "#1_7"}
"down": {"uv": [0, 6, 2, 16], "rotation": 180, "texture": "#12"}
} }
}, },
{ {
"from": [2, 4.95, 6.75], "from": [2, 4.95, 6.75],
"to": [14, 13.2, 14], "to": [14, 13.2, 14],
"faces": { "faces": {
"north": {"uv": [2, 5, 14, 13], "texture": "#12"}, "north": {"uv": [9.5, 3.5, 15.5, 0], "texture": "#1_7"},
"up": {"uv": [2, 0, 14, 7.5], "rotation": 180, "texture": "#12"}, "up": {"uv": [9.5, 0, 15.5, 3.5], "rotation": 180, "texture": "#1_7"},
"down": {"uv": [2, 0, 14, 8], "rotation": 180, "texture": "#12"} "down": {"uv": [9.5, 0, 15.5, 3.5], "rotation": 180, "texture": "#1_7"}
} }
}, },
{ {
"from": [14, 5, 6], "from": [14, 0, 6],
"to": [16, 14, 16], "to": [16, 14, 16],
"faces": { "faces": {
"north": {"uv": [8, 11, 9, 15.5], "texture": "#1_7"}, "north": {"uv": [0, 9, 1, 16], "texture": "#4"},
"east": {"uv": [16, 0, 11, 4.5], "texture": "#1_7"}, "east": {"uv": [13, 0, 8, 7], "texture": "#4"},
"south": {"uv": [7, 0, 8, 4.5], "texture": "#1_7"}, "south": {"uv": [7, 0, 8, 7], "texture": "#4"},
"west": {"uv": [11, 0, 16, 4.5], "texture": "#1_7"}, "west": {"uv": [16, 9, 11, 16], "texture": "#4"},
"up": {"uv": [0, 11, 1, 16], "rotation": 180, "texture": "#1_7"}, "up": {"uv": [0, 0, 1, 5], "rotation": 180, "texture": "#1_7"},
"down": {"uv": [8, 11, 9, 16], "rotation": 180, "texture": "#1_7"} "down": {"uv": [0, 11, 1, 16], "rotation": 180, "texture": "#1_7"}
} }
}, },
{ {
@ -59,41 +57,39 @@
"to": [14, 14, 16], "to": [14, 14, 16],
"faces": { "faces": {
"north": {"uv": [1, 0, 7, 4.5], "texture": "#1_7"}, "north": {"uv": [1, 0, 7, 4.5], "texture": "#1_7"},
"south": {"uv": [1, 0, 7, 4.5], "texture": "#1_7"}, "south": {"uv": [1, 0, 7, 4.5], "texture": "#4"},
"up": {"uv": [1, 11, 7, 12], "rotation": 180, "texture": "#1_7"} "up": {"uv": [1, 0, 7, 1], "rotation": 180, "texture": "#1_7"}
} }
}, },
{ {
"from": [0, 5, 6], "from": [0, 0, 6],
"to": [2, 14, 16], "to": [2, 14, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
"faces": { "faces": {
"north": {"uv": [15, 11, 16, 15.5], "texture": "#1_7"}, "north": {"uv": [7, 9, 8, 16], "texture": "#4"},
"east": {"uv": [16, 0, 11, 4.5], "texture": "#1_7"}, "east": {"uv": [11, 9, 16, 16], "texture": "#4"},
"south": {"uv": [0, 0, 1, 4.5], "texture": "#1_7"}, "south": {"uv": [0, 0, 1, 7], "texture": "#4"},
"west": {"uv": [11, 0, 16, 4.5], "texture": "#1_7"}, "west": {"uv": [8, 0, 13, 7], "texture": "#4"},
"up": {"uv": [7, 11, 8, 16], "rotation": 180, "texture": "#1_7"}, "up": {"uv": [7, 0, 8, 5], "rotation": 180, "texture": "#1_7"},
"down": {"uv": [15, 11, 16, 16], "rotation": 180, "texture": "#1_7"} "down": {"uv": [7, 11, 8, 16], "rotation": 180, "texture": "#1_7"}
} }
}, },
{ {
"from": [2, 5, 7], "from": [2, 5, 7],
"to": [14, 13, 15], "to": [14, 13, 15],
"faces": { "faces": {
"north": {"uv": [8, 4.5, 12, 10.5], "rotation": 270, "texture": "#1_7"}, "north": {"uv": [1, 14, 7, 10], "rotation": 180, "texture": "#4"},
"up": {"uv": [8, 4.5, 12, 10.5], "rotation": 90, "texture": "#1_7"}, "up": {"uv": [1, 13.5, 7, 9.5], "texture": "#4"},
"down": {"uv": [8, 4.5, 12, 10.5], "rotation": 90, "texture": "#1_7"} "down": {"uv": [1, 14.5, 7, 10.5], "rotation": 180, "texture": "#4"}
} }
}, },
{ {
"from": [0, 0, 8], "from": [2, 0, 8],
"to": [16, 5, 16], "to": [14, 5, 16],
"faces": { "faces": {
"north": {"uv": [0, 8, 8, 10.5], "texture": "#1_7"}, "north": {"uv": [1, 13.5, 7, 16], "texture": "#4"},
"east": {"uv": [16, 5.5, 12, 8], "texture": "#1_7"}, "south": {"uv": [1, 4.5, 7, 7], "texture": "#4"},
"south": {"uv": [0, 5.5, 8, 8], "texture": "#1_7"}, "down": {"uv": [7, 12, 1, 16], "texture": "#1_7"}
"west": {"uv": [12, 5.5, 16, 8], "texture": "#1_7"},
"down": {"uv": [0, 4, 16, 12], "texture": "#8"}
} }
} }
], ],

View file

@ -1,7 +1,7 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"12": "create:block/train_controls", "1_7": "create:block/controls",
"particle": "create:block/bogey/particle" "particle": "create:block/bogey/particle"
}, },
"elements": [ "elements": [
@ -9,9 +9,9 @@
"from": [2, 4.95, 6.75], "from": [2, 4.95, 6.75],
"to": [14, 13.2, 14], "to": [14, 13.2, 14],
"faces": { "faces": {
"north": {"uv": [2, 5, 14, 13], "texture": "#12"}, "north": {"uv": [9.5, 3.5, 15.5, 0], "texture": "#1_7"},
"up": {"uv": [2, 0, 14, 7.5], "rotation": 180, "texture": "#12"}, "up": {"uv": [9.5, 0, 15.5, 3.5], "rotation": 180, "texture": "#1_7"},
"down": {"uv": [2, 0, 14, 8], "rotation": 180, "texture": "#12"} "down": {"uv": [9.5, 0, 15.5, 3.5], "rotation": 180, "texture": "#1_7"}
} }
} }
], ],
@ -40,7 +40,7 @@
}, },
"gui": { "gui": {
"rotation": [30, 225, 0], "rotation": [30, 225, 0],
"translation": [1, 0, 0], "translation": [1.5, -0.25, 0],
"scale": [0.625, 0.625, 0.625] "scale": [0.625, 0.625, 0.625]
}, },
"head": { "head": {
@ -49,13 +49,5 @@
"fixed": { "fixed": {
"scale": [0.5, 0.5, 0.5] "scale": [0.5, 0.5, 0.5]
} }
}, }
"groups": [
{
"name": "cover",
"origin": [8, 8, 8],
"color": 0,
"children": [0]
}
]
} }

View file

@ -1,7 +1,7 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"5": "create:block/train_controls" "5": "create:block/controls"
}, },
"elements": [ "elements": [
{ {
@ -9,11 +9,11 @@
"to": [6, 11, 9], "to": [6, 11, 9],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 10, 11]}, "rotation": {"angle": 45, "axis": "x", "origin": [0, 10, 11]},
"faces": { "faces": {
"north": {"uv": [0, 3, 2, 5], "rotation": 180, "texture": "#5"}, "north": {"uv": [8, 1.5, 9, 2.5], "rotation": 180, "texture": "#5"},
"east": {"uv": [0, 6, 2, 16], "rotation": 90, "texture": "#5"}, "east": {"uv": [9, 3, 8, 8], "rotation": 90, "texture": "#5"},
"west": {"uv": [0, 6, 2, 16], "rotation": 270, "texture": "#5"}, "west": {"uv": [9, 3, 8, 8], "rotation": 270, "texture": "#5"},
"up": {"uv": [0, 6, 2, 16], "texture": "#5"}, "up": {"uv": [8, 3, 9, 8], "texture": "#5"},
"down": {"uv": [0, 6, 2, 16], "rotation": 180, "texture": "#5"} "down": {"uv": [8, 3, 9, 8], "rotation": 180, "texture": "#5"}
} }
} }
] ]

View file

@ -1,6 +0,0 @@
{
"parent": "create:block/data_gatherer/block",
"textures": {
"3": "create:block/data_gatherer_side_powered"
}
}

View file

@ -2,15 +2,14 @@
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"parent": "block/block", "parent": "block/block",
"textures": { "textures": {
"0": "create:block/data_gatherer", "0": "create:block/display_link",
"2": "create:block/smooth_dark_log_top", "3": "create:block/display_link_side",
"3": "create:block/data_gatherer_side",
"particle": "create:block/brass_casing" "particle": "create:block/brass_casing"
}, },
"elements": [ "elements": [
{ {
"from": [9, 6, 3], "from": [9, 6, 3.5],
"to": [13, 9, 12], "to": [13, 9, 12.5],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
"faces": { "faces": {
"north": {"uv": [14.5, 0, 12.5, 1.5], "texture": "#0"}, "north": {"uv": [14.5, 0, 12.5, 1.5], "texture": "#0"},
@ -25,22 +24,22 @@
"to": [15, 6, 15], "to": [15, 6, 15],
"faces": { "faces": {
"north": {"uv": [0, 0, 14, 5], "texture": "#3"}, "north": {"uv": [0, 0, 14, 5], "texture": "#3"},
"east": {"uv": [7.5, 8.5, 10, 15.5], "rotation": 90, "texture": "#0"}, "east": {"uv": [7.5, 9, 10, 16], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 0, 14, 5], "texture": "#3"}, "south": {"uv": [0, 0, 14, 5], "texture": "#3"},
"west": {"uv": [7.5, 8.5, 10, 15.5], "rotation": 90, "texture": "#0"}, "west": {"uv": [7.5, 9, 10, 16], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 6, 7, 13], "texture": "#0"}, "up": {"uv": [0, 9, 7, 16], "texture": "#0"},
"down": {"uv": [1, 1, 15, 15], "texture": "#2"} "down": {"uv": [0, 1.5, 7, 8.5], "texture": "#0"}
} }
}, },
{ {
"from": [2, -1, 2], "from": [2, -1, 2],
"to": [14, 1, 14], "to": [14, 1, 14],
"faces": { "faces": {
"north": {"uv": [0.5, 14.5, 6.5, 15.5], "texture": "#0"}, "north": {"uv": [0.5, 0, 6.5, 1], "texture": "#0"},
"east": {"uv": [0.5, 14.5, 6.5, 15.5], "texture": "#0"}, "east": {"uv": [0.5, 0, 6.5, 1], "texture": "#0"},
"south": {"uv": [0.5, 14.5, 6.5, 15.5], "texture": "#0"}, "south": {"uv": [0.5, 0, 6.5, 1], "texture": "#0"},
"west": {"uv": [0.5, 14.5, 6.5, 15.5], "texture": "#0"}, "west": {"uv": [0.5, 0, 6.5, 1], "texture": "#0"},
"down": {"uv": [0, 0, 6, 6], "texture": "#0"} "down": {"uv": [0.5, 2, 6.5, 8], "texture": "#0"}
} }
}, },
{ {

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/display_link/block",
"textures": {
"3": "create:block/display_link_side_powered"
}
}

View file

@ -2,7 +2,7 @@
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"parent": "block/block", "parent": "block/block",
"textures": { "textures": {
"0": "create:block/data_gatherer" "0": "create:block/display_link"
}, },
"elements": [ "elements": [
{ {

View file

@ -2,7 +2,7 @@
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"parent": "block/block", "parent": "block/block",
"textures": { "textures": {
"0": "create:block/data_gatherer" "0": "create:block/display_link"
}, },
"elements": [ "elements": [
{ {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 658 B

After

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 353 B

View file

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB