The Water Wheel

- Added the Water Wheel as the first legitimate source of rotational energy
This commit is contained in:
simibubi 2019-08-20 11:37:32 +02:00
parent b657c6e389
commit 911363c6a0
9 changed files with 691 additions and 0 deletions

View file

@ -5,6 +5,7 @@ import com.simibubi.create.foundation.block.RenderUtilityAxisBlock;
import com.simibubi.create.foundation.block.RenderUtilityBlock;
import com.simibubi.create.modules.contraptions.base.HalfAxisBlock;
import com.simibubi.create.modules.contraptions.generators.MotorBlock;
import com.simibubi.create.modules.contraptions.generators.WaterWheelBlock;
import com.simibubi.create.modules.contraptions.receivers.CrushingWheelBlock;
import com.simibubi.create.modules.contraptions.receivers.DrillBlock;
import com.simibubi.create.modules.contraptions.receivers.HarvesterBlock;
@ -60,6 +61,7 @@ public enum AllBlocks {
BELT_ANIMATION(new RenderUtilityBlock()),
MOTOR(new MotorBlock()),
WATER_WHEEL(new WaterWheelBlock()),
TURNTABLE(new TurntableBlock()),
HALF_AXIS(new HalfAxisBlock()),

View file

@ -5,6 +5,7 @@ import java.util.function.Supplier;
import com.simibubi.create.modules.contraptions.base.KineticTileEntityRenderer;
import com.simibubi.create.modules.contraptions.generators.MotorTileEntity;
import com.simibubi.create.modules.contraptions.generators.MotorTileEntityRenderer;
import com.simibubi.create.modules.contraptions.generators.WaterWheelTileEntity;
import com.simibubi.create.modules.contraptions.receivers.CrushingWheelTileEntity;
import com.simibubi.create.modules.contraptions.receivers.DrillTileEntity;
import com.simibubi.create.modules.contraptions.receivers.TurntableTileEntity;
@ -52,6 +53,7 @@ public enum AllTileEntities {
MECHANICAL_PISTON(MechanicalPistonTileEntity::new, AllBlocks.MECHANICAL_PISTON, AllBlocks.STICKY_MECHANICAL_PISTON),
DRILL(DrillTileEntity::new, AllBlocks.DRILL),
CRUSHING_WHEEL(CrushingWheelTileEntity::new, AllBlocks.CRUSHING_WHEEL),
WATER_WHEEL(WaterWheelTileEntity::new, AllBlocks.WATER_WHEEL),
;
@ -92,6 +94,7 @@ public enum AllTileEntities {
bind(MechanicalPistonTileEntity.class, new MechanicalPistonTileEntityRenderer());
bind(DrillTileEntity.class, new KineticTileEntityRenderer());
bind(CrushingWheelTileEntity.class, new KineticTileEntityRenderer());
bind(WaterWheelTileEntity.class, new KineticTileEntityRenderer());
}
@OnlyIn(Dist.CLIENT)

View file

@ -0,0 +1,142 @@
package com.simibubi.create.modules.contraptions.generators;
import static net.minecraft.util.Direction.DOWN;
import static net.minecraft.util.Direction.EAST;
import static net.minecraft.util.Direction.NORTH;
import static net.minecraft.util.Direction.SOUTH;
import static net.minecraft.util.Direction.UP;
import static net.minecraft.util.Direction.WEST;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.utility.VecHelper;
import com.simibubi.create.modules.contraptions.base.HorizontalKineticBlock;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.fluid.IFluidState;
import net.minecraft.item.BlockItemUseContext;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis;
import net.minecraft.util.Direction.AxisDirection;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.IWorld;
import net.minecraft.world.IWorldReader;
import net.minecraft.world.World;
public class WaterWheelBlock extends HorizontalKineticBlock {
public WaterWheelBlock() {
super(Properties.from(Blocks.STRIPPED_SPRUCE_WOOD));
}
@Override
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
return new WaterWheelTileEntity();
}
@Override
public BlockRenderLayer getRenderLayer() {
return BlockRenderLayer.CUTOUT;
}
@Override
protected boolean hasStaticPart() {
return false;
}
@Override
public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) {
for (Direction direction : Direction.values()) {
BlockPos neighbourPos = pos.offset(direction);
BlockState neighbourState = worldIn.getBlockState(neighbourPos);
if (!AllBlocks.WATER_WHEEL.typeOf(neighbourState))
continue;
if (neighbourState.get(HORIZONTAL_FACING).getAxis() != state.get(HORIZONTAL_FACING).getAxis()
|| state.get(HORIZONTAL_FACING).getAxis() != direction.getAxis())
return false;
}
return true;
}
@Override
public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn,
BlockPos currentPos, BlockPos facingPos) {
updateFlowAt(stateIn, worldIn.getWorld(), currentPos, facing);
updateWheelSpeed(worldIn, currentPos);
return stateIn;
}
@Override
public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) {
for (Direction d : Direction.values())
updateFlowAt(state, worldIn, pos, d);
updateWheelSpeed(worldIn, pos);
}
private void updateFlowAt(BlockState state, World world, BlockPos pos, Direction f) {
WaterWheelTileEntity te = (WaterWheelTileEntity) world.getTileEntity(pos);
if (te == null)
return;
if (f.getAxis() == state.get(HORIZONTAL_FACING).getAxis())
return;
IFluidState fluid = world.getFluidState(pos.offset(f));
Vec3d flowVec = fluid.getFlow(world, pos.offset(f));
Direction wf = state.get(HORIZONTAL_FACING);
double flow = 0;
flowVec = flowVec.scale(f.getAxisDirection().getOffset());
boolean clockwise = wf.getAxisDirection() == AxisDirection.POSITIVE;
if (wf.getAxis() == Axis.Z) {
if (f.getAxis() == Axis.Y)
flow = flowVec.x > 0 ^ !clockwise ? -flowVec.x * 2 : -flowVec.x;
if (f.getAxis() == Axis.X)
flow = flowVec.y < 0 ^ !clockwise ? flowVec.y * 2 : flowVec.y;
}
if (wf.getAxis() == Axis.X) {
if (f.getAxis() == Axis.Y)
flow = flowVec.z < 0 ^ !clockwise ? flowVec.z * 2 : flowVec.z;
if (f.getAxis() == Axis.Z)
flow = flowVec.y > 0 ^ !clockwise ? -flowVec.y * 2 : -flowVec.y;
}
te.setFlow(f, (int) (flow * 10));
}
private void updateWheelSpeed(IWorld world, BlockPos pos) {
WaterWheelTileEntity te = (WaterWheelTileEntity) world.getTileEntity(pos);
if (te == null)
return;
te.updateSpeed();
}
@Override
public BlockState getStateForPlacement(BlockItemUseContext context) {
Direction facing = context.getFace();
BlockState placedOn = context.getWorld().getBlockState(context.getPos().offset(facing.getOpposite()));
if (AllBlocks.WATER_WHEEL.typeOf(placedOn))
return getDefaultState().with(HORIZONTAL_FACING, placedOn.get(HORIZONTAL_FACING));
if (facing.getAxis().isHorizontal())
return getDefaultState().with(HORIZONTAL_FACING,
context.isPlacerSneaking() ? facing.getOpposite() : facing);
return super.getStateForPlacement(context);
}
@Override
public boolean isAxisTowards(World world, BlockPos pos, BlockState state, Direction face) {
return state.get(HORIZONTAL_FACING).getAxis() == face.getAxis();
}
@Override
public Axis getRotationAxis(BlockState state) {
return state.get(HORIZONTAL_FACING).getAxis();
}
}

