Ctrl A Backspace

- Encased fans can no longer provide stress capacity as generators
- Removed the Furnace Engine
- Added Kryppers' new Flywheel model
- Fixed inverted stress capacity labels in tooltips
- Removed speed requirements from tooltips
- Fixed belt tickers not properly being removed when parts of the belts are destroyed
This commit is contained in:
simibubi 2022-05-05 20:20:54 +02:00
parent e1c3ad1a9b
commit b85c0ed93f
85 changed files with 2235 additions and 3140 deletions

View file

@ -208,10 +208,9 @@ fb41aa1a0828c9256b3f886fdcb55bb54252ba09 assets/create/blockstates/exposed_coppe
65f5fa4b779af5150993b20174404ec93bfc4303 assets/create/blockstates/fluid_pipe.json
f0eaab18e16c4f3f65ebf3b55b08f0dc445720fe assets/create/blockstates/fluid_tank.json
5408d92ab02af86539ac42971d4033545970bb3a assets/create/blockstates/fluid_valve.json
e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets/create/blockstates/flywheel.json
95b0775bf4d619ca5b0a42dbdc47c6f2c15d7b3d assets/create/blockstates/flywheel.json
ac00d40e1ef50a37041c0481afa1a23a14dea78e assets/create/blockstates/framed_glass.json
61df7769fa61f6dd2868a4377e54320fdd473b4e assets/create/blockstates/framed_glass_pane.json
3cf49f4812732f00f578fa73785e14ffdf340f21 assets/create/blockstates/furnace_engine.json
23744450886af88ed468aecbbd7b8d7babcbbd6f assets/create/blockstates/gantry_carriage.json
9fa39a44bba30c5ae8fa245b122a837c705462b4 assets/create/blockstates/gantry_shaft.json
eca1f0e56efdadb241f42dc6ebb036f1d52213a9 assets/create/blockstates/gearbox.json
@ -542,23 +541,23 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo
6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
7fbb25c577025ff61388c54c43401d8bb80723dd assets/create/lang/en_ud.json
024a27fd48ffcc6a79c9743ece2e8c92e10190ab assets/create/lang/en_us.json
28f293c0e56f4b0928ed5784c6fa542cd958b08d assets/create/lang/unfinished/de_de.json
6caa5da7f0537dab9968522151a2022cbb9f017f assets/create/lang/unfinished/es_cl.json
a182e06d08d8e1b382a1c3233b5d92553ce126bd assets/create/lang/unfinished/es_es.json
0e308ef282040673debe46ec12e6e55ac9ce985e assets/create/lang/unfinished/fr_fr.json
35d0439648d6ec63cdf47aabb631afc098c32666 assets/create/lang/unfinished/it_it.json
089dd0341bd90a9ac319064a9007c25d5e5de271 assets/create/lang/unfinished/ja_jp.json
63b018284849f4afc247d42e64fe64c06e7f96b0 assets/create/lang/unfinished/ko_kr.json
e861c584c4870fa6a2449207affc91b246372862 assets/create/lang/unfinished/nl_nl.json
7ea957da93493b49328f862bab2df59afdc3fe79 assets/create/lang/unfinished/pl_pl.json
4885dd6c1e1102e24c11ad17088d7a66981c73c5 assets/create/lang/unfinished/pt_br.json
54da09cde93617abe7cdc6ccb136e94221abb612 assets/create/lang/unfinished/pt_pt.json
77c2b474774c623314f66f8c975be1075b0d3dec assets/create/lang/unfinished/ro_ro.json
573a751dba49ecb96c22d5d5374de475a4875ffa assets/create/lang/unfinished/ru_ru.json
9a14db7b7a4629a2f9030f0e9c74fd919bb108e8 assets/create/lang/unfinished/zh_cn.json
597ebfa894f0e6fe1c7c33de8504370b7a81939a assets/create/lang/unfinished/zh_tw.json
d4cdc38cd19460fd9ba866f3ad3b2e4bd014cb98 assets/create/lang/en_ud.json
4ed8b6910b0787d9bfa3b1a3f9e891d67b9b8af6 assets/create/lang/en_us.json
780146d410f9416463587eb29c5ddd3ceda3df6b assets/create/lang/unfinished/de_de.json
43e74873dff9c74b965d71a096390f1300d96d75 assets/create/lang/unfinished/es_cl.json
caabbb6bbfed8b399ba71497a6ccf7de7b196264 assets/create/lang/unfinished/es_es.json
c66402dc057027d4a1a972830ae8f13812f70726 assets/create/lang/unfinished/fr_fr.json
367ceab5da165c8d52842337300a55f2238d8d93 assets/create/lang/unfinished/it_it.json
1371fe6852059b897b364de723663ba652b7690f assets/create/lang/unfinished/ja_jp.json
9ffb5cd3e5298a6b6d3d8eafb7b6be708390e375 assets/create/lang/unfinished/ko_kr.json
ddb5b7d7d8b8d798caca64ff4c26c28f223f8771 assets/create/lang/unfinished/nl_nl.json
b1eb44b1d043fd64b6d9d0455da939af893526c5 assets/create/lang/unfinished/pl_pl.json
695732ec36cf7b39e1dcf467a58e9b438bbf52d5 assets/create/lang/unfinished/pt_br.json
1b1dbd8df62df4424b6d576ad1ce8f0986829d4e assets/create/lang/unfinished/pt_pt.json
9a92874e612ddc59a7420bf401d719f792ac9467 assets/create/lang/unfinished/ro_ro.json
f0b799b93634d61d7799808d137003ab8c67c2c4 assets/create/lang/unfinished/ru_ru.json
b29afaece334e84972afc027f00b53e6d2501ebf assets/create/lang/unfinished/zh_cn.json
aa016cb464bd32865ef05034ad3bf317c14d7cdf assets/create/lang/unfinished/zh_tw.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
@ -1816,7 +1815,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
0bee2855dc9bad52e941153b87e9c35797c246ee assets/create/models/item/furnace_engine.json
a703b16625ad9d3b9042b6b19fdb88407726898b assets/create/models/item/furnace_minecart_contraption.json
a642f570ec8223c066e542f062aff3b7f93e002b assets/create/models/item/gantry_carriage.json
b4bfd5041b62f3a0a955fa4872d178b590614f22 assets/create/models/item/gantry_shaft.json
@ -2200,7 +2198,6 @@ b61d958815f1c2530c11c88c9081d5c794d7f807 data/create/advancements/its_alive.json
ee834796d3d05d097048338ca946c5509fada0be data/create/advancements/mixer.json
bee2c19d730936e34ee61fe04af13e2b031ecffa data/create/advancements/musical_arm.json
c9c4060ed207226b69fada2d61e01a97d7077eae data/create/advancements/nixie_tube.json
0b0a7f5b7f30ab75e4ca790c850b1eb50944a3aa data/create/advancements/overstress_flywheel.json
7f0847247a80ee930c23f551bce00bda74f81b0e data/create/advancements/overstressed.json
449eb8a9e6102bb342c96eb8b19e743eb6979bfa data/create/advancements/pipe_collision.json
4b621e5bb48fbb120853ec02c05c915d86bd6dd8 data/create/advancements/pipe_spill.json
@ -3506,7 +3503,6 @@ b4df9a8b28f29587e75ffe11ca26d85ddbe926da data/create/loot_tables/blocks/fluid_pi
45637f479b3f90ce86ff84fd8c96074e622452a7 data/create/loot_tables/blocks/flywheel.json
3e65b0c51768fb0076c7de39c425961167709988 data/create/loot_tables/blocks/framed_glass.json
f76fe7d876150a43be05977ec596d1fe2a3b9868 data/create/loot_tables/blocks/framed_glass_pane.json
7e0962fdc4166303117a54f6b7069bd5c26c2bde data/create/loot_tables/blocks/furnace_engine.json
891f0d334c3f596af081328be8d6ac0461592183 data/create/loot_tables/blocks/gantry_carriage.json
795c88efe80319220902da231f45d63d1130fde5 data/create/loot_tables/blocks/gantry_shaft.json
8a0d3f52474ea610efd6f2053d3b666d5f7db0f7 data/create/loot_tables/blocks/gearbox.json
@ -4677,7 +4673,6 @@ c2e15ac0c9109bad3face6d13efc32d7116b4c25 data/create/recipes/limestone_pillar_fr
66674d07de63aada0991d2fdff07e22e00450135 data/create/recipes/mechanical_crafting/crushing_wheel.json
599f8b87c24c131350ba7ceb69a0c8b9829c62bc data/create/recipes/mechanical_crafting/extendo_grip.json
f26ed47c10cc63613759b0f8ae4ef349000de60d data/create/recipes/mechanical_crafting/flywheel.json
2dc00d6e4c159e06ab2a705e666e83e4238a7814 data/create/recipes/mechanical_crafting/furnace_engine.json
fa356eb82c08339bb0064017d88b1e5b053fd4ff data/create/recipes/mechanical_crafting/potato_cannon.json
7e695ab2b684c23968a23765072603be5da13d75 data/create/recipes/mechanical_crafting/wand_of_symmetry.json
98f877bf8f3f8a686fc6cf7479a0fba5744248ce data/create/recipes/milling/allium.json
@ -5216,7 +5211,7 @@ d79c82bc6cf59b073b2f51f5fea9c98e81d14b68 data/create/recipes/weathered_copper_ti
452d480dd50b97fce72e0c89429cf68db534c6b2 data/create/recipes/weathered_copper_tile_slab_from_weathered_copper_tiles_stonecutting.json
ac265a674626e0e832330086fd18fe0be37fc327 data/create/recipes/weathered_copper_tile_stairs.json
5942a571f79c40524bbf408775cf91de4715f2b6 data/create/recipes/weathered_copper_tile_stairs_from_weathered_copper_tiles_stonecutting.json
6558ef43f28c92cc558fbfc572f38496f1ed479e data/create/tags/blocks/brittle.json
2d549ea56fb226c0e31e66c0391996093f8bece9 data/create/tags/blocks/brittle.json
330bfb3850ba3964b10b1bccbc3cbb9b012cae54 data/create/tags/blocks/fan_heaters.json
57b942386a15c874d1ca9cd6a8032c11a5599fc2 data/create/tags/blocks/fan_transparent.json
10781e8cfcbb3486327aace3aa00e437fb44b331 data/create/tags/blocks/ore_override_stone.json
@ -5299,7 +5294,7 @@ ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/items/storage_blocks/br
69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json
2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/lush_ground_replaceable.json
02f7a9df2f9e154749266e7ac59c37aa076a3390 data/minecraft/tags/blocks/mineable/axe.json
20500209238916508e88a8219e7f3b342bb16461 data/minecraft/tags/blocks/mineable/pickaxe.json
5782184ce3d612e9cd747fa606f5cb87bd4d67ef data/minecraft/tags/blocks/mineable/pickaxe.json
2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/moss_replaceable.json
e157c1d3af30e409e34bbefbe15a037e6e1c8daa data/minecraft/tags/blocks/needs_iron_tool.json
a08f67865337f62601c5e333b4011382d10020e4 data/minecraft/tags/blocks/needs_stone_tool.json

View file

