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

This commit is contained in:
IThundxr 2025-01-07 16:57:24 -05:00
commit 2e1627eb34
Failed to generate hash of commit
60 changed files with 790 additions and 97 deletions

View file

@ -1,4 +1,4 @@
// 1.20.1 2025-01-06T22:46:25.6513213 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-07T16:30:09.3458051 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
908484cff8ec27c3b4cf39ac683b6b7a5528e470 assets/create/lang/en_ud.json
7401dfd627e4b0177b75aff4068be5d249e326f2 assets/create/lang/en_us.json
ae4560acf1dc152676a319589184d6722d2893e4 assets/create/lang/en_ud.json
b90c20d923ba094594f5062802eeb822f34691ef 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

@ -1,4 +1,4 @@
// 1.20.1 2024-10-18T15:46:50.483838 Create's Advancements
// 1.20.1 2025-01-07T16:08:48.0358648 Create's Advancements
2661a689fdcf729494f46e3c719f71c62e31582e data/create/advancements/andesite_alloy.json
fa16c4afe0496edc3f157858a6e0ff177a1622ff data/create/advancements/andesite_casing.json
5a694002d0a663bc869b09d15924a10c43dc522f data/create/advancements/anvil_plough.json
@ -10,6 +10,9 @@ b960076e653a3682aa4ebb82bdca957d455c7604 data/create/advancements/backtank.json
ca6d0355dbd9a7de587c4ebf2aed82e920e007c1 data/create/advancements/brass.json
78224097bda936d1ba9bf682a9177ad252139a51 data/create/advancements/brass_casing.json
113f1a063d78207e600e536200004756b42e0cd7 data/create/advancements/burner.json
680a97ebbb3579e0cbe52bf3b98bfd94a1d988aa data/create/advancements/cardboard.json
b7da43c88bd8a2e065c1a0656a9831908879c988 data/create/advancements/cardboard_armor.json
ded6f5eac4eab92834e4775285ffbbc2196db081 data/create/advancements/cardboard_armor_trim.json
7c0aed400d4933d5ca13db42517efa2959a1bed0 data/create/advancements/cart_pickup.json
2970c69c310e8e3dbe295621d04a8f42bb7fd1f0 data/create/advancements/chained_drain.json
5334499c577b7531a5de2ff46f371939554f1eb8 data/create/advancements/chocolate_bucket.json
@ -19,7 +22,7 @@ e99071520e9b27b66085367683bc7b972a349c2f data/create/advancements/chute.json
041ddb4720296fc4446d5d694afe3ec1c21c881b data/create/advancements/conductor.json
848f64e1f30c1ec0eac57b6760e282cf030a25fc data/create/advancements/contraption_actors.json
5074053518627b4229bd1f79b20c67e3056f7983 data/create/advancements/copper.json
90763d18fa6cf42cb409b75bc2a3be53d76aab1d data/create/advancements/copper_casing.json
83b2703c3b79187161b44697930bb1c46a920f0b data/create/advancements/copper_casing.json
f2e04dd82a25cc080a4901e03e0f1fafeb6ea191 data/create/advancements/crafter_lazy_000.json
4f88d0bf42d208bc5037509c197725bc4e4e68e4 data/create/advancements/cross_streams.json
44ed195706af6ee0cc3b98b9ea4f7d8326899391 data/create/advancements/crusher_maxed_0000.json
@ -27,7 +30,7 @@ f2e04dd82a25cc080a4901e03e0f1fafeb6ea191 data/create/advancements/crafter_lazy_0
01c6fa0494e5915b99a0b0aebd941ebbb177cd3a data/create/advancements/cuckoo_clock.json
ac78707d112458c7f771260cf65f0e9bc928d1b6 data/create/advancements/deployer.json
48c3af4499797cfb695a235e4527c52c608d40ad data/create/advancements/display_board_0.json
24be041d833017d7e7e02a5a92fd04060ea62594 data/create/advancements/display_link.json
ef4055989f4ffc7432ed9531ec4639c69fd48ba6 data/create/advancements/display_link.json
cc2c729cf82a0c80b4966ac6382984da08429b9d data/create/advancements/diving_suit.json
e1af547fd148cf9e60c1725ab03545fe3010eac7 data/create/advancements/diving_suit_lava.json
4d91e6a7bbf08191d8d1e11943650dfc1dc170e6 data/create/advancements/drain.json
@ -35,9 +38,11 @@ dee06f0f78a97a6358b67459d05fb479e5318fe9 data/create/advancements/ejector_maxed.
3300ee54dc1e9d04fd13a11c971e046d9db24e10 data/create/advancements/encased_fan.json
fb61193b9d02d1fd595ac99721812a59dc7c7c29 data/create/advancements/extendo_grip.json
845a6c63b26a238c5ff82f37ca25ef5a8f7c11fc data/create/advancements/extendo_grip_dual.json
7ea086b6667879458bbc3cfd5b7bef59cd22f5b3 data/create/advancements/factory_gauge.json
46950345e76ef2d98bf3ea737530976781901a0f data/create/advancements/fan_processing.json
8f0f884dbc6eb94e03ffae374105c7100a073d85 data/create/advancements/fist_bump.json
5e39ecb68037ade25897dff1dc419065752d2c43 data/create/advancements/foods.json
9b029a15bd4c6bfa71da0a256df5a12532d4645a data/create/advancements/frogport.json
7c72b9440b3f0525658b5c12d46a56d48521ca93 data/create/advancements/funnel.json
1dcfded7b20756ad6dfd4a6c4d0106c343e9e17e data/create/advancements/glass_pipe.json
94a4e1ac38935288cc84f4b374cf1553ed39b2b0 data/create/advancements/hand_crank_000.json
@ -56,6 +61,8 @@ d89152d4f3c992b892e8ec4bef03605ef20c1520 data/create/advancements/mechanical_cra
5b50f84f2b697d630294e2b8db8b60dba84a1011 data/create/advancements/mechanical_pump_0.json
8adbdf6e0b0df40fed5ecfc5a5b13ca6a075be83 data/create/advancements/millstone.json
82a61db27464e2ede2b2079276cf69bb465a5085 data/create/advancements/musical_arm.json
87f554c3621a11dd5f49553202e76d6a8df30623 data/create/advancements/packager.json
a59b972ef1ebb7bee001282a2d71553363a3ee92 data/create/advancements/package_chute_throw.json
a7119c747a2c16d93b9df669f80ccb3863a331ce data/create/advancements/pipe_organ.json
8118ffd53c264f535517936a0fc720a7850e8907 data/create/advancements/portable_storage_interface.json
826768f46254a9fc0ea048e600511cab4a0a781f data/create/advancements/potato_cannon.json
@ -73,15 +80,17 @@ a1e44c8ff2b7ed96d4b76e6122fd41fa528826b1 data/create/advancements/speed_controll
28c7898ee0dad051744b95c0154744caf025e849 data/create/advancements/steam_engine.json
b3c18b1d41126d135318769f83ccc6fe51da2c54 data/create/advancements/steam_engine_maxed.json
742b75d31271e5f58ba2572606a10a43db8acea1 data/create/advancements/steam_whistle.json
e6317ea94e3f891f6767fb054fc6955e8c948a96 data/create/advancements/stock_ticker.json
90954d173a67584221ee02114971d515247607ae data/create/advancements/stressometer.json
b77e7b17c397cc88ca2f75f68c52d60488ece97a data/create/advancements/stressometer_maxed.json
cc75b35e53137d229896c334f09ebc5930f56307 data/create/advancements/sturdy_sheet.json
4794a7d7ea140333809bb78b77a30997bbb606bd data/create/advancements/super_glue.json
3b3b1778c82b14f029a803d45bd0f3985004999b data/create/advancements/table_cloth_shop.json
cbc796a4bd3dd9bb3e66ab437b27fcf5a1fdc050 data/create/advancements/track_0.json
916a9a75900fa36aa3c5422d4e35eeeb57d20f61 data/create/advancements/track_crafting_factory.json
4938c2be415c15a70a41570bbb49f772eaed5af0 data/create/advancements/track_signal.json
797f76512083d562549a20e9abc679846cce885f data/create/advancements/train.json
227f401a440746c02ce0713c44b4cc623307e014 data/create/advancements/train_casing_00.json
62d418a19498cb9f788d64c967ee1c15c886c60e data/create/advancements/train_casing_00.json
f1645a6cfdfcade5366d9f3be501e596b1600330 data/create/advancements/train_crash.json
484986302e8c1708064b5dbb5ce35e443f6151d7 data/create/advancements/train_crash_backwards.json
22c39846ee59d7c71468fe795fa354cb0a4aafd9 data/create/advancements/train_portal.json

View file

@ -1,2 +1,2 @@
// 1.20.1 2025-01-06T22:46:25.6503343 Create's Custom Sounds
1305ab16efe6b554f5c852de0d52adaf419c4f76 assets/create/sounds.json
// 1.20.1 2025-01-07T12:22:29.7516833 Create's Custom Sounds
56957fbbc59f80d23bf39df63f1925112fbfef7d assets/create/sounds.json

View file

