diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 7a9a66314..8750189ea 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -367,17 +367,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 -c113d0a180880243538e9b1c3019c863df3fbdc1 assets/create/lang/en_ud.json -2fb3d9c9ba6abdecc765cb789ed248a3732d21b4 assets/create/lang/en_us.json -8cdaa5cf60560475055e46190616e0b215e8a899 assets/create/lang/unfinished/de_de.json -cb09edb58ba48c514a4a70ef9bb7117252b5eb2d assets/create/lang/unfinished/fr_fr.json -17856b4bdbc8fe08c342e876f9fd249ce80dbc2b assets/create/lang/unfinished/it_it.json -482f3d41c6531881c38e1b115a1b24f61de6aaef assets/create/lang/unfinished/ja_jp.json -66cc3a9966522f0699b1f3e06bf130326376a82d assets/create/lang/unfinished/ko_kr.json -4e66916c75d8e65dd3ff2c12b53e80d622bac4c0 assets/create/lang/unfinished/nl_nl.json -7b7e538539be7cb6adc7dd09c37ae7153c680210 assets/create/lang/unfinished/pt_br.json -89d5586e37d293fb2b565ff49aa5e20e82fe0b0e assets/create/lang/unfinished/ru_ru.json -6f9e1dcef331957aef3d8e01152ef736943e2586 assets/create/lang/unfinished/zh_cn.json +82524600ca83a766522129634a44b47a277a4b71 assets/create/lang/en_ud.json +c39a5082dd2b24a98e1f6c66884a855a72cd52f1 assets/create/lang/en_us.json +38515a29696ded8afad721e1d7e5825179ae358c assets/create/lang/unfinished/de_de.json +8376325bea8c0234b7634b6852b7016df9c8814f assets/create/lang/unfinished/fr_fr.json +ea8e85c8d7d5354429f420667537a7b62ab12a1c assets/create/lang/unfinished/it_it.json +12a7c0d56e705004deb23b2cc16eb84a419ce38b assets/create/lang/unfinished/ja_jp.json +6672691add00fdace20218ecbb6d6a46273aa765 assets/create/lang/unfinished/ko_kr.json +3e33fd417af5812b028834666de6983c78cbe05f assets/create/lang/unfinished/nl_nl.json +6f0a8d1ef696e514f40b3d5204d21e1391ed5686 assets/create/lang/unfinished/pt_br.json +f65718ac2d3d40a44f266fd7143e9a3b1067ffae assets/create/lang/unfinished/ru_ru.json +67e3f92bb97e5c441f8efe375a35662af0d805f4 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 @@ -1094,6 +1094,7 @@ d537fffaede521efa525fb2a7f9863fe6a80054e assets/create/models/item/birch_window_ 22632bd681c8a605f0845f7549770389a741156a assets/create/models/item/black_seat.json 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 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 @@ -1114,6 +1115,7 @@ afd697168c9786eb80e54eccdc6a23afa6c7fb0e assets/create/models/item/chiseled_gabb a47fbe5f2da79080d99ef0975bfa8da4d08f8be4 assets/create/models/item/chiseled_scoria.json 70232ce9b88119fb383717e2c1ad113f7aad6a99 assets/create/models/item/chiseled_weathered_limestone.json fe67c3f380d17735a9436a4579a8be1a02b8e4a0 assets/create/models/item/chute.json +6680a68526576ded5dac2aa3bc9fb9de3e744146 assets/create/models/item/cinder_flour.json b1531a7bd3f7f27b9587d13e818a93dc2d088bc8 assets/create/models/item/clockwork_bearing.json 0a2a0f0aafeab0088172f77afd40c1fa2cc1f2b8 assets/create/models/item/clutch.json dcb09deae110077bcddf090996b51cc66e9a7de3 assets/create/models/item/cogwheel.json @@ -1222,7 +1224,6 @@ f4727119b75ab632c3ad295be4d398b1919d782f assets/create/models/item/fluid_valve.j 8707332c0cb6ee123e7962d08536a60725c64ce8 assets/create/models/item/flywheel.json f2496d3b16e5b5415474bcfb7d6c6a6c3b28ed60 assets/create/models/item/framed_glass.json 1041d462c6e856f7f3f2365c299c0599703d1ed7 assets/create/models/item/framed_glass_pane.json -7039702b4b3564bf818e818398b5d03b39c74f3d assets/create/models/item/fuel_pellet.json 0bee2855dc9bad52e941153b87e9c35797c246ee assets/create/models/item/furnace_engine.json a703b16625ad9d3b9042b6b19fdb88407726898b assets/create/models/item/furnace_minecart_contraption.json 2c1608c114ccc285a84e936dc3f1233c535e1a26 assets/create/models/item/gabbro.json @@ -2489,8 +2490,7 @@ d9021504be855cd2d4d91503a82b84233052adb0 data/create/recipes/blasting/gold_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 -c3cfdc9552a23e4749c42e71fbddd153b76ca708 data/create/recipes/compacting/ice.json -5758a1804287c261e1c953bda599d8495ba7c40a data/create/recipes/compacting/temp_gabbro.json +370a536cc75b58cb0a07552665297669a763747a data/create/recipes/compacting/blaze_cake.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 @@ -2675,6 +2675,7 @@ e870d049abc5cd5f389f70414c67e76ddc14060d data/create/recipes/crushing/leather_ho d73a0ed13112e001dad61d6ea66fd729c86e7b62 data/create/recipes/crushing/nether_quartz_ore.json 2b9b8e1ab81f47c4f7fb79a007aef214af12a342 data/create/recipes/crushing/nether_wart_block_no_quark.json 70116a5a9d1f93ae377e1526ca99582190cf2e3e data/create/recipes/crushing/nether_wart_block_quark.json +0dfe5092af96fbaeddaace6d3b1c45fa6f4cf7fe data/create/recipes/crushing/netherrack.json 71397f0ae2e175181195b8b2894d108e0cdc3da7 data/create/recipes/crushing/obsidian.json 88d7ab3d6407010876e328f5f20a4ed9ddda7e3e data/create/recipes/crushing/prismarine_crystals.json 42299b3a0596c7743404496205854ac2324aedd7 data/create/recipes/crushing/redstone_ore.json @@ -2943,7 +2944,8 @@ e7bfaa806d57573d060fac0a5e7a84f345b8bb85 data/create/recipes/mixing/andesite_all 76939e4d3e5b615ae21d14c0ff7b917a622bcf80 data/create/recipes/mixing/chromatic_compound.json d9a3dff1288d675ab812eef1eb73cb27dcc71bd2 data/create/recipes/mixing/crushed_brass.json 00b165ea38d834c7955440e87062004a8182c3f8 data/create/recipes/mixing/gunpowder.json -35c4e8a765479861f307afb9ec650f912f92b998 data/create/recipes/mixing/temp_cobble.json +743c2d62c94a4989b88046c9cdf0fa024cd09fa8 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 diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index b38c1f753..7a9f23c32 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -375,11 +375,13 @@ "item.create.andesite_alloy": "\u028Eo\u05DF\u05DF\u2C6F \u01DD\u0287\u0131s\u01DDpu\u2C6F", "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.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", "item.create.brass_sheet": "\u0287\u01DD\u01DD\u0265S ss\u0250\u0279\u15FA", "item.create.chromatic_compound": "punod\u026Fo\u0186 \u0254\u0131\u0287\u0250\u026Fo\u0279\u0265\u0186", + "item.create.cinder_flour": "\u0279no\u05DF\u2132 \u0279\u01DDpu\u0131\u0186", "item.create.copper_ingot": "\u0287obuI \u0279\u01DDddo\u0186", "item.create.copper_nugget": "\u0287\u01DDbbnN \u0279\u01DDddo\u0186", "item.create.copper_sheet": "\u0287\u01DD\u01DD\u0265S \u0279\u01DDddo\u0186", @@ -396,7 +398,6 @@ "item.create.empty_schematic": "\u0254\u0131\u0287\u0250\u026F\u01DD\u0265\u0254S \u028E\u0287d\u026F\u018E", "item.create.extendo_grip": "d\u0131\u0279\u2141 opu\u01DD\u0287x\u018E", "item.create.filter": "\u0279\u01DD\u0287\u05DF\u0131\u2132", - "item.create.fuel_pellet": "\u0287\u01DD\u05DF\u05DF\u01DD\u0500 \u05DF\u01DDn\u2132", "item.create.furnace_minecart_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W \u01DD\u0254\u0250u\u0279n\u2132", "item.create.goggles": "s\u01DD\u05DFbbo\u2141 s,\u0279\u01DD\u01DDu\u0131bu\u018E", "item.create.golden_sheet": "\u0287\u01DD\u01DD\u0265S u\u01DDp\u05DFo\u2141", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 0530459bb..2fa1e2ca6 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -380,11 +380,13 @@ "item.create.andesite_alloy": "Andesite Alloy", "item.create.attribute_filter": "Attribute Filter", "item.create.belt_connector": "Mechanical Belt", + "item.create.blaze_cake": "Blaze Cake", "item.create.brass_hand": "Brass Hand", "item.create.brass_ingot": "Brass Ingot", "item.create.brass_nugget": "Brass Nugget", "item.create.brass_sheet": "Brass Sheet", "item.create.chromatic_compound": "Chromatic Compound", + "item.create.cinder_flour": "Cinder Flour", "item.create.copper_ingot": "Copper Ingot", "item.create.copper_nugget": "Copper Nugget", "item.create.copper_sheet": "Copper Sheet", @@ -401,7 +403,6 @@ "item.create.empty_schematic": "Empty Schematic", "item.create.extendo_grip": "Extendo Grip", "item.create.filter": "Filter", - "item.create.fuel_pellet": "Fuel Pellet", "item.create.furnace_minecart_contraption": "Furnace Minecart Contraption", "item.create.goggles": "Engineer's Goggles", "item.create.golden_sheet": "Golden Sheet", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index 28c49a9fc..b661efce5 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 858", + "_": "Missing Localizations: 859", "_": "->------------------------] Game Elements [------------------------<-", @@ -381,11 +381,13 @@ "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", "item.create.belt_connector": "Mechanischer Riemen", + "item.create.blaze_cake": "UNLOCALIZED: Blaze Cake", "item.create.brass_hand": "UNLOCALIZED: Brass Hand", "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", "item.create.brass_sheet": "UNLOCALIZED: Brass Sheet", "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", + "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "UNLOCALIZED: Copper Ingot", "item.create.copper_nugget": "UNLOCALIZED: Copper Nugget", "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", @@ -402,7 +404,6 @@ "item.create.empty_schematic": "Leerer Bauplan", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", "item.create.filter": "Filter", - "item.create.fuel_pellet": "UNLOCALIZED: Fuel Pellet", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "UNLOCALIZED: Engineer's Goggles", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index a1165d279..f4c6759f9 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 482", + "_": "Missing Localizations: 483", "_": "->------------------------] Game Elements [------------------------<-", @@ -381,11 +381,13 @@ "item.create.andesite_alloy": "Alliage d'andésite", "item.create.attribute_filter": "Filtre d'attribut", "item.create.belt_connector": "Tapis roulant", + "item.create.blaze_cake": "UNLOCALIZED: Blaze Cake", "item.create.brass_hand": "Main", "item.create.brass_ingot": "Lingot de laiton", "item.create.brass_nugget": "Pépite de laiton", "item.create.brass_sheet": "Plaques de laiton", "item.create.chromatic_compound": "Composé chromatique", + "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "Lingot de cuivre", "item.create.copper_nugget": "Pépite de cuivre", "item.create.copper_sheet": "Plaques de cuivre", @@ -402,7 +404,6 @@ "item.create.empty_schematic": "Schéma vide", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", "item.create.filter": "Filtre", - "item.create.fuel_pellet": "UNLOCALIZED: Fuel Pellet", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "Lunettes d'ingénieur", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index 46794ef16..fe0aaf916 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 466", + "_": "Missing Localizations: 467", "_": "->------------------------] Game Elements [------------------------<-", @@ -381,11 +381,13 @@ "item.create.andesite_alloy": "Lega di Andesite", "item.create.attribute_filter": "Filtro Attributi", "item.create.belt_connector": "Nastro Meccanico", + "item.create.blaze_cake": "UNLOCALIZED: Blaze Cake", "item.create.brass_hand": "Mano", "item.create.brass_ingot": "Lingotto di Ottone", "item.create.brass_nugget": "Pepita di Ottone", "item.create.brass_sheet": "Lamiera di Ottone", "item.create.chromatic_compound": "Composto Cromatico", + "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "Lingotto di Rame", "item.create.copper_nugget": "Pepita di Rame", "item.create.copper_sheet": "Lamiera di Rame", @@ -402,7 +404,6 @@ "item.create.empty_schematic": "Schematica Vuota", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", "item.create.filter": "Filtro", - "item.create.fuel_pellet": "UNLOCALIZED: Fuel Pellet", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "Occhiali da Ingegnere", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index 4dc3e22e7..9bd15ff78 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 461", + "_": "Missing Localizations: 462", "_": "->------------------------] Game Elements [------------------------<-", @@ -381,11 +381,13 @@ "item.create.andesite_alloy": "安山岩合金", "item.create.attribute_filter": "属性フィルター", "item.create.belt_connector": "メカニカルベルト", + "item.create.blaze_cake": "UNLOCALIZED: Blaze Cake", "item.create.brass_hand": "手", "item.create.brass_ingot": "真鍮インゴット", "item.create.brass_nugget": "真鍮ナゲット", "item.create.brass_sheet": "真鍮シート", "item.create.chromatic_compound": "色彩の化合物", + "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "銅インゴット", "item.create.copper_nugget": "銅塊", "item.create.copper_sheet": "銅板", @@ -402,7 +404,6 @@ "item.create.empty_schematic": "空の概略図", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", "item.create.filter": "フィルター", - "item.create.fuel_pellet": "UNLOCALIZED: Fuel Pellet", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "エンジニアのゴーグル", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index a803b5112..6974626a3 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 466", + "_": "Missing Localizations: 467", "_": "->------------------------] Game Elements [------------------------<-", @@ -381,11 +381,13 @@ "item.create.andesite_alloy": "안산암 합금", "item.create.attribute_filter": "속성 필터 틀", "item.create.belt_connector": "기계식 벨트", + "item.create.blaze_cake": "UNLOCALIZED: Blaze Cake", "item.create.brass_hand": "황동 손", "item.create.brass_ingot": "황동 주괴", "item.create.brass_nugget": "황동 조각", "item.create.brass_sheet": "황동 판", "item.create.chromatic_compound": "색채 혼합물", + "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "구리 주괴", "item.create.copper_nugget": "구리 조각", "item.create.copper_sheet": "구리 판", @@ -402,7 +404,6 @@ "item.create.empty_schematic": "빈 청사진", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", "item.create.filter": "필터 틀", - "item.create.fuel_pellet": "UNLOCALIZED: Fuel Pellet", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "엔지니어의 고글", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 6fba5b98f..f6c0015f9 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 796", + "_": "Missing Localizations: 797", "_": "->------------------------] Game Elements [------------------------<-", @@ -381,11 +381,13 @@ "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", "item.create.belt_connector": "Mechanische Transportband", + "item.create.blaze_cake": "UNLOCALIZED: Blaze Cake", "item.create.brass_hand": "UNLOCALIZED: Brass Hand", "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", "item.create.brass_nugget": "Brons klompje", "item.create.brass_sheet": "Brons Platen", "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", + "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "Koperstaaf", "item.create.copper_nugget": "Koper klompje", "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", @@ -402,7 +404,6 @@ "item.create.empty_schematic": "Lege bouwtekening", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", "item.create.filter": "Filter", - "item.create.fuel_pellet": "UNLOCALIZED: Fuel Pellet", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "Ingenieur's Bril", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index e9d51f5ba..9a40bd444 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 865", + "_": "Missing Localizations: 866", "_": "->------------------------] Game Elements [------------------------<-", @@ -381,11 +381,13 @@ "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", "item.create.belt_connector": "Esteira Mecânica", + "item.create.blaze_cake": "UNLOCALIZED: Blaze Cake", "item.create.brass_hand": "UNLOCALIZED: Brass Hand", "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", "item.create.brass_sheet": "UNLOCALIZED: Brass Sheet", "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", + "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "UNLOCALIZED: Copper Ingot", "item.create.copper_nugget": "UNLOCALIZED: Copper Nugget", "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", @@ -402,7 +404,6 @@ "item.create.empty_schematic": "Esquema vazio", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", "item.create.filter": "Filtro", - "item.create.fuel_pellet": "UNLOCALIZED: Fuel Pellet", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "UNLOCALIZED: Engineer's Goggles", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index 4e0a2193f..87490ca75 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 859", + "_": "Missing Localizations: 860", "_": "->------------------------] Game Elements [------------------------<-", @@ -381,11 +381,13 @@ "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", "item.create.belt_connector": "Механическая лента", + "item.create.blaze_cake": "UNLOCALIZED: Blaze Cake", "item.create.brass_hand": "UNLOCALIZED: Brass Hand", "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", "item.create.brass_sheet": "UNLOCALIZED: Brass Sheet", "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", + "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "UNLOCALIZED: Copper Ingot", "item.create.copper_nugget": "UNLOCALIZED: Copper Nugget", "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", @@ -402,7 +404,6 @@ "item.create.empty_schematic": "Пустая схема", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", "item.create.filter": "Фильтр", - "item.create.fuel_pellet": "UNLOCALIZED: Fuel Pellet", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "UNLOCALIZED: Engineer's Goggles", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 242d975d4..18fc9dbaa 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 146", + "_": "Missing Localizations: 147", "_": "->------------------------] Game Elements [------------------------<-", @@ -381,11 +381,13 @@ "item.create.andesite_alloy": "安山合金", "item.create.attribute_filter": "属性过滤器", "item.create.belt_connector": "传送带", + "item.create.blaze_cake": "UNLOCALIZED: Blaze Cake", "item.create.brass_hand": "黄铜手部零件", "item.create.brass_ingot": "黄铜锭", "item.create.brass_nugget": "黄铜粒", "item.create.brass_sheet": "黄铜板", "item.create.chromatic_compound": "异彩化合物", + "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "铜锭", "item.create.copper_nugget": "铜粒", "item.create.copper_sheet": "铜板", @@ -402,7 +404,6 @@ "item.create.empty_schematic": "空白蓝图", "item.create.extendo_grip": "伸缩机械手", "item.create.filter": "过滤器", - "item.create.fuel_pellet": "UNLOCALIZED: Fuel Pellet", "item.create.furnace_minecart_contraption": "装配过的动力矿车", "item.create.goggles": "工程师护目镜", "item.create.golden_sheet": "金板", diff --git a/src/generated/resources/assets/create/models/item/fuel_pellet.json b/src/generated/resources/assets/create/models/item/blaze_cake.json similarity index 61% rename from src/generated/resources/assets/create/models/item/fuel_pellet.json rename to src/generated/resources/assets/create/models/item/blaze_cake.json index 0e0e48aeb..45905f613 100644 --- a/src/generated/resources/assets/create/models/item/fuel_pellet.json +++ b/src/generated/resources/assets/create/models/item/blaze_cake.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "create:item/fuel_pellet" + "layer0": "create:item/blaze_cake" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cinder_flour.json b/src/generated/resources/assets/create/models/item/cinder_flour.json new file mode 100644 index 000000000..1b1110255 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/cinder_flour.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/cinder_flour" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/compacting/blaze_cake.json b/src/generated/resources/data/create/recipes/compacting/blaze_cake.json new file mode 100644 index 000000000..b752a4a3a --- /dev/null +++ b/src/generated/resources/data/create/recipes/compacting/blaze_cake.json @@ -0,0 +1,24 @@ +{ + "type": "create:compacting", + "ingredients": [ + { + "tag": "forge:eggs" + }, + { + "item": "minecraft:sugar" + }, + { + "item": "create:cinder_flour" + }, + { + "fluidTag": "minecraft:lava", + "amount": 125 + } + ], + "results": [ + { + "item": "create:blaze_cake", + "count": 1 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/compacting/ice.json b/src/generated/resources/data/create/recipes/compacting/ice.json deleted file mode 100644 index 98ae992e9..000000000 --- a/src/generated/resources/data/create/recipes/compacting/ice.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:compacting", - "ingredients": [ - { - "item": "minecraft:ice" - } - ], - "results": [ - { - "fluid": "minecraft:water", - "amount": 250 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/compacting/temp_gabbro.json b/src/generated/resources/data/create/recipes/compacting/temp_gabbro.json deleted file mode 100644 index c5474f6f5..000000000 --- a/src/generated/resources/data/create/recipes/compacting/temp_gabbro.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "create:compacting", - "ingredients": [ - { - "item": "minecraft:cobblestone" - }, - { - "fluidTag": "minecraft:lava", - "amount": 250 - } - ], - "results": [ - { - "item": "create:gabbro", - "count": 1 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/netherrack.json b/src/generated/resources/data/create/recipes/crushing/netherrack.json new file mode 100644 index 000000000..e819a816d --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/netherrack.json @@ -0,0 +1,20 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "minecraft:netherrack" + } + ], + "results": [ + { + "item": "create:cinder_flour", + "count": 1 + }, + { + "item": "create:cinder_flour", + "count": 1, + "chance": 0.5 + } + ], + "processingTime": 250 +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mixing/temp_cobble.json b/src/generated/resources/data/create/recipes/mixing/temp_cobble.json index f20d0e6cf..897f6d99c 100644 --- a/src/generated/resources/data/create/recipes/mixing/temp_cobble.json +++ b/src/generated/resources/data/create/recipes/mixing/temp_cobble.json @@ -7,7 +7,7 @@ }, { "fluidTag": "minecraft:lava", - "amount": 250 + "amount": 25 } ], "results": [ diff --git a/src/generated/resources/data/create/recipes/mixing/temp_lava.json b/src/generated/resources/data/create/recipes/mixing/temp_lava.json new file mode 100644 index 000000000..efee970a9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/mixing/temp_lava.json @@ -0,0 +1,15 @@ +{ + "type": "create:mixing", + "ingredients": [ + { + "tag": "forge:cobblestone" + } + ], + "results": [ + { + "fluid": "minecraft:lava", + "amount": 25 + } + ], + "heatRequirement": "superheated" +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index 610db4685..d62b63c32 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -82,12 +82,15 @@ public class AllItems { ZINC_INGOT = taggedIngredient("zinc_ingot", forgeItemTag("ingots/zinc"), CREATE_INGOTS.tag), BRASS_INGOT = taggedIngredient("brass_ingot", forgeItemTag("ingots/brass"), CREATE_INGOTS.tag), - WHEAT_FLOUR = ingredient("wheat_flour"), DOUGH = ingredient("dough"), + WHEAT_FLOUR = ingredient("wheat_flour"), DOUGH = ingredient("dough"), CINDER_FLOUR = ingredient("cinder_flour"), POWDERED_OBSIDIAN = ingredient("powdered_obsidian"), ROSE_QUARTZ = ingredient("rose_quartz"), POLISHED_ROSE_QUARTZ = ingredient("polished_rose_quartz"), PROPELLER = ingredient("propeller"), WHISK = ingredient("whisk"), BRASS_HAND = ingredient("brass_hand"), CRAFTER_SLOT_COVER = ingredient("crafter_slot_cover"); + public static final ItemEntry BLAZE_CAKE = REGISTRATE.item("blaze_cake", CombustibleItem::new) + .register(); + public static final ItemEntry CHROMATIC_COMPOUND = REGISTRATE.item("chromatic_compound", ChromaticCompoundItem::new) .properties(p -> p.rarity(Rarity.UNCOMMON)) @@ -187,10 +190,6 @@ public class AllItems { REGISTRATE.item("tree_fertilizer", TreeFertilizerItem::new) .register(); - public static final ItemEntry FUEL_PELLET = REGISTRATE.item("fuel_pellet", CombustibleItem::new) - // .onRegister(item -> item.setBurnTime(2048)) - .register(); - public static final ItemEntry BLOCKZAPPER = REGISTRATE.item("handheld_blockzapper", BlockzapperItem::new) .transform(CreateRegistrate.customRenderedItem(() -> BlockzapperModel::new)) diff --git a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java index d9055bdbd..a9dc134a7 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -29,11 +29,14 @@ import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateSc import com.simibubi.create.content.schematics.block.SchematicannonScreen; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.CRecipes; +import com.simibubi.create.foundation.fluid.FluidIngredient; import com.simibubi.create.foundation.utility.Lang; import mezz.jei.api.IModPlugin; import mezz.jei.api.JeiPlugin; +import mezz.jei.api.ingredients.IIngredientType; import mezz.jei.api.registration.IGuiHandlerRegistration; +import mezz.jei.api.registration.IModIngredientRegistration; import mezz.jei.api.registration.IRecipeCatalystRegistration; import mezz.jei.api.registration.IRecipeCategoryRegistration; import mezz.jei.api.registration.IRecipeRegistration; @@ -53,6 +56,15 @@ import net.minecraft.util.text.TextFormatting; public class CreateJEI implements IModPlugin { private static ResourceLocation ID = new ResourceLocation(Create.ID, "jei_plugin"); + + public static final IIngredientType FLUIDS = new IIngredientType() { + + @Override + public Class getIngredientClass() { + return FluidIngredient.class; + } + }; + private MillingCategory millingCategory; private CrushingCategory crushingCategory; private SplashingCategory splashingCategory; diff --git a/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java index 73805cf3d..07ea90b3e 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java @@ -2,12 +2,14 @@ package com.simibubi.create.compat.jei.category; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import com.mojang.blaze3d.matrix.MatrixStack; import org.apache.commons.lang3.mutable.MutableInt; import com.simibubi.create.content.contraptions.processing.BasinRecipe; import com.simibubi.create.content.contraptions.processing.HeatCondition; +import com.simibubi.create.foundation.fluid.FluidIngredient; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.utility.Pair; @@ -15,11 +17,13 @@ import com.simibubi.create.foundation.utility.Pair; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.ingredient.IGuiFluidStackGroup; import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; import mezz.jei.api.ingredients.IIngredients; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.NonNullList; +import net.minecraftforge.fluids.FluidStack; public class BasinCategory extends CreateRecipeCategory { @@ -35,24 +39,44 @@ public class BasinCategory extends CreateRecipeCategory { @Override public void setIngredients(BasinRecipe recipe, IIngredients ingredients) { ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setOutput(VanillaTypes.ITEM, recipe.getRecipeOutput()); + ingredients.setInputLists(VanillaTypes.FLUID, recipe.getFluidIngredients() + .stream() + .map(FluidIngredient::getMatchingFluidStacks) + .collect(Collectors.toList())); + if (!recipe.getRollableResults() + .isEmpty()) + ingredients.setOutput(VanillaTypes.ITEM, recipe.getRecipeOutput()); + if (!recipe.getFluidResults() + .isEmpty()) + ingredients.setOutputs(VanillaTypes.FLUID, recipe.getFluidResults()); } @Override - public void setRecipe(IRecipeLayout recipeLayout, BasinRecipe recipe, IIngredients ingredients) { + public void setRecipe(IRecipeLayout recipeLayout, BasinRecipe recipe, IIngredients iingredients) { IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - NonNullList recipeIngredients = recipe.getIngredients(); - List> actualIngredients = ItemHelper.condenseIngredients(recipeIngredients); + IGuiFluidStackGroup fluidStacks = recipeLayout.getFluidStacks(); - int size = actualIngredients.size(); + ItemStack itemOutput = recipe.getRollableResultsAsItemStacks() + .isEmpty() ? ItemStack.EMPTY + : recipe.getRollableResultsAsItemStacks() + .get(0); + FluidStack fluidOutput = recipe.getFluidResults() + .isEmpty() ? FluidStack.EMPTY + : recipe.getFluidResults() + .get(0); + + NonNullList fluidIngredients = recipe.getFluidIngredients(); + List> ingredients = ItemHelper.condenseIngredients(recipe.getIngredients()); + + int size = ingredients.size() + fluidIngredients.size(); int xOffset = size < 3 ? (3 - size) * 19 / 2 : 0; int yOffset = recipe.getRequiredHeat() != HeatCondition.NONE ? 30 : 10; int i; - for (i = 0; i < actualIngredients.size(); i++) { + for (i = 0; i < ingredients.size(); i++) { itemStacks.init(i, true, 16 + xOffset + (i % 3) * 19, 50 - (i / 3) * 19 + yOffset); List stacks = new ArrayList<>(); - Pair pair = actualIngredients.get(i); + Pair pair = ingredients.get(i); Ingredient ingredient = pair.getFirst(); MutableInt amount = pair.getSecond(); @@ -65,16 +89,33 @@ public class BasinCategory extends CreateRecipeCategory { itemStacks.set(i, stacks); } - itemStacks.init(i, false, 141, 50 + yOffset); - itemStacks.set(i, recipe.getRecipeOutput() - .getStack()); + int j; + for (j = 0; j < fluidIngredients.size(); j++) { + int i2 = i + j; + fluidStacks.init(j, true, 17 + xOffset + (i2 % 3) * 19, 51 - (i2 / 3) * 19 + yOffset); + List stacks = fluidIngredients.get(j) + .getMatchingFluidStacks(); + fluidStacks.set(j, stacks); + } + + if (!itemOutput.isEmpty()) { + itemStacks.init(i, false, 141, 50 + yOffset); + itemStacks.set(i, recipe.getRecipeOutput() + .getStack()); + yOffset -= 19; + } + + if (!fluidOutput.isEmpty()) { + fluidStacks.init(j, false, 142, 51 + yOffset); + fluidStacks.set(j, fluidOutput); + } } @Override public void draw(BasinRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { List> actualIngredients = ItemHelper.condenseIngredients(recipe.getIngredients()); - int size = actualIngredients.size(); + int size = actualIngredients.size() + recipe.getFluidIngredients().size(); int xOffset = size < 3 ? (3 - size) * 19 / 2 : 0; HeatCondition requiredHeat = recipe.getRequiredHeat(); int yOffset = requiredHeat != HeatCondition.NONE ? 30 : 10; diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRecipe.java index 6fc0a451d..d258d6adc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRecipe.java @@ -51,7 +51,9 @@ public class BasinRecipe extends ProcessingRecipe { if (availableItems == null || availableFluids == null) return false; - HeatLevel heat = basin.getHeatLevel(); + HeatLevel heat = BasinTileEntity.getHeatLevelOf(basin.getWorld() + .getBlockState(basin.getPos() + .down(1))); if (isBasinRecipe && !((BasinRecipe) recipe).getRequiredHeat() .testBlazeBurner(heat)) return false; @@ -148,16 +150,16 @@ public class BasinRecipe extends ProcessingRecipe { * For JEI purposes only */ public boolean convertedRecipe; - + public static BasinRecipe convert(IRecipe recipe) { - BasinRecipe basinRecipe = new ProcessingRecipeBuilder<>(BasinRecipe::new, recipe.getId()) - .withItemIngredients(recipe.getIngredients()) - .withSingleItemOutput(recipe.getRecipeOutput()) - .build(); + BasinRecipe basinRecipe = + new ProcessingRecipeBuilder<>(BasinRecipe::new, recipe.getId()).withItemIngredients(recipe.getIngredients()) + .withSingleItemOutput(recipe.getRecipeOutput()) + .build(); basinRecipe.convertedRecipe = true; return basinRecipe; } - + protected BasinRecipe(AllRecipeTypes type, ProcessingRecipeParams params) { super(type, params); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java index 3948d220e..0ef2a3985 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java @@ -33,7 +33,7 @@ public class BasinRenderer extends SmartTileEntityRenderer { int light, int overlay) { super.renderSafe(basin, partialTicks, ms, buffer, light, overlay); - float fluidSurface = renderFluids(basin, partialTicks, ms, buffer, light, overlay); + renderFluids(basin, partialTicks, ms, buffer, light, overlay); ms.push(); BlockPos pos = basin.getPos(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java index 983745e54..6a4995529 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java @@ -27,8 +27,8 @@ import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3d; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.vector.Vector3d; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.capabilities.Capability; @@ -144,7 +144,8 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt BlockPos toUpdate = pos.up() .offset(offset); BlockState stateToUpdate = world.getBlockState(toUpdate); - if (stateToUpdate.getBlock() instanceof BasinBlock && stateToUpdate.get(BasinBlock.FACING) == offset.getOpposite()) { + if (stateToUpdate.getBlock() instanceof BasinBlock + && stateToUpdate.get(BasinBlock.FACING) == offset.getOpposite()) { TileEntity te = world.getTileEntity(toUpdate); if (te instanceof BasinTileEntity) ((BasinTileEntity) te).contentsChanged = true; @@ -256,8 +257,7 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt outputInventory.deserializeNBT(compound.getCompound("OutputItems")); } - public HeatLevel getHeatLevel() { - BlockState state = world.getBlockState(pos.down(1)); + public static HeatLevel getHeatLevelOf(BlockState state) { if (BlockHelper.hasBlockStateProperty(state, BlazeBurnerBlock.HEAT_LEVEL)) return state.get(BlazeBurnerBlock.HEAT_LEVEL); return AllTags.AllBlockTags.FAN_HEATERS.matches(state) ? HeatLevel.SMOULDERING : HeatLevel.NONE; diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java index ebc38615a..f6e076cd5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java @@ -7,6 +7,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.processing.BasinTileEntity; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.utility.Lang; @@ -60,6 +61,18 @@ public class BlazeBurnerBlock extends Block implements ITE tileEntityTypeIn) { super(tileEntityTypeIn); activeFuel = FuelType.NONE; remainingBurnTime = 0; - setLazyTickRate(40); + headAngle = LerpedFloat.angular(); } @Override @@ -61,93 +51,38 @@ public class BlazeBurnerTileEntity extends SmartTileEntity { super.tick(); if (world.isRemote) { tickRotation(); - } - - spawnParticles(getHeatLevel(), 1); - - if (remainingBurnTime <= 0) { + spawnParticles(getHeatLevelFromBlock(), 1); return; } - remainingBurnTime--; - if (remainingBurnTime == 0) - if (activeFuel == FuelType.SPECIAL) { - activeFuel = FuelType.NORMAL; - remainingBurnTime = maxHeatCapacity / 2; - updateHeatLevel(); - } else { - activeFuel = FuelType.NONE; - updateHeatLevel(); - } - markDirty(); + + if (remainingBurnTime > 0) + remainingBurnTime--; + + if (activeFuel == FuelType.NORMAL) + updateBlockState(); + if (remainingBurnTime > 0) + return; + + if (activeFuel == FuelType.SPECIAL) { + activeFuel = FuelType.NORMAL; + remainingBurnTime = maxHeatCapacity / 2; + } else + activeFuel = FuelType.NONE; + updateBlockState(); + notifyUpdate(); } - - private static final float MAX_ROT_SPEED = 5; - private static final float ROT_DAMPING = 15; - + private void tickRotation() { ClientPlayerEntity player = Minecraft.getInstance().player; - Angle target; - if (player == null) { - target = new Angle(360, 0); - } else { + float target = 0; + if (player != null) { double dx = player.getX() - (getPos().getX() + 0.5); double dz = player.getZ() - (getPos().getZ() + 0.5); - target = new Angle(360, (float) (MathHelper.atan2(dz, dx) * 180.0 / Math.PI + 90)); + target = AngleHelper.deg(-MathHelper.atan2(dz, dx)) - 90; } - - Angle current = new Angle(360, rot); - float diff = new Angle(180, current.get() - target.get()).get(); - if (diff > 0.1 || diff < -0.1) { - // Inverse function https://www.desmos.com/calculator/kiaberb6sf - speed = MAX_ROT_SPEED + (-MAX_ROT_SPEED / ((Math.abs(diff) / ROT_DAMPING) + 1)); - if (diff > 0) { - current.add(-Math.min(diff, speed)); - speed = Math.min(diff, speed); - } else { - current.add(Math.min(-diff, speed)); - speed = Math.min(-diff, -speed); - } - } else { - speed = 0; - } - - rot = current.get(); - } - - // From EnderIO with <3 - private static class Angle { - private final float offset; - private float a; - - Angle(float offset, float a) { - this.offset = offset; - set(a); - } - - void set(float a) { - while (a >= offset) { - a -= 360; - } - while (a < (offset - 360)) { - a += 360; - } - this.a = a; - } - - void add(float b) { - set(a + b); - } - - float get() { - return a; - } - } - - @Override - public void lazyTick() { - super.lazyTick(); - //using lazy ticks to transition between kindled and fading, this doesn't need to happen instantly at the threshold - updateHeatLevel(); + target = headAngle.getValue() + AngleHelper.getShortestAngleDiff(headAngle.getValue(), target); + headAngle.chase(target, .25f, Chaser.exp(5)); + headAngle.tickChaser(); } @Override @@ -168,148 +103,125 @@ public class BlazeBurnerTileEntity extends SmartTileEntity { } /** - * @return true if the heater updated its burn time and a item should be consumed + * @return true if the heater updated its burn time and a item should be + * consumed */ boolean tryUpdateFuel(ItemStack itemStack, boolean forceOverflow, boolean simulate) { FuelType newFuel = FuelType.NONE; - int burnTick = ForgeHooks.getBurnTime(itemStack); - if (burnTick > 0) + int newBurnTime = ForgeHooks.getBurnTime(itemStack); + + if (newBurnTime > 0) newFuel = FuelType.NORMAL; - if (itemStack.getItem() == AllItems.FUEL_PELLET.get()) { - burnTick = 1000; + if (AllItems.BLAZE_CAKE.isIn(itemStack)) { + newBurnTime = 1000; newFuel = FuelType.SPECIAL; } - if (newFuel == FuelType.NONE || newFuel.ordinal() < activeFuel.ordinal()) + if (newFuel == FuelType.NONE) + return false; + if (newFuel.ordinal() < activeFuel.ordinal()) return false; if (newFuel == activeFuel) { - if (remainingBurnTime + burnTick > maxHeatCapacity && !forceOverflow) + if (remainingBurnTime + newBurnTime > maxHeatCapacity && !forceOverflow) return false; - if (simulate) - return true; - remainingBurnTime = MathHelper.clamp(remainingBurnTime + burnTick, 0, maxHeatCapacity); - } else { - if (simulate) - return true; - activeFuel = newFuel; - remainingBurnTime = burnTick; + newBurnTime = MathHelper.clamp(remainingBurnTime + newBurnTime, 0, maxHeatCapacity); } - updateHeatLevel(); - HeatLevel level = getHeatLevel(); - for (int i = 0; i < 20; i++) - spawnParticles(level, 1 + (.25 * (i / 4))); + if (simulate) + return true; + + activeFuel = newFuel; + remainingBurnTime = newBurnTime; + + if (world.isRemote) { + HeatLevel level = getHeatLevelFromFuelType(newFuel); + for (int i = 0; i < 20; i++) + spawnParticles(level, 1 + (.25 * (i / 4))); + return true; + } + + updateBlockState(); return true; } - public BlazeBurnerBlock.HeatLevel getHeatLevel() { + public BlazeBurnerBlock.HeatLevel getHeatLevelFromBlock() { return BlazeBurnerBlock.getHeatLevelOf(getBlockState()); } - private void updateHeatLevel() { - switch (activeFuel) { - case SPECIAL: - BlazeBurnerBlock.setBlazeLevel(world, pos, BlazeBurnerBlock.HeatLevel.SEETHING); - break; - case NORMAL: - boolean lowPercent = (double) remainingBurnTime / maxHeatCapacity < 0.1; - BlazeBurnerBlock.setBlazeLevel(world, pos, lowPercent ? BlazeBurnerBlock.HeatLevel.FADING : BlazeBurnerBlock.HeatLevel.KINDLED); - break; - case NONE: - BlazeBurnerBlock.setBlazeLevel(world, pos, BlazeBurnerBlock.HeatLevel.SMOULDERING); - } + public void updateBlockState() { + HeatLevel inBlockState = getHeatLevelFromBlock(); + HeatLevel inTE = getHeatLevelFromFuelType(activeFuel); + if (inBlockState == inTE) + return; + world.setBlockState(pos, getBlockState().with(BlazeBurnerBlock.HEAT_LEVEL, inTE)); + notifyUpdate(); } - private void spawnParticles(BlazeBurnerBlock.HeatLevel heatLevel, double burstMult) { + protected HeatLevel getHeatLevelFromFuelType(FuelType fuel) { + HeatLevel level = HeatLevel.SMOULDERING; + switch (activeFuel) { + case SPECIAL: + level = HeatLevel.SEETHING; + break; + case NORMAL: + boolean lowPercent = (double) remainingBurnTime / maxHeatCapacity < 0.1; + level = lowPercent ? HeatLevel.FADING : HeatLevel.KINDLED; + break; + default: + case NONE: + break; + } + return level; + } + + private void spawnParticles(HeatLevel heatLevel, double burstMult) { if (world == null) return; - if (heatLevel == BlazeBurnerBlock.HeatLevel.NONE) return; Random r = world.getRandom(); - if (heatLevel == BlazeBurnerBlock.HeatLevel.SMOULDERING) { + switch (heatLevel) { + case SMOULDERING: if (r.nextDouble() > 0.25) return; - - Vector3d color = randomColor(heatLevel); - spawnParticle(new CubeParticleData((float) color.x,(float) color.y,(float) color.z, 0.03F, 15, false), 0.015 * burstMult, 0.1 * burstMult); - } else if (heatLevel == BlazeBurnerBlock.HeatLevel.FADING) { + spawnParticle(heatLevel, 0.03F, 15, false, 0.015 * burstMult, 0.1 * burstMult); + break; + case FADING: if (r.nextDouble() > 0.5) return; - - Vector3d color = randomColor(heatLevel); - spawnParticle(new CubeParticleData((float) color.x,(float) color.y,(float) color.z, 0.035F, 18, false), 0.03 * burstMult, 0.15 * burstMult); - } else if (heatLevel == BlazeBurnerBlock.HeatLevel.KINDLED) { - Vector3d color = randomColor(heatLevel); - spawnParticle(new CubeParticleData((float) color.x,(float) color.y,(float) color.z, 0.04F, 35, true), 0.05 * burstMult, 0.2 * burstMult); - }else if (heatLevel == BlazeBurnerBlock.HeatLevel.SEETHING) { + spawnParticle(heatLevel, 0.035F, 18, false, 0.03 * burstMult, 0.15 * burstMult); + break; + case KINDLED: + spawnParticle(heatLevel, 0.04F, 35, true, 0.05 * burstMult, 0.2 * burstMult); + break; + case SEETHING: for (int i = 0; i < 2; i++) { if (r.nextDouble() > 0.6) return; - Vector3d color = randomColor(heatLevel); - spawnParticle(new CubeParticleData((float) color.x,(float) color.y,(float) color.z, 0.045F, 35, true), 0.06 * burstMult, 0.22 * burstMult); + spawnParticle(heatLevel, 0.045F, 35, true, 0.06 * burstMult, 0.22 * burstMult); } + break; + default: + break; } } - private void spawnParticle(IParticleData particleData, double speed, double spread) { + private void spawnParticle(HeatLevel heatLevel, float scale, int avgAge, boolean hot, double speed, double spread) { Random random = world.getRandom(); - + Vector3d color = randomColor(heatLevel); world.addOptionalParticle( - particleData, - (double) pos.getX() + 0.5D + (random.nextDouble() * 2.0 - 1D) * spread, - (double) pos.getY() + 0.6D + (random.nextDouble() / 4.0), - (double) pos.getZ() + 0.5D + (random.nextDouble() * 2.0 - 1D) * spread, - 0.0D, - speed, - 0.0D); + new CubeParticleData((float) color.x, (float) color.y, (float) color.z, scale, avgAge, hot), + (double) pos.getX() + 0.5D + (random.nextDouble() * 2.0 - 1D) * spread, + (double) pos.getY() + 0.6D + (random.nextDouble() / 4.0), + (double) pos.getZ() + 0.5D + (random.nextDouble() * 2.0 - 1D) * spread, 0.0D, speed, 0.0D); } private static Vector3d randomColor(BlazeBurnerBlock.HeatLevel heatLevel) { if (heatLevel == BlazeBurnerBlock.HeatLevel.NONE) - return new Vector3d(0,0,0); - - return ColorHelper.getRGB(heatParticleColors[heatLevel.ordinal()-1][(int) (Math.random()*4)]); + return new Vector3d(0, 0, 0); + return ColorHelper.getRGB(heatParticleColors[heatLevel.ordinal() - 1][(int) (Math.random() * 4)]); } - @SubscribeEvent - public static void eggsGetEaten(ProjectileImpactEvent.Throwable event) { - if (!(event.getThrowable() instanceof EggEntity)) - return; - - if (event.getRayTraceResult().getType() != RayTraceResult.Type.BLOCK) - return; - - TileEntity tile = event.getThrowable().world.getTileEntity(new BlockPos(event.getRayTraceResult().getHitVec())); - if (!(tile instanceof BlazeBurnerTileEntity)) { - return; - } - - event.setCanceled(true); - event.getThrowable().setMotion(Vector3d.ZERO); - event.getThrowable().remove(); - - BlazeBurnerTileEntity heater = (BlazeBurnerTileEntity) tile; - if (heater.activeFuel != FuelType.SPECIAL) { - heater.activeFuel = FuelType.NORMAL; - heater.remainingBurnTime = MathHelper.clamp(heater.remainingBurnTime + 80, 0, maxHeatCapacity); - heater.markDirty(); - } - - World world = event.getThrowable().world; - if (world.isRemote) - return; - - world.playSound(null, heater.getPos(), AllSoundEvents.BLAZE_MUNCH.get(), SoundCategory.BLOCKS, .5F, 1F); - - - } - - private enum FuelType { - NONE, - NORMAL, - SPECIAL - } } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CompactingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CompactingRecipeGen.java index 97e135718..eacaed7c8 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CompactingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CompactingRecipeGen.java @@ -1,26 +1,24 @@ 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.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 - - TEMPGABBRO = create("temp_gabbro", b -> b - .require(Items.COBBLESTONE) - .require(FluidTags.LAVA, 250) - .output(AllPaletteBlocks.GABBRO.get(), 1)), - ICE = create("ice", b -> b - .require(Items.ICE) - .output(Fluids.WATER, 250)) - + 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)) + ; public CompactingRecipeGen(DataGenerator p_i48262_1_) { diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java index ef148afa9..8a62ab387 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java @@ -125,7 +125,11 @@ public class CrushingRecipeGen extends ProcessingRecipeGen { SAND = create(() -> Blocks.SAND, b -> b.duration(150) .output(AllPaletteBlocks.LIMESAND.get()) .output(.5f, AllPaletteBlocks.LIMESAND.get()) - .output(.05f, Items.BONE_MEAL)) + .output(.05f, Items.BONE_MEAL)), + + NETHERRACK = create(() -> Blocks.NETHERRACK, b -> b.duration(250) + .output(AllItems.CINDER_FLOUR.get()) + .output(.5f, AllItems.CINDER_FLOUR.get())) ; diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java index 31369b8b9..4b0e3a7de 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java @@ -7,6 +7,7 @@ import com.simibubi.create.content.contraptions.processing.HeatCondition; 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.minecraft.tags.ItemTags; @@ -16,15 +17,18 @@ public class MixingRecipeGen extends ProcessingRecipeGen { GeneratedRecipe - TEMPCOBBLE = create("temp_cobble", b -> b - .require(FluidTags.WATER, 250) - .require(FluidTags.LAVA, 250) + TEMPCOBBLE = create("temp_cobble", b -> b.require(FluidTags.WATER, 250) + .require(FluidTags.LAVA, 25) .output(Blocks.COBBLESTONE, 1)), - - BRASS_INGOT = create("brass_ingot", b -> b.require(I.copper()) - .require(I.zinc()) - .output(AllItems.BRASS_INGOT.get(), 2) - .requiresHeat(HeatCondition.HEATED)), + + TEMP_LAVA = create("temp_lava", b -> b.require(Tags.Items.COBBLESTONE) + .output(Fluids.LAVA, 25) + .requiresHeat(HeatCondition.SUPERHEATED)), + + BRASS_INGOT = create("brass_ingot", b -> b.require(I.copper()) + .require(I.zinc()) + .output(AllItems.BRASS_INGOT.get(), 2) + .requiresHeat(HeatCondition.HEATED)), CRUSHED_BRASS = create("crushed_brass", b -> b.require(AllItems.CRUSHED_COPPER.get()) .require(AllItems.CRUSHED_ZINC.get()) diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java index 97c3525dd..ff7aa4cb4 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java @@ -1,11 +1,14 @@ package com.simibubi.create.foundation.fluid; +import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.function.Predicate; +import java.util.stream.Collectors; import javax.annotation.Nullable; +import com.google.common.collect.ImmutableList; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -25,6 +28,8 @@ public abstract class FluidIngredient implements Predicate { public static final FluidIngredient EMPTY = new FluidStackIngredient(); + public List matchingFluidStacks; + public static FluidIngredient fromTag(ITag.INamedTag tag, int amount) { FluidTagIngredient ingredient = new FluidTagIngredient(); ingredient.tag = tag; @@ -51,10 +56,18 @@ public abstract class FluidIngredient implements Predicate { protected abstract void writeInternal(JsonObject json); + protected abstract List determineMatchingFluidStacks(); + public int getRequiredAmount() { return amountRequired; } + public List getMatchingFluidStacks() { + if (matchingFluidStacks != null) + return matchingFluidStacks; + return matchingFluidStacks = determineMatchingFluidStacks(); + } + @Override public boolean test(FluidStack t) { if (t == null) @@ -156,6 +169,11 @@ public abstract class FluidIngredient implements Predicate { json.add("nbt", new JsonParser().parse(tagToMatch.toString())); } + @Override + protected List determineMatchingFluidStacks() { + return ImmutableList.of(new FluidStack(fluid, amountRequired, tagToMatch)); + } + } public static class FluidTagIngredient extends FluidIngredient { @@ -183,8 +201,11 @@ public abstract class FluidIngredient implements Predicate { @Override protected void readInternal(JsonObject json) { ResourceLocation id = new ResourceLocation(JSONUtils.getString(json, "fluidTag")); - Optional> optionalINamedTag = FluidTags.getRequiredTags().stream() - .filter(fluidINamedTag -> fluidINamedTag.getId().equals(id)).findFirst(); // fixme + Optional> optionalINamedTag = FluidTags.getRequiredTags() + .stream() + .filter(fluidINamedTag -> fluidINamedTag.getId() + .equals(id)) + .findFirst(); // fixme if (!optionalINamedTag.isPresent()) throw new JsonSyntaxException("Unknown fluid tag '" + id + "'"); tag = optionalINamedTag.get(); @@ -196,6 +217,14 @@ public abstract class FluidIngredient implements Predicate { .toString()); } + @Override + protected List determineMatchingFluidStacks() { + return tag.values() + .stream() + .map(f -> new FluidStack(f, amountRequired)) + .collect(Collectors.toList()); + } + } } diff --git a/src/main/resources/assets/create/textures/item/blaze_cake.png b/src/main/resources/assets/create/textures/item/blaze_cake.png new file mode 100644 index 000000000..91a6e3d4a Binary files /dev/null and b/src/main/resources/assets/create/textures/item/blaze_cake.png differ diff --git a/src/main/resources/assets/create/textures/item/cinder_flour.png b/src/main/resources/assets/create/textures/item/cinder_flour.png new file mode 100644 index 000000000..9ad4c920a Binary files /dev/null and b/src/main/resources/assets/create/textures/item/cinder_flour.png differ