Merge branch 'mc1.20.1/high-logistics' of https://github.com/Creators-of-Create/Create-Concealed into mc1.20.1/high-logistics

This commit is contained in:
Kryppers 2024-11-05 01:17:16 +00:00
commit e087eb2b3a
33 changed files with 901 additions and 277 deletions

View file

@ -1,4 +1,4 @@
// 1.20.1 2024-11-01T10:40:15.7618068 Registrate Provider for create [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
// 1.20.1 2024-11-04T11:30:08.6907256 Registrate Provider for create [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
60bbdf92d2ac9824ea6144955c74043a6005f79d assets/create/blockstates/acacia_window.json
6a67703c2697d81b7dc83e9d72a66f9c9ff08383 assets/create/blockstates/acacia_window_pane.json
c3ae87b62e81d8e9476eccd793bb1548d74c66a1 assets/create/blockstates/adjustable_chain_gearshift.json
@ -638,8 +638,8 @@ b0d8f08968763a5f74e5cd5644377a76a9f39753 assets/create/blockstates/yellow_toolbo
fe8c497aacc641c2f01cec90bba9f19e59cc2ed2 assets/create/blockstates/yellow_valve_handle.json
e819e93fdcbe9fd9c050a052d2718ff3b3539365 assets/create/blockstates/zinc_block.json
64121dcb216381c83b4fe28aa361ea07c24c9ad0 assets/create/blockstates/zinc_ore.json
d5bb760251e65801c7d8d4c7c99149dfc644ae26 assets/create/lang/en_ud.json
71537c153c046d7ac132c20ed36db50daf6e7284 assets/create/lang/en_us.json
74ec69161923ebe06e8dc281e40aec34c716e58a assets/create/lang/en_ud.json
6c5181994eb7853e46a3e21bd1a36e0ece70cd4e assets/create/lang/en_us.json
a97e1060e00ae701a02e39cd4ef8054cf345fac4 assets/create/models/block/acacia_window.json
103e032c0b1a0a6a27c67da8c91179a564bd281c assets/create/models/block/acacia_window_pane_noside.json
fb00b627abda76ad4fea867ca57dbfadd24fffa3 assets/create/models/block/acacia_window_pane_noside_alt.json

View file