@ -1,49 +1,17 @@
{
"variants": {
"connection=none,facing=north": {
"model": "create:block/flywheel/casing_none",
"y": 270
},
"connection=left,facing=north": {
"model": "create:block/flywheel/casing_left",
"y": 270
},
"connection=right,facing=north": {
"model": "create:block/flywheel/casing_right",
"y": 270
},
"connection=none,facing=south": {
"model": "create:block/flywheel/casing_none",
"axis=x": {
"model": "create:block/flywheel/block",
"x": 90,
"y": 90
},
"connection=left,facing=south": {
"model": "create:block/flywheel/casing_left",
"y": 90
"axis=y": {
"model": "create:block/flywheel/block"
},
"connection=right,facing=south": {
"model": "create:block/flywheel/casing_right",
"y": 90
},
"connection=none,facing=west": {
"model": "create:block/flywheel/casing_none",
"axis=z": {
"model": "create:block/flywheel/block",
"x": 90,
"y": 180
},
"connection=left,facing=west": {
"model": "create:block/flywheel/casing_left",
"y": 180
},
"connection=right,facing=west": {
"model": "create:block/flywheel/casing_right",
"y": 180
},
"connection=none,facing=east": {
"model": "create:block/flywheel/casing_none"
},
"connection=left,facing=east": {
"model": "create:block/flywheel/casing_left"
},
"connection=right,facing=east": {
"model": "create:block/flywheel/casing_right"
}
}
}

View file

@ -1,19 +0,0 @@
{
"variants": {
"facing=north": {
"model": "create:block/furnace_engine/block"
},
"facing=south": {
"model": "create:block/furnace_engine/block",
"y": 180
},
"facing=west": {
"model": "create:block/furnace_engine/block",
"y": 270
},
"facing=east": {
"model": "create:block/furnace_engine/block",
"y": 90
}
}
}

View file

@ -212,7 +212,6 @@
"block.create.flywheel": "\u05DF\u01DD\u01DD\u0265\u028D\u028E\u05DF\u2132",
"block.create.framed_glass": "ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132",
"block.create.framed_glass_pane": "\u01DDu\u0250\u0500 ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132",
"block.create.furnace_engine": "\u01DDu\u0131bu\u018E \u01DD\u0254\u0250u\u0279n\u2132",
"block.create.gantry_carriage": "\u01DDb\u0250\u0131\u0279\u0279\u0250\u0186 \u028E\u0279\u0287u\u0250\u2141",
"block.create.gantry_shaft": "\u0287\u025F\u0250\u0265S \u028E\u0279\u0287u\u0250\u2141",
"block.create.gearbox": "xoq\u0279\u0250\u01DD\u2141",

View file

@ -215,7 +215,6 @@
"block.create.flywheel": "Flywheel",
"block.create.framed_glass": "Framed Glass",
"block.create.framed_glass_pane": "Framed Glass Pane",
"block.create.furnace_engine": "Furnace Engine",
"block.create.gantry_carriage": "Gantry Carriage",
"block.create.gantry_shaft": "Gantry Shaft",
"block.create.gearbox": "Gearbox",
@ -2145,10 +2144,6 @@
"create.ponder.fan_processing.text_7": "The Speed of the Fan does NOT affect the processing speed, only its range",
"create.ponder.fan_processing.text_8": "Fan Processing can also be applied to Items on Depots and Belts",
"create.ponder.fan_source.header": "Generating Rotational Force using Encased Fans",
"create.ponder.fan_source.text_1": "Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "Fluid Pipes can connect two or more fluid sources and targets",
"create.ponder.fluid_pipe_flow.text_2": "Using a wrench, a straight pipe segment can be given a window",
@ -2178,11 +2173,6 @@
"create.ponder.fluid_tank_storage.text_4": "However, in Survival Mode Fluids cannot be added or taken manually",
"create.ponder.fluid_tank_storage.text_5": "You can use Basins, Item Drains and Spouts to drain or fill fluid containing items",
"create.ponder.flywheel.header": "Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "Funnel compatibility",
"create.ponder.funnel_compat.text_1": "Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "Vertical Saws",
@ -2207,11 +2197,6 @@
"create.ponder.funnel_transfer.text_2": "Chutes or Smart chutes might be more suitable for such purposes.",
"create.ponder.funnel_transfer.text_3": "Same applies for horizontal movement. A mechanical belt should help here.",
"create.ponder.furnace_engine.header": "Generating Rotational Force using the Furnace Engine",
"create.ponder.furnace_engine.text_1": "Furnace Engines generate Rotational Force while their attached Furnace is running",
"create.ponder.furnace_engine.text_2": "The provided Rotational Force has a very large stress capacity",
"create.ponder.furnace_engine.text_3": "Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.gantry_carriage.header": "Using Gantry Carriages",
"create.ponder.gantry_carriage.text_1": "Gantry Carriages can mount to and slide along a Gantry Shaft.",
"create.ponder.gantry_carriage.text_2": "Gantry setups can move attached Blocks.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1539",
"_": "Missing Localizations: 1528",
"_": "->------------------------] Game Elements [------------------------<-",
@ -216,7 +216,6 @@
"block.create.flywheel": "Schwungrad",
"block.create.framed_glass": "Gerahmtes Glas",
"block.create.framed_glass_pane": "Gerahmte Glasscheibe",
"block.create.furnace_engine": "Ofenmotor",
"block.create.gantry_carriage": "Portalkranwagen",
"block.create.gantry_shaft": "Portalkranachse",
"block.create.gearbox": "Getriebe",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range",
"create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts",
"create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans",
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "UNLOCALIZED: However, in Survival Mode Fluids cannot be added or taken manually",
"create.ponder.fluid_tank_storage.text_5": "UNLOCALIZED: You can use Basins, Item Drains and Spouts to drain or fill fluid containing items",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.",
"create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.",
"create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine",
"create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running",
"create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages",
"create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.",
"create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.",

View file

@ -216,7 +216,6 @@
"block.create.flywheel": "Volante de Inercia",
"block.create.framed_glass": "Vidrio Enmarcado",
"block.create.framed_glass_pane": "Panel de Vidrio Enmarcado",
"block.create.furnace_engine": "Horno Motor",
"block.create.gantry_carriage": "Carruaje de Grúa",
"block.create.gantry_shaft": "Eje de Grúa",
"block.create.gearbox": "Caja de Engranajes",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "La velocidad del ventilador NO afecta la velocidad de procesamiento, solo su rango",
"create.ponder.fan_processing.text_8": "El Procesamiento por Ventilador también se puede aplicar a objetos en depósitos y cintas",
"create.ponder.fan_source.header": "Generando Fuerza Rotacional usando Ventiladores",
"create.ponder.fan_source.text_1": "Los Ventiladores orientados hacia abajo hacia una Fuente de Calor pueden proporcionar Fuerza Rotacional",
"create.ponder.fan_source.text_2": "Al dalre una señal de Redstone, los Ventiladores empezarán a generar",
"create.ponder.fluid_pipe_flow.header": "Moviendo fluidos usando Tuberías de Cobre",
"create.ponder.fluid_pipe_flow.text_1": "Las tuberías de fluidos pueden conectar dos o más fuentes de fluidos y objetivos",
"create.ponder.fluid_pipe_flow.text_2": "Con una llave, se puede añadir una ventana a un segmento de tubería recto",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "Sin embargo, en el modo Supervivencia, los Fluidos no se pueden agregar ni tomar manualmente",
"create.ponder.fluid_tank_storage.text_5": "Puedes usar tóneles, drenajes y surtidores para drenar o llenar objetos contenedores de líquido",
"create.ponder.flywheel.header": "Generando Fuerza Rotacional usando el Volante de Inercia",
"create.ponder.flywheel.text_1": "El Volante de Inercia es necesario para Generar Energía al usar el Horno Motor",
"create.ponder.flywheel.text_2": "La fuerza de rotación proporcionada tiene una capacidad de estrés muy grande",
"create.ponder.flywheel.text_3": "El uso de un alto horno duplicará la eficiencia del motor.",
"create.ponder.funnel_compat.header": "Compatibilidad de Ingresos",
"create.ponder.funnel_compat.text_1": "Los ingresos también deberían interactuar bien con un puñado de otros componentes.",
"create.ponder.funnel_compat.text_2": "Sierras Verticales",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "Los tolvoganes o tolvoganes inteligentes podrían ser más adecuados para tales fines.",
"create.ponder.funnel_transfer.text_3": "Lo mismo se aplica al movimiento horizontal. Una cinta mecánica debería ayudar aquí.",
"create.ponder.furnace_engine.header": "Generando Fuerza rotacional usando el Horno Motor",
"create.ponder.furnace_engine.text_1": "Los Horno Motores generan fuerza rotacional mientras su horno adjunto está en funcionamiento",
"create.ponder.furnace_engine.text_2": "La fuerza rotacional proporcionada tiene una capacidad de tensión muy grande",
"create.ponder.furnace_engine.text_3": "El uso de un Alto Horno duplicará la eficiencia del motor.",
"create.ponder.gantry_carriage.header": "Usando Carruajes de Grúa",
"create.ponder.gantry_carriage.text_1": "Los Carruajes de Grúa pueden montarse y deslizarse sobre los Ejes de Grúa.",
"create.ponder.gantry_carriage.text_2": "Las Configuraciones de Carruaje pueden mover bloques adjuntos.",

View file

@ -216,7 +216,6 @@
"block.create.flywheel": "Rueda de inercia",
"block.create.framed_glass": "Cristal enmarcado",
"block.create.framed_glass_pane": "Panel de cristal enmarcado",
"block.create.furnace_engine": "Motor de horno",
"block.create.gantry_carriage": "Carro de grúa",
"block.create.gantry_shaft": "Eje de grúa",
"block.create.gearbox": "Caja de transmisión",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "La velocidad del ventilador NO afecta a la velocidad de procesamiento, sólo a su rango",
"create.ponder.fan_processing.text_8": "El procesamiento del ventilador también puede aplicarse a los objetos de los depósitos y las cintas mecánicas",
"create.ponder.fan_source.header": "Generar fuerza rotacional mediante ventiladores revestidos",
"create.ponder.fan_source.text_1": "Los ventiladores orientados hacia una fuente de calor pueden proporcionar fuerza rotacional",
"create.ponder.fan_source.text_2": "Cuando se les da una señal de redstone, los ventiladores comenzarán a proporcionar fuerza",
"create.ponder.fluid_pipe_flow.header": "Transportar fluidos mediante tuberías de cobre",
"create.ponder.fluid_pipe_flow.text_1": "Las tuberías de fluidos pueden conectar dos o más fuentes y objetivos de fluidos",
"create.ponder.fluid_pipe_flow.text_2": "Utilizando una llave, se puede dar a un segmento de tubo recto una ventana",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "Sin embargo, en el Modo Supervivencia no se pueden añadir o tomar fluidos manualmente",
"create.ponder.fluid_tank_storage.text_5": "Puede utilizar cuencas, drenadores de objetos y tuberías para vaciar o llenar objetos que contengan líquido",
"create.ponder.flywheel.header": "Generar fuerza rotacional con la rueda de inercia",
"create.ponder.flywheel.text_1": "Las ruedas de inercia son necesarias para generar fuerza rotacional con el motor de horno",
"create.ponder.flywheel.text_2": "La fuerza rotacional proporcionada tiene una capacidad de estrés muy grande",
"create.ponder.flywheel.text_3": "El uso de un alto horno duplicará la eficiencia del motor",
"create.ponder.funnel_compat.header": "Compatibilidades con el embudo",
"create.ponder.funnel_compat.text_1": "Los embudos deberían interactuar bien con un puñado de otros componentes",
"create.ponder.funnel_compat.text_2": "Sierras verticales",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "Los ductos o los ductos inteligentes podrían ser más adecuados para estos fines",
"create.ponder.funnel_transfer.text_3": "Lo mismo se aplica para el movimiento horizontal. Una cinta mecánica debería ayudar aquí",
"create.ponder.furnace_engine.header": "Generar fuerza rotacional con el motor de horno",
"create.ponder.furnace_engine.text_1": "Los motores de horno generan fuerza rotacional mientras su horno adjunto está funcionando",
"create.ponder.furnace_engine.text_2": "La fuerza rotacional proporcionada tiene una capacidad de estrés muy grande",
"create.ponder.furnace_engine.text_3": "El uso de un alto horno duplicará la eficiencia del motor",
"create.ponder.gantry_carriage.header": "Usar carros de grúa",
"create.ponder.gantry_carriage.text_1": "Los carros de grúa pueden montarse y deslizarse a lo largo de un eje de grúa",
"create.ponder.gantry_carriage.text_2": "Las instalaciones de grúa pueden mover bloques adjuntos",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1801",
"_": "Missing Localizations: 1790",
"_": "->------------------------] Game Elements [------------------------<-",
@ -216,7 +216,6 @@
"block.create.flywheel": "Volant d'inertie",
"block.create.framed_glass": "Grande fenêtre en verre",
"block.create.framed_glass_pane": "Grande vitre encadrée",
"block.create.furnace_engine": "Moteur de four",
"block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage",
"block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft",
"block.create.gearbox": "Boîte à roue dentée",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range",
"create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts",
"create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans",
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "UNLOCALIZED: However, in Survival Mode Fluids cannot be added or taken manually",
"create.ponder.fluid_tank_storage.text_5": "UNLOCALIZED: You can use Basins, Item Drains and Spouts to drain or fill fluid containing items",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.",
"create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.",
"create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine",
"create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running",
"create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages",
"create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.",
"create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1490",
"_": "Missing Localizations: 1479",
"_": "->------------------------] Game Elements [------------------------<-",
@ -216,7 +216,6 @@
"block.create.flywheel": "Volano",
"block.create.framed_glass": "Finestra di vetro",
"block.create.framed_glass_pane": "Pannello di finestra di vetro",
"block.create.furnace_engine": "Motore fornace",
"block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage",
"block.create.gantry_shaft": "Albero a portale",
"block.create.gearbox": "Riduttore",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range",
"create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts",
"create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans",
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "UNLOCALIZED: However, in Survival Mode Fluids cannot be added or taken manually",
"create.ponder.fluid_tank_storage.text_5": "UNLOCALIZED: You can use Basins, Item Drains and Spouts to drain or fill fluid containing items",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.",
"create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.",
"create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine",
"create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running",
"create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages",
"create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.",
"create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.",

View file

@ -216,7 +216,6 @@
"block.create.flywheel": "弾み車",
"block.create.framed_glass": "ガラス窓",
"block.create.framed_glass_pane": "ガラス板窓",
"block.create.furnace_engine": "かまどエンジン",
"block.create.gantry_carriage": "ガントリーキャリッジ",
"block.create.gantry_shaft": "ガントリーシャフト",
"block.create.gearbox": "ギアボックス",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "ファンの速度は処理速度とは関係がなく、範囲のみが変わります",
"create.ponder.fan_processing.text_8": "ファンでの加工は、デポやベルト上のアイテムにも行われます",
"create.ponder.fan_source.header": "ケース入りファンによる回転力の生成",
"create.ponder.fan_source.text_1": "ファンを熱源に向けて設置すると、回転力を生成できます",
"create.ponder.fan_source.text_2": "レッドストーン信号を受けると、回転力が生成されます",
"create.ponder.fluid_pipe_flow.header": "銅パイプを使った液体の移動",
"create.ponder.fluid_pipe_flow.text_1": "液体パイプは2つ以上の液体源と輸送先を繋ぐことができます",
"create.ponder.fluid_pipe_flow.text_2": "レンチを使うと、まっすぐなパイプに窓を付けられます",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "しかし、サバイバルモードでは手動で液体を出し入れできません。",
"create.ponder.fluid_tank_storage.text_5": "鉢、アイテム排液口、アイテム注液口などを使えばアイテムから液体を出し入れできます。",
"create.ponder.flywheel.header": "弾み車による回転力の生成",
"create.ponder.flywheel.text_1": "かまどエンジンで回転力を生成するには、弾み車が必要です",
"create.ponder.flywheel.text_2": "これによって生成される回転力は、非常に大きな応力許容量を持っています",
"create.ponder.flywheel.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります",
"create.ponder.funnel_compat.header": "ファンネルの互換性",
"create.ponder.funnel_compat.text_1": "ファンネルは、他のいくつかの機械とも相性が良いです",
"create.ponder.funnel_compat.text_2": "上向きのメカニカルソー",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "この様な場合は、シュートやスマートシュートの方が適しています",
"create.ponder.funnel_transfer.text_3": "また水平方向の運搬も同様で、この場合メカニカルベルトの方が適しています",
"create.ponder.furnace_engine.header": "かまどエンジンによる回転力の生成",
"create.ponder.furnace_engine.text_1": "かまどエンジンは、取り付けたかまどの稼働中に回転力を生成します",
"create.ponder.furnace_engine.text_2": "この回転力は、非常に大きな応力許容量を持っています",
"create.ponder.furnace_engine.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります",
"create.ponder.gantry_carriage.header": "ガントリーキャリッジの使い方",
"create.ponder.gantry_carriage.text_1": "ガントリーキャリッジは、ガントリーシャフトに取り付けてスライドできます",
"create.ponder.gantry_carriage.text_2": "ガントリーは、取り付けられたブロックを動かします",

View file

@ -216,7 +216,6 @@
"block.create.flywheel": "플라이휠",
"block.create.framed_glass": "큰 유리",
"block.create.framed_glass_pane": "큰 유리판",
"block.create.furnace_engine": "화로 엔진",
"block.create.gantry_carriage": "갠트리 운반대",
"block.create.gantry_shaft": "갠트리 축",
"block.create.gearbox": "기어박스",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "선풍기의 속도는 가공 속도와 관련이 없습니다!",
"create.ponder.fan_processing.text_8": "선풍기 가공은 벨트나 아이템 거치대의 아이템에도 적용됩니다.",
"create.ponder.fan_source.header": "선풍기를 이용해 동력 생산하기",
"create.ponder.fan_source.text_1": "열원을 향한 선풍기는 동력을 제공합니다.",
"create.ponder.fan_source.text_2": "레드스톤 신호를 받으면, 동력을 제공하기 시작합니다.",
"create.ponder.fluid_pipe_flow.header": "파이프로 액체 옮기기",
"create.ponder.fluid_pipe_flow.text_1": "파이프는 한 종류의 액체만 옮깁니다.",
"create.ponder.fluid_pipe_flow.text_2": "렌치를 이용하여 직선 파이프에 창문을 달 수 있습니다.",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "그러나 서바이벌 모드에서는 액체를 직접 빼내고 넣을 순 없습니다.",
"create.ponder.fluid_tank_storage.text_5": "대야, 아이템 배수구, 주입기를 통해 액체를 빼내거나 채울 수 있습니다.",
"create.ponder.flywheel.header": "플라이휠로 동력 생산하기",
"create.ponder.flywheel.text_1": "플라이휠로 동력을 생산하기 위해선, 화로 엔진이 필요합니다.",
"create.ponder.flywheel.text_2": "플라이휠은 피로도 용량이 매우 높습니다.",
"create.ponder.flywheel.text_3": "용광로를 사용하면 동력 속도가 2배가 됩니다.",
"create.ponder.funnel_compat.header": "퍼널 호환성",
"create.ponder.funnel_compat.text_1": "퍼널은 다른 장치들 위에 설치할 수 있습니다.",
"create.ponder.funnel_compat.text_2": "세로 톱",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "슈트나 스마트 슈트가 이런 목적에 더 적합합니다.",
"create.ponder.funnel_transfer.text_3": "수평 방향으로는 벨트가 적합합니다.",
"create.ponder.furnace_engine.header": "화로 엔진을 이용해 동력 생산하기",
"create.ponder.furnace_engine.text_1": "화로 엔진은 부착된 화로가 타오를 때 동력을 생산합니다.",
"create.ponder.furnace_engine.text_2": "제공되는 피로도 용량이 매우 높습니다.",
"create.ponder.furnace_engine.text_3": "용광로를 사용하면 동력 속도가 2배가 됩니다.",
"create.ponder.gantry_carriage.header": "갠트리 운반대 사용하기",
"create.ponder.gantry_carriage.text_1": "갠트리 운반대는 갠트리 축 위에서 움직입니다.",
"create.ponder.gantry_carriage.text_2": "갠트리 장치는 부착된 블록들을 움직입니다.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 2154",
"_": "Missing Localizations: 2142",
"_": "->------------------------] Game Elements [------------------------<-",
@ -216,7 +216,6 @@
"block.create.flywheel": "UNLOCALIZED: Flywheel",
"block.create.framed_glass": "Ingelijst Glas",
"block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane",
"block.create.furnace_engine": "UNLOCALIZED: Furnace Engine",
"block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage",
"block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft",
"block.create.gearbox": "Versnellingsbak",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range",
"create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts",
"create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans",
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "UNLOCALIZED: However, in Survival Mode Fluids cannot be added or taken manually",
"create.ponder.fluid_tank_storage.text_5": "UNLOCALIZED: You can use Basins, Item Drains and Spouts to drain or fill fluid containing items",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.",
"create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.",
"create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine",
"create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running",
"create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages",
"create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.",
"create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.",

View file

@ -216,7 +216,6 @@
"block.create.flywheel": "Koło zamachowe",
"block.create.framed_glass": "Oprawione okno",
"block.create.framed_glass_pane": "Oprawiona szyba",
"block.create.furnace_engine": "Silnik spalinowy",
"block.create.gantry_carriage": "Przenośnik suwnicowy",
"block.create.gantry_shaft": "Suwnica",
"block.create.gearbox": "Przekładnia",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "Prędkość wiatraka nie wpływa na szybkość obróbki, a jedynie na jego zasięg!",
"create.ponder.fan_processing.text_8": "Przepływ powietrza działa również na przedmioty na taśmociągach lub składnicach",
"create.ponder.fan_source.header": "Generowanie siły obrotowej z użyciem izolowanych wiatraków",
"create.ponder.fan_source.text_1": "Wiatraki skierowane w stronę źródła ciepła generują siłę obrotową",
"create.ponder.fan_source.text_2": "Po zasileniu, wiatraki zaczną przesyłać siłę do przylegających komponentów",
"create.ponder.fluid_pipe_flow.header": "Transport cieczy z użyciem rur",
"create.ponder.fluid_pipe_flow.text_1": "Rury mogą połączyć dwa lub więcej bloków przechowujących ciecze",
"create.ponder.fluid_pipe_flow.text_2": "Używając klucza, prosta rura może mieć w sobie okienko",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "W trybie przetrwania ciecze nie mogą być dodane lub zabrane manualnie",
"create.ponder.fluid_tank_storage.text_5": "Można użyć tygli, odpływów lub napełniaczy aby opróżnić lub napełnić przedmioty mogące przechowywać ciecze",
"create.ponder.flywheel.header": "Generowanie siły obrotowej z użyciem koła zamachowego",
"create.ponder.flywheel.text_1": "Koła zamachowe są wymagane, aby generować siłę obrotową przy pomocy silnika spalinowego",
"create.ponder.flywheel.text_2": "Wyprodukowana w ten sposób siła ma bardzo dużą odporność na obciążenie",
"create.ponder.flywheel.text_3": "Używając pieca hutniczego efektywność silnika spalinowego wzrośnie dwukrotnie",
"create.ponder.funnel_compat.header": "Kompatybilność lejków",
"create.ponder.funnel_compat.text_1": "Lejki działają też z wieloma innymi komponentami",
"create.ponder.funnel_compat.text_2": "Pionowe piły",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "Zsypy lub inteligentne zsypy mogą bardziej się do tego nadawać",
"create.ponder.funnel_transfer.text_3": "To samo tyczy się transportu poziomego. Taśmociąg może tutaj pomóc",
"create.ponder.furnace_engine.header": "Generowanie siły obrotowej z użyciem silnika spalinowego",
"create.ponder.furnace_engine.text_1": "Silniki spalinowe generują siłę obrotową, gdy podłączonym do niego piec jest aktywny",
"create.ponder.furnace_engine.text_2": "Wyprodukowana w ten sposób siła ma bardzo dużą odporność na obciążenie",
"create.ponder.furnace_engine.text_3": "Używając pieca hutniczego efektywność silnika spalinowego wzrośnie dwukrotnie",
"create.ponder.gantry_carriage.header": "Używanie przenośników suwnicowych",
"create.ponder.gantry_carriage.text_1": "Przenośnik suwnicowy może być zamontowany i przesuwany po suwnicy",
"create.ponder.gantry_carriage.text_2": "Może on przenosić dołączone bloki",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1401",
"_": "Missing Localizations: 1390",
"_": "->------------------------] Game Elements [------------------------<-",
@ -216,7 +216,6 @@
"block.create.flywheel": "Volante de inércia",
"block.create.framed_glass": "Vidro emoldurado",
"block.create.framed_glass_pane": "Vidraça emoldurada",
"block.create.furnace_engine": "Motor de Fornalha",
"block.create.gantry_carriage": "Carruagem de Pórtico",
"block.create.gantry_shaft": "Eixo de Pórtico",
"block.create.gearbox": "Caixa de Transmissão",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range",
"create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts",
"create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans",
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "UNLOCALIZED: However, in Survival Mode Fluids cannot be added or taken manually",
"create.ponder.fluid_tank_storage.text_5": "UNLOCALIZED: You can use Basins, Item Drains and Spouts to drain or fill fluid containing items",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.",
"create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.",
"create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine",
"create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running",
"create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages",
"create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.",
"create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1773",
"_": "Missing Localizations: 1762",
"_": "->------------------------] Game Elements [------------------------<-",
@ -216,7 +216,6 @@
"block.create.flywheel": "Volante de inércia",
"block.create.framed_glass": "UNLOCALIZED: Framed Glass",
"block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane",
"block.create.furnace_engine": "Motor de Fornalha",
"block.create.gantry_carriage": "Carruagem de Pórtico",
"block.create.gantry_shaft": "Eixo de Pórtico",
"block.create.gearbox": "Caixa de Transmissão",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range",
"create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts",
"create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans",
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "UNLOCALIZED: However, in Survival Mode Fluids cannot be added or taken manually",
"create.ponder.fluid_tank_storage.text_5": "UNLOCALIZED: You can use Basins, Item Drains and Spouts to drain or fill fluid containing items",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.",
"create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.",
"create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine",
"create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running",
"create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages",
"create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.",
"create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.",

View file

@ -216,7 +216,6 @@
"block.create.flywheel": "Volant",
"block.create.framed_glass": "Sticlă Înrămată",
"block.create.framed_glass_pane": "Geam Înrămat",
"block.create.furnace_engine": "Motor De Cuptor",
"block.create.gantry_carriage": "Cărucior Portal",
"block.create.gantry_shaft": "Rotor Portal",
"block.create.gearbox": "Cutie De Viteze",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "Viteza Ventilatorului NU afectează viteza procesării, doar raza sa",
"create.ponder.fan_processing.text_8": "De asemenea, Procesarea Cu Ventilator poate fi aplicată la Obiecte pe Depoturi și Benzi",
"create.ponder.fan_source.header": "Generarea Forței Rotaționale folosind Ventilatoare Încapsulate",
"create.ponder.fan_source.text_1": "Ventilatoarele cu fața în jos într-o sursă de căldură pot oferi Forță De Rotație",
"create.ponder.fan_source.text_2": "Când îi este dat un Semnal Redstone, Ventilatoarele vor începe să ofere putere",
"create.ponder.fluid_pipe_flow.header": "Mișcarea Fluidelor folosind Conducte De Cupru",
"create.ponder.fluid_pipe_flow.text_1": "Conductele De Fluid pot conecta două sau mai multe surse și ținte",
"create.ponder.fluid_pipe_flow.text_2": "Folosind o Cheie, unui segment de conductă dreaptă poate fi dat o fereastră",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "Totuși, în modul de Supraviețuire Fluidele nu pot fi adăugate sau luate manual",
"create.ponder.fluid_tank_storage.text_5": "Poți folosi Bazine, Scurgeri De Obiecte și Duze pentru a scurge sau a umple obiecte care conțin fluid",
"create.ponder.flywheel.header": "Generarea Forței de Rotație folosind Volantul",
"create.ponder.flywheel.text_1": "Volantele sunt necesare pentru generarea forței rotaționale cu Motorul De Cuptor",
"create.ponder.flywheel.text_2": "Forța De Rotație oferită are o capacitate de stres foarte mare",
"create.ponder.flywheel.text_3": "Folsind un Furnal eficiența Motorului va fi dublată",
"create.ponder.funnel_compat.header": "Compatibilitatea Pâlniilor",
"create.ponder.funnel_compat.text_1": "Pâlniile ar trebui să interacționeze frumos de asemenea cu o varietate de alte componente.",
"create.ponder.funnel_compat.text_2": "Ferăstraie Verticale",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "Toboganele sau Toboganele deștepte ar putea să fie mai potrivite pentru astfel de scopuri.",
"create.ponder.funnel_transfer.text_3": "Același lucru se aplică pentru mișcare orizontală. O bandă mecanică ar trebui să ajute aici.",
"create.ponder.furnace_engine.header": "Generarea Forței De Rotație folosind Motorul De Cuptor",
"create.ponder.furnace_engine.text_1": "Motoarele de cuptor generează Forță De Rotație în timp ce Cuptorul lor atașat funcționează",
"create.ponder.furnace_engine.text_2": "Forța De Rotație oferită are o capacitate de stres foarte mare",
"create.ponder.furnace_engine.text_3": "Folosind un Furnal eficiența Motorului va fi dublată",
"create.ponder.gantry_carriage.header": "Folosirea Cărucioarelor Portale",
"create.ponder.gantry_carriage.text_1": "Cărucioarele Portale pot monta și aluneca de-a lungul unui Rotor Portal.",
"create.ponder.gantry_carriage.text_2": "Amplasările de portale pot mișca Blocuri atașate.",

View file

@ -216,7 +216,6 @@
"block.create.flywheel": "Маховик",
"block.create.framed_glass": "Обрамлённое стекло",
"block.create.framed_glass_pane": "Обрамлённая стеклянная панель",
"block.create.furnace_engine": "Печной двигатель",
"block.create.gantry_carriage": "Шасси портального крана",
"block.create.gantry_shaft": "Вал портального крана",
"block.create.gearbox": "Коробка передач",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "Скорость вентилятора НЕ влияет на скорость обработки, а только на дальность",
"create.ponder.fan_processing.text_8": "Обработка Вентиляторами может быть применена к предметам на конвейерах или депо",
"create.ponder.fan_source.header": "Генерации силы вращения Вентиляторами в корпусе",
"create.ponder.fan_source.text_1": "Вентиляторы направленные вниз на источник тепла могут создавать силу вращения",
"create.ponder.fan_source.text_2": "При сигнале редстоуна Вентилятор начнёт отдавать энергию",
"create.ponder.fluid_pipe_flow.header": "Перемещении жидкостей при помощи медных труб.",
"create.ponder.fluid_pipe_flow.text_1": "Жидкостные трубы могут соединять два или более источников и потребителей жидкости",
"create.ponder.fluid_pipe_flow.text_2": "При помощи гаечного ключа можно создать окно прямому отрезку трубы",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "Однако в режиме выживания жидкость нельзя добавлять или извлекать вручную",
"create.ponder.fluid_tank_storage.text_5": "Вы можете использовать чаши, предметные осушители и дозаторы для опустошения или наполнения содерж. жидкость предметов",
"create.ponder.flywheel.header": "Генерации силы вращения Маховиком",
"create.ponder.flywheel.text_1": "Маховики необходимы для генерации силы вращения при помощи Печных двигателей",
"create.ponder.flywheel.text_2": "Отдаваемая сила вращения имеет очень значительную устойчивость к нагрузкам",
"create.ponder.flywheel.text_3": "Использование Плавильной печи удвоит эффективность двигателя",
"create.ponder.funnel_compat.header": "Совместимости Воронок",
"create.ponder.funnel_compat.text_1": "Воронки должны хорошо взаимодействовать с многими компонентами:",
"create.ponder.funnel_compat.text_2": "Вертикальные пилы",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "Желоба или Умные желоба могут лучше подходить для этих целей",
"create.ponder.funnel_transfer.text_3": "То же касается и горизонтального перемещения. Механический ремень должен здесь помочь",
"create.ponder.furnace_engine.header": "Генерации силы вращения Печными двигателями",
"create.ponder.furnace_engine.text_1": "Печные двигатели создают силу вращения пока присоединённая к ним печь работает",
"create.ponder.furnace_engine.text_2": "Создаваемая сила вращения имеет очень высокую устойчивость к нагрузкам",
"create.ponder.furnace_engine.text_3": "Использование Плавильной печи удвоит эффективность Двигателя",
"create.ponder.gantry_carriage.header": "Использовании шасси портального крана",
"create.ponder.gantry_carriage.text_1": "Шасси портального крана могут прикрепляться и двигаться вдоль Вала портального крана",
"create.ponder.gantry_carriage.text_2": "Крановые установки могут двигать присоединённые Блоки",

View file

@ -216,7 +216,6 @@
"block.create.flywheel": "飞轮",
"block.create.framed_glass": "边框玻璃",
"block.create.framed_glass_pane": "边框玻璃板",
"block.create.furnace_engine": "熔炉引擎",
"block.create.gantry_carriage": "起重机取物器",
"block.create.gantry_shaft": "起重机杆",
"block.create.gearbox": "十字齿轮箱",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "鼓风机的转速对加工的速度没有影响,只影响气流的吹拂距离",
"create.ponder.fan_processing.text_8": "而那些放置在置物台或者传送带上的物品,鼓风机也是可以处理的",
"create.ponder.fan_source.header": "使用鼓风机来产生旋转力",
"create.ponder.fan_source.text_1": "如鼓风机的扇叶向下朝着热源放置,鼓风机可以借此产生旋转力",
"create.ponder.fan_source.text_2": "当鼓风机接受红石信号后,它便会向外供给旋转力",
"create.ponder.fluid_pipe_flow.header": "使用管道运输流体",
"create.ponder.fluid_pipe_flow.text_1": "流体管道可以用于连接两个或多个流体容器",
"create.ponder.fluid_pipe_flow.text_2": "使用扳手,可以为直管道安装观察窗",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "在生存模式中,无法直接用容器向储罐中存入流体,或是取出流体",
"create.ponder.fluid_tank_storage.text_5": "要装满/倒空流体容器,可以使用工作盆,分液池或注液器。",
"create.ponder.flywheel.header": "使用飞轮来产生旋转力",
"create.ponder.flywheel.text_1": "飞轮和熔炉引擎必须配套使用,方可产生旋转力",
"create.ponder.flywheel.text_2": "如此产生的旋转力具有非常大的应力值",
"create.ponder.flywheel.text_3": "使用高炉会使得引擎的效率翻倍",
"create.ponder.funnel_compat.header": "漏斗的兼容性",
"create.ponder.funnel_compat.text_1": "漏斗可以与一些其他组件互动",
"create.ponder.funnel_compat.text_2": "动力锯",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "溜槽和智能溜槽更适用于这样的场景",
"create.ponder.funnel_transfer.text_3": "水平传输也是如此,也许传送带更方便快捷",
"create.ponder.furnace_engine.header": "使用熔炉引擎生产旋转力",
"create.ponder.furnace_engine.text_1": "熔炉引擎会在与其相连熔炉工作时生产旋转力",
"create.ponder.furnace_engine.text_2": "如此产生的旋转力具有非常大的应力值",
"create.ponder.furnace_engine.text_3": "使用高炉会使得引擎的效率翻倍",
"create.ponder.gantry_carriage.header": "使用起重机取物器",
"create.ponder.gantry_carriage.text_1": "起重机取物器可以被放置在起重机杆上,并且可以沿着起重机杆运动",
"create.ponder.gantry_carriage.text_2": "起重机可以移动其黏附的方块",

View file

@ -216,7 +216,6 @@
"block.create.flywheel": "飛輪",
"block.create.framed_glass": "邊框玻璃",
"block.create.framed_glass_pane": "邊框玻璃片",
"block.create.furnace_engine": "熔煉引擎",
"block.create.gantry_carriage": "門式起重機",
"block.create.gantry_shaft": "門式起重機滑道",
"block.create.gearbox": "齒輪箱",
@ -2146,10 +2145,6 @@
"create.ponder.fan_processing.text_7": "鼓風機的轉速對加工的速度沒有影響,只影響氣流的吹拂距離",
"create.ponder.fan_processing.text_8": "而那些放置在置物台或者傳送帶上的物品,鼓風機也是可以處理的",
"create.ponder.fan_source.header": "使用鼓風機來產生動能",
"create.ponder.fan_source.text_1": "如鼓風機的扇葉向下朝著熱源放置,鼓風機可以藉此產生動能",
"create.ponder.fan_source.text_2": "當鼓風機接受紅石訊號後,它便會向外供給動能",
"create.ponder.fluid_pipe_flow.header": "始用銅製管道來移動液體",
"create.ponder.fluid_pipe_flow.text_1": "液體管可以連接兩個或更多的液體來源與目標",
"create.ponder.fluid_pipe_flow.text_2": "使用扳手可以在一段直管線上開窗戶",
@ -2179,11 +2174,6 @@
"create.ponder.fluid_tank_storage.text_4": "但是,在生存模式你不能直接存入、取出液體",
"create.ponder.fluid_tank_storage.text_5": "你可以用作業盆、分液池或液體灌注器和管線網路互動",
"create.ponder.flywheel.header": "使用飛輪來產生動能",
"create.ponder.flywheel.text_1": "飛輪和熔爐引擎必須配套使用,方可產生動能",
"create.ponder.flywheel.text_2": "如此產生的動能具有非常大的應力值",
"create.ponder.flywheel.text_3": "使用高爐會使得引擎的效率翻倍",
"create.ponder.funnel_compat.header": "漏斗的相容性",
"create.ponder.funnel_compat.text_1": "漏斗可以與一些其他組件互動",
"create.ponder.funnel_compat.text_2": "動力鋸",
@ -2208,11 +2198,6 @@
"create.ponder.funnel_transfer.text_2": "溜槽和智慧溜槽更適用於這樣的場景",
"create.ponder.funnel_transfer.text_3": "水平傳輸也是如此,也許傳送帶更方便快捷",
"create.ponder.furnace_engine.header": "使用熔爐引擎生產動能",
"create.ponder.furnace_engine.text_1": "熔爐引擎會在與其相連熔爐工作時生產動能",
"create.ponder.furnace_engine.text_2": "如此產生的動能具有非常大的應力值",
"create.ponder.furnace_engine.text_3": "使用高爐會使得引擎的效率翻倍",
"create.ponder.gantry_carriage.header": "使用起重機取物器",
"create.ponder.gantry_carriage.text_1": "起重機取物器可以被放置在起重機杆上,並且可以沿著起重機杆運動",
"create.ponder.gantry_carriage.text_2": "起重機可以移動其黏附的方塊",

View file

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

View file

@ -1,29 +0,0 @@
{
"parent": "create:flywheel",
"display": {
"icon": {
"item": "create:furnace_engine"
},
"title": {
"translate": "advancement.create.overstress_flywheel"
},
"description": {
"translate": "advancement.create.overstress_flywheel.desc"
},
"frame": "challenge",
"show_toast": true,
"announce_to_chat": true,
"hidden": false
},
"criteria": {
"0": {
"trigger": "create:overstress_flywheel",
"conditions": {}
}
},
"requirements": [
[
"0"
]
]
}

View file

@ -1,20 +0,0 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
"name": "create:furnace_engine"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -1,31 +0,0 @@
{
"type": "create:mechanical_crafting",
"pattern": [
"PPB",
"PCI",
"PPB"
],
"key": {
"P": {
"tag": "forge:plates/brass"
},
"B": {
"tag": "forge:ingots/brass"
},
"I": [
{
"item": "minecraft:piston"
},
{
"item": "minecraft:sticky_piston"
}
],
"C": {
"item": "create:brass_casing"
}
},
"result": {
"item": "create:furnace_engine"
},
"acceptMirrored": true
}

View file

@ -22,7 +22,6 @@
"create:black_valve_handle",
"create:rope",
"create:pulley_magnet",
"create:furnace_engine",
"create:redstone_link",
"create:peculiar_bell",
"create:haunted_bell",

View file

@ -105,7 +105,6 @@
"create:mechanical_crafter",
"create:sequenced_gearshift",
"create:flywheel",
"create:furnace_engine",
"create:rotation_speed_controller",
"create:mechanical_arm",
"create:track",

View file

@ -50,16 +50,11 @@ public class AllBlockPartials {
DEPLOYER_HAND_HOLDING = block("deployer/hand_holding"), ANALOG_LEVER_HANDLE = block("analog_lever/handle"),
ANALOG_LEVER_INDICATOR = block("analog_lever/indicator"), FUNNEL_FLAP = block("funnel/flap"),
BELT_FUNNEL_FLAP = block("belt_funnel/flap"), BELT_TUNNEL_FLAP = block("belt_tunnel/flap"),
FLEXPEATER_INDICATOR = block("diodes/indicator"), FLYWHEEL = block("flywheel/wheel"),
FLYWHEEL_UPPER_ROTATING = block("flywheel/upper_rotating_connector"),
FLEXPEATER_INDICATOR = block("diodes/indicator"),
FLYWHEEL_LOWER_ROTATING = block("flywheel/lower_rotating_connector"),
FLYWHEEL_UPPER_SLIDING = block("flywheel/upper_sliding_connector"),
FLYWHEEL_LOWER_SLIDING = block("flywheel/lower_sliding_connector"),
FURNACE_GENERATOR_FRAME = block("furnace_engine/frame"), CUCKOO_MINUTE_HAND = block("cuckoo_clock/minute_hand"),
CUCKOO_HOUR_HAND = block("cuckoo_clock/hour_hand"), CUCKOO_LEFT_DOOR = block("cuckoo_clock/left_door"),
CUCKOO_RIGHT_DOOR = block("cuckoo_clock/right_door"), CUCKOO_PIG = block("cuckoo_clock/pig"),
CUCKOO_CREEPER = block("cuckoo_clock/creeper"),
CUCKOO_MINUTE_HAND = block("cuckoo_clock/minute_hand"), CUCKOO_HOUR_HAND = block("cuckoo_clock/hour_hand"),
CUCKOO_LEFT_DOOR = block("cuckoo_clock/left_door"), CUCKOO_RIGHT_DOOR = block("cuckoo_clock/right_door"),
CUCKOO_PIG = block("cuckoo_clock/pig"), CUCKOO_CREEPER = block("cuckoo_clock/creeper"),
GANTRY_COGS = block("gantry_carriage/wheels"),
@ -90,9 +85,6 @@ public class AllBlockPartials {
ARM_HEAD = block("mechanical_arm/head"), ARM_CLAW_BASE = block("mechanical_arm/claw_base"),
ARM_CLAW_GRIP = block("mechanical_arm/claw_grip"),
FLAG_SHORT_IN = block("mechanical_arm/flag/short_in"), FLAG_SHORT_OUT = block("mechanical_arm/flag/short_out"),
FLAG_LONG_IN = block("mechanical_arm/flag/long_in"), FLAG_LONG_OUT = block("mechanical_arm/flag/long_out"),
MECHANICAL_PUMP_ARROW = block("mechanical_pump/arrow"), MECHANICAL_PUMP_COG = block("mechanical_pump/cog"),
FLUID_PIPE_CASING = block("fluid_pipe/casing"), FLUID_VALVE_POINTER = block("fluid_valve/pointer"),

View file

@ -43,8 +43,6 @@ import com.simibubi.create.content.contraptions.components.deployer.DeployerMovi
import com.simibubi.create.content.contraptions.components.fan.EncasedFanBlock;
import com.simibubi.create.content.contraptions.components.fan.NozzleBlock;
import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock;
import com.simibubi.create.content.contraptions.components.flywheel.FlywheelGenerator;
import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineBlock;
import com.simibubi.create.content.contraptions.components.millstone.MillstoneBlock;
import com.simibubi.create.content.contraptions.components.mixer.MechanicalMixerBlock;
import com.simibubi.create.content.contraptions.components.motor.CreativeMotorBlock;
@ -473,7 +471,6 @@ public class AllBlocks {
.blockstate(BlockStateGen.directionalBlockProvider(true))
.addLayer(() -> RenderType::cutoutMipped)
.transform(axeOrPickaxe())
.transform(BlockStressDefaults.setCapacity(16.0))
.transform(BlockStressDefaults.setImpact(2.0))
.item()
.transform(customItemModel())
@ -1290,22 +1287,11 @@ public class AllBlocks {
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe())
.transform(BlockStressDefaults.setNoImpact())
.blockstate(new FlywheelGenerator()::generate)
.blockstate(BlockStateGen.axisBlockProvider(true))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<FurnaceEngineBlock> FURNACE_ENGINE =
REGISTRATE.block("furnace_engine", FurnaceEngineBlock::new)
.initialProperties(SharedProperties::softMetal)
.transform(pickaxeOnly())
.tag(AllBlockTags.BRITTLE.tag)
.blockstate(BlockStateGen.horizontalBlockProvider(true))
.transform(BlockStressDefaults.setCapacity(1024.0))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<SpeedControllerBlock> ROTATION_SPEED_CONTROLLER =
REGISTRATE.block("rotation_speed_controller", SpeedControllerBlock::new)
.initialProperties(SharedProperties::softMetal)

View file

@ -37,9 +37,6 @@ import com.simibubi.create.content.contraptions.components.fan.NozzleTileEntity;
import com.simibubi.create.content.contraptions.components.flywheel.FlyWheelInstance;
import com.simibubi.create.content.contraptions.components.flywheel.FlywheelRenderer;
import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity;
import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineInstance;
import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineRenderer;
import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineTileEntity;
import com.simibubi.create.content.contraptions.components.millstone.MillStoneCogInstance;
import com.simibubi.create.content.contraptions.components.millstone.MillstoneRenderer;
import com.simibubi.create.content.contraptions.components.millstone.MillstoneTileEntity;
@ -539,13 +536,6 @@ public class AllTileEntities {
.renderer(() -> FlywheelRenderer::new)
.register();
public static final BlockEntityEntry<FurnaceEngineTileEntity> FURNACE_ENGINE = Create.registrate()
.tileEntity("furnace_engine", FurnaceEngineTileEntity::new)
.instance(() -> EngineInstance::new, false)
.validBlocks(AllBlocks.FURNACE_ENGINE)
.renderer(() -> EngineRenderer::new)
.register();
public static final BlockEntityEntry<MillstoneTileEntity> MILLSTONE = Create.registrate()
.tileEntity("millstone", MillstoneTileEntity::new)
.instance(() -> MillStoneCogInstance::new, false)

View file

@ -10,7 +10,6 @@ import com.google.gson.GsonBuilder;
import com.simibubi.create.api.behaviour.BlockSpoutingBehaviour;
import com.simibubi.create.content.CreateItemGroup;
import com.simibubi.create.content.contraptions.TorquePropagator;
import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineInteractions;
import com.simibubi.create.content.curiosities.weapons.BuiltinPotatoProjectileTypes;
import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler;
import com.simibubi.create.content.logistics.block.data.AllDataGathererBehaviours;
@ -102,7 +101,6 @@ public class Create {
AllWorldFeatures.register();
AllEnchantments.register();
AllConfigs.register(modLoadingContext);
FurnaceEngineInteractions.registerDefaults();
BlockSpoutingBehaviour.register();
ForgeMod.enableMilkFluid();

View file

@ -74,9 +74,6 @@ public class EncasedFanBlock extends DirectionalKineticBlock implements ITE<Enca
if (worldIn instanceof WrappedWorld)
return;
notifyFanTile(worldIn, pos);
if (worldIn.isClientSide())
return;
withTileEntityDo(worldIn, pos, te -> te.queueGeneratorUpdate());
}
protected void notifyFanTile(LevelAccessor world, BlockPos pos) {
@ -101,11 +98,6 @@ public class EncasedFanBlock extends DirectionalKineticBlock implements ITE<Enca
.getOpposite();
}
@Override
public boolean showCapacityWithAnnotation() {
return true;
}
@Override
public Class<EncasedFanTileEntity> getTileEntityClass() {
return EncasedFanTileEntity.class;

View file

@ -2,10 +2,7 @@ package com.simibubi.create.content.contraptions.components.fan;
import javax.annotation.Nullable;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllTags.AllBlockTags;
import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity;
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity;
import com.simibubi.create.foundation.config.AllConfigs;
@ -20,95 +17,31 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
@MethodsReturnNonnullByDefault
public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements IAirCurrentSource {
public class EncasedFanTileEntity extends KineticTileEntity implements IAirCurrentSource {
public AirCurrent airCurrent;
protected int airCurrentUpdateCooldown;
protected int entitySearchCooldown;
protected boolean isGenerator;
protected boolean updateAirFlow;
protected boolean updateGenerator;
public EncasedFanTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
isGenerator = false;
airCurrent = new AirCurrent(this);
updateAirFlow = true;
updateGenerator = false;
}
@Override
protected void read(CompoundTag compound, boolean clientPacket) {
super.read(compound, clientPacket);
if (!wasMoved)
isGenerator = compound.getBoolean("Generating");
if (clientPacket)
airCurrent.rebuild();
}
@Override
public void write(CompoundTag compound, boolean clientPacket) {
compound.putBoolean("Generating", isGenerator);
super.write(compound, clientPacket);
}
@Override
public float calculateAddedStressCapacity() {
return lastCapacityProvided = (isGenerator ? super.calculateAddedStressCapacity() : 0);
}
@Override
public float calculateStressApplied() {
return isGenerator ? 0 : super.calculateStressApplied();
}
@Override
public float getGeneratedSpeed() {
return isGenerator ? AllConfigs.SERVER.kinetics.generatingFanSpeed.get() : 0;
}
public void queueGeneratorUpdate() {
updateGenerator = true;
}
public void updateGenerator() {
BlockState blockState = getBlockState();
boolean shouldGenerate = true;
if (!AllBlocks.ENCASED_FAN.has(blockState))
shouldGenerate = false;
if (shouldGenerate && blockState.getValue(EncasedFanBlock.FACING) != Direction.DOWN)
shouldGenerate = false;
if (shouldGenerate)
shouldGenerate = level != null && level.hasNeighborSignal(worldPosition)
&& level.isLoaded(worldPosition.below()) && blockBelowIsHot();
if (shouldGenerate == isGenerator)
return;
isGenerator = shouldGenerate;
updateGeneratedRotation();
}
public boolean blockBelowIsHot() {
if (level == null)
return false;
BlockState checkState = level.getBlockState(worldPosition.below());
if (!AllBlockTags.FAN_HEATERS.matches(checkState))
return false;
if (checkState.hasProperty(BlazeBurnerBlock.HEAT_LEVEL) && !checkState.getValue(BlazeBurnerBlock.HEAT_LEVEL)
.isAtLeast(BlazeBurnerBlock.HeatLevel.FADING))
return false;
if (checkState.hasProperty(BlockStateProperties.LIT) && !checkState.getValue(BlockStateProperties.LIT))
return false;
return true;
}
@Override
public AirCurrent getAirCurrent() {
return airCurrent;
@ -189,12 +122,7 @@ public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements
sendData();
}
if (updateGenerator) {
updateGenerator = false;
updateGenerator();
}
if (getSpeed() == 0 || isGenerator)
if (getSpeed() == 0)
return;
if (entitySearchCooldown-- <= 0) {

View file

@ -127,8 +127,6 @@ public class NozzleTileEntity extends SmartTileEntity {
return 0;
IAirCurrentSource source = (IAirCurrentSource) te;
if (source instanceof EncasedFanTileEntity && ((EncasedFanTileEntity) source).isGenerator)
return 0;
if (source.getAirCurrent() == null)
return 0;
if (source.getSpeed() == 0)

View file

@ -1,87 +1,31 @@
package com.simibubi.create.content.contraptions.components.flywheel;
import static net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING;
import java.util.Collections;
import java.util.List;
import com.google.common.collect.Lists;
import com.jozufozu.flywheel.api.InstanceData;
import com.jozufozu.flywheel.api.Instancer;
import com.jozufozu.flywheel.api.Material;
import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.api.instance.DynamicInstance;
import com.jozufozu.flywheel.core.materials.model.ModelData;
import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileInstance;
import com.simibubi.create.content.contraptions.base.flwdata.RotatingData;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import net.minecraft.core.Direction;
import net.minecraft.util.Mth;
import net.minecraft.world.level.block.Rotation;
import net.minecraft.world.level.block.state.BlockState;
public class FlyWheelInstance extends KineticTileInstance<FlywheelTileEntity> implements DynamicInstance {
protected final Direction facing;
protected final Direction connection;
protected boolean connectedLeft;
protected float connectorAngleMult;
protected final RotatingData shaft;
protected final ModelData wheel;
protected List<ModelData> connectors;
protected ModelData upperRotating;
protected ModelData lowerRotating;
protected ModelData upperSliding;
protected ModelData lowerSliding;
protected float lastAngle = Float.NaN;
public FlyWheelInstance(MaterialManager modelManager, FlywheelTileEntity tile) {
super(modelManager, tile);
facing = blockState.getValue(HORIZONTAL_FACING);
shaft = setup(shaftModel().createInstance());
BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90);
wheel = getTransformMaterial()
.getModel(AllBlockPartials.FLYWHEEL, referenceState, referenceState.getValue(HORIZONTAL_FACING))
shaft = setup(getRotatingMaterial().getModel(shaft())
.createInstance());
wheel = getTransformMaterial().getModel(blockState)
.createInstance();
connection = FlywheelBlock.getConnection(blockState);
if (connection != null) {
connectedLeft = blockState.getValue(FlywheelBlock.CONNECTION) == FlywheelBlock.ConnectionState.LEFT;
boolean flipAngle = connection.getAxis() == Direction.Axis.X
^ connection.getAxisDirection() == Direction.AxisDirection.NEGATIVE;
connectorAngleMult = flipAngle ? -1 : 1;
Material<ModelData> mat = getTransformMaterial();
upperRotating = mat.getModel(AllBlockPartials.FLYWHEEL_UPPER_ROTATING, blockState)
.createInstance();
lowerRotating = mat.getModel(AllBlockPartials.FLYWHEEL_LOWER_ROTATING, blockState)
.createInstance();
upperSliding = mat.getModel(AllBlockPartials.FLYWHEEL_UPPER_SLIDING, blockState)
.createInstance();
lowerSliding = mat.getModel(AllBlockPartials.FLYWHEEL_LOWER_SLIDING, blockState)
.createInstance();
connectors = Lists.newArrayList(upperRotating, lowerRotating, upperSliding, lowerSliding);
} else {
connectors = Collections.emptyList();
}
animate(tile.angle);
}
@ -90,7 +34,7 @@ public class FlyWheelInstance extends KineticTileInstance<FlywheelTileEntity> im
float partialTicks = AnimationTickHolder.getPartialTicks();
float speed = blockEntity.visualSpeed.get(partialTicks) * 3 / 10f;
float speed = blockEntity.visualSpeed.getValue(partialTicks) * 3 / 10f;
float angle = blockEntity.angle + speed * partialTicks;
if (Math.abs(angle - lastAngle) < 0.001)
@ -106,38 +50,8 @@ public class FlyWheelInstance extends KineticTileInstance<FlywheelTileEntity> im
TransformStack msr = TransformStack.cast(ms);
msr.translate(getInstancePosition());
if (connection != null) {
float rotation = angle * connectorAngleMult;
ms.pushPose();
rotateToFacing(msr, connection);
ms.pushPose();
transformConnector(msr, true, true, rotation, connectedLeft);
upperRotating.setTransform(ms);
ms.popPose();
ms.pushPose();
transformConnector(msr, false, true, rotation, connectedLeft);
lowerRotating.setTransform(ms);
ms.popPose();
ms.pushPose();
transformConnector(msr, true, false, rotation, connectedLeft);
upperSliding.setTransform(ms);
ms.popPose();
ms.pushPose();
transformConnector(msr, false, false, rotation, connectedLeft);
lowerSliding.setTransform(ms);
ms.popPose();
ms.popPose();
}
msr.centre()
.rotate(Direction.get(Direction.AxisDirection.POSITIVE, facing.getAxis()), AngleHelper.rad(angle))
.rotate(Direction.get(Direction.AxisDirection.POSITIVE, axis), AngleHelper.rad(angle))
.unCentre();
wheel.setTransform(ms);
@ -151,56 +65,12 @@ public class FlyWheelInstance extends KineticTileInstance<FlywheelTileEntity> im
@Override
public void updateLight() {
relight(pos, shaft, wheel);
if (connection != null) {
relight(this.pos.relative(connection), connectors.stream());
}
}
@Override
public void remove() {
shaft.delete();
wheel.delete();
connectors.forEach(InstanceData::delete);
connectors.clear();
}
protected Instancer<RotatingData> shaftModel() {
Direction opposite = facing.getOpposite();
return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, opposite);
}
protected void transformConnector(TransformStack ms, boolean upper, boolean rotating, float angle,
boolean flip) {
float shift = upper ? 1 / 4f : -1 / 8f;
float offset = upper ? 1 / 4f : 1 / 4f;
float radians = (float) (angle / 180 * Math.PI);
float shifting = Mth.sin(radians) * shift + offset;
float maxAngle = upper ? -5 : -15;
float minAngle = upper ? -45 : 5;
float barAngle = 0;
if (rotating)
barAngle = Mth.lerp((Mth.sin((float) (radians + Math.PI / 2)) + 1) / 2, minAngle, maxAngle);
float pivotX = (upper ? 8f : 3f) / 16;
float pivotY = (upper ? 8f : 2f) / 16;
float pivotZ = (upper ? 23f : 21.5f) / 16f;
ms.translate(pivotX, pivotY, pivotZ + shifting);
if (rotating)
ms.rotate(Direction.EAST, AngleHelper.rad(barAngle));
ms.translate(-pivotX, -pivotY, -pivotZ);
if (flip && !upper)
ms.translate(9 / 16f, 0, 0);
}
protected void rotateToFacing(TransformStack buffer, Direction facing) {
buffer.centre()
.rotate(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing)))
.unCentre();
}
}

View file

@ -1,123 +1,65 @@
package com.simibubi.create.content.contraptions.components.flywheel;
import com.simibubi.create.AllShapes;
import com.simibubi.create.AllTileEntities;
import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock;
import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineTileEntity;
import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineBlock;
import com.simibubi.create.foundation.advancement.AllTriggers;
import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock;
import com.simibubi.create.foundation.block.ITE;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.util.StringRepresentable;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.RenderShape;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition.Builder;
import net.minecraft.world.level.block.state.properties.EnumProperty;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class FlywheelBlock extends HorizontalKineticBlock implements ITE<FlywheelTileEntity> {
public static final EnumProperty<ConnectionState> CONNECTION = EnumProperty.create("connection", ConnectionState.class);
public class FlywheelBlock extends RotatedPillarKineticBlock implements ITE<FlywheelTileEntity> {
public FlywheelBlock(Properties properties) {
super(properties);
registerDefaultState(defaultBlockState().setValue(CONNECTION, ConnectionState.NONE));
}
@Override
protected void createBlockStateDefinition(Builder<Block, BlockState> builder) {
super.createBlockStateDefinition(builder.add(CONNECTION));
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
Direction preferred = getPreferredHorizontalFacing(context);
if (preferred != null)
return defaultBlockState().setValue(HORIZONTAL_FACING, preferred.getOpposite());
return this.defaultBlockState().setValue(HORIZONTAL_FACING, context.getHorizontalDirection());
}
public static boolean isConnected(BlockState state) {
return getConnection(state) != null;
}
public static Direction getConnection(BlockState state) {
Direction facing = state.getValue(HORIZONTAL_FACING);
ConnectionState connection = state.getValue(CONNECTION);
if (connection == ConnectionState.LEFT)
return facing.getCounterClockWise();
if (connection == ConnectionState.RIGHT)
return facing.getClockWise();
return null;
}
public static void setConnection(Level world, BlockPos pos, BlockState state, Direction direction) {
Direction facing = state.getValue(HORIZONTAL_FACING);
ConnectionState connection = ConnectionState.NONE;
if (direction == facing.getClockWise())
connection = ConnectionState.RIGHT;
if (direction == facing.getCounterClockWise())
connection = ConnectionState.LEFT;
world.setBlock(pos, state.setValue(CONNECTION, connection), 18);
AllTriggers.triggerForNearbyPlayers(AllTriggers.FLYWHEEL, world, pos, 4);
}
@Override
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
return face == state.getValue(HORIZONTAL_FACING).getOpposite();
}
@Override
public Axis getRotationAxis(BlockState state) {
return state.getValue(HORIZONTAL_FACING).getAxis();
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
Direction connection = getConnection(state);
if (connection == null)
return super.onWrenched(state ,context);
if (context.getClickedFace().getAxis() == state.getValue(HORIZONTAL_FACING).getAxis())
return InteractionResult.PASS;
Level world = context.getLevel();
BlockPos enginePos = context.getClickedPos().relative(connection, 2);
BlockState engine = world.getBlockState(enginePos);
if (engine.getBlock() instanceof FurnaceEngineBlock)
((FurnaceEngineBlock) engine.getBlock()).withTileEntityDo(world, enginePos, EngineTileEntity::detachWheel);
return super.onWrenched(state.setValue(CONNECTION, ConnectionState.NONE), context);
}
public enum ConnectionState implements StringRepresentable {
NONE, LEFT, RIGHT;
@Override
public String getSerializedName() {
return Lang.asId(name());
}
}
@Override
public Class<FlywheelTileEntity> getTileEntityClass() {
return FlywheelTileEntity.class;
}
@Override
public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) {
return AllShapes.LARGE_GEAR.get(pState.getValue(AXIS));
}
@Override
public RenderShape getRenderShape(BlockState pState) {
return RenderShape.ENTITYBLOCK_ANIMATED;
}
@Override
public BlockEntityType<? extends FlywheelTileEntity> getTileEntityType() {
return AllTileEntities.FLYWHEEL.get();
}
@Override
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
return face.getAxis() == getRotationAxis(state);
}
@Override
public Axis getRotationAxis(BlockState state) {
return state.getValue(AXIS);
}
@Override
public float getParticleTargetRadius() {
return 2f;
}
@Override
public float getParticleInitialRadius() {
return 1.75f;
}
}

View file

@ -1,30 +0,0 @@
package com.simibubi.create.content.contraptions.components.flywheel;
import com.simibubi.create.foundation.data.SpecialBlockStateGen;
import com.tterrag.registrate.providers.DataGenContext;
import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.generators.ModelFile;
public class FlywheelGenerator extends SpecialBlockStateGen {
@Override
protected int getXRotation(BlockState state) {
return 0;
}
@Override
protected int getYRotation(BlockState state) {
return horizontalAngle(state.getValue(FlywheelBlock.HORIZONTAL_FACING)) + 90;
}
@Override
public <T extends Block> ModelFile getModel(DataGenContext<Block, T> ctx, RegistrateBlockstateProvider prov,
BlockState state) {
return prov.models()
.getExistingFile(prov.modLoc("block/" + ctx.getName() + "/casing_" + state.getValue(FlywheelBlock.CONNECTION)
.getSerializedName()));
}
}

View file

@ -1,29 +1,18 @@
package com.simibubi.create.content.contraptions.components.flywheel;
import static com.simibubi.create.content.contraptions.base.HorizontalKineticBlock.HORIZONTAL_FACING;
import com.jozufozu.flywheel.backend.Backend;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock.ConnectionState;
import com.simibubi.create.foundation.render.CachedBufferer;
import com.simibubi.create.foundation.render.SuperByteBuffer;
import com.simibubi.create.foundation.utility.AngleHelper;
import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.util.Mth;
import net.minecraft.world.level.block.Rotation;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
public class FlywheelRenderer extends KineticTileEntityRenderer {
@ -36,94 +25,29 @@ public class FlywheelRenderer extends KineticTileEntityRenderer {
int light, int overlay) {
super.renderSafe(te, partialTicks, ms, buffer, light, overlay);
if (Backend.canUseInstancing(te.getLevel())) return;
if (Backend.canUseInstancing(te.getLevel()))
return;
BlockState blockState = te.getBlockState();
FlywheelTileEntity wte = (FlywheelTileEntity) te;
float speed = wte.visualSpeed.get(partialTicks) * 3 / 10f;
float speed = wte.visualSpeed.getValue(partialTicks) * 3 / 10f;
float angle = wte.angle + speed * partialTicks;
VertexConsumer vb = buffer.getBuffer(RenderType.solid());
if (FlywheelBlock.isConnected(blockState)) {
Direction connection = FlywheelBlock.getConnection(blockState);
light = LevelRenderer.getLightColor(te.getLevel(), blockState, te.getBlockPos()
.relative(connection));
float rotation =
connection.getAxis() == Axis.X ^ connection.getAxisDirection() == AxisDirection.NEGATIVE ? -angle
: angle;
boolean flip = blockState.getValue(FlywheelBlock.CONNECTION) == ConnectionState.LEFT;
transformConnector(
rotateToFacing(CachedBufferer.partial(AllBlockPartials.FLYWHEEL_UPPER_ROTATING, blockState), connection), true, true,
rotation, flip).light(light)
.renderInto(ms, vb);
transformConnector(
rotateToFacing(CachedBufferer.partial(AllBlockPartials.FLYWHEEL_LOWER_ROTATING, blockState), connection), false, true,
rotation, flip).light(light)
.renderInto(ms, vb);
transformConnector(rotateToFacing(CachedBufferer.partial(AllBlockPartials.FLYWHEEL_UPPER_SLIDING, blockState), connection),
true, false, rotation, flip).light(light)
.renderInto(ms, vb);
transformConnector(rotateToFacing(CachedBufferer.partial(AllBlockPartials.FLYWHEEL_LOWER_SLIDING, blockState), connection),
false, false, rotation, flip).light(light)
.renderInto(ms, vb);
}
renderFlywheel(te, ms, light, blockState, angle, vb);
}
private void renderFlywheel(KineticTileEntity te, PoseStack ms, int light, BlockState blockState, float angle, VertexConsumer vb) {
BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90);
Direction facing = referenceState.getValue(BlockStateProperties.HORIZONTAL_FACING);
SuperByteBuffer wheel = CachedBufferer.partialFacing(AllBlockPartials.FLYWHEEL, referenceState, facing);
kineticRotationTransform(wheel, te, blockState.getValue(HORIZONTAL_FACING)
.getAxis(), AngleHelper.rad(angle), light);
private void renderFlywheel(KineticTileEntity te, PoseStack ms, int light, BlockState blockState, float angle,
VertexConsumer vb) {
SuperByteBuffer wheel = CachedBufferer.block(blockState);
kineticRotationTransform(wheel, te, getRotationAxisOf(te), AngleHelper.rad(angle), light);
wheel.renderInto(ms, vb);
}
@Override
protected SuperByteBuffer getRotatedModel(KineticTileEntity te, BlockState state) {
return CachedBufferer.partialFacing(AllBlockPartials.SHAFT_HALF, state, state
.getValue(BlockStateProperties.HORIZONTAL_FACING)
.getOpposite());
}
protected SuperByteBuffer transformConnector(SuperByteBuffer buffer, boolean upper, boolean rotating, float angle,
boolean flip) {
float shift = upper ? 1 / 4f : -1 / 8f;
float offset = upper ? 1 / 4f : 1 / 4f;
float radians = (float) (angle / 180 * Math.PI);
float shifting = Mth.sin(radians) * shift + offset;
float maxAngle = upper ? -5 : -15;
float minAngle = upper ? -45 : 5;
float barAngle = 0;
if (rotating)
barAngle = Mth.lerp((Mth.sin((float) (radians + Math.PI / 2)) + 1) / 2, minAngle, maxAngle);
float pivotX = (upper ? 8f : 3f) / 16;
float pivotY = (upper ? 8f : 2f) / 16;
float pivotZ = (upper ? 23f : 21.5f) / 16f;
buffer.translate(pivotX, pivotY, pivotZ + shifting);
if (rotating)
buffer.rotate(Direction.EAST, AngleHelper.rad(barAngle));
buffer.translate(-pivotX, -pivotY, -pivotZ);
if (flip && !upper)
buffer.translate(9 / 16f, 0, 0);
return buffer;
}
protected SuperByteBuffer rotateToFacing(SuperByteBuffer buffer, Direction facing) {
buffer.rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing)));
return buffer;
protected BlockState getRenderedBlockState(KineticTileEntity te) {
return shaft(getRotationAxisOf(te));
}
}

View file

@ -1,7 +1,8 @@
package com.simibubi.create.content.contraptions.components.flywheel;
import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity;
import com.simibubi.create.foundation.utility.animation.InterpolatedChasingValue;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
@ -9,46 +10,15 @@ import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
public class FlywheelTileEntity extends GeneratingKineticTileEntity {
public class FlywheelTileEntity extends KineticTileEntity {
private float generatedCapacity;
private float generatedSpeed;
private int stoppingCooldown;
// Client
InterpolatedChasingValue visualSpeed = new InterpolatedChasingValue();
LerpedFloat visualSpeed = LerpedFloat.linear();
float angle;
public FlywheelTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}
public void setRotation(float speed, float capacity) {
if (generatedSpeed != speed || generatedCapacity != capacity) {
if (speed == 0) {
if (stoppingCooldown == 0)
stoppingCooldown = 40;
return;
}
stoppingCooldown = 0;
generatedSpeed = speed;
generatedCapacity = capacity;
updateGeneratedRotation();
}
}
@Override
public float getGeneratedSpeed() {
return convertToDirection(generatedSpeed, getBlockState().getValue(FlywheelBlock.HORIZONTAL_FACING));
}
@Override
public float calculateAddedStressCapacity() {
return lastCapacityProvided = generatedCapacity;
}
@Override
protected AABB createRenderBoundingBox() {
return super.createRenderBoundingBox().inflate(2);
@ -56,51 +26,27 @@ public class FlywheelTileEntity extends GeneratingKineticTileEntity {
@Override
public void write(CompoundTag compound, boolean clientPacket) {
compound.putFloat("GeneratedSpeed", generatedSpeed);
compound.putFloat("GeneratedCapacity", generatedCapacity);
compound.putInt("Cooldown", stoppingCooldown);
super.write(compound, clientPacket);
}
@Override
protected void read(CompoundTag compound, boolean clientPacket) {
generatedSpeed = compound.getFloat("GeneratedSpeed");
generatedCapacity = compound.getFloat("GeneratedCapacity");
stoppingCooldown = compound.getInt("Cooldown");
super.read(compound, clientPacket);
if (clientPacket)
visualSpeed.withSpeed(1 / 32f)
.target(getGeneratedSpeed());
visualSpeed.chase(getGeneratedSpeed(), 1 / 64f, Chaser.EXP);
}
@Override
public void tick() {
super.tick();
if (level.isClientSide) {
float targetSpeed = isVirtual() ? speed : getGeneratedSpeed();
visualSpeed.target(targetSpeed);
visualSpeed.tick();
angle += visualSpeed.value * 3 / 10f;
angle %= 360;
return;
}
/*
* After getting moved by pistons the generatedSpeed attribute reads 16 but the
* actual speed stays at 0, if it happens update rotation
*/
if (getGeneratedSpeed() != 0 && getSpeed() == 0)
updateGeneratedRotation();
if (stoppingCooldown == 0)
if (!level.isClientSide)
return;
stoppingCooldown--;
if (stoppingCooldown == 0) {
generatedCapacity = 0;
generatedSpeed = 0;
updateGeneratedRotation();
}
float targetSpeed = getSpeed();
visualSpeed.updateChaseTarget(targetSpeed);
visualSpeed.tickChaser();
angle += visualSpeed.getValue() * 3 / 10f;
angle %= 360;
}
}

View file

@ -1,93 +0,0 @@
package com.simibubi.create.content.contraptions.components.flywheel.engine;
import javax.annotation.Nullable;
import com.jozufozu.flywheel.core.PartialModel;
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition.Builder;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public abstract class EngineBlock extends HorizontalDirectionalBlock implements IWrenchable {
protected EngineBlock(Properties builder) {
super(builder);
}
@Override
public boolean canSurvive(BlockState state, LevelReader worldIn, BlockPos pos) {
return isValidPosition(state, worldIn, pos, state.getValue(FACING));
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
return InteractionResult.FAIL;
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
Direction facing = context.getClickedFace();
return defaultBlockState().setValue(FACING,
facing.getAxis().isVertical() ? context.getHorizontalDirection().getOpposite() : facing);
}
@Override
protected void createBlockStateDefinition(Builder<Block, BlockState> builder) {
super.createBlockStateDefinition(builder.add(FACING));
}
@Override
public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos,
boolean isMoving) {
if (worldIn.isClientSide)
return;
if (fromPos.equals(getBaseBlockPos(state, pos))) {
if (!canSurvive(state, worldIn, pos)) {
worldIn.destroyBlock(pos, true);
return;
}
}
}
private boolean isValidPosition(BlockState state, BlockGetter world, BlockPos pos, Direction facing) {
BlockPos baseBlockPos = getBaseBlockPos(state, pos);
if (!isValidBaseBlock(world.getBlockState(baseBlockPos), world, pos))
return false;
for (Direction otherFacing : Iterate.horizontalDirections) {
if (otherFacing == facing)
continue;
BlockPos otherPos = baseBlockPos.relative(otherFacing);
BlockState otherState = world.getBlockState(otherPos);
if (otherState.getBlock() instanceof EngineBlock
&& getBaseBlockPos(otherState, otherPos).equals(baseBlockPos))
return false;
}
return true;
}
public static BlockPos getBaseBlockPos(BlockState state, BlockPos pos) {
return pos.relative(state.getValue(FACING).getOpposite());
}
@Nullable
@OnlyIn(Dist.CLIENT)
public abstract PartialModel getFrameModel();
protected abstract boolean isValidBaseBlock(BlockState baseBlock, BlockGetter world, BlockPos pos);
}

View file

@ -1,51 +0,0 @@
package com.simibubi.create.content.contraptions.components.flywheel.engine;
import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance;
import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.core.materials.model.ModelData;
import com.simibubi.create.foundation.utility.AngleHelper;
import net.minecraft.core.Direction;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
public class EngineInstance extends BlockEntityInstance<EngineTileEntity> {
protected ModelData frame;
public EngineInstance(MaterialManager modelManager, EngineTileEntity tile) {
super(modelManager, tile);
Block block = blockState
.getBlock();
if (!(block instanceof EngineBlock engineBlock))
return;
PartialModel frame = engineBlock.getFrameModel();
Direction facing = blockState.getValue(BlockStateProperties.HORIZONTAL_FACING);
this.frame = getTransformMaterial().getModel(frame, blockState).createInstance();
float angle = AngleHelper.rad(AngleHelper.horizontalAngle(facing));
this.frame.loadIdentity()
.translate(getInstancePosition())
.nudge(pos.hashCode())
.centre()
.rotate(Direction.UP, angle)
.unCentre()
.translate(0, 0, -1);
}
@Override
public void remove() {
frame.delete();
}
@Override
public void updateLight() {
relight(pos, frame);
}
}

View file

@ -1,45 +0,0 @@
package com.simibubi.create.content.contraptions.components.flywheel.engine;
import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.core.PartialModel;
import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.foundation.render.CachedBufferer;
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
import com.simibubi.create.foundation.utility.AngleHelper;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.core.Direction;
import net.minecraft.world.level.block.Block;
public class EngineRenderer<T extends EngineTileEntity> extends SafeTileEntityRenderer<T> {
public EngineRenderer(BlockEntityRendererProvider.Context context) {
}
@Override
protected void renderSafe(T te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light,
int overlay) {
if (Backend.canUseInstancing(te.getLevel())) return;
Block block = te.getBlockState()
.getBlock();
if (block instanceof EngineBlock) {
EngineBlock engineBlock = (EngineBlock) block;
PartialModel frame = engineBlock.getFrameModel();
if (frame != null) {
Direction facing = te.getBlockState()
.getValue(EngineBlock.FACING);
float angle = AngleHelper.rad(AngleHelper.horizontalAngle(facing));
CachedBufferer.partial(frame, te.getBlockState())
.rotateCentered(Direction.UP, angle)
.translate(0, 0, -1)
.light(light)
.renderInto(ms, buffer.getBuffer(RenderType.solid()));
}
}
}
}

View file

@ -1,97 +0,0 @@
package com.simibubi.create.content.contraptions.components.flywheel.engine;
import java.util.List;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock;
import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity;
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
public class EngineTileEntity extends SmartTileEntity {
public float appliedCapacity;
public float appliedSpeed;
protected FlywheelTileEntity poweredWheel;
public EngineTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}
@Override
public void addBehaviours(List<TileEntityBehaviour> behaviours) {
}
@Override
protected AABB createRenderBoundingBox() {
return super.createRenderBoundingBox().inflate(1.5f);
}
@Override
public void lazyTick() {
super.lazyTick();
if (level.isClientSide)
return;
if (poweredWheel != null && poweredWheel.isRemoved())
poweredWheel = null;
if (poweredWheel == null)
attachWheel();
}
public void attachWheel() {
Direction engineFacing = getBlockState().getValue(EngineBlock.FACING);
BlockPos wheelPos = worldPosition.relative(engineFacing, 2);
BlockState wheelState = level.getBlockState(wheelPos);
if (!AllBlocks.FLYWHEEL.has(wheelState))
return;
Direction wheelFacing = wheelState.getValue(FlywheelBlock.HORIZONTAL_FACING);
if (wheelFacing.getAxis() != engineFacing.getClockWise().getAxis())
return;
if (FlywheelBlock.isConnected(wheelState)
&& FlywheelBlock.getConnection(wheelState) != engineFacing.getOpposite())
return;
BlockEntity te = level.getBlockEntity(wheelPos);
if (te.isRemoved())
return;
if (te instanceof FlywheelTileEntity) {
if (!FlywheelBlock.isConnected(wheelState))
FlywheelBlock.setConnection(level, te.getBlockPos(), te.getBlockState(), engineFacing.getOpposite());
poweredWheel = (FlywheelTileEntity) te;
refreshWheelSpeed();
}
}
public void detachWheel() {
if (poweredWheel == null || poweredWheel.isRemoved())
return;
poweredWheel.setRotation(0, 0);
FlywheelBlock.setConnection(level, poweredWheel.getBlockPos(), poweredWheel.getBlockState(), null);
poweredWheel = null;
}
@Override
public void setRemoved() {
super.setRemoved();
}
@Override
protected void setRemovedNotDueToChunkUnload() {
detachWheel();
super.setRemovedNotDueToChunkUnload();
}
protected void refreshWheelSpeed() {
if (poweredWheel == null)
return;
poweredWheel.setRotation(appliedSpeed, appliedCapacity);
}
}

View file

@ -1,91 +0,0 @@
package com.simibubi.create.content.contraptions.components.flywheel.engine;
import com.jozufozu.flywheel.core.PartialModel;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllShapes;
import com.simibubi.create.AllTileEntities;
import com.simibubi.create.foundation.block.ITE;
import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld;
import net.minecraft.core.BlockPos;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.AbstractFurnaceBlock;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock;
import net.minecraftforge.eventbus.api.Event.Result;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
@EventBusSubscriber
public class FurnaceEngineBlock extends EngineBlock implements ITE<FurnaceEngineTileEntity> {
public FurnaceEngineBlock(Properties properties) {
super(properties);
}
@Override
protected boolean isValidBaseBlock(BlockState baseBlock, BlockGetter world, BlockPos pos) {
return FurnaceEngineInteractions.getHandler(baseBlock).getHeatSource(baseBlock).isValid();
}
@Override
public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
return AllShapes.FURNACE_ENGINE.get(state.getValue(FACING));
}
@Override
@OnlyIn(Dist.CLIENT)
public PartialModel getFrameModel() {
return AllBlockPartials.FURNACE_GENERATOR_FRAME;
}
@Override
public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos,
boolean isMoving) {
super.neighborChanged(state, worldIn, pos, blockIn, fromPos, isMoving);
if (worldIn instanceof WrappedWorld)
return;
if (worldIn.isClientSide)
return;
if (fromPos.equals(getBaseBlockPos(state, pos)))
if (canSurvive(state, worldIn, pos))
withTileEntityDo(worldIn, pos, FurnaceEngineTileEntity::updateFurnace);
}
@SubscribeEvent
public static void usingFurnaceEngineOnFurnacePreventsGUI(RightClickBlock event) {
ItemStack item = event.getItemStack();
if (!(item.getItem() instanceof BlockItem blockItem))
return;
if (blockItem.getBlock() != AllBlocks.FURNACE_ENGINE.get())
return;
BlockState state = event.getWorld().getBlockState(event.getPos());
if (event.getFace().getAxis().isVertical())
return;
if (state.getBlock() instanceof AbstractFurnaceBlock)
event.setUseBlock(Result.DENY);
}
@Override
public Class<FurnaceEngineTileEntity> getTileEntityClass() {
return FurnaceEngineTileEntity.class;
}
@Override
public BlockEntityType<? extends FurnaceEngineTileEntity> getTileEntityType() {
return AllTileEntities.FURNACE_ENGINE.get();
}
}

View file

@ -1,111 +0,0 @@
package com.simibubi.create.content.contraptions.components.flywheel.engine;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import net.minecraft.world.level.block.AbstractFurnaceBlock;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.registries.IRegistryDelegate;
/**
* Example:
*
* <pre>
* {@code
* FurnaceEngineInteractions.registerHandler(Blocks.REDSTONE_LAMP.delegate, FurnaceEngineInteractions.InteractionHandler.of(
* s -> s.getBlock() instanceof RedstoneLampBlock && s.hasProperty(RedstoneLampBlock.LIT) ?
* (s.getValue(RedstoneLampBlock.LIT) ? HeatSource.ACTIVE : HeatSource.VALID) : HeatSource.EMPTY, s -> 1.5f));
* }
* </pre>
*/
public class FurnaceEngineInteractions {
private static final Map<IRegistryDelegate<Block>, InteractionHandler> HANDLERS = new HashMap<>();
private static final InteractionHandler DEFAULT_HANDLER = new InteractionHandler() {};
public static void registerHandler(IRegistryDelegate<Block> block, InteractionHandler handler) {
HANDLERS.put(block, handler);
}
public static InteractionHandler getHandler(IRegistryDelegate<Block> delegate) {
return HANDLERS.getOrDefault(delegate, DEFAULT_HANDLER);
}
public static InteractionHandler getHandler(BlockState state) {
return getHandler(state.getBlock().delegate);
}
public static void registerDefaults() {
registerHandler(Blocks.BLAST_FURNACE.delegate, InteractionHandler.ofCustomSpeedModifier(state -> 2f));
}
public interface InteractionHandler {
default HeatSource getHeatSource(BlockState state) {
if (state.getBlock() instanceof AbstractFurnaceBlock && state.hasProperty(AbstractFurnaceBlock.LIT)) {
if (state.getValue(AbstractFurnaceBlock.LIT)) {
return HeatSource.ACTIVE;
} else {
return HeatSource.VALID;
}
}
return HeatSource.EMPTY;
}
default float getSpeedModifier(BlockState state) {
return 1f;
};
static InteractionHandler of(Function<BlockState, HeatSource> heatSourceFunc, Function<BlockState, Float> speedModifierFunc) {
return new InteractionHandler() {
@Override
public HeatSource getHeatSource(BlockState state) {
return heatSourceFunc.apply(state);
}
@Override
public float getSpeedModifier(BlockState state) {
return speedModifierFunc.apply(state);
}
};
}
static InteractionHandler ofCustomHeatSource(Function<BlockState, HeatSource> heatSourceFunc) {
return new InteractionHandler() {
@Override
public HeatSource getHeatSource(BlockState state) {
return heatSourceFunc.apply(state);
}
};
}
static InteractionHandler ofCustomSpeedModifier(Function<BlockState, Float> speedModifierFunc) {
return new InteractionHandler() {
@Override
public float getSpeedModifier(BlockState state) {
return speedModifierFunc.apply(state);
}
};
}
}
public enum HeatSource {
EMPTY,
VALID,
ACTIVE;
public boolean isEmpty() {
return this == EMPTY;
}
public boolean isValid() {
return this != EMPTY;
}
public boolean isActive() {
return this == ACTIVE;
}
}
}

View file

@ -1,43 +0,0 @@
package com.simibubi.create.content.contraptions.components.flywheel.engine;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineInteractions.HeatSource;
import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineInteractions.InteractionHandler;
import com.simibubi.create.foundation.block.BlockStressValues;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
public class FurnaceEngineTileEntity extends EngineTileEntity {
public FurnaceEngineTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}
@Override
public void lazyTick() {
updateFurnace();
super.lazyTick();
}
public void updateFurnace() {
BlockState state = level.getBlockState(EngineBlock.getBaseBlockPos(getBlockState(), worldPosition));
InteractionHandler handler = FurnaceEngineInteractions.getHandler(state);
HeatSource heatSource = handler.getHeatSource(state);
if (heatSource.isEmpty())
return;
float modifier = handler.getSpeedModifier(state);
boolean active = heatSource.isActive();
float speed = active ? 16 * modifier : 0;
float capacity =
(float) (active ? BlockStressValues.getCapacity(AllBlocks.FURNACE_ENGINE.get())
: 0);
appliedCapacity = capacity;
appliedSpeed = speed;
refreshWheelSpeed();
}
}