@ -21,6 +21,12 @@
"advancement.create.brass_casing.desc": "sǝuıɥɔɐɯ pǝʇɐɔıʇsıɥdos ǝɹoɯ ɹoɟ buısɐɔ ɐ buıʇɐǝɹɔ 'pooʍ pǝddıɹʇs oʇ sʇobuI ssɐɹᗺ ʎןddⱯ",
"advancement.create.burner": "ǝɔɐןdǝɹıℲ ʇuǝıʇuǝS",
"advancement.create.burner.desc": "ɹǝuɹnᗺ ǝzɐןᗺ ɐ uıɐʇqO",
"advancement.create.cardboard": "ןǝɔɹɐԀ puɐ ʇɹɐԀ",
"advancement.create.cardboard.desc": "pɹɐoqpɹɐƆ ʇsɹıɟ ɹnoʎ uıɐʇqo ɹo ǝɔnpoɹԀ",
"advancement.create.cardboard_armor": "ɥʇןɐǝʇS ןןnℲ",
"advancement.create.cardboard_armor.desc": "ɹoɯɹⱯ pɹɐoqpɹɐƆ ןןnɟ uı punoɹɐ ʞɐǝuS",
"advancement.create.cardboard_armor_trim": "sʇɟɐɹƆ puɐ sʇɹⱯ",
"advancement.create.cardboard_armor_trim.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nsɯıɹʇ ɹoɯɹɐ ɥʇıʍ ʇuǝɯdınbǝ pɹɐoqpɹɐɔ ɹnoʎ ǝʇɐɹoɔǝᗡ",
"advancement.create.cart_pickup": "sɯɹⱯ buoɹʇS",
"advancement.create.cart_pickup.desc": "sʞɔoןq pǝɥɔɐʇʇɐ 00ᄅ ʇsɐǝן ʇɐ ɥʇıʍ uoıʇdɐɹʇuoƆ ʇɹɐɔǝuıW ɐ dn ʞɔıԀ",
"advancement.create.chained_drain": "ןןoᴚ ɐ uO",
@ -29,7 +35,7 @@
"advancement.create.chocolate_bucket.desc": "ǝʇɐןoɔoɥɔ uǝʇןoɯ ɟo ʇǝʞɔnq ɐ uıɐʇqO",
"advancement.create.chute": "sɔıʇsıboꞀ ןɐɔıʇɹǝΛ",
"advancement.create.chute.desc": "ǝʇnɥƆ ʎq sɯǝʇı ǝɯos ʇɹodsuɐɹ⟘",
"advancement.create.clockwork_bearing": "ʞɔoןƆ,O uoıʇdɐɹʇuoƆ",
"advancement.create.clockwork_bearing": "ʞɔoןƆ,o uoıʇdɐɹʇuoƆ",
"advancement.create.clockwork_bearing.desc": "buıɹɐǝᗺ ʞɹoʍʞɔoןƆ ɐ uo pǝʇunoɯ ǝɹnʇɔnɹʇs ɐ ǝןqɯǝssⱯ",
"advancement.create.compacting": "uoıʇɐɔıɟıʇɔɐdɯoƆ",
"advancement.create.compacting.desc": "ǝɹoɯ ɯoɹɟ sɯǝʇı ɹǝʍǝɟ ǝʇɐǝɹɔ oʇ uısɐᗺ ɐ puɐ ssǝɹԀ ןɐɔıuɐɥɔǝW ɐ ǝs∩",
@ -47,9 +53,9 @@
"advancement.create.cross_streams.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nʞɹoʍʇǝu ǝdıd ɹnoʎ uı ʇǝǝɯ spınןɟ oʍʇ ɥɔʇɐM",
"advancement.create.crusher_maxed_0000": "ʇI buıɥsnɹƆ",
"advancement.create.crusher_maxed_0000.desc": "pǝǝds ɯnɯıɯ ʇɐ sןǝǝɥM buıɥsnɹƆ ɟo ɹıɐd ɐ ǝʇɐɹǝdO",
"advancement.create.crushing_wheel": "sʇuɐı⅁ ɟo ɹıɐԀ Ɐ",
"advancement.create.crushing_wheel": "uoıʇɔnɹʇsǝᗡ ɟo sןǝǝɥM",
"advancement.create.crushing_wheel.desc": "sןǝǝɥM buıɥsnɹƆ ɟo ʇǝs ɐ ɹǝʍod puɐ ǝɔɐןԀ",
"advancement.create.cuckoo_clock": "¿ǝɯı⟘ ʇI sI",
"advancement.create.cuckoo_clock": "¿ǝɯı⟘ ʇı sI",
"advancement.create.cuckoo_clock.desc": ɯıʇpǝq ǝɔunouuɐ ʞɔoןƆ ooʞɔnƆ ɹnoʎ ssǝuʇıM",
"advancement.create.deployer": "ǝɔuǝbıןןǝʇuI ןɐıɔıɟıʇɹⱯ",
"advancement.create.deployer.desc": ןǝsɹnoʎ ɟo uoıʇɔǝןɟǝɹ ʇɔǝɟɹǝd ǝɥʇ 'ɹǝʎoןdǝᗡ ɐ ɹǝʍod puɐ ǝɔɐןԀ",
@ -71,12 +77,16 @@
"advancement.create.extendo_grip.desc": "dıɹ⅁ opuǝʇxƎ uɐ ɟo pןoɥ ʇǝ⅁",
"advancement.create.extendo_grip_dual": "ʇuǝʇxƎ ןןnℲ o⟘",
"advancement.create.extendo_grip_dual.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nɥɔɐǝɹ uɐɯnɥɹǝdns ɹoɟ sdıɹ⅁ opuǝʇxƎ pןǝıʍ-ןɐnᗡ",
"advancement.create.factory_gauge": "sɔıʇsıboꞀ ɥbıH",
"advancement.create.factory_gauge.desc": "sǝbnɐ⅁ ʎɹoʇɔɐℲ buısn ʇsǝnbǝɹ ǝbɐʞɔɐd ɔıʇɐɯoʇnɐ uɐ ɹǝbbıɹ⟘",
"advancement.create.fan_processing": "ǝןɔıʇɹɐԀ ʎq buıssǝɔoɹԀ",
"advancement.create.fan_processing.desc": "sןɐıɹǝʇɐɯ ssǝɔoɹd oʇ uɐℲ pǝsɐɔuƎ uɐ ǝs∩",
"advancement.create.fist_bump": "¡oɹᗺ 'ʇI punoԀ",
"advancement.create.fist_bump.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\ndɯnq-ʇsıɟ sɹǝʎoןdǝᗡ oʍʇ ǝʞɐW",
"advancement.create.foods": "ʇǝıᗡ pǝɔuɐןɐᗺ",
"advancement.create.foods.desc": "ʇnodS ǝɯɐs ǝɥʇ ɯoɹɟ ןןɐ ןןoᴚ ʇǝǝʍS ɐ puɐ 'ǝןddⱯ pǝʎǝuoH ɐ 'sǝıɹɹǝᗺ pǝzɐן⅁ ǝʇɐןoɔoɥƆ ǝʇɐǝɹƆ",
"advancement.create.frogport": "sɹǝddoɥ ʎɹbunH",
"advancement.create.frogport.desc": "ʇɹodboɹℲ ɐ buısn ɹoʎǝʌuoƆ uıɐɥƆ ɹnoʎ ɯoɹɟ sǝbɐʞɔɐd ɥɔʇɐƆ",
"advancement.create.funnel": ıʇǝɥʇsǝⱯ ʇɹodɹıⱯ",
"advancement.create.funnel.desc": "ןǝuunℲ ɐ buısn ɹǝuıɐʇuoɔ ɐ oʇuı sɯǝʇı ʇɹǝsuı ɹo ʇɔɐɹʇxƎ",
"advancement.create.glass_pipe": "ʎɹǝʌoɔsıᗡ ʍoןℲ",
@ -113,9 +123,13 @@
"advancement.create.millstone.desc": "sןɐıɹǝʇɐɯ ǝsıɹǝʌןnd oʇ ǝuoʇsןןıW ɐ ǝs∩",
"advancement.create.musical_arm": "oɔıuɐɥɔǝW ſᗡ",
"advancement.create.musical_arm.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nxoqǝʞnſ ɹnoʎ ǝʇɐɹǝdo ɯɹⱯ ןɐɔıuɐɥɔǝW ɐ ɥɔʇɐM",
"advancement.create.package_chute_throw": "ʇǝu ʇnq buıɥʇoN",
"advancement.create.package_chute_throw.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nǝʇnɥɔ ɯǝʇı uɐ uı ʍoɹɥʇ ǝbɐʞɔɐd pɹɐoqpɹɐɔ ɹnoʎ puɐꞀ",
"advancement.create.packager": "uoıʇɔnpoɹԀ ʇsoԀ",
"advancement.create.packager.desc": "ɹǝbɐʞɔɐԀ ǝɥʇ buısn ʎɹoʇuǝʌuıɯoɹɟ sɯǝʇı ǝbɐʞɔɐԀ",
"advancement.create.pipe_organ": "uɐbɹO ǝdıԀ ǝɥ⟘",
"advancement.create.pipe_organ.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nʞuɐ⟘ pınןℲ ǝןbuıs ɐ oʇ sǝןʇsıɥM ɯɐǝʇS pǝɥɔʇıd ʎןǝnbıun ᄅƖ ɥɔɐʇʇⱯ",
"advancement.create.portable_storage_interface": "ǝbuɐɥɔxƎ ʎᗺ-ǝʌıɹᗡ",
"advancement.create.portable_storage_interface": "ǝbuɐɥɔxƎ ʎq-ǝʌıɹᗡ",
"advancement.create.portable_storage_interface.desc": "uoıʇdɐɹʇuoƆ ɐ oʇuı sɯǝʇı ʇɹǝsuı ɹo ǝʞɐʇ oʇ ǝɔɐɟɹǝʇuI ǝbɐɹoʇS ǝןqɐʇɹoԀ ɐ ǝs∩",
"advancement.create.potato_cannon": "¡dɯooʍℲ",
"advancement.create.potato_cannon.desc": "uouuɐƆ oʇɐʇoԀ ɹnoʎ ɥʇıʍ ʎɯǝuǝ uɐ ʇɐǝɟǝᗡ",
@ -129,7 +143,7 @@
"advancement.create.red_signal.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nןɐubıS uıɐɹ⟘ pǝɹ ɐ unᴚ",
"advancement.create.root": "ǝʇɐǝɹƆ oʇ ǝɯןǝM",
"advancement.create.root.desc": "suoıʇdɐɹʇuoƆ ǝᗺ ǝɹǝH",
"advancement.create.rose_quartz": "spuoɯɐıᗡ ʞuıԀ",
"advancement.create.rose_quartz": "pǝbɹɐɥɔɹǝdnS",
"advancement.create.rose_quartz.desc": "zʇɹɐnὉ ǝsoᴚ ǝɯos ɥsıןoԀ",
"advancement.create.saw_processing": "pǝɹɐǝℲ ʇsoW s,doɥsʞɹoM",
"advancement.create.saw_processing.desc": "sןɐıɹǝʇɐɯ ssǝɔoɹd oʇ ʍɐS ןɐɔıuɐɥɔǝW ʇɥbıɹdn uɐ ǝs∩",
@ -147,6 +161,8 @@
"advancement.create.steam_engine_maxed.desc": "ɹǝʍod ɟo ןǝʌǝן ɯnɯıɯ ǝɥʇ ʇɐ ɹǝןıoq ɐ unᴚ",
"advancement.create.steam_whistle": "ןǝbuⱯ uɐ ɟo ǝɔıoΛ",
"advancement.create.steam_whistle.desc": ןʇsıɥM ɯɐǝʇS ɐ ǝʇɐʌıʇɔⱯ",
"advancement.create.stock_ticker": "¡d∩ ɹǝpɹO",
"advancement.create.stock_ticker.desc": "sʇsǝnbǝɹ ʇsɹıɟ ɹnoʎ ǝʞɐɯ puɐ ɹǝʞɔıʇ ʞɔoʇs ɹnoʎ ʇɐ qoɯ ɐ ʎoןdɯƎ",
"advancement.create.stressometer": "spɹǝN ɹoɟ ssǝɹʇS",
"advancement.create.stressometer.desc": "ɹǝʇǝɯossǝɹʇS ɐ puɐ sǝןbbo⅁ s,ɹǝǝuıbuƎ ɟo dןǝɥ ǝɥʇ ɥʇıʍ ʇnopɐǝɹ ʇɔɐxǝ uɐ ʇǝ⅁",
"advancement.create.stressometer_maxed": "pǝssǝɹʇS ʎןʇɔǝɟɹǝԀ",
@ -155,6 +171,8 @@
"advancement.create.sturdy_sheet.desc": "uɐıpısqO pǝɹǝpʍoԀ buıuıɟǝɹ ʎq ʇǝǝɥS ʎpɹnʇS ɐ ǝןqɯǝssⱯ",
"advancement.create.super_glue": "ʇɔǝuuoƆ ɟo ɐǝɹⱯ",
"advancement.create.super_glue.desc": "dnoɹb ɐ oʇuı sʞɔoןq ǝɯos ǝnן⅁ ɹǝdnS",
"advancement.create.table_cloth_shop": "ssǝuısnq ɹoɟ uǝdO",
"advancement.create.table_cloth_shop.desc": "ɥʇoןƆ ǝןqɐ⟘ ɐ buısn ǝןɐs ɹoɟ dn sɯǝʇı ʇnԀ",
"advancement.create.track_0": "ǝbnɐ⅁ ʍǝN Ɐ",
"advancement.create.track_0.desc": "sʞɔɐɹ⟘ uıɐɹ⟘ ǝɯos uıɐʇqO",
"advancement.create.track_crafting_factory": "ʎɹoʇɔɐℲ ʞɔɐɹ⟘",
@ -163,7 +181,7 @@
"advancement.create.track_signal.desc": "ןɐubıS uıɐɹ⟘ ɐ ǝɔɐןԀ",
"advancement.create.train": "¡pɹɐoqⱯ ןןⱯ",
"advancement.create.train.desc": "uıɐɹ⟘ ʇsɹıɟ ɹnoʎ ǝןqɯǝssⱯ",
"advancement.create.train_casing_00": "ǝbⱯ ןɐɔıʇsıboꞀ ǝɥ⟘",
"advancement.create.train_casing_00": "ǝbⱯ ǝʌıʇoɯoꞀ ǝɥ⟘",
"advancement.create.train_casing_00.desc": "sʇuǝuodɯoɔ ʎɐʍןıɐɹ ɹoɟ buısɐɔ ɐ ǝʇɐǝɹɔ oʇ sʇǝǝɥS ʎpɹnʇS ǝs∩",
"advancement.create.train_crash": "ǝɔıʌɹǝS ǝןqıɹɹǝ⟘",
"advancement.create.train_crash.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nɹǝbuǝssɐd ɐ sɐ ɥsɐɹɔ uıɐɹ⟘ ɐ ssǝuʇıM",
@ -179,9 +197,9 @@
"advancement.create.water_supply.desc": "ɹǝʇɐʍ ʇɔǝןןoɔ oʇ dɯןɐɔıuɐɥɔǝW ɹo ǝdıԀ pınןℲ ɐ ɟo puǝ buıןןnd ǝɥʇ ǝs∩",
"advancement.create.water_wheel": "sɔıןnɐɹpʎH pǝssǝuɹɐH",
"advancement.create.water_wheel.desc": "ǝnbɹoʇ ǝʇɐɹǝuǝb oʇ ʇı ǝsn puɐ ןǝǝɥM ɹǝʇɐM ɐ ǝɔɐןԀ",
"advancement.create.windmill": "ǝzǝǝɹᗺ pןıW Ɐ",
"advancement.create.windmill": "ǝzǝǝɹᗺ pןıɯ Ɐ",
"advancement.create.windmill.desc": "ǝnbɹoʇ ǝʇɐɹǝuǝb oʇ ʇı ǝsn puɐ ןןıɯpuıʍ ɐ ǝןqɯǝssⱯ",
"advancement.create.windmill_maxed": "ǝzǝǝɹᗺ buoɹʇS Ɐ",
"advancement.create.windmill_maxed": "ǝzǝǝɹᗺ buoɹʇs Ɐ",
"advancement.create.windmill_maxed.desc": "ɥʇbuǝɹʇs ɯnɯıɯ ɟo ןןıɯpuıʍ ɐ ǝןqɯǝssⱯ",
"advancement.create.wrench_goggles": "ʇnO pǝʇʇıʞ",
"advancement.create.wrench_goggles.desc": "ɥɔuǝɹM ɐ puɐ sǝןbbo⅁ s,ɹǝǝuıbuƎ dınbƎ",
@ -1226,7 +1244,7 @@
"create.gui.factory_panel.reset": "sbuıʇʇǝs ןןɐ ʇǝ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Ǝ",
"create.gui.factory_panel.restocker_address_tip": "ןןıʍ ʇɐɥʇ ssǝɹppɐ ǝɥʇ ɹǝʇ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ı",
@ -1238,6 +1256,9 @@
"create.gui.factory_panel.sending_item_tip_1": "ʇunoɯɐ ʇǝbɹɐʇ ǝɥʇ ʍoןǝq sı",
"create.gui.factory_panel.title_as_recipe": "sbuıʇʇǝS ǝdıɔǝᴚ",
"create.gui.factory_panel.title_as_restocker": "sbuıʇʇǝS ɹǝʞɔoʇsǝᴚ",
"create.gui.factory_panel.unconfigured_input": "sʇuǝıpǝɹbuı ǝdıɔǝᴚ",
"create.gui.factory_panel.unconfigured_input_tip": "ʎq pǝppɐ ǝq uɐɔ sʇuǝıpǝɹbuI",
"create.gui.factory_panel.unconfigured_input_tip_1": "sǝbnɐb ʎɹoʇɔɐɟ ɹǝɥʇo buıʇɔǝuuoɔ",
"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ǝᗡ",
@ -2744,6 +2765,7 @@
"create.subtitle.mechanical_press_activation_belt": "sʞuoq ssǝɹԀ ןɐɔıuɐɥɔǝW",
"create.subtitle.mixing": "sǝsıou buıxıW",
"create.subtitle.package_pop": "sʞɐǝɹq ǝbɐʞɔɐԀ",
"create.subtitle.packager": "sǝbɐʞɔɐd ɹǝbɐʞɔɐԀ",
"create.subtitle.peculiar_bell_use": "sןןoʇ ןןǝᗺ ɹɐıןnɔǝԀ",
"create.subtitle.potato_hit": "sʇɔɐdɯı ǝןqɐʇǝbǝΛ",
"create.subtitle.sanding_long": "sǝsıou buıpuɐS",
@ -2756,6 +2778,7 @@
"create.subtitle.slime_added": "sǝɥsınbs ǝɯıןS",
"create.subtitle.spout": "sʇɹnds ʇnodS",
"create.subtitle.steam": "sǝsıou ɯɐǝʇS",
"create.subtitle.stock_link": "sʇɔɐǝɹ ʞuıן ʞɔoʇS",
"create.subtitle.stock_ticker_request": "sʇsǝnbǝɹ ɹǝʞɔıʇ ʞɔoʇS",
"create.subtitle.stock_ticker_trade": ",¡buıɥɔ-ɐʞ, sǝob ɹǝʞɔıʇ ʞɔoʇS",
"create.subtitle.train": ןqɯnɹ sןǝǝɥʍ ʎǝboᗺ",

