Cleanup crew

- More refactors and enhancements to the blaze burner
This commit is contained in:
simibubi 2020-07-23 17:41:15 +02:00
parent f2b8d85303
commit 80406e8782
58 changed files with 940 additions and 566 deletions

View file

@ -25,7 +25,7 @@ f25693a9429f6337149ff24f27900dc4eb82a7c2 assets/create/blockstates/belt.json
cf9045eb16e5299a1d917c4cb536289f49411276 assets/create/blockstates/birch_window.json
94a1a91403eb4b035fec48071e7fcae57a8a6abd assets/create/blockstates/birch_window_pane.json
58b07d2af6030342f0354f6d3fd0ee128d2d74b4 assets/create/blockstates/black_seat.json
0626725f70103a55dabcda6f87ca943279d45793 assets/create/blockstates/blaze_heater.json
923aeb2a556f67bc0526f237dd97af2d37b4c9f1 assets/create/blockstates/blaze_burner.json
4854d1ef52130a7887aecc60bcaffbd66f0871a8 assets/create/blockstates/blue_seat.json
fba967b1f6e44b34a9d9662e2fedfc13aad7f36c assets/create/blockstates/brass_belt_funnel.json
8b1dd00adcc7e74c5a9feed069e2610b15a338cb assets/create/blockstates/brass_block.json
@ -300,7 +300,7 @@ e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets/create/blockstates/powered_toggl
3a739f9d4276828d83f2d2750bf3227c87bcd438 assets/create/blockstates/pulley_magnet.json
469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets/create/blockstates/pulse_repeater.json
92957119abd5fbcca36a113b2a80255fd70fc303 assets/create/blockstates/purple_seat.json
4bb26546ac954604a0317b059f2c36a1123772cb assets/create/blockstates/radial_chassis.json
8d7e653bfd9846e684a0d3725595714a19201017 assets/create/blockstates/radial_chassis.json
da1b08387af7afa0855ee8d040f620c01f20660a assets/create/blockstates/red_seat.json
8929677f2cc5354aa19ef182af69f9f0b41eb242 assets/create/blockstates/redstone_contact.json
c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets/create/blockstates/redstone_link.json
@ -354,17 +354,17 @@ c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets/create/blockstates/weathered_lim
a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.json
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
8701a4473878ef76b77b853b7b5ee0e1570e35b5 assets/create/lang/en_ud.json
28b0c222c3bc23ade20b30acbeba4dff45b8aac6 assets/create/lang/en_us.json
99cfc3bf44135741f3cab754126c7b9020ca6afd assets/create/lang/unfinished/de_de.json
5eaf282418b78d3b642489f12d1d4e39a84c8158 assets/create/lang/unfinished/fr_fr.json
d8a9050112ff115115035e5af996cf67d1c7857f assets/create/lang/unfinished/it_it.json
52d6a899466025fafd1235486e8a142acd650827 assets/create/lang/unfinished/ja_jp.json
67249a783b7bdb3306b2616fa05675f446930cb9 assets/create/lang/unfinished/ko_kr.json
49d048a89d98ec8e15f91155f466f06634656e28 assets/create/lang/unfinished/nl_nl.json
c88f1d0814ddd3c8a7925372ea9d5f5677b2abe8 assets/create/lang/unfinished/pt_br.json
76c6a11afca6c102194f2b32a4e84c83d73e741c assets/create/lang/unfinished/ru_ru.json
e49755abda2b5df4c1a83fc058cf2693940259d1 assets/create/lang/unfinished/zh_cn.json
0f82b1cb0f026895a75feb06fba8c33b44d14711 assets/create/lang/en_ud.json
0c28bf9b20b27caa23ec5eb0cf77b3557cc07f19 assets/create/lang/en_us.json
2adfeab7ad690f28e21c885f5952d285430df646 assets/create/lang/unfinished/de_de.json
4faaa837fc1c9aa2734c4462970626cb7f8de9a8 assets/create/lang/unfinished/fr_fr.json
b2d7fac85167362bfed655394fe7a7ed31d76929 assets/create/lang/unfinished/it_it.json
57813585da4b9b3605c557ddc044cfd9839049eb assets/create/lang/unfinished/ja_jp.json
5349034d41e56df04d7c54bef0e17ee5941c8de4 assets/create/lang/unfinished/ko_kr.json
20b02ad64a22d931e62ad32bc880ba9a8b6b44f3 assets/create/lang/unfinished/nl_nl.json
321cf5d17bd7f881675125ac2b3ec79d85b2d364 assets/create/lang/unfinished/pt_br.json
8a23811e1d9fd60a96611071d140038e64977826 assets/create/lang/unfinished/ru_ru.json
06f2a0836d475ba095e8fcc11d5be4626c2eb11b assets/create/lang/unfinished/zh_cn.json
846200eb548d3bfa2e77b41039de159b4b6cfb45 assets/create/models/block/acacia_window.json
1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets/create/models/block/acacia_window_pane_noside.json
1763ea2c9b981d187f5031ba608f3d5d3be3986a assets/create/models/block/acacia_window_pane_noside_alt.json
@ -1027,7 +1027,7 @@ bf1fc6bdf7fca6f1958a2d3e96202c1cecb50669 assets/create/models/item/basin.json
9044243882cfd49a2827e1b910a4c9b0e46daa47 assets/create/models/item/birch_window.json
6ed49f59ea91068ef68720f43e67a9237594bdf0 assets/create/models/item/birch_window_pane.json
22632bd681c8a605f0845f7549770389a741156a assets/create/models/item/black_seat.json
fa2761dc44857eb840a94df869de66a91988f0da assets/create/models/item/blaze_heater.json
80a6e8b00709fe0521aca5b789ae17485ed9c56d assets/create/models/item/blaze_burner.json
0e1977585128fc0ecef640f72e5fc5e9fb47ef92 assets/create/models/item/blue_seat.json
17d340c3678bd24cb085ba49490b2b4cb341a9e7 assets/create/models/item/brass_block.json
f5a18f4279c2e845a5967b1c2f9e807c2bb77afb assets/create/models/item/brass_casing.json
@ -1103,6 +1103,7 @@ be7de1e1529fb2a2e842204136520a760676d4e9 assets/create/models/item/dolomite_cobb
e974cd23a5456baef8b634f2d21fd8c3822931ab assets/create/models/item/dolomite_pillar.json
82b73fafdb8bf4f0706012d5baab44cd0e1aa7bc assets/create/models/item/dough.json
36139f3de5fc9e57cb96f2d2daad108bc0635b7b assets/create/models/item/electron_tube.json
971be8e52e8dfef50c8329be83f9c5d5ea869279 assets/create/models/item/empty_blaze_burner.json
3bbf9f6b33ef075fb2e1d20d58a6169e2e942314 assets/create/models/item/empty_schematic.json
f2d6b88c3174de01e16da555236727efc33b490c assets/create/models/item/encased_belt.json
250bd0716cc1f04b03892ab74eb0b3a0f32a6158 assets/create/models/item/encased_fan.json
@ -1837,7 +1838,7 @@ c7f81e30c31837a287d6d6040cdb02c7dec11441 data/create/loot_tables/blocks/belt.jso
67a8e2513c3cb09e6fe80279fda94f79d5018c37 data/create/loot_tables/blocks/birch_window.json
bf1d5843f93533f84bc4adec5b77da2114fa2025 data/create/loot_tables/blocks/birch_window_pane.json
cccc209d172cc7bac76f1b4ac79085ee90742ab2 data/create/loot_tables/blocks/black_seat.json
798ef290b388dee758df3e779b4b1c9289955f7b data/create/loot_tables/blocks/blaze_heater.json
a2313c9b7d114396fca3c86a740d23fce3873679 data/create/loot_tables/blocks/blaze_burner.json
3834f7ac2bbc42cead02d4973842adb9ad97e6bf data/create/loot_tables/blocks/blue_seat.json
1dbc446abe190b2832b2ce7d52c2f2d2bdd45949 data/create/loot_tables/blocks/brass_belt_funnel.json
70d9d4def43d5b31fa7cdc5ca5002c71cf4a90b0 data/create/loot_tables/blocks/brass_block.json
@ -2543,8 +2544,8 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data/create/recipes/weathered_limestone
11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data/create/recipes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json
266f08e604d229a9d2b46f7272c0b06ec270bf3d data/create/recipes/zinc_block.json
4ace4302e3f0ee8ca063c150a046deab06c52710 data/create/tags/blocks/brittle.json
228290109dd691e508cad11547e30d30bf111c3f data/create/tags/blocks/fan_heaters.json
74ad330d6e347b339002a9d83be7061c1c91ae26 data/create/tags/blocks/fan_transparent.json
246ee2ec4e778e38a362f319506564886d4e0e76 data/create/tags/blocks/fan_heaters.json
798ef82869dbe22682121504a372e95607a785dc data/create/tags/blocks/fan_transparent.json
081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data/create/tags/items/create_ingots.json
d2dc4ff179ef7b2aa9276455c196e15d44aa95a8 data/create/tags/items/crushed_ores.json
16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data/forge/tags/blocks/glass/colorless.json

View file

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "create:block/blaze_burner/block"
}
}
}

View file

@ -1,7 +0,0 @@
{
"variants": {
"": {
"model": "create:block/blaze_heater/block"
}
}
}

View file

@ -26,7 +26,7 @@
"block.create.birch_window": "\u028Dopu\u0131M \u0265\u0254\u0279\u0131\u15FA",
"block.create.birch_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u0265\u0254\u0279\u0131\u15FA",
"block.create.black_seat": "\u0287\u0250\u01DDS \u029E\u0254\u0250\u05DF\u15FA",
"block.create.blaze_heater": "\u0279\u01DD\u0287\u0250\u01DDH \u01DDz\u0250\u05DF\u15FA",
"block.create.blaze_burner": "\u0279\u01DDu\u0279n\u15FA \u01DDz\u0250\u05DF\u15FA",
"block.create.blue_seat": "\u0287\u0250\u01DDS \u01DDn\u05DF\u15FA",
"block.create.brass_belt_funnel": "\u05DF\u01DDuun\u2132 \u0287\u05DF\u01DD\u15FA ss\u0250\u0279\u15FA",
"block.create.brass_block": "\u029E\u0254o\u05DF\u15FA ss\u0250\u0279\u15FA",
@ -379,6 +379,7 @@
"item.create.deforester": "\u0279\u01DD\u0287s\u01DD\u0279o\u025F\u01DD\u15E1",
"item.create.dough": "\u0265bno\u15E1",
"item.create.electron_tube": "\u01DDqn\u27D8 uo\u0279\u0287\u0254\u01DD\u05DF\u018E",
"item.create.empty_blaze_burner": "\u0279\u01DDu\u0279n\u15FA \u01DDz\u0250\u05DF\u15FA \u028E\u0287d\u026F\u018E",
"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",