@ -251,6 +251,7 @@
"block.create.cardboard_block": "pɹɐoqpɹɐƆ ɟo ʞɔoןᗺ",
"block.create.cart_assembler": "ɹǝןqɯǝssⱯ ʇɹɐƆ",
"block.create.chain_conveyor": "ɹoʎǝʌuoƆ uıɐɥƆ",
"block.create.chain_conveyor.tooltip.summary": "˙ǝpıɹ ɐ ǝʞɐʇ oʇ ɥɔuǝɹʍ ǝs∩ ˙ɯǝɥʇ uo sǝbɐʞɔɐd ʇɹodsuɐɹʇ oʇ sʇɹodboɹɟ ǝs∩ ˙sʞɹoʍʇǝu ɹoʎǝʌuoɔ ɯɹoɟ oʇ suıɐɥɔ ɥʇıʍ ʇɔǝuuoƆ ]ɹǝpuod[",
"block.create.cherry_window": "ʍopuıM ʎɹɹǝɥƆ",
"block.create.cherry_window_pane": "ǝuɐԀ ʍopuıM ʎɹɹǝɥƆ",
"block.create.chocolate": "ǝʇɐןoɔoɥƆ",
@ -437,8 +438,12 @@
"block.create.deployer": "ɹǝʎoןdǝᗡ",
"block.create.depot": "ʇodǝᗡ",
"block.create.desk_bell": "ןןǝᗺ ʞsǝᗡ",
"block.create.desk_bell.tooltip.behaviour1": "˙‾ɹooןɟ ʇǝbɹɐʇ‾ ǝɥʇ ʇɐ buıʌıɹɹɐ uǝɥʍ ‾punos ɐ sʎɐןԀ‾",
"block.create.desk_bell.tooltip.condition1": "uoıʇdɐɹʇuoƆ ɹoʇɐʌǝןƎ oʇ pǝɥɔɐʇʇɐ uǝɥM",
"block.create.desk_bell.tooltip.summary": "˙pǝʇɐʌıʇɔɐ uǝɥʍ ‾ןɐubıs ǝuoʇspǝɹ‾ ɐ sʇıɯƎ ¡ǝɔıʌɹǝS ɹoɟ buıᴚ",
"block.create.diorite_pillar": "ɹɐןןıԀ ǝʇıɹoıᗡ",
"block.create.display_board": "pɹɐoᗺ ʎɐןdsıᗡ",
"block.create.display_cloth.tooltip.summary": "˙ɥʇoןɔ ʎɐןdsıp pǝɹnbıɟuoɔ ǝɥʇ buıɔɐןd ɹǝʇɟɐ pǝıɟıɔǝds ǝq uɐɔ ʇsoɔ ǝɥ⟘ ˙sɹǝʎɐןd ɹǝɥʇo ʎq pǝsɐɥɔɹnd ǝq uɐɔ ʇɐɥʇ ʞɹoʍʇǝu ɹnoʎ ɯoɹɟ ʇsǝnbǝɹ ɐ ʎɟıɔǝds 'ɹǝdǝǝʞ ʞɔoʇs ɐ uo pǝsn uǝɥʍ 'ʎןǝʌıʇɐuɹǝʇןⱯ ˙ɯǝɥʇ ʎɐןdsıp oʇ ɯǝʇı ɥʇıʍ ʞɔıןɔ 'uoıʇɐɹoɔǝp ɹoɟ pǝsn ǝq uɐƆ ]ɹǝpuod[",
"block.create.display_link": "ʞuıꞀ ʎɐןdsıᗡ",
"block.create.dripstone_pillar": "ɹɐןןıԀ ǝuoʇsdıɹᗡ",
"block.create.elevator_contact": "ʇɔɐʇuoƆ ɹoʇɐʌǝןƎ",
@ -454,6 +459,11 @@
"block.create.exposed_copper_tile_stairs": "sɹıɐʇS ǝןı⟘ ɹǝddoƆ pǝsodxƎ",
"block.create.exposed_copper_tiles": "sǝןı⟘ ɹǝddoƆ pǝsodxƎ",
"block.create.factory_panel": "ןǝuɐԀ ʎɹoʇɔɐℲ",
"block.create.factory_panel.tooltip.behaviour1": "˙ssǝɹppɐ uɐ ʇǝs oʇ ןǝuɐd ǝɥʇ ʞɔıןɔ ʇɹoɥS ˙ɹǝuıɐʇuoɔ ǝɥʇ uı sı ʇunoɯɐ ʇǝbɹɐʇ ǝɥʇ ןıʇun ssǝɹppɐ pǝıɟıɔǝds ǝɥʇ oʇ ʞɹoʍʇǝu ǝɥʇ ɯoɹɟ sɯǝʇı sʇsǝnbǝɹ ןǝuɐԀ :ǝpoɯ ɹǝʞɔoʇsǝᴚ",
"block.create.factory_panel.tooltip.behaviour2": "˙sןǝuɐd ɹǝɥʇo ɹoɟ ʇnduı uɐ sɐ pǝsnǝɹ ǝq osןɐ uɐɔ ɯǝʇı ʇndʇno uɐ buıʎɟıɔǝds sןǝuɐԀ ˙sɯǝʇı ʇnduı sɐ sןǝuɐd ɹǝɥʇo ʇɔǝuuoɔ puɐ ssǝɹppɐ uɐ ʇǝs oʇ ןǝuɐd ǝɥʇ ʞɔıןɔ ʇɹoɥS ˙)ʞɹoʍʇǝu uo sʞuɐןԀ ㄣ9 ʇsɐǝן ʇɐ ןıʇun 'sʞuɐןԀ 9 ʇɔǝdxǝ puɐ ,ʍɐs, oʇ boꞀ Ɩ puǝS ˙b˙ǝ( ʞɹoʍʇǝu ǝɥʇ uo punoɟ sı ɯǝʇı ʇndʇno ǝɥʇ ɟo pǝʇunoɯɐ ʇǝbɹɐʇ ǝɥʇ ןıʇun ssǝɹppɐ uɐ oʇ sʇuǝıpǝɹbuı sʇsǝnbǝɹ ןǝuɐԀ :ǝpoɯ ǝdıɔǝᴚ",
"block.create.factory_panel.tooltip.condition1": "ɹǝbɐʞɔɐԀ oʇ pǝɥɔɐʇʇɐ uǝɥM",
"block.create.factory_panel.tooltip.condition2": "ɹǝbɐʞɔɐԀ oʇ pǝɥɔɐʇʇɐ ʇou uǝɥM",
"block.create.factory_panel.tooltip.summary": "˙ǝbɐɹoʇs uı uıɐʇuıɐɯ oʇ ʇunoɯɐ ʇǝbɹɐʇ ɐ ʎɟıɔǝds oʇ ʞɔıןɔ pןoH ˙ʇoןs ɹǝʇןıɟ uı ɹoʇıuoɯ oʇ ɯǝʇı ǝɔɐןԀ ˙ʎɔuǝnbǝɹɟ sʇı ǝsn oʇ ʇuǝɯǝɔɐןd ǝɹoɟǝq ʞuıן ɹǝbɐʞɔɐd ʞɔıןƆ ]ɹǝpuod[",
"block.create.fake_track": "sdɐW ɹoɟ ɹǝʞɹɐW ʞɔɐɹ⟘",
"block.create.fluid_pipe": "ǝdıԀ pınןℲ",
"block.create.fluid_tank": "ʞuɐ⟘ pınןℲ",
@ -500,6 +510,9 @@
"block.create.industrial_iron_window_pane": "ǝuɐԀ ʍopuıM uoɹI ןɐıɹʇsnpuI",
"block.create.item_drain": "uıɐɹᗡ ɯǝʇI",
"block.create.item_hatch": "ɥɔʇɐH ɯǝʇI",
"block.create.item_hatch.tooltip.behaviour1": "˙pǝɹɹǝɟsuɐɹʇ ǝq ‾ʇou‾ ןןıʍ ‾sʇuǝʇuoɔ ɥʇıʍ‾ sɯǝʇı puɐ ‾sɯǝʇı ɹɐqʇoH‾ ˙uo pǝɔɐןd sı ʇı ‾ɹǝuıɐʇuoɔ‾ ǝɥʇ oʇuı sɯǝʇı ɹnoʎ ‾sʇısodǝᗡ‾",
"block.create.item_hatch.tooltip.condition1": "pǝʞɔıןƆ-ᴚ uǝɥM",
"block.create.item_hatch.tooltip.summary": ɯǝןqoɹd s,ǝsןǝ ǝuoǝɯos ʇı sǝʞɐɯ puɐ ɹǝʇʇnןɔ ‾ʎɹoʇuǝʌuı‾ ɹnoʎ ‾sǝʌןos ʎןʞɔınὉ‾",
"block.create.item_vault": ןnɐΛ ɯǝʇI",
"block.create.jungle_window": "ʍopuıM ǝןbunſ",
"block.create.jungle_window_pane": "ǝuɐԀ ʍopuıM ǝןbunſ",
@ -598,8 +611,12 @@
"block.create.oxidized_copper_tile_stairs": "sɹıɐʇS ǝןı⟘ ɹǝddoƆ pǝzıpıxO",
"block.create.oxidized_copper_tiles": "sǝןı⟘ ɹǝddoƆ pǝzıpıxO",
"block.create.package_frogport": "ʇɹodboɹℲ ǝbɐʞɔɐԀ",
"block.create.package_frogport.tooltip.summary": "˙ɐsɹǝʌ ǝɔıʌ puɐ suıɐɥɔ ɯoɹɟ pǝʌoɯǝɹ ǝq ןןıʍ sǝbɐʞɔɐd buıɥɔʇɐW ˙I∩ uı ɹǝʇןıɟ ssǝɹppɐ ʇǝS ˙ssǝɹppɐ ɹıǝɥʇ uo pǝsɐq suıɐɥɔ ɯoɹɟ puɐ oʇ sǝbɐʞɔɐd sǝʌoW ˙ǝɔɐןd uǝɥʇ ʞuıן oʇ ɹoʎǝʌuoɔ uıɐɥɔ ɐ ʞɔıןƆ ]ɹǝpuod[",
"block.create.package_postbox.tooltip.summary": "˙ɐsɹǝʌ ǝɔıʌ puɐ suıɐɹʇ ɯoɹɟ pǝʌoɯǝɹ ǝq ןןıʍ sǝbɐʞɔɐd buıɥɔʇɐW ˙I∩ uı ɹǝʇןıɟ ssǝɹppɐ ʇǝS ˙ssǝɹppɐ ɹıǝɥʇ uo pǝsɐq suıɐɹʇ ɯoɹɟ puɐ oʇ sǝbɐʞɔɐd sǝʌoW ˙ǝɔɐןd uǝɥʇ ʞuıן oʇ uoıʇɐʇs uıɐɹʇ ɐ ʞɔıןƆ ]ɹǝpuod[",
"block.create.packager": "ɹǝbɐʞɔɐԀ",
"block.create.packager.tooltip.summary": "˙ʞɹoʍʇǝu sɔıʇsıboן ɐ oʇ sʇuǝʇuoɔ ʎɹoʇuǝʌuı ʇıɯqns oʇ ʞuıן ɹǝbɐʞɔɐd ɥɔɐʇʇɐ 'ʎןǝʌıʇɐuɹǝʇןⱯ ˙ssǝɹppɐ ʇǝbɹɐʇ ʎɟıɔǝds oʇ ubıs ɥɔɐʇʇⱯ ˙ǝuoʇspǝɹ uo ʎɹoʇuǝʌuı pǝɥɔɐʇʇɐ ɯoɹɟ sǝbɐʞɔɐd sǝʇɐǝɹƆ ]ɹǝpuod[",
"block.create.packager_link": "ʞuıꞀ ɹǝbɐʞɔɐԀ",
"block.create.packager_link.tooltip.summary": "suoıʇɐʇıɯıן ǝbuɐɹ oN ˙ʎɔuǝnbǝɹɟ ɹıǝɥʇ ǝɹɐɥs oʇ ʇuǝɯǝɔɐןd ǝɹoɟǝq sʞuıן ɹǝɥʇo ʞɔıןƆ ˙ɯoɹɟ ʇsǝnbǝɹ oʇ ǝןןıɐʌɐ ʎɹoʇuǝʌuı ʇǝbɹɐʇ sʇı ǝʞɐɯ oʇ ɹǝbɐʞɔɐd oʇ ɥɔɐʇʇⱯ ]ɹǝpuod[",
"block.create.peculiar_bell": "ןןǝᗺ ɹɐıןnɔǝԀ",
"block.create.peculiar_bell.tooltip.summary": "˙˙˙sʇɔǝɟɟǝ-ǝpıs ǝʌɐɥ ʎɐɯ ‾ǝɹıℲ ןnoS‾ uǝdo ǝʌoqɐ ʇɥbıɹ ʇı buıɔɐןԀ ˙‾ןןǝᗺ ssɐɹᗺ‾ ǝʌıʇɐɹoɔǝp Ɐ",
"block.create.pink_display_cloth": "ɥʇoןƆ ʎɐןdsıᗡ ʞuıԀ",
@ -681,6 +698,7 @@
"block.create.pulse_extender": "ɹǝpuǝʇxƎ ǝsןnԀ",
"block.create.pulse_repeater": "ɹǝʇɐǝdǝᴚ ǝsןnԀ",
"block.create.pulse_timer": "ɹǝɯı⟘ ǝsןnԀ",
"block.create.pulse_timer.tooltip.summary": ןɐubıs ʇuɐʇsuoɔ ɐ ʎq pǝɹǝʍod sı ǝpıs ʇnduı ǝɥʇ ssǝןun sǝsןnd ǝuoʇspǝɹ sʇıɯǝ ʎןpǝʇɐǝdǝᴚ ˙ʇoןs ʇnduı ǝɥʇ buısn ʎɐןǝp ɐ ʇǝS ]ɹǝpuod[",
"block.create.purple_display_cloth": "ɥʇoןƆ ʎɐןdsıᗡ ǝןdɹnԀ",
"block.create.purple_nixie_tube": "ǝqn⟘ ǝıxıN ǝןdɹnԀ",
"block.create.purple_postbox": "xoqʇsoԀ ǝןdɹnԀ",
@ -701,6 +719,7 @@
"block.create.redstone_contact": "ʇɔɐʇuoƆ ǝuoʇspǝᴚ",
"block.create.redstone_link": "ʞuıꞀ ǝuoʇspǝᴚ",
"block.create.redstone_requester": "ɹǝʇsǝnbǝᴚ ǝuoʇspǝᴚ",
"block.create.redstone_requester.tooltip.summary": "˙ʇuǝɯǝɔɐןd ǝɹoɟǝq ɹǝdǝǝʞ ʞɔoʇs ɐ ʇɐ pǝɹnbıɟuoɔ ǝq uɐɔ ʇsǝnbǝɹ sıɥʇ ʎןǝʌıʇɐuɹǝʇןⱯ ˙pǝʌıǝɔǝɹ sı ǝsןnd ǝuoʇspǝɹ ɐ uǝɥʍ ssǝɹppɐ uɐ oʇ pǝʇsǝnbǝɹ sɯǝʇı ʎɟıɔǝds oʇ I∩ uǝdO ˙ʎɔuǝnbǝɹɟ sʇı ǝsn oʇ ʇuǝɯǝɔɐןd ǝɹoɟǝq ʞuıן ɹǝbɐʞɔɐd ʞɔıןƆ ]ɹǝpuod[",
"block.create.refined_radiance_casing": "buısɐƆ ʇuɐıpɐᴚ",
"block.create.rope": "ǝdoᴚ",
"block.create.rope_pulley": "ʎǝןןnԀ ǝdoᴚ",
@ -798,6 +817,7 @@
"block.create.sticker": "ɹǝʞɔıʇS",
"block.create.sticky_mechanical_piston": "uoʇsıԀ ןɐɔıuɐɥɔǝW ʎʞɔıʇS",
"block.create.stock_ticker": "ɹǝʞɔı⟘ ʞɔoʇS",
"block.create.stock_ticker.tooltip.summary": "˙sǝıɹobǝʇɐɔ oʇuı sɯǝʇı pǝʎɐןdsıp ǝsıuɐbɹo oʇ ʞɔoןq ɹǝʞɔıʇ ʞɔoʇs ǝɥʇ ʞɔıןƆ ˙ssǝɹppɐ uǝʌıb ɐ oʇ sɹǝbɐʞɔɐd pǝʞuıן ʎuɐ ɯoɹɟ sɯǝʇı ʇsǝnbǝɹ oʇ ʎʇıʇuǝ ǝɥʇ ʞɔıןƆ ˙ɹǝdǝǝʞ ʞɔoʇs sʇı sɐ ʇɐǝs ɐ uo ʎʇıʇuǝ ʇuǝɔɐظpɐ uɐ spǝǝN ˙ʎɔuǝnbǝɹɟ sʇı ǝsn oʇ ʇuǝɯǝɔɐןd ǝɹoɟǝq ʞuıן ɹǝbɐʞɔɐd ʞɔıןƆ ]ɹǝpuod[",
"block.create.stockpile_switch": "ɥɔʇıʍS pןoɥsǝɹɥ⟘",
"block.create.stressometer": "ɹǝʇǝɯossǝɹʇS",
"block.create.tiled_glass": "ssɐן⅁ pǝןı⟘",
@ -918,6 +938,7 @@
"create.chain_conveyor.too_steep": "dǝǝʇs ooʇ ǝdoןS",
"create.chain_conveyor.valid_connection": "✔ ʇɔǝuuoƆ uɐƆ",
"create.clipboard.actions": "suoıʇɔⱯ pɹɐoqdıןƆ",
"create.clipboard.address_added": "pɹɐoqdıןƆ oʇ pǝppɐ ,%1$s,",
"create.clipboard.copied_from": "%1$s ɯoɹɟ sbuıʇʇǝs buıʎdoƆ",
"create.clipboard.copied_from_clipboard": "pɹɐoqdıןƆ ɯoɹɟ sǝıɹʇuǝ pǝppⱯ",
"create.clipboard.copy_other_clipboard": "pɹɐoqdıןƆ sıɥʇ ɯoɹɟ sǝıɹʇuǝ ʎdoƆ oʇ %1$s",
@ -990,6 +1011,11 @@
"create.crafting_blueprint.manually_assigned": "pǝubıssɐ ʎןןɐnuɐW",
"create.crafting_blueprint.optional": "ןɐuoıʇdO",
"create.crafting_blueprint.secondary_display_slot": "ʇoןS ʎɐןdsıᗡ ʎɹɐpuoɔǝS",
"create.display_cloth.hand_to_shop_keeper": "ɹǝdǝǝʞ doɥs ɐ oʇ sıɥʇ puɐH",
"create.display_cloth.shop_configured": "pǝɹnbıɟuoɔ doɥs ɯǝʇI",
"create.display_cloth.shopping_list_discarded": "pǝpɹɐɔsıp ʇsıן buıddoɥS",
"create.display_cloth.sneak_click_discard": "pɹɐɔsıp oʇ ʞɔıןƆ-ʞɐǝuS",
"create.display_cloth.total_cost": " :ʇsoɔ ןɐʇo⟘",
"create.display_link.attached_side": "ǝpıs pǝɥɔɐʇʇɐ uo ʞɔoןᗺ",
"create.display_link.clear": "uoıʇɔǝןǝs uoıʇısod pǝɹɐǝןƆ",
"create.display_link.display_on": ":oʇ ɐʇɐp ǝʇıɹM",
@ -1074,7 +1100,21 @@
"create.elevator_contact.floor_description": "uoıʇdıɹɔsǝᗡ ɹooןℲ",
"create.elevator_contact.floor_identifier": "ɹǝıɟıʇuǝpI ɹooןℲ",
"create.elevator_contact.title": "ʇɔɐʇuoƆ ɹoʇɐʌǝןƎ",
"create.factory_panel.click_second_panel": "˙˙˙ʇɔǝuuoɔ oʇ ןǝuɐd puoɔǝs ɐ ʞɔıןƆ",
"create.factory_panel.click_to_configure": "ǝdıɔǝɹ ɐ ʎɟıɔǝds oʇ ʞɔıןƆ",
"create.factory_panel.connection_aborted": "pǝʇɹoqɐ uoıʇɔǝuuoɔ ʇnduI",
"create.factory_panel.cycled_arrow_path": "%1$s ǝpoɯ buıɥʇɐd ʍoɹɹɐ pǝןɔʎƆ",
"create.factory_panel.in_progress": ")ssǝɹboɹԀ uI(",
"create.factory_panel.input_in_restock_mode": "ǝpoɯ ʞɔoʇsǝɹ uı ǝq ʇouuɐɔ ןǝuɐd ʇnduI",
"create.factory_panel.new_factory_task": "ʞsɐʇ ʎɹoʇɔɐɟ ʍǝN",
"create.factory_panel.no_item": "ʇsɹıɟ ɯǝʇı uɐ ǝʌɐɥ ʇsnɯ ןǝuɐd ʇnduI",
"create.factory_panel.panels_connected": "%2$s ǝʇɐǝɹɔ oʇ %1$s buısn ʍoN",
"create.factory_panel.same_orientation": "uoıʇɐʇuǝıɹo ǝɯɐs ǝɥʇ ǝʌɐɥ ʇsnɯ sןǝuɐԀ",
"create.factory_panel.same_surface": "ǝɔɐɟɹns ǝɯɐs ǝɥʇ uo ǝq ʇsnɯ sןǝuɐԀ",
"create.factory_panel.some_links_unloaded": "pǝpɐoן ʇou ǝɹɐ sʞuıן ǝɯoS",
"create.factory_panel.target_amount": "ǝbɐɹoʇS uı ʇunoɯⱯ ʇǝbɹɐ⟘",
"create.factory_panel.too_far_apart": "ɹǝɥʇo ɥɔɐǝ ɯoɹɟ ʎɐʍɐ ɹɐɟ ooʇ ǝɹɐ sןǝuɐԀ",
"create.factory_panel.tune_before_placing": "buıɔɐןd ǝɹoɟǝq ɹǝʇʇıɯsuɐɹʇ ɐ oʇ ǝun⟘",
"create.flap_display.cycles.alphabet": "Z؛ʎ؛X؛Λ؛∩؛⟘؛S؛ᴚ؛Ὁ؛Ԁ؛O؛N؛W؛Ꞁ؛ʞ؛ſ؛I؛H؛⅁؛Ⅎ؛Ǝ؛ᗡ؛Ɔ؛ᗺ؛Ɐ؛ ",
"create.flap_display.cycles.arrival_time": "sϛㄣ؛s0Ɛ؛sϛƖ؛ʍou؛uıɯ ؛ ",
"create.flap_display.cycles.fluid_units": " ᗺ؛ᗺɯ",
@ -1110,6 +1150,11 @@
"create.generic.unit.stress": "ns",
"create.generic.unit.ticks": "sʞɔı⟘",
"create.generic.width": "ɥʇpıM",
"create.gui.address_box.clipboard_tip": "ʞɔɐɹ⟘ buıdǝǝʞ",
"create.gui.address_box.clipboard_tip_1": "uo ,#, ɥʇıʍ buıʇɹɐʇs sǝıɹʇuƎ",
"create.gui.address_box.clipboard_tip_2": "ןןıʍ spɹɐoqdıןɔ ʎqɹɐǝu ɹo pןǝɥ",
"create.gui.address_box.clipboard_tip_3": "˙ʇnduı sıɥʇ ǝʇǝןdɯoɔ-oʇnɐ dןǝɥ",
"create.gui.address_box.clipboard_tip_4": ")ʎɹoʇɔɐɟ# 'ǝbɐɹoʇs# ˙b˙ǝ(",
"create.gui.adjustable_crate.storageSpace": "ǝɔɐdS ǝbɐɹoʇS",
"create.gui.adjustable_crate.title": "ǝʇɐɹƆ ǝןqɐʇsnظpⱯ",
"create.gui.assembly.exception": ":ǝןqɯǝssɐ oʇ ǝןqɐun sɐʍ uoıʇdɐɹʇuoƆ sıɥ⟘",
@ -1146,6 +1191,43 @@
"create.gui.config.overlay8": "uoıʇısod ʇןnɐɟǝp ǝɥʇ oʇ ʇǝsǝɹ oʇ",
"create.gui.contraptions.network_overstressed": "˙‾ʇɔɐdɯı‾ ‾ssǝɹʇs‾ ɥbıɥ ɐ ɥʇıʍ sʇuǝuodɯoɔ ǝɥʇ ‾uʍop‾ ‾ʍoןs‾ ɹo sǝɔɹnos ǝɹoɯ ppⱯ ˙‾pǝssǝɹʇsɹǝʌo‾ sı uoıʇdɐɹʇuoɔ sıɥʇ ʇɐɥʇ sɹɐǝddɐ ʇI",
"create.gui.contraptions.not_fast_enough": "˙‾pǝǝds‾ ‾ɥbnouǝ‾ ɥʇıʍ buıʇɐʇoɹ ‾ʇou‾ sı %1$s sıɥʇ ʇɐɥʇ sɹɐǝddɐ ʇI",
"create.gui.factory_panel.connect_input": "ןǝuɐd ʇnduı uɐ ʇɔǝuuoƆ",
"create.gui.factory_panel.empty_panel": "ןǝuɐd ʎʇdɯƎ",
"create.gui.factory_panel.expected_output": "%1$s ʇɔǝdxƎ",
"create.gui.factory_panel.expected_output_tip": "buıuɹnʇǝɹ ʇndʇno ɟo ʇunoɯɐ ǝɥ⟘",
"create.gui.factory_panel.expected_output_tip_1": "ʇsǝnbǝɹ ןnɟssǝɔɔns ɥɔɐǝ ɹǝʇɟɐ",
"create.gui.factory_panel.expected_output_tip_2": "ǝbuɐɥɔ oʇ ןןoɹɔS",
"create.gui.factory_panel.left_click_disconnect": "ʇɔǝuuoɔsıp oʇ ʞɔıןƆ-ʇɟǝꞀ",
"create.gui.factory_panel.left_click_reset": "ʇǝsǝɹ oʇ ʞɔıןƆ-ʇɟǝꞀ",
"create.gui.factory_panel.no_open_promises": "sǝsıɯoɹd uǝdo oN",
"create.gui.factory_panel.promise_prevents_oversending": "˙buıpuǝs-ɹǝʌo sʇuǝʌǝɹd sıɥ⟘",
"create.gui.factory_panel.promised_items": "sɯǝʇı pǝsıɯoɹԀ",
"create.gui.factory_panel.promises_do_not_expire": "ǝɹıdxǝ ʇou op sǝsıɯoɹԀ",
"create.gui.factory_panel.promises_expire_title": "ɹǝʇɟɐ ǝɹıdxǝ sǝsıɯoɹԀ",
"create.gui.factory_panel.recipe_address": "˙˙˙oʇ sʇnduı puǝS",
"create.gui.factory_panel.recipe_address_given": "oʇ sʇnduı buıpuǝS",
"create.gui.factory_panel.recipe_address_tip": "ǝɹǝɥʍ ssǝɹppɐ uɐ ɹǝʇuƎ",
"create.gui.factory_panel.recipe_address_tip_1": "˙ʇno pǝıɹɹɐɔ sı ǝdıɔǝɹ sıɥʇ",
"create.gui.factory_panel.recipe_promises_tip": "ǝsıɯoɹd ɐ 'ʇuǝs ǝɹɐ sʇnduı uǝɥM",
"create.gui.factory_panel.recipe_promises_tip_1": "˙ǝʌıɹɹɐ sʇndʇno ןıʇun pןǝɥ sı",
"create.gui.factory_panel.restocker_address": "˙˙˙oʇ sɯǝʇı puǝS",
"create.gui.factory_panel.restocker_address_given": "oʇ buıpuǝS",
"create.gui.factory_panel.restocker_address_tip": "ןןıʍ ʇɐɥʇ ssǝɹppɐ uɐ ɹǝʇuƎ",
"create.gui.factory_panel.restocker_address_tip_1": "˙ǝɹǝɥ ǝʌıɹɹɐ oʇ sǝbɐʞɔɐd ǝsnɐɔ",
"create.gui.factory_panel.restocker_promises_tip": "ǝsıɯoɹd ɐ 'ʇuǝs ǝɹɐ sɯǝʇı uǝɥM",
"create.gui.factory_panel.restocker_promises_tip_1": "˙ǝʌıɹɹɐ ʎǝɥʇ ןıʇun pןǝɥ sı",
"create.gui.factory_panel.scroll_to_change_amount": "ʇunoɯɐ ǝbuɐɥɔ oʇ ןןoɹɔS",
"create.gui.factory_panel.send_item": "%1$s puǝS",
"create.gui.factory_panel.sending_item": "%1$s buıpuǝS",
"create.gui.factory_panel.sending_item_tip": "ןǝʌǝן ʞɔoʇs ןɐɔoן ɹǝʌǝuǝɥʍ",
"create.gui.factory_panel.sending_item_tip_1": "ʇunoɯɐ ʇǝbɹɐʇ ǝɥʇ ʍoןǝq sı",
"create.gui.factory_panel.storage_level": "ןǝʌǝן ǝbɐɹoʇS",
"create.gui.factory_panel.storage_level_and_target": "ʇǝbɹɐʇ puɐ ןǝʌǝן ǝbɐɹoʇS",
"create.gui.factory_panel.storage_level_tip": "ʇǝs ǝq uɐɔ ʇunoɯɐ pǝʇǝbɹɐ⟘",
"create.gui.factory_panel.storage_level_tip_1": "ʇoןs ɹǝʇןıɟ ǝɥʇ buısn ʎq",
"create.gui.factory_panel.storage_level_tip_2": "ǝɔɐɟɹǝʇuı sıɥʇ ɟo ǝpısʇno",
"create.gui.factory_panel.title_as_recipe": "sbuıʇʇǝS ǝdıɔǝᴚ",
"create.gui.factory_panel.title_as_restocker": "sbuıʇʇǝS ɹǝʞɔoʇsǝᴚ",
"create.gui.filter.allow_list": "ʇsıꞀ-ʍoןןⱯ",
"create.gui.filter.allow_list.description": "˙buıɥʇʎɹǝʌǝ sʇɔǝظǝɹ ʇsıꞀ-ʍoןןⱯ ʎʇdɯǝ uⱯ ˙ǝʌoqɐ ǝɥʇ ɟo ʎuɐ ɥɔʇɐɯ ʎǝɥʇ ɟı ssɐd sɯǝʇI",
"create.gui.filter.deny_list": "ʇsıꞀ-ʎuǝᗡ",
@ -1168,6 +1250,12 @@
"create.gui.package_port.not_targeting_anything": "buıɥʇʎuɐ buıʇǝbɹɐʇ ʇou sı ʇɹod ǝbɐʞɔɐԀ",
"create.gui.package_port.send_and_receive": "sǝbɐʞɔɐd ǝʌıǝɔǝɹ puɐ puǝS",
"create.gui.package_port.send_only": "sǝbɐʞɔɐd puǝs ʎןuO",
"create.gui.redstone_requester.allow_partial": "sɹǝpɹo ןɐıʇɹɐd ʍoןןⱯ",
"create.gui.redstone_requester.dont_allow_partial": "sɯǝʇı ןןɐ puǝs ʇsnW",
"create.gui.redstone_requester.requester_address": "˙˙˙oʇ ɹǝpɹo puǝS",
"create.gui.redstone_requester.requester_address_given": "oʇ ɹǝpɹo buıpuǝS",
"create.gui.redstone_requester.requester_address_tip": "sıɥʇ ssǝɹppɐ ǝɥʇ ɹǝʇuƎ",
"create.gui.redstone_requester.requester_address_tip_1": "˙oʇ puǝs ǝq pןnoɥs ɹǝpɹo",
"create.gui.schedule.add_condition": "uoıʇıpuoƆ ppⱯ",
"create.gui.schedule.add_entry": "uoıʇɔⱯ ppⱯ",
"create.gui.schedule.alternative_condition": "uoıʇıpuoƆ ǝʌıʇɐuɹǝʇןⱯ",
@ -1233,15 +1321,32 @@
"create.gui.sequenced_gearshift.speed.forward_fast": "spɹɐʍɹoℲ 'pǝǝds ǝןqnoᗡ",
"create.gui.sequenced_gearshift.title": "ʇɟıɥsɹɐǝ⅁ pǝɔuǝnbǝS",
"create.gui.speedometer.title": "pǝǝdS uoıʇɐʇoᴚ",
"create.gui.stock_ticker.checking_stocks": "˙˙˙sʞɔoʇs buıʞɔǝɥƆ",
"create.gui.stock_ticker.confirm_order": "ɹǝpɹO ɯɹıɟuoƆ",
"create.gui.stock_ticker.inventories_empty": "ʎʇdɯƎ ǝɹɐ sǝıɹoʇuǝʌuI pǝʞuıꞀ",
"create.gui.stock_ticker.no_packagers_linked": "pǝʞuıꞀ sɹǝbɐʞɔɐԀ oN",
"create.gui.stock_ticker.no_search_results": "punoɟ sɯǝʇı buıɥɔʇɐɯ oN",
"create.gui.stock_ticker.package_adress": "ssǝɹppⱯ ǝbɐʞɔɐԀ",
"create.gui.stock_ticker.program_requester": "ɹǝʇsǝnbǝᴚ ɯɐɹboɹԀ",
"create.gui.stock_ticker.request_sent": "¡ʇuǝS ʇsǝnbǝᴚ",
"create.gui.stock_ticker.search_items": "sɯǝʇI ɥɔɹɐǝS",
"create.gui.stock_keeper.checking_stocks": "˙˙˙sʞɔoʇs buıʞɔǝɥƆ",
"create.gui.stock_keeper.configure": "ǝɹnbıɟuoƆ",
"create.gui.stock_keeper.confirm_order": "ɹǝpɹO ɯɹıɟuoƆ",
"create.gui.stock_keeper.inventories_empty": "ʎʇdɯƎ ǝɹɐ sǝıɹoʇuǝʌuI pǝʞuıꞀ",
"create.gui.stock_keeper.network_lock_tip": "sɹǝʎɐןԀ ɹǝɥʇo sʇuǝʌǝɹd buıʞɔoꞀ",
"create.gui.stock_keeper.network_lock_tip_1": ןʇɔǝɹıp sɯǝʇı buıɹǝpɹo ɯoɹɟ",
"create.gui.stock_keeper.network_lock_tip_2": ןbboʇ oʇ ʞɔıןƆ",
"create.gui.stock_keeper.network_locked": "pǝʞɔoן sı ʞɹoʍʇǝN",
"create.gui.stock_keeper.network_open": "uǝdo sı ʞɹoʍʇǝN",
"create.gui.stock_keeper.no_packagers_linked": "pǝʞuıꞀ sɹǝbɐʞɔɐԀ oN",
"create.gui.stock_keeper.no_search_results": "punoɟ sɯǝʇı buıɥɔʇɐɯ oN",
"create.gui.stock_keeper.package_adress": "ssǝɹppⱯ ǝbɐʞɔɐԀ",
"create.gui.stock_keeper.program_requester": "ɹǝʇsǝnbǝᴚ ɯɐɹboɹԀ",
"create.gui.stock_keeper.request_sent": "¡ʇuǝS ʇsǝnbǝᴚ",
"create.gui.stock_keeper.search_items": "sɯǝʇI ɥɔɹɐǝS",
"create.gui.stock_keeper.send": "puǝS",
"create.gui.stock_keeper.title": "ɹǝdǝǝʞ ʞɔoʇS",
"create.gui.stock_keeper.unsorted_category": "pǝʇɹosu∩",
"create.gui.stock_ticker.category_editor": "ɹoʇıpƎ ʎɹobǝʇɐƆ",
"create.gui.stock_ticker.category_filter": "ɹǝʇןıℲ ʎɹobǝʇɐƆ",
"create.gui.stock_ticker.category_filter_tip": "ɹǝʇןıℲ ǝʇnqıɹʇʇⱯ ɹo ʇsıꞀ ɐ ǝɔɐןԀ",
"create.gui.stock_ticker.category_filter_tip_1": "pǝpnןɔuı ǝɹɐ sɯǝʇı ɥɔıɥʍ ʎɟıɔǝds oʇ",
"create.gui.stock_ticker.category_name": ɯɐN ʎɹobǝʇɐƆ",
"create.gui.stock_ticker.delete_category": "ʎɹobǝʇɐƆ ǝʇǝןǝᗡ",
"create.gui.stock_ticker.empty_category_name_placeholder": ")ʎʇdɯƎ(",
"create.gui.stock_ticker.new_category": "ʎɹobǝʇɐƆ ʍǝN",
"create.gui.stressometer.capacity": "ʎʇıɔɐdɐƆ buıuıɐɯǝᴚ",
"create.gui.stressometer.no_rotation": "uoıʇɐʇoᴚ oN",
"create.gui.stressometer.overstressed": "pǝssǝɹʇsɹǝʌO",
@ -1390,6 +1495,7 @@
"create.linked_controller.press_keybind": "ʎǝʞ ǝʌıʇɔǝdsǝɹ ǝɥʇ oʇ ʎɔuǝnbǝɹɟ sıɥʇ puıq oʇ '%6$s ɹo %5$s '%4$s '%3$s '%2$s '%1$s ssǝɹԀ",
"create.logistically_linked.connected": ןןnɟssǝɔɔns sɹǝʇʇıɯsuɐɹ⟘ ɹǝɥʇo oʇ pǝʇɔǝuuoƆ",
"create.logistically_linked.new_network_started": "pǝʇɹɐʇs ʞɹoʍʇǝu ɹǝʇʇıɯsuɐɹʇ ʍǝN",
"create.logistically_linked.protected": "pǝʇɔǝʇoɹԀ sı ʞɹoʍʇǝN sɔıʇsıboꞀ",
"create.logistically_linked.tooltip": "pǝɹnbıɟuoɔ ʎɔuǝnbǝɹℲ",
"create.logistically_linked.tooltip_clear": "ʇǝsǝɹ oʇ pıɹb buıʇɟɐɹɔ uı ǝɔɐןԀ",
"create.logistically_linked.tuned": "ɹǝʇʇıɯsuɐɹʇ sıɥʇ oʇ pǝun⟘",
@ -2570,6 +2676,18 @@
"create.station.train_map_color": "sdɐW uo ɹoןoƆ",
"create.station.train_not_aligned": "'ǝןqɯǝssɐsıp ʇouuɐƆ",
"create.station.train_not_aligned_1": "pǝubıןɐ sǝbɐıɹɹɐɔ ןןɐ ʇou",
"create.stock_keeper.cash_register_full": "ɹǝʇsıbǝᴚ ɥsɐƆ uı ǝɔɐds ɥbnouǝ ʇoN :pǝןןǝɔuɐɔ ǝsɐɥɔɹnԀ",
"create.stock_keeper.keeper_missing": "buıssıɯ ɹǝdǝǝʞ ʞɔoʇS",
"create.stock_keeper.limited_stock": ןןıɐʌɐ ʞɔoʇs pǝʇıɯıꞀ",
"create.stock_keeper.locked": "pǝʞɔoן uǝǝq sɐɥ ssǝɔɔɐ ʇɔǝɹıp 'ʇsıן buıddoɥS ɐ buısn ʇɔɐɹǝʇuI",
"create.stock_keeper.no_price_set": "ʇsɹıɟ ǝɔıɹd ɐ ʇǝs ʇsnɯ ɹǝuʍo doɥS",
"create.stock_keeper.out_of_stock": "ʞɔoʇS ɟo ʇnO",
"create.stock_keeper.shopping_list_empty_hand": "ʇsıן buıddoɥs ɐ ʇɹɐʇs oʇ pǝɹınbǝɹ puɐɥ ʎʇdɯƎ",
"create.stock_keeper.stock_level_too_low": "pǝʇɔǝdxǝ uɐɥʇ ɹǝʍoן sןǝʌǝן ʞɔoʇS :pǝןןǝɔuɐɔ ǝsɐɥɔɹnԀ",
"create.stock_keeper.too_broke": "ǝsɐɥɔɹnd sıɥʇ pɹoɟɟɐ ʇouuɐɔ noʎ",
"create.stock_keeper.use_list_to_add_purchases": "ǝsɐɥɔɹnd ɹnoʎ oʇ ǝɹoɯ ppɐ oʇ ʇsıן sıɥʇ ǝs∩",
"create.stock_ticker.click_to_retrieve": "ǝʌǝıɹʇǝɹ oʇ ʞɔıןƆ",
"create.stock_ticker.contains_payments": ":sʇuǝɯʎɐd suıɐʇuoƆ",
"create.subtitle.blaze_munch": "sǝɥɔunɯ ɹǝuɹnᗺ ǝzɐןᗺ",
"create.subtitle.cardboard_bonk": "ʞuoq ʇuɐuosǝᴚ",
"create.subtitle.cogs": ןqɯnɹ sןǝǝɥʍboƆ",
@ -2821,6 +2939,9 @@
"item.create.builders_tea": "ɐǝ⟘ s,ɹǝpןınᗺ",
"item.create.builders_tea.tooltip.summary": "‾˙buıʇɐɹnʇɐS‾ puɐ ‾buıʇɐʌıʇoW‾ -pǝʇɹɐʇs ʎɐp ǝɥʇ ʇǝb oʇ ʞuıɹp ʇɔǝɟɹǝd ǝɥ⟘",
"item.create.cardboard": "pɹɐoqpɹɐƆ",
"item.create.cardboard_armor.tooltip.behaviour1": "˙‾ǝsınbsıp‾ snonɔıdsuoɔuı uɐ ǝʇɐʌıʇɔɐ oʇ ‾ʞɐǝuS‾",
"item.create.cardboard_armor.tooltip.condition1": "pǝddınbǝ ʇǝs ןןnɟ uǝɥM",
"item.create.cardboard_armor.tooltip.summary": "˙‾ɥʇןɐǝʇs‾ puɐ ‾ǝןʎʇs‾ pǝsɐǝɹɔuı ɹoɟ ‾ʇuǝɯdınbǝ‾ ‾ǝןqɐɹɐǝM‾",
"item.create.cardboard_boots": "sʇooᗺ pɹɐoqpɹɐƆ",
"item.create.cardboard_chestplate": "ǝʇɐןdʇsǝɥƆ pɹɐoqpɹɐƆ",
"item.create.cardboard_helmet": "ʇǝɯןǝH pɹɐoqpɹɐƆ",
@ -2831,6 +2952,7 @@
"item.create.cardboard_package_12x12": "ǝbɐʞɔɐԀ pɹɐoqpɹɐƆ",
"item.create.cardboard_pulp": "dןnԀ pɹɐoqpɹɐƆ",
"item.create.cardboard_sword": "pɹoʍS pɹɐoqpɹɐƆ",
"item.create.cardboard_sword.tooltip.summary": "˙ǝɔıoɥɔ ɟo uodɐǝʍ ןnɟɹǝʍod ʇǝʎ '‾ssǝןɯɹɐɥ‾ ‾ʎןʇsoɯ‾ Ɐ ˙ʞuoᗺ",
"item.create.chest_minecart_contraption": "uoıʇdɐɹʇuoƆ ʇɹɐɔǝuıW ʇsǝɥƆ",
"item.create.chocolate_bucket": "ʇǝʞɔnᗺ ǝʇɐןoɔoɥƆ",
"item.create.chocolate_glazed_berries": "sǝıɹɹǝᗺ pǝzɐן⅁ ǝʇɐןoɔoɥƆ",
@ -2944,6 +3066,9 @@
"item.create.netherite_diving_helmet.tooltip.condition1": ")ʇǝs ןןnℲ( uɹoM uǝɥM",
"item.create.netherite_diving_helmet.tooltip.summary": "˙ooʇ '‾ǝʇıɹǝɥʇǝN‾ uı pǝɹǝʌoɔ ǝq oʇ ǝʌɐɥ ‾ʇǝǝℲ puɐ sbǝꞀ‾ 'ǝʌıʇɔǝɟɟǝ ǝq o⟘ ˙‾ʇɐǝɥ ǝɯǝɹʇxǝ‾ ɯoɹɟ noʎ ʇɔǝʇoɹd uɐɔ sıɥʇ '‾ʞuɐʇʞɔɐᗺ ǝʇıɹǝɥʇǝN‾ ɐ ɥʇıʍ ɹǝɥʇǝbo⟘",
"item.create.package_filter": "ɹǝʇןıℲ ǝbɐʞɔɐԀ",
"item.create.package_filter.tooltip.behaviour1": "˙‾ǝɔɐɟɹǝʇuı uoıʇɐɹnbıɟuoɔ‾ ǝɥʇ suǝdO",
"item.create.package_filter.tooltip.condition1": "pǝʞɔıןƆ-ᴚ uǝɥM",
"item.create.package_filter.tooltip.summary": "sʇuǝuodɯoƆ s,ǝʇɐǝɹƆ ɟo ‾sʇoןS ɹǝʇןıℲ‾ uı pǝsn ǝq uɐƆ ˙‾ssǝɹppɐ‾ pǝʇǝbɹɐʇ ɹıǝɥʇ ʎq ‾sɯǝʇı pǝbɐʞɔɐd sǝɥɔʇɐW‾",
"item.create.polished_rose_quartz": "zʇɹɐnὉ ǝsoᴚ pǝɥsıןoԀ",
"item.create.potato_cannon": "uouuɐƆ oʇɐʇoԀ",
"item.create.potato_cannon.tooltip.behaviour1": "˙‾ʎɹoʇuǝʌuI‾ ɹnoʎ ɯoɹɟ ɯǝʇı ǝןqɐʇıns ɐ ‾sʇooɥS‾",

View file

@ -251,6 +251,7 @@
"block.create.cardboard_block": "Block of Cardboard",
"block.create.cart_assembler": "Cart Assembler",
"block.create.chain_conveyor": "Chain Conveyor",
"block.create.chain_conveyor.tooltip.summary": "[ponder] Connect with chains to form conveyor networks. Use frogports to transport packages on them. Use wrench to take a ride.",
"block.create.cherry_window": "Cherry Window",
"block.create.cherry_window_pane": "Cherry Window Pane",
"block.create.chocolate": "Chocolate",
@ -437,8 +438,12 @@
"block.create.deployer": "Deployer",
"block.create.depot": "Depot",
"block.create.desk_bell": "Desk Bell",
"block.create.desk_bell.tooltip.behaviour1": "_Plays a sound_ when arriving at the _target floor_.",
"block.create.desk_bell.tooltip.condition1": "When attached to Elevator Contraption",
"block.create.desk_bell.tooltip.summary": "Ring for Service! Emits a _redstone signal_ when activated.",
"block.create.diorite_pillar": "Diorite Pillar",
"block.create.display_board": "Display Board",
"block.create.display_cloth.tooltip.summary": "[ponder] Can be used for decoration, click with item to display them. Alternatively, when used on a stock keeper, specify a request from your network that can be purchased by other players. The cost can be specified after placing the configured display cloth.",
"block.create.display_link": "Display Link",
"block.create.dripstone_pillar": "Dripstone Pillar",
"block.create.elevator_contact": "Elevator Contact",
@ -454,6 +459,11 @@
"block.create.exposed_copper_tile_stairs": "Exposed Copper Tile Stairs",
"block.create.exposed_copper_tiles": "Exposed Copper Tiles",
"block.create.factory_panel": "Factory Panel",
"block.create.factory_panel.tooltip.behaviour1": "Restocker mode: Panel requests items from the network to the specified address until the target amount is in the container. Short click the panel to set an address.",
"block.create.factory_panel.tooltip.behaviour2": "Recipe mode: Panel requests ingredients to an address until the target amounted of the output item is found on the network (e.g. Send 1 Log to 'saw' and expect 6 Planks, until at least 64 Planks on network). Short click the panel to set an address and connect other panels as input items. Panels specifying an output item can also be reused as an input for other panels.",
"block.create.factory_panel.tooltip.condition1": "When attached to Packager",
"block.create.factory_panel.tooltip.condition2": "When not attached to Packager",
"block.create.factory_panel.tooltip.summary": "[ponder] Click packager link before placement to use its frequency. Place item to monitor in filter slot. Hold click to specify a target amount to maintain in storage.",
"block.create.fake_track": "Track Marker for Maps",
"block.create.fluid_pipe": "Fluid Pipe",
"block.create.fluid_tank": "Fluid Tank",
@ -500,6 +510,9 @@
"block.create.industrial_iron_window_pane": "Industrial Iron Window Pane",
"block.create.item_drain": "Item Drain",
"block.create.item_hatch": "Item Hatch",
"block.create.item_hatch.tooltip.behaviour1": "_Deposits_ your items into the _container_ it is placed on. _Hotbar items_ and items _with contents_ will _not_ be transferred.",
"block.create.item_hatch.tooltip.condition1": "When R-Clicked",
"block.create.item_hatch.tooltip.summary": "_Quickly solves_ your _inventory_ clutter and makes it someone else's problem.",
"block.create.item_vault": "Item Vault",
"block.create.jungle_window": "Jungle Window",
"block.create.jungle_window_pane": "Jungle Window Pane",
@ -598,8 +611,12 @@
"block.create.oxidized_copper_tile_stairs": "Oxidized Copper Tile Stairs",
"block.create.oxidized_copper_tiles": "Oxidized Copper Tiles",
"block.create.package_frogport": "Package Frogport",
"block.create.package_frogport.tooltip.summary": "[ponder] Click a chain conveyor to link then place. Moves packages to and from chains based on their address. Set address filter in UI. Matching packages will be removed from chains and vice versa.",
"block.create.package_postbox.tooltip.summary": "[ponder] Click a train station to link then place. Moves packages to and from trains based on their address. Set address filter in UI. Matching packages will be removed from trains and vice versa.",
"block.create.packager": "Packager",
"block.create.packager.tooltip.summary": "[ponder] Creates packages from attached inventory on redstone. Attach sign to specify target address. Alternatively, attach packager link to submit inventory contents to a logistics network.",
"block.create.packager_link": "Packager Link",
"block.create.packager_link.tooltip.summary": "[ponder] Attach to packager to make its target inventory available to request from. Click other links before placement to share their frequency. No range limitations",
"block.create.peculiar_bell": "Peculiar Bell",
"block.create.peculiar_bell.tooltip.summary": "A decorative _Brass Bell_. Placing it right above open _Soul Fire_ may have side-effects...",
"block.create.pink_display_cloth": "Pink Display Cloth",
@ -681,6 +698,7 @@
"block.create.pulse_extender": "Pulse Extender",
"block.create.pulse_repeater": "Pulse Repeater",
"block.create.pulse_timer": "Pulse Timer",
"block.create.pulse_timer.tooltip.summary": "[ponder] Set a delay using the input slot. Repeatedly emits redstone pulses unless the input side is powered by a constant signal.",
"block.create.purple_display_cloth": "Purple Display Cloth",
"block.create.purple_nixie_tube": "Purple Nixie Tube",
"block.create.purple_postbox": "Purple Postbox",
@ -701,6 +719,7 @@
"block.create.redstone_contact": "Redstone Contact",
"block.create.redstone_link": "Redstone Link",
"block.create.redstone_requester": "Redstone Requester",
"block.create.redstone_requester.tooltip.summary": "[ponder] Click packager link before placement to use its frequency. Open UI to specify items requested to an address when a redstone pulse is received. Alternatively this request can be configured at a stock keeper before placement.",
"block.create.refined_radiance_casing": "Radiant Casing",
"block.create.rope": "Rope",
"block.create.rope_pulley": "Rope Pulley",
@ -798,6 +817,7 @@
"block.create.sticker": "Sticker",
"block.create.sticky_mechanical_piston": "Sticky Mechanical Piston",
"block.create.stock_ticker": "Stock Ticker",
"block.create.stock_ticker.tooltip.summary": "[ponder] Click packager link before placement to use its frequency. Needs an adjacent entity on a seat as its stock keeper. Click the entity to request items from any linked packagers to a given address. Click the stock ticker block to organise displayed items into categories.",
"block.create.stockpile_switch": "Threshold Switch",
"block.create.stressometer": "Stressometer",
"block.create.tiled_glass": "Tiled Glass",
@ -918,6 +938,7 @@
"create.chain_conveyor.too_steep": "Slope too steep",
"create.chain_conveyor.valid_connection": "Can Connect ✔",
"create.clipboard.actions": "Clipboard Actions",
"create.clipboard.address_added": "'%1$s' added to Clipboard",
"create.clipboard.copied_from": "Copying settings from %1$s",
"create.clipboard.copied_from_clipboard": "Added entries from Clipboard",
"create.clipboard.copy_other_clipboard": "%1$s to Copy entries from this Clipboard",
@ -990,6 +1011,11 @@
"create.crafting_blueprint.manually_assigned": "Manually assigned",
"create.crafting_blueprint.optional": "Optional",
"create.crafting_blueprint.secondary_display_slot": "Secondary Display Slot",
"create.display_cloth.hand_to_shop_keeper": "Hand this to a shop keeper",
"create.display_cloth.shop_configured": "Item shop configured",
"create.display_cloth.shopping_list_discarded": "Shopping list discarded",
"create.display_cloth.sneak_click_discard": "Sneak-Click to discard",
"create.display_cloth.total_cost": "Total cost: ",
"create.display_link.attached_side": "Block on attached side",
"create.display_link.clear": "Cleared position selection",
"create.display_link.display_on": "Write data to:",
@ -1074,7 +1100,21 @@
"create.elevator_contact.floor_description": "Floor Description",
"create.elevator_contact.floor_identifier": "Floor Identifier",
"create.elevator_contact.title": "Elevator Contact",
"create.factory_panel.click_second_panel": "Click a second panel to connect...",
"create.factory_panel.click_to_configure": "Click to specify a recipe",
"create.factory_panel.connection_aborted": "Input connection aborted",
"create.factory_panel.cycled_arrow_path": "Cycled arrow pathing mode %1$s",
"create.factory_panel.in_progress": "(In Progress)",
"create.factory_panel.input_in_restock_mode": "Input panel cannot be in restock mode",
"create.factory_panel.new_factory_task": "New factory task",
"create.factory_panel.no_item": "Input panel must have an item first",
"create.factory_panel.panels_connected": "Now using %1$s to create %2$s",
"create.factory_panel.same_orientation": "Panels must have the same orientation",
"create.factory_panel.same_surface": "Panels must be on the same surface",
"create.factory_panel.some_links_unloaded": "Some links are not loaded",
"create.factory_panel.target_amount": "Target Amount in Storage",
"create.factory_panel.too_far_apart": "Panels are too far away from each other",
"create.factory_panel.tune_before_placing": "Tune to a transmitter before placing",
"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.arrival_time": " ; min;now;15s;30s;45s",
"create.flap_display.cycles.fluid_units": "mB;B ",
@ -1110,6 +1150,11 @@
"create.generic.unit.stress": "su",
"create.generic.unit.ticks": "Ticks",
"create.generic.width": "Width",
"create.gui.address_box.clipboard_tip": "Keeping Track",
"create.gui.address_box.clipboard_tip_1": "Entries starting with '#' on",
"create.gui.address_box.clipboard_tip_2": "held or nearby clipboards will",
"create.gui.address_box.clipboard_tip_3": "help auto-complete this input.",
"create.gui.address_box.clipboard_tip_4": "(e.g. #storage, #factory)",
"create.gui.adjustable_crate.storageSpace": "Storage Space",
"create.gui.adjustable_crate.title": "Adjustable Crate",
"create.gui.assembly.exception": "This Contraption was unable to assemble:",
@ -1146,6 +1191,43 @@
"create.gui.config.overlay8": "to reset to the default position",
"create.gui.contraptions.network_overstressed": "It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.",
"create.gui.contraptions.not_fast_enough": "It appears that this %1$s is _not_ rotating with _enough_ _speed_.",
"create.gui.factory_panel.connect_input": "Connect an input panel",
"create.gui.factory_panel.empty_panel": "Empty panel",
"create.gui.factory_panel.expected_output": "Expect %1$s",
"create.gui.factory_panel.expected_output_tip": "The amount of output returning",
"create.gui.factory_panel.expected_output_tip_1": "after each successful request",
"create.gui.factory_panel.expected_output_tip_2": "Scroll to change",
"create.gui.factory_panel.left_click_disconnect": "Left-Click to disconnect",
"create.gui.factory_panel.left_click_reset": "Left-Click to reset",
"create.gui.factory_panel.no_open_promises": "No open promises",
"create.gui.factory_panel.promise_prevents_oversending": "This prevents over-sending.",
"create.gui.factory_panel.promised_items": "Promised items",
"create.gui.factory_panel.promises_do_not_expire": "Promises do not expire",
"create.gui.factory_panel.promises_expire_title": "Promises expire after",
"create.gui.factory_panel.recipe_address": "Send inputs to...",
"create.gui.factory_panel.recipe_address_given": "Sending inputs to",
"create.gui.factory_panel.recipe_address_tip": "Enter an address where",
"create.gui.factory_panel.recipe_address_tip_1": "this recipe is carried out.",
"create.gui.factory_panel.recipe_promises_tip": "When inputs are sent, a promise",
"create.gui.factory_panel.recipe_promises_tip_1": "is held until outputs arrive.",
"create.gui.factory_panel.restocker_address": "Send items to...",
"create.gui.factory_panel.restocker_address_given": "Sending to",
"create.gui.factory_panel.restocker_address_tip": "Enter an address that will",
"create.gui.factory_panel.restocker_address_tip_1": "cause packages to arrive here.",
"create.gui.factory_panel.restocker_promises_tip": "When items are sent, a promise",
"create.gui.factory_panel.restocker_promises_tip_1": "is held until they arrive.",
"create.gui.factory_panel.scroll_to_change_amount": "Scroll to change amount",
"create.gui.factory_panel.send_item": "Send %1$s",
"create.gui.factory_panel.sending_item": "Sending %1$s",
"create.gui.factory_panel.sending_item_tip": "whenever local stock level",
"create.gui.factory_panel.sending_item_tip_1": "is below the target amount",
"create.gui.factory_panel.storage_level": "Storage level",
"create.gui.factory_panel.storage_level_and_target": "Storage level and target",
"create.gui.factory_panel.storage_level_tip": "Targeted amount can be set",
"create.gui.factory_panel.storage_level_tip_1": "by using the filter slot",
"create.gui.factory_panel.storage_level_tip_2": "outside of this interface",
"create.gui.factory_panel.title_as_recipe": "Recipe Settings",
"create.gui.factory_panel.title_as_restocker": "Restocker Settings",
"create.gui.filter.allow_list": "Allow-List",
"create.gui.filter.allow_list.description": "Items pass if they match any of the above. An empty Allow-List rejects everything.",
"create.gui.filter.deny_list": "Deny-List",
@ -1168,6 +1250,12 @@
"create.gui.package_port.not_targeting_anything": "Package port is not targeting anything",
"create.gui.package_port.send_and_receive": "Send and receive packages",
"create.gui.package_port.send_only": "Only send packages",
"create.gui.redstone_requester.allow_partial": "Allow partial orders",
"create.gui.redstone_requester.dont_allow_partial": "Must send all items",
"create.gui.redstone_requester.requester_address": "Send order to...",
"create.gui.redstone_requester.requester_address_given": "Sending order to",
"create.gui.redstone_requester.requester_address_tip": "Enter the address this",
"create.gui.redstone_requester.requester_address_tip_1": "order should be send to.",
"create.gui.schedule.add_condition": "Add Condition",
"create.gui.schedule.add_entry": "Add Action",
"create.gui.schedule.alternative_condition": "Alternative Condition",
@ -1233,15 +1321,32 @@
"create.gui.sequenced_gearshift.speed.forward_fast": "Double speed, Forwards",
"create.gui.sequenced_gearshift.title": "Sequenced Gearshift",
"create.gui.speedometer.title": "Rotation Speed",
"create.gui.stock_ticker.checking_stocks": "Checking stocks...",
"create.gui.stock_ticker.confirm_order": "Confirm Order",
"create.gui.stock_ticker.inventories_empty": "Linked Inventories are Empty",
"create.gui.stock_ticker.no_packagers_linked": "No Packagers Linked",
"create.gui.stock_ticker.no_search_results": "No matching items found",
"create.gui.stock_ticker.package_adress": "Package Address",
"create.gui.stock_ticker.program_requester": "Program Requester",
"create.gui.stock_ticker.request_sent": "Request Sent!",
"create.gui.stock_ticker.search_items": "Search Items",
"create.gui.stock_keeper.checking_stocks": "Checking stocks...",
"create.gui.stock_keeper.configure": "Configure",
"create.gui.stock_keeper.confirm_order": "Confirm Order",
"create.gui.stock_keeper.inventories_empty": "Linked Inventories are Empty",
"create.gui.stock_keeper.network_lock_tip": "Locking prevents other Players",
"create.gui.stock_keeper.network_lock_tip_1": "from ordering items directly",
"create.gui.stock_keeper.network_lock_tip_2": "Click to toggle",
"create.gui.stock_keeper.network_locked": "Network is locked",
"create.gui.stock_keeper.network_open": "Network is open",
"create.gui.stock_keeper.no_packagers_linked": "No Packagers Linked",
"create.gui.stock_keeper.no_search_results": "No matching items found",
"create.gui.stock_keeper.package_adress": "Package Address",
"create.gui.stock_keeper.program_requester": "Program Requester",
"create.gui.stock_keeper.request_sent": "Request Sent!",
"create.gui.stock_keeper.search_items": "Search Items",
"create.gui.stock_keeper.send": "Send",
"create.gui.stock_keeper.title": "Stock Keeper",
"create.gui.stock_keeper.unsorted_category": "Unsorted",
"create.gui.stock_ticker.category_editor": "Category Editor",
"create.gui.stock_ticker.category_filter": "Category Filter",
"create.gui.stock_ticker.category_filter_tip": "Place a List or Attribute Filter",
"create.gui.stock_ticker.category_filter_tip_1": "to specify which items are included",
"create.gui.stock_ticker.category_name": "Category Name",
"create.gui.stock_ticker.delete_category": "Delete Category",
"create.gui.stock_ticker.empty_category_name_placeholder": "(Empty)",
"create.gui.stock_ticker.new_category": "New Category",
"create.gui.stressometer.capacity": "Remaining Capacity",
"create.gui.stressometer.no_rotation": "No Rotation",
"create.gui.stressometer.overstressed": "Overstressed",
@ -1390,6 +1495,7 @@
"create.linked_controller.press_keybind": "Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
"create.logistically_linked.connected": "Connected to other Transmitters successfully",
"create.logistically_linked.new_network_started": "New transmitter network started",
"create.logistically_linked.protected": "Logistics Network is Protected",
"create.logistically_linked.tooltip": "Frequency configured",
"create.logistically_linked.tooltip_clear": "Place in crafting grid to reset",
"create.logistically_linked.tuned": "Tuned to this transmitter",
@ -2570,6 +2676,18 @@
"create.station.train_map_color": "Color on Maps",
"create.station.train_not_aligned": "Cannot disassemble,",
"create.station.train_not_aligned_1": "not all carriages aligned",
"create.stock_keeper.cash_register_full": "Purchase cancelled: Not enough space in Cash Register",
"create.stock_keeper.keeper_missing": "Stock keeper missing",
"create.stock_keeper.limited_stock": "Limited stock available",
"create.stock_keeper.locked": "Interact using a Shopping list, direct access has been locked",
"create.stock_keeper.no_price_set": "Shop owner must set a price first",
"create.stock_keeper.out_of_stock": "Out of Stock",
"create.stock_keeper.shopping_list_empty_hand": "Empty hand required to start a shopping list",
"create.stock_keeper.stock_level_too_low": "Purchase cancelled: Stock levels lower than expected",
"create.stock_keeper.too_broke": "You cannot afford this purchase",
"create.stock_keeper.use_list_to_add_purchases": "Use this list to add more to your purchase",
"create.stock_ticker.click_to_retrieve": "Click to retrieve",
"create.stock_ticker.contains_payments": "Contains payments:",
"create.subtitle.blaze_munch": "Blaze Burner munches",
"create.subtitle.cardboard_bonk": "Resonant bonk",
"create.subtitle.cogs": "Cogwheels rumble",
@ -2821,6 +2939,9 @@
"item.create.builders_tea": "Builder's Tea",
"item.create.builders_tea.tooltip.summary": "The perfect drink to get the day started- _Motivating_ and _Saturating._",
"item.create.cardboard": "Cardboard",
"item.create.cardboard_armor.tooltip.behaviour1": "_Sneak_ to activate an inconspicuous _disguise_.",
"item.create.cardboard_armor.tooltip.condition1": "When full set equipped",
"item.create.cardboard_armor.tooltip.summary": "_Wearable_ _equipment_ for increased _style_ and _stealth_.",
"item.create.cardboard_boots": "Cardboard Boots",
"item.create.cardboard_chestplate": "Cardboard Chestplate",
"item.create.cardboard_helmet": "Cardboard Helmet",
@ -2831,6 +2952,7 @@
"item.create.cardboard_package_12x12": "Cardboard Package",
"item.create.cardboard_pulp": "Cardboard Pulp",
"item.create.cardboard_sword": "Cardboard Sword",
"item.create.cardboard_sword.tooltip.summary": "Bonk. A _mostly_ _harmless_, yet powerful weapon of choice.",
"item.create.chest_minecart_contraption": "Chest Minecart Contraption",
"item.create.chocolate_bucket": "Chocolate Bucket",
"item.create.chocolate_glazed_berries": "Chocolate Glazed Berries",
@ -2944,6 +3066,9 @@
"item.create.netherite_diving_helmet.tooltip.condition1": "When Worn (Full set)",
"item.create.netherite_diving_helmet.tooltip.summary": "Together with a _Netherite Backtank_, this can protect you from _extreme heat_. To be effective, _Legs and Feet_ have to be covered in _Netherite_, too.",
"item.create.package_filter": "Package Filter",
"item.create.package_filter.tooltip.behaviour1": "Opens the _configuration interface_.",
"item.create.package_filter.tooltip.condition1": "When R-Clicked",
"item.create.package_filter.tooltip.summary": "_Matches packaged items_ by their targeted _address_. Can be used in _Filter Slots_ of Create's Components",
"item.create.polished_rose_quartz": "Polished Rose Quartz",
"item.create.potato_cannon": "Potato Cannon",
"item.create.potato_cannon.tooltip.behaviour1": "_Shoots_ a suitable item from your _Inventory_.",

View file

@ -1777,6 +1777,7 @@ public class AllBlocks {
});
})
.tag(AllBlockTags.POSTBOXES.tag)
.onRegisterAfter(Registries.ITEM, v -> ItemDescription.useKey(v, "block.create.package_postbox"))
.item(PackagePortItem::new)
.model((c, p) -> p.withExistingParent(colourName + "_postbox", p.modLoc("block/package_postbox/item"))
.texture("0", p.modLoc("block/post_box/post_box_" + colourName))

View file

@ -25,6 +25,7 @@ import com.simibubi.create.content.equipment.armor.AllArmorMaterials;
import com.simibubi.create.content.equipment.armor.BacktankItem;
import com.simibubi.create.content.equipment.armor.BacktankItem.BacktankBlockItem;
import com.simibubi.create.content.equipment.armor.BaseArmorItem;
import com.simibubi.create.content.equipment.armor.CardboardArmorItem;
import com.simibubi.create.content.equipment.armor.CardboardHelmetItem;
import com.simibubi.create.content.equipment.armor.DivingBootsItem;
import com.simibubi.create.content.equipment.armor.DivingHelmetItem;
@ -63,6 +64,7 @@ import com.simibubi.create.foundation.item.ItemDescription;
import com.simibubi.create.foundation.item.TagDependentIngredientItem;
import com.tterrag.registrate.util.entry.ItemEntry;
import net.minecraft.core.registries.Registries;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.TagKey;
import net.minecraft.world.food.FoodProperties;
@ -86,8 +88,12 @@ public class AllItems {
STURDY_SHEET = taggedIngredient("sturdy_sheet", forgeItemTag("plates/obsidian"), PLATES.tag),
PROPELLER = ingredient("propeller"), WHISK = ingredient("whisk"), BRASS_HAND = ingredient("brass_hand"),
CRAFTER_SLOT_COVER = ingredient("crafter_slot_cover"), ELECTRON_TUBE = ingredient("electron_tube"),
CARDBOARD_PULP = ingredient("cardboard_pulp"),
CARDBOARD = taggedIngredient("cardboard", forgeItemTag("plates/cardboard"));
CARDBOARD_PULP = ingredient("cardboard_pulp");
public static final ItemEntry<CombustibleItem> CARDBOARD = REGISTRATE.item("cardboard", CombustibleItem::new)
.tag(forgeItemTag("plates/cardboard"))
.onRegister(i -> i.setBurnTime(1000))
.register();
public static final ItemEntry<SequencedAssemblyItem>
@ -97,10 +103,9 @@ public class AllItems {
public static final ItemEntry<Item> PRECISION_MECHANISM = ingredient("precision_mechanism");
public static final ItemEntry<Item> BLAZE_CAKE_BASE =
REGISTRATE.item("blaze_cake_base", Item::new)
.tag(AllItemTags.UPRIGHT_ON_BELT.tag)
.register();
public static final ItemEntry<Item> BLAZE_CAKE_BASE = REGISTRATE.item("blaze_cake_base", Item::new)
.tag(AllItemTags.UPRIGHT_ON_BELT.tag)
.register();
public static final ItemEntry<CombustibleItem> BLAZE_CAKE = REGISTRATE.item("blaze_cake", CombustibleItem::new)
.tag(AllItemTags.BLAZE_BURNER_FUEL_SPECIAL.tag, AllItemTags.UPRIGHT_ON_BELT.tag)
@ -311,33 +316,26 @@ public class AllItems {
public static final ItemEntry<? extends BaseArmorItem>
CARDBOARD_HELMET =
REGISTRATE
.item("cardboard_helmet",
p -> new CardboardHelmetItem(AllArmorMaterials.CARDBOARD, ArmorItem.Type.HELMET, p,
Create.asResource("cardboard")))
.tag(forgeItemTag("armors/helmet"))
.register(),
CARDBOARD_HELMET = REGISTRATE.item("cardboard_helmet", p -> new CardboardHelmetItem(ArmorItem.Type.HELMET, p))
.tag(forgeItemTag("armors/helmet"))
.onRegisterAfter(Registries.ITEM, v -> ItemDescription.useKey(v, "item.create.cardboard_armor"))
.register(),
CARDBOARD_CHESTPLATE = REGISTRATE
.item("cardboard_chestplate",
p -> new BaseArmorItem(AllArmorMaterials.CARDBOARD, ArmorItem.Type.CHESTPLATE, p,
Create.asResource("cardboard")))
.tag(forgeItemTag("armors/chestplate"))
.register(),
CARDBOARD_CHESTPLATE =
REGISTRATE.item("cardboard_chestplate", p -> new CardboardArmorItem(ArmorItem.Type.CHESTPLATE, p))
.tag(forgeItemTag("armors/chestplate"))
.onRegisterAfter(Registries.ITEM, v -> ItemDescription.useKey(v, "item.create.cardboard_armor"))
.register(),
CARDBOARD_LEGGINGS = REGISTRATE
.item("cardboard_leggings",
p -> new BaseArmorItem(AllArmorMaterials.CARDBOARD, ArmorItem.Type.LEGGINGS, p,
Create.asResource("cardboard")))
.tag(forgeItemTag("armors/leggings"))
.register(),
CARDBOARD_LEGGINGS =
REGISTRATE.item("cardboard_leggings", p -> new CardboardArmorItem(ArmorItem.Type.LEGGINGS, p))
.tag(forgeItemTag("armors/leggings"))
.onRegisterAfter(Registries.ITEM, v -> ItemDescription.useKey(v, "item.create.cardboard_armor"))
.register(),
CARDBOARD_BOOTS = REGISTRATE
.item("cardboard_boots",
p -> new BaseArmorItem(AllArmorMaterials.CARDBOARD, ArmorItem.Type.BOOTS, p,
Create.asResource("cardboard")))
CARDBOARD_BOOTS = REGISTRATE.item("cardboard_boots", p -> new CardboardArmorItem(ArmorItem.Type.BOOTS, p))
.tag(forgeItemTag("armors/boots"))
.onRegisterAfter(Registries.ITEM, v -> ItemDescription.useKey(v, "item.create.cardboard_armor"))
.register();
public static final ItemEntry<SandPaperItem> SAND_PAPER = REGISTRATE.item("sand_paper", SandPaperItem::new)
@ -437,7 +435,7 @@ public class AllItems {
REGISTRATE.item("shopping_list", ShoppingListItem::new)
.properties(p -> p.stacksTo(1))
.register();
// Schematics
public static final ItemEntry<Item> EMPTY_SCHEMATIC = REGISTRATE.item("empty_schematic", Item::new)

View file

@ -0,0 +1,21 @@
package com.simibubi.create.content.equipment.armor;
import org.jetbrains.annotations.Nullable;
import com.simibubi.create.Create;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.RecipeType;
public class CardboardArmorItem extends BaseArmorItem {
public CardboardArmorItem(Type type, Properties properties) {
super(AllArmorMaterials.CARDBOARD, type, properties, Create.asResource("cardboard"));
}
@Override
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
return 1000;
}
}

View file

@ -2,17 +2,14 @@ package com.simibubi.create.content.equipment.armor;
import java.util.function.Consumer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ArmorMaterial;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
public class CardboardHelmetItem extends BaseArmorItem {
public class CardboardHelmetItem extends CardboardArmorItem {
public CardboardHelmetItem(ArmorMaterial armorMaterial, Type type, Properties properties,
ResourceLocation textureLoc) {
super(armorMaterial, type, properties, textureLoc);
public CardboardHelmetItem(Type type, Properties properties) {
super(type, properties);
}
@Override

View file

@ -3,6 +3,7 @@ package com.simibubi.create.content.equipment.tool;
import java.util.function.Consumer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllPackets;
@ -22,6 +23,7 @@ import net.minecraft.world.entity.monster.Spider;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.ItemStack.TooltipPart;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.item.SwordItem;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
@ -44,6 +46,11 @@ public class CardboardSwordItem extends SwordItem {
super(AllToolMaterials.CARDBOARD, 3, 1f, pProperties);
}
@Override
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
return 1000;
}
@Override
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
return enchantment == Enchantments.KNOCKBACK;

View file

@ -0,0 +1,101 @@
package com.simibubi.create.content.kinetics.drill;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.annotation.Nullable;
import com.simibubi.create.foundation.fluid.FluidHelper;
import com.simibubi.create.foundation.mixin.accessor.FluidInteractionRegistryAccessor;
import net.createmod.catnip.utility.Iterate;
import net.createmod.catnip.utility.Pair;
import net.createmod.catnip.utility.levelWrappers.PlacementSimulationServerLevel;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.FluidState;
import net.minecraftforge.fluids.FluidInteractionRegistry.FluidInteraction;
import net.minecraftforge.fluids.FluidInteractionRegistry.HasFluidInteraction;
import net.minecraftforge.fluids.FluidInteractionRegistry.InteractionInformation;
import net.minecraftforge.fluids.FluidType;
public class CobbleGenOptimisation {
public record CobbleGenBlockConfiguration(List<BlockState> statesAroundDrill) {
}
@Nullable
public static CobbleGenBlockConfiguration getConfig(LevelAccessor level, BlockPos drillPos,
Direction drillDirection) {
List<BlockState> list = new ArrayList<>();
for (Direction side : Iterate.directions) {
BlockPos relative = drillPos.relative(drillDirection)
.relative(side);
if (level instanceof Level l && !l.isLoaded(relative))
return null;
list.add(level.getBlockState(relative));
}
return new CobbleGenBlockConfiguration(list);
}
public static BlockState determineOutput(ServerLevel level, BlockPos pos, CobbleGenBlockConfiguration config) {
Map<FluidType, List<InteractionInformation>> interactions = FluidInteractionRegistryAccessor.getInteractions();
Map<FluidType, Pair<Direction, FluidState>> presentFluidTypes = new HashMap<>();
for (int i = 0; i < Iterate.directions.length; i++) {
if (config.statesAroundDrill.size() <= i)
break;
FluidState fluidState = config.statesAroundDrill.get(i)
.getFluidState();
FluidType fluidType = fluidState.getFluidType();
if (!fluidType.isAir() && interactions.get(fluidType) != null)
presentFluidTypes.put(fluidType, Pair.of(Iterate.directions[i], fluidState));
}
FluidInteraction interaction = null;
Pair<Direction, FluidState> affected = null;
Search: for (Entry<FluidType, Pair<Direction, FluidState>> type : presentFluidTypes.entrySet()) {
List<InteractionInformation> list = interactions.get(type.getKey());
FluidState state = FluidHelper.convertToFlowing(type.getValue()
.getSecond()
.getType())
.defaultFluidState();
if (list == null)
continue;
for (Direction d : Iterate.horizontalDirections) {
for (InteractionInformation information : list) {
if (d == type.getValue()
.getFirst())
continue;
BlockPos relative = pos.relative(d);
HasFluidInteraction predicate = information.predicate();
if (!predicate.test(level, pos, relative, state))
continue;
interaction = information.interaction();
affected = Pair.of(d, state);
break Search;
}
}
}
// TODO Catnip: add empty methods to PSSL overriding levelEvent() side-effects
PlacementSimulationServerLevel simulation = new PlacementSimulationServerLevel(level);
BlockState result = Blocks.AIR.defaultBlockState();
if (interaction == null)
return result;
interaction.interact(simulation, pos, pos.relative(affected.getFirst()), affected.getSecond());
return simulation.blocksAdded.getOrDefault(pos, result);
}
}

View file

@ -1,15 +1,32 @@
package com.simibubi.create.content.kinetics.drill;
import com.simibubi.create.content.kinetics.base.BlockBreakingKineticBlockEntity;
import com.simibubi.create.content.kinetics.belt.behaviour.DirectBeltInputBehaviour;
import com.simibubi.create.content.kinetics.drill.CobbleGenOptimisation.CobbleGenBlockConfiguration;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.item.ItemStack;
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.entity.HopperBlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.common.capabilities.ForgeCapabilities;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemHandlerHelper;
public class DrillBlockEntity extends BlockBreakingKineticBlockEntity {
private CobbleGenBlockConfiguration currentConfig;
private BlockState currentOutput;
public DrillBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
currentOutput = Blocks.AIR.defaultBlockState();
}
@Override
@ -17,4 +34,45 @@ public class DrillBlockEntity extends BlockBreakingKineticBlockEntity {
return getBlockPos().relative(getBlockState().getValue(DrillBlock.FACING));
}
@Override
public void onBlockBroken(BlockState stateToBreak) {
if (!optimiseCobbleGen(stateToBreak))
super.onBlockBroken(stateToBreak);
}
public boolean optimiseCobbleGen(BlockState stateToBreak) {
CobbleGenBlockConfiguration config =
CobbleGenOptimisation.getConfig(level, worldPosition, getBlockState().getValue(DrillBlock.FACING));
if (config == null)
return false;
if (!(level instanceof ServerLevel sl))
return false;
BlockPos breakingPos = getBreakingPos();
if (!config.equals(currentConfig)) {
currentConfig = config;
currentOutput = CobbleGenOptimisation.determineOutput(sl, breakingPos, config);
}
if (currentOutput.isAir() || !currentOutput.equals(stateToBreak))
return false;
DirectBeltInputBehaviour inv =
BlockEntityBehaviour.get(level, breakingPos.below(), DirectBeltInputBehaviour.TYPE);
if (inv != null)
for (ItemStack stack : Block.getDrops(stateToBreak, sl, breakingPos, null))
inv.handleInsertion(stack, Direction.UP, false);
else {
BlockEntity blockEntity = level.getBlockEntity(breakingPos.below());
if (blockEntity instanceof HopperBlockEntity hbe && hbe.getCapability(ForgeCapabilities.ITEM_HANDLER)
.orElse(null) instanceof IItemHandler handler)
for (ItemStack stack : Block.getDrops(stateToBreak, sl, breakingPos, null))
ItemHandlerHelper.insertItemStacked(handler, stack, false);
}
level.levelEvent(2001, breakingPos, Block.getId(stateToBreak));
return true;
}
}

View file

@ -84,19 +84,19 @@ public class AddressEditBox extends EditBox {
pGuiGraphics.renderItem(AllBlocks.CLIPBOARD.asStack(), itemX, itemY);
if (pMouseX >= itemX && pMouseX < itemX + 16 && pMouseY >= itemY && pMouseY < itemY + 16) {
List<Component> promiseTip = List.of();
promiseTip = List.of(CreateLang.temporaryText("Keeping Track")
promiseTip = List.of(CreateLang.translate("gui.address_box.clipboard_tip")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("Entries starting with '#' on")
CreateLang.translate("gui.address_box.clipboard_tip_1")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText("held or nearby clipboards will")
CreateLang.translate("gui.address_box.clipboard_tip_2")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText("help auto-complete this input.")
CreateLang.translate("gui.address_box.clipboard_tip_3")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText("(e.g. #storage, #factory)")
CreateLang.translate("gui.address_box.clipboard_tip_4")
.style(ChatFormatting.DARK_GRAY)
.component());
pGuiGraphics.renderComponentTooltip(Minecraft.getInstance().font, promiseTip, pMouseX, pMouseY);

View file

@ -152,14 +152,14 @@ public class DisplayClothBlockEntity extends SmartBlockEntity implements MenuPro
}
if (!itemInHand.isEmpty() && !addOntoList) {
CreateLang.temporaryText("Empty hand required to start a shopping list")
CreateLang.translate("stock_keeper.shopping_list_empty_hand")
.sendStatus(player);
AllSoundEvents.DENY.playOnServer(level, worldPosition);
return InteractionResult.SUCCESS;
}
if (paymentItem.isEmpty()) {
CreateLang.temporaryText("Shop owner must set a price first")
CreateLang.translate("stock_keeper.no_price_set")
.sendStatus(player);
AllSoundEvents.DENY.playOnServer(level, worldPosition);
return InteractionResult.SUCCESS;
@ -173,7 +173,7 @@ public class DisplayClothBlockEntity extends SmartBlockEntity implements MenuPro
int stockLevel = getStockLevelForTrade(ShoppingListItem.getList(prevListItem));
if (tickerID == null) {
CreateLang.temporaryText("Stock keeper missing")
CreateLang.translate("stock_keeper.keeper_missing")
.style(ChatFormatting.RED)
.sendStatus(player);
AllSoundEvents.DENY.playOnServer(level, worldPosition);
@ -181,7 +181,7 @@ public class DisplayClothBlockEntity extends SmartBlockEntity implements MenuPro
}
if (stockLevel == 0) {
CreateLang.temporaryText("Out of Stock")
CreateLang.translate("stock_keeper.out_of_stock")
.style(ChatFormatting.RED)
.sendStatus(player);
AllSoundEvents.DENY.playOnServer(level, worldPosition);
@ -209,7 +209,7 @@ public class DisplayClothBlockEntity extends SmartBlockEntity implements MenuPro
}
if (list.getPurchases(worldPosition) == stockLevel) {
CreateLang.temporaryText("Limited stock available")
CreateLang.translate("stock_keeper.limited_stock")
.style(ChatFormatting.RED)
.sendStatus(player);
AllSoundEvents.DENY.playOnServer(level, worldPosition);
@ -217,7 +217,7 @@ public class DisplayClothBlockEntity extends SmartBlockEntity implements MenuPro
} else {
list.addPurchases(worldPosition, 1);
if (!addOntoList)
CreateLang.temporaryText("Use this list to add more to your purchase")
CreateLang.translate("stock_keeper.use_list_to_add_purchases")
.color(0xeeeeee)
.sendStatus(player);
if (!addOntoList)

View file

@ -32,7 +32,7 @@ public class DisplayClothBlockItem extends BlockItem {
if (!isFoil(pStack))
return;
CreateLang.temporaryText("Item shop configured")
CreateLang.translate("display_cloth.shop_configured")
.style(ChatFormatting.GOLD)
.addTo(pTooltip);

View file

@ -131,7 +131,7 @@ public class ShoppingListItem extends Item {
if (entries.size() == 1) {
BigItemStack entry = entries.get(0);
CreateLang.temporaryText(cost ? "Total cost: " : "")
(cost ? CreateLang.translate("display_cloth.total_cost") : CreateLang.text(""))
.style(ChatFormatting.GOLD)
.add(CreateLang.builder()
.add(entry.stack.getHoverName())
@ -142,7 +142,7 @@ public class ShoppingListItem extends Item {
} else {
if (cost)
CreateLang.temporaryText("Total cost: ")
CreateLang.translate("display_cloth.total_cost")
.style(ChatFormatting.GOLD)
.addTo(pTooltipComponents);
for (BigItemStack entry : entries) {
@ -158,11 +158,11 @@ public class ShoppingListItem extends Item {
}
}
CreateLang.temporaryText("Hand this to a shop keeper")
CreateLang.translate("display_cloth.hand_to_shop_keeper")
.style(ChatFormatting.GRAY)
.addTo(pTooltipComponents);
CreateLang.temporaryText("Sneak-Click to discard")
CreateLang.translate("display_cloth.sneak_click_discard")
.style(ChatFormatting.DARK_GRAY)
.addTo(pTooltipComponents);
}
@ -172,7 +172,7 @@ public class ShoppingListItem extends Item {
if (pUsedHand == InteractionHand.OFF_HAND || pPlayer == null || !pPlayer.isShiftKeyDown())
return new InteractionResultHolder<ItemStack>(InteractionResult.PASS, pPlayer.getItemInHand(pUsedHand));
CreateLang.temporaryText("Shopping list discarded")
CreateLang.translate("display_cloth.shopping_list_discarded")
.sendStatus(pPlayer);
pPlayer.playSound(SoundEvents.BOOK_PAGE_TURN);
return new InteractionResultHolder<ItemStack>(InteractionResult.SUCCESS, ItemStack.EMPTY);
@ -186,7 +186,7 @@ public class ShoppingListItem extends Item {
return InteractionResult.PASS;
pPlayer.setItemInHand(pUsedHand, ItemStack.EMPTY);
CreateLang.temporaryText("Shopping list discarded")
CreateLang.translate("display_cloth.shopping_list_discarded")
.sendStatus(pPlayer);
pPlayer.playSound(SoundEvents.BOOK_PAGE_TURN);
return InteractionResult.SUCCESS;

View file

@ -188,7 +188,7 @@ public class FactoryPanelBehaviour extends FilteringBehaviour {
tryRestock();
return;
}
if (recipeAddress.isBlank())
return;
@ -302,12 +302,12 @@ public class FactoryPanelBehaviour extends FilteringBehaviour {
@Override
public void onShortInteract(Player player, InteractionHand hand, Direction side, BlockHitResult hitResult) {
if (!Create.LOGISTICS.mayInteract(network, player)) {
player.displayClientMessage(CreateLang.temporaryText("Logistics Network is Protected")
player.displayClientMessage(CreateLang.translate("logistically_linked.protected")
.style(ChatFormatting.RED)
.component(), true);
return;
}
if (AllItemTags.WRENCH.matches(player.getItemInHand(hand))) {
int sharedMode = -1;
for (FactoryPanelPosition target : targeting) {
@ -328,7 +328,7 @@ public class FactoryPanelBehaviour extends FilteringBehaviour {
char[] boxes = "\u25a1\u25a1\u25a1\u25a1".toCharArray();
boxes[sharedMode] = '\u25a0';
player.displayClientMessage(CreateLang.temporaryText("Cycled arrow pathing mode " + new String(boxes))
player.displayClientMessage(CreateLang.translate("factory_panel.cycled_arrow_path", new String(boxes))
.component(), true);
return;
@ -562,21 +562,23 @@ public class FactoryPanelBehaviour extends FilteringBehaviour {
@Override
public ValueSettingsBoard createBoard(Player player, BlockHitResult hitResult) {
int maxAmount = 100;
return new ValueSettingsBoard(CreateLang.temporaryText("Target Amount in Storage")
return new ValueSettingsBoard(CreateLang.translate("factory_panel.target_amount")
.component(), maxAmount, 10,
List.of(CreateLang.temporaryText("Items")
List.of(CreateLang.translate("schedule.condition.threshold.items")
.component(),
CreateLang.temporaryText("Stacks")
CreateLang.translate("schedule.condition.threshold.stacks")
.component()),
new ValueSettingsFormatter(this::formatValue));
}
@Override
public MutableComponent getLabel() {
String key = "Target Amount";
String key = "";
if (getFilter().isEmpty())
key = "New Factory task";
key = "factory_panel.new_factory_task";
else if (waitingForNetwork)
key = "factory_panel.some_links_unloaded";
else if (getAmount() == 0 || targetedBy.isEmpty())
key = getFilter().getHoverName()
.getString();
@ -585,13 +587,13 @@ public class FactoryPanelBehaviour extends FilteringBehaviour {
key = getFilter().getHoverName()
.getString() + " -> " + getAmount() + stacks;
if (!satisfied)
key += " (In Progress)";
key += " " + CreateLang.translate("factory_panel.in_progress")
.string();
return CreateLang.text(key)
.component();
}
if (waitingForNetwork)
key = "Some links are not loaded";
return CreateLang.temporaryText(key)
return CreateLang.translate(key)
.component();
}

View file

@ -188,7 +188,7 @@ public class FactoryPanelBlock extends FaceAttachedHorizontalDirectionalBlock
if (!FactoryPanelBlockItem.isTuned(item)) {
AllSoundEvents.DENY.playOnServer(pLevel, pPos);
pPlayer.displayClientMessage(CreateLang.temporaryText("Tune to a transmitter before placing")
pPlayer.displayClientMessage(CreateLang.translate("factory_panel.tune_before_placing")
.component(), true);
return InteractionResult.FAIL;
}

View file

@ -22,7 +22,7 @@ public class FactoryPanelBlockItem extends LogisticallyLinkedBlockItem {
if (!isTuned(stack)) {
AllSoundEvents.DENY.playOnServer(pContext.getLevel(), pContext.getClickedPos());
pContext.getPlayer()
.displayClientMessage(CreateLang.temporaryText("Tune to a transmitter before placing")
.displayClientMessage(CreateLang.translate("factory_panel.tune_before_placing")
.component(), true);
return InteractionResult.FAIL;
}

View file

@ -39,7 +39,7 @@ public class FactoryPanelConnectionHandler {
String checkForIssues = checkForIssues(at, panel);
if (checkForIssues != null) {
player.displayClientMessage(CreateLang.temporaryText(checkForIssues)
player.displayClientMessage(CreateLang.translate(checkForIssues)
.style(ChatFormatting.RED)
.component(), true);
connectingFrom = null;
@ -53,9 +53,9 @@ public class FactoryPanelConnectionHandler {
AllPackets.getChannel()
.sendToServer(new FactoryPanelConnectionPacket(panel.getPanelPosition(), connectingFrom));
player.displayClientMessage(CreateLang.temporaryText("Now using " + filterFrom.getHoverName()
.getString() + " to create "
+ filterTo.getHoverName()
player.displayClientMessage(CreateLang.translate("factory_panel.panels_connected", filterFrom.getHoverName()
.getString(),
filterTo.getHoverName()
.getString())
.style(ChatFormatting.GREEN)
.component(), true);
@ -75,24 +75,24 @@ public class FactoryPanelConnectionHandler {
if (state1.setValue(FactoryPanelBlock.WATERLOGGED, false)
.setValue(FactoryPanelBlock.POWERED, false) != state2.setValue(FactoryPanelBlock.WATERLOGGED, false)
.setValue(FactoryPanelBlock.POWERED, false))
return "Panels must have the same orientation";
return "factory_panel.same_orientation";
if (FactoryPanelBlock.connectedDirection(state1)
.getAxis()
.choose(diff.getX(), diff.getY(), diff.getZ()) != 0)
return "Panels must be on the same surface";
return "factory_panel.same_surface";
if (!diff.closerThan(BlockPos.ZERO, 16))
return "Panels are too far away from each other";
return "factory_panel.too_far_apart";
if (to.panelBE().restocker)
return "Input panel cannot be in restock mode";
return "factory_panel.input_in_restock_mode";
if (to.getFilter()
.isEmpty()
|| from.getFilter()
.isEmpty())
return "Input panel must have an item first";
return "factory_panel.no_item";
return null;
}
@ -116,7 +116,7 @@ public class FactoryPanelConnectionHandler {
.colored(AnimationTickHolder.getTicks() % 16 > 8 ? 0x38b764 : 0xa7f070)
.lineWidth(1 / 16f);
mc.player.displayClientMessage(CreateLang.temporaryText("Click a second panel to connect...")
mc.player.displayClientMessage(CreateLang.translate("factory_panel.click_second_panel")
.component(), true);
}
@ -128,7 +128,7 @@ public class FactoryPanelConnectionHandler {
return false;
connectingFrom = null;
connectingFromBox = null;
mc.player.displayClientMessage(CreateLang.temporaryText("Input connection aborted")
mc.player.displayClientMessage(CreateLang.translate("factory_panel.connection_aborted")
.component(), true);
return true;
}

View file

@ -89,7 +89,7 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
addRenderableWidget(confirmButton);
promiseExpiration = new ScrollInput(x + 112, y + 54 + middleHeight(), 25, 16).withRange(-1, 31)
.titled(CreateLang.temporaryText("Promises expire after")
.titled(CreateLang.translate("gui.factory_panel.promises_expire_title")
.component());
promiseExpiration.setState(behaviour.promiseClearingInterval);
addRenderableWidget(promiseExpiration);
@ -101,7 +101,7 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
FactoryPanelConnectionHandler.startConnection(behaviour);
minecraft.setScreen(null);
});
newInputButton.setToolTip(CreateLang.temporaryText("Connect an input panel")
newInputButton.setToolTip(CreateLang.translate("gui.factory_panel.connect_input")
.component());
addRenderableWidget(newInputButton);
}
@ -123,7 +123,8 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
}
addressBox.tick();
promiseExpiration.titled(CreateLang
.temporaryText(promiseExpiration.getState() == -1 ? "Promises do not expire" : "Promises expire after:")
.translate(promiseExpiration.getState() == -1 ? "gui.factory_panel.promises_do_not_expire"
: "gui.factory_panel.promises_expire_title")
.component());
}
@ -172,21 +173,24 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
if (mouseX >= outputX - 1 && mouseX < outputX - 1 + 18 && mouseY >= outputY - 1
&& mouseY < outputY - 1 + 18) {
graphics.renderComponentTooltip(font, List.of(CreateLang.temporaryText("Expect ")
.add(CreateLang.itemName(outputConfig.stack)
.add(CreateLang.text(" x" + outputConfig.count)))
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("The amount of output returning")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText("after each successful request")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText("Scroll to change")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component()),
graphics.renderComponentTooltip(font,
List.of(
CreateLang
.translate("gui.factory_panel.expected_output", CreateLang.itemName(outputConfig.stack)
.add(CreateLang.text(" x" + outputConfig.count))
.string())
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.translate("gui.factory_panel.expected_output_tip")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.factory_panel.expected_output_tip_1")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.factory_panel.expected_output_tip_2")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component()),
mouseX, mouseY);
}
}
@ -200,7 +204,8 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
showAddressBoxTooltip(graphics, mouseX, mouseY);
// TITLE
Component title = CreateLang.temporaryText(restocker ? "Restocker Settings" : "Recipe Settings")
Component title = CreateLang
.translate(restocker ? "gui.factory_panel.title_as_restocker" : "gui.factory_panel.title_as_recipe")
.component();
graphics.drawString(font, title, x + 87 - font.width(title) / 2, y + 7, 0x3D3C48, false);
@ -231,7 +236,7 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
// PROMISES
int state = promiseExpiration.getState();
graphics.drawString(font, CreateLang.temporaryText(state == -1 ? " /" : state == 0 ? "30s" : state + "m")
graphics.drawString(font, CreateLang.text(state == -1 ? " /" : state == 0 ? "30s" : state + "m")
.component(), promiseExpiration.getX() + 3, promiseExpiration.getY() + 4, 0xffeeeeee, true);
ItemStack asStack = AllItems.CARDBOARD_PACKAGE_12x12.asStack();
@ -245,28 +250,31 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
List<Component> promiseTip = List.of();
if (promised == 0) {
promiseTip = List.of(CreateLang.temporaryText("No open promises")
promiseTip = List.of(CreateLang.translate("gui.factory_panel.no_open_promises")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang
.temporaryText(restocker ? "When items are sent, a promise" : "When inputs are sent, a promise")
.translate(restocker ? "gui.factory_panel.restocker_promises_tip"
: "gui.factory_panel.recipe_promises_tip")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText(restocker ? "is held until they arrive." : "is held until outputs arrive.")
CreateLang
.translate(restocker ? "gui.factory_panel.restocker_promises_tip_1"
: "gui.factory_panel.recipe_promises_tip_1")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText("This prevents over-sending.")
CreateLang.translate("gui.factory_panel.promise_prevents_oversending")
.style(ChatFormatting.GRAY)
.component());
} else {
promiseTip = List.of(CreateLang.temporaryText("Promised Items")
promiseTip = List.of(CreateLang.translate("gui.factory_panel.promised_items")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText(behaviour.getFilter()
CreateLang.text(behaviour.getFilter()
.getHoverName()
.getString() + " x" + promised)
.component(),
CreateLang.temporaryText("Left-Click to reset")
CreateLang.translate("gui.factory_panel.left_click_reset")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component());
@ -292,10 +300,10 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
return;
if (itemStack.stack.isEmpty()) {
graphics.renderComponentTooltip(font, List.of(CreateLang.temporaryText("Empty panel")
graphics.renderComponentTooltip(font, List.of(CreateLang.translate("gui.factory_panel.empty_panel")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("Left-Click to disconnect")
CreateLang.translate("gui.factory_panel.left_click_disconnect")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component()),
@ -304,49 +312,51 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
}
if (restocker) {
graphics.renderComponentTooltip(font, List.of(CreateLang.temporaryText("Sending ")
.add(CreateLang.itemName(itemStack.stack))
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("whenever local stock level")
.style(ChatFormatting.GRAY)
graphics.renderComponentTooltip(font,
List.of(CreateLang.translate("gui.factory_panel.sending_item", CreateLang.itemName(itemStack.stack)
.string())
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("is below the target amount")
.style(ChatFormatting.GRAY)
.component()),
CreateLang.translate("gui.factory_panel.sending_item_tip")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.factory_panel.sending_item_tip_1")
.style(ChatFormatting.GRAY)
.component()),
mouseX, mouseY);
return;
}
graphics.renderComponentTooltip(font, List.of(CreateLang.temporaryText("Send ")
.add(CreateLang.itemName(itemStack.stack)
.add(CreateLang.text(" x" + itemStack.count)))
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("Scroll to change amount")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
graphics.renderComponentTooltip(font,
List.of(CreateLang.translate("gui.factory_panel.sending_item", CreateLang.itemName(itemStack.stack)
.add(CreateLang.text(" x" + itemStack.count))
.string())
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("Left-Click to disconnect")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component()),
CreateLang.translate("gui.factory_panel.scroll_to_change_amount")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component(),
CreateLang.translate("gui.factory_panel.left_click_disconnect")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component()),
mouseX, mouseY);
}
private void showStockLevelTooltip(GuiGraphics graphics, int mouseX, int mouseY) {
graphics.renderComponentTooltip(font,
List.of(
(behaviour.count > 0 ? CreateLang.temporaryText("Storage level and target")
: CreateLang.temporaryText("Storage level")).color(ScrollInput.HEADER_RGB)
(behaviour.count > 0 ? CreateLang.translate("gui.factory_panel.storage_level_and_target")
: CreateLang.translate("gui.factory_panel.storage_level")).color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("Targeted amount can be set")
CreateLang.translate("gui.factory_panel.storage_level_tip")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText("by using the filter slot")
CreateLang.translate("gui.factory_panel.storage_level_tip_1")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText("outside of this interface")
CreateLang.translate("gui.factory_panel.storage_level_tip_2")
.style(ChatFormatting.GRAY)
.component()),
mouseX, mouseY);
@ -356,29 +366,30 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
if (addressBox.getValue()
.isBlank()) {
if (restocker) {
graphics.renderComponentTooltip(font, List.of(CreateLang.temporaryText("Send items to...")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("Enter an address that will")
.style(ChatFormatting.GRAY)
graphics.renderComponentTooltip(font,
List.of(CreateLang.translate("gui.factory_panel.restocker_address")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("cause packages to arrive here.")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.schedule.lmb_edit")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component()),
CreateLang.translate("gui.factory_panel.restocker_address_tip")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.factory_panel.restocker_address_tip_1")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.schedule.lmb_edit")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component()),
mouseX, mouseY);
} else {
graphics.renderComponentTooltip(font, List.of(CreateLang.temporaryText("Send inputs to...")
graphics.renderComponentTooltip(font, List.of(CreateLang.translate("gui.factory_panel.recipe_address")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("Enter an address where")
CreateLang.translate("gui.factory_panel.recipe_address_tip")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText("this recipe is carried out.")
CreateLang.translate("gui.factory_panel.recipe_address_tip_1")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.schedule.lmb_edit")
@ -389,10 +400,13 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
}
} else
graphics.renderComponentTooltip(font,
List.of(CreateLang.temporaryText(restocker ? "Sending to" : "Sending inputs to")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("'" + addressBox.getValue() + "'")
List.of(
CreateLang
.translate(restocker ? "gui.factory_panel.restocker_address_given"
: "gui.factory_panel.recipe_address_given")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.text("'" + addressBox.getValue() + "'")
.style(ChatFormatting.GRAY)
.component()),
mouseX, mouseY);

View file

@ -185,7 +185,7 @@ public abstract class PackagePortBlockEntity extends SmartBlockEntity implements
}
page.add(new ClipboardEntry(false, Components.literal("#" + addressFilter)));
player.displayClientMessage(CreateLang.temporaryText("'" + addressFilter + "' added to Clipboard")
player.displayClientMessage(CreateLang.translate("clipboard.address_added", addressFilter)
.component(), true);
ClipboardEntry.saveAll(list, mainHandItem);

View file

@ -191,7 +191,7 @@ public class LogisticallyLinkedBehaviour extends BlockEntityBehaviour {
public boolean mayInteractMessage(Player player) {
boolean mayInteract = Create.LOGISTICS.mayInteract(freqId, player);
if (!mayInteract)
player.displayClientMessage(CreateLang.temporaryText("Logistics Network is protected")
player.displayClientMessage(CreateLang.translate("logistically_linked.protected")
.style(ChatFormatting.RED)
.component(), true);
return mayInteract;

View file

@ -86,7 +86,7 @@ public class RedstoneRequesterScreen extends AbstractSimiContainerScreen<Redston
dontAllowPartial.green = false;
});
allowPartial.green = menu.contentHolder.allowPartialRequests;
allowPartial.setToolTip(CreateLang.temporaryText("Allow partial orders")
allowPartial.setToolTip(CreateLang.translate("gui.redstone_requester.allow_partial")
.component());
addRenderableWidget(allowPartial);
@ -96,7 +96,7 @@ public class RedstoneRequesterScreen extends AbstractSimiContainerScreen<Redston
dontAllowPartial.green = true;
});
dontAllowPartial.green = !menu.contentHolder.allowPartialRequests;
dontAllowPartial.setToolTip(CreateLang.temporaryText("Must send all items")
dontAllowPartial.setToolTip(CreateLang.translate("gui.redstone_requester.dont_allow_partial")
.component());
addRenderableWidget(dontAllowPartial);
@ -110,11 +110,13 @@ public class RedstoneRequesterScreen extends AbstractSimiContainerScreen<Redston
AllGuiTextures.REDSTONE_REQUESTER.render(pGuiGraphics, x, y);
renderPlayerInventory(pGuiGraphics, x - 3, y + 106);
Component title = CreateLang.temporaryText("Redstone Requester")
ItemStack stack = AllBlocks.REDSTONE_REQUESTER.asStack();
Component title = CreateLang.text(stack.getHoverName()
.getString())
.component();
pGuiGraphics.drawString(font, title, x + 100 - font.width(title) / 2, y + 4, 0x3D3C48, false);
GuiGameElement.of(AllBlocks.REDSTONE_REQUESTER.asStack())
GuiGameElement.of(stack)
.scale(3)
.render(pGuiGraphics, x + 220, y + 60);
}
@ -141,27 +143,29 @@ public class RedstoneRequesterScreen extends AbstractSimiContainerScreen<Redston
if (addressBox.isHovered() && !addressBox.isFocused()) {
if (addressBox.getValue()
.isBlank())
graphics.renderComponentTooltip(font, List.of(CreateLang.temporaryText("Send order to...")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("Enter the address this")
.style(ChatFormatting.GRAY)
graphics.renderComponentTooltip(font,
List.of(CreateLang.translate("gui.redstone_requester.requester_address")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("order should be send to.")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.schedule.lmb_edit")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component()),
CreateLang.translate("gui.redstone_requester.requester_address_tip")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.redstone_requester.requester_address_tip_1")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.schedule.lmb_edit")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component()),
mouseX, mouseY);
else
graphics.renderComponentTooltip(font, List.of(CreateLang.temporaryText("Sending order to")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("'" + addressBox.getValue() + "'")
.style(ChatFormatting.GRAY)
.component()),
graphics.renderComponentTooltip(font,
List.of(CreateLang.translate("gui.redstone_requester.requester_address_given")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.text("'" + addressBox.getValue() + "'")
.style(ChatFormatting.GRAY)
.component()),
mouseX, mouseY);
}
}
@ -197,12 +201,11 @@ public class RedstoneRequesterScreen extends AbstractSimiContainerScreen<Redston
if (slotIndex >= amounts.size())
return tooltip;
return List.of(CreateLang.temporaryText("Send ")
.add(CreateLang.itemName(pStack)
.add(CreateLang.text(" x" + amounts.get(slotIndex))))
return List.of(CreateLang.translate("gui.factory_panel.send_item", CreateLang.itemName(pStack)
.add(CreateLang.text(" x" + amounts.get(slotIndex))))
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("Scroll to change amount")
CreateLang.translate("gui.factory_panel.scroll_to_change_amount")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component(),

View file

@ -94,7 +94,7 @@ public class StockKeeperCategoryScreen extends AbstractSimiContainerScreen<Stock
editorEditBox.mouseClicked(0, 0, 0);
editorEditBox.setMaxLength(28);
editorEditBox.setValue(index == -1 || schedule.get(index)
.isEmpty() ? CreateLang.temporaryText("New Category")
.isEmpty() ? CreateLang.translate("gui.stock_ticker.new_category")
.string()
: schedule.get(index)
.getHoverName()
@ -145,7 +145,7 @@ public class StockKeeperCategoryScreen extends AbstractSimiContainerScreen<Stock
if (editorEditBox == null)
return;
if (!editorEditBox.getValue()
.equals(CreateLang.temporaryText("New Category")
.equals(CreateLang.translate("gui.stock_ticker.new_category")
.string()))
return;
if (menu.proxyInventory.getStackInSlot(0)
@ -225,14 +225,15 @@ public class StockKeeperCategoryScreen extends AbstractSimiContainerScreen<Stock
AllGuiTextures.STOCK_KEEPER_CATEGORY_DOWN.render(graphics, cardWidth + 12, cardHeader - 9);
graphics.renderItem(entry, 16, 0);
graphics.drawString(font, entry.isEmpty() ? CreateLang.temporaryText("(Empty)")
.string()
: entry.getHoverName()
.getString(20)
.stripTrailing()
+ (entry.getHoverName()
.getString()
.length() > 20 ? "..." : ""),
graphics.drawString(font,
entry.isEmpty() ? CreateLang.translate("gui.stock_ticker.empty_category_name_placeholder")
.string()
: entry.getHoverName()
.getString(20)
.stripTrailing()
+ (entry.getHoverName()
.getString()
.length() > 20 ? "..." : ""),
36, 4, 0x656565, false);
matrixStack.popPose();
@ -271,8 +272,9 @@ public class StockKeeperCategoryScreen extends AbstractSimiContainerScreen<Stock
int fieldSize = 140;
if (x > 0 && x <= fieldSize && y > 0 && y <= 16) {
List<Component> components = new ArrayList<>();
components.add(entry.isEmpty() ? CreateLang.temporaryText("(Empty)")
.component() : entry.getHoverName());
components
.add(entry.isEmpty() ? CreateLang.translate("gui.stock_ticker.empty_category_name_placeholder")
.component() : entry.getHoverName());
components.add(clickToEdit);
renderActionTooltip(graphics, components, mx, my);
if (click == 0)
@ -281,7 +283,7 @@ public class StockKeeperCategoryScreen extends AbstractSimiContainerScreen<Stock
}
if (x > fieldSize && x <= fieldSize + 16 && y > 0 && y <= 16) {
renderActionTooltip(graphics, ImmutableList.of(CreateLang.temporaryText("Delete Category")
renderActionTooltip(graphics, ImmutableList.of(CreateLang.translate("gui.stock_ticker.delete_category")
.component()), mx, my);
if (click == 0) {
if (!entry.isEmpty())
@ -324,7 +326,7 @@ public class StockKeeperCategoryScreen extends AbstractSimiContainerScreen<Stock
}
if (x > 0 && x <= 16 && y > 0 && y <= 16) {
renderActionTooltip(graphics, ImmutableList.of(CreateLang.temporaryText("New Category")
renderActionTooltip(graphics, ImmutableList.of(CreateLang.translate("gui.stock_ticker.new_category")
.component()), mx, my);
if (click == 0)
startEditing(-1);
@ -354,7 +356,7 @@ public class StockKeeperCategoryScreen extends AbstractSimiContainerScreen<Stock
public boolean keyPressed(int pKeyCode, int pScanCode, int pModifiers) {
if (editingItem == null)
return super.keyPressed(pKeyCode, pScanCode, pModifiers);
InputConstants.Key mouseKey = InputConstants.getKey(pKeyCode, pScanCode);
boolean hitEscape = pKeyCode == GLFW.GLFW_KEY_ESCAPE;
boolean hitEnter = getFocused() instanceof EditBox && (pKeyCode == 257 || pKeyCode == 335);
@ -363,7 +365,7 @@ public class StockKeeperCategoryScreen extends AbstractSimiContainerScreen<Stock
stopEditing();
return true;
}
return super.keyPressed(pKeyCode, pScanCode, pModifiers);
}
@ -402,20 +404,20 @@ public class StockKeeperCategoryScreen extends AbstractSimiContainerScreen<Stock
if (hoveredSlot instanceof SlotItemHandler && hoveredSlot.getItem()
.isEmpty()) {
graphics.renderComponentTooltip(font, List.of(CreateLang.temporaryText("Category Filter")
graphics.renderComponentTooltip(font, List.of(CreateLang.translate("gui.stock_ticker.category_filter")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.temporaryText("Place a List or Attribute Filter")
CreateLang.translate("gui.stock_ticker.category_filter_tip")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText("to specify which items are included")
CreateLang.translate("gui.stock_ticker.category_filter_tip_1")
.style(ChatFormatting.GRAY)
.component()),
mouseX, mouseY);
}
if (editorEditBox != null && editorEditBox.isHovered() && !editorEditBox.isFocused()) {
graphics.renderComponentTooltip(font, List.of(CreateLang.temporaryText("Category Name")
graphics.renderComponentTooltip(font, List.of(CreateLang.translate("gui.stock_ticker.category_name")
.color(ScrollInput.HEADER_RGB)
.component(), clickToEdit), mouseX, mouseY);
}
@ -443,7 +445,7 @@ public class StockKeeperCategoryScreen extends AbstractSimiContainerScreen<Stock
AllGuiTextures.STOCK_KEEPER_CATEGORY_FOOTER.render(graphics, leftPos + 2, topPos + 16 + 51);
renderPlayerInventory(graphics, leftPos + 18, topPos + 105);
formattedcharsequence = CreateLang.temporaryText("Category Editor")
formattedcharsequence = CreateLang.translate("gui.stock_ticker.category_editor")
.component()
.getVisualOrderText();
graphics.drawString(font, formattedcharsequence, (float) (center - font.width(formattedcharsequence) / 2),
@ -463,7 +465,7 @@ public class StockKeeperCategoryScreen extends AbstractSimiContainerScreen<Stock
if (!(hoveredSlot instanceof SlotItemHandler))
return tooltip;
if (!tooltip.isEmpty())
tooltip.set(0, CreateLang.temporaryText("Category Filter")
tooltip.set(0, CreateLang.translate("gui.stock_ticker.category_filter")
.color(ScrollInput.HEADER_RGB)
.component());
return tooltip;

View file

@ -86,7 +86,8 @@ public class StockTickerBlockEntity extends StockCheckingBlockEntity implements
}
@Override
public boolean broadcastPackageRequest(RequestType type, PackageOrder order, IItemHandler ignoredHandler, String address) {
public boolean broadcastPackageRequest(RequestType type, PackageOrder order, IItemHandler ignoredHandler,
String address) {
boolean result = super.broadcastPackageRequest(type, order, ignoredHandler, address);
previouslyUsedAddress = address;
notifyUpdate();
@ -159,7 +160,7 @@ public class StockTickerBlockEntity extends StockCheckingBlockEntity implements
}
lastClientsideStockSnapshot.add(inCategory);
}
List<BigItemStack> unsorted = new ArrayList<>(newlyReceivedStockSnapshot);
lastClientsideStockSnapshot.add(unsorted);
@ -186,8 +187,8 @@ public class StockTickerBlockEntity extends StockCheckingBlockEntity implements
return false;
if (!behaviour.mayAdministrate(Minecraft.getInstance().player))
return false;
CreateLang.temporaryText("Contains payments:")
CreateLang.translate("stock_ticker.contains_payments")
.style(ChatFormatting.WHITE)
.forGoggles(tooltip);
@ -201,7 +202,7 @@ public class StockTickerBlockEntity extends StockCheckingBlockEntity implements
.style(ChatFormatting.GREEN)
.forGoggles(tooltip);
CreateLang.temporaryText("Right-click to retrieve")
CreateLang.translate("stock_ticker.click_to_retrieve")
.style(ChatFormatting.GRAY)
.forGoggles(tooltip);
return true;

View file

@ -66,11 +66,9 @@ public class StockTickerInteractionHandler {
return;
if (!stbe.behaviour.mayInteract(player)) {
player.displayClientMessage(
CreateLang.temporaryText("Logistics Network is protected. You can interact using a Shopping list.")
.style(ChatFormatting.RED)
.component(),
true);
player.displayClientMessage(CreateLang.translate("stock_keeper.locked")
.style(ChatFormatting.RED)
.component(), true);
return;
}
@ -120,7 +118,7 @@ public class StockTickerInteractionHandler {
continue;
AllSoundEvents.DENY.playOnServer(level, player.blockPosition());
CreateLang.temporaryText("Purchase failed: Stock levels lower than expected")
CreateLang.translate("stock_keeper.stock_level_too_low")
.style(ChatFormatting.RED)
.sendStatus(player);
return;
@ -137,7 +135,7 @@ public class StockTickerInteractionHandler {
if (occupiedSlots > 0) {
AllSoundEvents.DENY.playOnServer(level, player.blockPosition());
CreateLang.temporaryText("Not enough space in Cash Register")
CreateLang.translate("stock_keeper.cash_register_full")
.style(ChatFormatting.RED)
.sendStatus(player);
return;
@ -170,7 +168,7 @@ public class StockTickerInteractionHandler {
if (simulate && tally.getTotalCount() != 0) {
AllSoundEvents.DENY.playOnServer(level, player.blockPosition());
CreateLang.temporaryText("You cannot afford this purchase")
CreateLang.translate("stock_keeper.too_broke")
.style(ChatFormatting.RED)
.sendStatus(player);
return;

View file

@ -151,7 +151,7 @@ public class StockTickerRequestScreen extends AbstractSimiScreen implements Scre
lockX = x + 230;
lockY = y + 15;
MutableComponent searchLabel = CreateLang.translateDirect("gui.stock_ticker.search_items");
MutableComponent searchLabel = CreateLang.translateDirect("gui.stock_keeper.search_items");
searchBox = new EditBox(this.font, x + 81, y + 25, 110, 9, searchLabel);
searchBox.setMaxLength(50);
searchBox.setBordered(false);
@ -182,7 +182,7 @@ public class StockTickerRequestScreen extends AbstractSimiScreen implements Scre
: stack.getHoverName()
.getString(),
0)));
categories.add(Pair.of(CreateLang.temporaryText("Unsorted")
categories.add(Pair.of(CreateLang.translate("gui.stock_keeper.unsorted_category")
.string(), 0));
String valueWithPrefix = searchBox.getValue();
@ -392,17 +392,18 @@ public class StockTickerRequestScreen extends AbstractSimiScreen implements Scre
ms.popPose();
}
MutableComponent headerTitle = CreateLang.temporaryText("Stock Keeper")
MutableComponent headerTitle = CreateLang.translate("gui.stock_keeper.title")
.component();
graphics.drawString(font, headerTitle, x + windowWidth / 2 - font.width(headerTitle) / 2, y + 4, 0x505050,
false);
graphics.drawString(font, CreateLang.temporaryText("Send")
.component(), x + windowWidth - 52, y + windowHeight - 32,
isConfirmHovered(mouseX, mouseY) ? 0xffffff : 0x505050, false);
graphics.drawString(font,
CreateLang.translate(encodeRequester ? "gui.stock_keeper.configure" : "gui.stock_keeper.send")
.component(),
x + windowWidth - 52, y + windowHeight - 32, isConfirmHovered(mouseX, mouseY) ? 0xffffff : 0x505050, false);
// Request just sent
if (itemsToOrder.isEmpty() && successTicks > 0) {
Component msg = CreateLang.translateDirect("gui.stock_ticker.request_sent");
Component msg = CreateLang.translateDirect("gui.stock_keeper.request_sent");
float alpha = Mth.clamp((successTicks - 10f) / 5f, 0f, 1f);
if (alpha > 0)
graphics.drawString(font, msg, x + windowWidth / 2 - font.width(msg) / 2, orderY + 4,
@ -510,20 +511,24 @@ public class StockTickerRequestScreen extends AbstractSimiScreen implements Scre
(isLocked ? AllGuiTextures.STOCK_KEEPER_REQUEST_LOCKED : AllGuiTextures.STOCK_KEEPER_REQUEST_UNLOCKED)
.render(graphics, lockX, lockY);
if (mouseX > lockX && mouseX <= lockX + 15 && mouseY > lockY && mouseY <= lockY + 15) {
graphics.renderComponentTooltip(font,
List.of(CreateLang.temporaryText(isLocked ? "Network is locked" : "Network is open")
.component(),
CreateLang.temporaryText("Locking prevents other Players")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText("from ordering items directly")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.temporaryText("Click to toggle")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component()),
mouseX, mouseY);
graphics
.renderComponentTooltip(font,
List.of(
CreateLang
.translate(
isLocked ? "gui.stock_keeper.network_locked" : "gui.stock_keeper.network_open")
.component(),
CreateLang.translate("gui.stock_keeper.network_lock_tip")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.stock_keeper.network_lock_tip_1")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.stock_keeper.network_lock_tip_2")
.style(ChatFormatting.DARK_GRAY)
.style(ChatFormatting.ITALIC)
.component()),
mouseX, mouseY);
}
}
}
@ -703,15 +708,15 @@ public class StockTickerRequestScreen extends AbstractSimiScreen implements Scre
private Component getTroubleshootingMessage() {
if (currentItemSource == null)
return CreateLang.translate("gui.stock_ticker.checking_stocks")
return CreateLang.translate("gui.stock_keeper.checking_stocks")
.component();
if (blockEntity.activeLinks == 0)
return CreateLang.translate("gui.stock_ticker.no_packagers_linked")
return CreateLang.translate("gui.stock_keeper.no_packagers_linked")
.component();
if (currentItemSource.isEmpty())
return CreateLang.translate("gui.stock_ticker.inventories_empty")
return CreateLang.translate("gui.stock_keeper.inventories_empty")
.component();
return CreateLang.translate("gui.stock_ticker.no_search_results")
return CreateLang.translate("gui.stock_keeper.no_search_results")
.component();
}

View file

@ -47,6 +47,7 @@ import com.simibubi.create.content.trains.bogey.StandardBogeyBlock;
import com.simibubi.create.foundation.block.ItemUseOverrides;
import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry;
import com.simibubi.create.foundation.block.connected.HorizontalCTBehaviour;
import com.simibubi.create.foundation.item.ItemDescription;
import com.tterrag.registrate.builders.BlockBuilder;
import com.tterrag.registrate.builders.ItemBuilder;
import com.tterrag.registrate.providers.RegistrateRecipeProvider;
@ -58,6 +59,7 @@ import net.createmod.catnip.platform.CatnipServices;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.recipes.RecipeCategory;
import net.minecraft.data.recipes.ShapelessRecipeBuilder;
import net.minecraft.resources.ResourceLocation;
@ -486,6 +488,7 @@ public class BuilderTransformers {
.texture("0", p.modLoc("block/display_cloth/" + name))))
.onRegister(CreateRegistrate.blockModel(() -> DisplayClothModel::new))
.tag(AllBlockTags.DISPLAY_CLOTHS.tag)
.onRegisterAfter(Registries.ITEM, v -> ItemDescription.useKey(v, "block.create.display_cloth"))
.item(DisplayClothBlockItem::new)
.model((c, p) -> p
.withExistingParent(name + "_display_cloth",

View file

@ -0,0 +1,21 @@
package com.simibubi.create.foundation.mixin.accessor;
import java.util.List;
import java.util.Map;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import net.minecraftforge.fluids.FluidInteractionRegistry;
import net.minecraftforge.fluids.FluidInteractionRegistry.InteractionInformation;
import net.minecraftforge.fluids.FluidType;
@Mixin(FluidInteractionRegistry.class)
public interface FluidInteractionRegistryAccessor {
@Accessor("INTERACTIONS")
public static Map<FluidType, List<InteractionInformation>> getInteractions() {
throw new AssertionError();
}
}

View file

@ -318,15 +318,59 @@
"create.gui.clipboard.erase_checked": "Erase checked items",
"create.gui.stock_ticker.checking_stocks": "Checking stocks...",
"create.gui.stock_ticker.no_packagers_linked": "No Packagers Linked",
"create.gui.stock_ticker.inventories_empty": "Linked Inventories are Empty",
"create.gui.stock_ticker.no_search_results": "No matching items found",
"create.gui.stock_ticker.search_items": "Search Items",
"create.gui.stock_ticker.package_adress": "Package Address",
"create.gui.stock_ticker.confirm_order": "Confirm Order",
"create.gui.stock_ticker.request_sent": "Request Sent!",
"create.gui.stock_ticker.program_requester": "Program Requester",
"create.gui.stock_keeper.title": "Stock Keeper",
"create.gui.stock_keeper.checking_stocks": "Checking stocks...",
"create.gui.stock_keeper.no_packagers_linked": "No Packagers Linked",
"create.gui.stock_keeper.inventories_empty": "Linked Inventories are Empty",
"create.gui.stock_keeper.no_search_results": "No matching items found",
"create.gui.stock_keeper.search_items": "Search Items",
"create.gui.stock_keeper.package_adress": "Package Address",
"create.gui.stock_keeper.confirm_order": "Confirm Order",
"create.gui.stock_keeper.request_sent": "Request Sent!",
"create.gui.stock_keeper.program_requester": "Program Requester",
"create.gui.stock_keeper.unsorted_category": "Unsorted",
"create.gui.stock_keeper.send": "Send",
"create.gui.stock_keeper.configure": "Configure",
"create.gui.stock_keeper.network_locked": "Network is locked",
"create.gui.stock_keeper.network_open": "Network is open",
"create.gui.stock_keeper.network_lock_tip": "Locking prevents other Players",
"create.gui.stock_keeper.network_lock_tip_1": "from ordering items directly",
"create.gui.stock_keeper.network_lock_tip_2": "Click to toggle",
"create.stock_keeper.shopping_list_empty_hand": "Empty hand required to start a shopping list",
"create.stock_keeper.no_price_set": "Shop owner must set a price first",
"create.stock_keeper.keeper_missing": "Stock keeper missing",
"create.stock_keeper.out_of_stock": "Out of Stock",
"create.stock_keeper.limited_stock": "Limited stock available",
"create.stock_keeper.use_list_to_add_purchases": "Use this list to add more to your purchase",
"create.stock_keeper.locked": "Interact using a Shopping list, direct access has been locked",
"create.stock_keeper.stock_level_too_low": "Purchase cancelled: Stock levels lower than expected",
"create.stock_keeper.cash_register_full": "Purchase cancelled: Not enough space in Cash Register",
"create.stock_keeper.too_broke": "You cannot afford this purchase",
"create.stock_ticker.contains_payments": "Contains payments:",
"create.stock_ticker.click_to_retrieve": "Click to retrieve",
"create.gui.stock_ticker.category_editor": "Category Editor",
"create.gui.stock_ticker.category_filter": "Category Filter",
"create.gui.stock_ticker.category_filter_tip": "Place a List or Attribute Filter",
"create.gui.stock_ticker.category_filter_tip_1": "to specify which items are included",
"create.gui.stock_ticker.new_category": "New Category",
"create.gui.stock_ticker.category_name": "Category Name",
"create.gui.stock_ticker.delete_category": "Delete Category",
"create.gui.stock_ticker.empty_category_name_placeholder": "(Empty)",
"create.display_cloth.shop_configured": "Item shop configured",
"create.display_cloth.total_cost": "Total cost: ",
"create.display_cloth.hand_to_shop_keeper": "Hand this to a shop keeper",
"create.display_cloth.sneak_click_discard": "Sneak-Click to discard",
"create.display_cloth.shopping_list_discarded": "Shopping list discarded",
"create.gui.address_box.clipboard_tip": "Keeping Track",
"create.gui.address_box.clipboard_tip_1": "Entries starting with '#' on",
"create.gui.address_box.clipboard_tip_2": "held or nearby clipboards will",
"create.gui.address_box.clipboard_tip_3": "help auto-complete this input.",
"create.gui.address_box.clipboard_tip_4": "(e.g. #storage, #factory)",
"create.redstone_requester.keeper_connected": "Connected to Stock keeper successfully",
"create.redstone_requester.keeper_too_far_away": "Requester too far away from Stock keeper",
@ -338,6 +382,7 @@
"create.clipboard.copied_from": "Copying settings from %1$s",
"create.clipboard.copied_from_clipboard": "Added entries from Clipboard",
"create.clipboard.pasted_to": "Applied settings to %1$s",
"create.clipboard.address_added": "'%1$s' added to Clipboard",
"create.schematicAndQuill.dimensions": "Schematic Size: %1$sx%2$sx%3$s",
"create.schematicAndQuill.firstPos": "First position set.",
@ -981,9 +1026,70 @@
"create.logistically_linked.connected": "Connected to other Transmitters successfully",
"create.logistically_linked.tooltip": "Frequency configured",
"create.logistically_linked.tooltip_clear": "Place in crafting grid to reset",
"create.logistically_linked.protected": "Logistics Network is Protected",
"create.gui.factory_panel.title_as_recipe": "Recipe Settings",
"create.gui.factory_panel.title_as_restocker": "Restocker Settings",
"create.gui.factory_panel.connect_input": "Connect an input panel",
"create.gui.factory_panel.no_open_promises": "No open promises",
"create.gui.factory_panel.promised_items": "Promised items",
"create.gui.factory_panel.left_click_reset": "Left-Click to reset",
"create.gui.factory_panel.promises_expire_title": "Promises expire after",
"create.gui.factory_panel.promises_do_not_expire": "Promises do not expire",
"create.gui.factory_panel.expected_output": "Expect %1$s",
"create.gui.factory_panel.restocker_promises_tip": "When items are sent, a promise",
"create.gui.factory_panel.restocker_promises_tip_1": "is held until they arrive.",
"create.gui.factory_panel.recipe_promises_tip": "When inputs are sent, a promise",
"create.gui.factory_panel.recipe_promises_tip_1": "is held until outputs arrive.",
"create.gui.factory_panel.promise_prevents_oversending": "This prevents over-sending.",
"create.gui.factory_panel.empty_panel": "Empty panel",
"create.gui.factory_panel.sending_item": "Sending %1$s",
"create.gui.factory_panel.sending_item_tip": "whenever local stock level",
"create.gui.factory_panel.sending_item_tip_1": "is below the target amount",
"create.gui.factory_panel.send_item": "Send %1$s",
"create.gui.factory_panel.left_click_disconnect": "Left-Click to disconnect",
"create.gui.factory_panel.scroll_to_change_amount": "Scroll to change amount",
"create.gui.factory_panel.storage_level": "Storage level",
"create.gui.factory_panel.storage_level_and_target": "Storage level and target",
"create.gui.factory_panel.storage_level_tip": "Targeted amount can be set",
"create.gui.factory_panel.storage_level_tip_1": "by using the filter slot",
"create.gui.factory_panel.storage_level_tip_2": "outside of this interface",
"create.gui.factory_panel.recipe_address": "Send inputs to...",
"create.gui.factory_panel.recipe_address_given": "Sending inputs to",
"create.gui.factory_panel.recipe_address_tip": "Enter an address where",
"create.gui.factory_panel.recipe_address_tip_1": "this recipe is carried out.",
"create.gui.factory_panel.restocker_address": "Send items to...",
"create.gui.factory_panel.restocker_address_given": "Sending to",
"create.gui.factory_panel.restocker_address_tip": "Enter an address that will",
"create.gui.factory_panel.restocker_address_tip_1": "cause packages to arrive here.",
"create.gui.redstone_requester.allow_partial": "Allow partial orders",
"create.gui.redstone_requester.dont_allow_partial": "Must send all items",
"create.gui.redstone_requester.requester_address": "Send order to...",
"create.gui.redstone_requester.requester_address_given": "Sending order to",
"create.gui.redstone_requester.requester_address_tip": "Enter the address this",
"create.gui.redstone_requester.requester_address_tip_1": "order should be send to.",
"create.gui.factory_panel.expected_output_tip": "The amount of output returning",
"create.gui.factory_panel.expected_output_tip_1": "after each successful request",
"create.gui.factory_panel.expected_output_tip_2": "Scroll to change",
"create.factory_panel.click_to_configure": "Click to specify a recipe",
"create.factory_panel.target_amount": "Target Amount in Storage",
"create.factory_panel.new_factory_task": "New factory task",
"create.factory_panel.some_links_unloaded": "Some links are not loaded",
"create.factory_panel.in_progress": "(In Progress)",
"create.factory_panel.cycled_arrow_path": "Cycled arrow pathing mode %1$s",
"create.factory_panel.tune_before_placing": "Tune to a transmitter before placing",
"create.factory_panel.same_orientation": "Panels must have the same orientation",
"create.factory_panel.same_surface": "Panels must be on the same surface",
"create.factory_panel.too_far_apart": "Panels are too far away from each other",
"create.factory_panel.input_in_restock_mode": "Input panel cannot be in restock mode",
"create.factory_panel.no_item": "Input panel must have an item first",
"create.factory_panel.panels_connected": "Now using %1$s to create %2$s",
"create.factory_panel.click_second_panel": "Click a second panel to connect...",
"create.factory_panel.connection_aborted": "Input connection aborted",
"create.display_source.label": "Attached Label",
"create.display_source.combine_item_names": "Combine Item Names",
"create.display_source.count_items": "Amount of matching Items",

View file

@ -47,6 +47,10 @@
"item.create.attribute_filter.tooltip.condition1": "When R-Clicked",
"item.create.attribute_filter.tooltip.behaviour1": "Opens the _configuration interface_.",
"item.create.package_filter.tooltip.summary": "_Matches packaged items_ by their targeted _address_. Can be used in _Filter Slots_ of Create's Components",
"item.create.package_filter.tooltip.condition1": "When R-Clicked",
"item.create.package_filter.tooltip.behaviour1": "Opens the _configuration interface_.",
"item.create.empty_schematic.tooltip.summary": "Used as a recipe ingredient and for writing at the _Schematic Table_.",
"item.create.schematic.tooltip.summary": "Holds a structure to be positioned and placed into the world. Position the Hologram as desired and use a _Schematicannon_ to build it.",
@ -143,6 +147,12 @@
"item.create.netherite_backtank.tooltip.condition2": "When placed, Powered by Kinetics",
"item.create.netherite_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
"item.create.cardboard_armor.tooltip.summary": "_Wearable_ _equipment_ for increased _style_ and _stealth_.",
"item.create.cardboard_armor.tooltip.condition1": "When full set equipped",
"item.create.cardboard_armor.tooltip.behaviour1": "_Sneak_ to activate an inconspicuous _disguise_.",
"item.create.cardboard_sword.tooltip.summary": "Bonk. A _mostly_ _harmless_, yet powerful weapon of choice.",
"block.create.placard.tooltip.summary": "_Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!",
"block.create.placard.tooltip.condition1": "When R-Clicked with Item",
"block.create.placard.tooltip.behaviour1": "_Adds_ the held _item_ to the Placard. _Emits_ a brief _Redstone_ signal if a matching item was present already.",
@ -174,6 +184,10 @@
"item.create.experience_nugget.tooltip.behaviour1": "_Redeems_ _Experience_ points contained within.",
"block.create.peculiar_bell.tooltip.summary": "A decorative _Brass Bell_. Placing it right above open _Soul Fire_ may have side-effects...",
"block.create.desk_bell.tooltip.summary": "Ring for Service! Emits a _redstone signal_ when activated.",
"block.create.desk_bell.tooltip.condition1": "When attached to Elevator Contraption",
"block.create.desk_bell.tooltip.behaviour1": "_Plays a sound_ when arriving at the _target floor_.",
"block.create.haunted_bell.tooltip.summary": "A _Cursed Bell_ haunted by lost souls of the Nether.",
"block.create.haunted_bell.tooltip.condition1": "When Held or Rang",
@ -187,6 +201,27 @@
"block.create.copycat_step.tooltip.condition1": "When R-Clicked",
"block.create.copycat_step.tooltip.behaviour1": "Applies _held item_ as its _material_ if possible. _Click again_ to cycle _orientation_ or _powered_ state. Use a _Wrench_ to _reset_ the material.",
"block.create.item_hatch.tooltip.summary": "_Quickly solves_ your _inventory_ clutter and makes it someone else's problem.",
"block.create.item_hatch.tooltip.condition1": "When R-Clicked",
"block.create.item_hatch.tooltip.behaviour1": "_Deposits_ your items into the _container_ it is placed on. _Hotbar items_ and items _with contents_ will _not_ be transferred.",
"block.create.chain_conveyor.tooltip.summary": "[ponder] Connect with chains to form conveyor networks. Use frogports to transport packages on them. Use wrench to take a ride.",
"block.create.packager.tooltip.summary": "[ponder] Creates packages from attached inventory on redstone. Attach sign to specify target address. Alternatively, attach packager link to submit inventory contents to a logistics network.",
"block.create.package_frogport.tooltip.summary": "[ponder] Click a chain conveyor to link then place. Moves packages to and from chains based on their address. Set address filter in UI. Matching packages will be removed from chains and vice versa.",
"block.create.package_postbox.tooltip.summary": "[ponder] Click a train station to link then place. Moves packages to and from trains based on their address. Set address filter in UI. Matching packages will be removed from trains and vice versa.",
"block.create.packager_link.tooltip.summary": "[ponder] Attach to packager to make its target inventory available to request from. Click other links before placement to share their frequency. No range limitations",
"block.create.stock_ticker.tooltip.summary": "[ponder] Click packager link before placement to use its frequency. Needs an adjacent entity on a seat as its stock keeper. Click the entity to request items from any linked packagers to a given address. Click the stock ticker block to organise displayed items into categories.",
"block.create.redstone_requester.tooltip.summary": "[ponder] Click packager link before placement to use its frequency. Open UI to specify items requested to an address when a redstone pulse is received. Alternatively this request can be configured at a stock keeper before placement.",
"block.create.factory_panel.tooltip.summary": "[ponder] Click packager link before placement to use its frequency. Place item to monitor in filter slot. Hold click to specify a target amount to maintain in storage.",
"block.create.factory_panel.tooltip.condition1": "When attached to Packager",
"block.create.factory_panel.tooltip.behaviour1": "Restocker mode: Panel requests items from the network to the specified address until the target amount is in the container. Short click the panel to set an address.",
"block.create.factory_panel.tooltip.condition2": "When not attached to Packager",
"block.create.factory_panel.tooltip.behaviour2": "Recipe mode: Panel requests ingredients to an address until the target amounted of the output item is found on the network (e.g. Send 1 Log to 'saw' and expect 6 Planks, until at least 64 Planks on network). Short click the panel to set an address and connect other panels as input items. Panels specifying an output item can also be reused as an input for other panels.",
"block.create.display_cloth.tooltip.summary": "[ponder] Can be used for decoration, click with item to display them. Alternatively, when used on a stock keeper, specify a request from your network that can be purchased by other players. The cost can be specified after placing the configured display cloth.",
"block.create.pulse_timer.tooltip.summary": "[ponder] Set a delay using the input slot. Repeatedly emits redstone pulses unless the input side is powered by a constant signal.",
"block.create.clipboard.tooltip.summary": "_Keeps your notes_ and makes you look more professional.",
"block.create.clipboard.tooltip.condition1": "When R-Clicked",
"block.create.clipboard.tooltip.behaviour1": "Opens the _Interface_. _Sneak-Click_ to _place_ it on a surface.",

View file

@ -127,7 +127,7 @@
},
"gui": {
"rotation": [30, 225, 0],
"translation": [1.5, -0.25, 0],
"translation": [0.5, -0.25, 0],
"scale": [0.625, 0.625, 0.625]
},
"head": {

View file

@ -135,7 +135,7 @@
},
"gui": {
"rotation": [30, 225, 0],
"translation": [1.5, -0.25, 0],
"translation": [0.5, -0.25, 0],
"scale": [0.625, 0.625, 0.625]
},
"head": {

View file

@ -25,7 +25,8 @@
"accessor.NbtAccounterAccessor",
"accessor.ServerLevelAccessor",
"accessor.SystemReportAccessor",
"accessor.UseOnContextAccessor"
"accessor.UseOnContextAccessor",
"accessor.FluidInteractionRegistryAccessor"
],
"client": [
"accessor.AgeableListModelAccessor",