mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-24 14:06:42 +01:00
The Water Wheel
- Added the Water Wheel as the first legitimate source of rotational energy
This commit is contained in:
parent
b657c6e389
commit
911363c6a0
9 changed files with 691 additions and 0 deletions
|
@ -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()),
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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 }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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",
|
||||
|
|
450
src/main/resources/assets/create/models/block/water_wheel.json
Normal file
450
src/main/resources/assets/create/models/block/water_wheel.json
Normal 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 }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:block/water_wheel"
|
||||
}
|
BIN
src/main/resources/assets/create/textures/block/wheel.png
Normal file
BIN
src/main/resources/assets/create/textures/block/wheel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 720 B |
Loading…
Reference in a new issue