View file

@ -0,0 +1,76 @@
package com.simibubi.create.modules.contraptions.generators;
import java.util.HashMap;
import java.util.Map;
import com.simibubi.create.AllTileEntities;
import com.simibubi.create.modules.contraptions.RotationPropagator;
import com.simibubi.create.modules.contraptions.base.KineticTileEntity;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.Direction;
public class WaterWheelTileEntity extends KineticTileEntity {
private Map<Direction, Integer> flows;
private boolean hasFlows;
public WaterWheelTileEntity() {
super(AllTileEntities.WATER_WHEEL.type);
flows = new HashMap<Direction, Integer>();
for (Direction d : Direction.values())
setFlow(d, 0);
}
@Override
public void read(CompoundNBT compound) {
super.read(compound);
if (compound.contains("Flows")) {
for (Direction d : Direction.values())
setFlow(d, compound.getCompound("Flows").getInt(d.getName()));
}
}
@Override
public CompoundNBT write(CompoundNBT compound) {
CompoundNBT flows = new CompoundNBT();
for (Direction d : Direction.values())
flows.putInt(d.getName(), this.flows.get(d));
compound.put("Flows", flows);
return super.write(compound);
}
public void setFlow(Direction direction, int speed) {
flows.put(direction, speed);
}
@Override
public void onLoad() {
super.onLoad();
// updateSpeed();
}
public void updateSpeed() {
float speed = 0;
for (Integer i : flows.values())
speed += i;
if (this.speed != speed) {
this.setSpeed(speed);
hasFlows = speed != 0;
notifyBlockUpdate();
RotationPropagator.handleRemoved(world, pos, this);
RotationPropagator.handleAdded(world, pos, this);
}
}
@Override
public boolean isSource() {
return hasFlows;
}
}