View file

@ -21,6 +21,12 @@
"advancement.create.brass_casing.desc": "Apply Brass Ingots to stripped wood, creating a casing for more sophisticated machines",
"advancement.create.burner": "Sentient Fireplace",
"advancement.create.burner.desc": "Obtain a Blaze Burner",
"advancement.create.cardboard": "Part and Parcel",
"advancement.create.cardboard.desc": "Produce or obtain your first Cardboard",
"advancement.create.cardboard_armor": "Full Stealth",
"advancement.create.cardboard_armor.desc": "Sneak around in full Cardboard Armor",
"advancement.create.cardboard_armor_trim": "Arts and Crafts",
"advancement.create.cardboard_armor_trim.desc": "Decorate your cardboard equipment with armor trims\n§7(Hidden Advancement)",
"advancement.create.cart_pickup": "Strong Arms",
"advancement.create.cart_pickup.desc": "Pick up a Minecart Contraption with at least 200 attached blocks",
"advancement.create.chained_drain": "On a Roll",
@ -29,7 +35,7 @@
"advancement.create.chocolate_bucket.desc": "Obtain a bucket of molten chocolate",
"advancement.create.chute": "Vertical Logistics",
"advancement.create.chute.desc": "Transport some items by Chute",
"advancement.create.clockwork_bearing": "Contraption O'Clock",
"advancement.create.clockwork_bearing": "Contraption o'Clock",
"advancement.create.clockwork_bearing.desc": "Assemble a structure mounted on a Clockwork Bearing",
"advancement.create.compacting": "Compactification",
"advancement.create.compacting.desc": "Use a Mechanical Press and a Basin to create fewer items from more",
@ -47,9 +53,9 @@
"advancement.create.cross_streams.desc": "Watch two fluids meet in your pipe network\n§7(Hidden Advancement)",
"advancement.create.crusher_maxed_0000": "Crushing It",
"advancement.create.crusher_maxed_0000.desc": "Operate a pair of Crushing Wheels at maximum speed",
"advancement.create.crushing_wheel": "A Pair of Giants",
"advancement.create.crushing_wheel": "Wheels of Destruction",
"advancement.create.crushing_wheel.desc": "Place and power a set of Crushing Wheels",
"advancement.create.cuckoo_clock": "Is It Time?",
"advancement.create.cuckoo_clock": "Is it Time?",
"advancement.create.cuckoo_clock.desc": "Witness your Cuckoo Clock announce bedtime",
"advancement.create.deployer": "Artificial Intelligence",
"advancement.create.deployer.desc": "Place and power a Deployer, the perfect reflection of yourself",
@ -71,12 +77,16 @@
"advancement.create.extendo_grip.desc": "Get hold of an Extendo Grip",
"advancement.create.extendo_grip_dual": "To Full Extent",
"advancement.create.extendo_grip_dual.desc": "Dual-wield Extendo Grips for superhuman reach\n§7(Hidden Advancement)",
"advancement.create.factory_gauge": "High Logistics",
"advancement.create.factory_gauge.desc": "Trigger an automatic package request using Factory Gauges",
"advancement.create.fan_processing": "Processing by Particle",
"advancement.create.fan_processing.desc": "Use an Encased Fan to process materials",
"advancement.create.fist_bump": "Pound It, Bro!",
"advancement.create.fist_bump.desc": "Make two Deployers fist-bump\n§7(Hidden Advancement)",
"advancement.create.foods": "Balanced Diet",
"advancement.create.foods.desc": "Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout",
"advancement.create.frogport": "Hungry hoppers",
"advancement.create.frogport.desc": "Catch packages from your Chain Conveyor using a Frogport",
"advancement.create.funnel": "Airport Aesthetic",
"advancement.create.funnel.desc": "Extract or insert items into a container using a Funnel",
"advancement.create.glass_pipe": "Flow Discovery",
@ -113,9 +123,13 @@
"advancement.create.millstone.desc": "Use a Millstone to pulverise materials",
"advancement.create.musical_arm": "DJ Mechanico",
"advancement.create.musical_arm.desc": "Watch a Mechanical Arm operate your Jukebox\n§7(Hidden Advancement)",
"advancement.create.package_chute_throw": "Nothing but net",
"advancement.create.package_chute_throw.desc": "Land your cardboard package throw in an item chute\n§7(Hidden Advancement)",
"advancement.create.packager": "Post Production",
"advancement.create.packager.desc": "Package items from an inventory using the Packager",
"advancement.create.pipe_organ": "The Pipe Organ",
"advancement.create.pipe_organ.desc": "Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank\n§7(Hidden Advancement)",
"advancement.create.portable_storage_interface": "Drive-By Exchange",
"advancement.create.portable_storage_interface": "Drive-by Exchange",
"advancement.create.portable_storage_interface.desc": "Use a Portable Storage Interface to take or insert items into a Contraption",
"advancement.create.potato_cannon": "Fwoomp!",
"advancement.create.potato_cannon.desc": "Defeat an enemy with your Potato Cannon",
@ -129,7 +143,7 @@
"advancement.create.red_signal.desc": "Run a red Train Signal\n§7(Hidden Advancement)",
"advancement.create.root": "Welcome to Create",
"advancement.create.root.desc": "Here Be Contraptions",
"advancement.create.rose_quartz": "Pink Diamonds",
"advancement.create.rose_quartz": "Supercharged",
"advancement.create.rose_quartz.desc": "Polish some Rose Quartz",
"advancement.create.saw_processing": "Workshop's Most Feared",
"advancement.create.saw_processing.desc": "Use an upright Mechanical Saw to process materials",
@ -147,6 +161,8 @@
"advancement.create.steam_engine_maxed.desc": "Run a boiler at the maximum level of power",
"advancement.create.steam_whistle": "Voice of an Angel",
"advancement.create.steam_whistle.desc": "Activate a Steam Whistle",
"advancement.create.stock_ticker": "Order Up!",
"advancement.create.stock_ticker.desc": "Employ a mob at your stock ticker and make your first requests",
"advancement.create.stressometer": "Stress for Nerds",
"advancement.create.stressometer.desc": "Get an exact readout with the help of Engineer's Goggles and a Stressometer",
"advancement.create.stressometer_maxed": "Perfectly Stressed",
@ -155,6 +171,8 @@
"advancement.create.sturdy_sheet.desc": "Assemble a Sturdy Sheet by refining Powdered Obsidian",
"advancement.create.super_glue": "Area of Connect",
"advancement.create.super_glue.desc": "Super Glue some blocks into a group",
"advancement.create.table_cloth_shop": "Open for business",
"advancement.create.table_cloth_shop.desc": "Put items up for sale using a Table Cloth",
"advancement.create.track_0": "A New Gauge",
"advancement.create.track_0.desc": "Obtain some Train Tracks",
"advancement.create.track_crafting_factory": "Track Factory",
@ -163,7 +181,7 @@
"advancement.create.track_signal.desc": "Place a Train Signal",
"advancement.create.train": "All Aboard!",
"advancement.create.train.desc": "Assemble your first Train",
"advancement.create.train_casing_00": "The Logistical Age",
"advancement.create.train_casing_00": "The Locomotive Age",
"advancement.create.train_casing_00.desc": "Use Sturdy Sheets to create a casing for railway components",
"advancement.create.train_crash": "Terrible Service",
"advancement.create.train_crash.desc": "Witness a Train crash as a passenger\n§7(Hidden Advancement)",
@ -179,9 +197,9 @@
"advancement.create.water_supply.desc": "Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water",
"advancement.create.water_wheel": "Harnessed Hydraulics",
"advancement.create.water_wheel.desc": "Place a Water Wheel and use it to generate torque",
"advancement.create.windmill": "A Mild Breeze",
"advancement.create.windmill": "A mild Breeze",
"advancement.create.windmill.desc": "Assemble a windmill and use it to generate torque",
"advancement.create.windmill_maxed": "A Strong Breeze",
"advancement.create.windmill_maxed": "A strong Breeze",
"advancement.create.windmill_maxed.desc": "Assemble a windmill of maximum strength",
"advancement.create.wrench_goggles": "Kitted Out",
"advancement.create.wrench_goggles.desc": "Equip Engineer's Goggles and a Wrench",
@ -1226,7 +1244,7 @@
"create.gui.factory_panel.reset": "Reset all settings",
"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": "Enter the 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.",
@ -1238,6 +1256,9 @@
"create.gui.factory_panel.sending_item_tip_1": "is below the target amount",
"create.gui.factory_panel.title_as_recipe": "Recipe Settings",
"create.gui.factory_panel.title_as_restocker": "Restocker Settings",
"create.gui.factory_panel.unconfigured_input": "Recipe ingredients",
"create.gui.factory_panel.unconfigured_input_tip": "Ingredients can be added by",
"create.gui.factory_panel.unconfigured_input_tip_1": "connecting other factory gauges",
"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",
@ -2744,6 +2765,7 @@
"create.subtitle.mechanical_press_activation_belt": "Mechanical Press bonks",
"create.subtitle.mixing": "Mixing noises",
"create.subtitle.package_pop": "Package breaks",
"create.subtitle.packager": "Packager packages",
"create.subtitle.peculiar_bell_use": "Peculiar Bell tolls",
"create.subtitle.potato_hit": "Vegetable impacts",
"create.subtitle.sanding_long": "Sanding noises",
@ -2756,6 +2778,7 @@
"create.subtitle.slime_added": "Slime squishes",
"create.subtitle.spout": "Spout spurts",
"create.subtitle.steam": "Steam noises",
"create.subtitle.stock_link": "Stock link reacts",
"create.subtitle.stock_ticker_request": "Stock ticker requests",
"create.subtitle.stock_ticker_trade": "Stock ticker goes 'ka-ching!'",
"create.subtitle.train": "Bogey wheels rumble",

View file

@ -414,7 +414,7 @@
"sounds": [
{
"type": "event",
"name": "minecraft:entity.armor_stand.break"
"name": "minecraft:block.chiseled_bookshelf.break"
}
],
"subtitle": "create.subtitle.package_pop"
@ -427,6 +427,15 @@
}
]
},
"packager": {
"sounds": [
{
"type": "event",
"name": "minecraft:entity.shulker.open"
}
],
"subtitle": "create.subtitle.packager"
},
"peculiar_bell_use": {
"sounds": [
{
@ -560,6 +569,15 @@
],
"subtitle": "create.subtitle.steam"
},
"stock_link": {
"sounds": [
{
"type": "file",
"name": "create:stock_link"
}
],
"subtitle": "create.subtitle.stock_link"
},
"stock_ticker_request": {
"sounds": [
{

View file

@ -0,0 +1,39 @@
{
"parent": "create:mechanical_mixer",
"criteria": {
"0": {
"conditions": {
"items": [
{
"items": [
"create:cardboard"
]
}
]
},
"trigger": "minecraft:inventory_changed"
}
},
"display": {
"announce_to_chat": false,
"description": {
"color": "#DBA213",
"translate": "advancement.create.cardboard.desc"
},
"frame": "task",
"hidden": false,
"icon": {
"item": "create:cardboard"
},
"show_toast": true,
"title": {
"translate": "advancement.create.cardboard"
}
},
"requirements": [
[
"0"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,32 @@
{
"parent": "create:factory_gauge",
"criteria": {
"0": {
"conditions": {},
"trigger": "create:cardboard_armor_builtin"
}
},
"display": {
"announce_to_chat": false,
"description": {
"color": "#DBA213",
"translate": "advancement.create.cardboard_armor.desc"
},
"frame": "task",
"hidden": false,
"icon": {
"item": "create:cardboard_chestplate",
"nbt": "{Damage:0}"
},
"show_toast": true,
"title": {
"translate": "advancement.create.cardboard_armor"
}
},
"requirements": [
[
"0"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,32 @@
{
"parent": "create:cardboard_armor",
"criteria": {
"0": {
"conditions": {},
"trigger": "create:cardboard_armor_trim_builtin"
}
},
"display": {
"announce_to_chat": true,
"description": {
"color": "#DBA213",
"translate": "advancement.create.cardboard_armor_trim.desc"
},
"frame": "goal",
"hidden": true,
"icon": {
"item": "create:cardboard_chestplate",
"nbt": "{Damage:0,Trim:{material:\"minecraft:diamond\",pattern:\"minecraft:sentry\"}}"
},
"show_toast": true,
"title": {
"translate": "advancement.create.cardboard_armor_trim"
}
},
"requirements": [
[
"0"
]
],
"sends_telemetry_event": true
}

View file

@ -7,7 +7,7 @@
}
},
"display": {
"announce_to_chat": true,
"announce_to_chat": false,
"description": {
"color": "#DBA213",
"translate": "advancement.create.copper_casing.desc"

View file

@ -7,7 +7,7 @@
}
},
"display": {
"announce_to_chat": true,
"announce_to_chat": false,
"description": {
"color": "#DBA213",
"translate": "advancement.create.display_link.desc"

View file

@ -0,0 +1,31 @@
{
"parent": "create:table_cloth_shop",
"criteria": {
"0": {
"conditions": {},
"trigger": "create:factory_gauge_builtin"
}
},
"display": {
"announce_to_chat": true,
"description": {
"color": "#DBA213",
"translate": "advancement.create.factory_gauge.desc"
},
"frame": "task",
"hidden": false,
"icon": {
"item": "create:factory_gauge"
},
"show_toast": true,
"title": {
"translate": "advancement.create.factory_gauge"
}
},
"requirements": [
[
"0"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,31 @@
{
"parent": "create:stock_ticker",
"criteria": {
"0": {
"conditions": {},
"trigger": "create:frogport_builtin"
}
},
"display": {
"announce_to_chat": true,
"description": {
"color": "#DBA213",
"translate": "advancement.create.frogport.desc"
},
"frame": "task",
"hidden": false,
"icon": {
"item": "create:package_frogport"
},
"show_toast": true,
"title": {
"translate": "advancement.create.frogport"
}
},
"requirements": [
[
"0"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,31 @@
{
"parent": "create:cardboard_armor",
"criteria": {
"0": {
"conditions": {},
"trigger": "create:package_chute_throw_builtin"
}
},
"display": {
"announce_to_chat": true,
"description": {
"color": "#DBA213",
"translate": "advancement.create.package_chute_throw.desc"
},
"frame": "goal",
"hidden": true,
"icon": {
"item": "create:cardboard_package_12x12"
},
"show_toast": true,
"title": {
"translate": "advancement.create.package_chute_throw"
}
},
"requirements": [
[
"0"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,31 @@
{
"parent": "create:cardboard",
"criteria": {
"0": {
"conditions": {},
"trigger": "create:packager_builtin"
}
},
"display": {
"announce_to_chat": false,
"description": {
"color": "#DBA213",
"translate": "advancement.create.packager.desc"
},
"frame": "task",
"hidden": false,
"icon": {
"item": "create:packager"
},
"show_toast": true,
"title": {
"translate": "advancement.create.packager"
}
},
"requirements": [
[
"0"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,31 @@
{
"parent": "create:packager",
"criteria": {
"0": {
"conditions": {},
"trigger": "create:stock_ticker_builtin"
}
},
"display": {
"announce_to_chat": true,
"description": {
"color": "#DBA213",
"translate": "advancement.create.stock_ticker.desc"
},
"frame": "task",
"hidden": false,
"icon": {
"item": "create:stock_ticker"
},
"show_toast": true,
"title": {
"translate": "advancement.create.stock_ticker"
}
},
"requirements": [
[
"0"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,31 @@
{
"parent": "create:frogport",
"criteria": {
"0": {
"conditions": {},
"trigger": "create:table_cloth_shop_builtin"
}
},
"display": {
"announce_to_chat": true,
"description": {
"color": "#DBA213",
"translate": "advancement.create.table_cloth_shop.desc"
},
"frame": "task",
"hidden": false,
"icon": {
"item": "create:red_table_cloth"
},
"show_toast": true,
"title": {
"translate": "advancement.create.table_cloth_shop"
}
},
"requirements": [
[
"0"
]
],
"sends_telemetry_event": true
}

View file

@ -7,7 +7,7 @@
}
},
"display": {
"announce_to_chat": true,
"announce_to_chat": false,
"description": {
"color": "#DBA213",
"translate": "advancement.create.train_casing_00.desc"

View file

@ -68,7 +68,9 @@ import com.simibubi.create.content.logistics.filter.FilterScreenPacket;
import com.simibubi.create.content.logistics.funnel.FunnelFlapPacket;
import com.simibubi.create.content.logistics.packagePort.PackagePortConfigurationPacket;
import com.simibubi.create.content.logistics.packagePort.PackagePortPlacementPacket;
import com.simibubi.create.content.logistics.packagerLink.PackagerLinkEffectPacket;
import com.simibubi.create.content.logistics.redstoneRequester.RedstoneRequesterConfigurationPacket;
import com.simibubi.create.content.logistics.redstoneRequester.RedstoneRequesterEffectPacket;
import com.simibubi.create.content.logistics.stockTicker.LogisticalStockRequestPacket;
import com.simibubi.create.content.logistics.stockTicker.LogisticalStockResponsePacket;
import com.simibubi.create.content.logistics.stockTicker.PackageOrderRequestPacket;
@ -251,6 +253,8 @@ public enum AllPackets {
PACKAGE_DESTROYED(PackageDestroyPacket.class, PackageDestroyPacket::new, PLAY_TO_CLIENT),
LOGISTICS_STOCK_RESPONSE(LogisticalStockResponsePacket.class, LogisticalStockResponsePacket::new, PLAY_TO_CLIENT),
FACTORY_PANEL_EFFECT(FactoryPanelEffectPacket.class, FactoryPanelEffectPacket::new, PLAY_TO_CLIENT),
PACKAGER_LINK_EFFECT(PackagerLinkEffectPacket.class, PackagerLinkEffectPacket::new, PLAY_TO_CLIENT),
REDSTONE_REQUESTER_EFFECT(RedstoneRequesterEffectPacket.class, RedstoneRequesterEffectPacket::new, PLAY_TO_CLIENT),
KNOCKBACK(KnockbackPacket.class, KnockbackPacket::new, PLAY_TO_CLIENT),
TRAIN_MAP_SYNC(TrainMapSyncPacket.class, TrainMapSyncPacket::new, PLAY_TO_CLIENT),
CLIENTBOUND_CHAIN_CONVEYOR(ClientboundChainConveyorRidingPacket.class, ClientboundChainConveyorRidingPacket::new, PLAY_TO_CLIENT);

View file

@ -63,6 +63,11 @@ public class AllSoundEvents {
.playExisting(SoundEvents.WOOL_BREAK, .0425f, .75f)
.category(SoundSource.BLOCKS)
.build(),
PACKAGER = create("packager").subtitle("Packager packages")
.playExisting(SoundEvents.SHULKER_OPEN, 0.125f, 0.75f)
.category(SoundSource.BLOCKS)
.build(),
SLIME_ADDED = create("slime_added").subtitle("Slime squishes")
.playExisting(SoundEvents.SLIME_BLOCK_PLACE)
@ -161,6 +166,10 @@ public class AllSoundEvents {
FROGPORT_CATCH_4 = create("frogport_catch_4").subtitle("Frogport catches package")
.category(SoundSource.BLOCKS)
.build(),
STOCK_LINK = create("stock_link").subtitle("Stock link reacts")
.category(SoundSource.BLOCKS)
.build(),
FROGPORT_DEPOSIT = create("frogport_deposit").subtitle("Frogport places package")
.playExisting(SoundEvents.FROG_TONGUE, 1f, 1f)
@ -196,8 +205,8 @@ public class AllSoundEvents {
.build(),
PACKAGE_POP = create("package_pop").subtitle("Package breaks")
.playExisting(SoundEvents.ARMOR_STAND_BREAK, .25f, .75f)
.playExisting(SoundEvents.WOOL_BREAK, .5f, 1.15f)
.playExisting(SoundEvents.CHISELED_BOOKSHELF_BREAK, .75f, 1f)
.playExisting(SoundEvents.WOOL_BREAK, .25f, 1.15f)
.category(SoundSource.BLOCKS)
.build(),

View file

@ -3,6 +3,7 @@ package com.simibubi.create.content.equipment.armor;
import java.util.UUID;
import com.simibubi.create.AllItems;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.Entity;
@ -25,10 +26,18 @@ public class CardboardArmorHandler {
@SubscribeEvent
public static void playerHitboxChangesWhenHidingAsBox(EntityEvent.Size event) {
if (event.getEntity().isAddedToWorld() && testForStealth(event.getEntity())) {
event.setNewSize(EntityDimensions.fixed(0.8F, 0.8F));
event.setNewEyeHeight(0.6F);
}
Entity entity = event.getEntity();
if (!entity.isAddedToWorld())
return;
if (!testForStealth(entity))
return;
event.setNewSize(EntityDimensions.fixed(0.6F, 0.8F));
event.setNewEyeHeight(0.6F);
if (!entity.level()
.isClientSide() && entity instanceof Player p)
AllAdvancements.CARDBOARD_ARMOR.awardTo(p);
}
@SubscribeEvent

View file

@ -12,8 +12,8 @@ import org.apache.commons.lang3.mutable.MutableBoolean;
import com.simibubi.create.AllBlockEntityTypes;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.Create;
import com.simibubi.create.api.contraption.transformable.ITransformableBlock;
import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement;
import com.simibubi.create.content.contraptions.StructureTransform;
import com.simibubi.create.content.equipment.armor.DivingBootsItem;
import com.simibubi.create.content.fluids.transfer.GenericItemEmptying;
@ -28,7 +28,6 @@ import com.simibubi.create.content.logistics.box.PackageEntity;
import com.simibubi.create.content.logistics.box.PackageItem;
import com.simibubi.create.content.logistics.funnel.FunnelBlock;
import com.simibubi.create.content.logistics.tunnel.BeltTunnelBlock;
import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement;
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
import com.simibubi.create.foundation.block.IBE;
@ -50,6 +49,7 @@ import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
@ -192,7 +192,7 @@ public class BeltBlock extends HorizontalKineticBlock
return;
if (entityIn instanceof Player) {
Player player = (Player) entityIn;
if (player.isShiftKeyDown())
if (player.isShiftKeyDown() && !AllItems.CARDBOARD_BOOTS.isIn(player.getItemBySlot(EquipmentSlot.FEET)))
return;
if (player.getAbilities().flying)
return;
@ -309,7 +309,7 @@ public class BeltBlock extends HorizontalKineticBlock
});
if (success.isTrue())
world.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .2f,
1f + Create.RANDOM.nextFloat());
1f + world.random.nextFloat());
}
if (isShaft) {

View file

@ -7,6 +7,7 @@ import static net.minecraft.world.entity.MoverType.SELF;
import java.util.List;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.content.kinetics.belt.BeltBlock;
import com.simibubi.create.content.kinetics.belt.BeltBlockEntity;
import com.simibubi.create.content.kinetics.belt.BeltPart;
@ -19,6 +20,7 @@ import net.minecraft.core.Vec3i;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.decoration.HangingEntity;
import net.minecraft.world.entity.player.Player;
@ -60,7 +62,8 @@ public class BeltMovementHandler {
public static boolean canBeTransported(Entity entity) {
if (!entity.isAlive())
return false;
if (entity instanceof Player && ((Player) entity).isShiftKeyDown())
if (entity instanceof Player p && p.isShiftKeyDown()
&& !AllItems.CARDBOARD_BOOTS.isIn(p.getItemBySlot(EquipmentSlot.FEET)))
return false;
return true;
}

View file

@ -1,5 +1,6 @@
package com.simibubi.create.content.logistics.box;
import java.lang.ref.WeakReference;
import java.util.Collections;
import java.util.List;
@ -65,6 +66,8 @@ public class PackageEntity extends LivingEntity implements IEntityAdditionalSpaw
public int insertionDelay;
public Vec3 clientPosition, vec2 = Vec3.ZERO, vec3 = Vec3.ZERO;
public WeakReference<Player> tossedBy = new WeakReference<>(null);
@SuppressWarnings("unchecked")
public PackageEntity(EntityType<?> entityTypeIn, Level worldIn) {
@ -264,7 +267,12 @@ public class PackageEntity extends LivingEntity implements IEntityAdditionalSpaw
@Override
public void push(Entity entityIn) {
if (entityIn instanceof PackageEntity) {
boolean isOtherPackage = entityIn instanceof PackageEntity;
if (!isOtherPackage && tossedBy.get() != null)
tossedBy = new WeakReference<Player>(null); // no nudging
if (isOtherPackage) {
if (entityIn.getBoundingBox().minY < this.getBoundingBox().maxY)
super.push(entityIn);
} else if (entityIn.getBoundingBox().minY <= this.getBoundingBox().minY) {
@ -454,7 +462,7 @@ public class PackageEntity extends LivingEntity implements IEntityAdditionalSpaw
@Nullable
protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
return SoundEvents.CHISELED_BOOKSHELF_BREAK;
return null;
}
@Nullable

View file

@ -1,10 +1,12 @@
package com.simibubi.create.content.logistics.box;
import java.lang.ref.WeakReference;
import java.util.List;
import javax.annotation.Nullable;
import com.simibubi.create.AllEntityTypes;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.Create;
import com.simibubi.create.content.logistics.box.PackageStyles.PackageStyle;
import com.simibubi.create.content.logistics.stockTicker.PackageOrder;
@ -285,8 +287,7 @@ public class PackageItem extends Item {
}
Vec3 position = playerIn.position();
worldIn.playSound((Player) null, position.x, position.y, position.z, SoundEvents.CHISELED_BOOKSHELF_BREAK,
SoundSource.PLAYERS, 0.5F, 1.0F);
AllSoundEvents.PACKAGE_POP.playOnServer(worldIn, playerIn.blockPosition());
if (worldIn.isClientSide()) {
for (int i = 0; i < 10; i++) {
@ -349,9 +350,8 @@ public class PackageItem extends Item {
@Override
public void releaseUsing(ItemStack stack, Level world, LivingEntity entity, int ticks) {
if (!(entity instanceof Player))
if (!(entity instanceof Player player))
return;
Player playerentity = (Player) entity;
int i = this.getUseDuration(stack) - ticks;
if (i < 0)
return;
@ -362,14 +362,14 @@ public class PackageItem extends Item {
if (world.isClientSide)
return;
world.playSound(null, playerentity.getX(), playerentity.getY(), playerentity.getZ(), SoundEvents.SNOWBALL_THROW,
world.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.SNOWBALL_THROW,
SoundSource.NEUTRAL, 0.5F, 0.5F);
ItemStack copy = stack.copy();
stack.shrink(1);
if (stack.isEmpty())
playerentity.getInventory()
player.getInventory()
.removeItem(stack);
Vec3 vec = new Vec3(entity.getX(), entity.getY() + entity.getBoundingBox()
@ -381,6 +381,7 @@ public class PackageItem extends Item {
PackageEntity packageEntity = new PackageEntity(world, vec.x, vec.y, vec.z);
packageEntity.setBox(copy);
packageEntity.setDeltaMovement(motion);
packageEntity.tossedBy = new WeakReference<Player>(player);
world.addFreshEntity(packageEntity);
}

View file

@ -8,6 +8,7 @@ import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.content.kinetics.belt.behaviour.DirectBeltInputBehaviour;
import com.simibubi.create.content.logistics.box.PackageEntity;
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.block.IBE;
import com.simibubi.create.foundation.block.render.ReducedDestroyEffects;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
@ -106,9 +107,14 @@ public abstract class AbstractChuteBlock extends Block implements IWrenchable, I
if (!PackageEntity.centerPackage(entityIn, Vec3.atBottomCenterOf(pos.above())))
return;
ItemStack remainder = input.handleInsertion(stack, Direction.UP, false);
if (remainder.isEmpty())
if (remainder.isEmpty()) {
entityIn.discard();
else if (remainder.getCount() < stack.getCount() && entityIn instanceof ItemEntity)
if (entityIn instanceof PackageEntity box) {
Player player = box.tossedBy.get();
if (player != null)
AllAdvancements.PACKAGE_CHUTE_THROW.awardTo(player);
}
} else if (remainder.getCount() < stack.getCount() && entityIn instanceof ItemEntity)
((ItemEntity) entityIn).setItem(remainder);
}

View file

@ -19,6 +19,7 @@ import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllPackets;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.AllTags.AllItemTags;
import com.simibubi.create.Create;
import com.simibubi.create.content.logistics.BigItemStack;
@ -34,6 +35,7 @@ import com.simibubi.create.content.logistics.packagerLink.RequestPromise;
import com.simibubi.create.content.logistics.packagerLink.RequestPromiseQueue;
import com.simibubi.create.content.logistics.stockTicker.PackageOrder;
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.blockEntity.behaviour.ValueSettingsBoard;
@ -246,6 +248,11 @@ public class FactoryPanelBehaviour extends FilteringBehaviour {
&& lastReportedUnloadedLinks == unloadedLinkCount && satisfied == shouldSatisfy
&& promisedSatisfied == shouldPromiseSatisfy && waitingForNetwork == shouldWait)
return;
if (!satisfied && shouldSatisfy) {
AllSoundEvents.CONFIRM.playOnServer(getWorld(), getPos(), 0.075f, 1f);
AllSoundEvents.CONFIRM_2.playOnServer(getWorld(), getPos(), 0.125f, 0.575f);
}
boolean notifyOutputs = satisfied != shouldSatisfy;
lastReportedLevelInStorage = inStorage;
@ -342,6 +349,8 @@ public class FactoryPanelBehaviour extends FilteringBehaviour {
RequestPromiseQueue promises = Create.LOGISTICS.getQueuedPromises(network);
if (promises != null)
promises.add(new RequestPromise(new BigItemStack(getFilter(), recipeOutput)));
panelBE.advancements.awardPlayer(AllAdvancements.FACTORY_GAUGE);
}
private void tryRestock() {
@ -658,7 +667,7 @@ public class FactoryPanelBehaviour extends FilteringBehaviour {
active = false;
return;
}
active = true;
filter = FilterItemStack.of(panelTag.getCompound("Filter"));
count = panelTag.getInt("FilterAmount");

View file

@ -10,6 +10,7 @@ import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequiremen
import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.content.logistics.packagerLink.LogisticallyLinkedBlockItem;
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
import com.simibubi.create.foundation.block.IBE;
import com.simibubi.create.foundation.block.ProperWaterloggedBlock;
import com.simibubi.create.foundation.utility.CreateLang;
@ -179,6 +180,7 @@ public class FactoryPanelBlock extends FaceAttachedHorizontalDirectionalBlock
super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack);
if (pPlacer == null)
return;
AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer);
double range = pPlacer.getAttribute(ForgeMod.BLOCK_REACH.get())
.getValue() + 1;
HitResult hitResult = pPlacer.pick(range, 1, false);

View file

@ -10,6 +10,8 @@ import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.logistics.factoryBoard.FactoryPanelBlock.PanelSlot;
import com.simibubi.create.content.logistics.packager.PackagerBlockEntity;
import com.simibubi.create.content.logistics.packager.repackager.RepackagerBlockEntity;
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
@ -37,6 +39,8 @@ public class FactoryPanelBlockEntity extends SmartBlockEntity {
public boolean restocker;
private VoxelShape lastShape;
public AdvancementBehaviour advancements;
public FactoryPanelBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
@ -52,6 +56,8 @@ public class FactoryPanelBlockEntity extends SmartBlockEntity {
panels.put(slot, e);
behaviours.add(e);
}
behaviours.add(advancements = new AdvancementBehaviour(this, AllAdvancements.FACTORY_GAUGE));
}
@Override

View file

@ -3,6 +3,7 @@ package com.simibubi.create.content.logistics.factoryBoard;
import javax.annotation.Nullable;
import com.simibubi.create.AllPackets;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.content.logistics.factoryBoard.FactoryPanelBlock.PanelSlot;
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
@ -16,6 +17,8 @@ import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.network.chat.Component;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.LevelAccessor;
@ -51,6 +54,7 @@ public class FactoryPanelConnectionHandler {
.component(), true);
connectingFrom = null;
connectingFromBox = null;
AllSoundEvents.DENY.playAt(player.level(), player.blockPosition(), 1, 1, false);
return true;
}
@ -69,6 +73,10 @@ public class FactoryPanelConnectionHandler {
connectingFrom = null;
connectingFromBox = null;
player.level()
.playLocalSound(player.blockPosition(), SoundEvents.AMETHYST_BLOCK_PLACE, SoundSource.BLOCKS, 0.5f, 0.5f,
false);
return true;
}
@ -80,7 +88,7 @@ public class FactoryPanelConnectionHandler {
return "factory_panel.already_connected";
if (from.targetedBy.size() >= 9)
return "factory_panel.cannot_add_more_inputs";
BlockState state1 = to.blockEntity.getBlockState();
BlockState state2 = from.blockEntity.getBlockState();
BlockPos diff = to.getPos()
@ -115,7 +123,7 @@ public class FactoryPanelConnectionHandler {
private static String checkForIssues(FactoryPanelBehaviour from, FactoryPanelSupportBehaviour to) {
if (from == null)
return "factory_panel.connection_aborted";
BlockState state1 = from.blockEntity.getBlockState();
BlockState state2 = to.blockEntity.getBlockState();
BlockPos diff = to.getPos()
@ -180,6 +188,7 @@ public class FactoryPanelConnectionHandler {
.component(), true);
connectingFrom = null;
connectingFromBox = null;
AllSoundEvents.DENY.playAt(mc.level, mc.player.blockPosition(), 1, 1, false);
return true;
}
@ -209,6 +218,9 @@ public class FactoryPanelConnectionHandler {
connectingFrom = null;
connectingFromBox = null;
mc.player.level()
.playLocalSound(mc.player.blockPosition(), SoundEvents.AMETHYST_BLOCK_PLACE, SoundSource.BLOCKS,
0.5f, 0.5f, false);
return true;
}

View file

@ -35,9 +35,11 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.EditBox;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.resources.sounds.SimpleSoundInstance;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.util.Mth;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
@ -237,9 +239,26 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
if (craftingActive) {
for (BigItemStack itemStack : craftingIngredients)
renderInputItem(graphics, slot++, itemStack, mouseX, mouseY);
} else
} else {
for (BigItemStack itemStack : inputConfig)
renderInputItem(graphics, slot++, itemStack, mouseX, mouseY);
if (inputConfig.isEmpty()) {
int inputX = guiLeft + (restocker ? 88 : 68 + (slot % 3 * 20));
int inputY = guiTop + (restocker ? 12 : 28) + (slot / 3 * 20);
if (!restocker && mouseY > inputY && mouseY < inputY + 60 && mouseX > inputX && mouseX < inputX + 60)
graphics.renderComponentTooltip(font,
List.of(CreateLang.translate("gui.factory_panel.unconfigured_input")
.color(ScrollInput.HEADER_RGB)
.component(),
CreateLang.translate("gui.factory_panel.unconfigured_input_tip")
.style(ChatFormatting.GRAY)
.component(),
CreateLang.translate("gui.factory_panel.unconfigured_input_tip_1")
.style(ChatFormatting.GRAY)
.component()),
mouseX, mouseY);
}
}
if (restocker)
renderInputItem(graphics, slot, new BigItemStack(behaviour.getFilter(), 1), mouseX, mouseY);
@ -404,7 +423,7 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
mouseX, mouseY);
return;
}
if (itemStack.stack.isEmpty()) {
graphics.renderComponentTooltip(font, List.of(CreateLang.translate("gui.factory_panel.empty_panel")
.color(ScrollInput.HEADER_RGB)
@ -517,6 +536,7 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
int inputY = y + 28 + (i / 3 * 20);
if (mouseX >= inputX && mouseX < inputX + 16 && mouseY >= inputY && mouseY < inputY + 16) {
sendIt(connections.get(i).from, false);
playButtonSound();
return true;
}
}
@ -526,6 +546,7 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
int itemY = y + windowHeight - 24;
if (mouseX >= itemX && mouseX < itemX + 16 && mouseY >= itemY && mouseY < itemY + 16) {
sendIt(null, true);
playButtonSound();
return true;
}
@ -535,12 +556,19 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
if (mouseX >= itemX && mouseX < itemX + 16 && mouseY >= itemY && mouseY < itemY + 16) {
sendRedstoneReset = true;
sendIt(null, false);
playButtonSound();
return true;
}
return super.mouseClicked(mouseX, mouseY, pButton);
}
public void playButtonSound() {
Minecraft.getInstance()
.getSoundManager()
.play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK.get(), 1.0f, 0.25f));
}
@Override
public boolean mouseScrolled(double mouseX, double mouseY, double pDelta) {
int x = guiLeft;

View file

@ -6,6 +6,7 @@ import com.simibubi.create.AllBlockEntityTypes;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllShapes;
import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
import com.simibubi.create.foundation.block.IBE;
import net.createmod.catnip.utility.VecHelper;
@ -49,6 +50,7 @@ public class FrogportBlock extends Block implements IBE<FrogportBlockEntity>, IW
super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack);
if (pPlacer == null)
return;
AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer);
withBlockEntityDo(pLevel, pPos, be -> {
Vec3 diff = VecHelper.getCenterOf(pPos)
.subtract(pPlacer.position());

View file

@ -8,6 +8,9 @@ import com.simibubi.create.content.logistics.box.PackageItem;
import com.simibubi.create.content.logistics.box.PackageStyles;
import com.simibubi.create.content.logistics.packagePort.PackagePortBlockEntity;
import com.simibubi.create.content.logistics.packager.PackagerItemHandler;
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.item.ItemHelper;
import com.simibubi.create.foundation.item.TooltipHelper;
@ -48,6 +51,8 @@ public class FrogportBlockEntity extends PackagePortBlockEntity implements IHave
private boolean failedLastExport;
private FrogportSounds sounds;
private AdvancementBehaviour advancements;
public FrogportBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
@ -59,6 +64,12 @@ public class FrogportBlockEntity extends PackagePortBlockEntity implements IHave
.chase(0, 0.35, Chaser.LINEAR);
}
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
behaviours.add(advancements = new AdvancementBehaviour(this, AllAdvancements.FROGPORT));
super.addBehaviours(behaviours);
}
public boolean isAnimationInProgress() {
return animationProgress.getChaseTarget() == 1;
}
@ -174,6 +185,9 @@ public class FrogportBlockEntity extends PackagePortBlockEntity implements IHave
animationProgress.chase(1, 0.1, Chaser.LINEAR);
animatedPackage = box;
currentlyDepositing = deposit;
if (level != null && !deposit && !level.isClientSide())
advancements.awardPlayer(AllAdvancements.FROGPORT);
if (level != null && level.isClientSide()) {
sounds.open(level, worldPosition);

View file

@ -6,6 +6,7 @@ import com.simibubi.create.AllItems;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.content.logistics.box.PackageItem;
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
import com.simibubi.create.foundation.block.IBE;
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
@ -13,6 +14,7 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
@ -46,6 +48,12 @@ public class PackagerBlock extends WrenchableDirectionalBlock implements IBE<Pac
registerDefaultState(defaultBlockState.setValue(POWERED, false));
}
@Override
public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) {
super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack);
AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer);
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
Capability<IItemHandler> itemCap = ForgeCapabilities.ITEM_HANDLER;

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.jetbrains.annotations.NotNull;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.actors.psi.PortableStorageInterfaceBlockEntity;
import com.simibubi.create.content.kinetics.crafter.MechanicalCrafterBlockEntity;
@ -25,6 +26,8 @@ import com.simibubi.create.content.logistics.packagerLink.PackagerLinkBlockEntit
import com.simibubi.create.content.logistics.packagerLink.RequestPromiseQueue;
import com.simibubi.create.content.logistics.stockTicker.PackageOrder;
import com.simibubi.create.content.processing.basin.BasinBlockEntity;
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.blockEntity.behaviour.inventory.CapManipulationBehaviourBase.InterfaceProvider;
@ -39,6 +42,8 @@ import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth;
import net.minecraft.world.Containers;
import net.minecraft.world.item.ItemStack;
@ -75,6 +80,8 @@ public class PackagerBlockEntity extends SmartBlockEntity {
private InventorySummary availableItems;
private VersionedInventoryTrackerBehaviour invVersionTracker;
private AdvancementBehaviour advancements;
//
@ -98,6 +105,7 @@ public class PackagerBlockEntity extends SmartBlockEntity {
behaviours.add(targetInventory = new InvManipulationBehaviour(this, InterfaceProvider.oppositeOfBlockFacing())
.withFilter(this::supportsBlockEntity));
behaviours.add(invVersionTracker = new VersionedInventoryTrackerBehaviour(this));
behaviours.add(advancements = new AdvancementBehaviour(this, AllAdvancements.PACKAGER));
}
private boolean supportsBlockEntity(BlockEntity target) {
@ -130,6 +138,14 @@ public class PackagerBlockEntity extends SmartBlockEntity {
return;
}
if (level.isClientSide) {
if (animationTicks == CYCLE - (animationInward ? 5 : 1))
AllSoundEvents.PACKAGER.playAt(level, worldPosition, 1, 1, true);
if (animationTicks == (animationInward ? 1 : 5))
level.playLocalSound(worldPosition, SoundEvents.IRON_TRAPDOOR_CLOSE, SoundSource.BLOCKS, 0.075f, 0.75f,
true);
}
animationTicks--;
if (animationTicks == 0 && !level.isClientSide()) {
@ -524,7 +540,8 @@ public class PackagerBlockEntity extends SmartBlockEntity {
heldBox = createdBox;
animationInward = false;
animationTicks = CYCLE;
advancements.awardPlayer(AllAdvancements.PACKAGER);
triggerStockCheck();
notifyUpdate();
}

View file

@ -7,23 +7,28 @@ import javax.annotation.Nullable;
import org.apache.commons.lang3.mutable.MutableBoolean;
import com.simibubi.create.AllPackets;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.content.logistics.packager.InventorySummary;
import com.simibubi.create.content.logistics.packager.PackagerBlockEntity;
import com.simibubi.create.content.logistics.packager.PackagingRequest;
import com.simibubi.create.content.logistics.packager.repackager.RepackagerBlockEntity;
import com.simibubi.create.content.logistics.stockTicker.PackageOrder;
import com.simibubi.create.content.redstone.displayLink.LinkWithBulbBlockEntity;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import net.createmod.catnip.utility.Pair;
import net.minecraft.core.BlockPos;
import net.minecraft.core.particles.VibrationParticleOption;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.gameevent.BlockPositionSource;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.items.IItemHandler;
public class PackagerLinkBlockEntity extends LinkWithBulbBlockEntity {
public class PackagerLinkBlockEntity extends SmartBlockEntity {
public LogisticallyLinkedBehaviour behaviour;
public UUID placedBy;
@ -40,12 +45,16 @@ public class PackagerLinkBlockEntity extends LinkWithBulbBlockEntity {
return InventorySummary.EMPTY;
if (packager.isTargetingSameInventory(ignoredHandler))
return InventorySummary.EMPTY;
sendPulseNextSync();
sendData();
return packager.getAvailableItems();
}
public void playEffect() {
AllSoundEvents.STOCK_LINK.playAt(level, worldPosition, 1.0f, 1.0f, false);
Vec3 vec3 = Vec3.atCenterOf(worldPosition);
level.addParticle(new VibrationParticleOption(new BlockPositionSource(worldPosition.above(3)), 6), vec3.x,
vec3.y, vec3.z, 1, 1, 1);
}
public Pair<PackagerBlockEntity, PackagingRequest> processRequest(ItemStack stack, int amount, String address,
int linkIndex, MutableBoolean finalLink, int orderId, @Nullable PackageOrder orderContext,
@Nullable IItemHandler ignoredHandler) {
@ -59,11 +68,9 @@ public class PackagerLinkBlockEntity extends LinkWithBulbBlockEntity {
int availableCount = summary.getCountOf(stack);
if (availableCount == 0)
return null;
sendPulseNextSync();
sendData();
int toWithdraw = Math.min(amount, availableCount);
if (toWithdraw != 0)
AllPackets.sendToNear(level, worldPosition, 32, new PackagerLinkEffectPacket(worldPosition));
return Pair.of(packager,
PackagingRequest.create(stack, toWithdraw, address, linkIndex, finalLink, 0, orderId, orderContext));
}

View file

@ -0,0 +1,39 @@
package com.simibubi.create.content.logistics.packagerLink;
import com.simibubi.create.foundation.networking.SimplePacketBase;
import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.network.NetworkEvent.Context;
public class PackagerLinkEffectPacket extends SimplePacketBase {
private BlockPos pos;
public PackagerLinkEffectPacket(BlockPos pos) {
this.pos = pos;
}
public PackagerLinkEffectPacket(FriendlyByteBuf buffer) {
pos = buffer.readBlockPos();
}
@Override
public void write(FriendlyByteBuf buffer) {
buffer.writeBlockPos(pos);
}
@Override
@OnlyIn(Dist.CLIENT)
public boolean handle(Context context) {
context.enqueueWork(() -> {
if (Minecraft.getInstance().level.getBlockEntity(pos) instanceof PackagerLinkBlockEntity plbe)
plbe.playEffect();
});
return true;
}
}

View file

@ -1,5 +1,7 @@
package com.simibubi.create.content.logistics.redstoneRequester;
import com.simibubi.create.AllPackets;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.content.logistics.BigItemStack;
import com.simibubi.create.content.logistics.packager.InventorySummary;
import com.simibubi.create.content.logistics.packagerLink.LogisticallyLinkedBehaviour.RequestType;
@ -8,6 +10,7 @@ import com.simibubi.create.content.logistics.stockTicker.StockCheckingBlockEntit
import net.createmod.catnip.utility.lang.Components;
import net.minecraft.core.BlockPos;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
@ -18,6 +21,7 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.network.NetworkHooks;
@ -53,18 +57,27 @@ public class RedstoneRequesterBlockEntity extends StockCheckingBlockEntity imple
if (encodedRequest.isEmpty())
return;
if (!allowPartialRequests) {
InventorySummary summaryOfOrder = new InventorySummary();
encodedRequest.stacks()
.forEach(summaryOfOrder::add);
boolean anySucceeded = false;
InventorySummary summary = getAccurateSummary();
for (BigItemStack entry : summaryOfOrder.getStacks())
if (summary.getCountOf(entry.stack) < entry.count)
return;
InventorySummary summaryOfOrder = new InventorySummary();
encodedRequest.stacks()
.forEach(summaryOfOrder::add);
InventorySummary summary = getAccurateSummary();
for (BigItemStack entry : summaryOfOrder.getStacks()) {
if (summary.getCountOf(entry.stack) >= entry.count) {
anySucceeded = true;
continue;
}
if (!allowPartialRequests) {
AllPackets.sendToNear(level, worldPosition, 32,
new RedstoneRequesterEffectPacket(worldPosition, false));
return;
}
}
broadcastPackageRequest(RequestType.REDSTONE, encodedRequest, null, encodedTargetAdress);
AllPackets.sendToNear(level, worldPosition, 32, new RedstoneRequesterEffectPacket(worldPosition, anySucceeded));
lastRequestSucceeded = true;
}
@ -85,7 +98,7 @@ public class RedstoneRequesterBlockEntity extends StockCheckingBlockEntity imple
tag.putString("EncodedAddress", encodedTargetAdress);
tag.put("EncodedRequest", encodedRequest.write());
}
@Override
protected void write(CompoundTag tag, boolean clientPacket) {
super.write(tag, clientPacket);
@ -120,4 +133,16 @@ public class RedstoneRequesterBlockEntity extends StockCheckingBlockEntity imple
return RedstoneRequesterMenu.create(pContainerId, pPlayerInventory, this);
}
public void playEffect(boolean success) {
AllSoundEvents.STOCK_LINK.playAt(level, worldPosition, 1.0f, 1.0f, false);
Vec3 vec3 = Vec3.atCenterOf(worldPosition);
if (success) {
AllSoundEvents.CONFIRM.playAt(level, worldPosition, 0.5f, 1.5f, false);
level.addParticle(ParticleTypes.NOTE, vec3.x, vec3.y + 1, vec3.z, 0, 0, 0);
} else {
AllSoundEvents.DENY.playAt(level, worldPosition, 0.5f, 1, false);
level.addParticle(ParticleTypes.ENCHANTED_HIT, vec3.x, vec3.y + 1, vec3.z, 0, 0, 0);
}
}
}

View file

@ -0,0 +1,43 @@
package com.simibubi.create.content.logistics.redstoneRequester;
import com.simibubi.create.foundation.networking.SimplePacketBase;
import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.network.NetworkEvent.Context;
public class RedstoneRequesterEffectPacket extends SimplePacketBase {
private BlockPos pos;
private boolean success;
public RedstoneRequesterEffectPacket(BlockPos pos, boolean success) {
this.pos = pos;
this.success = success;
}
public RedstoneRequesterEffectPacket(FriendlyByteBuf buffer) {
pos = buffer.readBlockPos();
success = buffer.readBoolean();
}
@Override
public void write(FriendlyByteBuf buffer) {
buffer.writeBlockPos(pos);
buffer.writeBoolean(success);
}
@Override
@OnlyIn(Dist.CLIENT)
public boolean handle(Context context) {
context.enqueueWork(() -> {
if (Minecraft.getInstance().level.getBlockEntity(pos) instanceof RedstoneRequesterBlockEntity plbe)
plbe.playEffect(success);
});
return true;
}
}

View file

@ -3,6 +3,7 @@ package com.simibubi.create.content.logistics.stockTicker;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.content.logistics.packagerLink.LogisticallyLinkedBehaviour.RequestType;
import com.simibubi.create.content.logistics.redstoneRequester.RedstoneRequesterBlock;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.networking.BlockEntityConfigurationPacket;
import net.minecraft.core.BlockPos;
@ -45,14 +46,18 @@ public class PackageOrderRequestPacket extends BlockEntityConfigurationPacket<St
@Override
protected void applySettings(ServerPlayer player, StockTickerBlockEntity be) {
if (!order.isEmpty())
AllSoundEvents.STOCK_TICKER_REQUEST.playOnServer(be.getLevel(), pos);
if (encodeRequester) {
if (!order.isEmpty())
AllSoundEvents.CONFIRM.playOnServer(be.getLevel(), pos);
player.closeContainer();
RedstoneRequesterBlock.programRequester(player, be, order, address);
return;
}
if (!order.isEmpty()) {
AllSoundEvents.STOCK_TICKER_REQUEST.playOnServer(be.getLevel(), pos);
AllAdvancements.STOCK_TICKER.awardTo(player);
}
be.broadcastPackageRequest(RequestType.PLAYER, order, null, address);
return;

View file

@ -10,6 +10,7 @@ import com.simibubi.create.AllShapes;
import com.simibubi.create.AllTags.AllItemTags;
import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.content.logistics.redstoneRequester.AutoRequestData;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.block.IBE;
import com.simibubi.create.foundation.block.IHaveBigOutline;
@ -80,6 +81,7 @@ public class TableClothBlock extends Block implements IHaveBigOutline, IWrenchab
dcbe.owner = player.getUUID();
dcbe.facing = player.getDirection()
.getOpposite();
AllAdvancements.TABLE_CLOTH_SHOP.awardTo(player);
});
}

View file

@ -21,15 +21,15 @@ class TableClothFilterSlot extends ValueBoxTransform {
@Override
public Vec3 getLocalOffset(LevelAccessor level, BlockPos pos, BlockState state) {
Vec3 v = be.sideOccluded ? VecHelper.voxelSpace(8, 0.75, 14.25) : VecHelper.voxelSpace(12, -2.75, 16.75);
Vec3 v = be.sideOccluded ? VecHelper.voxelSpace(8, 0.75, 15.25) : VecHelper.voxelSpace(12, -2.75, 16.75);
return VecHelper.rotateCentered(v, -be.facing.toYRot(), Axis.Y);
}
@Override
public void rotate(LevelAccessor level, BlockPos pos, BlockState state, PoseStack ms) {
TransformStack.of(ms)
.rotateZDegrees(be.sideOccluded ? -90 : 0)
.rotateYDegrees(180 - be.facing.toYRot());
.rotateYDegrees(180 - be.facing.toYRot())
.rotateXDegrees(be.sideOccluded ? 90 : 0);
}
}

View file

@ -19,6 +19,7 @@ import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllFluids;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllTags.AllItemTags;
import com.simibubi.create.content.logistics.box.PackageStyles;
import com.simibubi.create.foundation.advancement.CreateAdvancement.Builder;
import net.minecraft.advancements.Advancement;
@ -26,8 +27,10 @@ import net.minecraft.data.CachedOutput;
import net.minecraft.data.DataProvider;
import net.minecraft.data.PackOutput;
import net.minecraft.data.PackOutput.PathProvider;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Blocks;
@ -121,7 +124,7 @@ public class AllAdvancements implements DataProvider {
.after(ANDESITE)),
WINDMILL = create("windmill", b -> b.icon(AllBlocks.SAIL_FRAME)
.title("A Mild Breeze")
.title("A mild Breeze")
.description("Assemble a windmill and use it to generate torque")
.after(WATER_WHEEL)),
@ -147,7 +150,7 @@ public class AllAdvancements implements DataProvider {
.after(SUPER_GLUE)),
PSI = create("portable_storage_interface", b -> b.icon(AllBlocks.PORTABLE_STORAGE_INTERFACE)
.title("Drive-By Exchange")
.title("Drive-by Exchange")
.description("Use a Portable Storage Interface to take or insert items into a Contraption")
.after(CONTRAPTION_ACTORS)),
@ -164,7 +167,7 @@ public class AllAdvancements implements DataProvider {
.after(WRENCH_GOGGLES)),
CUCKOO_CLOCK = create("cuckoo_clock", b -> b.icon(AllBlocks.CUCKOO_CLOCK)
.title("Is It Time?")
.title("Is it Time?")
.description("Witness your Cuckoo Clock announce bedtime")
.after(STRESSOMETER)
.special(NOISY)),
@ -172,7 +175,7 @@ public class AllAdvancements implements DataProvider {
// Andesite - Expert Branch
WINDMILL_MAXED = create("windmill_maxed", b -> b.icon(AllBlocks.SAIL)
.title("A Strong Breeze")
.title("A strong Breeze")
.description("Assemble a windmill of maximum strength")
.after(ANDESITE)
.special(EXPERT)),
@ -227,6 +230,64 @@ public class AllAdvancements implements DataProvider {
.after(MIXER)
.special(SECRET)),
// Logistics
CARDBOARD = create("cardboard", b -> b.icon(AllItems.CARDBOARD)
.title("Part and Parcel")
.description("Produce or obtain your first Cardboard")
.whenIconCollected()
.after(MIXER)),
PACKAGER = create("packager", b -> b.icon(AllBlocks.PACKAGER)
.title("Post Production")
.description("Package items from an inventory using the Packager")
.after(CARDBOARD)),
STOCK_TICKER = create("stock_ticker", b -> b.icon(AllBlocks.STOCK_TICKER)
.title("Order Up!")
.description("Employ a mob at your stock ticker and make your first requests")
.special(NOISY)
.after(PACKAGER)),
FROGPORT = create("frogport", b -> b.icon(AllBlocks.PACKAGE_FROGPORT)
.title("Hungry hoppers")
.description("Catch packages from your Chain Conveyor using a Frogport")
.special(NOISY)
.after(STOCK_TICKER)),
TABLE_CLOTH_SHOP = create("table_cloth_shop", b -> b.icon(AllBlocks.TABLE_CLOTHS.get(DyeColor.RED))
.title("Open for business")
.description("Put items up for sale using a Table Cloth")
.special(NOISY)
.after(FROGPORT)),
FACTORY_GAUGE = create("factory_gauge", b -> b.icon(AllBlocks.FACTORY_GAUGE)
.title("High Logistics")
.description("Trigger an automatic package request using Factory Gauges")
.special(NOISY)
.after(TABLE_CLOTH_SHOP)),
CARDBOARD_ARMOR = create("cardboard_armor", b -> b.icon(AllItems.CARDBOARD_CHESTPLATE)
.title("Full Stealth")
.description("Sneak around in full Cardboard Armor")
.after(FACTORY_GAUGE)),
// Logistics - Secret
PACKAGE_CHUTE_THROW = create("package_chute_throw", b -> b.icon(PackageStyles.getDefaultBox())
.title("Nothing but net")
.description("Land your cardboard package throw in an item chute")
.after(CARDBOARD_ARMOR)
.special(SECRET)),
// TODO: award using AllAdvancements.CARDBOARD_ARMOR_TRIM.awardTo() on server
CARDBOARD_ARMOR_TRIM = create("cardboard_armor_trim",
b -> b.icon(createArmorTrimmedCardboardChestplate())
.title("Arts and Crafts")
.description("Decorate your cardboard equipment with armor trims")
.after(CARDBOARD_ARMOR)
.special(SECRET)),
// Copper - Central Branch
COPPER = create("copper", b -> b.icon(Items.COPPER_INGOT)
@ -239,8 +300,7 @@ public class AllAdvancements implements DataProvider {
COPPER_CASING = create("copper_casing", b -> b.icon(AllBlocks.COPPER_CASING)
.title("The Copper Age")
.description("Apply Copper Ingots to stripped wood, creating a waterproof casing for your machines")
.after(COPPER)
.special(NOISY)),
.after(COPPER)),
SPOUT = create("spout", b -> b.icon(AllBlocks.SPOUT)
.title("Sploosh")
@ -367,7 +427,7 @@ public class AllAdvancements implements DataProvider {
.special(NOISY)),
ROSE_QUARTZ = create("rose_quartz", b -> b.icon(AllItems.POLISHED_ROSE_QUARTZ)
.title("Pink Diamonds")
.title("Supercharged")
.description("Polish some Rose Quartz")
.whenIconCollected()
.after(BRASS_CASING)),
@ -401,7 +461,7 @@ public class AllAdvancements implements DataProvider {
.after(MECHANICAL_ARM)),
CRUSHING_WHEEL = create("crushing_wheel", b -> b.icon(AllBlocks.CRUSHING_WHEEL)
.title("A Pair of Giants")
.title("Wheels of Destruction")
.description("Place and power a set of Crushing Wheels")
.after(CRAFTER)
.special(NOISY)),
@ -415,7 +475,7 @@ public class AllAdvancements implements DataProvider {
.special(NOISY)),
CLOCKWORK_BEARING = create("clockwork_bearing", b -> b.icon(AllBlocks.CLOCKWORK_BEARING)
.title("Contraption O'Clock")
.title("Contraption o'Clock")
.description("Assemble a structure mounted on a Clockwork Bearing")
.after(HAUNTED_BELL)
.special(NOISY)),
@ -423,8 +483,7 @@ public class AllAdvancements implements DataProvider {
DISPLAY_LINK = create("display_link", b -> b.icon(AllBlocks.DISPLAY_LINK)
.title("Big Data")
.description("Use a Display Link to visualise information")
.after(CLOCKWORK_BEARING)
.special(NOISY)),
.after(CLOCKWORK_BEARING)),
POTATO_CANNON = create("potato_cannon", b -> b.icon(AllItems.POTATO_CANNON)
.title("Fwoomp!")
@ -508,10 +567,9 @@ public class AllAdvancements implements DataProvider {
.after(CRUSHING_WHEEL)),
TRAIN_CASING = create("train_casing_00", b -> b.icon(AllBlocks.RAILWAY_CASING)
.title("The Logistical Age")
.title("The Locomotive Age")
.description("Use Sturdy Sheets to create a casing for railway components")
.after(STURDY_SHEET)
.special(NOISY)),
.after(STURDY_SHEET)),
TRAIN = create("train", b -> b.icon(AllBlocks.TRACK_STATION)
.title("All Aboard!")
@ -603,6 +661,17 @@ public class AllAdvancements implements DataProvider {
//
END = null;
private static ItemStack createArmorTrimmedCardboardChestplate() {
ItemStack asStack = AllItems.CARDBOARD_CHESTPLATE.asStack();
CompoundTag tag = new CompoundTag();
CompoundTag trimTag = new CompoundTag();
trimTag.putString("material", "minecraft:diamond");
trimTag.putString("pattern", "minecraft:sentry");
tag.put("Trim", trimTag);
asStack.setTag(tag);
return asStack;
}
private static CreateAdvancement create(String id, UnaryOperator<Builder> b) {
return new CreateAdvancement(id, b);
}

View file

@ -1070,12 +1070,15 @@
"create.gui.factory_panel.recipe_address_tip_1": "this recipe is crafted.",
"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": "Enter the address that will",
"create.gui.factory_panel.restocker_address_tip_1": "cause packages to arrive here.",
"create.gui.factory_panel.activate_crafting": "Use Mechanical Crafting",
"create.gui.factory_panel.crafting_input": "Packaged Ingredients",
"create.gui.factory_panel.crafting_input_tip": "Unpackage into connected",
"create.gui.factory_panel.crafting_input_tip_1": "mechanical crafters (3x3)",
"create.gui.factory_panel.unconfigured_input": "Recipe ingredients",
"create.gui.factory_panel.unconfigured_input_tip": "Ingredients can be added by",
"create.gui.factory_panel.unconfigured_input_tip_1": "connecting other factory gauges",
"create.gui.factory_panel.inactive": " Inactive ",
"create.gui.factory_panel.address_missing": "Inactive: missing a target address",
"create.gui.factory_panel.no_target_amount_set": "Inactive: no target amount set",

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 812 B

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 876 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B