Merge branch 'mc1.15/dev' into mc1.16/dev

This commit is contained in:
simibubi 2020-12-13 15:33:45 +01:00
commit 78036195ab
44 changed files with 493 additions and 214 deletions

View file

@ -337,7 +337,7 @@ e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets/create/blockstates/powered_toggl
d06cd9a1101b18d306a786320aab12018b1325d6 assets/create/blockstates/purple_sail.json
92957119abd5fbcca36a113b2a80255fd70fc303 assets/create/blockstates/purple_seat.json
61035f8afe75ff7bbd291da5d8690bcbebe679eb assets/create/blockstates/purple_valve_handle.json
ab2a1bf8f37f1c64d00538867f4c3a97195bd3c4 assets/create/blockstates/radial_chassis.json
4439fc83a8c7370ab44b211a3fd48abde20a4728 assets/create/blockstates/radial_chassis.json
45877c4d90a7185c2f304edbd67379d800920439 assets/create/blockstates/red_sail.json
da1b08387af7afa0855ee8d040f620c01f20660a assets/create/blockstates/red_seat.json
722fc77bbf387af8a4016e42cbf9501d2b968881 assets/create/blockstates/red_valve_handle.json
@ -401,17 +401,17 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
c251c089fa897c0e94af6e123118ae9cde30d1ba assets/create/lang/en_ud.json
f4f0e774c4e87f2c23658ddcc4be8bdfb257fee3 assets/create/lang/en_us.json
89f2b0ba6b40babc2f542b6b380f30ed97e280bf assets/create/lang/unfinished/de_de.json
dcd0d558f6f7ef8038ee8056f5294b57dfd3c3ed assets/create/lang/unfinished/fr_fr.json
24573cb127eecfe5c5fc910e277555c10d0b5eaf assets/create/lang/unfinished/it_it.json
423a280d20cdef98143d0f2223adda5299f42864 assets/create/lang/unfinished/ja_jp.json
ce9431b5601069d691b3103cec1f66d05125e32e assets/create/lang/unfinished/ko_kr.json
86b9574166f5382a9cd925e92587eb2f478b7776 assets/create/lang/unfinished/nl_nl.json
9fff9175ee887ddca7a6d901e9d945c92d901d6a assets/create/lang/unfinished/pt_br.json
ce9b299b52640c23c18ffa6e65bdb1d140776564 assets/create/lang/unfinished/ru_ru.json
9c794a6c071bfcb9c58ede3b4c83983c2badc37f assets/create/lang/unfinished/zh_cn.json
7f40117f3618fe7b3e793f4095edf5a4c78a732f assets/create/lang/en_ud.json
b524d5a2ce8ed801128fb7e0f94546b2c2b08d5d assets/create/lang/en_us.json
068b778ba9170dbb5511e35523f2686cf5708c40 assets/create/lang/unfinished/de_de.json
a3cc8f8d8582d1c496135dba4c49afc8248ea2ae assets/create/lang/unfinished/fr_fr.json
9f55d7629760b7cd6297f14ad686d69f267eb1f3 assets/create/lang/unfinished/it_it.json
43d038757ad718b900730f3dc9d2464fee42dbaa assets/create/lang/unfinished/ja_jp.json
17e4fec1cafe0f4fbe660d76aa7f209d7c83341a assets/create/lang/unfinished/ko_kr.json
e31b7cb71bffd2e9e980ab59868ee1353e43df9f assets/create/lang/unfinished/nl_nl.json
c6ec72b0f1300595f9006051ab80bcdcd533a0c2 assets/create/lang/unfinished/pt_br.json
4e75e0ee7f34ac88eaf2f532be6c4037ba8de036 assets/create/lang/unfinished/ru_ru.json
cffcf52cb2be6c2be28a7d6d825eace652071921 assets/create/lang/unfinished/zh_cn.json
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json
@ -1195,6 +1195,7 @@ d537fffaede521efa525fb2a7f9863fe6a80054e assets/create/models/item/birch_window_
56a6baedc608792cd6ab72a1c4fd53046cbda070 assets/create/models/item/black_valve_handle.json
80a6e8b00709fe0521aca5b789ae17485ed9c56d assets/create/models/item/blaze_burner.json
6e350231e9f217019883096b4f0bb95ab0af4728 assets/create/models/item/blaze_cake.json
5d4e5c22295f9b5cc62cf6e74fe1384fbbb319f9 assets/create/models/item/blaze_cake_base.json
0e1977585128fc0ecef640f72e5fc5e9fb47ef92 assets/create/models/item/blue_seat.json
bec96ebf3369d3cffa9bb1b8bf9f2a5cd5d0ef96 assets/create/models/item/blue_valve_handle.json
17d340c3678bd24cb085ba49490b2b4cb341a9e7 assets/create/models/item/brass_block.json
@ -2738,7 +2739,10 @@ dd44cf0e09b1b34b4d2c254ab3d10d05a02717aa data/create/recipes/blasting/tin_ingot_
c323b106e88b7de77fea71ff12494abdbb818d15 data/create/recipes/chiseled_limestone_from_limestone_stonecutting.json
da9a919b476954c1de34826aa7706bf6056a8f12 data/create/recipes/chiseled_scoria_from_scoria_stonecutting.json
09faa4ddcf9f3907dcdb3ab3e8b68c1deb2486e5 data/create/recipes/chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json
eec156ec99d323dbc187f07e67d4449934c3e3e1 data/create/recipes/compacting/blaze_cake.json
ca137d5bce3b5f10069041657fdf630529d06bda data/create/recipes/compacting/andesite_from_flint.json
f7879d404d7a848d818278b4e788f285a9087e63 data/create/recipes/compacting/blaze_cake.json
7b2ef15dd28d1d8a450ea49a82dfb361d1adde4c data/create/recipes/compacting/diorite_from_flint.json
7657603e95ccf83dd0d4b104635db66e531d092a data/create/recipes/compacting/granite_from_flint.json
19526da3a59fc136654ff1bc93c0251581f397a9 data/create/recipes/crafting/appliances/dough.json
7b5f863dda3d05a79cb85943a178eba0bd8a7dc7 data/create/recipes/crafting/appliances/slime_ball.json
b159ba84428eee6ef6e23df1766f2a18f2c8a63e data/create/recipes/crafting/appliances/tree_fertilizer.json
@ -2777,7 +2781,7 @@ dc62d932f6a3723e050cb043fea233efd685f775 data/create/recipes/crafting/kinetics/c
ad1c3ce1e98b8483512bdd754f2e5930c7b3ae85 data/create/recipes/crafting/kinetics/deployer.json
be86df1c4d7af14bc5dcfe044d07c03b6c6d2a75 data/create/recipes/crafting/kinetics/depot.json
9c5d30f25a130d591b924c50e5c83e3b787c2758 data/create/recipes/crafting/kinetics/empty_blaze_burner.json
b23bb0141d2890a971481a9aaea057abf4387341 data/create/recipes/crafting/kinetics/encased_chain_drive.json
f5386d34e6d041f637575d461df6ca5d43b4f464 data/create/recipes/crafting/kinetics/encased_chain_drive.json
b07496e4ba5bc56a2c5a395b612c68ba21328867 data/create/recipes/crafting/kinetics/encased_fan.json
0dd0cc11eaa6789fc612af3231ed247893852178 data/create/recipes/crafting/kinetics/filter.json
30ae02825e54c0cc07be8f4decf9d432e7d61ba2 data/create/recipes/crafting/kinetics/fluid_pipe.json
@ -3094,8 +3098,13 @@ bd355332d17adcb0460b1d43146ca288efb78395 data/create/recipes/fancy_weathered_lim
d2ab9ce73636773165564506580f2ec13bd1fc50 data/create/recipes/fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json
36947f27d2b2e57b00440fd5acd06a7554e5a387 data/create/recipes/fancy_weathered_limestone_bricks_wall.json
1d0e41ca98e48073c72adf4077610c96e592f9a5 data/create/recipes/fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json
133e79f78a7f2c2f63ac7695d2be57d56e8955f4 data/create/recipes/filling/blaze_cake.json
790a63246268173350530d61ac824eff093724b2 data/create/recipes/filling/glowstone.json
5eb6227ccb6fa940b662d3ec029c3bd61fe61c8d data/create/recipes/filling/grass_block.json
244f27eadefefbc966ac384ac087c57d19484321 data/create/recipes/filling/gunpowder.json
c8ca74a6cd071308a1750a2ad1153e79422598a0 data/create/recipes/filling/honey_bottle.json
c83e77a9799b6ca34dd73aa76b56159f2103c48c data/create/recipes/filling/milk_bucket.json
08ce1420d1551ecfef5988977436c087123851a6 data/create/recipes/filling/redstone.json
5b8bbde7f8b270ab75fac18d6858f2fadbc0efa3 data/create/recipes/framed_glass_from_glass_colorless_stonecutting.json
d697de0c9b706ca4e18da7a2d769e7e5fe8d769d data/create/recipes/framed_glass_pane.json
a0dae50faaa1b7142bb4309675e3084c68daa547 data/create/recipes/gabbro_bricks_from_gabbro_stonecutting.json
@ -3226,10 +3235,8 @@ ce9dc7dacb85cb23a7187c19a115b40e597ad36b data/create/recipes/mixing/andesite_all
ab602a53a5d8d057aad910dd1c5529cde2d587ab data/create/recipes/mixing/chocolate.json
0e29b4ce13750aab5a60ae54cbec8776569b35e0 data/create/recipes/mixing/chromatic_compound.json
d9a3dff1288d675ab812eef1eb73cb27dcc71bd2 data/create/recipes/mixing/crushed_brass.json
00b165ea38d834c7955440e87062004a8182c3f8 data/create/recipes/mixing/gunpowder.json
cd9a78454bce20cf3557f5c44febae77ebd43e54 data/create/recipes/mixing/lava_from_cobble.json
0f89b3f2d81585591513619b8d1e8694eb874316 data/create/recipes/mixing/tea.json
3279bd1a34217a19bc9992a2ad87629390dd003f data/create/recipes/mixing/temp_cobble.json
3295a2195707f952a83deb3bed10b43570b215e5 data/create/recipes/mixing/temp_lava.json
1998c6f84f871d6da58ec29d729401d18f8f1aa1 data/create/recipes/mossy_andesite_from_andesite_stonecutting.json
89929d9cb11b5c589b2ecfa821c61add1ef7b62b data/create/recipes/mossy_dark_scoria_from_dark_scoria_stonecutting.json
4b8b1191dd3a21294293dc5ad237af89b849df28 data/create/recipes/mossy_diorite_from_diorite_stonecutting.json
@ -3368,6 +3375,7 @@ eae06580a0a5f486cde35426716d50fcb3ba5bb3 data/create/recipes/polished_weathered_
0fa8386648398724f6fd373178b706c6b11ddefc data/create/recipes/pressing/gold_ingot.json
a104ef6eb8872a40ea7b2ef67ae54cec943162f0 data/create/recipes/pressing/iron_ingot.json
7f9e72ec02a9926656744a95066f8aa304514565 data/create/recipes/pressing/lapis_block.json
654e274b07af172c22838d47e0974367c20101d4 data/create/recipes/pressing/path.json
bd57ccc8eb4357b4a5af021db7b806b514cd2558 data/create/recipes/pressing/sugar_cane.json
141173778757d87e7f2e9466bdab6ff1263c8e98 data/create/recipes/sandpaper_polishing/rose_quartz.json
d59c68621c78ff5d2c51be4440dea603480efed8 data/create/recipes/scoria_bricks_from_scoria_stonecutting.json
@ -3525,7 +3533,7 @@ eac71740fb12bdb38b5dfaa2268613d7ba82b809 data/create/tags/blocks/windmill_sails.
081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data/create/tags/items/create_ingots.json
94c62bf22678ef55b2b8a5398a7960e5b00682dc data/create/tags/items/crushed_ores.json
6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/items/seats.json
abbe5d7cc9d1705509257888154ed7ca23292586 data/create/tags/items/upright_on_belt.json
3d5cdbbf58f23e9aa0bf15c200905254b93a14ed data/create/tags/items/upright_on_belt.json
50936b211d94167a35ec78c89954082a336b6269 data/create/tags/items/valve_handles.json
16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data/forge/tags/blocks/glass/colorless.json
81d3eb40b048160fcc2d6bb7ff12b49276297efd data/forge/tags/blocks/glass_panes.json

