Comedy Gold

- New advancement chain for high logistics
- Fixed top-face filter slot on table cloths
- Fixed players hiding as packages suffocating in a wall
This commit is contained in:
simibubi 2025-01-07 16:40:10 +01:00
parent d05d10e1e0
commit 20e827ed3f
33 changed files with 541 additions and 66 deletions

View file

@ -1,4 +1,4 @@
// 1.20.1 2025-01-07T12:22:29.7526816 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
f33342a6f59c0aadf05c761a24bd33bc927996ad assets/create/lang/en_ud.json
eef9a5ef2d3cb60dee7277624e8ad5bd54521cf6 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

@ -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Ǝ",

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",

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

@ -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) {

View file

@ -1,5 +1,6 @@
package com.simibubi.create.content.logistics.box;
import java.lang.ref.WeakReference;
import java.util.List;
import javax.annotation.Nullable;
@ -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

@ -35,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;
@ -94,7 +95,6 @@ public class FactoryPanelBehaviour extends FilteringBehaviour {
private boolean promisePrimedForMarkDirty;
private boolean active;
private boolean queueDing;
private int lastReportedUnloadedLinks;
private int lastReportedLevelInStorage;
private int lastReportedPromises;
@ -349,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() {
@ -665,8 +667,6 @@ public class FactoryPanelBehaviour extends FilteringBehaviour {
active = false;
return;
}
boolean previouslySatisfied = satisfied;
active = true;
filter = FilterItemStack.of(panelTag.getCompound("Filter"));

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

@ -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

@ -26,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;
@ -78,6 +80,8 @@ public class PackagerBlockEntity extends SmartBlockEntity {
private InventorySummary availableItems;
private VersionedInventoryTrackerBehaviour invVersionTracker;
private AdvancementBehaviour advancements;
//
@ -101,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) {
@ -535,7 +540,8 @@ public class PackagerBlockEntity extends SmartBlockEntity {
heldBox = createdBox;
animationInward = false;
animationTicks = CYCLE;
advancements.awardPlayer(AllAdvancements.PACKAGER);
triggerStockCheck();
notifyUpdate();
}

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);
}