View file

@ -11,7 +11,6 @@ import com.simibubi.create.content.contraptions.components.actors.PloughBlock;
import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceBlock;
import com.simibubi.create.content.contraptions.components.crank.HandCrankBlock;
import com.simibubi.create.content.contraptions.components.fan.NozzleBlock;
import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineBlock;
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkBearingBlock;
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkBearingTileEntity;
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.MechanicalBearingBlock;
@ -322,9 +321,6 @@ public class BlockMovementChecks {
if (block instanceof NozzleBlock)
return direction == state.getValue(NozzleBlock.FACING)
.getOpposite();
if (block instanceof EngineBlock)
return direction == state.getValue(EngineBlock.FACING)
.getOpposite();
if (block instanceof BellBlock) {
BellAttachType attachment = state.getValue(BlockStateProperties.BELL_ATTACHMENT);
if (attachment == BellAttachType.FLOOR)

View file

@ -90,7 +90,7 @@ public class BoilerData {
}
public int getMaxHeatLevelForBoilerSize(int boilerSize) {
return boilerSize / 4;
return (int) Math.min(18, boilerSize / 4);
}
public int getMaxHeatLevelForWaterSupply() {
@ -182,7 +182,7 @@ public class BoilerData {
c.append(bars(min > 0 ? 1 : 0, ChatFormatting.GREEN));
c.append(bars(Math.max(0, level - min), ChatFormatting.DARK_GREEN));
c.append(bars(Math.max(0, max - level), ChatFormatting.DARK_RED));
c.append(bars(Math.max(0, 18 - max), ChatFormatting.DARK_GRAY));
c.append(bars(Math.max(0, Math.min(18 - max, ((max / 5 + 1) * 5) - max)), ChatFormatting.DARK_GRAY));
return c;
}

View file

@ -489,10 +489,10 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE<BeltTileEnt
belt.getInventory()
.ejectAll();
belt.setRemoved();
hasPulley = belt.hasPulley();
}
world.removeBlockEntity(currentPos);
BlockState shaftState = AllBlocks.SHAFT.getDefaultState()
.setValue(BlockStateProperties.AXIS, getRotationAxis(currentState));
world.setBlock(currentPos, hasPulley ? shaftState : Blocks.AIR.defaultBlockState(), 3);

View file

@ -7,9 +7,7 @@ import javax.annotation.Nullable;
import org.apache.commons.lang3.mutable.MutableBoolean;
import com.jozufozu.flywheel.core.PartialModel;
import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
@ -109,10 +107,6 @@ public abstract class ArmInteractionPoint {
@OnlyIn(Dist.CLIENT)
protected void transformFlag(PoseStack stack) {}
protected PartialModel getFlagType() {
return mode == Mode.TAKE ? AllBlockPartials.FLAG_LONG_OUT : AllBlockPartials.FLAG_LONG_IN;
}
protected void cycleMode() {
mode = mode == Mode.DEPOSIT ? Mode.TAKE : Mode.DEPOSIT;
}

View file

@ -12,7 +12,7 @@ import com.simibubi.create.CreateClient;
import com.simibubi.create.content.contraptions.KineticDebugger;
import com.simibubi.create.content.contraptions.base.IRotate;
import com.simibubi.create.content.contraptions.components.fan.AirCurrent;
import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineBlock;
import com.simibubi.create.content.contraptions.components.steam.SteamEngineBlock;
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionHandler;
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.ChassisRangeDisplay;
import com.simibubi.create.content.contraptions.components.structureMovement.interaction.controls.ControlsHandler;
@ -251,7 +251,7 @@ public class ClientEvents {
if (stack.getItem() instanceof BlockItem) {
BlockItem item = (BlockItem) stack.getItem();
if (item.getBlock() instanceof IRotate || item.getBlock() instanceof EngineBlock) {
if (item.getBlock() instanceof IRotate || item.getBlock() instanceof SteamEngineBlock) {
List<Component> kineticStats = ItemDescription.getKineticStats(item.getBlock());
if (!kineticStats.isEmpty()) {
event.getToolTip()

View file

@ -329,11 +329,6 @@ public class AllAdvancements implements DataProvider {
.addCriterion("0", AllTriggers.FLYWHEEL.instance())
.save(t, id + ":flywheel");
Advancement overstress_flywheel =
advancement("overstress_flywheel", AllBlocks.FURNACE_ENGINE.get(), TaskType.CHALLENGE).parent(flywheel)
.addCriterion("0", AllTriggers.OVERSTRESS_FLYWHEEL.instance())
.save(t, id + ":overstress_flywheel");
Advancement clockwork_bearing =
advancement("clockwork_bearing", AllBlocks.CLOCKWORK_BEARING.get(), TaskType.NORMAL)
.parent(brass_casing)

View file

@ -55,7 +55,7 @@ public class CKinetics extends ConfigBase {
f(4, 0, 4096, "mediumStressImpact", Comments.su, Comments.mediumStressImpact);
public final ConfigFloat highStressImpact = f(8, 0, 65535, "highStressImpact", Comments.su, Comments.highStressImpact);
public final ConfigFloat mediumCapacity = f(128, 0, 4096, "mediumCapacity", Comments.su, Comments.mediumCapacity);
public final ConfigFloat highCapacity = f(512, 0, 65535, "highCapacity", Comments.su, Comments.highCapacity);
public final ConfigFloat highCapacity = f(1024, 0, 65535, "highCapacity", Comments.su, Comments.highCapacity);
@Override
public String getName() {

View file

@ -62,15 +62,6 @@ public class MechanicalCraftingRecipeGen extends CreateRecipeProvider {
.patternLine("LRSSS")
.patternLine("CC ")),
FURNACE_ENGINE = create(AllBlocks.FURNACE_ENGINE::get).returns(1)
.recipe(b -> b.key('P', Ingredient.of(I.brassSheet()))
.key('B', Ingredient.of(I.brass()))
.key('I', Ingredient.of(Blocks.PISTON, Blocks.STICKY_PISTON))
.key('C', I.brassCasing())
.patternLine("PPB")
.patternLine("PCI")
.patternLine("PPB")),
FLYWHEEL = create(AllBlocks.FLYWHEEL::get).returns(1)
.recipe(b -> b.key('B', Ingredient.of(I.brass()))
.key('C', I.brassCasing())

View file

@ -24,8 +24,6 @@ import java.util.List;
import com.simibubi.create.content.contraptions.base.IRotate;
import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel;
import com.simibubi.create.content.contraptions.base.IRotate.StressImpact;
import com.simibubi.create.content.contraptions.components.fan.EncasedFanBlock;
import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineBlock;
import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelBlock;
import com.simibubi.create.content.contraptions.goggles.GogglesItem;
import com.simibubi.create.foundation.block.BlockStressValues;
@ -101,27 +99,28 @@ public class ItemDescription {
showStressImpact = !((IRotate) block).hideStressImpact();
}
boolean hasSpeedRequirement = minimumRequiredSpeedLevel != SpeedLevel.NONE && minimumRequiredSpeedLevel != SpeedLevel.SLOW;
// boolean hasSpeedRequirement =
// minimumRequiredSpeedLevel != SpeedLevel.NONE && minimumRequiredSpeedLevel != SpeedLevel.SLOW;
boolean hasStressImpact =
StressImpact.isEnabled() && showStressImpact && BlockStressValues.getImpact(block) > 0;
boolean hasStressCapacity = StressImpact.isEnabled() && BlockStressValues.hasCapacity(block);
if (hasSpeedRequirement) {
int index = minimumRequiredSpeedLevel.ordinal();
MutableComponent level =
new TextComponent(makeProgressBar(3, index)).withStyle(minimumRequiredSpeedLevel.getTextColor());
if (hasGoggles)
level.append(String.valueOf(minimumRequiredSpeedLevel.getSpeedValue()))
.append(rpmUnit)
.append("+");
else
level.append(Lang.translate("tooltip.speedRequirement." + Lang.asId(minimumRequiredSpeedLevel.name())));
list.add(Lang.translate("tooltip.speedRequirement")
.withStyle(GRAY));
list.add(level);
}
// if (hasSpeedRequirement) {
// int index = minimumRequiredSpeedLevel.ordinal();
// MutableComponent level =
// new TextComponent(makeProgressBar(3, index)).withStyle(minimumRequiredSpeedLevel.getTextColor());
//
// if (hasGoggles)
// level.append(String.valueOf(minimumRequiredSpeedLevel.getSpeedValue()))
// .append(rpmUnit)
// .append("+");
// else
// level.append(Lang.translate("tooltip.speedRequirement." + Lang.asId(minimumRequiredSpeedLevel.name())));
//
// list.add(Lang.translate("tooltip.speedRequirement")
// .withStyle(GRAY));
// list.add(level);
// }
if (hasStressImpact) {
double impact = BlockStressValues.getImpact(block);
@ -144,11 +143,13 @@ public class ItemDescription {
if (hasStressCapacity) {
double capacity = BlockStressValues.getCapacity(block);
StressImpact impactId = capacity >= config.highCapacity.get() ? StressImpact.LOW
: (capacity >= config.mediumCapacity.get() ? StressImpact.MEDIUM : StressImpact.HIGH);
StressImpact impactId = capacity >= config.highCapacity.get() ? StressImpact.HIGH
: (capacity >= config.mediumCapacity.get() ? StressImpact.MEDIUM : StressImpact.LOW);
StressImpact opposite = StressImpact.values()[2 - impactId.ordinal()];
int index = StressImpact.values().length - 2 - impactId.ordinal();
MutableComponent level =
new TextComponent(makeProgressBar(3, index + 1)).withStyle(impactId.getAbsoluteColor());
new TextComponent(makeProgressBar(3, impactId.ordinal() + 1)).withStyle(opposite.getAbsoluteColor());
if (hasGoggles)
level.append(capacity + "x ")
@ -307,15 +308,6 @@ public class ItemDescription {
value = (speedmod + baseSpeed) + "-" + (baseSpeed + (speedmod * 3));
}
else if (block instanceof EncasedFanBlock)
value = AllConfigs.SERVER.kinetics.generatingFanSpeed.get()
.toString();
else if (block instanceof FurnaceEngineBlock) {
int baseSpeed = AllConfigs.SERVER.kinetics.furnaceEngineSpeed.get();
value = baseSpeed + "-" + (baseSpeed * 2);
}
return !value.equals("") ? Lang.translate("tooltip.generationSpeed", value, unitRPM)
: TextComponent.EMPTY.plainCopy();
}

View file

@ -269,37 +269,4 @@ public class FanScenes {
}
public static void source(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("fan_source", "Generating Rotational Force using Encased Fans");
scene.configureBasePlate(0, 0, 5);
scene.world.showSection(util.select.layer(0), Direction.UP);
scene.idle(5);
scene.world.showSection(util.select.layer(1), Direction.DOWN);
scene.idle(10);
scene.world.showSection(util.select.layersFrom(2), Direction.DOWN);
scene.idle(10);
BlockPos rightFan = util.grid.at(1, 2, 2);
scene.overlay.showText(70)
.text("Fans facing down into a source of heat can provide Rotational Force")
.placeNearTarget()
.pointAt(util.vector.blockSurface(rightFan, Direction.WEST));
scene.idle(80);
scene.addKeyframe();
for (BlockPos pos : new BlockPos[] { rightFan, util.grid.at(3, 2, 2) }) {
scene.idle(10);
scene.world.toggleRedstonePower(util.select.position(pos.north()));
scene.effects.indicateRedstone(pos.north());
scene.world.setKineticSpeed(util.select.fromTo(pos, pos.above()), 4);
scene.effects.rotationSpeedIndicator(pos.above());
}
scene.overlay.showText(90)
.text("When given a Redstone Signal, the Fans will start providing power")
.colored(PonderPalette.RED)
.placeNearTarget()
.pointAt(util.vector.blockSurface(rightFan, Direction.WEST));
scene.markAsFinished();
}
}

View file

@ -971,94 +971,6 @@ public class KineticsScenes {
scene.world.setKineticSpeed(outputKinetics, 0);
}
public static void furnaceEngine(SceneBuilder scene, SceneBuildingUtil util) {
furnaceEngine(scene, util, false);
}
public static void flywheel(SceneBuilder scene, SceneBuildingUtil util) {
furnaceEngine(scene, util, true);
}
private static void furnaceEngine(SceneBuilder scene, SceneBuildingUtil util, boolean flywheel) {
scene.title(flywheel ? "flywheel" : "furnace_engine",
"Generating Rotational Force using the " + (flywheel ? "Flywheel" : "Furnace Engine"));
scene.configureBasePlate(0, 0, 6);
scene.world.showSection(util.select.layer(0), Direction.UP);
BlockPos furnacePos = util.grid.at(4, 1, 3);
BlockPos cogPos = util.grid.at(1, 1, 2);
BlockPos gaugePos = util.grid.at(1, 1, 1);
scene.idle(5);
Selection furnaceSelect = util.select.position(furnacePos);
scene.world.showSection(furnaceSelect, Direction.DOWN);
scene.idle(10);
scene.world.showSection(util.select.position(furnacePos.west()), Direction.DOWN);
scene.idle(10);
scene.world.showSection(util.select.position(furnacePos.west(3)), Direction.EAST);
scene.idle(10);
String text = flywheel ? "Flywheels are required for generating rotational force with the Furnace Engine"
: "Furnace Engines generate Rotational Force while their attached Furnace is running";
scene.overlay.showText(80)
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.topOf(furnacePos.west(flywheel ? 3 : 1)))
.text(text);
scene.idle(90);
scene.overlay.showControls(
new InputWindowElement(util.vector.topOf(furnacePos), Pointing.DOWN).withItem(new ItemStack(Items.OAK_LOG)),
30);
scene.idle(5);
scene.overlay
.showControls(new InputWindowElement(util.vector.blockSurface(furnacePos, Direction.NORTH), Pointing.RIGHT)
.withItem(new ItemStack(Items.COAL)), 30);
scene.idle(7);
scene.world.cycleBlockProperty(furnacePos, FurnaceBlock.LIT);
scene.effects.emitParticles(util.vector.of(4.5, 1.2, 2.9), Emitter.simple(ParticleTypes.LAVA, Vec3.ZERO), 4, 1);
scene.world.setKineticSpeed(util.select.fromTo(1, 1, 3, 1, 1, 1), 16);
scene.idle(40);
scene.world.showSection(util.select.position(cogPos), Direction.SOUTH);
scene.idle(15);
scene.effects.rotationSpeedIndicator(cogPos);
scene.world.showSection(util.select.position(gaugePos), Direction.SOUTH);
scene.idle(15);
scene.overlay.showText(80)
.attachKeyFrame()
.placeNearTarget()
.colored(PonderPalette.GREEN)
.pointAt(util.vector.blockSurface(gaugePos, Direction.WEST))
.text("The provided Rotational Force has a very large stress capacity");
scene.idle(90);
ElementLink<WorldSectionElement> engine =
scene.world.makeSectionIndependent(util.select.fromTo(3, 1, 3, 1, 1, 1));
scene.world.moveSection(engine, util.vector.of(0, 1, 0), 15);
scene.idle(10);
scene.world.hideSection(furnaceSelect, Direction.NORTH);
scene.idle(15);
scene.world.setBlock(furnacePos, Blocks.BLAST_FURNACE.defaultBlockState()
.setValue(FurnaceBlock.FACING, Direction.NORTH)
.setValue(FurnaceBlock.LIT, true), false);
scene.world.showSection(furnaceSelect, Direction.NORTH);
scene.idle(10);
scene.world.moveSection(engine, util.vector.of(0, -1, 0), 15);
scene.idle(10);
scene.world.setKineticSpeed(util.select.fromTo(1, 1, 3, 1, 1, 1), 32);
scene.idle(5);
scene.effects.rotationSpeedIndicator(cogPos);
scene.overlay.showText(80)
.placeNearTarget()
.colored(PonderPalette.MEDIUM)
.pointAt(util.vector.topOf(furnacePos.west()))
.text("Using a Blast Furnace will double the efficiency of the Engine");
}
public static void speedController(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("rotation_speed_controller", "Using the Rotational Speed Controller");
scene.configureBasePlate(0, 0, 5);

View file

@ -65,8 +65,7 @@ public class PonderIndex {
HELPER.forComponents(AllBlocks.ENCASED_FAN)
.addStoryBoard("fan/direction", FanScenes::direction, PonderTag.KINETIC_APPLIANCES)
.addStoryBoard("fan/processing", FanScenes::processing)
.addStoryBoard("fan/source", FanScenes::source, PonderTag.KINETIC_SOURCES);
.addStoryBoard("fan/processing", FanScenes::processing);
HELPER.addStoryBoard(AllBlocks.CREATIVE_MOTOR, "creative_motor", KineticsScenes::creativeMotor,
PonderTag.KINETIC_SOURCES);
@ -84,10 +83,6 @@ public class PonderIndex {
HELPER.forComponents(AllBlocks.ENCASED_CHAIN_DRIVE, AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT)
.addStoryBoard("chain_drive/gearshift", ChainDriveScenes::adjustableChainGearshift);
HELPER.forComponents(AllBlocks.FURNACE_ENGINE)
.addStoryBoard("furnace_engine", KineticsScenes::furnaceEngine);
HELPER.forComponents(AllBlocks.FLYWHEEL)
.addStoryBoard("furnace_engine", KineticsScenes::flywheel);
HELPER.forComponents(AllBlocks.ROTATION_SPEED_CONTROLLER)
.addStoryBoard("speed_controller", KineticsScenes::speedController);
@ -328,10 +323,8 @@ public class PonderIndex {
.add(AllBlocks.HAND_CRANK)
.add(AllBlocks.COPPER_VALVE_HANDLE)
.add(AllBlocks.WATER_WHEEL)
.add(AllBlocks.ENCASED_FAN)
.add(AllBlocks.WINDMILL_BEARING)
.add(AllBlocks.FURNACE_ENGINE)
.add(AllBlocks.FLYWHEEL)
.add(AllBlocks.STEAM_ENGINE)
.add(AllBlocks.CREATIVE_MOTOR);
PonderRegistry.TAGS.forTag(PonderTag.KINETIC_APPLIANCES)

View file

@ -10,7 +10,7 @@ public class RemoveTileEntityPacket extends TileEntityDataPacket<SyncedTileEntit
public RemoveTileEntityPacket(BlockPos pos) {
super(pos);
}
public RemoveTileEntityPacket(FriendlyByteBuf buffer) {
super(buffer);
}
@ -20,7 +20,13 @@ public class RemoveTileEntityPacket extends TileEntityDataPacket<SyncedTileEntit
@Override
protected void handlePacket(SyncedTileEntity tile) {
tile.setRemoved();
if (!tile.hasLevel()) {
tile.setRemoved();
return;
}
tile.getLevel()
.removeBlockEntity(tilePos);
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/flywheel/flywheel",
"loader": "forge:obj",
"flip-v": true,
"model": "create:models/block/flywheel/flywheel_shaftless.obj"
}

View file

@ -1,95 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/steam_engine_wheel",
"5": "create:block/brass_casing",
"7": "create:block/brass_gearbox",
"particle": "create:block/steam_engine_wheel"
},
"elements": [
{
"from": [1, 0, 0],
"to": [12, 16, 16],
"faces": {
"north": {"uv": [0, 10, 8, 15.5], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 0, 16, 16], "texture": "#7"},
"south": {"uv": [8, 15.5, 16, 10], "rotation": 270, "texture": "#0"},
"west": {"uv": [0, 0, 16, 16], "texture": "#7"},
"up": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"},
"down": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"}
}
},
{
"from": [0, 0, 0],
"to": [1, 2, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 24]},
"faces": {
"north": {"uv": [15, 14, 16, 16], "texture": "#5"},
"east": {"uv": [0, 0, 16, 2], "texture": "#5"},
"south": {"uv": [0, 14, 1, 16], "texture": "#5"},
"west": {"uv": [0, 14, 16, 16], "texture": "#5"},
"up": {"uv": [0, 1, 16, 2], "rotation": 90, "texture": "#5"},
"down": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#5"}
}
},
{
"from": [0, 14, 0],
"to": [1, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [0, 14, 1, 16], "rotation": 180, "texture": "#5"},
"east": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#5"},
"south": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"},
"west": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#5"},
"up": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#5"},
"down": {"uv": [0, 1, 16, 2], "rotation": 90, "texture": "#5"}
}
},
{
"from": [0, 2, 0],
"to": [1, 14, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [2, 0, 14, 1], "rotation": 90, "texture": "#5"},
"east": {"uv": [0, 0, 12, 2], "rotation": 270, "texture": "#5"},
"south": {"uv": [2, 1, 14, 2], "rotation": 90, "texture": "#5"},
"west": {"uv": [2, 14, 14, 16], "rotation": 90, "texture": "#5"},
"up": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"},
"down": {"uv": [0, 14, 1, 16], "texture": "#5"}
}
},
{
"from": [0, 2, 14],
"to": [1, 14, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [2, 1, 14, 2], "rotation": 270, "texture": "#5"},
"east": {"uv": [0, 0, 12, 2], "rotation": 90, "texture": "#5"},
"south": {"uv": [2, 0, 14, 1], "rotation": 270, "texture": "#5"},
"west": {"uv": [2, 14, 14, 16], "rotation": 270, "texture": "#5"},
"up": {"uv": [0, 14, 1, 16], "texture": "#5"},
"down": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"}
}
},
{
"from": [10.9, 3, 3],
"to": [19.9, 13, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [11.5, 0, 16, 5], "rotation": 180, "texture": "#0"},
"east": {"uv": [11, 5, 16, 10], "texture": "#0"},
"south": {"uv": [11.5, 0, 16, 5], "texture": "#0"},
"west": {"uv": [11, 5, 16, 10], "texture": "#0"},
"up": {"uv": [11.5, 0, 16, 5], "texture": "#0"},
"down": {"uv": [11.5, 0, 16, 5], "texture": "#0"}
}
}
],
"groups": [
{
"name": "transmission",
"origin": [-8, 8, 8],
"children": [0, 1, 2, 3, 4, 5]
}
]
}

View file

@ -1,95 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/steam_engine_wheel",
"5": "create:block/brass_casing",
"7": "create:block/brass_gearbox",
"particle": "create:block/steam_engine_wheel"
},
"elements": [
{
"from": [1, 0, 0],
"to": [12, 16, 16],
"faces": {
"north": {"uv": [8, 10.5, 16, 16], "rotation": 90, "texture": "#0"},
"east": {"uv": [0, 0, 16, 16], "texture": "#7"},
"south": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"},
"west": {"uv": [0, 0, 16, 16], "texture": "#7"},
"up": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"},
"down": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"}
}
},
{
"from": [0, 0, 0],
"to": [1, 2, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 24]},
"faces": {
"north": {"uv": [15, 14, 16, 16], "texture": "#5"},
"east": {"uv": [0, 0, 16, 2], "texture": "#5"},
"south": {"uv": [0, 14, 1, 16], "texture": "#5"},
"west": {"uv": [0, 14, 16, 16], "texture": "#5"},
"up": {"uv": [0, 1, 16, 2], "rotation": 90, "texture": "#5"},
"down": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#5"}
}
},
{
"from": [0, 14, 0],
"to": [1, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [0, 14, 1, 16], "rotation": 180, "texture": "#5"},
"east": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#5"},
"south": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"},
"west": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#5"},
"up": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#5"},
"down": {"uv": [0, 1, 16, 2], "rotation": 90, "texture": "#5"}
}
},
{
"from": [0, 2, 0],
"to": [1, 14, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [2, 0, 14, 1], "rotation": 90, "texture": "#5"},
"east": {"uv": [0, 0, 12, 2], "rotation": 270, "texture": "#5"},
"south": {"uv": [2, 1, 14, 2], "rotation": 90, "texture": "#5"},
"west": {"uv": [2, 14, 14, 16], "rotation": 90, "texture": "#5"},
"up": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"},
"down": {"uv": [0, 14, 1, 16], "texture": "#5"}
}
},
{
"from": [0, 2, 14],
"to": [1, 14, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [2, 1, 14, 2], "rotation": 270, "texture": "#5"},
"east": {"uv": [0, 0, 12, 2], "rotation": 90, "texture": "#5"},
"south": {"uv": [2, 0, 14, 1], "rotation": 270, "texture": "#5"},
"west": {"uv": [2, 14, 14, 16], "rotation": 270, "texture": "#5"},
"up": {"uv": [0, 14, 1, 16], "texture": "#5"},
"down": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"}
}
},
{
"from": [10.9, 3, 3],
"to": [19.9, 13, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [11.5, 0, 16, 5], "rotation": 180, "texture": "#0"},
"east": {"uv": [11, 5, 16, 10], "texture": "#0"},
"south": {"uv": [11.5, 0, 16, 5], "texture": "#0"},
"west": {"uv": [11, 5, 16, 10], "texture": "#0"},
"up": {"uv": [11.5, 0, 16, 5], "texture": "#0"},
"down": {"uv": [11.5, 0, 16, 5], "texture": "#0"}
}
}
],
"groups": [
{
"name": "transmission",
"origin": [-8, 8, 8],
"children": [0, 1, 2, 3, 4, 5]
}
]
}

View file

@ -1,95 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/steam_engine_wheel",
"5": "create:block/brass_casing",
"7": "create:block/brass_gearbox",
"particle": "create:block/steam_engine_wheel"
},
"elements": [
{
"from": [1, 0, 0],
"to": [12, 16, 16],
"faces": {
"north": {"uv": [8, 10.5, 16, 16], "rotation": 90, "texture": "#0"},
"east": {"uv": [0, 0, 16, 16], "texture": "#7"},
"south": {"uv": [0, 15.5, 8, 10], "rotation": 270, "texture": "#0"},
"west": {"uv": [0, 0, 16, 16], "texture": "#7"},
"up": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"},
"down": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"}
}
},
{
"from": [0, 0, 0],
"to": [1, 2, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 24]},
"faces": {
"north": {"uv": [15, 14, 16, 16], "texture": "#5"},
"east": {"uv": [0, 0, 16, 2], "texture": "#5"},
"south": {"uv": [0, 14, 1, 16], "texture": "#5"},
"west": {"uv": [0, 14, 16, 16], "texture": "#5"},
"up": {"uv": [0, 1, 16, 2], "rotation": 90, "texture": "#5"},
"down": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#5"}
}
},
{
"from": [0, 14, 0],
"to": [1, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [0, 14, 1, 16], "rotation": 180, "texture": "#5"},
"east": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#5"},
"south": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"},
"west": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#5"},
"up": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#5"},
"down": {"uv": [0, 1, 16, 2], "rotation": 90, "texture": "#5"}
}
},
{
"from": [0, 2, 0],
"to": [1, 14, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [2, 0, 14, 1], "rotation": 90, "texture": "#5"},
"east": {"uv": [0, 0, 12, 2], "rotation": 270, "texture": "#5"},
"south": {"uv": [2, 1, 14, 2], "rotation": 90, "texture": "#5"},
"west": {"uv": [2, 14, 14, 16], "rotation": 90, "texture": "#5"},
"up": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"},
"down": {"uv": [0, 14, 1, 16], "texture": "#5"}
}
},
{
"from": [0, 2, 14],
"to": [1, 14, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [2, 1, 14, 2], "rotation": 270, "texture": "#5"},
"east": {"uv": [0, 0, 12, 2], "rotation": 90, "texture": "#5"},
"south": {"uv": [2, 0, 14, 1], "rotation": 270, "texture": "#5"},
"west": {"uv": [2, 14, 14, 16], "rotation": 270, "texture": "#5"},
"up": {"uv": [0, 14, 1, 16], "texture": "#5"},
"down": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"}
}
},
{
"from": [10.9, 3, 3],
"to": [19.9, 13, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [11.5, 0, 16, 5], "rotation": 180, "texture": "#0"},
"east": {"uv": [11, 5, 16, 10], "texture": "#0"},
"south": {"uv": [11.5, 0, 16, 5], "texture": "#0"},
"west": {"uv": [11, 5, 16, 10], "texture": "#0"},
"up": {"uv": [11.5, 0, 16, 5], "texture": "#0"},
"down": {"uv": [11.5, 0, 16, 5], "texture": "#0"}
}
}
],
"groups": [
{
"name": "transmission",
"origin": [-8, 8, 8],
"children": [0, 1, 2, 3, 4, 5]
}
]
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,10 @@
{
"parent": "block/block",
"ambientocclusion": false,
"textures": {
"0": "create:block/flywheel",
"1": "create:block/axis",
"2": "create:block/axis_top",
"particle": "create:block/flywheel"
}
}