View file

@ -415,6 +415,7 @@
"item.create.attribute_filter": "\u0279\u01DD\u0287\u05DF\u0131\u2132 \u01DD\u0287nq\u0131\u0279\u0287\u0287\u2C6F",
"item.create.belt_connector": "\u0287\u05DF\u01DD\u15FA \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW",
"item.create.blaze_cake": "\u01DD\u029E\u0250\u0186 \u01DDz\u0250\u05DF\u15FA",
"item.create.blaze_cake_base": "\u01DDs\u0250\u15FA \u01DD\u029E\u0250\u0186 \u01DDz\u0250\u05DF\u15FA",
"item.create.brass_hand": "pu\u0250H ss\u0250\u0279\u15FA",
"item.create.brass_ingot": "\u0287obuI ss\u0250\u0279\u15FA",
"item.create.brass_nugget": "\u0287\u01DDbbnN ss\u0250\u0279\u15FA",

View file

@ -421,6 +421,7 @@
"item.create.attribute_filter": "Attribute Filter",
"item.create.belt_connector": "Mechanical Belt",
"item.create.blaze_cake": "Blaze Cake",
"item.create.blaze_cake_base": "Blaze Cake Base",
"item.create.brass_hand": "Brass Hand",
"item.create.brass_ingot": "Brass Ingot",
"item.create.brass_nugget": "Brass Nugget",
@ -879,6 +880,9 @@
"create.schematicannon.status.schematicNotPlaced": "Schematic Not Deployed",
"create.schematicannon.status.schematicExpired": "Schematic File Expired",
"create.materialChecklist": "Material Checklist",
"create.materialChecklist.blocksNotLoaded": "* Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.",
"create.gui.filter.deny_list": "Deny-List",
"create.gui.filter.deny_list.description": "Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.",
"create.gui.filter.allow_list": "Allow-List",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1132",
"_": "Missing Localizations: 1135",
"_": "->------------------------] Game Elements [------------------------<-",
@ -422,6 +422,7 @@
"item.create.attribute_filter": "UNLOCALIZED: Attribute Filter",
"item.create.belt_connector": "Mechanischer Riemen",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
"item.create.brass_hand": "UNLOCALIZED: Brass Hand",
"item.create.brass_ingot": "UNLOCALIZED: Brass Ingot",
"item.create.brass_nugget": "UNLOCALIZED: Brass Nugget",
@ -880,6 +881,9 @@
"create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert",
"create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen",
"create.materialChecklist": "UNLOCALIZED: Material Checklist",
"create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.",
"create.gui.filter.deny_list": "UNLOCALIZED: Deny-List",
"create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.",
"create.gui.filter.allow_list": "UNLOCALIZED: Allow-List",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 783",
"_": "Missing Localizations: 786",
"_": "->------------------------] Game Elements [------------------------<-",
@ -422,6 +422,7 @@
"item.create.attribute_filter": "Filtre d'attribut",
"item.create.belt_connector": "Tapis roulant",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
"item.create.brass_hand": "Main",
"item.create.brass_ingot": "Lingot de laiton",
"item.create.brass_nugget": "Pépite de laiton",
@ -880,6 +881,9 @@
"create.schematicannon.status.schematicNotPlaced": "Schéma non déployé",
"create.schematicannon.status.schematicExpired": "Fichier de schéma arrivé à expiration",
"create.materialChecklist": "UNLOCALIZED: Material Checklist",
"create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.",
"create.gui.filter.deny_list": "Liste noire",
"create.gui.filter.deny_list.description": "Les articles réussissent s'ils ne correspondent à AUCUN des éléments ci-dessus. Une liste noire vide accepte tout.",
"create.gui.filter.allow_list": "Liste blanche",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 767",
"_": "Missing Localizations: 770",
"_": "->------------------------] Game Elements [------------------------<-",
@ -422,6 +422,7 @@
"item.create.attribute_filter": "Filtro Attributi",
"item.create.belt_connector": "Nastro Meccanico",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
"item.create.brass_hand": "Mano",
"item.create.brass_ingot": "Lingotto di Ottone",
"item.create.brass_nugget": "Pepita di Ottone",
@ -880,6 +881,9 @@
"create.schematicannon.status.schematicNotPlaced": "Schematica Non Implementata",
"create.schematicannon.status.schematicExpired": "File Schematica Scaduto",
"create.materialChecklist": "UNLOCALIZED: Material Checklist",
"create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.",
"create.gui.filter.deny_list": "Lista Nera",
"create.gui.filter.deny_list.description": "Gli oggetti passano se NON corrispondono a nessuno dei precedenti. Una Lista Nera vuota accetta tutto.",
"create.gui.filter.allow_list": "Lista Bianca",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 766",
"_": "Missing Localizations: 769",
"_": "->------------------------] Game Elements [------------------------<-",
@ -422,6 +422,7 @@
"item.create.attribute_filter": "属性フィルター",
"item.create.belt_connector": "メカニカルベルト",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
"item.create.brass_hand": "手",
"item.create.brass_ingot": "真鍮インゴット",
"item.create.brass_nugget": "真鍮ナゲット",
@ -880,6 +881,9 @@
"create.schematicannon.status.schematicNotPlaced": "配置されていない概略図です",
"create.schematicannon.status.schematicExpired": "概略図ファイルが期限切れです",
"create.materialChecklist": "UNLOCALIZED: Material Checklist",
"create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.",
"create.gui.filter.deny_list": "ブラックリスト",
"create.gui.filter.deny_list.description": "上記のいずれにも一致しない場合、アイテムは通り抜けます。 空のブラックリストはすべてを受け入れます。",
"create.gui.filter.allow_list": "ホワイトリスト",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 767",
"_": "Missing Localizations: 770",
"_": "->------------------------] Game Elements [------------------------<-",
@ -422,6 +422,7 @@
"item.create.attribute_filter": "속성 필터 틀",
"item.create.belt_connector": "기계식 벨트",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
"item.create.brass_hand": "황동 손",
"item.create.brass_ingot": "황동 주괴",
"item.create.brass_nugget": "황동 조각",
@ -880,6 +881,9 @@
"create.schematicannon.status.schematicNotPlaced": "청사진이 전개되지 않음",
"create.schematicannon.status.schematicExpired": "청사진 파일이 제거됨",
"create.materialChecklist": "UNLOCALIZED: Material Checklist",
"create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.",
"create.gui.filter.deny_list": "블랙리스트",
"create.gui.filter.deny_list.description": "위 목록에 맞지않는 아이템이면 통과합니다. 빈 블랙리스트는 모두 통과시킵니다.",
"create.gui.filter.allow_list": "화이트리스트",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1073",
"_": "Missing Localizations: 1076",
"_": "->------------------------] Game Elements [------------------------<-",
@ -422,6 +422,7 @@
"item.create.attribute_filter": "UNLOCALIZED: Attribute Filter",
"item.create.belt_connector": "Mechanische Transportband",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
"item.create.brass_hand": "UNLOCALIZED: Brass Hand",
"item.create.brass_ingot": "UNLOCALIZED: Brass Ingot",
"item.create.brass_nugget": "Brons klompje",
@ -880,6 +881,9 @@
"create.schematicannon.status.schematicNotPlaced": "Bouwtekening niet geplaatst",
"create.schematicannon.status.schematicExpired": "Bouwtekening verlopen",
"create.materialChecklist": "UNLOCALIZED: Material Checklist",
"create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.",
"create.gui.filter.deny_list": "UNLOCALIZED: Deny-List",
"create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.",
"create.gui.filter.allow_list": "UNLOCALIZED: Allow-List",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1139",
"_": "Missing Localizations: 1142",
"_": "->------------------------] Game Elements [------------------------<-",
@ -422,6 +422,7 @@
"item.create.attribute_filter": "UNLOCALIZED: Attribute Filter",
"item.create.belt_connector": "Esteira Mecânica",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
"item.create.brass_hand": "UNLOCALIZED: Brass Hand",
"item.create.brass_ingot": "UNLOCALIZED: Brass Ingot",
"item.create.brass_nugget": "UNLOCALIZED: Brass Nugget",
@ -880,6 +881,9 @@
"create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado",
"create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado",
"create.materialChecklist": "UNLOCALIZED: Material Checklist",
"create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.",
"create.gui.filter.deny_list": "UNLOCALIZED: Deny-List",
"create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.",
"create.gui.filter.allow_list": "UNLOCALIZED: Allow-List",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 440",
"_": "Missing Localizations: 443",
"_": "->------------------------] Game Elements [------------------------<-",
@ -422,6 +422,7 @@
"item.create.attribute_filter": "Фильтр атрибутов",
"item.create.belt_connector": "Механический ремень",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
"item.create.brass_hand": "Латунная рука",
"item.create.brass_ingot": "Латунный слиток",
"item.create.brass_nugget": "Кусочек латуни",
@ -880,6 +881,9 @@
"create.schematicannon.status.schematicNotPlaced": "Схема не загружена",
"create.schematicannon.status.schematicExpired": "Срок действия файла схемы истек",
"create.materialChecklist": "UNLOCALIZED: Material Checklist",
"create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.",
"create.gui.filter.deny_list": "Чёрный список",
"create.gui.filter.deny_list.description": "Предметы проходят, если они не соответствуют ни одному из вышеперечисленных. Пустой черный список принимает все.",
"create.gui.filter.allow_list": "Белый список",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 449",
"_": "Missing Localizations: 451",
"_": "->------------------------] Game Elements [------------------------<-",
@ -422,6 +422,7 @@
"item.create.attribute_filter": "属性过滤器",
"item.create.belt_connector": "传送带",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
"item.create.brass_hand": "黄铜手部零件",
"item.create.brass_ingot": "黄铜锭",
"item.create.brass_nugget": "黄铜粒",
@ -880,6 +881,9 @@
"create.schematicannon.status.schematicNotPlaced": "蓝图未部署",
"create.schematicannon.status.schematicExpired": "蓝图文件已过期",
"create.materialChecklist": "材料清单",
"create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.",
"create.gui.filter.deny_list": "黑名单",
"create.gui.filter.deny_list.description": "只通过不在黑名单中的物品,如果黑名单为空,所有物品都可以通过",
"create.gui.filter.allow_list": "白名单",

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "create:item/blaze_cake_base"
}
}

