Merge remote-tracking branch 'origin/mc1.20.1/feature-dev' into mc1.21.1/dev

# Conflicts:
#	src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerBlock.java
This commit is contained in:
IThundxr 2025-01-20 09:56:14 -05:00
commit 7bdc2cb758
No known key found for this signature in database
34 changed files with 160 additions and 129 deletions

View file

@ -1,4 +1,4 @@
// 1.20.1 2025-01-18T17:58:23.8133105 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 2025-01-20T15:09:32.7206817 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
@ -642,8 +642,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
1c24597f2b10409d8b8cf6819dd8dfe41f2861f2 assets/create/lang/en_ud.json
575042f88772cd1553c19a924aa1d95d38cd93ba assets/create/lang/en_us.json
8d13fe09a474ee6fa5a989f1a135faeb762cf06e assets/create/lang/en_ud.json
591f942809c644aa11ee28c8dab15c498e719a22 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

@ -1678,7 +1678,7 @@
"create.ponder.cart_assembler_rails.text_4": "sǝıɹoʇuǝʌuı pǝɥɔɐʇʇɐ ʎuɐ ɯoɹɟ ןǝnɟ buıןןnd 'pǝɹǝʍod sǝʌןǝsɯǝɥʇ dǝǝʞ ןןıʍ sʇɹɐƆ ǝɔɐuɹnℲ",
"create.ponder.chain_conveyor.header": "sɹoʎǝʌuoƆ uıɐɥƆ buısn ǝɔɹoɟ ןɐuoıʇɐʇoɹ buıʎɐןǝᴚ",
"create.ponder.chain_conveyor.text_1": "ɯǝɥʇ ʇɔǝuuoɔ oʇ suıɐɥɔ ɥʇıʍ sɹoʎǝʌuoɔ oʍʇ ʞɔıןɔ-ʇɥbıᴚ",
"create.ponder.chain_conveyor.text_2": "˙˙ʎןqıןɟ ʎɹǝʌ ɹǝɥʇo ɥɔɐǝ oʇ ɹǝʍod ןɐuoıʇɐʇoɹ ʎɐןǝɹ ǝsǝɥ⟘",
"create.ponder.chain_conveyor.text_2": "˙˙ɹǝɥʇo ɥɔɐǝ uǝǝʍʇǝq ɹǝʍod ןɐuoıʇɐʇoɹ ʎɐןǝɹ sɹoʎǝʌuoɔ uıɐɥƆ",
"create.ponder.chain_conveyor.text_3": "ɯǝɥʇ ʍoןǝq ɹo ǝʌoqɐ sʇɟɐɥs oʇ ʇɔǝuuoɔ puɐ˙˙",
"create.ponder.chain_conveyor.text_4": "uıɐɥɔ ǝɥʇ uo buıןןǝʌɐɹʇ ʇɹɐʇs oʇ ɥɔuǝɹʍ ɐ buıpןoɥ ʞɔıןɔ-ʇɥbıᴚ",
"create.ponder.chain_conveyor.text_5": "ʇı ʍoןןoɟ oʇ uıɐɥɔ ɐ spɹɐʍoʇ ǝɔɐɟ 'uoıʇɔunظ ɐ ʇⱯ",
@ -2166,7 +2166,7 @@
"create.ponder.package_frogport.text_11": "ɹǝʇǝԀ",
"create.ponder.package_frogport.text_12": "ɹǝʇǝԀ →",
"create.ponder.package_frogport.text_13": "ɯǝɥʇ ʍoןǝq sǝıɹoʇuǝʌuı ɥʇıʍ ǝɔɐɟɹǝʇuı ʎןʇɔǝɹıp uɐɔ sʇɹodboɹℲ",
"create.ponder.package_frogport.text_14": ןʇɔǝɹıp pǝddıɥs puɐ pǝʞɔɐd ǝq uɐɔ sɯǝʇı 'sɹǝbɐʞɔɐd ɥʇıʍ sʞɹoʍ sıɥ⟘",
"create.ponder.package_frogport.text_14": ןʇɔǝɹıp pǝddıɥs puɐ pǝʞɔɐd ǝq uɐɔ sɯǝʇI ˙sɹǝbɐʞɔɐd ɥʇıʍ sʞɹoʍ osןɐ sıɥ⟘",
"create.ponder.package_frogport.text_15": "ʇɹǝqןⱯ",
"create.ponder.package_frogport.text_16": "ɹǝʇǝԀ",
"create.ponder.package_frogport.text_17": ",ɹǝʇǝԀ, oʇ sǝbɐʞɔɐd sǝssǝɹppⱯ",
@ -2181,7 +2181,7 @@
"create.ponder.package_frogport.text_8": "ʞɹoʍʇǝu uıɐɥɔ ǝɥʇ uo ǝɹǝɥʍʎuɐ pǝppɐ ǝq uɐɔ sʇɹodboɹℲ ǝɹoW",
"create.ponder.package_frogport.text_9": "ɹǝʇǝԀ",
"create.ponder.packager.header": "sǝbɐʞɔɐd buıddɐɹʍun puɐ buıʇɐǝɹƆ",
"create.ponder.packager.text_1": "ʇǝbɹɐʇ pןnoɥs ʎǝɥʇ ʎɹoʇuǝʌuı ǝɥʇ oʇ ʇxǝu sɹǝbɐʞɔɐd ǝɔɐןԀ",
"create.ponder.packager.text_1": "ʇǝbɹɐʇ pןnoɥs ʎǝɥʇ ʎɹoʇuǝʌuı ǝɥʇ oʇ sɹǝbɐʞɔɐd ɥɔɐʇʇⱯ",
"create.ponder.packager.text_2": "ǝbɐʞɔɐd ɐ oʇuı ʎɹoʇuǝʌuı ǝɥʇ ɯoɹɟ sɯǝʇı ʞɔɐd ןןıʍ ʇı 'ɹǝʍod ǝuoʇspǝɹ uǝʌı⅁",
"create.ponder.packager.text_3": "ɯǝʇı ɹǝɥʇo ʎuɐ ǝʞıן pǝʇɹodsuɐɹʇ puɐ dn pǝʞɔıd ǝq uɐɔ ǝsǝɥ⟘",
"create.ponder.packager.text_4": "ʎɹoʇuǝʌuı ǝɥʇ oʇuı sʇuǝʇuoɔ ǝɥʇ buıʞɔɐdun 'pǝʎoɹʇsǝp ǝq ןןıʍ pǝʇɹǝsuı sǝbɐʞɔɐԀ",
@ -2189,7 +2189,7 @@
"create.ponder.packager.text_6": "ʞɔɐdun ʎןןnɟ ʇouuɐɔ ʎǝɥʇ sǝbɐʞɔɐd ʇdǝɔɔɐ ʇou ןןıʍ sɹǝbɐʞɔɐԀ",
"create.ponder.packager_address.header": "ssǝɹppɐ uɐ ɥʇıʍ sǝbɐʞɔɐd buıʇnoᴚ",
"create.ponder.packager_address.text_1": "ǝsnoɥǝɹɐM",
"create.ponder.packager_address.text_10": ןǝq ɐ oʇuo ʇɥbıɐɹʇs sǝbɐʞɔɐd dɐɹʍun uɐɔ sʍɐs ןɐɔıuɐɥɔǝɯ 'ssǝuʇɔɐdɯoɔ ɹoℲ",
"create.ponder.packager_address.text_10": ןǝq ɐ oʇuo ʇɥbıɐɹʇs ʞɔɐdun uɐɔ sʍɐs ןɐɔıuɐɥɔǝɯ 'ssǝuʇɔɐdɯoɔ ɹoℲ",
"create.ponder.packager_address.text_11": "sǝıʇıןıqɐ buıʇnoɹ ǝbɐʞɔɐd ǝʌɐɥ sǝxoqʇsoԀ puɐ sʇɹodboɹℲ 'sɹǝʇןıɟ ɯoɹɟ ǝpısⱯ",
"create.ponder.packager_address.text_12": "ɹnoıʌɐɥǝq ɹıǝɥʇ ʇnoqɐ ǝɹoɯ ʇno puıɟ oʇ ɯǝɥʇ ʇɔǝdsuI",
"create.ponder.packager_address.text_2": "˙˙ɹǝbɐʞɔɐd ɐ uo pǝɔɐןd sı ubıs ɐ uǝɥM",
@ -2407,7 +2407,7 @@
"create.ponder.sticker.text_3": "ʇı ɥʇıʍ ǝʌoɯ ןןıʍ ʞɔoןq ǝɥʇ 'uoıʇdɐɹʇuoɔ ɐ uı pǝʌoɯ ʍou sı ʇı ɟI",
"create.ponder.sticker.text_4": "pǝɥɔɐʇʇɐ ɹǝbuoן ou sı ʞɔoןq ǝɥʇ 'uıɐbɐ ǝɔuo pǝןbbo⟘",
"create.ponder.stock_link.header": "ʞuıꞀ ʞɔoʇS ǝɥʇ puɐ sʞɹoʍʇǝN sɔıʇsıboꞀ",
"create.ponder.stock_link.text_1": "ʞɹoʍʇǝu ʍǝu ɐ ǝʇɐǝɹɔ sʞuıꞀ ʞɔoʇS 'pǝɔɐןd uǝɥM",
"create.ponder.stock_link.text_1": "ʞɹoʍʇǝu ʞɔoʇs ʍǝu ɐ ǝʇɐǝɹɔ sʞuıꞀ ʞɔoʇS 'pǝɔɐןd uǝɥM",
"create.ponder.stock_link.text_2": "ɯǝɥʇ puıq oʇ ʇı buıɔɐןd ǝɹoɟǝq ʞuıן buıʇsıxǝ uɐ ʞɔıןɔ-ʇɥbıᴚ",
"create.ponder.stock_link.text_3": "ʞɹoʍʇǝu ǝɥʇ oʇ ǝןןıɐʌɐ ʎɹoʇuǝʌuı ɹıǝɥʇ ǝʞɐɯ sɹǝbɐʞɔɐd pǝʞuıן-ʞɔoʇS",
"create.ponder.stock_link.text_4": "sɯǝʇı ɹıǝɥʇ ʇsǝnbǝɹ puɐ puıɟ ʍou uɐɔ ʞɹoʍʇǝu ǝɥʇ uo sʇuǝuodɯoɔ ɹǝɥʇO",
@ -2417,18 +2417,18 @@
"create.ponder.stock_link.text_8": "ʇsɹıɟ ʇɔɐ oʇ sɹǝɥʇo buısnɐɔ 'ʞuıן ɐ ɟo ʎʇıɹoıɹd ǝɥʇ sɹǝʍoן ɹǝʍod boןɐuⱯ",
"create.ponder.stock_ticker.header": "sɹǝʞɔıʇ ʞɔoʇS ɥʇıʍ sɯǝʇı buıɹǝpɹO",
"create.ponder.stock_ticker.text_1": "ʞɹoʍʇǝu sʇı oʇ ʇɔǝuuoɔ oʇ ʇuǝɯǝɔɐןd ǝɹoɟǝq ʞuıן ʞɔoʇS ɐ ʞɔıןɔ-ʇɥbıᴚ",
"create.ponder.stock_ticker.text_10": "uouuɐɔıʇɐɯǝɥɔs ǝɥʇ ɹoɟ pǝɹınbǝɹ sʞɔoןq ʇsǝnbǝɹ osןɐ uɐɔ sɹǝʞɔıʇ ʞɔoʇS",
"create.ponder.stock_ticker.text_11": "ɹǝdǝǝʞ ǝɥʇ oʇ pǝʇɐɹǝuǝb ʇı pɹɐoqdıןɔ pǝʇuıɹd ǝɥʇ puɐɥ ʎןdɯıS",
"create.ponder.stock_ticker.text_2": "ʞɹoʍʇǝu ǝɥʇ oʇ ǝןןıɐʌɐ ʎɹoʇuǝʌuı ɹıǝɥʇ ǝʞɐɯ sɹǝbɐʞɔɐd pǝʞuıן-ʞɔoʇS",
"create.ponder.stock_ticker.text_3": "sǝıɹoʇuǝʌuı ǝsǝɥʇ ɯoɹɟ sɯǝʇı ʇsǝnbǝɹ uɐɔ sɹǝʞɔıʇ ʞɔoʇS",
"create.ponder.stock_ticker.text_10": "uouuɐɔıʇɐɯǝɥɔs ǝɥʇ ɹoɟ pǝɹınbǝɹ sʞɔoןq ɹǝpɹo osןɐ uɐɔ sɹǝʞɔıʇ ʞɔoʇS",
"create.ponder.stock_ticker.text_11": "ɹǝdǝǝʞ ʞɔoʇS ǝɥʇ oʇ pǝʇɐɹǝuǝb ʇı pɹɐoqdıןɔ pǝʇuıɹd ǝɥʇ puɐɥ ʎןdɯıS",
"create.ponder.stock_ticker.text_2": "ʞɹoʍʇǝu ǝɥʇ oʇ ǝןןıɐʌɐ ʎɹoʇuǝʌuı pǝɥɔɐʇʇɐ ɹıǝɥʇ ǝʞɐɯ sɹǝbɐʞɔɐd pǝʞuıן-ʞɔoʇS",
"create.ponder.stock_ticker.text_3": "sǝıɹoʇuǝʌuı ǝsǝɥʇ ɯoɹɟ sɯǝʇı ɹǝpɹo uɐɔ sɹǝʞɔıʇ ʞɔoʇS",
"create.ponder.stock_ticker.text_4": "ɹǝdǝǝʞ ʞɔoʇS ǝɥʇ sɐ ʇɔɐ ʇı ɟo ʇuoɹɟ uı sɹǝuɹnq ǝzɐןq ɹo sqoɯ pǝʇɐǝS",
"create.ponder.stock_ticker.text_5": "sɯǝʇı buıɹǝpɹo ʇɹɐʇs oʇ ɹǝdǝǝʞ ǝɥʇ ʞɔıןɔ-ʇɥbıᴚ",
"create.ponder.stock_ticker.text_6": "sǝbɐʞɔɐd oʇuı pǝɔɐןd ǝq ןןıʍ sɯǝʇı ǝɥʇ 'pǝʇʇıɯqns sı ɹǝpɹo uɐ uǝɥM",
"create.ponder.stock_ticker.text_7": "ʇuıod ʇsǝnbǝɹ ǝɥʇ oʇ pǝʇɹodsuɐɹʇ ǝq uɐɔ ʎǝɥʇ 'ǝɹǝɥʇ ɯoɹℲ",
"create.ponder.stock_ticker.text_8": "sbuıʇsıן ɯǝʇı ǝɥʇ oʇ pǝppɐ ǝq uɐɔ sǝıɹobǝʇɐɔ 'sɹǝʇןıɟ ʇsıן ɹo ǝʇnqıɹʇʇɐ buıs∩",
"create.ponder.stock_ticker.text_9": "ɹoʇıpǝ ʎɹobǝʇɐɔ ǝɥʇ uǝdo oʇ ɟןǝsʇı ʞɔoןq ǝɥʇ ʞɔıןɔ-ʇɥbıᴚ",
"create.ponder.stock_ticker.text_9": "ɹoʇıpǝ ʎɹobǝʇɐɔ ǝɥʇ uǝdo oʇ ɹǝʞɔıʇ ʞɔoʇS ǝɥʇ ʞɔıןɔ-ʇɥbıᴚ",
"create.ponder.stock_ticker_address.header": "ɹǝpɹo ɹǝʞɔıʇ ʞɔoʇS ɐ buıssǝɹppⱯ",
"create.ponder.stock_ticker_address.text_1": "ɹǝpɹo ǝɥʇ uı ʇǝs ǝq uɐɔ ssǝɹppɐ ʇǝbɹɐʇ ɐ 'sɯǝʇı buıʇsǝnbǝɹ uǝɥM",
"create.ponder.stock_ticker_address.text_1": "ʇsǝnbǝɹ ǝɥʇ uı ʇǝs ǝq uɐɔ ssǝɹppɐ ʇǝbɹɐʇ ɐ 'sɯǝʇı buıɹǝpɹo uǝɥM",
"create.ponder.stock_ticker_address.text_10": "sǝıʇıןıqɐ buıʇnoɹ ǝbɐʞɔɐd ǝʌɐɥ sǝxoqʇsoԀ puɐ sʇɹodboɹℲ 'sɹǝʇןıɟ ɯoɹɟ ǝpısⱯ",
"create.ponder.stock_ticker_address.text_11": "ɹnoıʌɐɥǝq ɹıǝɥʇ ʇnoqɐ ǝɹoɯ ʇno puıɟ oʇ ɯǝɥʇ ʇɔǝdsuI",
"create.ponder.stock_ticker_address.text_2": "doɥsʞɹoM →",
@ -2480,7 +2480,7 @@
"create.ponder.tag.fluids": "sɹoʇɐןndıuɐW pınןℲ",
"create.ponder.tag.fluids.description": "spınןℲ ɟo ǝsn buıʞɐɯ puɐ buıʎɐןǝɹ dןǝɥ ɥɔıɥʍ sʇuǝuodɯoƆ",
"create.ponder.tag.high_logistics": "sɔıʇsıboꞀ ɥbıH",
"create.ponder.tag.high_logistics.description": "ʎɹoʇɔɐɟ ɹnoʎ punoɹɐ sʇsǝnbǝɹ pǝʇɐɯoʇnɐ puɐ ǝbɐɹoʇs ɯǝʇı pǝʇnqıɹʇsıp buıbɐuɐɯ dןǝɥ ɥɔıɥʍ sʇuǝuodɯoƆ",
"create.ponder.tag.high_logistics.description": "ʎɹoʇɔɐɟ ɹnoʎ punoɹɐ sʇsǝnbǝɹ pǝʇɐɯoʇnɐ puɐ ǝbɐɹoʇs ɯǝʇı pǝʇnqıɹʇsıp ǝbɐuɐɯ dןǝɥ ɥɔıɥʍ sʇuǝuodɯoƆ",
"create.ponder.tag.kinetic_appliances": "sǝɔuɐıןddⱯ ɔıʇǝuıʞ",
"create.ponder.tag.kinetic_appliances.description": "ǝɔɹoℲ ןɐuoıʇɐʇoᴚ ɟo ǝsn ǝʞɐɯ ɥɔıɥʍ sʇuǝuodɯoƆ",
"create.ponder.tag.kinetic_relays": "sʞɔoןᗺ ɔıʇǝuıʞ",
@ -2899,6 +2899,7 @@
"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.stock_ticker.keeper_missing": "ʇı ǝsn oʇ ʞɔoןq sıɥʇ oʇ ʇxǝu ɹǝuɹnq ǝzɐןq ɹo qoɯ ɐ ʇɐǝS",
"create.subtitle.blaze_munch": "sǝɥɔunɯ ɹǝuɹnᗺ ǝzɐןᗺ",
"create.subtitle.cardboard_bonk": "ʞuoq ʇuɐuosǝᴚ",
"create.subtitle.cogs": ןqɯnɹ sןǝǝɥʍboƆ",
@ -3072,6 +3073,7 @@
"create.train.status.missing_driver": "buıssıɯ ǝuob sɐɥ ɹǝʌıɹᗡ",
"create.train.status.navigation_success": "pǝpǝǝɔɔns uoıʇɐbıʌɐN",
"create.train.status.no_match": ",%1$s, sǝɥɔʇɐɯ ɥdɐɹb uo uoıʇɐʇs oN",
"create.train.status.no_package_target": "ssǝɹppɐ sʇı sǝɥɔʇɐɯ ʇɐɥʇ xoqʇsod ou sɐɥ obɹɐɔ uı ǝbɐʞɔɐd Ɐ",
"create.train.status.no_path": "punoɟ ǝq pןnoɔ uoıʇɐuıʇsǝp pǝןnpǝɥɔS ʇxǝu ǝɥʇ oʇ ɥʇɐd ǝןqɐʇıns oN",
"create.train.status.opposite_driver": "uoıʇɔǝɹıp ǝʇısoddo ǝɥʇ buıɔɐɟ ɹǝʌıɹp ɐ sǝɹınbǝɹ ɥʇɐԀ",
"create.train.status.paused_for_manual": "sןoɹʇuoɔ ןɐnuɐɯ ɹoɟ pǝsnɐd ǝןnpǝɥɔS",