View file

@ -0,0 +1,35 @@
# Blender MTL File: 'engine.blend'
# Material Count: 3
newmtl m_0
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 1.000000
illum 2
map_Kd #0
newmtl m_1
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 1.000000
illum 2
map_Kd #1
newmtl m_2
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 1.000000
illum 2
map_Kd #2

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,993 @@
# Blender v3.1.2 OBJ File: 'engine.blend'
# www.blender.org
mtllib flywheel.mtl
o cube.007_cube.004
v 0.625000 0.375000 1.562500
v 0.625000 0.375000 0.937500
v 0.625000 0.625000 1.562500
v 0.625000 0.625000 0.937500
v 0.375000 0.625000 1.562500
v 0.375000 0.625000 0.937500
v 0.375000 0.375000 1.562500
v 0.375000 0.375000 0.937500
v 0.318782 0.375000 0.937500
v 1.339689 0.375000 1.162913
v 0.897748 0.375000 0.720971
v 1.339689 0.625000 1.162913
v 0.897748 0.625000 0.720971
v 1.162913 0.625000 1.339689
v 0.720971 0.625000 0.897748
v 1.162913 0.375000 1.339689
v 0.720971 0.375000 0.897748
v 0.937500 0.625000 0.681218
v 0.681218 0.625000 0.937500
v 0.681218 0.375000 0.937500
v 0.937500 0.375000 0.681218
v 1.562500 0.375000 0.375000
v 1.562500 0.625000 0.375000
v 0.937500 0.625000 0.375000
v 1.562500 0.625000 0.625000
v 1.562500 0.375000 0.625000
v 0.937500 0.375000 0.625000
v 0.937500 0.625000 0.318781
v 1.162912 0.375000 -0.339689
v 0.720971 0.375000 0.102252
v 1.162912 0.625000 -0.339689
v 0.720971 0.625000 0.102252
v 1.339689 0.625000 -0.162912
v 0.897747 0.625000 0.279029
v 1.339689 0.375000 -0.162912
v 0.897747 0.375000 0.279029
v 0.681218 0.625000 0.062500
v 0.937500 0.375000 0.318782
v 0.681218 0.375000 0.062500
v 0.500000 0.625000 0.500000
v 0.500000 0.375000 0.500000
v 0.375000 0.375000 -0.562500
v 0.375000 0.375000 0.062500
v 0.375000 0.625000 -0.562500
v 0.375000 0.625000 0.062500
v 0.625000 0.625000 -0.562500
v 0.625000 0.625000 0.062500
v 0.625000 0.375000 -0.562500
v 0.625000 0.375000 0.062500
v -0.339689 0.375000 -0.162912
v 0.102252 0.375000 0.279029
v -0.339689 0.625000 -0.162912
v 0.102252 0.625000 0.279029
v -0.162912 0.625000 -0.339689
v 0.279029 0.625000 0.102253
v -0.162912 0.375000 -0.339689
v 0.279029 0.375000 0.102253
v 0.318782 0.625000 0.062500
v 0.318782 0.375000 0.062500
v 0.062500 0.375000 0.318782
v -0.562500 0.375000 0.625000
v -0.562500 0.625000 0.625000
v -0.562500 0.625000 0.375000
v -0.562500 0.375000 0.375000
v 0.062500 0.625000 0.318782
v -0.162912 0.375000 1.339689
v 0.279029 0.375000 0.897747
v -0.162912 0.625000 1.339689
v 0.279029 0.625000 0.897747
v -0.339689 0.625000 1.162912
v 0.102253 0.625000 0.720971
v -0.339689 0.375000 1.162912
v 0.102253 0.375000 0.720971
v 0.318782 0.625000 0.937500
v 0.062500 0.625000 0.681218
v 0.062500 0.375000 0.681218
v 0.750000 0.375000 0.750000
v 0.750000 0.375000 0.250000
v 0.250000 0.375000 0.750000
v 0.250000 0.375000 0.250000
v 0.750000 0.187500 0.750000
v 0.750000 0.187500 0.250000
v 0.250000 0.187500 0.750000
v 0.250000 0.187500 0.250000
v 0.750000 0.625000 0.750000
v 0.750000 0.625000 0.250000
v 0.250000 0.625000 0.750000
v 0.250000 0.625000 0.250000
v 0.750000 0.812500 0.750000
v 0.750000 0.812500 0.250000
v 0.250000 0.812500 0.750000
v 0.250000 0.812500 0.250000
v 1.068750 0.687500 1.873085
v 1.068750 0.312500 1.873085
v 0.940102 0.312500 1.562500
v 0.940102 0.687500 1.562500
v 1.873085 0.687500 1.068751
v 1.873084 0.312500 1.068751
v 1.562500 0.312500 0.940102
v 1.562500 0.687500 0.940102
v 1.873085 0.687500 -0.068750
v 1.873085 0.312500 -0.068750
v 1.562500 0.312500 0.059898
v 1.562500 0.687500 0.059898
v 1.068750 0.687500 -0.873084
v 1.068750 0.312500 -0.873084
v 0.940102 0.312500 -0.562500
v 0.940102 0.687500 -0.562500
v -0.068750 0.687500 -0.873084
v -0.068750 0.312500 -0.873084
v 0.059898 0.312500 -0.562500
v 0.059898 0.687500 -0.562500
v -0.873084 0.687500 -0.068750
v -0.873084 0.312500 -0.068750
v -0.562500 0.312500 0.059898
v -0.562499 0.687500 0.059898
v -0.873084 0.687500 1.068750
v -0.873084 0.312500 1.068750
v -0.562500 0.312500 0.940102
v -0.562500 0.687500 0.940102
v -0.068750 0.687500 1.873084
v -0.068750 0.312500 1.873084
v 0.059898 0.312500 1.562499
v 0.059898 0.687500 1.562499
v 0.250000 0.375000 0.625000
v 0.062500 0.375000 0.625000
v 0.250000 0.187500 0.625000
v 0.062500 0.187500 0.625000
v 0.062500 0.375000 0.500000
v 0.250000 0.375000 0.500000
v 0.062500 0.187500 0.500000
v 0.250000 0.187500 0.500000
v 0.093750 0.218750 0.625000
v 0.093750 0.218750 0.687500
v 0.093750 0.343750 0.625000
v 0.093750 0.343750 0.687500
v 0.218750 0.218750 0.625000
v 0.218750 0.218750 0.687500
v 0.218750 0.343750 0.625000
v 0.218750 0.343750 0.687500
v 0.750000 0.375000 0.625000
v 0.750000 0.187500 0.625000
v 0.937500 0.187500 0.625000
v 0.937500 0.375000 0.500000
v 0.750000 0.375000 0.500000
v 0.937500 0.187500 0.500000
v 0.750000 0.187500 0.500000
v 0.906250 0.218750 0.625000
v 0.906250 0.218750 0.687500
v 0.906250 0.343750 0.625000
v 0.906250 0.343750 0.687500
v 0.781250 0.218750 0.625000
v 0.781250 0.218750 0.687500
v 0.781250 0.343750 0.625000
v 0.781250 0.343750 0.687500
v 0.250000 0.625000 0.625000
v 0.062500 0.625000 0.625000
v 0.250000 0.812500 0.625000
v 0.062500 0.812500 0.625000
v 0.062500 0.625000 0.500000
v 0.250000 0.625000 0.500000
v 0.062500 0.812500 0.500000
v 0.250000 0.812500 0.500000
v 0.093750 0.781250 0.625000
v 0.093750 0.781250 0.687500
v 0.093750 0.656250 0.625000
v 0.093750 0.656250 0.687500
v 0.218750 0.781250 0.625000
v 0.218750 0.781250 0.687500
v 0.218750 0.656250 0.625000
v 0.218750 0.656250 0.687500
v 0.750000 0.625000 0.625000
v 0.937500 0.625000 0.625000
v 0.750000 0.812500 0.625000
v 0.937500 0.812500 0.625000
v 0.937500 0.625000 0.500000
v 0.750000 0.625000 0.500000
v 0.937500 0.812500 0.500000
v 0.750000 0.812500 0.500000
v 0.906250 0.781250 0.625000
v 0.906250 0.781250 0.687500
v 0.906250 0.656250 0.625000
v 0.906250 0.656250 0.687500
v 0.781250 0.781250 0.625000
v 0.781250 0.781250 0.687500
v 0.781250 0.656250 0.625000
v 0.781250 0.656250 0.687500
v 0.250000 0.375000 0.375000
v 0.062500 0.375000 0.375000
v 0.250000 0.187500 0.375000
v 0.062500 0.187500 0.375000
v 0.093750 0.218750 0.375000
v 0.093750 0.218750 0.312500
v 0.093750 0.343750 0.375000
v 0.093750 0.343750 0.312500
v 0.218750 0.218750 0.375000
v 0.218750 0.218750 0.312500
v 0.218750 0.343750 0.375000
v 0.218750 0.343750 0.312500
v 0.750000 0.375000 0.375000
v 0.937500 0.375000 0.375000
v 0.750000 0.187500 0.375000
v 0.937500 0.187500 0.375000
v 0.906250 0.218750 0.375000
v 0.906250 0.218750 0.312500
v 0.906250 0.343750 0.375000
v 0.906250 0.343750 0.312500
v 0.781250 0.218750 0.375000
v 0.781250 0.218750 0.312500
v 0.781250 0.343750 0.375000
v 0.781250 0.343750 0.312500
v 0.250000 0.625000 0.375000
v 0.062500 0.625000 0.375000
v 0.250000 0.812500 0.375000
v 0.062500 0.812500 0.375000
v 0.093750 0.781250 0.375000
v 0.093750 0.781250 0.312500
v 0.093750 0.656250 0.375000
v 0.093750 0.656250 0.312500
v 0.218750 0.781250 0.375000
v 0.218750 0.781250 0.312500
v 0.218750 0.656250 0.375000
v 0.218750 0.656250 0.312500
v 0.750000 0.625000 0.375000
v 0.750000 0.812500 0.375000
v 0.937500 0.812500 0.375000
v 0.906250 0.781250 0.375000
v 0.906250 0.781250 0.312500
v 0.906250 0.656250 0.375000
v 0.906250 0.656250 0.312500
v 0.781250 0.781250 0.375000
v 0.781250 0.781250 0.312500
v 0.781250 0.656250 0.375000
v 0.781250 0.656250 0.312500
vt 0.562500 0.687500
vt 0.562500 0.500000
vt 0.687500 0.500000
vt 0.687500 0.687500
vt 0.812500 1.000000
vt 0.906250 0.781250
vt 1.000000 1.000000
vt 1.000000 1.000000
vt 0.906250 0.781250
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.562500 0.500000
vt 0.687500 0.500000
vt 0.687500 0.687500
vt 0.812500 1.000000
vt 1.000000 1.000000
vt 1.000000 1.000000
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.562500 0.500000
vt 0.687500 0.500000
vt 0.687500 0.687500
vt 0.812500 1.000000
vt 1.000000 1.000000
vt 1.000000 1.000000
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.562500 0.500000
vt 0.687500 0.500000
vt 0.687500 0.687500
vt 0.812500 1.000000
vt 1.000000 1.000000
vt 1.000000 1.000000
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.562500 0.500000
vt 0.687500 0.500000
vt 0.687500 0.687500
vt 0.812500 1.000000
vt 1.000000 1.000000
vt 1.000000 1.000000
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.562500 0.500000
vt 0.687500 0.500000
vt 0.687500 0.687500
vt 0.812500 1.000000
vt 1.000000 1.000000
vt 1.000000 1.000000
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.562500 0.500000
vt 0.687500 0.500000
vt 0.687500 0.687500
vt 0.812500 1.000000
vt 1.000000 1.000000
vt 1.000000 1.000000
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.562500 0.500000
vt 0.687500 0.500000
vt 0.687500 0.687500
vt 0.812500 1.000000
vt 1.000000 1.000000
vt 1.000000 1.000000
vt 0.812500 1.000000
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.812500
vt 0.750000 0.812500
vt 0.750000 0.750000
vt 0.812500 0.750000
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.812500
vt 0.812500 0.750000
vt 0.750000 0.750000
vt 0.750000 0.812500
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.812500
vt 0.812500 0.750000
vt 0.750000 0.750000
vt 0.750000 0.812500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.812500
vt 0.750000 0.812500
vt 0.750000 0.750000
vt 0.812500 0.750000
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.812500
vt 0.812500 0.750000
vt 0.750000 0.750000
vt 0.750000 0.812500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.812500
vt 0.750000 0.812500
vt 0.750000 0.750000
vt 0.812500 0.750000
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.937500
vt 0.812500 0.968750
vt 0.750000 0.968750
vt 0.750000 0.937500
vt 0.812500 0.812500
vt 0.750000 0.812500
vt 0.750000 0.750000
vt 0.812500 0.750000
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.937500
vt 0.750000 0.937500
vt 0.750000 0.968750
vt 0.812500 0.968750
vt 0.812500 0.812500
vt 0.812500 0.750000
vt 0.750000 0.750000
vt 0.750000 0.812500
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.562500 0.687500
vt 0.687500 0.687500
vt 0.687500 1.000000
vt 0.562500 1.000000
vt 0.812500 0.687500
vt 0.812500 1.000000
vt 0.875000 0.531250
vt 0.937500 0.531250
vt 0.937500 0.593750
vt 0.875000 0.593750
vt 0.218750 0.468750
vt 0.218750 0.375000
vt 0.468750 0.375000
vt 0.468750 0.468750
vt 0.218750 0.468750
vt 0.218750 0.375000
vt 0.468750 0.375000
vt 0.468750 0.468750
vt 0.218750 0.375000
vt 0.468750 0.375000
vt 0.468750 0.468750
vt 0.218750 0.468750
vt 0.468750 0.125000
vt 0.218750 0.125000
vt 0.218750 0.468750
vt 0.218750 0.375000
vt 0.468750 0.375000
vt 0.468750 0.468750
vt 0.875000 0.531250
vt 0.875000 0.593750
vt 0.937500 0.593750
vt 0.937500 0.531250
vt 0.218750 0.468750
vt 0.468750 0.468750
vt 0.468750 0.375000
vt 0.218750 0.375000
vt 0.218750 0.468750
vt 0.468750 0.468750
vt 0.468750 0.375000
vt 0.218750 0.375000
vt 0.218750 0.375000
vt 0.218750 0.468750
vt 0.468750 0.468750
vt 0.468750 0.375000
vt 0.468750 0.125000
vt 0.218750 0.125000
vt 0.218750 0.468750
vt 0.468750 0.468750
vt 0.468750 0.375000
vt 0.218750 0.375000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.125000 0.250000
vt 0.125000 0.312500
vt 0.031250 0.312500
vt 0.031250 0.250000
vt 0.218750 0.250000
vt 0.218750 0.312500
vt 0.125000 0.312500
vt 0.218750 0.312500
vt 0.218750 0.406250
vt 0.125000 0.406250
vt 0.125000 0.250000
vt 0.031250 0.250000
vt 0.031250 0.312500
vt 0.125000 0.312500
vt 0.218750 0.250000
vt 0.218750 0.312500
vt 0.125000 0.312500
vt 0.125000 0.406250
vt 0.218750 0.406250
vt 0.218750 0.312500
vt 0.125000 0.250000
vt 0.031250 0.250000
vt 0.031250 0.312500
vt 0.125000 0.312500
vt 0.218750 0.250000
vt 0.218750 0.312500
vt 0.125000 0.312500
vt 0.125000 0.406250
vt 0.218750 0.406250
vt 0.218750 0.312500
vt 0.125000 0.250000
vt 0.125000 0.312500
vt 0.031250 0.312500
vt 0.031250 0.250000
vt 0.218750 0.250000
vt 0.218750 0.312500
vt 0.125000 0.312500
vt 0.218750 0.312500
vt 0.218750 0.406250
vt 0.125000 0.406250
vt 0.031250 0.312500
vt 0.125000 0.312500
vt 0.218750 0.312500
vt 0.125000 0.312500
vt 0.125000 0.406250
vt 0.218750 0.406250
vt 0.218750 0.312500
vt 0.125000 0.312500
vt 0.031250 0.312500
vt 0.218750 0.312500
vt 0.125000 0.312500
vt 0.218750 0.312500
vt 0.218750 0.406250
vt 0.125000 0.406250
vt 0.125000 0.312500
vt 0.031250 0.312500
vt 0.218750 0.312500
vt 0.125000 0.312500
vt 0.218750 0.312500
vt 0.218750 0.406250
vt 0.125000 0.406250
vt 0.031250 0.312500
vt 0.125000 0.312500
vt 0.218750 0.312500
vt 0.125000 0.312500
vt 0.125000 0.406250
vt 0.218750 0.406250
vt 0.218750 0.312500
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 0.7071 0.0000 0.7071
vn 1.0000 0.0000 -0.0000
vn 0.7071 0.0000 -0.7071
vn -0.0000 0.0000 -1.0000
vn -0.7071 0.0000 -0.7071
vn -1.0000 0.0000 0.0000
vn -0.7071 0.0000 0.7071
vn -0.6060 -0.2741 -0.7468
vn 0.0995 -0.2741 -0.9565
vn 0.3827 -0.0000 -0.9239
vn -0.3827 -0.0000 -0.9239
vn -0.3822 0.8881 -0.2554
vn -0.0897 0.8881 -0.4509
vn -0.2554 -0.8881 0.3822
vn -0.4509 -0.8881 0.0896
vn -0.0207 0.3739 0.9272
vn -0.6703 0.3739 0.6410
vn -0.3827 -0.0000 0.9239
vn 0.3827 -0.0000 0.9239
vn -0.9565 -0.2741 -0.0995
vn -0.9239 -0.0000 -0.3827
vn -0.4509 0.8881 0.0897
vn 0.0896 -0.8881 0.4509
vn 0.6410 0.3739 0.6703
vn 0.9239 -0.0000 0.3827
vn -0.7468 -0.2741 0.6060
vn -0.9239 0.0000 0.3827
vn -0.2554 0.8881 0.3822
vn 0.3822 -0.8881 0.2554
vn 0.9272 0.3739 0.0207
vn 0.9239 0.0000 -0.3827
vn -0.0995 -0.2741 0.9565
vn 0.0897 0.8881 0.4509
vn 0.4509 -0.8881 -0.0896
vn 0.6703 0.3739 -0.6410
vn 0.6060 -0.2741 0.7468
vn 0.3822 0.8881 0.2554
vn 0.2554 -0.8881 -0.3822
vn 0.0207 0.3739 -0.9272
vn 0.9565 -0.2741 0.0995
vn 0.4509 0.8881 -0.0897
vn -0.0896 -0.8881 -0.4509
vn -0.6410 0.3739 -0.6703
vn 0.7468 -0.2741 -0.6060
vn 0.2554 0.8881 -0.3822
vn -0.3822 -0.8881 -0.2554
vn -0.9272 0.3739 -0.0207
usemtl m_0
s off
f 19/1/1 74/2/1 9/3/1 20/4/1
f 9/5/2 41/6/2 20/7/2
f 19/8/3 40/9/3 74/10/3
f 18/11/4 19/12/4 20/13/4 21/14/4
f 20/15/2 41/6/2 21/16/2
f 18/17/3 40/9/3 19/18/3
f 28/19/5 18/20/5 21/21/5 38/22/5
f 21/23/2 41/6/2 38/24/2
f 28/25/3 40/9/3 18/26/3
f 37/27/6 28/28/6 38/29/6 39/30/6
f 38/31/2 41/6/2 39/32/2
f 37/33/3 40/9/3 28/34/3
f 58/35/7 37/36/7 39/37/7 59/38/7
f 39/39/2 41/6/2 59/40/2
f 58/41/3 40/9/3 37/42/3
f 65/43/8 58/44/8 59/45/8 60/46/8
f 59/47/2 41/6/2 60/48/2
f 65/49/3 40/9/3 58/50/3
f 75/51/9 65/52/9 60/53/9 76/54/9
f 60/55/2 41/6/2 76/56/2
f 75/57/3 40/9/3 65/58/3
f 74/59/10 75/60/10 76/61/10 9/62/10
f 76/63/2 41/6/2 9/64/2
f 74/65/3 40/9/3 75/66/3
f 133/67/9 134/68/9 136/69/9 135/70/9
f 135/71/3 136/72/3 140/73/3 139/74/3
f 139/75/5 140/76/5 138/77/5 137/78/5
f 137/79/2 138/80/2 134/81/2 133/82/2
f 140/83/1 136/84/1 134/85/1 138/86/1
f 148/87/5 150/88/5 151/89/5 149/90/5
f 150/91/3 154/92/3 155/93/3 151/94/3
f 154/95/9 152/96/9 153/97/9 155/98/9
f 152/99/2 148/100/2 149/101/2 153/102/2
f 155/103/1 153/104/1 149/105/1 151/106/1
f 164/107/9 166/108/9 167/109/9 165/110/9
f 166/111/2 170/112/2 171/113/2 167/114/2
f 170/115/5 168/116/5 169/117/5 171/118/5
f 168/119/3 164/120/3 165/121/3 169/122/3
f 171/123/1 169/124/1 165/125/1 167/126/1
f 180/127/5 181/128/5 183/129/5 182/130/5
f 182/131/2 183/132/2 187/133/2 186/134/2
f 186/135/9 187/136/9 185/137/9 184/138/9
f 184/139/3 185/140/3 181/141/3 180/142/3
f 187/143/1 183/144/1 181/145/1 185/146/1
f 192/147/9 194/148/9 195/149/9 193/150/9
f 194/151/3 198/152/3 199/153/3 195/154/3
f 198/155/5 196/156/5 197/157/5 199/158/5
f 196/159/2 192/160/2 193/161/2 197/162/2
f 199/163/7 197/164/7 193/165/7 195/166/7
f 204/167/5 205/168/5 207/169/5 206/170/5
f 206/171/3 207/172/3 211/173/3 210/174/3
f 210/175/9 211/176/9 209/177/9 208/178/9
f 208/179/2 209/180/2 205/181/2 204/182/2
f 211/183/7 207/184/7 205/185/7 209/186/7
f 216/187/9 217/188/9 219/189/9 218/190/9
f 218/191/2 219/192/2 223/193/2 222/194/2
f 222/195/5 223/196/5 221/197/5 220/198/5
f 220/199/3 221/200/3 217/201/3 216/202/3
f 223/203/7 219/204/7 217/205/7 221/206/7
f 227/207/5 229/208/5 230/209/5 228/210/5
f 229/211/2 233/212/2 234/213/2 230/214/2
f 233/215/9 231/216/9 232/217/9 234/218/9
f 231/219/3 227/220/3 228/221/3 232/222/3
f 234/223/7 232/224/7 228/225/7 230/226/7
s 1
f 8/227/2 2/228/2 1/229/2 7/230/2
f 2/228/5 4/231/5 3/232/5 1/229/5
f 4/233/3 6/234/3 5/235/3 3/236/3
f 6/234/9 8/237/9 7/238/9 5/235/9
f 17/239/2 11/240/2 10/241/2 16/242/2
f 11/240/6 13/243/6 12/244/6 10/241/6
f 13/245/3 15/246/3 14/247/3 12/248/3
f 15/246/10 17/249/10 16/250/10 14/247/10
f 27/251/2 201/252/2 22/253/2 26/254/2
f 201/252/7 24/255/7 23/256/7 22/253/7
f 24/257/3 173/258/3 25/259/3 23/260/3
f 173/258/1 27/261/1 26/262/1 25/259/1
f 36/263/2 30/264/2 29/265/2 35/266/2
f 30/264/8 32/267/8 31/268/8 29/265/8
f 32/269/3 34/270/3 33/271/3 31/272/3
f 34/270/4 36/273/4 35/274/4 33/271/4
f 49/275/2 43/276/2 42/277/2 48/278/2
f 43/276/9 45/279/9 44/280/9 42/277/9
f 45/281/3 47/282/3 46/283/3 44/284/3
f 47/282/5 49/285/5 48/286/5 46/283/5
f 57/287/2 51/288/2 50/289/2 56/290/2
f 51/288/10 53/291/10 52/292/10 50/289/10
f 53/293/3 55/294/3 54/295/3 52/296/3
f 55/294/6 57/297/6 56/298/6 54/295/6
f 189/299/2 126/300/2 61/301/2 64/302/2
f 126/300/1 157/303/1 62/304/1 61/301/1
f 157/305/3 213/306/3 63/307/3 62/308/3
f 213/306/7 189/309/7 64/310/7 63/307/7
f 73/311/2 67/312/2 66/313/2 72/314/2
f 67/312/4 69/315/4 68/316/4 66/313/4
f 69/317/3 71/318/3 70/319/3 68/320/3
f 71/318/8 73/321/8 72/322/8 70/319/8
f 78/323/3 80/324/3 79/325/3 77/326/3
f 77/327/5 81/328/5 82/329/5 78/330/5
f 79/331/1 83/332/1 81/333/1 77/334/1
f 84/335/9 83/336/9 79/337/9 80/338/9
f 82/339/2 81/333/2 83/332/2 84/340/2
f 78/341/7 82/342/7 84/343/7 80/344/7
f 86/345/2 85/346/2 87/347/2 88/348/2
f 85/349/5 86/350/5 90/351/5 89/352/5
f 87/353/1 85/354/1 89/355/1 91/356/1
f 92/357/9 88/358/9 87/359/9 91/360/9
f 90/361/3 92/362/3 91/356/3 89/355/3
f 86/363/7 88/364/7 92/365/7 90/366/7
f 95/367/11 123/368/12 124/369/13 96/370/14
f 121/371/3 93/372/3 96/373/15 124/374/16
f 94/375/17 122/376/18 123/368/2 95/367/2
f 93/377/19 121/378/20 122/376/21 94/375/22
f 99/379/23 95/380/11 96/381/14 100/382/24
f 93/383/3 97/384/3 100/385/25 96/386/15
f 98/387/26 94/388/17 95/380/2 99/379/2
f 97/389/27 93/390/19 94/388/22 98/387/28
f 103/391/29 99/392/23 100/393/24 104/394/30
f 97/395/3 101/396/3 104/397/31 100/398/25
f 102/399/32 98/400/26 99/392/2 103/391/2
f 101/401/33 97/402/27 98/400/28 102/399/34
f 107/403/35 103/404/29 104/405/30 108/406/21
f 101/407/3 105/408/3 108/409/36 104/410/31
f 106/411/37 102/412/32 103/404/2 107/403/2
f 105/413/38 101/414/33 102/412/34 106/411/13
f 111/415/39 107/416/35 108/417/21 112/418/22
f 105/419/3 109/420/3 112/421/40 108/422/36
f 110/423/41 106/424/37 107/416/2 111/415/2
f 109/425/42 105/426/38 106/424/13 110/423/14
f 115/427/43 111/428/39 112/429/22 116/430/28
f 109/431/3 113/432/3 116/433/44 112/434/40
f 114/435/45 110/436/41 111/428/2 115/427/2
f 113/437/46 109/438/42 110/436/14 114/435/24
f 119/439/47 115/440/43 116/441/28 120/442/34
f 113/443/3 117/444/3 120/445/48 116/446/44
f 118/447/49 114/448/45 115/440/2 119/439/2
f 117/449/50 113/450/46 114/448/24 118/447/30
f 123/451/12 119/452/47 120/453/34 124/454/13
f 117/455/3 121/456/3 124/457/16 120/458/48
f 122/459/18 118/460/49 119/452/2 123/451/2
f 121/461/20 117/462/50 118/460/30 122/459/21
f 131/463/9 128/464/9 126/465/9 129/466/9
f 132/467/2 127/468/2 128/464/2 131/463/2
f 126/469/1 128/470/1 127/471/1 125/472/1
f 146/473/5 144/474/5 27/475/5 143/476/5
f 147/477/2 146/473/2 143/476/2 142/478/2
f 27/479/1 141/480/1 142/481/1 143/482/1
f 162/483/9 160/484/9 157/485/9 159/486/9
f 163/487/3 162/483/3 159/486/3 158/488/3
f 157/489/1 156/490/1 158/491/1 159/492/1
f 178/493/5 175/494/5 173/495/5 176/496/5
f 179/497/3 174/498/3 175/494/3 178/493/3
f 173/499/1 175/500/1 174/501/1 172/502/1
f 131/463/9 129/466/9 189/503/9 191/504/9
f 132/467/2 131/463/2 191/504/2 190/505/2
f 189/506/7 188/507/7 190/508/7 191/509/7
f 146/473/5 203/510/5 201/511/5 144/474/5
f 147/477/2 202/512/2 203/510/2 146/473/2
f 201/513/7 203/514/7 202/515/7 200/516/7
f 162/483/9 215/517/9 213/518/9 160/484/9
f 163/487/3 214/519/3 215/517/3 162/483/3
f 213/520/7 215/521/7 214/522/7 212/523/7
f 178/493/5 176/496/5 24/524/5 226/525/5
f 179/497/3 178/493/3 226/525/3 225/526/3
f 24/527/7 224/528/7 225/529/7 226/530/7
l 132 130
l 129 130
l 147 145
l 144 145
l 163 161
l 160 161
l 179 177
l 176 177