View file

@ -0,0 +1,24 @@
{
"type": "create:compacting",
"ingredients": [
{
"item": "minecraft:flint"
},
{
"item": "minecraft:flint"
},
{
"item": "minecraft:gravel"
},
{
"fluid": "minecraft:lava",
"nbt": {},
"amount": 100
}
],
"results": [
{
"item": "minecraft:andesite"
}
]
}

View file

@ -9,15 +9,11 @@
},
{
"item": "create:cinder_flour"
},
{
"fluidTag": "minecraft:lava",
"amount": 125
}
],
"results": [
{
"item": "create:blaze_cake"
"item": "create:blaze_cake_base"
}
]
}

View file

@ -0,0 +1,24 @@
{
"type": "create:compacting",
"ingredients": [
{
"item": "minecraft:flint"
},
{
"item": "minecraft:flint"
},
{
"item": "create:limesand"
},
{
"fluid": "minecraft:lava",
"nbt": {},
"amount": 100
}
],
"results": [
{
"item": "minecraft:diorite"
}
]
}

View file

@ -0,0 +1,24 @@
{
"type": "create:compacting",
"ingredients": [
{
"item": "minecraft:flint"
},
{
"item": "minecraft:flint"
},
{
"item": "minecraft:red_sand"
},
{
"fluid": "minecraft:lava",
"nbt": {},
"amount": 100
}
],
"results": [
{
"item": "minecraft:granite"
}
]
}

View file

@ -1,16 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
" C ",
"CBC",
" C "
" B ",
"SCS",
" B "
],
"key": {
"C": {
"item": "create:andesite_casing"
"S": {
"item": "create:shaft"
},
"B": {
"item": "minecraft:dried_kelp"
"tag": "forge:nuggets/iron"
},
"C": {
"item": "create:andesite_casing"
}
},
"result": {

View file

@ -1,20 +1,18 @@
{
"type": "create:mixing",
"type": "create:filling",
"ingredients": [
{
"fluid": "minecraft:water",
"nbt": {},
"amount": 250
"item": "create:blaze_cake_base"
},
{
"fluid": "minecraft:lava",
"nbt": {},
"amount": 25
"amount": 250
}
],
"results": [
{
"item": "minecraft:cobblestone"
"item": "create:blaze_cake"
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "create:filling",
"ingredients": [
{
"item": "create:cinder_flour"
},
{
"fluid": "create:potion",
"nbt": {
"Bottle": "REGULAR",
"Potion": "minecraft:fire_resistance"
},
"amount": 25
}
],
"results": [
{
"item": "minecraft:glowstone_dust"
}
]
}

View file

@ -0,0 +1,18 @@
{
"type": "create:filling",
"ingredients": [
{
"item": "minecraft:dirt"
},
{
"fluid": "minecraft:water",
"nbt": {},
"amount": 500
}
],
"results": [
{
"item": "minecraft:grass_block"
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "create:filling",
"ingredients": [
{
"item": "create:cinder_flour"
},
{
"fluid": "create:potion",
"nbt": {
"Bottle": "REGULAR",
"Potion": "minecraft:harming"
},
"amount": 25
}
],
"results": [
{
"item": "minecraft:gunpowder"
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "create:filling",
"ingredients": [
{
"item": "create:cinder_flour"
},
{
"fluid": "create:potion",
"nbt": {
"Bottle": "REGULAR",
"Potion": "minecraft:strength"
},
"amount": 25
}
],
"results": [
{
"item": "minecraft:redstone"
}
]
}

View file

@ -1,21 +0,0 @@
{
"type": "create:mixing",
"ingredients": [
{
"tag": "minecraft:coals"
},
{
"item": "create:crushed_zinc_ore"
},
{
"item": "minecraft:gunpowder"
}
],
"results": [
{
"item": "minecraft:gunpowder",
"count": 2
}
],
"heatRequirement": "heated"
}

View file

@ -8,7 +8,7 @@
"results": [
{
"fluid": "minecraft:lava",
"amount": 25
"amount": 50
}
],
"heatRequirement": "superheated"

View file

@ -0,0 +1,21 @@
{
"type": "create:pressing",
"ingredients": [
[
{
"item": "minecraft:grass_block"
},
{
"item": "minecraft:dirt"
},
{
"item": "minecraft:podzol"
}
]
],
"results": [
{
"item": "minecraft:grass_path"
}
]
}

View file

@ -1,6 +1,8 @@
{
"replace": false,
"values": [
"create:blaze_cake_base",
"create:blaze_cake",
"minecraft:glass_bottle",
"minecraft:potion",
"minecraft:splash_potion",

View file

@ -44,6 +44,7 @@ import com.simibubi.create.content.schematics.item.SchematicAndQuillItem;
import com.simibubi.create.content.schematics.item.SchematicItem;
import com.simibubi.create.foundation.data.AssetLookup;
import com.simibubi.create.foundation.data.CreateRegistrate;
import com.simibubi.create.foundation.item.HiddenIngredientItem;
import com.simibubi.create.foundation.item.TagDependentIngredientItem;
import com.simibubi.create.foundation.item.TooltipHelper;
import com.tterrag.registrate.util.entry.ItemEntry;
@ -81,19 +82,13 @@ public class AllItems {
CRUSHED_ZINC = taggedIngredient("crushed_zinc_ore", CRUSHED_ORES.tag),
CRUSHED_BRASS = taggedIngredient("crushed_brass", CRUSHED_ORES.tag);
public static final ItemEntry<TagDependentIngredientItem>
CRUSHED_OSMIUM = compatCrushedOre("osmium"),
CRUSHED_PLATINUM = compatCrushedOre("platinum"),
CRUSHED_SILVER = compatCrushedOre("silver"),
CRUSHED_TIN = compatCrushedOre("tin"),
CRUSHED_LEAD = compatCrushedOre("lead"),
CRUSHED_QUICKSILVER = compatCrushedOre("quicksilver"),
CRUSHED_BAUXITE = compatCrushedOre("aluminum"),
CRUSHED_URANIUM = compatCrushedOre("uranium"),
CRUSHED_NICKEL = compatCrushedOre("nickel");
public static final ItemEntry<TagDependentIngredientItem> CRUSHED_OSMIUM = compatCrushedOre("osmium"),
CRUSHED_PLATINUM = compatCrushedOre("platinum"), CRUSHED_SILVER = compatCrushedOre("silver"),
CRUSHED_TIN = compatCrushedOre("tin"), CRUSHED_LEAD = compatCrushedOre("lead"),
CRUSHED_QUICKSILVER = compatCrushedOre("quicksilver"), CRUSHED_BAUXITE = compatCrushedOre("aluminum"),
CRUSHED_URANIUM = compatCrushedOre("uranium"), CRUSHED_NICKEL = compatCrushedOre("nickel");
public static final ItemEntry<Item>
ANDESITE_ALLOY = ingredient("andesite_alloy"),
public static final ItemEntry<Item> ANDESITE_ALLOY = ingredient("andesite_alloy"),
COPPER_INGOT = taggedIngredient("copper_ingot", forgeItemTag("ingots/copper"), CREATE_INGOTS.tag),
ZINC_INGOT = taggedIngredient("zinc_ingot", forgeItemTag("ingots/zinc"), CREATE_INGOTS.tag),
BRASS_INGOT = taggedIngredient("brass_ingot", forgeItemTag("ingots/brass"), CREATE_INGOTS.tag),
@ -104,7 +99,13 @@ public class AllItems {
WHISK = ingredient("whisk"), BRASS_HAND = ingredient("brass_hand"),
CRAFTER_SLOT_COVER = ingredient("crafter_slot_cover");
public static final ItemEntry<HiddenIngredientItem> BLAZE_CAKE_BASE =
REGISTRATE.item("blaze_cake_base", HiddenIngredientItem::new)
.tag(AllItemTags.UPRIGHT_ON_BELT.tag)
.register();
public static final ItemEntry<CombustibleItem> BLAZE_CAKE = REGISTRATE.item("blaze_cake", CombustibleItem::new)
.tag(AllItemTags.UPRIGHT_ON_BELT.tag)
.register();
public static final ItemEntry<ChromaticCompoundItem> CHROMATIC_COMPOUND =
@ -266,6 +267,11 @@ public class AllItems {
.register();
}
private static ItemEntry<HiddenIngredientItem> hiddenIngredient(String name) {
return REGISTRATE.item(name, HiddenIngredientItem::new)
.register();
}
@SafeVarargs
private static ItemEntry<Item> taggedIngredient(String name, ITag.INamedTag<Item>... tags) {
return REGISTRATE.item(name, Item::new)

View file

@ -159,11 +159,10 @@ public class CreateJEI implements IModPlugin {
.recipeList(MysteriousItemConversionCategory::getRecipes)
.build(),
spoutFilling =
register("spout_filling", SpoutCategory::new).recipeList(() -> SpoutCategory.getRecipes(ingredientManager))
.recipes(AllRecipeTypes.FILLING)
.catalyst(AllBlocks.SPOUT::get)
.build(),
spoutFilling = register("spout_filling", SpoutCategory::new).recipes(AllRecipeTypes.FILLING)
.recipeList(() -> SpoutCategory.getRecipes(ingredientManager))
.catalyst(AllBlocks.SPOUT::get)
.build(),
draining = register("draining", ItemDrainCategory::new)
.recipeList(() -> ItemDrainCategory.getRecipes(ingredientManager))

View file

@ -1,7 +1,6 @@
package com.simibubi.create.content.contraptions.fluids.actors;
import java.util.List;
import java.util.Optional;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.foundation.fluid.FluidIngredient;
@ -27,9 +26,9 @@ public class FillingBySpout {
public static int getRequiredAmountForItem(World world, ItemStack stack, FluidStack availableFluid) {
wrapper.setInventorySlotContents(0, stack);
Optional<IRecipe<RecipeWrapper>> recipe = AllRecipeTypes.FILLING.find(wrapper, world);
if (recipe.isPresent()) {
FillingRecipe fillingRecipe = (FillingRecipe) recipe.get();
for (IRecipe<RecipeWrapper> recipe : world.getRecipeManager()
.getRecipes(AllRecipeTypes.FILLING.getType(), wrapper, world)) {
FillingRecipe fillingRecipe = (FillingRecipe) recipe;
FluidIngredient requiredFluid = fillingRecipe.getRequiredFluid();
if (requiredFluid.test(availableFluid))
return requiredFluid.getRequiredAmount();
@ -42,9 +41,9 @@ public class FillingBySpout {
toFill.setAmount(requiredAmount);
wrapper.setInventorySlotContents(0, stack);
Optional<IRecipe<RecipeWrapper>> recipe = AllRecipeTypes.FILLING.find(wrapper, world);
if (recipe.isPresent()) {
FillingRecipe fillingRecipe = (FillingRecipe) recipe.get();
for (IRecipe<RecipeWrapper> recipe : world.getRecipeManager()
.getRecipes(AllRecipeTypes.FILLING.getType(), wrapper, world)) {
FillingRecipe fillingRecipe = (FillingRecipe) recipe;
FluidIngredient requiredFluid = fillingRecipe.getRequiredFluid();
if (requiredFluid.test(toFill)) {
List<ItemStack> results = fillingRecipe.rollResults();

View file

@ -6,6 +6,8 @@ import java.util.Map.Entry;
import com.google.common.collect.Lists;
import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid.BottleType;
import com.simibubi.create.foundation.fluid.FluidHelper;
import com.simibubi.create.foundation.fluid.FluidIngredient;
import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.Pair;
@ -41,6 +43,11 @@ public class PotionFluidHandler {
return Pair.of(fluid, new ItemStack(Items.GLASS_BOTTLE));
}
public static FluidIngredient potionIngredient(Potion potion, int amount) {
return FluidIngredient.fromFluidStack(FluidHelper.copyStackWithAmount(PotionFluidHandler
.getFluidFromPotionItem(PotionUtils.addPotionToItemStack(new ItemStack(Items.POTION), potion)), amount));
}
public static FluidStack getFluidFromPotionItem(ItemStack stack) {
Potion potion = PotionUtils.getPotionFromItem(stack);
List<EffectInstance> list = PotionUtils.getFullEffectsFromItem(stack);

View file

@ -1,8 +1,9 @@
package com.simibubi.create.content.logistics;
import java.util.HashMap;
import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@ -21,14 +22,24 @@ import net.minecraft.world.World;
public class RedstoneLinkNetworkHandler {
static Map<IWorld, Map<Pair<Frequency, Frequency>, Set<LinkBehaviour>>> connections = new HashMap<>();
static final Map<IWorld, Map<Pair<Frequency, Frequency>, Set<LinkBehaviour>>> connections = new IdentityHashMap<>();
public static class Frequency {
public static final Frequency EMPTY = new Frequency(ItemStack.EMPTY);
private static final Map<Item, Frequency> simpleFrequencies = new IdentityHashMap<>();
private ItemStack stack;
private Item item;
private int color;
public Frequency(ItemStack stack) {
public static Frequency of(ItemStack stack) {
if (stack.isEmpty())
return EMPTY;
if (!stack.hasTag())
return simpleFrequencies.computeIfAbsent(stack.getItem(), $ -> new Frequency(stack));
return new Frequency(stack);
}
private Frequency(ItemStack stack) {
this.stack = stack;
item = stack.getItem();
CompoundNBT displayTag = stack.getChildTag("display");
@ -36,7 +47,7 @@ public class RedstoneLinkNetworkHandler {
}
public ItemStack getStack() {
return stack.copy();
return stack;
}
@Override
@ -46,6 +57,8 @@ public class RedstoneLinkNetworkHandler {
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
return obj instanceof Frequency ? ((Frequency) obj).item == item && ((Frequency) obj).color == color
: false;
}
@ -66,7 +79,7 @@ public class RedstoneLinkNetworkHandler {
Map<Pair<Frequency, Frequency>, Set<LinkBehaviour>> networksInWorld = networksIn(actor.getWorld());
Pair<Frequency, Frequency> key = actor.getNetworkKey();
if (!networksInWorld.containsKey(key))
networksInWorld.put(key, new HashSet<>());
networksInWorld.put(key, new LinkedHashSet<>());
return networksInWorld.get(key);
}
@ -106,31 +119,26 @@ public class RedstoneLinkNetworkHandler {
}
if (!withinRange(actor, other))
continue;
power = Math.max(other.getTransmittedStrength(), power);
if (power == 15)
break;
if (power < 15)
power = Math.max(other.getTransmittedStrength(), power);
}
// fix one-to-one loading order problem
if(actor.isListening()){
if (actor.isListening()) {
actor.newPosition = true;
actor.updateReceiver(power);
}
for (Iterator<LinkBehaviour> iterator = network.iterator(); iterator.hasNext();) {
LinkBehaviour other = iterator.next();
if (other.tileEntity.isRemoved()) {
iterator.remove();
continue;
}
if (!withinRange(actor, other))
continue;
if (other.isListening())
for (LinkBehaviour other : network) {
if (other != actor && other.isListening() && withinRange(actor, other))
other.updateReceiver(power);
}
}
public static boolean withinRange(LinkBehaviour from, LinkBehaviour to) {
if (from == to)
return true;
return from.getPos().withinDistance(to.getPos(), AllConfigs.SERVER.logistics.linkRange.get());
}

View file

@ -2,41 +2,37 @@ package com.simibubi.create.content.schematics;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import com.google.common.collect.Sets;
import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType;
import com.simibubi.create.foundation.utility.Lang;
import it.unimi.dsi.fastutil.objects.Object2IntArrayMap;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.nbt.StringNBT;
import net.minecraft.util.text.IFormattableTextComponent;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.Style;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.util.text.TranslationTextComponent;
//TODO colors get purged with current approach, proper checklist item with UI is needed
public class MaterialChecklist {
public static final int MAX_ENTRIES_PER_PAGE = 5;
public Map<Item, Integer> gathered;
public Map<Item, Integer> required;
public Map<Item, Integer> damageRequired;
public Object2IntMap<Item> gathered = new Object2IntArrayMap<>();
public Object2IntMap<Item> required = new Object2IntArrayMap<>();
public Object2IntMap<Item> damageRequired = new Object2IntArrayMap<>();
public boolean blocksNotLoaded;
public MaterialChecklist() {
required = new HashMap<>();
damageRequired = new HashMap<>();
gathered = new HashMap<>();
}
public void warnBlockNotLoaded() {
blocksNotLoaded = true;
}
@ -55,12 +51,12 @@ public class MaterialChecklist {
}
}
private void putOrIncrement(Map<Item, Integer> map, ItemStack stack) {
private void putOrIncrement(Object2IntMap<Item> map, ItemStack stack) {
Item item = stack.getItem();
if (item == Items.AIR)
return;
if (map.containsKey(item))
map.put(item, map.get(item) + stack.getCount());
map.put(item, map.getInt(item) + stack.getCount());
else
map.put(item, stack.getCount());
}
@ -69,7 +65,7 @@ public class MaterialChecklist {
Item item = stack.getItem();
if (required.containsKey(item) || damageRequired.containsKey(item))
if (gathered.containsKey(item))
gathered.put(item, gathered.get(item) + stack.getCount());
gathered.put(item, gathered.getInt(item) + stack.getCount());
else
gathered.put(item, stack.getCount());
}
@ -81,31 +77,31 @@ public class MaterialChecklist {
ListNBT pages = new ListNBT();
int itemsWritten = 0;
StringBuilder string = new StringBuilder("{\"text\":\"");
IFormattableTextComponent textComponent;
if (blocksNotLoaded) {
string.append("\n" + TextFormatting.RED + "* Disclaimer *\n\n");
string.append("Material List may be inaccurate due to relevant chunks not being loaded.");
string.append("\"}");
pages.add(StringNBT.of(string.toString()));
string = new StringBuilder("{\"text\":\"");
textComponent = new StringTextComponent("\n" + TextFormatting.RED);
textComponent =
textComponent.append(Lang.createTranslationTextComponent("materialChecklist.blocksNotLoaded"));
pages.add(StringNBT.of(ITextComponent.Serializer.toJson(textComponent)));
}
List<Item> keys = new ArrayList<>(Sets.union(required.keySet(), damageRequired.keySet()));
Collections.sort(keys, (item1, item2) -> {
Locale locale = Locale.ENGLISH;
String name1 =
new TranslationTextComponent(item1.getTranslationKey()).getString().toLowerCase(locale);
String name2 =
new TranslationTextComponent(item2.getTranslationKey()).getString().toLowerCase(locale);
String name1 = new TranslationTextComponent(item1.getTranslationKey()).getString()
.toLowerCase(locale);
String name2 = new TranslationTextComponent(item2.getTranslationKey()).getString()
.toLowerCase(locale);
return name1.compareTo(name2);
});
textComponent = new StringTextComponent("");
List<Item> completed = new ArrayList<>();
for (Item item : keys) {
int amount = getRequiredAmount(item);
if (gathered.containsKey(item))
amount -= gathered.get(item);
amount -= gathered.getInt(item);
if (amount <= 0) {
completed.add(item);
@ -114,63 +110,59 @@ public class MaterialChecklist {
if (itemsWritten == MAX_ENTRIES_PER_PAGE) {
itemsWritten = 0;
string.append("\"}");
pages.add(StringNBT.of(string.toString()));
string = new StringBuilder("{\"text\":\"");
textComponent.append(new StringTextComponent("\n >>>").formatted(TextFormatting.BLUE));
pages.add(StringNBT.of(ITextComponent.Serializer.toJson(textComponent)));
textComponent = new StringTextComponent("");
}
itemsWritten++;
string.append(unfinishedEntry(new ItemStack(item), amount).getString());
textComponent.append(entry(new ItemStack(item), amount, true));
}
for (Item item : completed) {
if (itemsWritten == MAX_ENTRIES_PER_PAGE) {
itemsWritten = 0;
string.append("\"}");
pages.add(StringNBT.of(string.toString()));
string = new StringBuilder("{\"text\":\"");
textComponent.append(new StringTextComponent("\n >>>").formatted(TextFormatting.DARK_GREEN));
pages.add(StringNBT.of(ITextComponent.Serializer.toJson(textComponent)));
textComponent = new StringTextComponent("");
}
itemsWritten++;
string.append(gatheredEntry(new ItemStack(item), getRequiredAmount(item)).getString());
textComponent.append(entry(new ItemStack(item), getRequiredAmount(item), false));
}
string.append("\"}");
pages.add(StringNBT.of(string.toString()));
pages.add(StringNBT.of(ITextComponent.Serializer.toJson(textComponent)));
tag.put("pages", pages);
tag.putString("author", "Schematicannon");
tag.putString("title", TextFormatting.BLUE + "Material Checklist");
textComponent = Lang.createTranslationTextComponent("materialChecklist")
.setStyle(Style.EMPTY.withColor(TextFormatting.BLUE)
.withItalic(Boolean.FALSE));
book.getOrCreateChildTag("display")
.putString("Name", ITextComponent.Serializer.toJson(textComponent));
book.setTag(tag);
return book;
}
public Integer getRequiredAmount(Item item) {
public int getRequiredAmount(Item item) {
int amount = required.getOrDefault(item, 0);
if (damageRequired.containsKey(item))
amount += Math.ceil(damageRequired.get(item) / (float) new ItemStack(item).getMaxDamage());
amount += Math.ceil(damageRequired.getInt(item) / (float) new ItemStack(item).getMaxDamage());
return amount;
}
private ITextComponent gatheredEntry(ItemStack item, int amount) {
private ITextComponent entry(ItemStack item, int amount, boolean unfinished) {
int stacks = amount / 64;
int remainder = amount % 64;
TranslationTextComponent tc = new TranslationTextComponent(item.getTranslationKey());
return tc.append(" \\u2714\n");
//.formatted(TextFormatting.DARK_GREEN).append(new StringTextComponent(" | "
//+ "-" + "\\u25A4 +" + "--" + "\n").formatted(TextFormatting.GRAY));
// return TextFormatting.DARK_GREEN + tc.getFormattedText() + " \\u2714\n x" + amount + TextFormatting.GRAY + " | "
// + stacks + "\\u25A4 +" + remainder + "\n";
}
private ITextComponent unfinishedEntry(ItemStack item, int amount) {
int stacks = amount / 64;
int remainder = amount % 64;
TranslationTextComponent tc = new TranslationTextComponent(item.getTranslationKey());
return tc.append("\n x" + amount).formatted(TextFormatting.BLUE).append(new StringTextComponent(" | " + stacks + "\\u25A4 +" + remainder + "\n").formatted(TextFormatting.GRAY));
// return TextFormatting.BLUE + tc.getFormattedText() + "\n x" + amount + TextFormatting.GRAY + " | " + stacks
// + "\\u25A4 +" + remainder + "\n";
IFormattableTextComponent tc = new TranslationTextComponent(item.getTranslationKey());
if (!unfinished)
tc.append(" \u2714");
tc.formatted(unfinished ? TextFormatting.BLUE : TextFormatting.DARK_GREEN);
return tc.append(new StringTextComponent("\n" + " x" + amount).formatted(TextFormatting.BLACK))
.append(
new StringTextComponent(" | " + stacks + "\u25A4 +" + remainder + "\n").formatted(TextFormatting.GRAY));
}
}

View file

@ -162,8 +162,8 @@ public class LangMerger implements IDataProvider {
if (key.endsWith(".tooltip"))
return true;
key = new String(key).replaceFirst("\\.", "");
previousKey = new String(previousKey).replaceFirst("\\.", "");
key = key.replaceFirst("\\.", "");
previousKey = previousKey.replaceFirst("\\.", "");
String[] split = key.split("\\.");
String[] split2 = previousKey.split("\\.");
@ -243,7 +243,7 @@ public class LangMerger implements IDataProvider {
}
private class LangEntry {
static final String ENTRY_FORMAT = "\t\"%s\": \"%s\",\n";
static final String ENTRY_FORMAT = "\t\"%s\": %s,\n";
private String key;
private String value;
@ -255,7 +255,7 @@ public class LangMerger implements IDataProvider {
@Override
public String toString() {
return String.format(ENTRY_FORMAT, key, value);
return String.format(ENTRY_FORMAT, key, GSON.toJson(value, String.class));
}
}

View file

@ -2,23 +2,41 @@ package com.simibubi.create.foundation.data.recipe;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.content.palettes.AllPaletteBlocks;
import net.minecraft.block.Blocks;
import net.minecraft.data.DataGenerator;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.Items;
import net.minecraft.tags.FluidTags;
import net.minecraftforge.common.Tags;
public class CompactingRecipeGen extends ProcessingRecipeGen {
GeneratedRecipe
BLAZE_CAKE = create("blaze_cake", b -> b
.require(Tags.Items.EGGS)
.require(Items.SUGAR)
.require(AllItems.CINDER_FLOUR.get())
.require(FluidTags.LAVA, 125)
.output(AllItems.BLAZE_CAKE.get(), 1))
GRANITE = create("granite_from_flint", b -> b.require(Items.FLINT)
.require(Items.FLINT)
.require(Fluids.LAVA, 100)
.require(Items.RED_SAND)
.output(Blocks.GRANITE, 1)),
DIORITE = create("diorite_from_flint", b -> b.require(Items.FLINT)
.require(Items.FLINT)
.require(Fluids.LAVA, 100)
.require(AllPaletteBlocks.LIMESAND.get())
.output(Blocks.DIORITE, 1)),
ANDESITE = create("andesite_from_flint", b -> b.require(Items.FLINT)
.require(Items.FLINT)
.require(Fluids.LAVA, 100)
.require(Items.GRAVEL)
.output(Blocks.ANDESITE, 1)),
BLAZE_CAKE = create("blaze_cake", b -> b.require(Tags.Items.EGGS)
.require(Items.SUGAR)
.require(AllItems.CINDER_FLOUR.get())
.output(AllItems.BLAZE_CAKE_BASE.get(), 1))
;
public CompactingRecipeGen(DataGenerator p_i48262_1_) {

View file

@ -1,24 +1,47 @@
package com.simibubi.create.foundation.data.recipe;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.AllTags;
import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler;
import net.minecraft.data.DataGenerator;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.Items;
import net.minecraft.potion.Potions;
public class FillingRecipeGen extends ProcessingRecipeGen {
GeneratedRecipe
HONEY_BOTTLE = create("honey_bottle", b -> b
.require(AllTags.forgeFluidTag("honey"), 250)
GeneratedRecipe
HONEY_BOTTLE = create("honey_bottle", b -> b.require(AllTags.forgeFluidTag("honey"), 250)
.require(Items.GLASS_BOTTLE)
.output(Items.HONEY_BOTTLE)),
MILK_BUCKET = create("milk_bucket", b -> b
.require(AllTags.forgeFluidTag("milk"), 1000)
.require(Items.BUCKET)
.output(Items.MILK_BUCKET))
BLAZE_CAKE = create("blaze_cake", b -> b.require(Fluids.LAVA, 250)
.require(AllItems.BLAZE_CAKE_BASE.get())
.output(AllItems.BLAZE_CAKE.get())),
GRASS_BLOCK = create("grass_block", b -> b.require(Fluids.WATER, 500)
.require(Items.DIRT)
.output(Items.GRASS_BLOCK)),
GUNPOWDER = create("gunpowder", b -> b.require(PotionFluidHandler.potionIngredient(Potions.HARMING, 25))
.require(AllItems.CINDER_FLOUR.get())
.output(Items.GUNPOWDER)),
REDSTONE = create("redstone", b -> b.require(PotionFluidHandler.potionIngredient(Potions.STRENGTH, 25))
.require(AllItems.CINDER_FLOUR.get())
.output(Items.REDSTONE)),
GLOWSTONE = create("glowstone", b -> b.require(PotionFluidHandler.potionIngredient(Potions.FIRE_RESISTANCE, 25))
.require(AllItems.CINDER_FLOUR.get())
.output(Items.GLOWSTONE_DUST)),
MILK_BUCKET = create("milk_bucket", b -> b.require(AllTags.forgeFluidTag("milk"), 1000)
.require(Items.BUCKET)
.output(Items.MILK_BUCKET))
;
public FillingRecipeGen(DataGenerator p_i48262_1_) {

View file

@ -17,12 +17,8 @@ public class MixingRecipeGen extends ProcessingRecipeGen {
GeneratedRecipe
TEMPCOBBLE = create("temp_cobble", b -> b.require(Fluids.WATER, 250)
.require(Fluids.LAVA, 25)
.output(Blocks.COBBLESTONE, 1)),
TEMP_LAVA = create("temp_lava", b -> b.require(Tags.Items.COBBLESTONE)
.output(Fluids.LAVA, 25)
TEMP_LAVA = create("lava_from_cobble", b -> b.require(Tags.Items.COBBLESTONE)
.output(Fluids.LAVA, 50)
.requiresHeat(HeatCondition.SUPERHEATED)),
TEA = create("tea", b -> b.require(Fluids.WATER, 250)
@ -30,9 +26,8 @@ public class MixingRecipeGen extends ProcessingRecipeGen {
.require(ItemTags.LEAVES)
.output(AllFluids.TEA.get(), 500)
.requiresHeat(HeatCondition.HEATED)),
CHOCOLATE = create("chocolate", b -> b
.require(AllTags.forgeFluidTag("milk"), 250)
CHOCOLATE = create("chocolate", b -> b.require(AllTags.forgeFluidTag("milk"), 250)
.require(Items.SUGAR)
.require(Items.COCOA_BEANS)
.output(AllFluids.CHOCOLATE.get(), 250)
@ -48,12 +43,6 @@ public class MixingRecipeGen extends ProcessingRecipeGen {
.output(AllItems.CRUSHED_BRASS.get(), 2)
.requiresHeat(HeatCondition.HEATED)),
GUNPOWDER = create("gunpowder", b -> b.require(ItemTags.COALS)
.require(AllItems.CRUSHED_ZINC.get())
.require(Items.GUNPOWDER)
.output(Items.GUNPOWDER, 2)
.requiresHeat(HeatCondition.HEATED)),
CHROMATIC_COMPOUND = create("chromatic_compound", b -> b.require(Tags.Items.DUSTS_GLOWSTONE)
.require(Tags.Items.DUSTS_GLOWSTONE)
.require(Tags.Items.DUSTS_GLOWSTONE)

View file

@ -6,6 +6,7 @@ import com.simibubi.create.AllRecipeTypes;
import net.minecraft.block.Blocks;
import net.minecraft.data.DataGenerator;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.Ingredient;
public class PressingRecipeGen extends ProcessingRecipeGen {
@ -13,6 +14,9 @@ public class PressingRecipeGen extends ProcessingRecipeGen {
SUGAR_CANE = create(() -> Items.SUGAR_CANE, b -> b.output(Items.PAPER)),
PATH = create("path", b -> b.require(Ingredient.fromItems(Items.GRASS_BLOCK, Items.DIRT, Items.PODZOL))
.output(Items.GRASS_PATH)),
IRON = create("iron_ingot", b -> b.require(I.iron())
.output(AllItems.IRON_SHEET.get())),
GOLD = create("gold_ingot", b -> b.require(I.gold())

View file

@ -656,13 +656,14 @@ public class StandardRecipeGen extends CreateRecipeProvider {
.patternLine("CBC")
.patternLine(" C ")),
ENCASED_BELT = create(AllBlocks.ENCASED_CHAIN_DRIVE).returns(4)
ENCASED_CHAIN_DRIVE = create(AllBlocks.ENCASED_CHAIN_DRIVE).returns(4)
.unlockedBy(I::andesiteCasing)
.viaShaped(b -> b.key('C', I.andesiteCasing())
.key('B', Items.DRIED_KELP)
.patternLine(" C ")
.patternLine("CBC")
.patternLine(" C ")),
.viaShaped(b -> b.key('S', I.shaft())
.key('B', Tags.Items.NUGGETS_IRON)
.key('C', I.andesiteCasing())
.patternLine(" B ")
.patternLine("SCS")
.patternLine(" B ")),
SPEEDOMETER = create(AllBlocks.SPEEDOMETER).unlockedBy(I::andesite)
.viaShaped(b -> b.key('C', Items.COMPASS)

View file

@ -0,0 +1,21 @@
package com.simibubi.create.foundation.item;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
public class HiddenIngredientItem extends Item {
public HiddenIngredientItem(Properties p_i48487_1_) {
super(p_i48487_1_);
}
@Override
public void fillItemGroup(ItemGroup p_150895_1_, NonNullList<ItemStack> p_150895_2_) {
if (p_150895_1_ != ItemGroup.SEARCH)
return;
super.fillItemGroup(p_150895_1_, p_150895_2_);
}
}

View file

@ -39,8 +39,8 @@ public class LinkBehaviour extends TileEntityBehaviour {
protected LinkBehaviour(SmartTileEntity te, Pair<ValueBoxTransform, ValueBoxTransform> slots) {
super(te);
frequencyFirst = new Frequency(ItemStack.EMPTY);
frequencyLast = new Frequency(ItemStack.EMPTY);
frequencyFirst = Frequency.EMPTY;
frequencyLast = Frequency.EMPTY;
firstSlot = slots.getLeft();
secondSlot = slots.getRight();
textShift = Vector3d.ZERO;
@ -133,8 +133,8 @@ public class LinkBehaviour extends TileEntityBehaviour {
newPosition = positionInTag != positionKey;
super.read(nbt, clientPacket);
frequencyFirst = new Frequency(ItemStack.read(nbt.getCompound("FrequencyFirst")));
frequencyLast = new Frequency(ItemStack.read(nbt.getCompound("FrequencyLast")));
frequencyFirst = Frequency.of(ItemStack.read(nbt.getCompound("FrequencyFirst")));
frequencyLast = Frequency.of(ItemStack.read(nbt.getCompound("FrequencyLast")));
}
public void setFrequency(boolean first, ItemStack stack) {
@ -148,9 +148,9 @@ public class LinkBehaviour extends TileEntityBehaviour {
getHandler().removeFromNetwork(this);
if (first)
frequencyFirst = new Frequency(stack);
frequencyFirst = Frequency.of(stack);
else
frequencyLast = new Frequency(stack);
frequencyLast = Frequency.of(stack);
if (!changed)
return;

View file

@ -314,7 +314,10 @@
"create.schematicannon.status.schematicInvalid": "Schematic Invalid",
"create.schematicannon.status.schematicNotPlaced": "Schematic Not Deployed",
"create.schematicannon.status.schematicExpired": "Schematic File Expired",
"create.materialChecklist": "Material Checklist",
"create.materialChecklist.blocksNotLoaded": "* Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.",
"create.gui.filter.deny_list": "Deny-List",
"create.gui.filter.deny_list.description": "Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.",
"create.gui.filter.allow_list": "Allow-List",

View file

@ -743,7 +743,9 @@
"create.schematicannon.status.schematicInvalid": "蓝图无效",
"create.schematicannon.status.schematicNotPlaced": "蓝图未部署",
"create.schematicannon.status.schematicExpired": "蓝图文件已过期",
"create.materialChecklist": "材料清单",
"create.gui.filter.deny_list": "黑名单",
"create.gui.filter.deny_list.description": "只通过不在黑名单中的物品,如果黑名单为空,所有物品都可以通过",
"create.gui.filter.allow_list": "白名单",

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B