View file

@ -1678,7 +1678,7 @@
"create.ponder.cart_assembler_rails.text_4": "Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_conveyor.header": "Relaying rotational force using Chain Conveyors",
"create.ponder.chain_conveyor.text_1": "Right-click two conveyors with chains to connect them",
"create.ponder.chain_conveyor.text_2": "These relay rotational power to each other very flexibly..",
"create.ponder.chain_conveyor.text_2": "Chain conveyors relay rotational power between each other..",
"create.ponder.chain_conveyor.text_3": "..and connect to shafts above or below them",
"create.ponder.chain_conveyor.text_4": "Right-click holding a wrench to start travelling on the chain",
"create.ponder.chain_conveyor.text_5": "At a junction, face towards a chain to follow it",
@ -2166,7 +2166,7 @@
"create.ponder.package_frogport.text_11": "Peter",
"create.ponder.package_frogport.text_12": "→ Peter",
"create.ponder.package_frogport.text_13": "Frogports can directly interface with inventories below them",
"create.ponder.package_frogport.text_14": "This works with packagers, items can be packed and shipped directly",
"create.ponder.package_frogport.text_14": "This also works with packagers. Items can be packed and shipped directly",
"create.ponder.package_frogport.text_15": "Albert",
"create.ponder.package_frogport.text_16": "Peter",
"create.ponder.package_frogport.text_17": "Addresses packages to 'Peter'",
@ -2181,7 +2181,7 @@
"create.ponder.package_frogport.text_8": "More Frogports can be added anywhere on the chain network",
"create.ponder.package_frogport.text_9": "Peter",
"create.ponder.packager.header": "Creating and unwrapping packages",
"create.ponder.packager.text_1": "Place packagers next to the inventory they should target",
"create.ponder.packager.text_1": "Attach packagers to the inventory they should target",
"create.ponder.packager.text_2": "Given redstone power, it will pack items from the inventory into a package",
"create.ponder.packager.text_3": "These can be picked up and transported like any other item",
"create.ponder.packager.text_4": "Packages inserted will be destroyed, unpacking the contents into the inventory",
@ -2189,7 +2189,7 @@
"create.ponder.packager.text_6": "Packagers will not accept packages they cannot fully unpack",
"create.ponder.packager_address.header": "Routing packages with an address",
"create.ponder.packager_address.text_1": "Warehouse",
"create.ponder.packager_address.text_10": "For compactness, mechanical saws can unwrap packages straight onto a belt",
"create.ponder.packager_address.text_10": "For compactness, mechanical saws can unpack straight onto a belt",
"create.ponder.packager_address.text_11": "Aside from filters, Frogports and Postboxes have package routing abilities",
"create.ponder.packager_address.text_12": "Inspect them to find out more about their behaviour",
"create.ponder.packager_address.text_2": "When a sign is placed on a packager..",
@ -2407,7 +2407,7 @@
"create.ponder.sticker.text_3": "If it is now moved in a contraption, the block will move with it",
"create.ponder.sticker.text_4": "Toggled once again, the block is no longer attached",
"create.ponder.stock_link.header": "Logistics Networks and the Stock Link",
"create.ponder.stock_link.text_1": "When placed, Stock Links create a new network",
"create.ponder.stock_link.text_1": "When placed, Stock Links create a new stock network",
"create.ponder.stock_link.text_2": "Right-click an existing link before placing it to bind them",
"create.ponder.stock_link.text_3": "Stock-linked packagers make their inventory available to the network",
"create.ponder.stock_link.text_4": "Other components on the network can now find and request their items",
@ -2417,18 +2417,18 @@
"create.ponder.stock_link.text_8": "Analog power lowers the priority of a link, causing others to act first",
"create.ponder.stock_ticker.header": "Ordering items with Stock tickers",
"create.ponder.stock_ticker.text_1": "Right-click a Stock link before placement to connect to its network",
"create.ponder.stock_ticker.text_10": "Stock tickers can also request blocks required for the schematicannon",
"create.ponder.stock_ticker.text_11": "Simply hand the printed clipboard it generated to the keeper",
"create.ponder.stock_ticker.text_2": "Stock-linked packagers make their inventory available to the network",
"create.ponder.stock_ticker.text_3": "Stock tickers can request items from these inventories",
"create.ponder.stock_ticker.text_10": "Stock tickers can also order blocks required for the schematicannon",
"create.ponder.stock_ticker.text_11": "Simply hand the printed clipboard it generated to the Stock keeper",
"create.ponder.stock_ticker.text_2": "Stock-linked packagers make their attached inventory available to the network",
"create.ponder.stock_ticker.text_3": "Stock tickers can order items from these inventories",
"create.ponder.stock_ticker.text_4": "Seated mobs or blaze burners in front of it act as the Stock Keeper",
"create.ponder.stock_ticker.text_5": "Right-click the keeper to start ordering items",
"create.ponder.stock_ticker.text_6": "When an order is submitted, the items will be placed into packages",
"create.ponder.stock_ticker.text_7": "From there, they can be transported to the request point",
"create.ponder.stock_ticker.text_8": "Using attribute or list filters, categories can be added to the item listings",
"create.ponder.stock_ticker.text_9": "Right-click the block itself to open the category editor",
"create.ponder.stock_ticker.text_9": "Right-click the Stock ticker to open the category editor",
"create.ponder.stock_ticker_address.header": "Addressing a Stock ticker order",
"create.ponder.stock_ticker_address.text_1": "When requesting items, a target address can be set in the order",
"create.ponder.stock_ticker_address.text_1": "When ordering items, a target address can be set in the request",
"create.ponder.stock_ticker_address.text_10": "Aside from filters, Frogports and Postboxes have package routing abilities",
"create.ponder.stock_ticker_address.text_11": "Inspect them to find out more about their behaviour",
"create.ponder.stock_ticker_address.text_2": "→ Workshop",
@ -2480,7 +2480,7 @@
"create.ponder.tag.fluids": "Fluid Manipulators",
"create.ponder.tag.fluids.description": "Components which help relaying and making use of Fluids",
"create.ponder.tag.high_logistics": "High Logistics",
"create.ponder.tag.high_logistics.description": "Components which help managing distributed item storage and automated requests around your factory",
"create.ponder.tag.high_logistics.description": "Components which help manage distributed item storage and automated requests around your factory",
"create.ponder.tag.kinetic_appliances": "Kinetic Appliances",
"create.ponder.tag.kinetic_appliances.description": "Components which make use of Rotational Force",
"create.ponder.tag.kinetic_relays": "Kinetic Blocks",
@ -2899,6 +2899,7 @@
"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.stock_ticker.keeper_missing": "Seat a mob or blaze burner next to this block to use it",
"create.subtitle.blaze_munch": "Blaze Burner munches",
"create.subtitle.cardboard_bonk": "Resonant bonk",
"create.subtitle.cogs": "Cogwheels rumble",
@ -3072,6 +3073,7 @@
"create.train.status.missing_driver": "Driver has gone missing",
"create.train.status.navigation_success": "Navigation succeeded",
"create.train.status.no_match": "No station on graph matches '%1$s'",
"create.train.status.no_package_target": "A package in cargo has no postbox that matches its address",
"create.train.status.no_path": "No suitable path to the next Scheduled destination could be found",
"create.train.status.opposite_driver": "Path requires a driver facing the opposite direction",
"create.train.status.paused_for_manual": "Schedule paused for manual controls",