View file

@ -1,381 +1,18 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/steam_engine_wheel",
"5": "create:block/brass_casing",
"7": "create:block/brass_gearbox",
"particle": "create:block/steam_engine_wheel"
},
"elements": [
{
"from": [29, 1, 11.5],
"to": [32, 3, 13.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 17]},
"faces": {
"north": {"uv": [6.5, 9, 8, 10], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 9, 1.5, 10], "rotation": 180, "texture": "#0"},
"south": {"uv": [0, 9, 1.5, 10], "rotation": 180, "texture": "#0"},
"west": {"uv": [0, 9, 1.5, 10], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 9, 1.5, 10], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 9, 1.5, 10], "rotation": 180, "texture": "#0"}
}
},
{
"from": [14.75, 7, 11.55],
"to": [30.75, 9, 13.45],
"rotation": {"angle": -22.5, "axis": "z", "origin": [15, 8, 21]},
"faces": {
"north": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"},
"south": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"}
}
},
{
"from": [22, 6, 6],
"to": [32, 10, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 8]},
"faces": {
"north": {"uv": [2, 7, 7, 9], "texture": "#0"},
"east": {"uv": [0, 7, 2, 9], "texture": "#0"},
"south": {"uv": [2, 7, 7, 9], "texture": "#0"},
"west": {"uv": [0, 7, 2, 9], "texture": "#0"},
"up": {"uv": [2, 7, 7, 9], "texture": "#0"},
"down": {"uv": [2, 7, 7, 9], "texture": "#0"}
}
},
{
"from": [7, 7, 7],
"to": [23, 9, 9],
"rotation": {"angle": -22.5, "axis": "z", "origin": [23, 8, 8]},
"faces": {
"north": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"},
"south": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"}
}
},
{
"from": [0, 0, 4],
"to": [16, 16, 15],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#7"},
"east": {"uv": [0, 15.5, 8, 10], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 16, 16], "texture": "#7"},
"west": {"uv": [8, 10.5, 16, 16], "rotation": 90, "texture": "#0"},
"up": {"uv": [8, 10.5, 16, 16], "rotation": 180, "texture": "#0"},
"down": {"uv": [8, 10.5, 16, 16], "texture": "#0"}
}
},
{
"from": [0, 0, 15],
"to": [16, 2, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [24, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 2], "texture": "#5"},
"east": {"uv": [0, 14, 1, 16], "texture": "#5"},
"south": {"uv": [0, 14, 16, 16], "texture": "#5"},
"west": {"uv": [15, 14, 16, 16], "texture": "#5"},
"up": {"uv": [0, 1, 16, 2], "texture": "#5"},
"down": {"uv": [0, 0, 16, 1], "texture": "#5"}
}
},
{
"from": [0, 14, 15],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 16]},
"faces": {
"north": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#5"},
"east": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"},
"south": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#5"},
"west": {"uv": [0, 14, 1, 16], "rotation": 180, "texture": "#5"},
"up": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#5"},
"down": {"uv": [0, 1, 16, 2], "rotation": 180, "texture": "#5"}
}
},
{
"from": [0, 2, 15],
"to": [2, 14, 16],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 16]},
"faces": {
"north": {"uv": [0, 0, 12, 2], "rotation": 270, "texture": "#5"},
"east": {"uv": [2, 1, 14, 2], "rotation": 90, "texture": "#5"},
"south": {"uv": [2, 14, 14, 16], "rotation": 90, "texture": "#5"},
"west": {"uv": [2, 0, 14, 1], "rotation": 90, "texture": "#5"},
"up": {"uv": [15, 14, 16, 16], "rotation": 90, "texture": "#5"},
"down": {"uv": [0, 14, 1, 16], "rotation": 90, "texture": "#5"}
}
},
{
"from": [14, 2, 15],
"to": [16, 14, 16],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 16]},
"faces": {
"north": {"uv": [0, 0, 12, 2], "rotation": 90, "texture": "#5"},
"east": {"uv": [2, 0, 14, 1], "rotation": 270, "texture": "#5"},
"south": {"uv": [2, 14, 14, 16], "rotation": 270, "texture": "#5"},
"west": {"uv": [2, 1, 14, 2], "rotation": 270, "texture": "#5"},
"up": {"uv": [0, 14, 1, 16], "rotation": 270, "texture": "#5"},
"down": {"uv": [15, 14, 16, 16], "rotation": 270, "texture": "#5"}
}
},
{
"from": [3, 3, -3.9],
"to": [13, 13, 5.1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [11, 5, 16, 10], "texture": "#0"},
"east": {"uv": [11.5, 0, 16, 5], "texture": "#0"},
"south": {"uv": [11, 5, 16, 10], "texture": "#0"},
"west": {"uv": [11.5, 0, 16, 5], "rotation": 180, "texture": "#0"},
"up": {"uv": [11.5, 0, 16, 5], "rotation": 270, "texture": "#0"},
"down": {"uv": [11.5, 0, 16, 5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [-0.5, 23.5, -1.9],
"to": [16.5, 28.5, 4.1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"},
"east": {"uv": [8.5, 0, 11.5, 2], "texture": "#0"},
"south": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"},
"west": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"},
"up": {"uv": [0, 2.5, 8.5, 5.5], "texture": "#0"},
"down": {"uv": [0, 2.5, 8.5, 5.5], "texture": "#0"}
}
},
{
"from": [-0.5, -12.5, -1.9],
"to": [16.5, -7.5, 4.1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"},
"east": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"},
"south": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"},
"west": {"uv": [8.5, 0, 11.5, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 180, "texture": "#0"}
}
},
{
"from": [23.5, -0.5, -1.9],
"to": [28.5, 16.5, 4.1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [0, 0, 8.5, 2.5], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 0, 8.5, 2.5], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"},
"up": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [8.5, 0, 11.5, 2], "rotation": 90, "texture": "#0"}
}
},
{
"from": [-12.5, -0.5, -1.9],
"to": [-7.5, 16.5, 4.1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [0, 0, 8.5, 2.5], "rotation": 90, "texture": "#0"},
"east": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 8.5, 2.5], "rotation": 270, "texture": "#0"},
"west": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"},
"up": {"uv": [8.5, 0, 11.5, 2], "rotation": 270, "texture": "#0"},
"down": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 270, "texture": "#0"}
}
},
{
"from": [-0.5, 23.5, -1.85],
"to": [16.5, 28.5, 4.05],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"},
"east": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"},
"south": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"},
"west": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"},
"up": {"uv": [0, 2.5, 8.5, 5.5], "texture": "#0"},
"down": {"uv": [0, 2.5, 8.5, 5.5], "texture": "#0"}
}
},
{
"from": [-0.5, -12.5, -1.85],
"to": [16.5, -7.5, 4.05],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"},
"east": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"},
"south": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"},
"west": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 180, "texture": "#0"}
}
},
{
"from": [-0.5, -12.5, -1.85],
"to": [16.5, -7.5, 4.05],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"},
"east": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"},
"south": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"},
"west": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 180, "texture": "#0"}
}
},
{
"from": [-12.5, -0.5, -1.85],
"to": [-7.5, 16.5, 4.05],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [0, 0, 8.5, 2.5], "rotation": 90, "texture": "#0"},
"east": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 8.5, 2.5], "rotation": 270, "texture": "#0"},
"west": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"},
"up": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 270, "texture": "#0"},
"down": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 270, "texture": "#0"}
}
},
{
"name": "spoke",
"from": [6, -8, -0.9],
"to": [10, 3, 3.1],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"east": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"south": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"west": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}
}
},
{
"name": "spoke",
"from": [6, 13, -0.9],
"to": [10, 24, 3.1],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"east": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"south": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"west": {"uv": [9, 4.5, 11, 10], "texture": "#0"}
}
},
{
"name": "spoke",
"from": [-8, 6, -0.9],
"to": [3, 10, 3.1],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"},
"south": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"},
"up": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"},
"down": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"}
}
},
{
"name": "spoke",
"from": [13, 6, -0.9],
"to": [24, 10, 3.1],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"},
"south": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"},
"up": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"},
"down": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"}
}
},
{
"name": "spoke",
"from": [-8, 6, -0.9],
"to": [3, 10, 3.1],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"},
"south": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"},
"up": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"},
"down": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"}
}
},
{
"name": "spoke",
"from": [6, -8, -0.9],
"to": [10, 3, 3.1],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"east": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"south": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"west": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}
}
},
{
"name": "spoke",
"from": [13, 6, -0.9],
"to": [24, 10, 3.1],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"},
"south": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"},
"up": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"},
"down": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"}
}
},
{
"name": "spoke",
"from": [6, 13, -0.9],
"to": [10, 24, 3.1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1.1]},
"faces": {
"north": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"east": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"south": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"west": {"uv": [9, 4.5, 11, 10], "texture": "#0"}
}
}
],
"parent": "create:block/flywheel/flywheel",
"loader": "forge:obj",
"flip-v": true,
"model": "create:models/block/flywheel/flywheel.obj",
"display": {
"thirdperson_righthand": {
"rotation": [75, -67, 0],
"translation": [0, 2.5, -2],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, -67, 0],
"translation": [0, 2.5, -2],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, -91, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, -91, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"rotation": [90, 0, 0],
"translation": [0, 2, 0],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 225, 0],
"translation": [-0.25, 0.75, 0],
"scale": [0.35, 0.35, 0.35]
},
"gui": {
"rotation": [ 30, 225, 0 ],
"translation": [ 0, 0, 0],
"scale":[ 0.4, 0.4, 0.4 ]
},
"fixed": {
"scale": [0.45, 0.45, 0.45]
}
},
"groups": [
{
"name": "transmission",
"origin": [-8, 8, 8],
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8]
},
{
"name": "wheel",
"origin": [24, 8, 8],
"children": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
}
]
"rotation": [ 90, 0, 0 ],
"translation": [ 0, 0, 0],
"scale":[ 0.4, 0.4, 0.4 ]
}
}
}

View file

@ -1,27 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/steam_engine_wheel",
"particle": "create:block/steam_engine_wheel"
},
"elements": [
{
"from": [2.55, 7, 6.75],
"to": [4.45, 9, 22.75],
"rotation": {"angle": 22.5, "axis": "x", "origin": [-5, 8, 7]},
"faces": {
"east": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"},
"west": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 9, 8, 10], "rotation": 270, "texture": "#0"},
"down": {"uv": [0, 9, 8, 10], "rotation": 90, "texture": "#0"}
}
}
],
"groups": [
{
"name": "transmission",
"origin": [-8, 8, 8],
"children": [0]
}
]
}

View file

@ -1,29 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/steam_engine_wheel",
"particle": "create:block/steam_engine_wheel"
},
"elements": [
{
"from": [2.5, 1, 21],
"to": [4.5, 3, 29],
"rotation": {"angle": 0, "axis": "y", "origin": [-1, 8, 8]},
"faces": {
"north": {"uv": [0, 9, 1, 10], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0"},
"south": {"uv": [0, 9, 1, 10], "rotation": 270, "texture": "#0"},
"west": {"uv": [0, 9, 4, 10], "texture": "#0"},
"up": {"uv": [0, 9, 4, 10], "rotation": 270, "texture": "#0"},
"down": {"uv": [0, 9, 4, 10], "rotation": 270, "texture": "#0"}
}
}
],
"groups": [
{
"name": "transmission",
"origin": [-8, 8, 8],
"children": [0]
}
]
}

