mirror of
https://github.com/Jozufozu/Flywheel.git
synced 2024-12-23 21:46:25 +01:00
Added Flywheels and Furnace Engines
- Flywheels and Engines form a powerful rotation source multiblock - Furnace engines only activate when attached to a running furnace
This commit is contained in:
parent
aacc52d84a
commit
6ea0dbd6ab
40 changed files with 2186 additions and 5 deletions
|
@ -52,6 +52,12 @@ public enum AllBlockPartials {
|
|||
BELT_TUNNEL_FLAP("belt_tunnel/flap"),
|
||||
BELT_TUNNEL_INDICATOR("belt_tunnel/indicator"),
|
||||
FLEXPEATER_INDICATOR("repeaters/flexpeater_indicator"),
|
||||
FLYWHEEL("flywheel/wheel"),
|
||||
FLYWHEEL_UPPER_ROTATING("flywheel/upper_rotating_connector"),
|
||||
FLYWHEEL_LOWER_ROTATING("flywheel/lower_rotating_connector"),
|
||||
FLYWHEEL_UPPER_SLIDING("flywheel/upper_sliding_connector"),
|
||||
FLYWHEEL_LOWER_SLIDING("flywheel/lower_sliding_connector"),
|
||||
FURNACE_GENERATOR_FRAME("furnace_engine/frame"),
|
||||
|
||||
;
|
||||
|
||||
|
|
|
@ -25,6 +25,8 @@ import com.simibubi.create.modules.contraptions.components.crusher.CrushingWheel
|
|||
import com.simibubi.create.modules.contraptions.components.deployer.DeployerBlock;
|
||||
import com.simibubi.create.modules.contraptions.components.fan.EncasedFanBlock;
|
||||
import com.simibubi.create.modules.contraptions.components.fan.NozzleBlock;
|
||||
import com.simibubi.create.modules.contraptions.components.flywheel.FlywheelBlock;
|
||||
import com.simibubi.create.modules.contraptions.components.flywheel.engine.FurnaceEngineBlock;
|
||||
import com.simibubi.create.modules.contraptions.components.mixer.MechanicalMixerBlock;
|
||||
import com.simibubi.create.modules.contraptions.components.motor.MotorBlock;
|
||||
import com.simibubi.create.modules.contraptions.components.press.MechanicalPressBlock;
|
||||
|
@ -118,13 +120,17 @@ public enum AllBlocks {
|
|||
NOZZLE(new NozzleBlock()),
|
||||
TURNTABLE(new TurntableBlock()),
|
||||
HAND_CRANK(new HandCrankBlock()),
|
||||
|
||||
|
||||
CRUSHING_WHEEL(new CrushingWheelBlock()),
|
||||
CRUSHING_WHEEL_CONTROLLER(new CrushingWheelControllerBlock()),
|
||||
MECHANICAL_PRESS(new MechanicalPressBlock()),
|
||||
MECHANICAL_MIXER(new MechanicalMixerBlock()),
|
||||
BASIN(new BasinBlock()),
|
||||
MECHANICAL_CRAFTER(new MechanicalCrafterBlock()),
|
||||
|
||||
FLYWHEEL(new FlywheelBlock()),
|
||||
FURNACE_ENGINE(new FurnaceEngineBlock()),
|
||||
|
||||
SPEED_GAUGE(new GaugeBlock(GaugeBlock.Type.SPEED)),
|
||||
STRESS_GAUGE(new GaugeBlock(GaugeBlock.Type.STRESS)),
|
||||
|
||||
|
|
|
@ -25,6 +25,10 @@ import com.simibubi.create.modules.contraptions.components.deployer.DeployerTile
|
|||
import com.simibubi.create.modules.contraptions.components.fan.EncasedFanTileEntity;
|
||||
import com.simibubi.create.modules.contraptions.components.fan.EncasedFanTileEntityRenderer;
|
||||
import com.simibubi.create.modules.contraptions.components.fan.NozzleTileEntity;
|
||||
import com.simibubi.create.modules.contraptions.components.flywheel.FlywheelRenderer;
|
||||
import com.simibubi.create.modules.contraptions.components.flywheel.FlywheelTileEntity;
|
||||
import com.simibubi.create.modules.contraptions.components.flywheel.engine.EngineRenderer;
|
||||
import com.simibubi.create.modules.contraptions.components.flywheel.engine.FurnaceEngineTileEntity;
|
||||
import com.simibubi.create.modules.contraptions.components.mixer.MechanicalMixerTileEntity;
|
||||
import com.simibubi.create.modules.contraptions.components.mixer.MechanicalMixerTileEntityRenderer;
|
||||
import com.simibubi.create.modules.contraptions.components.motor.MotorTileEntity;
|
||||
|
@ -111,6 +115,8 @@ public enum AllTileEntities {
|
|||
DRILL(DrillTileEntity::new, AllBlocks.DRILL),
|
||||
SAW(SawTileEntity::new, AllBlocks.SAW),
|
||||
HARVESTER(HarvesterTileEntity::new, AllBlocks.HARVESTER),
|
||||
FLYWHEEL(FlywheelTileEntity::new, AllBlocks.FLYWHEEL),
|
||||
FURNACE_ENGINE(FurnaceEngineTileEntity::new, AllBlocks.FURNACE_ENGINE),
|
||||
CRUSHING_WHEEL(CrushingWheelTileEntity::new, AllBlocks.CRUSHING_WHEEL),
|
||||
CRUSHING_WHEEL_CONTROLLER(CrushingWheelControllerTileEntity::new, AllBlocks.CRUSHING_WHEEL_CONTROLLER),
|
||||
WATER_WHEEL(WaterWheelTileEntity::new, AllBlocks.WATER_WHEEL),
|
||||
|
@ -200,6 +206,8 @@ public enum AllTileEntities {
|
|||
bind(StressGaugeTileEntity.class, new GaugeTileEntityRenderer(GaugeBlock.Type.STRESS));
|
||||
bind(BasinTileEntity.class, new BasinTileEntityRenderer());
|
||||
bind(DeployerTileEntity.class, new DeployerTileEntityRenderer());
|
||||
bind(FlywheelTileEntity.class, new FlywheelRenderer());
|
||||
bind(FurnaceEngineTileEntity.class, new EngineRenderer<>());
|
||||
|
||||
bind(RedstoneLinkTileEntity.class, new SmartTileEntityRenderer<>());
|
||||
bind(ExtractorTileEntity.class, new SmartTileEntityRenderer<>());
|
||||
|
|
|
@ -30,7 +30,10 @@ public class AllShapes {
|
|||
TRANSPOSER = VoxelShaper.forDirectional(VoxelShapes.or(
|
||||
makeCuboidShape(4, 4, -1, 12, 12, 1),
|
||||
makeCuboidShape(5, 5, 0, 11, 11, 16),
|
||||
makeCuboidShape(4, 4, 11, 12, 12, 17)), Direction.SOUTH)
|
||||
makeCuboidShape(4, 4, 11, 12, 12, 17)), Direction.SOUTH),
|
||||
FURNACE_ENGINE = VoxelShaper.forHorizontal(VoxelShapes.or(
|
||||
makeCuboidShape(1, 1, 0, 15, 15, 16),
|
||||
makeCuboidShape(0, 0, 9, 16, 16, 14)), Direction.SOUTH)
|
||||
|
||||
;
|
||||
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
package com.simibubi.create.modules.contraptions.components.flywheel;
|
||||
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.modules.contraptions.base.HorizontalKineticBlock;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.state.EnumProperty;
|
||||
import net.minecraft.state.StateContainer.Builder;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.IStringSerializable;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.IWorldReader;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class FlywheelBlock extends HorizontalKineticBlock {
|
||||
|
||||
public static EnumProperty<ConnectionState> CONNECTION = EnumProperty.create("connection", ConnectionState.class);
|
||||
|
||||
public FlywheelBlock() {
|
||||
super(Properties.from(Blocks.GOLD_BLOCK));
|
||||
setDefaultState(getDefaultState().with(CONNECTION, ConnectionState.NONE));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void fillStateContainer(Builder<Block, BlockState> builder) {
|
||||
super.fillStateContainer(builder.add(CONNECTION));
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return new FlywheelTileEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
||||
Direction preferred = getPreferredHorizontalFacing(context);
|
||||
if (preferred != null)
|
||||
return getDefaultState().with(HORIZONTAL_FACING, preferred.getOpposite());
|
||||
return this.getDefaultState().with(HORIZONTAL_FACING, context.getPlacementHorizontalFacing());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean hasStaticPart() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean isConnected(BlockState state) {
|
||||
return getConnection(state) != null;
|
||||
}
|
||||
|
||||
public static Direction getConnection(BlockState state) {
|
||||
Direction facing = state.get(HORIZONTAL_FACING);
|
||||
ConnectionState connection = state.get(CONNECTION);
|
||||
|
||||
if (connection == ConnectionState.LEFT)
|
||||
return facing.rotateYCCW();
|
||||
if (connection == ConnectionState.RIGHT)
|
||||
return facing.rotateY();
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void setConnection(World world, BlockPos pos, BlockState state, Direction direction) {
|
||||
Direction facing = state.get(HORIZONTAL_FACING);
|
||||
ConnectionState connection = ConnectionState.NONE;
|
||||
|
||||
if (direction == facing.rotateY())
|
||||
connection = ConnectionState.RIGHT;
|
||||
if (direction == facing.rotateYCCW())
|
||||
connection = ConnectionState.LEFT;
|
||||
|
||||
world.setBlockState(pos, state.with(CONNECTION, connection), 18);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) {
|
||||
return face == state.get(HORIZONTAL_FACING).getOpposite();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Axis getRotationAxis(BlockState state) {
|
||||
return state.get(HORIZONTAL_FACING).getAxis();
|
||||
}
|
||||
|
||||
public enum ConnectionState implements IStringSerializable {
|
||||
NONE, LEFT, RIGHT;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return Lang.asId(name());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
package com.simibubi.create.modules.contraptions.components.flywheel;
|
||||
|
||||
import static com.simibubi.create.modules.contraptions.base.HorizontalKineticBlock.HORIZONTAL_FACING;
|
||||
|
||||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.SuperByteBuffer;
|
||||
import com.simibubi.create.modules.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.modules.contraptions.base.KineticTileEntityRenderer;
|
||||
import com.simibubi.create.modules.contraptions.components.flywheel.FlywheelBlock.ConnectionState;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.Direction.AxisDirection;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.Rotation;
|
||||
|
||||
public class FlywheelRenderer extends KineticTileEntityRenderer {
|
||||
|
||||
@Override
|
||||
public void renderFast(KineticTileEntity te, double x, double y, double z, float partialTicks, int destroyStage,
|
||||
BufferBuilder buffer) {
|
||||
super.renderFast(te, x, y, z, partialTicks, destroyStage, buffer);
|
||||
|
||||
BlockState blockState = te.getBlockState();
|
||||
FlywheelTileEntity wte = (FlywheelTileEntity) te;
|
||||
|
||||
SuperByteBuffer wheel = AllBlockPartials.FLYWHEEL.renderOnHorizontal(blockState.rotate(Rotation.CLOCKWISE_90));
|
||||
float speed = wte.visualSpeed.get(partialTicks) * 3 / 10f;
|
||||
float angle = wte.angle + speed * partialTicks;
|
||||
|
||||
if (FlywheelBlock.isConnected(blockState)) {
|
||||
Direction connection = FlywheelBlock.getConnection(blockState);
|
||||
int light = blockState.getPackedLightmapCoords(getWorld(), te.getPos().offset(connection));
|
||||
float rotation = connection.getAxis() == Axis.X ^ connection.getAxisDirection() == AxisDirection.NEGATIVE
|
||||
? -angle
|
||||
: angle;
|
||||
boolean flip = blockState.get(FlywheelBlock.CONNECTION) == ConnectionState.LEFT;
|
||||
|
||||
rotateToFacing(transformConnector(AllBlockPartials.FLYWHEEL_UPPER_ROTATING.renderOn(blockState), true, true,
|
||||
rotation, flip), connection).translate(x, y, z).light(light).renderInto(buffer);
|
||||
rotateToFacing(transformConnector(AllBlockPartials.FLYWHEEL_LOWER_ROTATING.renderOn(blockState), false,
|
||||
true, rotation, flip), connection).translate(x, y, z).light(light).renderInto(buffer);
|
||||
rotateToFacing(transformConnector(AllBlockPartials.FLYWHEEL_UPPER_SLIDING.renderOn(blockState), true, false,
|
||||
rotation, flip), connection).translate(x, y, z).light(light).renderInto(buffer);
|
||||
rotateToFacing(transformConnector(AllBlockPartials.FLYWHEEL_LOWER_SLIDING.renderOn(blockState), false,
|
||||
false, rotation, flip), connection).translate(x, y, z).light(light).renderInto(buffer);
|
||||
}
|
||||
|
||||
kineticRotationTransform(wheel, te, blockState.get(HORIZONTAL_FACING).getAxis(), AngleHelper.rad(angle),
|
||||
getWorld());
|
||||
wheel.translate(x, y, z).renderInto(buffer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SuperByteBuffer getRotatedModel(KineticTileEntity te) {
|
||||
return AllBlockPartials.SHAFT_HALF.renderOnDirectional(te.getBlockState(),
|
||||
te.getBlockState().get(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 = MathHelper.sin(radians) * shift + offset;
|
||||
|
||||
float maxAngle = upper ? -5 : -15;
|
||||
float minAngle = upper ? -45 : 5;
|
||||
float barAngle = 0;
|
||||
|
||||
if (rotating)
|
||||
barAngle = MathHelper.lerp((MathHelper.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;
|
||||
|
||||
if (flip && !upper)
|
||||
buffer.translate(9 / 16f, 0, 0);
|
||||
|
||||
buffer.translate(-pivotX, -pivotY, -pivotZ);
|
||||
if (rotating)
|
||||
buffer.rotate(Axis.X, AngleHelper.rad(barAngle));
|
||||
buffer.translate(pivotX, pivotY, pivotZ + shifting);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
protected SuperByteBuffer rotateToFacing(SuperByteBuffer buffer, Direction facing) {
|
||||
buffer.rotateCentered(Axis.Y, AngleHelper.rad(AngleHelper.horizontalAngle(facing)));
|
||||
return buffer;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,109 @@
|
|||
package com.simibubi.create.modules.contraptions.components.flywheel;
|
||||
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue;
|
||||
import com.simibubi.create.modules.contraptions.base.GeneratingKineticTileEntity;
|
||||
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
|
||||
public class FlywheelTileEntity extends GeneratingKineticTileEntity {
|
||||
|
||||
private float generatedCapacity;
|
||||
private float generatedSpeed;
|
||||
private int stoppingCooldown;
|
||||
|
||||
// Client
|
||||
InterpolatedChasingValue visualSpeed = new InterpolatedChasingValue();
|
||||
float angle;
|
||||
|
||||
public FlywheelTileEntity() {
|
||||
super(AllTileEntities.FLYWHEEL.type);
|
||||
}
|
||||
|
||||
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 generatedSpeed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getAddedStressCapacity() {
|
||||
return generatedCapacity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
super.initialize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
return super.getRenderBoundingBox().grow(2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundNBT writeToClient(CompoundNBT compound) {
|
||||
return super.writeToClient(compound);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readClientUpdate(CompoundNBT tag) {
|
||||
super.readClientUpdate(tag);
|
||||
visualSpeed.withSpeed(1 / 32f).target(generatedSpeed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundNBT write(CompoundNBT compound) {
|
||||
compound.putFloat("GeneratedSpeed", generatedSpeed);
|
||||
compound.putFloat("GeneratedCapacity", generatedCapacity);
|
||||
compound.putInt("Cooldown", stoppingCooldown);
|
||||
return super.write(compound);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(CompoundNBT compound) {
|
||||
generatedSpeed = compound.getFloat("GeneratedSpeed");
|
||||
generatedCapacity = compound.getFloat("GeneratedCapacity");
|
||||
stoppingCooldown = compound.getInt("Cooldown");
|
||||
super.read(compound);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
super.tick();
|
||||
|
||||
if (world.isRemote) {
|
||||
visualSpeed.target(generatedSpeed);
|
||||
visualSpeed.tick();
|
||||
angle += visualSpeed.value * 3 / 10f;
|
||||
angle %= 360;
|
||||
return;
|
||||
}
|
||||
if (stoppingCooldown == 0)
|
||||
return;
|
||||
|
||||
stoppingCooldown--;
|
||||
if (stoppingCooldown == 0) {
|
||||
generatedCapacity = 0;
|
||||
generatedSpeed = 0;
|
||||
updateGeneratedRotation();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
package com.simibubi.create.modules.contraptions.components.flywheel.engine;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.simibubi.create.AllBlockPartials;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.HorizontalBlock;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.state.StateContainer.Builder;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.IWorldReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
public abstract class EngineBlock extends HorizontalBlock {
|
||||
|
||||
protected EngineBlock(Properties builder) {
|
||||
super(builder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) {
|
||||
return isValidPosition(state, worldIn, pos, state.get(HORIZONTAL_FACING));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity(BlockState state) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public abstract TileEntity createTileEntity(BlockState state, IBlockReader world);
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
||||
Direction facing = context.getFace();
|
||||
return getDefaultState().with(HORIZONTAL_FACING,
|
||||
facing.getAxis().isVertical() ? context.getPlacementHorizontalFacing().getOpposite() : facing);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void fillStateContainer(Builder<Block, BlockState> builder) {
|
||||
super.fillStateContainer(builder.add(HORIZONTAL_FACING));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos,
|
||||
boolean isMoving) {
|
||||
if (worldIn.isRemote)
|
||||
return;
|
||||
|
||||
if (fromPos.equals(getBaseBlockPos(state, pos))) {
|
||||
if (!isValidPosition(state, worldIn, pos)) {
|
||||
worldIn.destroyBlock(pos, true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isValidPosition(BlockState state, IBlockReader world, BlockPos pos, Direction facing) {
|
||||
BlockPos baseBlockPos = getBaseBlockPos(state, pos);
|
||||
if (!isValidBaseBlock(world.getBlockState(baseBlockPos), world, pos))
|
||||
return false;
|
||||
for (Direction otherFacing : Direction.values()) {
|
||||
if (otherFacing.getAxis().isVertical())
|
||||
continue;
|
||||
if (otherFacing == facing)
|
||||
continue;
|
||||
BlockPos otherPos = baseBlockPos.offset(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.offset(state.get(HORIZONTAL_FACING).getOpposite());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public abstract AllBlockPartials getFrameModel();
|
||||
|
||||
protected abstract boolean isValidBaseBlock(BlockState baseBlock, IBlockReader world, BlockPos pos);
|
||||
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package com.simibubi.create.modules.contraptions.components.flywheel.engine;
|
||||
|
||||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.foundation.block.SafeTileEntityRendererFast;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
|
||||
public class EngineRenderer<T extends EngineTileEntity> extends SafeTileEntityRendererFast<T> {
|
||||
|
||||
@Override
|
||||
protected void renderFast(T te, double x, double y, double z, float partialTicks, int destroyStage,
|
||||
BufferBuilder buffer) {
|
||||
Block block = te.getBlockState().getBlock();
|
||||
if (block instanceof EngineBlock) {
|
||||
EngineBlock engineBlock = (EngineBlock) block;
|
||||
AllBlockPartials frame = engineBlock.getFrameModel();
|
||||
if (frame != null) {
|
||||
Direction facing = te.getBlockState().get(EngineBlock.HORIZONTAL_FACING);
|
||||
float angle = AngleHelper.rad(AngleHelper.horizontalAngle(facing));
|
||||
frame.renderOn(te.getBlockState()).translate(0, 0, -1).rotateCentered(Axis.Y, angle).translate(x, y, z)
|
||||
.light(te.getBlockState().getPackedLightmapCoords(getWorld(), te.getPos())).renderInto(buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,99 @@
|
|||
package com.simibubi.create.modules.contraptions.components.flywheel.engine;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.foundation.behaviour.base.SmartTileEntity;
|
||||
import com.simibubi.create.foundation.behaviour.base.TileEntityBehaviour;
|
||||
import com.simibubi.create.modules.contraptions.components.flywheel.FlywheelBlock;
|
||||
import com.simibubi.create.modules.contraptions.components.flywheel.FlywheelTileEntity;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
public class EngineTileEntity extends SmartTileEntity {
|
||||
|
||||
public float appliedCapacity;
|
||||
public float appliedSpeed;
|
||||
protected FlywheelTileEntity poweredWheel;
|
||||
|
||||
public EngineTileEntity(TileEntityType<?> tileEntityTypeIn) {
|
||||
super(tileEntityTypeIn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<TileEntityBehaviour> behaviours) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasFastRenderer() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
return super.getRenderBoundingBox().grow(1.5f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
super.initialize();
|
||||
lazyTick();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lazyTick() {
|
||||
super.lazyTick();
|
||||
if (world.isRemote)
|
||||
return;
|
||||
if (poweredWheel != null && poweredWheel.isRemoved())
|
||||
poweredWheel = null;
|
||||
|
||||
if (poweredWheel == null)
|
||||
attachWheel();
|
||||
}
|
||||
|
||||
public void attachWheel() {
|
||||
Direction engineFacing = getBlockState().get(EngineBlock.HORIZONTAL_FACING);
|
||||
BlockPos wheelPos = pos.offset(engineFacing, 2);
|
||||
BlockState wheelState = world.getBlockState(wheelPos);
|
||||
if (!AllBlocks.FLYWHEEL.typeOf(wheelState))
|
||||
return;
|
||||
Direction wheelFacing = wheelState.get(FlywheelBlock.HORIZONTAL_FACING);
|
||||
if (wheelFacing.getAxis() != engineFacing.rotateY().getAxis())
|
||||
return;
|
||||
if (FlywheelBlock.isConnected(wheelState)
|
||||
&& FlywheelBlock.getConnection(wheelState) != engineFacing.getOpposite())
|
||||
return;
|
||||
TileEntity te = world.getTileEntity(wheelPos);
|
||||
if (te instanceof FlywheelTileEntity) {
|
||||
if (!FlywheelBlock.isConnected(wheelState))
|
||||
FlywheelBlock.setConnection(world, te.getPos(), te.getBlockState(), engineFacing.getOpposite());
|
||||
poweredWheel = (FlywheelTileEntity) te;
|
||||
refreshWheelSpeed();
|
||||
}
|
||||
}
|
||||
|
||||
public void detachWheel() {
|
||||
poweredWheel.setRotation(0, 0);
|
||||
FlywheelBlock.setConnection(world, poweredWheel.getPos(), poweredWheel.getBlockState(), null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
if (poweredWheel != null)
|
||||
detachWheel();
|
||||
super.remove();
|
||||
}
|
||||
|
||||
protected void refreshWheelSpeed() {
|
||||
if (poweredWheel == null)
|
||||
return;
|
||||
poweredWheel.setRotation(appliedSpeed, appliedCapacity);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
package com.simibubi.create.modules.contraptions.components.flywheel.engine;
|
||||
|
||||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.foundation.block.IWithTileEntity;
|
||||
import com.simibubi.create.foundation.utility.AllShapes;
|
||||
|
||||
import net.minecraft.block.AbstractFurnaceBlock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.shapes.ISelectionContext;
|
||||
import net.minecraft.util.math.shapes.VoxelShape;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.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 IWithTileEntity<FurnaceEngineTileEntity> {
|
||||
|
||||
public FurnaceEngineBlock() {
|
||||
super(Properties.from(Blocks.GOLD_BLOCK));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isValidBaseBlock(BlockState baseBlock, IBlockReader world, BlockPos pos) {
|
||||
return baseBlock.getBlock() instanceof AbstractFurnaceBlock;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
|
||||
return AllShapes.FURNACE_ENGINE.get(state.get(HORIZONTAL_FACING));
|
||||
}
|
||||
|
||||
@Override
|
||||
public AllBlockPartials getFrameModel() {
|
||||
return AllBlockPartials.FURNACE_GENERATOR_FRAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return new FurnaceEngineTileEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos,
|
||||
boolean isMoving) {
|
||||
super.neighborChanged(state, worldIn, pos, blockIn, fromPos, isMoving);
|
||||
if (worldIn.isRemote)
|
||||
return;
|
||||
|
||||
if (fromPos.equals(getBaseBlockPos(state, pos)))
|
||||
if (isValidPosition(state, worldIn, pos))
|
||||
withTileEntityDo(worldIn, pos, FurnaceEngineTileEntity::updateFurnace);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void usingFurnaceEngineOnFurnacePreventsGUI(RightClickBlock event) {
|
||||
ItemStack item = event.getItemStack();
|
||||
if (!(item.getItem() instanceof BlockItem))
|
||||
return;
|
||||
BlockItem blockItem = (BlockItem) item.getItem();
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package com.simibubi.create.modules.contraptions.components.flywheel.engine;
|
||||
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
|
||||
import net.minecraft.block.AbstractFurnaceBlock;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
|
||||
public class FurnaceEngineTileEntity extends EngineTileEntity {
|
||||
|
||||
public FurnaceEngineTileEntity() {
|
||||
super(AllTileEntities.FURNACE_ENGINE.type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lazyTick() {
|
||||
updateFurnace();
|
||||
super.lazyTick();
|
||||
}
|
||||
|
||||
public void updateFurnace() {
|
||||
BlockState state = world.getBlockState(EngineBlock.getBaseBlockPos(getBlockState(), pos));
|
||||
if (!(state.getBlock() instanceof AbstractFurnaceBlock))
|
||||
return;
|
||||
|
||||
float modifier = state.getBlock() == Blocks.BLAST_FURNACE ? 2 : 1;
|
||||
boolean active = state.has(AbstractFurnaceBlock.LIT) && state.get(AbstractFurnaceBlock.LIT);
|
||||
float speed = active ? 16 * modifier : 0;
|
||||
float capacity = active ? 512 : 0;
|
||||
|
||||
appliedCapacity = capacity;
|
||||
appliedSpeed = speed;
|
||||
refreshWheelSpeed();
|
||||
}
|
||||
|
||||
}
|
|
@ -115,8 +115,8 @@ public class GaugeInformationRenderer {
|
|||
tooltip.add(spacing + GRAY + _stressImpact);
|
||||
|
||||
String addedStress = AQUA + "" + format(stressApplied) + _stressUnit + " " + DARK_GRAY + _atCurrentSpeed;
|
||||
String addedStressAtBase = GRAY + "" + format(stressApplied * te.getSpeed()) + _stressUnit + " " + DARK_GRAY
|
||||
+ _baseValue;
|
||||
String addedStressAtBase = GRAY + "" + format(stressApplied * Math.abs(te.getSpeed())) + _stressUnit + " "
|
||||
+ DARK_GRAY + _baseValue;
|
||||
tooltip.add(spacing + " " + addedStress);
|
||||
tooltip.add(spacing + " " + addedStressAtBase);
|
||||
}
|
||||
|
|
18
src/main/resources/assets/create/blockstates/flywheel.json
Normal file
18
src/main/resources/assets/create/blockstates/flywheel.json
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
},
|
||||
"variants": {
|
||||
"facing": {
|
||||
"north": { "y": 270 },
|
||||
"south": { "y": 90 },
|
||||
"east": { "y": 0 },
|
||||
"west": { "y": 180 }
|
||||
},
|
||||
"connection": {
|
||||
"none": { "model": "create:block/flywheel/casing_no_connection" },
|
||||
"left": { "model": "create:block/flywheel/casing_left" },
|
||||
"right": { "model": "create:block/flywheel/casing_right" }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "create:block/furnace_engine/body"
|
||||
},
|
||||
"variants": {
|
||||
"facing": {
|
||||
"north": { "y": 180 },
|
||||
"south": { "y": 0 },
|
||||
"west": { "y": 90 },
|
||||
"east": { "y": 270 }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -103,6 +103,8 @@
|
|||
"block.create.deployer": "Deployer",
|
||||
"block.create.basin": "Basin",
|
||||
"block.create.mechanical_crafter": "Mechanical Crafter",
|
||||
"block.create.flywheel": "Flywheel",
|
||||
"block.create.furnace_engine": "Furnace Engine",
|
||||
"block.create.speed_gauge": "Speedometer",
|
||||
"block.create.stress_gauge": "Stress Gauge",
|
||||
"block.create.cart_assembler": "Cart Assembler",
|
||||
|
|
|
@ -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
381
src/main/resources/assets/create/models/block/flywheel/item.json
Normal file
381
src/main/resources/assets/create/models/block/flywheel/item.json
Normal file
|
@ -0,0 +1,381 @@
|
|||
{
|
||||
"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": {
|
||||
"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": "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",
|
||||
"particle": "create:block/brass_block",
|
||||
"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"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1.5, 0, 0],
|
||||
"to": [5.5, 4, 9],
|
||||
"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": 90, "texture": "#1_1"},
|
||||
"down": {"uv": [2.5, 9, 7, 7], "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],
|
||||
"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, 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,110 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"5": "create:block/brass_casing",
|
||||
"particle": "create:block/steam_engine_wheel",
|
||||
"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": "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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:block/flywheel/item"
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:block/furnace_engine/item"
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 534 B |
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:flywheel"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:furnace_engine"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"type": "create:mechanical_crafting",
|
||||
"pattern": [
|
||||
" PPP ",
|
||||
"PSBSP",
|
||||
"PBCBP",
|
||||
"PSBSP",
|
||||
" PPP "
|
||||
],
|
||||
"key": {
|
||||
"P": {
|
||||
"item": "minecraft:polished_andesite"
|
||||
},
|
||||
"S": {
|
||||
"tag": "forge:rods/wooden"
|
||||
},
|
||||
"C": {
|
||||
"item": "create:large_cogwheel"
|
||||
},
|
||||
"B": {
|
||||
"item": "create:andesite_alloy"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:crushing_wheel",
|
||||
"count": 1
|
||||
},
|
||||
"conditions": [
|
||||
{
|
||||
"type": "create:module",
|
||||
"module": "contraptions"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"type": "create:mechanical_crafting",
|
||||
"pattern": [
|
||||
" PPP ",
|
||||
"PSBSP",
|
||||
"PBCBP",
|
||||
"PSBSP",
|
||||
" PPP "
|
||||
],
|
||||
"key": {
|
||||
"P": {
|
||||
"tag": "forge:plates/brass"
|
||||
},
|
||||
"S": {
|
||||
"tag": "forge:rods/wooden"
|
||||
},
|
||||
"C": {
|
||||
"item": "create:brass_casing"
|
||||
},
|
||||
"B": {
|
||||
"tag": "forge:ingots/brass"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:flywheel",
|
||||
"count": 1
|
||||
},
|
||||
"conditions": [
|
||||
{
|
||||
"type": "create:module",
|
||||
"module": "contraptions"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"type": "create:mechanical_crafting",
|
||||
"pattern": [
|
||||
"PPB",
|
||||
"DCA",
|
||||
"PPB"
|
||||
],
|
||||
"key": {
|
||||
"P": {
|
||||
"tag": "forge:plates/brass"
|
||||
},
|
||||
"D": {
|
||||
"tag": "forge:plates/copper"
|
||||
},
|
||||
"A": {
|
||||
"item": "minecraft:piston"
|
||||
},
|
||||
"C": {
|
||||
"item": "create:brass_casing"
|
||||
},
|
||||
"B": {
|
||||
"tag": "forge:ingots/brass"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:furnace_engine",
|
||||
"count": 1
|
||||
},
|
||||
"conditions": [
|
||||
{
|
||||
"type": "create:module",
|
||||
"module": "contraptions"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
"tag": "forge:plates/iron"
|
||||
},
|
||||
"N": {
|
||||
"tag": "forge:nuggets/copper"
|
||||
"tag": "forge:nuggets/gold"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
|
|
Loading…
Reference in a new issue