View file

@ -29,7 +29,7 @@
"block.create.birch_window": "Birch Window",
"block.create.birch_window_pane": "Birch Window Pane",
"block.create.black_seat": "Black Seat",
"block.create.blaze_heater": "Blaze Heater",
"block.create.blaze_burner": "Blaze Burner",
"block.create.blue_seat": "Blue Seat",
"block.create.brass_belt_funnel": "Brass Belt Funnel",
"block.create.brass_block": "Brass Block",
@ -384,6 +384,7 @@
"item.create.deforester": "Deforester",
"item.create.dough": "Dough",
"item.create.electron_tube": "Electron Tube",
"item.create.empty_blaze_burner": "Empty Blaze Burner",
"item.create.empty_schematic": "Empty Schematic",
"item.create.extendo_grip": "Extendo Grip",
"item.create.filter": "Filter",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 809",
"_": "Missing Localizations: 810",
"_": "->------------------------] Game Elements [------------------------<-",
@ -30,7 +30,7 @@
"block.create.birch_window": "UNLOCALIZED: Birch Window",
"block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane",
"block.create.black_seat": "UNLOCALIZED: Black Seat",
"block.create.blaze_heater": "UNLOCALIZED: Blaze Heater",
"block.create.blaze_burner": "UNLOCALIZED: Blaze Burner",
"block.create.blue_seat": "UNLOCALIZED: Blue Seat",
"block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel",
"block.create.brass_block": "UNLOCALIZED: Brass Block",
@ -385,6 +385,7 @@
"item.create.deforester": "UNLOCALIZED: Deforester",
"item.create.dough": "Teig",
"item.create.electron_tube": "UNLOCALIZED: Electron Tube",
"item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner",
"item.create.empty_schematic": "Leerer Bauplan",
"item.create.extendo_grip": "UNLOCALIZED: Extendo Grip",
"item.create.filter": "Filter",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 412",
"_": "Missing Localizations: 413",
"_": "->------------------------] Game Elements [------------------------<-",
@ -30,7 +30,7 @@
"block.create.birch_window": "UNLOCALIZED: Birch Window",
"block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane",
"block.create.black_seat": "UNLOCALIZED: Black Seat",
"block.create.blaze_heater": "UNLOCALIZED: Blaze Heater",
"block.create.blaze_burner": "UNLOCALIZED: Blaze Burner",
"block.create.blue_seat": "UNLOCALIZED: Blue Seat",
"block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel",
"block.create.brass_block": "UNLOCALIZED: Brass Block",
@ -385,6 +385,7 @@
"item.create.deforester": "Déforesteur",
"item.create.dough": "Pâte",
"item.create.electron_tube": "Tube électronique",
"item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner",
"item.create.empty_schematic": "Schéma vide",
"item.create.extendo_grip": "UNLOCALIZED: Extendo Grip",
"item.create.filter": "Filtre",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 396",
"_": "Missing Localizations: 397",
"_": "->------------------------] Game Elements [------------------------<-",
@ -30,7 +30,7 @@
"block.create.birch_window": "UNLOCALIZED: Birch Window",
"block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane",
"block.create.black_seat": "UNLOCALIZED: Black Seat",
"block.create.blaze_heater": "UNLOCALIZED: Blaze Heater",
"block.create.blaze_burner": "UNLOCALIZED: Blaze Burner",
"block.create.blue_seat": "UNLOCALIZED: Blue Seat",
"block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel",
"block.create.brass_block": "Blocco di Ottone",
@ -385,6 +385,7 @@
"item.create.deforester": "Deforestatore",
"item.create.dough": "Impasto",
"item.create.electron_tube": "Valvola",
"item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner",
"item.create.empty_schematic": "Schematica Vuota",
"item.create.extendo_grip": "UNLOCALIZED: Extendo Grip",
"item.create.filter": "Filtro",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 391",
"_": "Missing Localizations: 392",
"_": "->------------------------] Game Elements [------------------------<-",
@ -30,7 +30,7 @@
"block.create.birch_window": "UNLOCALIZED: Birch Window",
"block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane",
"block.create.black_seat": "UNLOCALIZED: Black Seat",
"block.create.blaze_heater": "UNLOCALIZED: Blaze Heater",
"block.create.blaze_burner": "UNLOCALIZED: Blaze Burner",
"block.create.blue_seat": "UNLOCALIZED: Blue Seat",
"block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel",
"block.create.brass_block": "真鍮ブロック",
@ -385,6 +385,7 @@
"item.create.deforester": "デフォレスター",
"item.create.dough": "生地",
"item.create.electron_tube": "電子管",
"item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner",
"item.create.empty_schematic": "空の概略図",
"item.create.extendo_grip": "UNLOCALIZED: Extendo Grip",
"item.create.filter": "フィルター",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 396",
"_": "Missing Localizations: 397",
"_": "->------------------------] Game Elements [------------------------<-",
@ -30,7 +30,7 @@
"block.create.birch_window": "UNLOCALIZED: Birch Window",
"block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane",
"block.create.black_seat": "UNLOCALIZED: Black Seat",
"block.create.blaze_heater": "UNLOCALIZED: Blaze Heater",
"block.create.blaze_burner": "UNLOCALIZED: Blaze Burner",
"block.create.blue_seat": "UNLOCALIZED: Blue Seat",
"block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel",
"block.create.brass_block": "황동 블럭",
@ -385,6 +385,7 @@
"item.create.deforester": "산림파괴자",
"item.create.dough": "반죽",
"item.create.electron_tube": "전지 튜브",
"item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner",
"item.create.empty_schematic": "빈 청사진",
"item.create.extendo_grip": "UNLOCALIZED: Extendo Grip",
"item.create.filter": "필터 틀",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 746",
"_": "Missing Localizations: 747",
"_": "->------------------------] Game Elements [------------------------<-",
@ -30,7 +30,7 @@
"block.create.birch_window": "UNLOCALIZED: Birch Window",
"block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane",
"block.create.black_seat": "UNLOCALIZED: Black Seat",
"block.create.blaze_heater": "UNLOCALIZED: Blaze Heater",
"block.create.blaze_burner": "UNLOCALIZED: Blaze Burner",
"block.create.blue_seat": "UNLOCALIZED: Blue Seat",
"block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel",
"block.create.brass_block": "UNLOCALIZED: Brass Block",
@ -385,6 +385,7 @@
"item.create.deforester": "Ontbosser",
"item.create.dough": "Deeg",
"item.create.electron_tube": "UNLOCALIZED: Electron Tube",
"item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner",
"item.create.empty_schematic": "Lege bouwtekening",
"item.create.extendo_grip": "UNLOCALIZED: Extendo Grip",
"item.create.filter": "Filter",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 816",
"_": "Missing Localizations: 817",
"_": "->------------------------] Game Elements [------------------------<-",
@ -30,7 +30,7 @@
"block.create.birch_window": "UNLOCALIZED: Birch Window",
"block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane",
"block.create.black_seat": "UNLOCALIZED: Black Seat",
"block.create.blaze_heater": "UNLOCALIZED: Blaze Heater",
"block.create.blaze_burner": "UNLOCALIZED: Blaze Burner",
"block.create.blue_seat": "UNLOCALIZED: Blue Seat",
"block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel",
"block.create.brass_block": "UNLOCALIZED: Brass Block",
@ -385,6 +385,7 @@
"item.create.deforester": "UNLOCALIZED: Deforester",
"item.create.dough": "Massa",
"item.create.electron_tube": "UNLOCALIZED: Electron Tube",
"item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner",
"item.create.empty_schematic": "Esquema vazio",
"item.create.extendo_grip": "UNLOCALIZED: Extendo Grip",
"item.create.filter": "Filtro",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 810",
"_": "Missing Localizations: 811",
"_": "->------------------------] Game Elements [------------------------<-",
@ -30,7 +30,7 @@
"block.create.birch_window": "UNLOCALIZED: Birch Window",
"block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane",
"block.create.black_seat": "UNLOCALIZED: Black Seat",
"block.create.blaze_heater": "UNLOCALIZED: Blaze Heater",
"block.create.blaze_burner": "UNLOCALIZED: Blaze Burner",
"block.create.blue_seat": "UNLOCALIZED: Blue Seat",
"block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel",
"block.create.brass_block": "UNLOCALIZED: Brass Block",
@ -385,6 +385,7 @@
"item.create.deforester": "UNLOCALIZED: Deforester",
"item.create.dough": "Тесто",
"item.create.electron_tube": "UNLOCALIZED: Electron Tube",
"item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner",
"item.create.empty_schematic": "Пустая схема",
"item.create.extendo_grip": "UNLOCALIZED: Extendo Grip",
"item.create.filter": "Фильтр",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 72",
"_": "Missing Localizations: 73",
"_": "->------------------------] Game Elements [------------------------<-",
@ -30,7 +30,7 @@
"block.create.birch_window": "白桦窗户",
"block.create.birch_window_pane": "白桦窗户板",
"block.create.black_seat": "UNLOCALIZED: Black Seat",
"block.create.blaze_heater": "UNLOCALIZED: Blaze Heater",
"block.create.blaze_burner": "UNLOCALIZED: Blaze Burner",
"block.create.blue_seat": "UNLOCALIZED: Blue Seat",
"block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel",
"block.create.brass_block": "黄铜块",
@ -385,6 +385,7 @@
"item.create.deforester": "树林毁灭者",
"item.create.dough": "面团",
"item.create.electron_tube": "电子管",
"item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner",
"item.create.empty_schematic": "空白蓝图",
"item.create.extendo_grip": "伸缩机械手",
"item.create.filter": "过滤器",

View file

@ -0,0 +1,3 @@
{
"parent": "create:block/blaze_burner/block_with_blaze"
}

View file

@ -1,3 +0,0 @@
{
"parent": "create:block/blaze_heater/block"
}

View file

@ -0,0 +1,3 @@
{
"parent": "create:block/blaze_burner/block"
}

View file

@ -0,0 +1,90 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:survives_explosion"
},
{
"condition": "minecraft:block_state_property",
"block": "create:blaze_burner",
"properties": {
"blaze": "none"
}
}
],
"name": "create:empty_blaze_burner"
},
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:survives_explosion"
},
{
"condition": "minecraft:block_state_property",
"block": "create:blaze_burner",
"properties": {
"blaze": "smouldering"
}
}
],
"name": "create:blaze_burner"
},
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:survives_explosion"
},
{
"condition": "minecraft:block_state_property",
"block": "create:blaze_burner",
"properties": {
"blaze": "fading"
}
}
],
"name": "create:blaze_burner"
},
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:survives_explosion"
},
{
"condition": "minecraft:block_state_property",
"block": "create:blaze_burner",
"properties": {
"blaze": "kindled"
}
}
],
"name": "create:blaze_burner"
},
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:survives_explosion"
},
{
"condition": "minecraft:block_state_property",
"block": "create:blaze_burner",
"properties": {
"blaze": "seething"
}
}
],
"name": "create:blaze_burner"
}
]
}
]
}