View file

@ -1,27 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/steam_engine_wheel",
"particle": "create:block/steam_engine_wheel"
},
"elements": [
{
"from": [7, 7, 7],
"to": [9, 9, 23],
"rotation": {"angle": 22.5, "axis": "x", "origin": [8, 8, 23]},
"faces": {
"east": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"},
"west": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 9, 8, 10], "rotation": 270, "texture": "#0"},
"down": {"uv": [0, 9, 8, 10], "rotation": 90, "texture": "#0"}
}
}
],
"groups": [
{
"name": "transmission",
"origin": [-8, 8, 8],
"children": [0]
}
]
}

View file

@ -1,29 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/steam_engine_wheel",
"particle": "create:block/steam_engine_wheel"
},
"elements": [
{
"from": [6, 6, 22],
"to": [10, 10, 32],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -5]},
"faces": {
"north": {"uv": [0, 7, 2, 9], "texture": "#0"},
"east": {"uv": [2, 7, 7, 9], "texture": "#0"},
"south": {"uv": [0, 7, 2, 9], "texture": "#0"},
"west": {"uv": [2, 7, 7, 9], "texture": "#0"},
"up": {"uv": [2, 7, 7, 9], "rotation": 90, "texture": "#0"},
"down": {"uv": [2, 7, 7, 9], "rotation": 270, "texture": "#0"}
}
}
],
"groups": [
{
"name": "transmission",
"origin": [-8, 8, 8],
"children": [0]
}
]
}

View file

@ -1,221 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/steam_engine_wheel",
"particle": "create:block/steam_engine_wheel"
},
"elements": [
{
"from": [11.9, 23.5, -0.5],
"to": [17.9, 28.5, 16.5],
"rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"},
"east": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"},
"south": {"uv": [8.5, 0, 11.5, 2], "texture": "#0"},
"west": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"},
"up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}
}
},
{
"from": [11.9, -12.5, -0.5],
"to": [17.9, -7.5, 16.5],
"rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [8.5, 0, 11.5, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"},
"south": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"},
"west": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"},
"down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [11.9, -0.5, 23.5],
"to": [17.9, 16.5, 28.5],
"rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"},
"east": {"uv": [0, 0, 8.5, 2.5], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 8.5, 2.5], "rotation": 90, "texture": "#0"},
"up": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"},
"down": {"uv": [8.5, 0, 11.5, 2], "texture": "#0"}
}
},
{
"from": [11.9, -0.5, -12.5],
"to": [17.9, 16.5, -7.5],
"rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 0, 8.5, 2.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"},
"west": {"uv": [0, 0, 8.5, 2.5], "rotation": 270, "texture": "#0"},
"up": {"uv": [8.5, 0, 11.5, 2], "texture": "#0"},
"down": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}
}
},
{
"from": [11.95, 23.5, -0.5],
"to": [17.85, 28.5, 16.5],
"rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"},
"east": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"},
"south": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"},
"west": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"},
"up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}
}
},
{
"from": [11.95, -12.5, -0.5],
"to": [17.85, -7.5, 16.5],
"rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"},
"south": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"},
"west": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"},
"down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [11.95, -12.5, -0.5],
"to": [17.85, -7.5, 16.5],
"rotation": {"angle": -45, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"},
"south": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"},
"west": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"},
"down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [11.95, -0.5, -12.5],
"to": [17.85, 16.5, -7.5],
"rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 0, 8.5, 2.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"},
"west": {"uv": [0, 0, 8.5, 2.5], "rotation": 270, "texture": "#0"},
"up": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"},
"down": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}
}
},
{
"name": "spoke",
"from": [12.9, -8, 6],
"to": [16.9, 3, 10],
"rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"east": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"south": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"west": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}
}
},
{
"name": "spoke",
"from": [12.9, 13, 6],
"to": [16.9, 24, 10],
"rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"east": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"south": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"west": {"uv": [9, 4.5, 11, 10], "texture": "#0"}
}
},
{
"name": "spoke",
"from": [12.9, 6, -8],
"to": [16.9, 10, 3],
"rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"east": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"},
"west": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"},
"up": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"down": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}
}
},
{
"name": "spoke",
"from": [12.9, 6, 13],
"to": [16.9, 10, 24],
"rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"east": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"},
"west": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"},
"up": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"down": {"uv": [9, 4.5, 11, 10], "texture": "#0"}
}
},
{
"name": "spoke",
"from": [12.9, 6, -8],
"to": [16.9, 10, 3],
"rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"east": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"},
"west": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"},
"up": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"down": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}
}
},
{
"name": "spoke",
"from": [12.9, -8, 6],
"to": [16.9, 3, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"east": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"south": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"west": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}
}
},
{
"name": "spoke",
"from": [12.9, 6, 13],
"to": [16.9, 10, 24],
"rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"east": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"},
"west": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"},
"up": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"},
"down": {"uv": [9, 4.5, 11, 10], "texture": "#0"}
}
},
{
"name": "spoke",
"from": [12.9, 13, 6],
"to": [16.9, 24, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]},
"faces": {
"north": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"east": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"south": {"uv": [9, 4.5, 11, 10], "texture": "#0"},
"west": {"uv": [9, 4.5, 11, 10], "texture": "#0"}
}
}
],
"groups": [
{
"name": "transmission",
"origin": [-8, 8, 8],
"children": []
},
{
"name": "wheel",
"origin": [24, 8, 8],
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
}
]
}

View file

@ -1,133 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"5": "create:block/brass_casing",
"1_1": "create:block/furnace_cylinder",
"particle": "create:block/brass_block"
},
"elements": [
{
"name": "Ring",
"from": [0, 0, 2],
"to": [16, 16, 7],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#5"},
"east": {"uv": [0, 7, 2.5, 15], "texture": "#1_1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#5"},
"west": {"uv": [0, 7, 2.5, 15], "texture": "#1_1"},
"up": {"uv": [0, 7, 2.5, 15], "rotation": 90, "texture": "#1_1"},
"down": {"uv": [0, 7, 2.5, 15], "rotation": 270, "texture": "#1_1"}
}
},
{
"name": "Cylinder",
"from": [1, 1, 0],
"to": [15, 15, 16],
"faces": {
"north": {"uv": [8, 0, 15, 7], "texture": "#1_1"},
"east": {"uv": [0, 0, 8, 7], "rotation": 180, "texture": "#1_1"},
"south": {"uv": [8, 0, 15, 7], "texture": "#1_1"},
"west": {"uv": [0, 0, 8, 7], "texture": "#1_1"},
"up": {"uv": [0, 0, 8, 7], "rotation": 90, "texture": "#1_1"},
"down": {"uv": [0, 0, 8, 7], "rotation": 270, "texture": "#1_1"}
}
},
{
"from": [1.5, 0, 7],
"to": [5.5, 4, 16],
"faces": {
"east": {"uv": [2.5, 7, 7, 9], "rotation": 180, "texture": "#1_1"},
"west": {"uv": [2.5, 7, 7, 9], "rotation": 180, "texture": "#1_1"},
"up": {"uv": [2.5, 7, 7, 9], "rotation": 270, "texture": "#1_1"},
"down": {"uv": [2.5, 7, 7, 9], "rotation": 90, "texture": "#1_1"}
}
},
{
"from": [10.5, 0, 7],
"to": [14.5, 4, 16],
"faces": {
"east": {"uv": [7, 7, 2.5, 9], "rotation": 180, "texture": "#1_1"},
"west": {"uv": [7, 7, 2.5, 9], "rotation": 180, "texture": "#1_1"},
"up": {"uv": [2.5, 9, 7, 7], "rotation": 270, "texture": "#1_1"},
"down": {"uv": [2.5, 9, 7, 7], "rotation": 90, "texture": "#1_1"}
}
},
{
"name": "LowerPort",
"from": [1.5, 0.1, -0.9],
"to": [5.5, 4.1, 2.1],
"faces": {
"north": {"uv": [2.5, 13, 4.5, 15], "texture": "#1_1"},
"east": {"uv": [3, 13, 4.5, 15], "texture": "#1_1"},
"south": {"uv": [10, 0, 14, 4], "texture": "#1_1"},
"west": {"uv": [3, 13, 4.5, 15], "rotation": 180, "texture": "#1_1"},
"up": {"uv": [3, 13, 4.5, 15], "rotation": 270, "texture": "#1_1"},
"down": {"uv": [3, 13, 4.5, 15], "rotation": 90, "texture": "#1_1"}
}
},
{
"name": "LowerPort",
"from": [10.5, 0.1, -0.9],
"to": [14.5, 4.1, 2.1],
"faces": {
"north": {"uv": [4.5, 13, 2.5, 15], "texture": "#1_1"},
"east": {"uv": [4.5, 13, 3, 15], "rotation": 180, "texture": "#1_1"},
"south": {"uv": [14, 0, 10, 4], "texture": "#1_1"},
"west": {"uv": [4.5, 13, 3, 15], "texture": "#1_1"},
"up": {"uv": [3, 15, 4.5, 13], "rotation": 270, "texture": "#1_1"},
"down": {"uv": [3, 15, 4.5, 13], "rotation": 90, "texture": "#1_1"}
}
},
{
"name": "Port",
"from": [4, 4, -1.8],
"to": [12, 12, 0.2],
"faces": {
"north": {"uv": [2.5, 9, 6.5, 13], "texture": "#1_1"},
"east": {"uv": [5.5, 9, 6.5, 13], "texture": "#1_1"},
"west": {"uv": [5.5, 9, 6.5, 13], "rotation": 180, "texture": "#1_1"},
"up": {"uv": [5.5, 9, 6.5, 13], "rotation": 270, "texture": "#1_1"},
"down": {"uv": [5.5, 9, 6.5, 13], "rotation": 90, "texture": "#1_1"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, 135, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, 135, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, 45, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, 225, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 3, 0],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 45, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"rotation": [0, 180, 0],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "SteamCylinder",
"origin": [8, 8, 8],
"children": [0, 1, 2, 3, 4, 5, 6]
}
]
}

View file

@ -1,89 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"particle": "create:block/steam_engine_wheel",
"1_1": "create:block/furnace_cylinder"
},
"elements": [
{
"name": "Cylinder",
"from": [1.1, 1.1, -1.9],
"to": [14.9, 14.9, 0.1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]},
"faces": {
"north": {"uv": [8, 0, 15, 7], "texture": "#1_1"},
"east": {"uv": [14, 0, 15, 7], "texture": "#1_1"},
"south": {"uv": [7, 7, 16, 16], "texture": "#1_1"},
"west": {"uv": [14, 0, 15, 7], "rotation": 180, "texture": "#1_1"},
"up": {"uv": [14, 0, 15, 7], "rotation": 270, "texture": "#1_1"},
"down": {"uv": [14, 0, 15, 7], "rotation": 90, "texture": "#1_1"}
}
},
{
"from": [-0.9, 12, -0.9],
"to": [16.9, 16.1, 16.9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]},
"faces": {
"north": {"uv": [7, 7, 16, 9], "texture": "#1_1"},
"east": {"uv": [7, 7, 16, 9], "texture": "#1_1"},
"south": {"uv": [7, 7, 16, 9], "texture": "#1_1"},
"west": {"uv": [7, 7, 16, 9], "texture": "#1_1"},
"up": {"uv": [7, 7, 16, 16], "rotation": 270, "texture": "#1_1"},
"down": {"uv": [7, 7, 16, 16], "rotation": 90, "texture": "#1_1"}
}
},
{
"from": [-0.9, 8, -0.9],
"to": [16.9, 12, 16.9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]},
"faces": {
"north": {"uv": [7, 14, 16, 16], "texture": "#1_1"},
"east": {"uv": [7, 14, 16, 16], "texture": "#1_1"},
"south": {"uv": [7, 14, 16, 16], "texture": "#1_1"},
"west": {"uv": [7, 14, 16, 16], "texture": "#1_1"},
"up": {"uv": [7, 7, 16, 16], "rotation": 270, "texture": "#1_1"},
"down": {"uv": [7, 7, 16, 16], "rotation": 90, "texture": "#1_1"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, -67, 0],
"translation": [0, 2.5, -2],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, -67, 0],
"translation": [0, 2.5, -2],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, -91, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, -91, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"rotation": [90, 0, 0],
"translation": [0, 2, 0],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 225, 0],
"translation": [-0.25, 0.75, 0],
"scale": [0.35, 0.35, 0.35]
},
"fixed": {
"scale": [0.45, 0.45, 0.45]
}
},
"groups": [
{
"name": "SteamCylinder",
"origin": [8, 8, 8],
"children": [0, 1, 2]
}
]
}

View file

@ -1,123 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"5": "create:block/brass_casing",
"1_1": "create:block/furnace_cylinder"
},
"elements": [
{
"name": "Ring",
"from": [0, 0, 9],
"to": [16, 16, 14],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#5"},
"east": {"uv": [0, 7, 2.5, 15], "texture": "#1_1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#5"},
"west": {"uv": [0, 7, 2.5, 15], "texture": "#1_1"},
"up": {"uv": [0, 7, 2.5, 15], "rotation": 270, "texture": "#1_1"},
"down": {"uv": [0, 7, 2.5, 15], "rotation": 90, "texture": "#1_1"}
}
},
{
"name": "Cylinder",
"from": [1, 1, 0],
"to": [15, 15, 16],
"faces": {
"north": {"uv": [8, 0, 15, 7], "texture": "#1_1"},
"east": {"uv": [0, 0, 8, 7], "texture": "#1_1"},
"south": {"uv": [8, 0, 15, 7], "texture": "#1_1"},
"west": {"uv": [0, 0, 8, 7], "rotation": 180, "texture": "#1_1"},
"up": {"uv": [0, 0, 8, 7], "rotation": 270, "texture": "#1_1"},
"down": {"uv": [0, 0, 8, 7], "rotation": 90, "texture": "#1_1"}
}
},
{
"from": [10.5, 0, 0],
"to": [14.5, 4, 9],
"faces": {
"east": {"uv": [2.5, 7, 7, 9], "rotation": 180, "texture": "#1_1"},
"west": {"uv": [2.5, 7, 7, 9], "rotation": 180, "texture": "#1_1"},
"up": {"uv": [2.5, 7, 7, 9], "rotation": 90, "texture": "#1_1"},
"down": {"uv": [2.5, 7, 7, 9], "rotation": 270, "texture": "#1_1"}
}
},
{
"name": "LowerPort",
"from": [10.5, 0.1, 13.9],
"to": [14.5, 4.1, 16.9],
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#1_1"},
"east": {"uv": [3, 13, 4.5, 15], "rotation": 180, "texture": "#1_1"},
"south": {"uv": [2.5, 13, 4.5, 15], "texture": "#1_1"},
"west": {"uv": [3, 13, 4.5, 15], "texture": "#1_1"},
"up": {"uv": [3, 13, 4.5, 15], "rotation": 90, "texture": "#1_1"},
"down": {"uv": [3, 13, 4.5, 15], "rotation": 270, "texture": "#1_1"}
}
},
{
"name": "LowerPort",
"from": [1.5, 0.1, 13.9],
"to": [5.5, 4.1, 16.9],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
"faces": {
"north": {"uv": [14, 0, 10, 4], "texture": "#1_1"},
"east": {"uv": [4.5, 13, 3, 15], "texture": "#1_1"},
"south": {"uv": [4.5, 13, 2.5, 15], "texture": "#1_1"},
"west": {"uv": [4.5, 13, 3, 15], "rotation": 180, "texture": "#1_1"},
"up": {"uv": [3, 15, 4.5, 13], "rotation": 90, "texture": "#1_1"},
"down": {"uv": [3, 15, 4.5, 13], "rotation": 270, "texture": "#1_1"}
}
},
{
"name": "Port",
"from": [4, 4, 15.8],
"to": [12, 12, 17.8],
"faces": {
"east": {"uv": [5.5, 9, 6.5, 13], "rotation": 180, "texture": "#1_1"},
"south": {"uv": [2.5, 9, 6.5, 13], "texture": "#1_1"},
"west": {"uv": [5.5, 9, 6.5, 13], "texture": "#1_1"},
"up": {"uv": [5.5, 9, 6.5, 13], "rotation": 90, "texture": "#1_1"},
"down": {"uv": [5.5, 9, 6.5, 13], "rotation": 270, "texture": "#1_1"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, 135, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, 135, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, 45, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, 225, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 3, 0],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 45, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"rotation": [0, 180, 0],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "SteamCylinder",
"origin": [8, 8, 8],
"children": [0, 1, 2, 3, 4, 5]
}
]
}

View file

@ -1,31 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"4": "create:block/marker_flag"
},
"elements": [
{
"from": [0, 0, 0],
"to": [1, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]},
"faces": {
"north": {"uv": [1, 0, 2, 16], "texture": "#4"},
"east": {"uv": [0, 0, 1, 16], "texture": "#4"},
"south": {"uv": [1, 0, 2, 16], "texture": "#4"},
"west": {"uv": [0, 0, 1, 16], "texture": "#4"},
"up": {"uv": [0, 0, 1, 1], "texture": "#4"},
"down": {"uv": [0, 0, 1, 1], "texture": "#4"}
}
},
{
"from": [0.4, 7.5, 1],
"to": [0.4, 15.5, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]},
"faces": {
"east": {"uv": [16, 0, 8, 8], "texture": "#4", "tintindex": 0},
"west": {"uv": [8, 0, 16, 8], "texture": "#4", "tintindex": 0}
}
}
]
}

View file

@ -1,31 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"4": "create:block/marker_flag"
},
"elements": [
{
"from": [0, 0, 0],
"to": [1, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]},
"faces": {
"north": {"uv": [1, 0, 2, 16], "texture": "#4"},
"east": {"uv": [0, 0, 1, 16], "texture": "#4"},
"south": {"uv": [1, 0, 2, 16], "texture": "#4"},
"west": {"uv": [0, 0, 1, 16], "texture": "#4"},
"up": {"uv": [0, 0, 1, 1], "texture": "#4"},
"down": {"uv": [0, 0, 1, 1], "texture": "#4"}
}
},
{
"from": [0.4, 7.5, 1],
"to": [0.4, 15.5, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]},
"faces": {
"east": {"uv": [16, 8, 8, 16], "texture": "#4", "tintindex": 0},
"west": {"uv": [8, 8, 16, 16], "texture": "#4", "tintindex": 0}
}
}
]
}

View file

@ -1,31 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"4": "create:block/marker_flag"
},
"elements": [
{
"from": [0, 0, 0],
"to": [1, 8, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]},
"faces": {
"north": {"uv": [1, 8, 2, 16], "texture": "#4"},
"east": {"uv": [0, 0, 1, 8], "texture": "#4"},
"south": {"uv": [1, 0, 2, 8], "texture": "#4"},
"west": {"uv": [0, 0, 1, 8], "texture": "#4"},
"up": {"uv": [0, 0, 1, 1], "texture": "#4"},
"down": {"uv": [0, 0, 1, 1], "texture": "#4"}
}
},
{
"from": [0.4, -0.5, 1],
"to": [0.4, 7.5, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]},
"faces": {
"east": {"uv": [16, 0, 8, 8], "texture": "#4", "tintindex": 0},
"west": {"uv": [8, 0, 16, 8], "texture": "#4", "tintindex": 0}
}
}
]
}

View file

@ -1,31 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"4": "create:block/marker_flag"
},
"elements": [
{
"from": [0, 0, 0],
"to": [1, 8, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]},
"faces": {
"north": {"uv": [1, 8, 2, 16], "texture": "#4"},
"east": {"uv": [0, 0, 1, 8], "texture": "#4"},
"south": {"uv": [1, 0, 2, 8], "texture": "#4"},
"west": {"uv": [0, 0, 1, 8], "texture": "#4"},
"up": {"uv": [0, 0, 1, 1], "texture": "#4"},
"down": {"uv": [0, 0, 1, 1], "texture": "#4"}
}
},
{
"from": [0.4, -0.5, 1],
"to": [0.4, 7.5, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]},
"faces": {
"east": {"uv": [16, 8, 8, 16], "texture": "#4", "tintindex": 0},
"west": {"uv": [8, 8, 16, 16], "texture": "#4", "tintindex": 0}
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 645 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 702 B