View file

@ -80,8 +80,9 @@ public class AllPaletteBlocks {
WARPED_WINDOW = woodenWindowBlock(WoodType.WARPED, Blocks.WARPED_PLANKS),
CHERRY_WINDOW = woodenWindowBlock(WoodType.CHERRY, Blocks.CHERRY_PLANKS),
BAMBOO_WINDOW = woodenWindowBlock(WoodType.BAMBOO, Blocks.BAMBOO_PLANKS),
ORNATE_IRON_WINDOW = customWindowBlock("ornate_iron_window", () -> Items.IRON_NUGGET, null,
() -> RenderType::cutout, false, () -> MapColor.TERRACOTTA_LIGHT_GRAY),
ORNATE_IRON_WINDOW =
customWindowBlock("ornate_iron_window", () -> Items.IRON_NUGGET, () -> AllSpriteShifts.ORNATE_IRON_WINDOW,
() -> RenderType::cutout, false, () -> MapColor.TERRACOTTA_LIGHT_GRAY),
INDUSTRIAL_IRON_WINDOW = customWindowBlock("industrial_iron_window", AllBlocks.INDUSTRIAL_IRON_BLOCK,
() -> AllSpriteShifts.INDUSTRIAL_IRON_WINDOW, () -> RenderType::cutout, false, () -> MapColor.COLOR_GRAY),
WEATHERED_IRON_WINDOW = WindowGen

View file

@ -65,9 +65,9 @@ public class SymmetryWandScreen extends AbstractSimiScreen {
int x = guiLeft;
int y = guiTop;
labelType = new Label(x + 49, y + 28, Components.immutableEmpty()).colored(0xFFFFFFFF)
labelType = new Label(x + 51, y + 28, Components.immutableEmpty()).colored(0xFFFFFFFF)
.withShadow();
labelAlign = new Label(x + 49, y + 50, Components.immutableEmpty()).colored(0xFFFFFFFF)
labelAlign = new Label(x + 51, y + 50, Components.immutableEmpty()).colored(0xFFFFFFFF)
.withShadow();
int state =
@ -126,7 +126,8 @@ public class SymmetryWandScreen extends AbstractSimiScreen {
int y = guiTop;
background.render(graphics, x, y);
graphics.drawString(font, wand.getHoverName(), x + 11, y + 4, 0x592424, false);
graphics.drawString(font, wand.getHoverName(),
x + (background.getWidth() - font.width(wand.getHoverName())) / 2, y + 4, 0x592424, false);
renderBlock(graphics, x, y);
GuiGameElement.of(wand)

View file

@ -74,8 +74,8 @@ public abstract class ZapperScreen extends AbstractSimiScreen {
PlacementPatterns pattern = PlacementPatterns.values()[id];
IconButton patternButton = new IconButton(x + background.getWidth() - 76 + col * 18, y + 21 + row * 18, pattern.icon);
patternButton.withCallback(() -> {
patternButtons.forEach(b -> b.active = true);
patternButton.active = false;
patternButtons.forEach(b -> b.green = false);
patternButton.green = true;
currentPattern = pattern;
});
patternButton.setToolTip(CreateLang.translateDirect("gui.terrainzapper.pattern." + pattern.translationKey));
@ -83,7 +83,7 @@ public abstract class ZapperScreen extends AbstractSimiScreen {
}
}
patternButtons.get(currentPattern.ordinal()).active = false;
patternButtons.get(currentPattern.ordinal()).green = true;
addRenderableWidgets(patternButtons);
}
@ -101,7 +101,7 @@ public abstract class ZapperScreen extends AbstractSimiScreen {
}
protected void drawOnBackground(GuiGraphics graphics, int x, int y) {
graphics.drawString(font, title, x + 11, y + 4, 0x54214F, false);
graphics.drawString(font, title, x + (background.getWidth() - font.width(title)) / 2, y + 4, 0x54214F, false);
}
@Override

View file

@ -188,8 +188,8 @@ public class WorldshaperScreen extends ZapperScreen {
TerrainTools tool = toolValues[id];
IconButton toolButton = new IconButton(x + 7 + id * 18, y + 79, tool.icon);
toolButton.withCallback(() -> {
toolButtons.forEach(b -> b.active = true);
toolButton.active = false;
toolButtons.forEach(b -> b.green = false);
toolButton.green = true;
currentTool = tool;
});
toolButton.setToolTip(CreateLang.translateDirect("gui.terrainzapper.tool." + tool.translationKey));
@ -204,7 +204,7 @@ public class WorldshaperScreen extends ZapperScreen {
currentTool = toolValues[0];
toolIndex = 0;
}
toolButtons.get(toolIndex).active = false;
toolButtons.get(toolIndex).green = true;
addRenderableWidgets(toolButtons);
@ -220,15 +220,15 @@ public class WorldshaperScreen extends ZapperScreen {
PlacementOptions option = placementValues[id];
IconButton placementButton = new IconButton(x + 136 + id * 18, y + 79, option.icon);
placementButton.withCallback(() -> {
placementButtons.forEach(b -> b.active = true);
placementButton.active = false;
placementButtons.forEach(b -> b.green = false);
placementButton.green = true;
currentPlacement = option;
});
placementButton.setToolTip(CreateLang.translateDirect("gui.terrainzapper.placement." + option.translationKey));
placementButtons.add(placementButton);
}
placementButtons.get(currentPlacement.ordinal()).active = false;
placementButtons.get(currentPlacement.ordinal()).green = true;
addRenderableWidgets(placementButtons);
}

View file

@ -71,6 +71,7 @@ public class PackageEntity extends LivingEntity implements IEntityWithComplexSpa
super((EntityType<? extends LivingEntity>) entityTypeIn, worldIn);
box = ItemStack.EMPTY;
setYRot(this.random.nextFloat() * 360.0F);
setYHeadRot(getYRot());
yRotO = getYRot();
insertionDelay = 30;
}

View file

@ -42,7 +42,7 @@ public class PackageRenderer extends EntityRenderer<PackageEntity> {
return;
SuperByteBuffer sbb = CachedBuffers.partial(model, Blocks.AIR.defaultBlockState());
sbb.translate(-.5, 0, -.5)
.rotateCentered(AngleHelper.rad(yaw), Direction.UP)
.rotateCentered(-AngleHelper.rad(yaw + 90), Direction.UP)
.light(light)
.nudge(entity.getId());
sbb.renderInto(ms, buffer.getBuffer(RenderType.solid()));

View file

@ -8,6 +8,7 @@ import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.content.logistics.packagerLink.LogisticallyLinkedBlockItem;
import com.simibubi.create.foundation.block.IBE;
import com.simibubi.create.foundation.utility.CreateLang;
import dev.engine_room.flywheel.lib.model.baked.PartialModel;
import net.minecraft.core.BlockPos;
@ -75,8 +76,13 @@ public class StockTickerBlock extends HorizontalDirectionalBlock implements IBE<
return ItemInteractionResult.SUCCESS;
}
if (player instanceof ServerPlayer sp && stbe.isKeeperPresent())
sp.openMenu(stbe.new CategoryMenuProvider(), stbe.getBlockPos());
if (player instanceof ServerPlayer sp) {
if (stbe.isKeeperPresent())
sp.openMenu(stbe.new CategoryMenuProvider(), stbe.getBlockPos());
else
CreateLang.translate("stock_ticker.keeper_missing")
.sendStatus(player);
}
return ItemInteractionResult.SUCCESS;
});

View file

@ -24,6 +24,7 @@ import com.simibubi.create.foundation.utility.CreateLang;
import net.createmod.catnip.gui.element.GuiGameElement;
import net.createmod.catnip.lang.FontHelper.Palette;
import net.createmod.catnip.lang.Components;
import net.minecraft.ChatFormatting;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.renderer.Rect2i;
@ -89,17 +90,17 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen<Schematica
int y = topPos;
// Play Pause Stop
playButton = new IconButton(x + 75, y + 86, AllIcons.I_PLAY);
playButton = new IconButton(x + 75, y + 85, AllIcons.I_PLAY);
playButton.withCallback(() -> {
sendOptionUpdate(Option.PLAY, true);
});
playIndicator = new Indicator(x + 75, y + 79, Components.immutableEmpty());
pauseButton = new IconButton(x + 93, y + 86, AllIcons.I_PAUSE);
pauseButton = new IconButton(x + 93, y + 85, AllIcons.I_PAUSE);
pauseButton.withCallback(() -> {
sendOptionUpdate(Option.PAUSE, true);
});
pauseIndicator = new Indicator(x + 93, y + 79, Components.immutableEmpty());
resetButton = new IconButton(x + 111, y + 86, AllIcons.I_STOP);
resetButton = new IconButton(x + 111, y + 85, AllIcons.I_STOP);
resetButton.withCallback(() -> {
sendOptionUpdate(Option.STOP, true);
});
@ -108,12 +109,12 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen<Schematica
addRenderableWidgets(playButton, playIndicator, pauseButton, pauseIndicator, resetButton,
resetIndicator);
confirmButton = new IconButton(x + 180, y + 117, AllIcons.I_CONFIRM);
confirmButton = new IconButton(x + 180, y + 111, AllIcons.I_CONFIRM);
confirmButton.withCallback(() -> {
minecraft.player.closeContainer();
});
addRenderableWidget(confirmButton);
showSettingsButton = new IconButton(x + 9, y + 117, AllIcons.I_PLACEMENT_SETTINGS);
showSettingsButton = new IconButton(x + 8, y + 111, AllIcons.I_PLACEMENT_SETTINGS);
showSettingsButton.withCallback(() -> {
showSettingsIndicator.state = placementSettingsHidden() ? State.GREEN : State.OFF;
initPlacementSettings();
@ -121,7 +122,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen<Schematica
showSettingsButton.setToolTip(CreateLang.translateDirect(_showSettings));
addRenderableWidget(showSettingsButton);
showSettingsIndicator = new Indicator(x + 9, y + 111, Components.immutableEmpty());
addRenderableWidget(showSettingsIndicator);
// addRenderableWidget(showSettingsIndicator);
extraAreas = ImmutableList.of(new Rect2i(x + BG_TOP.getWidth(), y + BG_TOP.getHeight() + BG_BOTTOM.getHeight() - 62, 84, 92));
@ -150,7 +151,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen<Schematica
for (int i = 0; i < 4; i++) {
replaceLevelIndicators.add(new Indicator(x + 33 + i * 18, y + 111, Components.immutableEmpty()));
IconButton replaceLevelButton = new IconButton(x + 33 + i * 18, y + 117, icons.get(i));
IconButton replaceLevelButton = new IconButton(x + 33 + i * 18, y + 111, icons.get(i));
int replaceMode = i;
replaceLevelButton.withCallback(() -> {
if (menu.contentHolder.replaceMode != replaceMode)
@ -160,24 +161,24 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen<Schematica
replaceLevelButtons.add(replaceLevelButton);
}
placementSettingWidgets.addAll(replaceLevelButtons);
placementSettingWidgets.addAll(replaceLevelIndicators);
// placementSettingWidgets.addAll(replaceLevelIndicators);
// Other Settings
skipMissingButton = new IconButton(x + 111, y + 117, AllIcons.I_SKIP_MISSING);
skipMissingButton = new IconButton(x + 111, y + 111, AllIcons.I_SKIP_MISSING);
skipMissingButton.withCallback(() -> {
sendOptionUpdate(Option.SKIP_MISSING, !menu.contentHolder.skipMissing);
});
skipMissingButton.setToolTip(CreateLang.translateDirect("gui.schematicannon.option.skipMissing"));
skipMissingIndicator = new Indicator(x + 111, y + 111, Components.immutableEmpty());
Collections.addAll(placementSettingWidgets, skipMissingButton, skipMissingIndicator);
Collections.addAll(placementSettingWidgets, skipMissingButton);
skipBlockEntitiesButton = new IconButton(x + 129, y + 117, AllIcons.I_SKIP_BLOCK_ENTITIES);
skipBlockEntitiesButton = new IconButton(x + 135, y + 111, AllIcons.I_SKIP_BLOCK_ENTITIES);
skipBlockEntitiesButton.withCallback(() -> {
sendOptionUpdate(Option.SKIP_BLOCK_ENTITIES, !menu.contentHolder.replaceBlockEntities);
});
skipBlockEntitiesButton.setToolTip(CreateLang.translateDirect("gui.schematicannon.option.skipBlockEntities"));
skipBlockEntitiesIndicator = new Indicator(x + 129, y + 111, Components.immutableEmpty());
Collections.addAll(placementSettingWidgets, skipBlockEntitiesButton, skipBlockEntitiesIndicator);
Collections.addAll(placementSettingWidgets, skipBlockEntitiesButton);
addRenderableWidgets(placementSettingWidgets);
}
@ -194,11 +195,11 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen<Schematica
if (!placementSettingsHidden()) {
for (int replaceMode = 0; replaceMode < replaceLevelButtons.size(); replaceMode++) {
replaceLevelButtons.get(replaceMode).active = replaceMode != be.replaceMode;
replaceLevelButtons.get(replaceMode).green = replaceMode == be.replaceMode;
replaceLevelIndicators.get(replaceMode).state = replaceMode == be.replaceMode ? State.ON : State.OFF;
}
skipMissingIndicator.state = be.skipMissing ? State.ON : State.OFF;
skipBlockEntitiesIndicator.state = !be.replaceBlockEntities ? State.ON : State.OFF;
skipMissingButton.green = be.skipMissing;
skipBlockEntitiesButton.green = !be.replaceBlockEntities;
}
playIndicator.state = State.OFF;
@ -260,10 +261,10 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen<Schematica
private void fillToolTip(IconButton button, Indicator indicator, String tooltipKey) {
if (!button.isHovered())
return;
boolean enabled = indicator.state == State.ON;
boolean enabled = button.green;
List<Component> tip = button.getToolTip();
tip.add((enabled ? optionEnabled : optionDisabled).plainCopy()
.withStyle(BLUE));
.withStyle(enabled ? ChatFormatting.DARK_GREEN : ChatFormatting.RED));
tip.addAll(TooltipHelper
.cutTextComponent(CreateLang.translateDirect("gui.schematicannon.option." + tooltipKey + ".description"), Palette.ALL_GRAY));
}
@ -279,6 +280,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen<Schematica
BG_TOP.render(graphics, x, y);
BG_BOTTOM.render(graphics, x, y + BG_TOP.getHeight());
AllGuiTextures.SCHEMATIC_TITLE.render(graphics, x, y - 2);
SchematicannonBlockEntity be = menu.contentHolder;
renderPrintingProgress(graphics, x, y, be.schematicProgress);
@ -295,7 +297,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen<Schematica
.scale(5)
.render(graphics);
graphics.drawCenteredString(font, title, x + (BG_TOP.getWidth() - 8) / 2, y + 3, 0xFFFFFF);
graphics.drawString(font, title, x + (BG_TOP.getWidth() - 8 - font.width(title)) / 2, y + 2, 0x505050, false);
Component msg = CreateLang.translateDirect("schematicannon.status." + be.statusMsg);
int stringWidth = font.width(msg);
@ -308,11 +310,11 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen<Schematica
.render(graphics);
}
graphics.drawString(font, msg, x + 103 - stringWidth / 2, y + 53, 0xCCDDFF);
graphics.drawString(font, msg, x + 103 - stringWidth / 2, y + 53, 0xDDEEFF);
if ("schematicErrored".equals(be.statusMsg))
graphics.drawString(font, CreateLang.translateDirect("schematicannon.status.schematicErroredCheckLogs"),
x + 103 - stringWidth / 2, y + 65, 0xCCDDFF);
x + 103 - stringWidth / 2, y + 65, 0xDDEEFF);
}
protected void renderBlueprintHighlight(GuiGraphics graphics, int x, int y) {

View file

@ -58,7 +58,7 @@ public class SchematicEditScreen extends AbstractSimiScreen {
super.init();
int x = guiLeft;
int y = guiTop;
int y = guiTop + 2;
xInput = new EditBox(font, x + 50, y + 26, 34, 10, Components.immutableEmpty());
yInput = new EditBox(font, x + 90, y + 26, 34, 10, Components.immutableEmpty());
@ -115,7 +115,7 @@ public class SchematicEditScreen extends AbstractSimiScreen {
addRenderableWidgets(labelR, labelM, rotationArea, mirrorArea);
confirmButton =
new IconButton(x + background.getWidth() - 33, y + background.getHeight() - 24, AllIcons.I_CONFIRM);
new IconButton(x + background.getWidth() - 33, y + background.getHeight() - 26, AllIcons.I_CONFIRM);
confirmButton.withCallback(() -> {
onClose();
});
@ -158,7 +158,7 @@ public class SchematicEditScreen extends AbstractSimiScreen {
background.render(graphics, x, y);
String title = handler.getCurrentSchematicName();
graphics.drawCenteredString(font, title, x + (background.getWidth() - 8) / 2, y + 3, 0xFFFFFF);
graphics.drawString(font, title, x + (background.getWidth() - 8 - font.width(title)) / 2, y + 4, 0x505050, false);
GuiGameElement.of(AllItems.SCHEMATIC.asStack())
.<GuiGameElement.GuiRenderBuilder>at(x + background.getWidth() + 6, y + background.getHeight() - 40, -200)

View file

@ -40,7 +40,7 @@ public class SchematicPromptScreen extends AbstractSimiScreen {
super.init();
int x = guiLeft;
int y = guiTop;
int y = guiTop + 2;
nameField = new EditBox(font, x + 49, y + 26, 131, 10, Components.immutableEmpty());
nameField.setTextColor(-1);
@ -80,15 +80,15 @@ public class SchematicPromptScreen extends AbstractSimiScreen {
int y = guiTop;
background.render(graphics, x, y);
graphics.drawCenteredString(font, title, x + (background.getWidth() - 8) / 2, y + 3, 0xFFFFFF);
graphics.drawString(font, title, x + (background.getWidth() - 8 - font.width(title)) / 2, y + 4, 0x505050, false);
GuiGameElement.of(AllItems.SCHEMATIC.asStack())
.at(x + 22, y + 23, 0)
.at(x + 22, y + 24, 0)
.render(graphics);
GuiGameElement.of(AllItems.SCHEMATIC_AND_QUILL.asStack())
.scale(3)
.at(x + background.getWidth() + 6, y + background.getHeight() - 40, -200)
.at(x + background.getWidth() + 6, y + background.getHeight() - 38, -200)
.render(graphics);
}

View file

@ -69,7 +69,7 @@ public class SchematicTableMenu extends MenuBase<SchematicTableBlockEntity> {
@Override
protected void addSlots() {
inputSlot = new SlotItemHandler(contentHolder.inventory, 0, 21, 57) {
inputSlot = new SlotItemHandler(contentHolder.inventory, 0, 21, 59) {
@Override
public boolean mayPlace(ItemStack stack) {
return AllItems.EMPTY_SCHEMATIC.isIn(stack) || AllItems.SCHEMATIC_AND_QUILL.isIn(stack)
@ -77,7 +77,7 @@ public class SchematicTableMenu extends MenuBase<SchematicTableBlockEntity> {
}
};
outputSlot = new SlotItemHandler(contentHolder.inventory, 1, 166, 57) {
outputSlot = new SlotItemHandler(contentHolder.inventory, 1, 166, 59) {
@Override
public boolean mayPlace(ItemStack stack) {
return false;
@ -90,12 +90,12 @@ public class SchematicTableMenu extends MenuBase<SchematicTableBlockEntity> {
// player Slots
for (int row = 0; row < 3; ++row) {
for (int col = 0; col < 9; ++col) {
this.addSlot(new Slot(player.getInventory(), col + row * 9 + 9, 38 + col * 18, 105 + row * 18));
this.addSlot(new Slot(player.getInventory(), col + row * 9 + 9, 38 + col * 18, 107 + row * 18));
}
}
for (int hotbarSlot = 0; hotbarSlot < 9; ++hotbarSlot) {
this.addSlot(new Slot(player.getInventory(), hotbarSlot, 38 + hotbarSlot * 18, 163));
this.addSlot(new Slot(player.getInventory(), hotbarSlot, 38 + hotbarSlot * 18, 165));
}
}

View file

@ -71,9 +71,9 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen<SchematicT
List<Component> availableSchematics = CreateClient.SCHEMATIC_SENDER.getAvailableSchematics();
int x = leftPos;
int y = topPos;
int y = topPos + 2;
schematicsLabel = new Label(x + 49, y + 26, Components.immutableEmpty()).withShadow();
schematicsLabel = new Label(x + 51, y + 26, Components.immutableEmpty()).withShadow();
schematicsLabel.text = Components.immutableEmpty();
if (!availableSchematics.isEmpty()) {
schematicsArea =
@ -95,14 +95,14 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen<SchematicT
}
});
folderButton = new IconButton(x + 21, y + 21, AllIcons.I_OPEN_FOLDER);
folderButton = new IconButton(x + 20, y + 21, AllIcons.I_OPEN_FOLDER);
folderButton.withCallback(() -> {
Util.getPlatform()
.openFile(Paths.get("schematics/")
.toFile());
});
folderButton.setToolTip(folder);
refreshButton = new IconButton(x + 207, y + 21, AllIcons.I_REFRESH);
refreshButton = new IconButton(x + 206, y + 21, AllIcons.I_REFRESH);
refreshButton.withCallback(() -> {
ClientSchematicLoader schematicSender = CreateClient.SCHEMATIC_SENDER;
schematicSender.refresh();
@ -152,7 +152,8 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen<SchematicT
titleText = finished;
else
titleText = title;
graphics.drawCenteredString(font, titleText, x + (background.getWidth() - 8) / 2, y + 3, 0xFFFFFF);
graphics.drawString(font, titleText, x + (background.getWidth() - 8 - font.width(titleText)) / 2, y + 4, 0x505050, false);
if (schematicsArea == null)
graphics.drawString(font, noSchematics, x + 54, y + 26, 0xD3D3D3);
@ -165,7 +166,7 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen<SchematicT
int width = (int) (SCHEMATIC_TABLE_PROGRESS.getWidth()
* Mth.lerp(partialTicks, lastChasingProgress, chasingProgress));
int height = SCHEMATIC_TABLE_PROGRESS.getHeight();
graphics.blit(SCHEMATIC_TABLE_PROGRESS.location, x + 70, y + 57, SCHEMATIC_TABLE_PROGRESS.getStartX(),
graphics.blit(SCHEMATIC_TABLE_PROGRESS.location, x + 70, y + 59, SCHEMATIC_TABLE_PROGRESS.getStartX(),
SCHEMATIC_TABLE_PROGRESS.getStartY(), width, height);
}

View file

@ -110,30 +110,40 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleMenu> im
super.init();
clearWidgets();
confirmButton = new IconButton(leftPos + bg.getWidth() - 42, topPos + bg.getHeight() - 24, AllIcons.I_CONFIRM);
confirmButton = new IconButton(leftPos + bg.getWidth() - 42, topPos + bg.getHeight() - 30, AllIcons.I_CONFIRM);
confirmButton.withCallback(() -> minecraft.player.closeContainer());
addRenderableWidget(confirmButton);
cyclicIndicator = new Indicator(leftPos + 21, topPos + 196, Components.immutableEmpty());
cyclicIndicator.state = schedule.cyclic ? State.ON : State.OFF;
addRenderableWidget(cyclicIndicator);
cyclicButton = new IconButton(leftPos + 21, topPos + 202, AllIcons.I_REFRESH);
cyclicButton.withCallback(() -> {
schedule.cyclic = !schedule.cyclic;
cyclicIndicator.state = schedule.cyclic ? State.ON : State.OFF;
});
List<Component> tip = cyclicButton.getToolTip();
List<Component> tip = new ArrayList<>();
tip.add(CreateLang.translateDirect("schedule.loop"));
tip.add(CreateLang.translateDirect("gui.schematicannon.optionDisabled")
.withStyle(ChatFormatting.RED));
tip.add(CreateLang.translateDirect("schedule.loop1")
.withStyle(ChatFormatting.GRAY));
tip.add(CreateLang.translateDirect("schedule.loop2")
.withStyle(ChatFormatting.GRAY));
List<Component> tipEnabled = new ArrayList<>(tip);
tipEnabled.set(1, CreateLang.translateDirect("gui.schematicannon.optionEnabled")
.withStyle(ChatFormatting.DARK_GREEN));
cyclicButton = new IconButton(leftPos + 21, topPos + 196, AllIcons.I_REFRESH);
cyclicButton.withCallback(() -> {
schedule.cyclic = !schedule.cyclic;
cyclicButton.green = schedule.cyclic;
cyclicButton.getToolTip().clear();
cyclicButton.getToolTip().addAll(schedule.cyclic ? tipEnabled : tip);
});
cyclicButton.green = schedule.cyclic;
cyclicButton.getToolTip().clear();
cyclicButton.getToolTip().addAll(schedule.cyclic ? tipEnabled : tip);
addRenderableWidget(cyclicButton);
resetProgress = new IconButton(leftPos + 45, topPos + 202, AllIcons.I_PRIORITY_VERY_HIGH);
resetProgress = new IconButton(leftPos + 45, topPos + 196, AllIcons.I_PRIORITY_VERY_HIGH);
resetProgress.withCallback(() -> {
schedule.savedProgress = 0;
resetProgress.active = false;
@ -142,7 +152,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleMenu> im
resetProgress.setToolTip(CreateLang.translateDirect("schedule.reset"));
addRenderableWidget(resetProgress);
skipProgress = new IconButton(leftPos + 63, topPos + 202, AllIcons.I_PRIORITY_LOW);
skipProgress = new IconButton(leftPos + 63, topPos + 196, AllIcons.I_PRIORITY_LOW);
skipProgress.withCallback(() -> {
schedule.savedProgress++;
schedule.savedProgress %= schedule.entries.size();

View file

@ -24,13 +24,14 @@ public enum AllGuiTextures implements ScreenElement, TextureSheetSegment {
CURSEFORGE_LOGO("platform_icons/curseforge", 256, 256),
MODRINTH_LOGO("platform_icons/modrinth", 256, 256),
SCHEMATIC("schematics", 192, 121),
SCHEMATIC("schematics", 10, 8, 192, 123),
SCHEMATIC_TITLE("schematics_2", 205, 15),
SCHEMATIC_SLOT("widgets", 54, 0, 16, 16),
SCHEMATIC_PROMPT("schematics_2", 213, 77),
SCHEMATIC_PROMPT("schematics_2", 213, 79),
HUD_BACKGROUND("overlay", 0, 0, 16, 16),
SCHEMATIC_TABLE("schematics", 0, 121, 214, 83),
SCHEMATIC_TABLE_PROGRESS("schematics", 0, 204, 84, 16),
SCHEMATIC_TABLE("schematics", 10, 139, 214, 85),
SCHEMATIC_TABLE_PROGRESS("schematics", 10, 224, 84, 16),
SCHEMATICANNON_TOP("schematics_2", 0, 77, 213, 42),
SCHEMATICANNON_BOTTOM("schematics_2", 0, 119, 213, 99),

View file

@ -53,84 +53,84 @@ public class AllCreatePonderTags {
helper.registerTag(KINETIC_RELAYS)
.addToIndex()
.item(AllBlocks.COGWHEEL.get())
.item(AllBlocks.COGWHEEL.get(), true, false)
.title("Kinetic Blocks")
.description("Components which help relaying Rotational Force elsewhere")
.register();
helper.registerTag(KINETIC_SOURCES)
.addToIndex()
.item(AllBlocks.WATER_WHEEL.get())
.item(AllBlocks.WATER_WHEEL.get(), true, false)
.title("Kinetic Sources")
.description("Components which generate Rotational Force")
.register();
helper.registerTag(KINETIC_APPLIANCES)
.addToIndex()
.item(AllBlocks.MECHANICAL_PRESS.get())
.item(AllBlocks.MECHANICAL_PRESS.get(), true, false)
.title("Kinetic Appliances")
.description("Components which make use of Rotational Force")
.register();
helper.registerTag(FLUIDS)
.addToIndex()
.item(AllBlocks.FLUID_PIPE.get())
.item(AllBlocks.FLUID_PIPE.get(), true, false)
.title("Fluid Manipulators")
.description("Components which help relaying and making use of Fluids")
.register();
helper.registerTag(LOGISTICS)
.addToIndex()
.item(Blocks.CHEST)
.item(Blocks.CHEST, true, false)
.title("Item Transportation")
.description("Components which help moving items around")
.register();
helper.registerTag(HIGH_LOGISTICS)
.addToIndex()
.item(AllBlocks.STOCK_TICKER.get())
.item(AllBlocks.STOCK_TICKER.get(), true, false)
.title("High Logistics")
.description("Components which help managing distributed item storage and automated requests around your factory")
.description("Components which help manage distributed item storage and automated requests around your factory")
.register();
helper.registerTag(REDSTONE)
.addToIndex()
.item(Items.REDSTONE)
.item(Items.REDSTONE, true, false)
.title("Logic Components")
.description("Components which help with redstone engineering")
.register();
helper.registerTag(DECORATION)
.addToIndex()
.item(Items.ROSE_BUSH)
.item(Items.ROSE_BUSH, true, false)
.title("Aesthetics")
.description("Components used mostly for decorative purposes")
.register();
helper.registerTag(CREATIVE)
.addToIndex()
.item(AllBlocks.CREATIVE_CRATE.get())
.item(AllBlocks.CREATIVE_CRATE.get(), true, false)
.title("Creative Mode")
.description("Components not usually available for Survival Mode")
.register();
helper.registerTag(MOVEMENT_ANCHOR)
.addToIndex()
.item(AllBlocks.MECHANICAL_PISTON.get())
.item(AllBlocks.MECHANICAL_PISTON.get(), true, false)
.title("Movement Anchors")
.description("Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways")
.register();
helper.registerTag(CONTRAPTION_ACTOR)
.addToIndex()
.item(AllBlocks.MECHANICAL_HARVESTER.get())
.item(AllBlocks.MECHANICAL_HARVESTER.get(), true, false)
.title("Contraption Actors")
.description("Components which expose special behaviour when attached to a moving contraption")
.register();
helper.registerTag(CONTRAPTION_ASSEMBLY)
.addToIndex()
.item(AllItems.SUPER_GLUE.get())
.item(AllItems.SUPER_GLUE.get(), true, false)
.title("Block Attachment Utility")
.description("Tools and Components used to assemble structures moved as an animated Contraption")
.register();
@ -149,7 +149,7 @@ public class AllCreatePonderTags {
helper.registerTag(TRAIN_RELATED)
.addToIndex()
.item(AllBlocks.TRACK.get())
.item(AllBlocks.TRACK.get(), true, false)
.title("Railway Equipment")
.description("Components used in the construction or management of Train Contraptions")
.register();
@ -356,10 +356,10 @@ public class AllCreatePonderTags {
HELPER.addToTag(HIGH_LOGISTICS)
.add(AllBlocks.PACKAGER)
.add(AllBlocks.PACKAGE_FROGPORT)
.add(AllBlocks.PACKAGE_POSTBOXES.get(DyeColor.WHITE))
.add(AllBlocks.STOCK_LINK)
.add(AllBlocks.STOCK_TICKER)
.add(AllBlocks.PACKAGE_FROGPORT)
.add(AllBlocks.PACKAGE_POSTBOXES.get(DyeColor.WHITE))
.add(AllBlocks.REDSTONE_REQUESTER)
.add(AllBlocks.TABLE_CLOTHS.get(DyeColor.RED))
.add(AllBlocks.FACTORY_GAUGE)

View file

@ -182,13 +182,13 @@ public class FrogAndConveyorScenes {
scene.idle(20);
scene.overlay()
.showText(60)
.text("These relay rotational power to each other very flexibly..")
.showText(70)
.text("Chain conveyors relay rotational power between each other..")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector()
.topOf(conv3.offset(-1, 0, -1)));
scene.idle(50);
scene.idle(60);
scene.world()
.hideIndependentSection(poleE, Direction.SOUTH);
@ -790,7 +790,7 @@ public class FrogAndConveyorScenes {
scene.overlay()
.showText(90)
.attachKeyFrame()
.text("This works with packagers, items can be packed and shipped directly")
.text("This also works with packagers. Items can be packed and shipped directly")
.pointAt(util.vector()
.blockSurface(fromFrog.below(), Direction.WEST))
.placeNearTarget();

View file

@ -81,7 +81,7 @@ public class PackagerScenes {
scene.overlay()
.showText(80)
.text("Place packagers next to the inventory they should target")
.text("Attach packagers to the inventory they should target")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector()
@ -504,7 +504,7 @@ public class PackagerScenes {
.everywhere(), 1 / 32f);
scene.overlay()
.showText(100)
.text("For compactness, mechanical saws can unwrap packages straight onto a belt")
.text("For compactness, mechanical saws can unpack straight onto a belt")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector()

View file

@ -31,6 +31,7 @@ public class PostboxScenes {
scene.title("postbox", "Transporting packages between Postboxes");
scene.configureBasePlate(0, 1, 9);
scene.scaleSceneView(.875f);
scene.removeShadow();
scene.setSceneOffsetY(-0.5f);
BlockPos station = util.grid()

View file

@ -76,7 +76,7 @@ public class StockLinkScenes {
scene.overlay()
.showText(70)
.attachKeyFrame()
.text("When placed, Stock Links create a new network")
.text("When placed, Stock Links create a new stock network")
.pointAt(util.vector()
.centerOf(link2.below()))
.placeNearTarget();

View file

@ -194,21 +194,21 @@ public class StockTickerScenes {
scene.idle(30);
scene.overlay()
.showText(80)
.text("Stock-linked packagers make their inventory available to the network")
.showText(100)
.text("Stock-linked packagers make their attached inventory available to the network")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector()
.blockSurface(util.grid()
.at(3, 2, 5), Direction.WEST));
scene.idle(90);
scene.idle(110);
scene.overlay()
.showOutline(PonderPalette.BLUE, ticker, tickerS, 40);
scene.overlay()
.showText(80)
.text("Stock tickers can request items from these inventories")
.text("Stock tickers can order items from these inventories")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector()
@ -356,7 +356,7 @@ public class StockTickerScenes {
scene.overlay()
.showText(80)
.text("Right-click the block itself to open the category editor")
.text("Right-click the Stock ticker to open the category editor")
.colored(PonderPalette.BLUE)
.placeNearTarget()
.pointAt(util.vector()
@ -368,7 +368,7 @@ public class StockTickerScenes {
scene.overlay()
.showText(80)
.text("Stock tickers can also request blocks required for the schematicannon")
.text("Stock tickers can also order blocks required for the schematicannon")
.colored(PonderPalette.BLUE)
.attachKeyFrame()
.placeNearTarget()
@ -386,7 +386,7 @@ public class StockTickerScenes {
scene.overlay()
.showText(80)
.text("Simply hand the printed clipboard it generated to the keeper")
.text("Simply hand the printed clipboard it generated to the Stock keeper")
.colored(PonderPalette.BLUE)
.placeNearTarget()
.pointAt(keeper);
@ -454,7 +454,7 @@ public class StockTickerScenes {
scene.overlay()
.showText(90)
.text("When requesting items, a target address can be set in the order")
.text("When ordering items, a target address can be set in the request")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector()

View file

@ -342,6 +342,7 @@ public class TrackScenes {
scene.title("track_chunks", "Traversing unloaded Chunks");
scene.configureBasePlate(0, 0, 9);
scene.scaleSceneView(.65f);
scene.removeShadow();
scene.setSceneOffsetY(-1);
scene.world().cycleBlockProperty(util.grid().at(5, 3, 4), BlazeBurnerBlock.HEAT_LEVEL);

View file

@ -350,6 +350,7 @@
"create.stock_ticker.contains_payments": "Contains payments:",
"create.stock_ticker.click_to_retrieve": "Click to retrieve",
"create.stock_ticker.keeper_missing": "Seat a mob or blaze burner next to this block to use it",
"create.gui.stock_ticker.category_editor": "Category Editor",
"create.gui.stock_ticker.shift_moves_top": "Shift moves to top",
@ -991,6 +992,7 @@
"create.train.status.navigation_success": "Navigation succeeded",
"create.train.status.no_match": "No station on graph matches '%1$s'",
"create.train.status.no_path": "No suitable path to the next Scheduled destination could be found",
"create.train.status.no_package_target": "A package in cargo has no postbox that matches its address",
"create.track_signal.cannot_change_mode": "Unable to switch mode of this Signal",
"create.track_signal.mode_change.entry_signal": "-> Allow passage if section unoccupied",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 419 B

After

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 453 B

After

Width:  |  Height:  |  Size: 496 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 455 B

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB