mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-16 03:53:42 +01:00
Merge branch 'mc1.15/dev' into mc1.16/dev
This commit is contained in:
commit
cbeb5dc649
36 changed files with 446 additions and 333 deletions
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "金板",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "create:item/fuel_pellet"
|
||||
"layer0": "create:item/blaze_cake"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "create:item/cinder_flour"
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
{
|
||||
"type": "create:compacting",
|
||||
"ingredients": [
|
||||
{
|
||||
"item": "minecraft:ice"
|
||||
}
|
||||
],
|
||||
"results": [
|
||||
{
|
||||
"fluid": "minecraft:water",
|
||||
"amount": 250
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"type": "create:compacting",
|
||||
"ingredients": [
|
||||
{
|
||||
"item": "minecraft:cobblestone"
|
||||
},
|
||||
{
|
||||
"fluidTag": "minecraft:lava",
|
||||
"amount": 250
|
||||
}
|
||||
],
|
||||
"results": [
|
||||
{
|
||||
"item": "create:gabbro",
|
||||
"count": 1
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -7,7 +7,7 @@
|
|||
},
|
||||
{
|
||||
"fluidTag": "minecraft:lava",
|
||||
"amount": 250
|
||||
"amount": 25
|
||||
}
|
||||
],
|
||||
"results": [
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"type": "create:mixing",
|
||||
"ingredients": [
|
||||
{
|
||||
"tag": "forge:cobblestone"
|
||||
}
|
||||
],
|
||||
"results": [
|
||||
{
|
||||
"fluid": "minecraft:lava",
|
||||
"amount": 25
|
||||
}
|
||||
],
|
||||
"heatRequirement": "superheated"
|
||||
}
|
|
@ -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<CombustibleItem> BLAZE_CAKE = REGISTRATE.item("blaze_cake", CombustibleItem::new)
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<ChromaticCompoundItem> 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<CombustibleItem> FUEL_PELLET = REGISTRATE.item("fuel_pellet", CombustibleItem::new)
|
||||
// .onRegister(item -> item.setBurnTime(2048))
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<BlockzapperItem> BLOCKZAPPER =
|
||||
REGISTRATE.item("handheld_blockzapper", BlockzapperItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> BlockzapperModel::new))
|
||||
|
|
|
@ -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<FluidIngredient> FLUIDS = new IIngredientType<FluidIngredient>() {
|
||||
|
||||
@Override
|
||||
public Class<? extends FluidIngredient> getIngredientClass() {
|
||||
return FluidIngredient.class;
|
||||
}
|
||||
};
|
||||
|
||||
private MillingCategory millingCategory;
|
||||
private CrushingCategory crushingCategory;
|
||||
private SplashingCategory splashingCategory;
|
||||
|
|
|
@ -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<BasinRecipe> {
|
||||
|
||||
|
@ -35,24 +39,44 @@ public class BasinCategory extends CreateRecipeCategory<BasinRecipe> {
|
|||
@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<Ingredient> recipeIngredients = recipe.getIngredients();
|
||||
List<Pair<Ingredient, MutableInt>> 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<FluidIngredient> fluidIngredients = recipe.getFluidIngredients();
|
||||
List<Pair<Ingredient, MutableInt>> 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<ItemStack> stacks = new ArrayList<>();
|
||||
Pair<Ingredient, MutableInt> pair = actualIngredients.get(i);
|
||||
Pair<Ingredient, MutableInt> pair = ingredients.get(i);
|
||||
Ingredient ingredient = pair.getFirst();
|
||||
MutableInt amount = pair.getSecond();
|
||||
|
||||
|
@ -65,16 +89,33 @@ public class BasinCategory extends CreateRecipeCategory<BasinRecipe> {
|
|||
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<FluidStack> 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<Pair<Ingredient, MutableInt>> 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;
|
||||
|
|
|
@ -51,7 +51,9 @@ public class BasinRecipe extends ProcessingRecipe<SmartInventory> {
|
|||
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<SmartInventory> {
|
|||
* 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);
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ public class BasinRenderer extends SmartTileEntityRenderer<BasinTileEntity> {
|
|||
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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<BlazeBurnerTileEntity
|
|||
super.fillStateContainer(builder);
|
||||
builder.add(HEAT_LEVEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState p_220082_4_,
|
||||
boolean p_220082_5_) {
|
||||
if (world.isRemote)
|
||||
return;
|
||||
TileEntity tileEntity = world.getTileEntity(pos.up());
|
||||
if (!(tileEntity instanceof BasinTileEntity))
|
||||
return;
|
||||
BasinTileEntity basin = (BasinTileEntity) tileEntity;
|
||||
basin.notifyChangeOfContents();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity(BlockState state) {
|
||||
|
@ -90,16 +103,17 @@ public class BlazeBurnerBlock extends Block implements ITE<BlazeBurnerTileEntity
|
|||
ItemStack heldItem = player.getHeldItem(hand);
|
||||
boolean dontConsume = player.isCreative();
|
||||
boolean forceOverflow = !(player instanceof FakePlayer);
|
||||
|
||||
|
||||
if (!tryInsert(state, world, pos, dontConsume ? heldItem.copy() : heldItem, forceOverflow, false))
|
||||
return ActionResultType.PASS;
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
|
||||
public static boolean tryInsert(BlockState state, World world, BlockPos pos, ItemStack stack, boolean forceOverflow, boolean simulate) {
|
||||
public static boolean tryInsert(BlockState state, World world, BlockPos pos, ItemStack stack, boolean forceOverflow,
|
||||
boolean simulate) {
|
||||
if (!state.hasTileEntity())
|
||||
return false;
|
||||
|
||||
|
||||
TileEntity te = world.getTileEntity(pos);
|
||||
if (!(te instanceof BlazeBurnerTileEntity))
|
||||
return false;
|
||||
|
@ -143,13 +157,6 @@ public class BlazeBurnerBlock extends Block implements ITE<BlazeBurnerTileEntity
|
|||
.ordinal() * 4 - 1, 0, 15);
|
||||
}
|
||||
|
||||
static void setBlazeLevel(World world, BlockPos pos, HeatLevel blazeLevel) {
|
||||
BlockState blockState = world.getBlockState(pos);
|
||||
if (!(blockState.getBlock() instanceof BlazeBurnerBlock))
|
||||
return;
|
||||
world.setBlockState(pos, blockState.with(HEAT_LEVEL, blazeLevel));
|
||||
}
|
||||
|
||||
public static HeatLevel getHeatLevelOf(BlockState blockState) {
|
||||
return blockState.contains(BlazeBurnerBlock.HEAT_LEVEL) ? blockState.get(BlazeBurnerBlock.HEAT_LEVEL)
|
||||
: HeatLevel.NONE;
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
package com.simibubi.create.content.contraptions.processing.burner;
|
||||
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerTileEntity.FuelType;
|
||||
|
||||
import net.minecraft.entity.projectile.EggEntity;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.SoundCategory;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.event.entity.ProjectileImpactEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
|
||||
@Mod.EventBusSubscriber
|
||||
public class BlazeBurnerHandler {
|
||||
|
||||
@SubscribeEvent
|
||||
public static void thrownEggsGetEatenByBurner(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(Vec3d.ZERO);
|
||||
event.getThrowable()
|
||||
.remove();
|
||||
|
||||
World world = event.getThrowable().world;
|
||||
if (world.isRemote)
|
||||
return;
|
||||
|
||||
BlazeBurnerTileEntity heater = (BlazeBurnerTileEntity) tile;
|
||||
if (heater.activeFuel != FuelType.SPECIAL) {
|
||||
heater.activeFuel = FuelType.NORMAL;
|
||||
heater.remainingBurnTime =
|
||||
MathHelper.clamp(heater.remainingBurnTime + 80, 0, BlazeBurnerTileEntity.maxHeatCapacity);
|
||||
heater.updateBlockState();
|
||||
heater.notifyUpdate();
|
||||
}
|
||||
|
||||
world.playSound(null, heater.getPos(), AllSoundEvents.BLAZE_MUNCH.get(), SoundCategory.BLOCKS, .5F, 1F);
|
||||
}
|
||||
|
||||
}
|
|
@ -4,6 +4,7 @@ import com.mojang.blaze3d.matrix.MatrixStack;
|
|||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel;
|
||||
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.SuperByteBuffer;
|
||||
|
||||
|
@ -22,7 +23,7 @@ public class BlazeBurnerRenderer extends SafeTileEntityRenderer<BlazeBurnerTileE
|
|||
@Override
|
||||
protected void renderSafe(BlazeBurnerTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer,
|
||||
int light, int overlay) {
|
||||
HeatLevel heatLevel = te.getHeatLevel();
|
||||
HeatLevel heatLevel = te.getHeatLevelFromBlock();
|
||||
if (heatLevel == HeatLevel.NONE)
|
||||
return;
|
||||
|
||||
|
@ -31,7 +32,7 @@ public class BlazeBurnerRenderer extends SafeTileEntityRenderer<BlazeBurnerTileE
|
|||
|
||||
AllBlockPartials blazeModel = AllBlockPartials.BLAZES.get(heatLevel);
|
||||
SuperByteBuffer blazeBuffer = blazeModel.renderOn(te.getBlockState());
|
||||
blazeBuffer.rotateCentered(Direction.UP, (float) Math.toRadians(-te.rot + (te.speed * partialTicks)));
|
||||
blazeBuffer.rotateCentered(Direction.UP, AngleHelper.rad(te.headAngle.getValue(partialTicks)));
|
||||
blazeBuffer.translate(0, offset, 0);
|
||||
blazeBuffer.light(0xF000F0)
|
||||
.renderInto(ms, buffer.getBuffer(RenderType.getSolid()));
|
||||
|
|
|
@ -4,56 +4,46 @@ import java.util.List;
|
|||
import java.util.Random;
|
||||
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.content.contraptions.particle.CubeParticleData;
|
||||
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel;
|
||||
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.LerpedFloat;
|
||||
import com.simibubi.create.foundation.utility.LerpedFloat.Chaser;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
||||
import net.minecraft.entity.projectile.EggEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.particles.IParticleData;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.SoundCategory;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
import net.minecraftforge.event.entity.ProjectileImpactEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
|
||||
@Mod.EventBusSubscriber
|
||||
public class BlazeBurnerTileEntity extends SmartTileEntity {
|
||||
|
||||
private final static int[][] heatParticleColors = {
|
||||
{0x3B141A, 0x47141A, 0x7A3B24, 0x854D26},
|
||||
{0x2A0103, 0x741B0A, 0xC38246, 0xCCBD78},
|
||||
{0x630B03, 0x8B3503, 0xBC8200, 0xCCC849},
|
||||
{0x1C6378, 0x4798B5, 0x4DA6C0, 0xBAC8CE}
|
||||
};
|
||||
private final static int[][] heatParticleColors =
|
||||
{ { 0x3B141A, 0x47141A, 0x7A3B24, 0x854D26 }, { 0x2A0103, 0x741B0A, 0xC38246, 0xCCBD78 },
|
||||
{ 0x630B03, 0x8B3503, 0xBC8200, 0xCCC849 }, { 0x1C6378, 0x4798B5, 0x4DA6C0, 0xBAC8CE } };
|
||||
|
||||
private static final int maxHeatCapacity = 10000;
|
||||
public static final int maxHeatCapacity = 10000;
|
||||
|
||||
private int remainingBurnTime;
|
||||
private FuelType activeFuel;
|
||||
|
||||
// Rendering state
|
||||
float rot, speed;
|
||||
public static enum FuelType {
|
||||
NONE, NORMAL, SPECIAL
|
||||
}
|
||||
|
||||
int remainingBurnTime;
|
||||
FuelType activeFuel;
|
||||
LerpedFloat headAngle;
|
||||
|
||||
public BlazeBurnerTileEntity(TileEntityType<? extends BlazeBurnerTileEntity> 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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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_) {
|
||||
|
|
|
@ -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()))
|
||||
|
||||
;
|
||||
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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<FluidStack> {
|
|||
|
||||
public static final FluidIngredient EMPTY = new FluidStackIngredient();
|
||||
|
||||
public List<FluidStack> matchingFluidStacks;
|
||||
|
||||
public static FluidIngredient fromTag(ITag.INamedTag<Fluid> tag, int amount) {
|
||||
FluidTagIngredient ingredient = new FluidTagIngredient();
|
||||
ingredient.tag = tag;
|
||||
|
@ -51,10 +56,18 @@ public abstract class FluidIngredient implements Predicate<FluidStack> {
|
|||
|
||||
protected abstract void writeInternal(JsonObject json);
|
||||
|
||||
protected abstract List<FluidStack> determineMatchingFluidStacks();
|
||||
|
||||
public int getRequiredAmount() {
|
||||
return amountRequired;
|
||||
}
|
||||
|
||||
public List<FluidStack> 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<FluidStack> {
|
|||
json.add("nbt", new JsonParser().parse(tagToMatch.toString()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<FluidStack> 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<FluidStack> {
|
|||
@Override
|
||||
protected void readInternal(JsonObject json) {
|
||||
ResourceLocation id = new ResourceLocation(JSONUtils.getString(json, "fluidTag"));
|
||||
Optional<? extends ITag.INamedTag<Fluid>> optionalINamedTag = FluidTags.getRequiredTags().stream()
|
||||
.filter(fluidINamedTag -> fluidINamedTag.getId().equals(id)).findFirst(); // fixme
|
||||
Optional<? extends ITag.INamedTag<Fluid>> 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<FluidStack> {
|
|||
.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<FluidStack> determineMatchingFluidStacks() {
|
||||
return tag.values()
|
||||
.stream()
|
||||
.map(f -> new FluidStack(f, amountRequired))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
BIN
src/main/resources/assets/create/textures/item/blaze_cake.png
Normal file
BIN
src/main/resources/assets/create/textures/item/blaze_cake.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 441 B |
BIN
src/main/resources/assets/create/textures/item/cinder_flour.png
Normal file
BIN
src/main/resources/assets/create/textures/item/cinder_flour.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 246 B |
Loading…
Reference in a new issue