View file

@ -0,0 +1,14 @@
{
"forge_marker": 1,
"defaults": {
"model": "create:block/water_wheel"
},
"variants": {
"facing": {
"north": { "x": 90 },
"east": { "x": 90, "y": 90 },
"south": { "x": 90, "y": 180 },
"west": { "x": 90, "y": 270 }
}
}
}

View file

@ -24,6 +24,7 @@
"block.create.drill": "Mechanical Drill",
"block.create.harvester": "Mechanical Harvester",
"block.create.contact": "Redstone Contact",
"block.create.water_wheel": "Water Wheel",
"block.create.sticky_mechanical_piston": "Sticky Mechanical Piston",
"block.create.mechanical_piston": "Mechanical Piston",

View file

@ -0,0 +1,450 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)",
"parent": "block/cube",
"textures": {
"axis": "create:block/axis",
"axis_top": "create:block/axis_top",
"particle": "minecraft:block/stripped_spruce_log",
"wheel": "create:block/wheel",
"spruce_planks": "minecraft:block/spruce_planks",
"stripped_spruce_log": "minecraft:block/stripped_spruce_log",
"spruce_log": "minecraft:block/spruce_log"
},
"elements": [
{
"name": "Axis",
"from": [ 6, 0, 6 ],
"to": [ 10, 16, 10 ],
"shade": false,
"faces": {
"north": { "texture": "#axis", "uv": [ 6, 0, 10, 16 ] },
"east": { "texture": "#axis", "uv": [ 6, 0, 10, 16 ] },
"south": { "texture": "#axis", "uv": [ 6, 0, 10, 16 ] },
"west": { "texture": "#axis", "uv": [ 6, 0, 10, 16 ] },
"up": { "texture": "#axis_top", "uv": [ 6, 6, 10, 10 ], "rotation": 90 },
"down": { "texture": "#axis_top", "uv": [ 6, 6, 10, 10 ], "rotation": 90 }
}
},
{
"name": "Segment1",
"from": [ 13, -1, -8 ],
"to": [ 14, 17, 0 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": -22.5 },
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 90 },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 90 }
}
},
{
"name": "Segment1",
"from": [ 13, -1, -8 ],
"to": [ 14, 17, 0 ],
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 90 },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 90 }
}
},
{
"name": "Segment1",
"from": [ 13, -1, -8 ],
"to": [ 14, 17, 0 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 22.5 },
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 90 },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 90 }
}
},
{
"name": "Segment1",
"from": [ 13, -1, -8 ],
"to": [ 14, 17, 0 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45.0 },
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 90 },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 90 }
}
},
{
"name": "Segment3",
"from": [ 2, -1, 16 ],
"to": [ 3, 17, 24 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": -22.5 },
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 270 },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 270 }
}
},
{
"name": "Segment3",
"from": [ 2, -1, 16 ],
"to": [ 3, 17, 24 ],
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 270 },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 270 }
}
},
{
"name": "Segment3",
"from": [ 2, -1, 16 ],
"to": [ 3, 17, 24 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 22.5 },
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 270 },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 270 }
}
},
{
"name": "Segment3",
"from": [ 2, -1, 16 ],
"to": [ 3, 17, 24 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45.0 },
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 270 },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 270 }
}
},
{
"name": "Segment2",
"from": [ -8, -1, 2 ],
"to": [ 0, 17, 3 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": -22.5 },
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ] },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 180 }
}
},
{
"name": "Segment2",
"from": [ -8, -1, 2 ],
"to": [ 0, 17, 3 ],
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ] },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 180 }
}
},
{
"name": "Segment2",
"from": [ -8, -1, 2 ],
"to": [ 0, 17, 3 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 22.5 },
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ] },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 180 }
}
},
{
"name": "Segment2",
"from": [ -8, -1, 2 ],
"to": [ 0, 17, 3 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45.0 },
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ] },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 180 }
}
},
{
"name": "Segment4",
"from": [ 16, -1, 13 ],
"to": [ 24, 17, 14 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": -22.5 },
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 180 },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ] }
}
},
{
"name": "Segment4",
"from": [ 16, -1, 13 ],
"to": [ 24, 17, 14 ],
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 180 },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ] }
}
},
{
"name": "Segment4",
"from": [ 16, -1, 13 ],
"to": [ 24, 17, 14 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 22.5 },
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 180 },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ] }
}
},
{
"name": "Segment4",
"from": [ 16, -1, 13 ],
"to": [ 24, 17, 14 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45.0 },
"faces": {
"north": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"east": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"south": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 16 ] },
"west": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 1, 16 ] },
"up": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ], "rotation": 180 },
"down": { "texture": "#stripped_spruce_log", "uv": [ 0, 0, 8, 1 ] }
}
},
{
"name": "SmallRim",
"from": [ -2, -0.8, -2 ],
"to": [ 18, 16.8, 18 ],
"faces": {
"up": { "texture": "#wheel", "uv": [ 2, 2, 14, 14 ] },
"down": { "texture": "#wheel", "uv": [ 2, 2, 14, 14 ] }
}
},
{
"name": "LargeRim",
"from": [ -5, -0.7, -5 ],
"to": [ 21, -0.7, 21 ],
"faces": {
"up": { "texture": "#wheel", "uv": [ 2, 2, 14, 14 ] },
"down": { "texture": "#wheel", "uv": [ 2, 2, 14, 14 ] }
}
},
{
"name": "LargeRim2",
"from": [ -5, 16.7, -5 ],
"to": [ 21, 16.7, 21 ],
"faces": {
"up": { "texture": "#wheel", "uv": [ 2, 2, 14, 14 ] },
"down": { "texture": "#wheel", "uv": [ 2, 2, 14, 14 ] }
}
},
{
"name": "InnerSegment",
"from": [ -2, -0.6, 4 ],
"to": [ 0, 16.6, 12 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45.0 },
"faces": {
"north": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"east": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 90 },
"south": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"west": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 270 },
"up": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ] },
"down": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ] }
}
},
{
"name": "InnerSegment",
"from": [ -2, -0.6, 4 ],
"to": [ 0, 16.6, 12 ],
"faces": {
"north": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"east": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 90 },
"south": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"west": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 270 },
"up": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ] },
"down": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ] }
}
},
{
"name": "InnerSegment",
"from": [ -2, -0.6, 4 ],
"to": [ 0, 16.6, 12 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": -45.0 },
"faces": {
"north": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"east": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 90 },
"south": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"west": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 270 },
"up": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ] },
"down": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ] }
}
},
{
"name": "InnerSegment",
"from": [ 16, -0.6, 4 ],
"to": [ 18, 16.6, 12 ],
"faces": {
"north": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"east": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 90 },
"south": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"west": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 270 },
"up": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ] },
"down": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ] }
}
},
{
"name": "InnerSegment",
"from": [ 16, -0.6, 4 ],
"to": [ 18, 16.6, 12 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45.0 },
"faces": {
"north": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"east": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 90 },
"south": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"west": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 270 },
"up": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ] },
"down": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ] }
}
},
{
"name": "InnerSegment",
"from": [ 16, -0.6, 4 ],
"to": [ 18, 16.6, 12 ],
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": -45.0 },
"faces": {
"north": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"east": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 90 },
"south": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"west": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 270 },
"up": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ] },
"down": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ] }
}
},
{
"name": "InnerSegment",
"from": [ 4, -0.6, -2 ],
"to": [ 12, 16.6, 0 ],
"faces": {
"north": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 270 },
"east": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"south": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 90 },
"west": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"up": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ], "rotation": 90 },
"down": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ], "rotation": 90 }
}
},
{
"name": "InnerSegment",
"from": [ 4, -0.6, 16 ],
"to": [ 12, 16.6, 18 ],
"faces": {
"north": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 270 },
"east": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"south": { "texture": "#spruce_planks", "uv": [ 0, 0, 16, 8 ], "rotation": 90 },
"west": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 16 ] },
"up": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ], "rotation": 90 },
"down": { "texture": "#spruce_planks", "uv": [ 0, 0, 2, 8 ], "rotation": 90 }
}
},
{
"name": "AxisCoat",
"from": [ 5, 1, 5 ],
"to": [ 11, 15, 11 ],
"shade": false,
"faces": {
"north": { "texture": "#spruce_log", "uv": [ 5, 2, 11, 16 ] },
"east": { "texture": "#spruce_log", "uv": [ 5, 2, 11, 16 ] },
"south": { "texture": "#spruce_log", "uv": [ 5, 2, 11, 16 ] },
"west": { "texture": "#spruce_log", "uv": [ 5, 2, 11, 16 ] },
"up": { "texture": "#spruce_log", "uv": [ 5, 5, 11, 11 ], "rotation": 90 },
"down": { "texture": "#spruce_log", "uv": [ 5, 5, 11, 11 ], "rotation": 90 }
}
},
{
"name": "Connector",
"from": [ 6.5, 2, -1 ],
"to": [ 9.5, 14, 17 ],
"shade": false,
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 22.5 },
"faces": {
"east": { "texture": "#spruce_log", "uv": [ 0, 2, 16, 14 ] },
"west": { "texture": "#spruce_log", "uv": [ 0, 2, 16, 14 ] },
"up": { "texture": "#spruce_log", "uv": [ 3, 0, 6, 16 ] },
"down": { "texture": "#spruce_log", "uv": [ 6, 0, 9, 16 ] }
}
},
{
"name": "Connector",
"from": [ 6.5, 2, -1 ],
"to": [ 9.5, 14, 17 ],
"shade": false,
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": -22.5 },
"faces": {
"east": { "texture": "#spruce_log", "uv": [ 0, 2, 16, 14 ] },
"west": { "texture": "#spruce_log", "uv": [ 0, 2, 16, 14 ] },
"up": { "texture": "#spruce_log", "uv": [ 9, 0, 12, 16 ] },
"down": { "texture": "#spruce_log", "uv": [ 2, 0, 5, 16 ] }
}
},
{
"name": "Connector",
"from": [ -1, 2, 6.5 ],
"to": [ 17, 14, 9.5 ],
"shade": false,
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": -22.5 },
"faces": {
"north": { "texture": "#spruce_log", "uv": [ 0, 2, 16, 14 ] },
"south": { "texture": "#spruce_log", "uv": [ 0, 2, 16, 14 ] },
"up": { "texture": "#spruce_log", "uv": [ 4, 0, 7, 16 ], "rotation": 90 },
"down": { "texture": "#spruce_log", "uv": [ 8, 0, 11, 16 ], "rotation": 90 }
}
},
{
"name": "Connector",
"from": [ -1, 2, 6.5 ],
"to": [ 17, 14, 9.5 ],
"shade": false,
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 22.5 },
"faces": {
"north": { "texture": "#spruce_log", "uv": [ 0, 2, 16, 14 ] },
"south": { "texture": "#spruce_log", "uv": [ 0, 2, 16, 14 ] },
"up": { "texture": "#spruce_log", "uv": [ 9, 0, 12, 16 ], "rotation": 90 },
"down": { "texture": "#spruce_log", "uv": [ 2, 0, 5, 16 ], "rotation": 90 }
}
}
]
}

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 B