View file

@ -1,19 +0,0 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "create:blaze_heater"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -1,7 +1,7 @@
{
"replace": false,
"values": [
"create:blaze_heater",
"create:blaze_burner",
"minecraft:magma_block",
"minecraft:campfire",
"minecraft:lava",

View file

@ -1,7 +1,7 @@
{
"replace": false,
"values": [
"create:blaze_heater",
"create:blaze_burner",
"#minecraft:fences",
"minecraft:iron_bars"
]

View file

@ -9,6 +9,7 @@ import java.util.List;
import java.util.Map;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.MatrixStacker;
@ -43,12 +44,11 @@ public class AllBlockPartials {
BELT_DIAGONAL_MIDDLE = get("belt/diagonal_middle"),
BELT_DIAGONAL_END = get("belt/diagonal_end"),
ENCASED_FAN_INNER = get("encased_fan/propeller"), HAND_CRANK_HANDLE = get("hand_crank/handle"),
MECHANICAL_PRESS_HEAD = get("mechanical_press/head"), MECHANICAL_MIXER_POLE = get("mechanical_mixer/pole"),
MECHANICAL_MIXER_HEAD = get("mechanical_mixer/head"), BLAZE_HEATER_BLAZE_ONE = get("blaze_heater/blaze/one"),
BLAZE_HEATER_BLAZE_TWO = get("blaze_heater/blaze/two"),
BLAZE_HEATER_BLAZE_THREE = get("blaze_heater/blaze/three"),
BLAZE_HEATER_BLAZE_FOUR = get("blaze_heater/blaze/four"),
ENCASED_FAN_INNER = get("encased_fan/propeller"),
HAND_CRANK_HANDLE = get("hand_crank/handle"),
MECHANICAL_PRESS_HEAD = get("mechanical_press/head"),
MECHANICAL_MIXER_POLE = get("mechanical_mixer/pole"),
MECHANICAL_MIXER_HEAD = get("mechanical_mixer/head"),
MECHANICAL_CRAFTER_LID = get("mechanical_crafter/lid"),
MECHANICAL_CRAFTER_ARROW = get("mechanical_crafter/arrow"),
MECHANICAL_CRAFTER_BELT_FRAME = get("mechanical_crafter/belt"),
@ -97,6 +97,7 @@ public class AllBlockPartials {
FLUID_PIPE_CASING = get("fluid_pipe/casing");
public static final Map<Direction, AllBlockPartials> PIPE_RIMS = map();
public static final Map<HeatLevel, AllBlockPartials> BLAZES = map();
static {
populateMaps();
@ -110,8 +111,12 @@ public class AllBlockPartials {
private AllBlockPartials() {}
private static void populateMaps() {
for (Direction d : Iterate.directions) {
for (Direction d : Iterate.directions)
PIPE_RIMS.put(d, get("fluid_pipe/rim/" + d.getName()));
for (HeatLevel heat : HeatLevel.values()) {
if (heat == HeatLevel.NONE)
continue;
BLAZES.put(heat, get("blaze_burner/blaze/" + heat.getName()));
}
}

View file

@ -59,8 +59,8 @@ import com.simibubi.create.content.contraptions.fluids.FluidTankItem;
import com.simibubi.create.content.contraptions.fluids.FluidTankModel;
import com.simibubi.create.content.contraptions.fluids.PumpBlock;
import com.simibubi.create.content.contraptions.processing.BasinBlock;
import com.simibubi.create.content.contraptions.processing.HeaterBlock;
import com.simibubi.create.content.contraptions.processing.HeaterBlockItem;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlockItem;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock;
import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock;
import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftBlock;
import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftGenerator;
@ -403,13 +403,15 @@ public class AllBlocks {
.simpleItem()
.register();
public static final BlockEntry<HeaterBlock> HEATER = REGISTRATE.block("blaze_heater", HeaterBlock::new)
public static final BlockEntry<BlazeBurnerBlock> BLAZE_BURNER = REGISTRATE.block("blaze_burner", BlazeBurnerBlock::new)
.initialProperties(SharedProperties::softMetal)
.properties(p -> p.lightValue(12))
.addLayer(() -> RenderType::getCutoutMipped)
.tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.FAN_HEATERS.tag)
.loot((lt, block) -> lt.registerLootTable(block, BlazeBurnerBlock.buildLootTable()))
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
.item(HeaterBlockItem::new)
.item(BlazeBurnerBlockItem::withBlaze)
.model(AssetLookup.<BlazeBurnerBlockItem>customItemModel("blaze_burner", "block_with_blaze"))
.build()
.register();

View file

@ -14,6 +14,7 @@ import static com.simibubi.create.content.AllSections.SCHEMATICS;
import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueItem;
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MinecartContraptionItem;
import com.simibubi.create.content.contraptions.goggles.GogglesItem;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlockItem;
import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorItem;
import com.simibubi.create.content.contraptions.relays.gearbox.VerticalGearboxItem;
import com.simibubi.create.content.contraptions.wrench.WrenchItem;
@ -121,6 +122,11 @@ public class AllItems {
REGISTRATE.item("vertical_gearbox", VerticalGearboxItem::new)
.model(AssetLookup.<VerticalGearboxItem>customItemModel("gearbox", "item_vertical"))
.register();
public static final ItemEntry<BlazeBurnerBlockItem> EMPTY_BLAZE_BURNER =
REGISTRATE.item("empty_blaze_burner", BlazeBurnerBlockItem::empty)
.model(AssetLookup.<BlazeBurnerBlockItem>customItemModel("blaze_burner", "block"))
.register();
public static final ItemEntry<SuperGlueItem> SUPER_GLUE = REGISTRATE.item("super_glue", SuperGlueItem::new)
.register();

View file

@ -50,6 +50,8 @@ import com.simibubi.create.content.contraptions.fluids.FluidTankTileEntity;
import com.simibubi.create.content.contraptions.fluids.PumpRenderer;
import com.simibubi.create.content.contraptions.fluids.PumpTileEntity;
import com.simibubi.create.content.contraptions.processing.*;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerRenderer;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerTileEntity;
import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerRenderer;
import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerTileEntity;
import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftTileEntity;
@ -200,8 +202,8 @@ public class AllTileEntities {
register("deployer", DeployerTileEntity::new, AllBlocks.DEPLOYER);
public static final TileEntityEntry<BasinTileEntity> BASIN =
register("basin", BasinTileEntity::new, AllBlocks.BASIN);
public static final TileEntityEntry<HeaterTileEntity> HEATER =
register("blaze_heater", HeaterTileEntity::new, AllBlocks.HEATER);
public static final TileEntityEntry<BlazeBurnerTileEntity> HEATER =
register("blaze_heater", BlazeBurnerTileEntity::new, AllBlocks.BLAZE_BURNER);
public static final TileEntityEntry<MechanicalCrafterTileEntity> MECHANICAL_CRAFTER =
register("mechanical_crafter", MechanicalCrafterTileEntity::new, AllBlocks.MECHANICAL_CRAFTER);
public static final TileEntityEntry<SequencedGearshiftTileEntity> SEQUENCED_GEARSHIFT =
@ -301,7 +303,7 @@ public class AllTileEntities {
bind(SPEEDOMETER, GaugeRenderer::speed);
bind(STRESSOMETER, GaugeRenderer::stress);
bind(BASIN, BasinRenderer::new);
bind(HEATER, HeaterRenderer::new);
bind(HEATER, BlazeBurnerRenderer::new);
bind(DEPLOYER, DeployerRenderer::new);
bind(FLYWHEEL, FlywheelRenderer::new);
bind(FURNACE_ENGINE, EngineRenderer::new);

View file

@ -162,7 +162,7 @@ public class CreateJEI implements IModPlugin {
registration.addRecipeCatalyst(new ItemStack(AllItems.BLOCKZAPPER.get()), blockzapperCategory.getUid());
registration.addRecipeCatalyst(new ItemStack(AllBlocks.MECHANICAL_MIXER.get()), mixingCategory.getUid());
registration.addRecipeCatalyst(new ItemStack(AllBlocks.BASIN.get()), mixingCategory.getUid());
registration.addRecipeCatalyst(new ItemStack(AllBlocks.HEATER.get()), mixingCategory.getUid());
registration.addRecipeCatalyst(new ItemStack(AllBlocks.BLAZE_BURNER.get()), mixingCategory.getUid());
registration.addRecipeCatalyst(new ItemStack(AllBlocks.MECHANICAL_SAW.get()), sawingCategory.getUid());
registration.addRecipeCatalyst(new ItemStack(AllBlocks.MECHANICAL_SAW.get()), blockCuttingCategory.getUid());
registration.addRecipeCatalyst(new ItemStack(Blocks.STONECUTTER), blockCuttingCategory.getUid());

View file

@ -10,7 +10,7 @@ import org.apache.commons.lang3.mutable.MutableInt;
import org.apache.commons.lang3.tuple.Pair;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.compat.jei.category.animations.AnimatedBlazeHeater;
import com.simibubi.create.compat.jei.category.animations.AnimatedBlazeBurner;
import com.simibubi.create.compat.jei.category.animations.AnimatedMixer;
import com.simibubi.create.content.contraptions.components.mixer.MixingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingIngredient;
@ -28,7 +28,7 @@ import net.minecraft.util.NonNullList;
public class MixingCategory extends CreateRecipeCategory<MixingRecipe> {
private AnimatedMixer mixer = new AnimatedMixer();
private AnimatedBlazeHeater heater = new AnimatedBlazeHeater();
private AnimatedBlazeBurner heater = new AnimatedBlazeBurner();
public MixingCategory() {
super("mixing", doubleItemIcon(AllBlocks.MECHANICAL_MIXER.get(), AllBlocks.BASIN.get()),

View file

@ -1,29 +1,20 @@
package com.simibubi.create.compat.jei.category.animations;
import java.util.HashMap;
import com.mojang.blaze3d.systems.RenderSystem;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel;
import com.simibubi.create.foundation.gui.GuiGameElement;
import mezz.jei.api.gui.drawable.IDrawable;
public class AnimatedBlazeHeater implements IDrawable {
private static final HashMap<Integer, AllBlockPartials> blazeModelMap = new HashMap<>();
public AnimatedBlazeHeater() {
super();
blazeModelMap.put(2, AllBlockPartials.BLAZE_HEATER_BLAZE_TWO);
blazeModelMap.put(3, AllBlockPartials.BLAZE_HEATER_BLAZE_THREE);
blazeModelMap.put(4, AllBlockPartials.BLAZE_HEATER_BLAZE_FOUR);
}
public class AnimatedBlazeBurner implements IDrawable {
@Override
public void draw(int xOffset, int yOffset) {
drawWithHeatLevel(xOffset, yOffset, 3);
}
public void drawWithHeatLevel(int xOffset, int yOffset, int heatLevel) {
RenderSystem.pushMatrix();
RenderSystem.translatef(xOffset, yOffset, 200);
@ -31,12 +22,13 @@ public class AnimatedBlazeHeater implements IDrawable {
RenderSystem.rotatef(22.5f, 0, 1, 0);
int scale = 23;
GuiGameElement.of(AllBlocks.HEATER.getDefaultState())
.atLocal(0, 1.65, 0)
.scale(scale)
.render();
GuiGameElement.of(blazeModelMap.getOrDefault(heatLevel, AllBlockPartials.BLAZE_HEATER_BLAZE_ONE))
GuiGameElement.of(AllBlocks.BLAZE_BURNER.getDefaultState())
.atLocal(0, 1.65, 0)
.scale(scale)
.render();
AllBlockPartials blaze = AllBlockPartials.BLAZES.get(HeatLevel.byIndex(heatLevel));
GuiGameElement.of(blaze)
.atLocal(1, 1.65, 1)
.rotate(0, 180, 0)
.scale(scale)

View file

@ -4,9 +4,9 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.simibubi.create.AllTags;
import org.apache.commons.lang3.tuple.Pair;
import com.simibubi.create.AllTags;
import com.simibubi.create.content.contraptions.particle.AirFlowParticleData;
import com.simibubi.create.content.logistics.InWorldProcessing;
import com.simibubi.create.content.logistics.InWorldProcessing.Type;
@ -17,7 +17,6 @@ import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.item.ItemEntity;
@ -38,7 +37,6 @@ import net.minecraft.util.math.shapes.ISelectionContext;
import net.minecraft.util.math.shapes.VoxelShape;
import net.minecraft.util.math.shapes.VoxelShapes;
import net.minecraft.world.World;
import net.minecraftforge.common.Tags;
public class AirCurrent {

View file

@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.components.fan;
import com.simibubi.create.AllTags.AllBlockTags;
import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity;
import com.simibubi.create.content.contraptions.processing.HeaterBlock;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock;
import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.config.CKinetics;
@ -80,7 +80,7 @@ public class EncasedFanTileEntity extends GeneratingKineticTileEntity {
if (!checkState.getBlock().isIn(AllBlockTags.FAN_HEATERS.tag))
return false;
if (checkState.has(HeaterBlock.BLAZE_LEVEL) && !checkState.get(HeaterBlock.BLAZE_LEVEL).min(HeaterBlock.HeatLevel.FADING))
if (checkState.has(BlazeBurnerBlock.HEAT_LEVEL) && !checkState.get(BlazeBurnerBlock.HEAT_LEVEL).isAtLeast(BlazeBurnerBlock.HeatLevel.FADING))
return false;
if (checkState.has(BlockStateProperties.LIT) && !checkState.get(BlockStateProperties.LIT))

View file

@ -11,7 +11,7 @@ import com.simibubi.create.content.contraptions.fluids.CombinedFluidHandler;
import com.simibubi.create.content.contraptions.processing.BasinOperatingTileEntity;
import com.simibubi.create.content.contraptions.processing.BasinTileEntity.BasinInventory;
import com.simibubi.create.content.contraptions.processing.CombinedItemFluidList;
import com.simibubi.create.content.contraptions.processing.HeaterBlock;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform;
import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour;
@ -35,8 +35,6 @@ import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraftforge.items.IItemHandler;
import static com.simibubi.create.content.contraptions.processing.HeaterBlock.getHeaterLevel;
public class MechanicalMixerTileEntity extends BasinOperatingTileEntity {
private static final Object shapelessOrMixingRecipesKey = new Object();
@ -269,12 +267,12 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity {
return running;
}
private HeaterBlock.HeatLevel getHeatLevelApplied() {
private BlazeBurnerBlock.HeatLevel getHeatLevelApplied() {
if (world == null)
return HeaterBlock.HeatLevel.NONE;
return BlazeBurnerBlock.HeatLevel.NONE;
BlockState state = world.getBlockState(pos.down(3));
if (state.has(HeaterBlock.BLAZE_LEVEL))
return state.get(HeaterBlock.BLAZE_LEVEL);
return AllTags.AllBlockTags.FAN_HEATERS.matches(state) ? HeaterBlock.HeatLevel.SMOULDERING : HeaterBlock.HeatLevel.NONE;
if (state.has(BlazeBurnerBlock.HEAT_LEVEL))
return state.get(BlazeBurnerBlock.HEAT_LEVEL);
return AllTags.AllBlockTags.FAN_HEATERS.matches(state) ? BlazeBurnerBlock.HeatLevel.SMOULDERING : BlazeBurnerBlock.HeatLevel.NONE;
}
}

View file

@ -1,144 +0,0 @@
package com.simibubi.create.content.contraptions.processing;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import com.simibubi.create.AllShapes;
import com.simibubi.create.AllTileEntities;
import com.simibubi.create.foundation.block.ITE;
import com.simibubi.create.foundation.utility.Lang;
import mcp.MethodsReturnNonnullByDefault;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.BlockItemUseContext;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.state.EnumProperty;
import net.minecraft.state.IProperty;
import net.minecraft.state.StateContainer.Builder;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.shapes.ISelectionContext;
import net.minecraft.util.math.shapes.VoxelShape;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.World;
@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class HeaterBlock extends Block implements ITE<HeaterTileEntity> {
//public static IProperty<Integer> BLAZE_LEVEL = IntegerProperty.create("blaze_level", 0, 4);
public static IProperty<HeatLevel> BLAZE_LEVEL = EnumProperty.create("blaze", HeatLevel.class);
public HeaterBlock(Properties properties) {
super(properties);
setDefaultState(super.getDefaultState().with(BLAZE_LEVEL, HeatLevel.NONE));
}
@Override
protected void fillStateContainer(Builder<Block, BlockState> builder) {
super.fillStateContainer(builder);
builder.add(BLAZE_LEVEL);
}
@Override
public boolean hasTileEntity(BlockState state) {
return state.get(BLAZE_LEVEL).min(HeatLevel.SMOULDERING);
}
@Nullable
@Override
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
return AllTileEntities.HEATER.create();
}
@Override
public Class<HeaterTileEntity> getTileEntityClass() {
return HeaterTileEntity.class;
}
@Override
public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult blockRayTraceResult) {
if (!hasTileEntity(state))
return ActionResultType.PASS;
TileEntity te = world.getTileEntity(pos);
if (!(te instanceof HeaterTileEntity))
return ActionResultType.PASS;
if (!((HeaterTileEntity) te).tryUpdateFuel(player.getHeldItem(hand), player))
return ActionResultType.PASS;
if (!player.isCreative())
player.getHeldItem(hand).shrink(1);
return ActionResultType.SUCCESS;
}
@Override
public BlockState getStateForPlacement(BlockItemUseContext context) {
if (!context.getItem().hasTag())
return getDefaultState();
CompoundNBT tag = context.getItem().getTag();
if (!tag.contains("has_blaze"))
return getDefaultState();
if (tag.getBoolean("has_blaze"))
return getDefaultState().with(BLAZE_LEVEL, HeatLevel.SMOULDERING);
return getDefaultState();
}
@Override
public VoxelShape getShape(BlockState state, IBlockReader reader, BlockPos pos, ISelectionContext context) {
return AllShapes.HEATER_BLOCK_SHAPE;
}
@Override
public VoxelShape getCollisionShape(BlockState p_220071_1_, IBlockReader p_220071_2_, BlockPos p_220071_3_, ISelectionContext p_220071_4_) {
if (p_220071_4_ == ISelectionContext.dummy())
return AllShapes.HEATER_BLOCK_SPECIAL_COLLISION_SHAPE;
return super.getShape(p_220071_1_, p_220071_2_, p_220071_3_, p_220071_4_);
}
@Override
public int getLightValue(BlockState state, IBlockReader world, BlockPos pos) {
return MathHelper.clamp(state.get(BLAZE_LEVEL).ordinal() * 4 - 1, 0, 15);
}
static void setBlazeLevel(@Nullable World world, BlockPos pos, HeatLevel blazeLevel) {
if (world != null)
world.setBlockState(pos, world.getBlockState(pos).with(BLAZE_LEVEL, blazeLevel));
}
public static HeatLevel getHeaterLevel(BlockState blockState) {
return blockState.has(HeaterBlock.BLAZE_LEVEL) ? blockState.get(HeaterBlock.BLAZE_LEVEL) : HeatLevel.NONE;
}
public enum HeatLevel implements IStringSerializable {
NONE,
SMOULDERING,
FADING,
KINDLED,
SEETHING,
//if you think you have better names let me know :)
;
@Override
public String getName() {
return Lang.asId(name());
}
public boolean min(HeatLevel heatLevel) {
return this.ordinal() >= heatLevel.ordinal();
}
}
}

View file

@ -1,92 +0,0 @@
package com.simibubi.create.content.contraptions.processing;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import mcp.MethodsReturnNonnullByDefault;
import net.minecraft.block.Block;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.monster.BlazeEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.BlockItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUseContext;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.MobSpawnerTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.WeightedSpawnerEntity;
import net.minecraft.world.World;
import net.minecraft.world.spawner.AbstractSpawner;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class HeaterBlockItem extends BlockItem {
public HeaterBlockItem(Block block, Properties properties) {
super(block, properties);
}
@Override
public ActionResultType onItemUse(ItemUseContext context) {
TileEntity te = context.getWorld()
.getTileEntity(context.getPos());
if (te instanceof MobSpawnerTileEntity) {
AbstractSpawner spawner = ((MobSpawnerTileEntity) te).getSpawnerBaseLogic();
List<WeightedSpawnerEntity> possibleSpawns = ObfuscationReflectionHelper
.getPrivateValue(AbstractSpawner.class, spawner, "field_98285_e");
if (possibleSpawns.isEmpty()) {
possibleSpawns = new ArrayList<>();
possibleSpawns.add(
ObfuscationReflectionHelper.getPrivateValue(AbstractSpawner.class, spawner, "field_98282_f"));
}
for (WeightedSpawnerEntity e : possibleSpawns) {
if (new ResourceLocation(e.getNbt().getString("id")).equals(EntityType.BLAZE.getRegistryName())) {
ItemStack itemWithBlaze = withBlaze(context.getItem());
context.getItem()
.shrink(1);
dropOrPlaceBack(context.getWorld(), context.getPlayer(), itemWithBlaze);
return ActionResultType.SUCCESS;
}
}
}
return super.onItemUse(context);
}
@Override
public boolean itemInteractionForEntity(ItemStack heldItem, PlayerEntity player, LivingEntity entity, Hand hand) {
if (entity instanceof BlazeEntity) {
ItemStack itemWithBlaze = withBlaze(heldItem);
heldItem.shrink(1);
dropOrPlaceBack(player.getEntityWorld(), player, itemWithBlaze);
entity.remove();
return true;
}
return super.itemInteractionForEntity(heldItem, player, entity, hand);
}
private static ItemStack withBlaze(ItemStack base) {
ItemStack newItem = new ItemStack(base.getItem(), 1);
CompoundNBT tag = new CompoundNBT();
tag.putBoolean("has_blaze", true);
newItem.setTag(tag);
return newItem;
}
private static void dropOrPlaceBack(@Nullable World world, @Nullable PlayerEntity player, ItemStack item) {
if (player == null)
return;
if (player instanceof FakePlayer || world == null) {
player.dropItem(item, false, false);
} else {
player.inventory.placeItemBackInInventory(world, item);
}
}
}

View file

@ -1,35 +0,0 @@
package com.simibubi.create.content.contraptions.processing;
import java.util.HashMap;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
import com.simibubi.create.foundation.utility.SuperByteBuffer;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.util.Direction;
public class HeaterRenderer extends SafeTileEntityRenderer<HeaterTileEntity> {
private static final HashMap<HeaterBlock.HeatLevel, AllBlockPartials> blazeModelMap = new HashMap<>();
public HeaterRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
blazeModelMap.put(HeaterBlock.HeatLevel.FADING, AllBlockPartials.BLAZE_HEATER_BLAZE_TWO);
blazeModelMap.put(HeaterBlock.HeatLevel.KINDLED, AllBlockPartials.BLAZE_HEATER_BLAZE_THREE);
blazeModelMap.put(HeaterBlock.HeatLevel.SEETHING, AllBlockPartials.BLAZE_HEATER_BLAZE_FOUR);
}
@Override
protected void renderSafe(HeaterTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer,
int light, int overlay) {
AllBlockPartials blazeModel =
blazeModelMap.getOrDefault(te.getHeatLevel(), AllBlockPartials.BLAZE_HEATER_BLAZE_ONE);
SuperByteBuffer blazeBuffer = blazeModel.renderOn(te.getBlockState());
blazeBuffer.rotateCentered(Direction.UP, (float) Math.toRadians(-te.rot + (te.speed * partialTicks)));
blazeBuffer.light(0xF000F0).renderInto(ms, buffer.getBuffer(RenderType.getSolid()));
}
}

View file

@ -0,0 +1,184 @@
package com.simibubi.create.content.contraptions.processing.burner;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllShapes;
import com.simibubi.create.AllTileEntities;
import com.simibubi.create.foundation.block.ITE;
import com.simibubi.create.foundation.utility.Lang;
import mcp.MethodsReturnNonnullByDefault;
import net.minecraft.advancements.criterion.StatePropertiesPredicate;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.BlockItemUseContext;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.state.EnumProperty;
import net.minecraft.state.IProperty;
import net.minecraft.state.StateContainer.Builder;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.util.IItemProvider;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.shapes.ISelectionContext;
import net.minecraft.util.math.shapes.VoxelShape;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.World;
import net.minecraft.world.storage.loot.ConstantRange;
import net.minecraft.world.storage.loot.ItemLootEntry;
import net.minecraft.world.storage.loot.LootPool;
import net.minecraft.world.storage.loot.LootTable;
import net.minecraft.world.storage.loot.conditions.BlockStateProperty;
import net.minecraft.world.storage.loot.conditions.ILootCondition.IBuilder;
import net.minecraft.world.storage.loot.conditions.SurvivesExplosion;
@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class BlazeBurnerBlock extends Block implements ITE<BlazeBurnerTileEntity> {
public static IProperty<HeatLevel> HEAT_LEVEL = EnumProperty.create("blaze", HeatLevel.class);
public BlazeBurnerBlock(Properties properties) {
super(properties);
setDefaultState(super.getDefaultState().with(HEAT_LEVEL, HeatLevel.NONE));
}
@Override
protected void fillStateContainer(Builder<Block, BlockState> builder) {
super.fillStateContainer(builder);
builder.add(HEAT_LEVEL);
}
@Override
public boolean hasTileEntity(BlockState state) {
return state.get(HEAT_LEVEL)
.isAtLeast(HeatLevel.SMOULDERING);
}
@Override
public void fillItemGroup(ItemGroup p_149666_1_, NonNullList<ItemStack> p_149666_2_) {
p_149666_2_.add(AllItems.EMPTY_BLAZE_BURNER.asStack());
super.fillItemGroup(p_149666_1_, p_149666_2_);
}
@Nullable
@Override
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
return AllTileEntities.HEATER.create();
}
@Override
public Class<BlazeBurnerTileEntity> getTileEntityClass() {
return BlazeBurnerTileEntity.class;
}
@Override
public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand,
BlockRayTraceResult blockRayTraceResult) {
if (!hasTileEntity(state))
return ActionResultType.PASS;
TileEntity te = world.getTileEntity(pos);
if (!(te instanceof BlazeBurnerTileEntity))
return ActionResultType.PASS;
if (!((BlazeBurnerTileEntity) te).tryUpdateFuel(player.getHeldItem(hand), player))
return ActionResultType.PASS;
if (!player.isCreative())
player.getHeldItem(hand)
.shrink(1);
return ActionResultType.SUCCESS;
}
@Override
public BlockState getStateForPlacement(BlockItemUseContext context) {
ItemStack stack = context.getItem();
Item item = stack.getItem();
BlockState defaultState = getDefaultState();
if (!(item instanceof BlazeBurnerBlockItem))
return defaultState;
HeatLevel initialHeat =
((BlazeBurnerBlockItem) item).hasCapturedBlaze() ? HeatLevel.SMOULDERING : HeatLevel.NONE;
return defaultState.with(HEAT_LEVEL, initialHeat);
}
@Override
public VoxelShape getShape(BlockState state, IBlockReader reader, BlockPos pos, ISelectionContext context) {
return AllShapes.HEATER_BLOCK_SHAPE;
}
@Override
public VoxelShape getCollisionShape(BlockState p_220071_1_, IBlockReader p_220071_2_, BlockPos p_220071_3_,
ISelectionContext p_220071_4_) {
if (p_220071_4_ == ISelectionContext.dummy())
return AllShapes.HEATER_BLOCK_SPECIAL_COLLISION_SHAPE;
return getShape(p_220071_1_, p_220071_2_, p_220071_3_, p_220071_4_);
}
@Override
public int getLightValue(BlockState state, IBlockReader world, BlockPos pos) {
return MathHelper.clamp(state.get(HEAT_LEVEL)
.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.has(BlazeBurnerBlock.HEAT_LEVEL) ? blockState.get(BlazeBurnerBlock.HEAT_LEVEL)
: HeatLevel.NONE;
}
public static LootTable.Builder buildLootTable() {
IBuilder survivesExplosion = SurvivesExplosion.builder();
BlazeBurnerBlock block = AllBlocks.BLAZE_BURNER.get();
LootTable.Builder builder = LootTable.builder();
LootPool.Builder poolBuilder = LootPool.builder();
for (HeatLevel level : HeatLevel.values()) {
IItemProvider drop =
level == HeatLevel.NONE ? AllItems.EMPTY_BLAZE_BURNER.get() : AllBlocks.BLAZE_BURNER.get();
poolBuilder.addEntry(ItemLootEntry.builder(drop)
.acceptCondition(survivesExplosion)
.acceptCondition(BlockStateProperty.builder(block)
.func_227567_a_(StatePropertiesPredicate.Builder.create()
.exactMatch(HEAT_LEVEL, level))));
}
builder.addLootPool(poolBuilder.rolls(ConstantRange.of(1)));
return builder;
}
public enum HeatLevel implements IStringSerializable {
NONE, SMOULDERING, FADING, KINDLED, SEETHING,;
public static HeatLevel byIndex(int index) {
return values()[index];
}
@Override
public String getName() {
return Lang.asId(name());
}
public boolean isAtLeast(HeatLevel heatLevel) {
return this.ordinal() >= heatLevel.ordinal();
}
}
}

View file

@ -0,0 +1,167 @@
package com.simibubi.create.content.contraptions.processing.burner;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.ParametersAreNonnullByDefault;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.utility.VecHelper;
import mcp.MethodsReturnNonnullByDefault;
import net.minecraft.block.Block;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.monster.BlazeEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUseContext;
import net.minecraft.particles.ParticleTypes;
import net.minecraft.tileentity.MobSpawnerTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.SoundEvents;
import net.minecraft.util.WeightedSpawnerEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
import net.minecraft.world.spawner.AbstractSpawner;
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class BlazeBurnerBlockItem extends BlockItem {
private boolean capturedBlaze;
public static BlazeBurnerBlockItem empty(Properties properties) {
return new BlazeBurnerBlockItem(AllBlocks.BLAZE_BURNER.get(), properties, false);
}
public static BlazeBurnerBlockItem withBlaze(Block block, Properties properties) {
return new BlazeBurnerBlockItem(block, properties, true);
}
@Override
public void addToBlockToItemMap(Map<Block, Item> p_195946_1_, Item p_195946_2_) {
if (!hasCapturedBlaze())
return;
super.addToBlockToItemMap(p_195946_1_, p_195946_2_);
}
private BlazeBurnerBlockItem(Block block, Properties properties, boolean capturedBlaze) {
super(block, properties);
this.capturedBlaze = capturedBlaze;
}
@Override
public void fillItemGroup(ItemGroup p_150895_1_, NonNullList<ItemStack> p_150895_2_) {
if (!hasCapturedBlaze())
return;
super.fillItemGroup(p_150895_1_, p_150895_2_);
}
@Override
public String getTranslationKey() {
return hasCapturedBlaze() ? super.getTranslationKey() : "item.create." + getRegistryName().getPath();
}
@Override
public ActionResultType onItemUse(ItemUseContext context) {
if (hasCapturedBlaze())
return super.onItemUse(context);
World world = context.getWorld();
BlockPos pos = context.getPos();
TileEntity te = world.getTileEntity(pos);
PlayerEntity player = context.getPlayer();
if (!(te instanceof MobSpawnerTileEntity))
return super.onItemUse(context);
AbstractSpawner spawner = ((MobSpawnerTileEntity) te).getSpawnerBaseLogic();
List<WeightedSpawnerEntity> possibleSpawns =
ObfuscationReflectionHelper.getPrivateValue(AbstractSpawner.class, spawner, "field_98285_e");
if (possibleSpawns.isEmpty()) {
possibleSpawns = new ArrayList<>();
possibleSpawns
.add(ObfuscationReflectionHelper.getPrivateValue(AbstractSpawner.class, spawner, "field_98282_f"));
}
ResourceLocation blazeId = EntityType.BLAZE.getRegistryName();
for (WeightedSpawnerEntity e : possibleSpawns) {
ResourceLocation spawnerEntityId = new ResourceLocation(e.getNbt()
.getString("id"));
if (!spawnerEntityId.equals(blazeId))
continue;
spawnCaptureEffects(world, VecHelper.getCenterOf(pos));
if (world.isRemote)
return ActionResultType.SUCCESS;
giveBurnerItemTo(player, context.getItem(), context.getHand());
return ActionResultType.SUCCESS;
}
return super.onItemUse(context);
}
@Override
public boolean itemInteractionForEntity(ItemStack heldItem, PlayerEntity player, LivingEntity entity, Hand hand) {
if (hasCapturedBlaze())
return false;
if (!(entity instanceof BlazeEntity))
return false;
World world = player.world;
spawnCaptureEffects(world, entity.getPositionVec());
if (world.isRemote)
return true;
giveBurnerItemTo(player, heldItem, hand);
entity.remove();
return true;
}
protected void giveBurnerItemTo(PlayerEntity player, ItemStack heldItem, Hand hand) {
ItemStack filled = AllBlocks.BLAZE_BURNER.asStack();
if (!player.isCreative())
heldItem.shrink(1);
if (heldItem.isEmpty()) {
player.setHeldItem(hand, filled);
return;
}
player.inventory.placeItemBackInInventory(player.world, filled);
}
private void spawnCaptureEffects(World world, Vec3d vec) {
if (world.isRemote) {
for (int i = 0; i < 40; i++) {
Vec3d motion = VecHelper.offsetRandomly(Vec3d.ZERO, world.rand, .125f);
world.addParticle(ParticleTypes.FLAME, vec.x, vec.y, vec.z, motion.x, motion.y, motion.z);
Vec3d circle = motion.mul(1, 0, 1)
.normalize()
.scale(.5f);
world.addParticle(ParticleTypes.SMOKE, circle.x, vec.y, circle.z, 0, -0.125, 0);
}
return;
}
BlockPos soundPos = new BlockPos(vec);
world.playSound(null, soundPos, SoundEvents.ENTITY_BLAZE_HURT, SoundCategory.HOSTILE, .25f, .75f);
world.playSound(null, soundPos, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.HOSTILE, .5f, .75f);
}
public boolean hasCapturedBlaze() {
return capturedBlaze;
}
}

View file

@ -0,0 +1,39 @@
package com.simibubi.create.content.contraptions.processing.burner;
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.AnimationTickHolder;
import com.simibubi.create.foundation.utility.SuperByteBuffer;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.util.Direction;
import net.minecraft.util.math.MathHelper;
public class BlazeBurnerRenderer extends SafeTileEntityRenderer<BlazeBurnerTileEntity> {
public BlazeBurnerRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
protected void renderSafe(BlazeBurnerTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer,
int light, int overlay) {
HeatLevel heatLevel = te.getHeatLevel();
if (heatLevel == HeatLevel.NONE)
return;
float renderTick = AnimationTickHolder.getRenderTick() + (te.hashCode() % 13) * 16f;
float offset = (MathHelper.sin((float) ((renderTick / 16f) % (2 * Math.PI))) + .5f) / 16f;
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.translate(0, offset, 0);
blazeBuffer.light(0xF000F0)
.renderInto(ms, buffer.getBuffer(RenderType.getSolid()));
}
}

View file

@ -1,4 +1,4 @@
package com.simibubi.create.content.contraptions.processing;
package com.simibubi.create.content.contraptions.processing.burner;
import java.util.List;
import java.util.Random;
@ -32,7 +32,7 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
@Mod.EventBusSubscriber
public class HeaterTileEntity extends SmartTileEntity {
public class BlazeBurnerTileEntity extends SmartTileEntity {
private final static int[][] heatParticleColors = {
{0x3B141A, 0x47141A, 0x7A3B24, 0x854D26},
@ -49,7 +49,7 @@ public class HeaterTileEntity extends SmartTileEntity {
// Rendering state
float rot, speed;
public HeaterTileEntity(TileEntityType<? extends HeaterTileEntity> tileEntityTypeIn) {
public BlazeBurnerTileEntity(TileEntityType<? extends BlazeBurnerTileEntity> tileEntityTypeIn) {
super(tileEntityTypeIn);
activeFuel = FuelType.NONE;
remainingBurnTime = 0;
@ -165,7 +165,6 @@ public class HeaterTileEntity extends SmartTileEntity {
activeFuel = FuelType.values()[compound.getInt("fuelLevel")];
remainingBurnTime = compound.getInt("burnTimeRemaining");
super.read(compound);
updateHeatLevel();
}
/**
@ -198,48 +197,48 @@ public class HeaterTileEntity extends SmartTileEntity {
return true;
}
public HeaterBlock.HeatLevel getHeatLevel() {
return HeaterBlock.getHeaterLevel(getBlockState());
public BlazeBurnerBlock.HeatLevel getHeatLevel() {
return BlazeBurnerBlock.getHeatLevelOf(getBlockState());
}
private void updateHeatLevel() {
switch (activeFuel) {
case SPECIAL:
HeaterBlock.setBlazeLevel(world, pos, HeaterBlock.HeatLevel.SEETHING);
BlazeBurnerBlock.setBlazeLevel(world, pos, BlazeBurnerBlock.HeatLevel.SEETHING);
break;
case NORMAL:
boolean lowPercent = (double) remainingBurnTime / maxHeatCapacity < 0.1;
HeaterBlock.setBlazeLevel(world, pos, lowPercent ? HeaterBlock.HeatLevel.FADING : HeaterBlock.HeatLevel.KINDLED);
BlazeBurnerBlock.setBlazeLevel(world, pos, lowPercent ? BlazeBurnerBlock.HeatLevel.FADING : BlazeBurnerBlock.HeatLevel.KINDLED);
break;
case NONE:
HeaterBlock.setBlazeLevel(world, pos, HeaterBlock.HeatLevel.SMOULDERING);
BlazeBurnerBlock.setBlazeLevel(world, pos, BlazeBurnerBlock.HeatLevel.SMOULDERING);
}
}
private void spawnParticles(HeaterBlock.HeatLevel heatLevel) {
private void spawnParticles(BlazeBurnerBlock.HeatLevel heatLevel) {
if (world == null)
return;
if (heatLevel == HeaterBlock.HeatLevel.NONE)
if (heatLevel == BlazeBurnerBlock.HeatLevel.NONE)
return;
Random r = world.getRandom();
if (heatLevel == HeaterBlock.HeatLevel.SMOULDERING) {
if (heatLevel == BlazeBurnerBlock.HeatLevel.SMOULDERING) {
if (r.nextDouble() > 0.25)
return;
Vec3d color = randomColor(heatLevel);
spawnParticle(new CubeParticleData((float) color.x,(float) color.y,(float) color.z, 0.03F, 15), 0.015, 0.1);
} else if (heatLevel == HeaterBlock.HeatLevel.FADING) {
} else if (heatLevel == BlazeBurnerBlock.HeatLevel.FADING) {
if (r.nextDouble() > 0.5)
return;
Vec3d color = randomColor(heatLevel);
spawnParticle(new CubeParticleData((float) color.x,(float) color.y,(float) color.z, 0.035F, 18), 0.03, 0.15);
} else if (heatLevel == HeaterBlock.HeatLevel.KINDLED) {
} else if (heatLevel == BlazeBurnerBlock.HeatLevel.KINDLED) {
Vec3d color = randomColor(heatLevel);
spawnParticle(new CubeParticleData((float) color.x,(float) color.y,(float) color.z, 0.04F, 21), 0.05, 0.2);
}else if (heatLevel == HeaterBlock.HeatLevel.SEETHING) {
}else if (heatLevel == BlazeBurnerBlock.HeatLevel.SEETHING) {
for (int i = 0; i < 2; i++) {
if (r.nextDouble() > 0.6)
return;
@ -262,8 +261,8 @@ public class HeaterTileEntity extends SmartTileEntity {
0.0D);
}
private static Vec3d randomColor(HeaterBlock.HeatLevel heatLevel) {
if (heatLevel == HeaterBlock.HeatLevel.NONE)
private static Vec3d randomColor(BlazeBurnerBlock.HeatLevel heatLevel) {
if (heatLevel == BlazeBurnerBlock.HeatLevel.NONE)
return new Vec3d(0,0,0);
return ColorHelper.getRGB(heatParticleColors[heatLevel.ordinal()-1][(int) (Math.random()*4)]);
@ -278,7 +277,7 @@ public class HeaterTileEntity extends SmartTileEntity {
return;
TileEntity tile = event.getThrowable().world.getTileEntity(new BlockPos(event.getRayTraceResult().getHitVec()));
if (!(tile instanceof HeaterTileEntity)) {
if (!(tile instanceof BlazeBurnerTileEntity)) {
return;
}
@ -286,7 +285,7 @@ public class HeaterTileEntity extends SmartTileEntity {
event.getThrowable().setMotion(Vec3d.ZERO);
event.getThrowable().remove();
HeaterTileEntity heater = (HeaterTileEntity) tile;
BlazeBurnerTileEntity heater = (BlazeBurnerTileEntity) tile;
if (heater.activeFuel != FuelType.SPECIAL) {
heater.activeFuel = FuelType.NORMAL;
heater.remainingBurnTime = MathHelper.clamp(heater.remainingBurnTime + 80, 0, maxHeatCapacity);

View file

@ -1,5 +1,7 @@
package com.simibubi.create.content.logistics;
import static com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.getHeatLevelOf;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -7,8 +9,8 @@ import java.util.Optional;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe;
import com.simibubi.create.content.contraptions.processing.HeaterBlock;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock;
import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.item.ItemHelper;
@ -40,8 +42,6 @@ import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.items.ItemStackHandler;
import net.minecraftforge.items.wrapper.RecipeWrapper;
import static com.simibubi.create.content.contraptions.processing.HeaterBlock.getHeaterLevel;
public class InWorldProcessing {
public static class SplashingInv extends RecipeWrapper {
@ -63,9 +63,9 @@ public class InWorldProcessing {
if (fluidState.getFluid() == Fluids.WATER || fluidState.getFluid() == Fluids.FLOWING_WATER)
return Type.SPLASHING;
if (blockState.getBlock() == Blocks.FIRE
|| (blockState.getBlock() == Blocks.CAMPFIRE && blockState.get(CampfireBlock.LIT)) || getHeaterLevel(blockState) == HeaterBlock.HeatLevel.SMOULDERING)
|| (blockState.getBlock() == Blocks.CAMPFIRE && blockState.get(CampfireBlock.LIT)) || getHeatLevelOf(blockState) == BlazeBurnerBlock.HeatLevel.SMOULDERING)
return Type.SMOKING;
if (blockState.getBlock() == Blocks.LAVA || getHeaterLevel(blockState).min(HeaterBlock.HeatLevel.FADING))
if (blockState.getBlock() == Blocks.LAVA || getHeatLevelOf(blockState).isAtLeast(BlazeBurnerBlock.HeatLevel.FADING))
return Type.BLASTING;
return null;
}

View file

@ -20,7 +20,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.mou
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock;
import com.simibubi.create.content.contraptions.components.tracks.ReinforcedRailBlock;
import com.simibubi.create.content.contraptions.fluids.FluidPipeBlock;
import com.simibubi.create.content.contraptions.processing.HeaterBlock;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock;
import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverBlock;
import com.simibubi.create.content.palettes.PavedBlock;
import com.simibubi.create.foundation.utility.Iterate;
@ -213,7 +213,7 @@ public class BlockStateGen {
});
}
public static NonNullBiConsumer<DataGenContext<Block, HeaterBlock>, RegistrateBlockstateProvider> blazeHeater(){
public static NonNullBiConsumer<DataGenContext<Block, BlazeBurnerBlock>, RegistrateBlockstateProvider> blazeHeater(){
return (c, p) -> ConfiguredModel.builder().modelFile(p.models().getExistingFile(p.modLoc("block/" + c.getName() + "/block"))).build();
}

View file

@ -13,10 +13,12 @@ import net.minecraft.util.math.Vec3i;
public class VecHelper {
public static final Vec3d CENTER_OF_ORIGIN = new Vec3d(.5, .5, .5);
public static Vec3d rotate(Vec3d vec, Vec3d rotationVec) {
return rotate(vec, rotationVec.x, rotationVec.y, rotationVec.z);
}
public static Vec3d rotate(Vec3d vec, double xRot, double yRot, double zRot) {
return rotate(rotate(rotate(vec, xRot, Axis.X), yRot, Axis.Y), zRot, Axis.Z);
}
@ -54,6 +56,8 @@ public class VecHelper {
}
public static Vec3d getCenterOf(Vec3i pos) {
if (pos.equals(Vec3i.NULL_VECTOR))
return CENTER_OF_ORIGIN;
return new Vec3d(pos).add(.5f, .5f, .5f);
}

View file

@ -0,0 +1,23 @@
{
"credit": "Made with Blockbench",
"textures": {
"2": "create:block/blaze_smouldering",
"particle": "create:block/blaze_smouldering"
},
"elements": [
{
"name": "Blaze 3",
"from": [5, 6, 5],
"to": [11, 12, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 7]},
"faces": {
"north": {"uv": [6, 0, 12, 6], "texture": "#2"},
"east": {"uv": [0, 0, 6, 6], "texture": "#2"},
"south": {"uv": [0, 0, 6, 6], "texture": "#2"},
"west": {"uv": [0, 0, 6, 6], "texture": "#2"},
"up": {"uv": [0, 6, 6, 12], "texture": "#2"},
"down": {"uv": [6, 6, 12, 12], "texture": "#2"}
}
}
]
}

View file

@ -0,0 +1,23 @@
{
"credit": "Made with Blockbench",
"textures": {
"2": "create:block/blaze_kindled",
"particle": "create:block/blaze_kindled"
},
"elements": [
{
"name": "Blaze 4",
"from": [4, 6, 4],
"to": [12, 14, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 6, 6]},
"faces": {
"north": {"uv": [8, 0, 16, 8], "texture": "#2"},
"east": {"uv": [0, 0, 8, 8], "texture": "#2"},
"south": {"uv": [0, 0, 8, 8], "texture": "#2"},
"west": {"uv": [0, 0, 8, 8], "texture": "#2"},
"up": {"uv": [0, 8, 8, 16], "texture": "#2"},
"down": {"uv": [8, 8, 16, 16], "texture": "#2"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"textures": {
"1": "create:block/blaze_seething"
},
"elements": [
{
"name": "Blaze 5",
"from": [4, 6, 4],
"to": [12, 14, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 6, 6]},
"faces": {
"north": {"uv": [8, 0, 16, 8], "texture": "#1"},
"east": {"uv": [0, 0, 8, 8], "texture": "#1"},
"south": {"uv": [0, 0, 8, 8], "texture": "#1"},
"west": {"uv": [0, 0, 8, 8], "texture": "#1"},
"up": {"uv": [0, 8, 8, 16], "texture": "#1"},
"down": {"uv": [8, 8, 16, 16], "texture": "#1"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"textures": {
"2": "create:block/blaze_smouldering",
"particle": "create:block/blaze_smouldering"
},
"elements": [
{
"name": "Blaze",
"from": [6, 6, 6],
"to": [10, 10, 10],
"faces": {
"north": {"uv": [0, 12, 4, 16], "texture": "#2"},
"east": {"uv": [8, 12, 4, 16], "texture": "#2"},
"south": {"uv": [4, 12, 8, 16], "texture": "#2"},
"west": {"uv": [4, 12, 8, 16], "texture": "#2"},
"up": {"uv": [8, 12, 12, 16], "texture": "#2"},
"down": {"uv": [12, 12, 16, 16], "texture": "#2"}
}
}
]
}

View file

@ -2,8 +2,10 @@
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "create:block/blaze_heater_brazier",
"particle": "create:block/blaze_heater_brazier"
"1": "create:block/blaze_burner_inner",
"2": "create:block/blaze_burner_side",
"3": "create:block/dark_metal_block",
"particle": "create:block/dark_metal_block"
},
"elements": [
{
@ -11,10 +13,10 @@
"from": [2, 5, 2],
"to": [14, 14, 14],
"faces": {
"north": {"uv": [1, 1, 7, 5.5], "texture": "#0"},
"east": {"uv": [1, 1, 7, 5.5], "texture": "#0"},
"south": {"uv": [1, 1, 7, 5.5], "texture": "#0"},
"west": {"uv": [1, 1, 7, 5.5], "texture": "#0"}
"north": {"uv": [0, 6, 12, 15], "texture": "#2"},
"east": {"uv": [0, 6, 12, 15], "texture": "#2"},
"south": {"uv": [0, 6, 12, 15], "texture": "#2"},
"west": {"uv": [0, 6, 12, 15], "texture": "#2"}
}
},
{
@ -22,7 +24,7 @@
"from": [2, 5, 14],
"to": [14, 14, 15],
"faces": {
"north": {"uv": [1, 1, 7, 5.5], "texture": "#0"}
"north": {"uv": [12, 6, 0, 15], "texture": "#2"}
}
},
{
@ -30,7 +32,7 @@
"from": [1, 5, 2],
"to": [2, 14, 14],
"faces": {
"east": {"uv": [1, 1, 7, 5.5], "texture": "#0"}
"east": {"uv": [12, 6, 0, 15], "texture": "#2"}
}
},
{
@ -38,7 +40,7 @@
"from": [2, 5, 1],
"to": [14, 14, 2],
"faces": {
"south": {"uv": [1, 1, 7, 5.5], "texture": "#0"}
"south": {"uv": [12, 6, 0, 15], "texture": "#2"}
}
},
{
@ -46,7 +48,7 @@
"from": [14, 5, 2],
"to": [15, 14, 14],
"faces": {
"west": {"uv": [1, 1, 7, 5.5], "texture": "#0"}
"west": {"uv": [12, 6, 0, 15], "texture": "#2"}
}
},
{
@ -55,7 +57,7 @@
"to": [14, 17, 14],
"rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 14]},
"faces": {
"south": {"uv": [8, 8, 14, 9.5], "texture": "#0"}
"south": {"uv": [0, 3, 12, 6], "texture": "#2"}
}
},
{
@ -64,7 +66,7 @@
"to": [3, 17, 14],
"rotation": {"angle": 45, "axis": "z", "origin": [2, 14, 8]},
"faces": {
"west": {"uv": [8, 8, 14, 9.5], "texture": "#0"}
"west": {"uv": [0, 3, 12, 6], "texture": "#2"}
}
},
{
@ -73,7 +75,7 @@
"to": [14, 17, 3],
"rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 2]},
"faces": {
"north": {"uv": [8, 8, 14, 9.5], "texture": "#0"}
"north": {"uv": [0, 3, 12, 6], "texture": "#2"}
}
},
{
@ -82,7 +84,7 @@
"to": [14, 17, 14],
"rotation": {"angle": -45, "axis": "z", "origin": [14, 14, 8]},
"faces": {
"east": {"uv": [8, 8, 14, 9.5], "texture": "#0"}
"east": {"uv": [0, 3, 12, 6], "texture": "#2"}
}
},
{
@ -91,34 +93,34 @@
"to": [14, 17, 15],
"rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 14]},
"faces": {
"north": {"uv": [8, 8, 14, 9.5], "texture": "#0"}
"north": {"uv": [12, 3, 0, 6], "texture": "#2"}
}
},
{
"name": "Brazier Spikes 2b",
"name": "Brazier Spikes 1b",
"from": [1, 14, 2],
"to": [2, 17, 14],
"rotation": {"angle": 45, "axis": "z", "origin": [2, 14, 8]},
"faces": {
"east": {"uv": [8, 8, 14, 9.5], "texture": "#0"}
"east": {"uv": [12, 3, 0, 6], "texture": "#2"}
}
},
{
"name": "Brazier Spikes 3b",
"name": "Brazier Spikes 1b",
"from": [2, 14, 1],
"to": [14, 17, 2],
"rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 2]},
"faces": {
"south": {"uv": [8, 8, 14, 9.5], "texture": "#0"}
"south": {"uv": [12, 3, 0, 6], "texture": "#2"}
}
},
{
"name": "Brazier Spikes 4b",
"name": "Brazier Spikes 1b",
"from": [14, 14, 2],
"to": [15, 17, 14],
"rotation": {"angle": -45, "axis": "z", "origin": [14, 14, 8]},
"faces": {
"west": {"uv": [8, 8, 14, 9.5], "texture": "#0"}
"west": {"uv": [12, 3, 0, 6], "texture": "#2"}
}
},
{
@ -127,12 +129,12 @@
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0.5, 8, 0.5]},
"faces": {
"north": {"uv": [0, 6, 8, 8], "texture": "#0", "cullface": "north"},
"east": {"uv": [0, 6, 8, 8], "texture": "#0", "cullface": "east"},
"south": {"uv": [0, 6, 8, 8], "texture": "#0", "cullface": "south"},
"west": {"uv": [0, 6, 8, 8], "texture": "#0", "cullface": "west"},
"up": {"uv": [8, 0, 16, 8], "texture": "#0"},
"down": {"uv": [0, 8, 8, 16], "texture": "#0", "cullface": "down"}
"north": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"},
"east": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"},
"south": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"},
"west": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#3", "cullface": "down"}
}
},
{
@ -141,11 +143,11 @@
"to": [14, 5, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [2.5, 8, 2.5]},
"faces": {
"north": {"uv": [1, 5.5, 7, 6], "texture": "#0"},
"east": {"uv": [1, 5.5, 7, 6], "texture": "#0"},
"south": {"uv": [1, 5.5, 7, 6], "texture": "#0"},
"west": {"uv": [1, 5.5, 7, 6], "texture": "#0"},
"up": {"uv": [9, 1, 15, 7], "texture": "#0"}
"north": {"uv": [0, 15, 12, 16], "texture": "#2"},
"east": {"uv": [0, 15, 12, 16], "texture": "#2"},
"south": {"uv": [0, 15, 12, 16], "texture": "#2"},
"west": {"uv": [0, 15, 12, 16], "texture": "#2"},
"up": {"uv": [2, 2, 14, 14], "texture": "#1"}
}
}
],
@ -164,11 +166,6 @@
"origin": [0.5, 0.5, 0.5],
"children": [5, 6, 7, 8, 9, 10, 11, 12]
}, 13, 14]
},
{
"name": "Blazes",
"origin": [8, 8, 8],
"children": []
}
]
}

View file

@ -0,0 +1,191 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"1": "create:block/blaze_burner_inner",
"2": "create:block/blaze_burner_side",
"3": "create:block/dark_metal_block",
"particle": "create:block/dark_metal_block",
"2_2": "create:block/blaze_kindled"
},
"elements": [
{
"name": "Brazier Sides 1",
"from": [2, 5, 2],
"to": [14, 14, 14],
"faces": {
"north": {"uv": [0, 6, 12, 15], "texture": "#2"},
"east": {"uv": [0, 6, 12, 15], "texture": "#2"},
"south": {"uv": [0, 6, 12, 15], "texture": "#2"},
"west": {"uv": [0, 6, 12, 15], "texture": "#2"}
}
},
{
"name": "Brazier Sides 2",
"from": [2, 5, 14],
"to": [14, 14, 15],
"faces": {
"north": {"uv": [12, 6, 0, 15], "texture": "#2"}
}
},
{
"name": "Brazier Sides 3",
"from": [1, 5, 2],
"to": [2, 14, 14],
"faces": {
"east": {"uv": [12, 6, 0, 15], "texture": "#2"}
}
},
{
"name": "Brazier Sides 4",
"from": [2, 5, 1],
"to": [14, 14, 2],
"faces": {
"south": {"uv": [12, 6, 0, 15], "texture": "#2"}
}
},
{
"name": "Brazier Sides 5",
"from": [14, 5, 2],
"to": [15, 14, 14],
"faces": {
"west": {"uv": [12, 6, 0, 15], "texture": "#2"}
}
},
{
"name": "Brazier Spikes 1",
"from": [2, 14, 13],
"to": [14, 17, 14],
"rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 14]},
"faces": {
"south": {"uv": [0, 3, 12, 6], "texture": "#2"}
}
},
{
"name": "Brazier Spikes 2",
"from": [2, 14, 2],
"to": [3, 17, 14],
"rotation": {"angle": 45, "axis": "z", "origin": [2, 14, 8]},
"faces": {
"west": {"uv": [0, 3, 12, 6], "texture": "#2"}
}
},
{
"name": "Brazier Spikes 3",
"from": [2, 14, 2],
"to": [14, 17, 3],
"rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 2]},
"faces": {
"north": {"uv": [0, 3, 12, 6], "texture": "#2"}
}
},
{
"name": "Brazier Spikes 4",
"from": [13, 14, 2],
"to": [14, 17, 14],
"rotation": {"angle": -45, "axis": "z", "origin": [14, 14, 8]},
"faces": {
"east": {"uv": [0, 3, 12, 6], "texture": "#2"}
}
},
{
"name": "Brazier Spikes 1b",
"from": [2, 14, 14],
"to": [14, 17, 15],
"rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 14]},
"faces": {
"north": {"uv": [12, 3, 0, 6], "texture": "#2"}
}
},
{
"name": "Brazier Spikes 1b",
"from": [1, 14, 2],
"to": [2, 17, 14],
"rotation": {"angle": 45, "axis": "z", "origin": [2, 14, 8]},
"faces": {
"east": {"uv": [12, 3, 0, 6], "texture": "#2"}
}
},
{
"name": "Brazier Spikes 1b",
"from": [2, 14, 1],
"to": [14, 17, 2],
"rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 2]},
"faces": {
"south": {"uv": [12, 3, 0, 6], "texture": "#2"}
}
},
{
"name": "Brazier Spikes 1b",
"from": [14, 14, 2],
"to": [15, 17, 14],
"rotation": {"angle": -45, "axis": "z", "origin": [14, 14, 8]},
"faces": {
"west": {"uv": [12, 3, 0, 6], "texture": "#2"}
}
},
{
"name": "Base",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0.5, 8, 0.5]},
"faces": {
"north": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2", "cullface": "west"},
"east": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2", "cullface": "west"},
"south": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2", "cullface": "west"},
"west": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#3", "cullface": "down"}
}
},
{
"name": "Brazier bottom",
"from": [2, 4, 2],
"to": [14, 5, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [2.5, 8, 2.5]},
"faces": {
"north": {"uv": [0, 15, 12, 16], "texture": "#2"},
"east": {"uv": [0, 15, 12, 16], "texture": "#2"},
"south": {"uv": [0, 15, 12, 16], "texture": "#2"},
"west": {"uv": [0, 15, 12, 16], "texture": "#2"},
"up": {"uv": [2, 2, 14, 14], "texture": "#1"}
}
},
{
"name": "Blaze 4",
"from": [4, 6, 4],
"to": [12, 14, 12],
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [8, 0, 16, 8], "texture": "#2_2"},
"east": {"uv": [0, 0, 8, 8], "texture": "#2_2"},
"south": {"uv": [0, 0, 8, 8], "texture": "#2_2"},
"west": {"uv": [0, 0, 8, 8], "texture": "#2_2"},
"up": {"uv": [0, 8, 8, 16], "texture": "#2_2"},
"down": {"uv": [8, 8, 16, 16], "texture": "#2_2"}
}
}
],
"groups": [
{
"name": "Brazier",
"origin": [0.5, 0.5, 0.5],
"children": [
{
"name": "Brazier Sides",
"origin": [0.5, 0.5, 0.5],
"children": [0, 1, 2, 3, 4]
},
{
"name": "Brazier Spikes",
"origin": [0.5, 0.5, 0.5],
"children": [5, 6, 7, 8, 9, 10, 11, 12]
}, 13, 14]
},
{
"name": "kindled",
"origin": [8, 8, 8],
"children": [15]
}
]
}

View file

@ -1,29 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"1": "create:block/tamed_blaze"
},
"elements": [
{
"name": "Blaze 4",
"from": [4, 6, 4],
"to": [12, 14, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 6, 6]},
"faces": {
"north": {"uv": [12, 0, 16, 4], "texture": "#1"},
"east": {"uv": [8, 0, 12, 4], "texture": "#1"},
"south": {"uv": [8, 0, 12, 4], "texture": "#1"},
"west": {"uv": [8, 0, 12, 4], "texture": "#1"},
"up": {"uv": [8, 4, 12, 8], "texture": "#1"},
"down": {"uv": [12, 4, 16, 8], "texture": "#1"}
}
}
],
"groups": [
{
"name": "Blazes",
"origin": [8, 8, 8],
"children": [15, 16, 17, 18]
}
]
}

View file

@ -1,28 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"1": "create:block/tamed_blaze"
},
"elements": [
{
"name": "Blaze 1",
"from": [6, 6, 6],
"to": [10, 10, 10],
"faces": {
"north": {"uv": [8, 8, 10, 10], "texture": "#1"},
"east": {"uv": [6, 8, 8, 10], "texture": "#1"},
"south": {"uv": [6, 8, 8, 10], "texture": "#1"},
"west": {"uv": [6, 8, 8, 10], "texture": "#1"},
"up": {"uv": [6, 10, 8, 12], "texture": "#1"},
"down": {"uv": [8, 10, 10, 12], "texture": "#1"}
}
}
],
"groups": [
{
"name": "Blazes",
"origin": [8, 8, 8],
"children": [15, 16, 17, 18]
}
]
}

View file

@ -1,29 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"1": "create:block/tamed_blaze"
},
"elements": [
{
"name": "Blaze 3",
"from": [4, 6, 4],
"to": [12, 14, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 6, 6]},
"faces": {
"north": {"uv": [4, 0, 8, 4], "texture": "#1"},
"east": {"uv": [0, 0, 4, 4], "texture": "#1"},
"south": {"uv": [0, 0, 4, 4], "texture": "#1"},
"west": {"uv": [0, 0, 4, 4], "texture": "#1"},
"up": {"uv": [0, 4, 4, 8], "texture": "#1"},
"down": {"uv": [4, 4, 8, 8], "texture": "#1"}
}
}
],
"groups": [
{
"name": "Blazes",
"origin": [8, 8, 8],
"children": [15, 16, 17, 18]
}
]
}

View file

@ -1,29 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"1": "create:block/tamed_blaze"
},
"elements": [
{
"name": "Blaze 2",
"from": [5, 6, 5],
"to": [11, 12, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 7]},
"faces": {
"north": {"uv": [3, 8, 6, 11], "texture": "#1"},
"east": {"uv": [0, 8, 3, 11], "texture": "#1"},
"south": {"uv": [0, 8, 3, 11], "texture": "#1"},
"west": {"uv": [0, 8, 3, 11], "texture": "#1"},
"up": {"uv": [0, 11, 3, 14], "texture": "#1"},
"down": {"uv": [3, 11, 6, 14], "texture": "#1"}
}
}
],
"groups": [
{
"name": "Blazes",
"origin": [8, 8, 8],
"children": [15, 16, 17, 18]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB