feat: add back furnace engine
This commit is contained in:
parent
0bfd98fccd
commit
ef42b7d84e
|
@ -231,11 +231,12 @@ fb41aa1a0828c9256b3f886fdcb55bb54252ba09 assets/create/blockstates/exposed_coppe
|
|||
dd6dadfeb65c4a4c4d1dc92516c411355e90dcca assets/create/blockstates/fluid_pipe.json
|
||||
f0eaab18e16c4f3f65ebf3b55b08f0dc445720fe assets/create/blockstates/fluid_tank.json
|
||||
d3de8e5a13c417effe1516fba9d9074fa4a6da23 assets/create/blockstates/fluid_valve.json
|
||||
95b0775bf4d619ca5b0a42dbdc47c6f2c15d7b3d assets/create/blockstates/flywheel.json
|
||||
e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets/create/blockstates/flywheel.json
|
||||
ac00d40e1ef50a37041c0481afa1a23a14dea78e assets/create/blockstates/framed_glass.json
|
||||
b5a2e05ed9557992c6093b76e9d80073eb986d5a assets/create/blockstates/framed_glass_door.json
|
||||
61df7769fa61f6dd2868a4377e54320fdd473b4e assets/create/blockstates/framed_glass_pane.json
|
||||
21661698b4aea1984661a0eaf4e98fd02ba2dd52 assets/create/blockstates/framed_glass_trapdoor.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
|
||||
|
@ -582,8 +583,8 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo
|
|||
5616dda664dd106d576848124fc0fc1de18d0fd3 assets/create/blockstates/yellow_valve_handle.json
|
||||
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
|
||||
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
|
||||
4fd8347dfb20e6e5752b8b905850762a88c88c02 assets/create/lang/en_ud.json
|
||||
4e84e9d171ca389a372fda7e30a73ddc7d41185a assets/create/lang/en_us.json
|
||||
e1ef2d33dd4102c0075c41412cf3f40140a60e2e assets/create/lang/en_ud.json
|
||||
eb159a8640b42c72ad136d904379aec170942edd assets/create/lang/en_us.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
|
||||
|
@ -1925,6 +1926,7 @@ f2496d3b16e5b5415474bcfb7d6c6a6c3b28ed60 assets/create/models/item/framed_glass.
|
|||
fe7a9c2130d8c4d6f4ed4ea7c56b63c4a5e709d2 assets/create/models/item/framed_glass_door.json
|
||||
1041d462c6e856f7f3f2365c299c0599703d1ed7 assets/create/models/item/framed_glass_pane.json
|
||||
1c2ec286c36a791fc7c6ddabb7fcb302fbeaf0a1 assets/create/models/item/framed_glass_trapdoor.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
|
||||
|
@ -3488,6 +3490,7 @@ b4df9a8b28f29587e75ffe11ca26d85ddbe926da data/create/loot_tables/blocks/fluid_pi
|
|||
1088a023e61d0115de836c8f6309fc447ae4322a data/create/loot_tables/blocks/framed_glass_door.json
|
||||
f76fe7d876150a43be05977ec596d1fe2a3b9868 data/create/loot_tables/blocks/framed_glass_pane.json
|
||||
badc3b5364aa8df59aabda61a455ea56cb82d2ff data/create/loot_tables/blocks/framed_glass_trapdoor.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
|
||||
|
@ -4914,6 +4917,8 @@ a88cc39c13146aa246910193b0b0151a797c5f19 data/create/recipes/limestone_from_ston
|
|||
484e6c52ad534d2fa2bbacb7c03a349ae68d0803 data/create/recipes/limestone_pillar_from_stone_types_limestone_stonecutting.json
|
||||
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
|
||||
|
@ -5317,7 +5322,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
|
||||
2a2700b43614f86d3294726595cb28ed7dca4387 data/create/tags/blocks/brittle.json
|
||||
77e6f289379772776c1c58122540b4d88a0808b3 data/create/tags/blocks/brittle.json
|
||||
d99d5c67bdffff60789a19bd51a5c5267c75e0a4 data/create/tags/blocks/casing.json
|
||||
74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/blocks/contraption_inventory_deny.json
|
||||
bc203f09dd7f48965d146d0bd035fb904cb75e7d data/create/tags/blocks/copycat_allow.json
|
||||
|
@ -5431,7 +5436,7 @@ cf71d9ad48f109da3a8b22a8d2d1a68d4eac99c0 data/minecraft/tags/blocks/climbable.js
|
|||
69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json
|
||||
2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/lush_ground_replaceable.json
|
||||
b68d565b4befb7b1c542d69eaa81309cc5304327 data/minecraft/tags/blocks/mineable/axe.json
|
||||
ed5bf69c56339703aadb5e6a9cb40d5938dfb2f8 data/minecraft/tags/blocks/mineable/pickaxe.json
|
||||
df77afefbb021ad6bf12b04493b669a3cb362b84 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
|
||||
|
|
|
@ -1,17 +1,49 @@
|
|||
{
|
||||
"variants": {
|
||||
"axis=x": {
|
||||
"model": "create:block/flywheel/block",
|
||||
"x": 90,
|
||||
"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",
|
||||
"y": 90
|
||||
},
|
||||
"axis=y": {
|
||||
"model": "create:block/flywheel/block"
|
||||
"connection=left,facing=south": {
|
||||
"model": "create:block/flywheel/casing_left",
|
||||
"y": 90
|
||||
},
|
||||
"axis=z": {
|
||||
"model": "create:block/flywheel/block",
|
||||
"x": 90,
|
||||
"connection=right,facing=south": {
|
||||
"model": "create:block/flywheel/casing_right",
|
||||
"y": 90
|
||||
},
|
||||
"connection=none,facing=west": {
|
||||
"model": "create:block/flywheel/casing_none",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -237,6 +237,7 @@
|
|||
"block.create.framed_glass_door": "\u0279oo\u15E1 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.framed_glass_trapdoor": "\u0279oopd\u0250\u0279\u27D8 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",
|
||||
|
|
|
@ -240,6 +240,7 @@
|
|||
"block.create.framed_glass_door": "Framed Glass Door",
|
||||
"block.create.framed_glass_pane": "Framed Glass Pane",
|
||||
"block.create.framed_glass_trapdoor": "Framed Glass Trapdoor",
|
||||
"block.create.furnace_engine": "Furnace Engine",
|
||||
"block.create.gantry_carriage": "Gantry Carriage",
|
||||
"block.create.gantry_shaft": "Gantry Shaft",
|
||||
"block.create.gearbox": "Gearbox",
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:block/furnace_engine/item"
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:furnace_engine"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "create:mechanical_crafting",
|
||||
"pattern": [
|
||||
" BBB",
|
||||
"CB B",
|
||||
" BBB"
|
||||
],
|
||||
"key": {
|
||||
"B": {
|
||||
"tag": "forge:ingots/brass"
|
||||
},
|
||||
"C": {
|
||||
"item": "create:brass_casing"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:flywheel"
|
||||
},
|
||||
"acceptMirrored": true
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"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
|
||||
}
|
|
@ -22,6 +22,7 @@
|
|||
"create:black_valve_handle",
|
||||
"create:rope",
|
||||
"create:pulley_magnet",
|
||||
"create:furnace_engine",
|
||||
"create:redstone_link",
|
||||
"create:peculiar_bell",
|
||||
"create:haunted_bell",
|
||||
|
|
|
@ -111,6 +111,7 @@
|
|||
"create:mechanical_crafter",
|
||||
"create:sequenced_gearshift",
|
||||
"create:flywheel",
|
||||
"create:furnace_engine",
|
||||
"create:rotation_speed_controller",
|
||||
"create:mechanical_arm",
|
||||
"create:track",
|
||||
|
|
|
@ -107,6 +107,9 @@ import com.simibubi.create.content.kinetics.fan.NozzleBlockEntity;
|
|||
import com.simibubi.create.content.kinetics.flywheel.FlywheelBlockEntity;
|
||||
import com.simibubi.create.content.kinetics.flywheel.FlywheelInstance;
|
||||
import com.simibubi.create.content.kinetics.flywheel.FlywheelRenderer;
|
||||
import com.simibubi.create.content.kinetics.flywheel.engine.EngineInstance;
|
||||
import com.simibubi.create.content.kinetics.flywheel.engine.EngineRenderer;
|
||||
import com.simibubi.create.content.kinetics.flywheel.engine.FurnaceEngineTileEntity;
|
||||
import com.simibubi.create.content.kinetics.gantry.GantryShaftBlockEntity;
|
||||
import com.simibubi.create.content.kinetics.gauge.GaugeInstance;
|
||||
import com.simibubi.create.content.kinetics.gauge.GaugeRenderer;
|
||||
|
@ -599,6 +602,13 @@ public class AllBlockEntityTypes {
|
|||
.renderer(() -> FlywheelRenderer::new)
|
||||
.register();
|
||||
|
||||
public static final BlockEntityEntry<FurnaceEngineTileEntity> FURNACE_ENGINE = REGISTRATE
|
||||
.blockEntity("furnace_engine", FurnaceEngineTileEntity::new)
|
||||
.instance(() -> EngineInstance::new, false)
|
||||
.validBlocks(AllBlocks.FURNACE_ENGINE)
|
||||
.renderer(() -> EngineRenderer::new)
|
||||
.register();
|
||||
|
||||
public static final BlockEntityEntry<MillstoneBlockEntity> MILLSTONE = REGISTRATE
|
||||
.blockEntity("millstone", MillstoneBlockEntity::new)
|
||||
.instance(() -> MillstoneCogInstance::new, false)
|
||||
|
|
|
@ -124,6 +124,8 @@ import com.simibubi.create.content.kinetics.drill.DrillMovementBehaviour;
|
|||
import com.simibubi.create.content.kinetics.fan.EncasedFanBlock;
|
||||
import com.simibubi.create.content.kinetics.fan.NozzleBlock;
|
||||
import com.simibubi.create.content.kinetics.flywheel.FlywheelBlock;
|
||||
import com.simibubi.create.content.kinetics.flywheel.FlywheelGenerator;
|
||||
import com.simibubi.create.content.kinetics.flywheel.engine.FurnaceEngineBlock;
|
||||
import com.simibubi.create.content.kinetics.gantry.GantryShaftBlock;
|
||||
import com.simibubi.create.content.kinetics.gauge.GaugeBlock;
|
||||
import com.simibubi.create.content.kinetics.gauge.GaugeGenerator;
|
||||
|
@ -1514,11 +1516,22 @@ public class AllBlocks {
|
|||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.transform(axeOrPickaxe())
|
||||
.transform(BlockStressDefaults.setNoImpact())
|
||||
.blockstate(BlockStateGen.axisBlockProvider(true))
|
||||
.blockstate(new FlywheelGenerator()::generate)
|
||||
.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)
|
||||
|
|
|
@ -62,6 +62,13 @@ public class AllPartialModels {
|
|||
ROLLER_WHEEL = block("mechanical_roller/wheel"),
|
||||
ROLLER_FRAME = block("mechanical_roller/frame"),
|
||||
|
||||
FLYWHEEL = block("flywheel/wheel"),
|
||||
FLYWHEEL_UPPER_ROTATING = block("flywheel/upper_rotating_connector"),
|
||||
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"),
|
||||
|
@ -100,6 +107,9 @@ public class AllPartialModels {
|
|||
ARM_CLAW_GRIP_UPPER = block("mechanical_arm/upper_claw_grip"),
|
||||
ARM_CLAW_GRIP_LOWER = block("mechanical_arm/lower_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_COG = block("mechanical_pump/cog"),
|
||||
FLUID_PIPE_CASING = block("fluid_pipe/casing"), FLUID_VALVE_POINTER = block("fluid_valve/pointer"),
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorBlock;
|
|||
import com.simibubi.create.content.equipment.potatoCannon.BuiltinPotatoProjectileTypes;
|
||||
import com.simibubi.create.content.fluids.tank.BoilerHeaters;
|
||||
import com.simibubi.create.content.kinetics.TorquePropagator;
|
||||
import com.simibubi.create.content.kinetics.flywheel.engine.FurnaceEngineInteractions;
|
||||
import com.simibubi.create.content.kinetics.mechanicalArm.AllArmInteractionPointTypes;
|
||||
import com.simibubi.create.content.redstone.displayLink.AllDisplayBehaviours;
|
||||
import com.simibubi.create.content.redstone.link.RedstoneLinkNetworkHandler;
|
||||
|
@ -133,6 +134,7 @@ public class Create {
|
|||
|
||||
AllConfigs.register(modLoadingContext);
|
||||
|
||||
FurnaceEngineInteractions.registerDefaults();
|
||||
AllMovementBehaviours.registerDefaults();
|
||||
AllInteractionBehaviours.registerDefaults();
|
||||
AllDisplayBehaviours.registerDefaults();
|
||||
|
|
|
@ -2,64 +2,128 @@ package com.simibubi.create.content.kinetics.flywheel;
|
|||
|
||||
import com.simibubi.create.AllBlockEntityTypes;
|
||||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock;
|
||||
import com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock;
|
||||
import com.simibubi.create.content.kinetics.flywheel.engine.EngineTileEntity;
|
||||
import com.simibubi.create.content.kinetics.flywheel.engine.FurnaceEngineBlock;
|
||||
import com.simibubi.create.foundation.advancement.AllTriggers;
|
||||
import com.simibubi.create.foundation.block.IBE;
|
||||
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.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.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 RotatedPillarKineticBlock implements IBE<FlywheelBlockEntity> {
|
||||
public class FlywheelBlock extends HorizontalKineticBlock implements IBE<FlywheelBlockEntity> {
|
||||
|
||||
public static final EnumProperty<ConnectionState> CONNECTION = EnumProperty.create("connection", ConnectionState.class);
|
||||
|
||||
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()).withBlockEntityDo(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<FlywheelBlockEntity> getBlockEntityClass() {
|
||||
return FlywheelBlockEntity.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 FlywheelBlockEntity> getBlockEntityType() {
|
||||
return AllBlockEntityTypes.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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.simibubi.create.content.kinetics.flywheel;
|
||||
|
||||
import com.simibubi.create.content.kinetics.base.GeneratingKineticBlockEntity;
|
||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
|
||||
|
@ -10,8 +11,13 @@ import net.minecraft.world.level.block.entity.BlockEntityType;
|
|||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
|
||||
public class FlywheelBlockEntity extends KineticBlockEntity {
|
||||
public class FlywheelBlockEntity extends GeneratingKineticBlockEntity {
|
||||
|
||||
private float generatedCapacity;
|
||||
private float generatedSpeed;
|
||||
private int stoppingCooldown;
|
||||
|
||||
// Client
|
||||
LerpedFloat visualSpeed = LerpedFloat.linear();
|
||||
float angle;
|
||||
|
||||
|
@ -19,6 +25,32 @@ public class FlywheelBlockEntity extends KineticBlockEntity {
|
|||
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);
|
||||
|
@ -26,11 +58,17 @@ public class FlywheelBlockEntity extends KineticBlockEntity {
|
|||
|
||||
@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.chase(getGeneratedSpeed(), 1 / 64f, Chaser.EXP);
|
||||
|
@ -40,13 +78,30 @@ public class FlywheelBlockEntity extends KineticBlockEntity {
|
|||
public void tick() {
|
||||
super.tick();
|
||||
|
||||
if (!level.isClientSide)
|
||||
if (level.isClientSide) {
|
||||
float targetSpeed = isVirtual() ? speed : getGeneratedSpeed();
|
||||
visualSpeed.updateChaseTarget(targetSpeed);
|
||||
visualSpeed.tickChaser();
|
||||
angle += visualSpeed.getValue() * 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)
|
||||
return;
|
||||
|
||||
float targetSpeed = getSpeed();
|
||||
visualSpeed.updateChaseTarget(targetSpeed);
|
||||
visualSpeed.tickChaser();
|
||||
angle += visualSpeed.getValue() * 3 / 10f;
|
||||
angle %= 360;
|
||||
stoppingCooldown--;
|
||||
if (stoppingCooldown == 0) {
|
||||
generatedCapacity = 0;
|
||||
generatedSpeed = 0;
|
||||
updateGeneratedRotation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
package com.simibubi.create.content.kinetics.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()));
|
||||
}
|
||||
}
|
|
@ -1,32 +1,88 @@
|
|||
package com.simibubi.create.content.kinetics.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.AllPartialModels;
|
||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntityInstance;
|
||||
import com.simibubi.create.content.kinetics.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 KineticBlockEntityInstance<FlywheelBlockEntity> 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 materialManager, FlywheelBlockEntity blockEntity) {
|
||||
super(materialManager, blockEntity);
|
||||
public FlywheelInstance(MaterialManager modelManager, FlywheelBlockEntity tile) {
|
||||
super(modelManager, tile);
|
||||
|
||||
shaft = setup(getRotatingMaterial().getModel(shaft())
|
||||
.createInstance());
|
||||
wheel = getTransformMaterial().getModel(blockState)
|
||||
facing = blockState.getValue(HORIZONTAL_FACING);
|
||||
|
||||
shaft = setup(shaftModel().createInstance());
|
||||
|
||||
BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90);
|
||||
wheel = getTransformMaterial()
|
||||
.getModel(AllPartialModels.FLYWHEEL, referenceState, referenceState.getValue(HORIZONTAL_FACING))
|
||||
.createInstance();
|
||||
|
||||
animate(blockEntity.angle);
|
||||
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(AllPartialModels.FLYWHEEL_UPPER_ROTATING, blockState)
|
||||
.createInstance();
|
||||
lowerRotating = mat.getModel(AllPartialModels.FLYWHEEL_LOWER_ROTATING, blockState)
|
||||
.createInstance();
|
||||
upperSliding = mat.getModel(AllPartialModels.FLYWHEEL_UPPER_SLIDING, blockState)
|
||||
.createInstance();
|
||||
lowerSliding = mat.getModel(AllPartialModels.FLYWHEEL_LOWER_SLIDING, blockState)
|
||||
.createInstance();
|
||||
|
||||
connectors = Lists.newArrayList(upperRotating, lowerRotating, upperSliding, lowerSliding);
|
||||
} else {
|
||||
connectors = Collections.emptyList();
|
||||
}
|
||||
|
||||
animate(tile.angle);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -50,8 +106,38 @@ public class FlywheelInstance extends KineticBlockEntityInstance<FlywheelBlockEn
|
|||
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, axis), AngleHelper.rad(angle))
|
||||
.rotate(Direction.get(Direction.AxisDirection.POSITIVE, facing.getAxis()), AngleHelper.rad(angle))
|
||||
.unCentre();
|
||||
|
||||
wheel.setTransform(ms);
|
||||
|
@ -65,12 +151,57 @@ public class FlywheelInstance extends KineticBlockEntityInstance<FlywheelBlockEn
|
|||
@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(AllPartialModels.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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,17 +1,29 @@
|
|||
package com.simibubi.create.content.kinetics.flywheel;
|
||||
|
||||
import static com.simibubi.create.content.kinetics.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.AllPartialModels;
|
||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
|
||||
import com.simibubi.create.content.kinetics.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 KineticBlockEntityRenderer<FlywheelBlockEntity> {
|
||||
|
||||
|
@ -20,32 +32,98 @@ public class FlywheelRenderer extends KineticBlockEntityRenderer<FlywheelBlockEn
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void renderSafe(FlywheelBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer,
|
||||
protected void renderSafe(FlywheelBlockEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer,
|
||||
int light, int overlay) {
|
||||
super.renderSafe(be, partialTicks, ms, buffer, light, overlay);
|
||||
super.renderSafe(te, partialTicks, ms, buffer, light, overlay);
|
||||
|
||||
if (Backend.canUseInstancing(be.getLevel()))
|
||||
return;
|
||||
if (Backend.canUseInstancing(te.getLevel())) return;
|
||||
|
||||
BlockState blockState = be.getBlockState();
|
||||
BlockState blockState = te.getBlockState();
|
||||
FlywheelBlockEntity wte = (FlywheelBlockEntity) te;
|
||||
|
||||
float speed = be.visualSpeed.getValue(partialTicks) * 3 / 10f;
|
||||
float angle = be.angle + speed * partialTicks;
|
||||
float speed = wte.visualSpeed.getValue(partialTicks) * 3 / 10f;
|
||||
float angle = wte.angle + speed * partialTicks;
|
||||
|
||||
VertexConsumer vb = buffer.getBuffer(RenderType.solid());
|
||||
renderFlywheel(be, ms, light, blockState, angle, vb);
|
||||
|
||||
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(AllPartialModels.FLYWHEEL_UPPER_ROTATING, blockState), connection), true, true,
|
||||
rotation, flip).light(light)
|
||||
.renderInto(ms, vb);
|
||||
transformConnector(
|
||||
rotateToFacing(CachedBufferer.partial(AllPartialModels.FLYWHEEL_LOWER_ROTATING, blockState), connection), false, true,
|
||||
rotation, flip).light(light)
|
||||
.renderInto(ms, vb);
|
||||
|
||||
transformConnector(rotateToFacing(CachedBufferer.partial(AllPartialModels.FLYWHEEL_UPPER_SLIDING, blockState), connection),
|
||||
true, false, rotation, flip).light(light)
|
||||
.renderInto(ms, vb);
|
||||
transformConnector(rotateToFacing(CachedBufferer.partial(AllPartialModels.FLYWHEEL_LOWER_SLIDING, blockState), connection),
|
||||
false, false, rotation, flip).light(light)
|
||||
.renderInto(ms, vb);
|
||||
}
|
||||
|
||||
renderFlywheel(te, ms, light, blockState, angle, vb);
|
||||
}
|
||||
|
||||
private void renderFlywheel(FlywheelBlockEntity be, PoseStack ms, int light, BlockState blockState, float angle,
|
||||
VertexConsumer vb) {
|
||||
SuperByteBuffer wheel = CachedBufferer.block(blockState);
|
||||
kineticRotationTransform(wheel, be, getRotationAxisOf(be), AngleHelper.rad(angle), light);
|
||||
private void renderFlywheel(KineticBlockEntity 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(AllPartialModels.FLYWHEEL, referenceState, facing);
|
||||
kineticRotationTransform(wheel, te, blockState.getValue(HORIZONTAL_FACING)
|
||||
.getAxis(), AngleHelper.rad(angle), light);
|
||||
wheel.renderInto(ms, vb);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockState getRenderedBlockState(FlywheelBlockEntity be) {
|
||||
return shaft(getRotationAxisOf(be));
|
||||
protected SuperByteBuffer getRotatedModel(FlywheelBlockEntity te, BlockState state) {
|
||||
return CachedBufferer.partialFacing(AllPartialModels.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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
package com.simibubi.create.content.kinetics.flywheel.engine;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.jozufozu.flywheel.core.PartialModel;
|
||||
import com.simibubi.create.content.equipment.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);
|
||||
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
package com.simibubi.create.content.kinetics.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);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package com.simibubi.create.content.kinetics.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.blockEntity.renderer.SafeBlockEntityRenderer;
|
||||
import com.simibubi.create.foundation.render.CachedBufferer;
|
||||
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 SafeBlockEntityRenderer<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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
package com.simibubi.create.content.kinetics.flywheel.engine;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.kinetics.flywheel.FlywheelBlock;
|
||||
import com.simibubi.create.content.kinetics.flywheel.FlywheelBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
|
||||
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 SmartBlockEntity {
|
||||
|
||||
public float appliedCapacity;
|
||||
public float appliedSpeed;
|
||||
protected FlywheelBlockEntity poweredWheel;
|
||||
|
||||
public EngineTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||
super(type, pos, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> 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 FlywheelBlockEntity) {
|
||||
if (!FlywheelBlock.isConnected(wheelState))
|
||||
FlywheelBlock.setConnection(level, te.getBlockPos(), te.getBlockState(), engineFacing.getOpposite());
|
||||
poweredWheel = (FlywheelBlockEntity) 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 remove() {
|
||||
detachWheel();
|
||||
super.remove();
|
||||
}
|
||||
|
||||
protected void refreshWheelSpeed() {
|
||||
if (poweredWheel == null)
|
||||
return;
|
||||
poweredWheel.setRotation(appliedSpeed, appliedCapacity);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
package com.simibubi.create.content.kinetics.flywheel.engine;
|
||||
|
||||
import com.jozufozu.flywheel.core.PartialModel;
|
||||
import com.simibubi.create.AllBlockEntityTypes;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllPartialModels;
|
||||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.foundation.block.IBE;
|
||||
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 IBE<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 AllPartialModels.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))
|
||||
withBlockEntityDo(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> getBlockEntityClass() {
|
||||
return FurnaceEngineTileEntity.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockEntityType<? extends FurnaceEngineTileEntity> getBlockEntityType() {
|
||||
return AllBlockEntityTypes.FURNACE_ENGINE.get();
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,111 @@
|
|||
package com.simibubi.create.content.kinetics.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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package com.simibubi.create.content.kinetics.flywheel.engine;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.kinetics.BlockStressValues;
|
||||
import com.simibubi.create.content.kinetics.flywheel.engine.FurnaceEngineInteractions.HeatSource;
|
||||
import com.simibubi.create.content.kinetics.flywheel.engine.FurnaceEngineInteractions.InteractionHandler;
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
}
|
|
@ -13,6 +13,7 @@ import net.minecraft.resources.ResourceLocation;
|
|||
import net.minecraft.tags.ItemTags;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.minecraft.world.level.ItemLike;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraftforge.common.Tags;
|
||||
|
||||
public class MechanicalCraftingRecipeGen extends CreateRecipeProvider {
|
||||
|
@ -60,7 +61,23 @@ public class MechanicalCraftingRecipeGen extends CreateRecipeProvider {
|
|||
.key('S', AllBlocks.FLUID_PIPE.get())
|
||||
.key('C', Ingredient.of(I.copper()))
|
||||
.patternLine("LRSSS")
|
||||
.patternLine("CC "))
|
||||
.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())
|
||||
.patternLine(" BBB")
|
||||
.patternLine("CB B")
|
||||
.patternLine(" BBB"))
|
||||
|
||||
;
|
||||
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"parent": "create:block/flywheel/flywheel",
|
||||
"loader": "forge:obj",
|
||||
"flip-v": true,
|
||||
"model": "create:models/block/flywheel/flywheel_shaftless.obj"
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
{
|
||||
"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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
{
|
||||
"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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
{
|
||||
"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
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"parent": "block/block",
|
||||
"ambientocclusion": false,
|
||||
"textures": {
|
||||
"0": "create:block/flywheel",
|
||||
"1": "create:block/axis",
|
||||
"2": "create:block/axis_top",
|
||||
"particle": "create:block/flywheel"
|
||||
}
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
# Blender MTL File: 'engine.blend'
|
||||
# Material Count: 3
|
||||
|
||||
newmtl m_0
|
||||
map_Kd #0
|
||||
|
||||
newmtl m_1
|
||||
map_Kd #1
|
||||
|
||||
newmtl m_2
|
||||
map_Kd #2
|
File diff suppressed because it is too large
Load Diff
|
@ -1,993 +0,0 @@
|
|||
# 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
|
|
@ -1,18 +1,381 @@
|
|||
{
|
||||
"parent": "create:block/flywheel/flywheel",
|
||||
"loader": "forge:obj",
|
||||
"flip-v": true,
|
||||
"model": "create:models/block/flywheel/flywheel.obj",
|
||||
"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"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"gui": {
|
||||
"rotation": [ 30, 225, 0 ],
|
||||
"translation": [ 0, 0, 0],
|
||||
"scale":[ 0.4, 0.4, 0.4 ]
|
||||
},
|
||||
"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": {
|
||||
"rotation": [ 90, 0, 0 ],
|
||||
"translation": [ 0, 0, 0],
|
||||
"scale":[ 0.4, 0.4, 0.4 ]
|
||||
}
|
||||
}
|
||||
"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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,221 @@
|
|||
{
|
||||
"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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,133 @@
|
|||
{
|
||||
"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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
{
|
||||
"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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"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]
|
||||
}
|
||||
]
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 645 B |
Binary file not shown.
After Width: | Height: | Size: 196 B |
Binary file not shown.
After Width: | Height: | Size: 421 B |
Binary file not shown.
After Width: | Height: | Size: 702 B |
Loading…
Reference in New Issue