From 2903b7046c5757bcb3f382d7d54155001f736f71 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Fri, 24 Jan 2020 14:21:50 +0100 Subject: [PATCH] Turn it up - Fixed Turntable not working with armorstands - Fixed Turntables flinging players away from it - Fixed some z-Fighting in the water wheel model - Basin no longer accepts more than a full stack of an item in its input - Crushing entities now has a fortune modifier - Crushed entities will drop their loot below the wheels - Fixed Crushing wheel stack overflow when attaching one to an existing pair --- .../create/foundation/utility/AllShapes.java | 4 +- .../crusher/CrushingWheelBlock.java | 21 +- .../crusher/CrushingWheelControllerBlock.java | 13 + .../CrushingWheelControllerTileEntity.java | 21 +- .../crusher/CrushingWheelTileEntity.java | 34 + .../components/turntable/TurntableBlock.java | 29 +- .../turntable/TurntableHandler.java | 23 +- .../processing/BasinTileEntity.java | 11 + .../assets/create/models/block/turntable.json | 102 +- .../create/models/block/water_wheel.json | 896 +++++++++--------- 10 files changed, 612 insertions(+), 542 deletions(-) diff --git a/src/main/java/com/simibubi/create/foundation/utility/AllShapes.java b/src/main/java/com/simibubi/create/foundation/utility/AllShapes.java index 0433dd01d..0537cb350 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/AllShapes.java +++ b/src/main/java/com/simibubi/create/foundation/utility/AllShapes.java @@ -88,8 +88,8 @@ public class AllShapes { makeCuboidShape(4, 0, 4, 12, 16, 12), IBooleanFunction.ONLY_FIRST), TURNTABLE_SHAPE = VoxelShapes.or( - makeCuboidShape(1, 6, 1, 15, 8, 15), - makeCuboidShape(5, 0, 5, 11, 6, 11)), + makeCuboidShape(1, 4, 1, 15, 8, 15), + makeCuboidShape(5, 0, 5, 11, 4, 11)), CRATE_BLOCK_SHAPE = makeCuboidShape(1, 0, 1, 15, 14, 15), LOGISTICS_TABLE_BASE = TABLE_POLE_SHAPE, BELT_COLLISION_MASK = makeCuboidShape(0, 0, 0, 16, 19, 16), diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelBlock.java b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelBlock.java index 7a9b8d78d..80c3c026a 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelBlock.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelBlock.java @@ -18,7 +18,6 @@ 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.IWorld; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; @@ -44,13 +43,6 @@ public class CrushingWheelBlock extends RotatedPillarKineticBlock { return AllShapes.CRUSHING_WHEEL_COLLISION_SHAPE; } - @Override - public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, - BlockPos currentPos, BlockPos facingPos) { - updateControllers(stateIn, worldIn.getWorld(), currentPos, facing); - return stateIn; - } - @Override public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { @@ -66,12 +58,6 @@ public class CrushingWheelBlock extends RotatedPillarKineticBlock { } } - @Override - public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - for (Direction d : Direction.values()) - updateControllers(state, worldIn, pos, d); - } - public void updateControllers(BlockState state, World world, BlockPos pos, Direction facing) { if (facing.getAxis() == state.get(AXIS) || facing.getAxis().isVertical()) return; @@ -143,9 +129,12 @@ public class CrushingWheelBlock extends RotatedPillarKineticBlock { for (Direction direction : Direction.values()) { BlockPos neighbourPos = pos.offset(direction); BlockState neighbourState = worldIn.getBlockState(neighbourPos); + Axis stateAxis = state.get(AXIS); + if (AllBlocks.CRUSHING_WHEEL_CONTROLLER.typeOf(neighbourState) && direction.getAxis() != stateAxis) + return false; if (!AllBlocks.CRUSHING_WHEEL.typeOf(neighbourState)) continue; - if (neighbourState.get(AXIS) != state.get(AXIS) || state.get(AXIS) != direction.getAxis()) + if (neighbourState.get(AXIS) != stateAxis || stateAxis != direction.getAxis()) return false; } @@ -166,7 +155,7 @@ public class CrushingWheelBlock extends RotatedPillarKineticBlock { protected boolean hasStaticPart() { return false; } - + @Override public float getParticleTargetRadius() { return 1.125f; diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelControllerBlock.java b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelControllerBlock.java index 8d4c14593..7e47f0aad 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelControllerBlock.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelControllerBlock.java @@ -10,8 +10,11 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.BlockItemUseContext; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.NBTUtil; import net.minecraft.particles.ParticleTypes; import net.minecraft.state.BooleanProperty; import net.minecraft.state.StateContainer.Builder; @@ -80,6 +83,8 @@ public class CrushingWheelControllerBlock extends Block implements IHaveNoBlockI CrushingWheelControllerTileEntity te = (CrushingWheelControllerTileEntity) tileEntity; if (te.isOccupied()) return; + if ((entityIn instanceof PlayerEntity) && ((PlayerEntity) entityIn).isCreative()) + return; te.startCrushing(entityIn); } @@ -140,6 +145,14 @@ public class CrushingWheelControllerBlock extends Block implements IHaveNoBlockI Entity entity = context.getEntity(); if (entity != null) { + if (entity != null) { + CompoundNBT data = entity.getPersistentData(); + if (data.contains("BypassCrushingWheel")) { + if (pos.equals(NBTUtil.readBlockPos(data.getCompound("BypassCrushingWheel")))) + return VoxelShapes.empty(); + } + } + if (new AxisAlignedBB(pos).contains(entity.getPositionVec())) return VoxelShapes.empty(); diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelControllerTileEntity.java b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelControllerTileEntity.java index 8ce813989..1588f1fc3 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelControllerTileEntity.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelControllerTileEntity.java @@ -9,6 +9,7 @@ import com.simibubi.create.AllRecipes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.CreateConfig; import com.simibubi.create.foundation.block.SyncedTileEntity; +import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.modules.contraptions.processing.ProcessingInventory; import net.minecraft.entity.Entity; @@ -22,15 +23,11 @@ import net.minecraft.particles.IParticleData; import net.minecraft.particles.ItemParticleData; import net.minecraft.particles.ParticleTypes; import net.minecraft.tileentity.ITickableTileEntity; -import net.minecraft.util.DamageSource; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.Vec3d; public class CrushingWheelControllerTileEntity extends SyncedTileEntity implements ITickableTileEntity { - private static DamageSource damageSource = new DamageSource("create.crush").setDamageBypassesArmor() - .setDifficultyScaled(); - public Entity processingEntity; private UUID entityUUID; protected boolean searchForEntity; @@ -63,6 +60,7 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen return; float speed = crushingspeed / 2.5f; + Vec3d outPos = VecHelper.getCenterOf(pos); if (!hasEntity()) { @@ -80,7 +78,6 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen return; } - Vec3d outPos = new Vec3d(pos).add(.5, -.5, .5); if (inventory.remainingTime <= 0) { for (int slot = 0; slot < inventory.getSizeInventory(); slot++) { ItemStack stack = inventory.getStackInSlot(slot); @@ -88,6 +85,7 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen continue; ItemEntity entityIn = new ItemEntity(world, outPos.x, outPos.y, outPos.z, stack); entityIn.setMotion(Vec3d.ZERO); + entityIn.getPersistentData().put("BypassCrushingWheel", NBTUtil.writeBlockPos(pos)); world.addEntity(entityIn); } inventory.clear(); @@ -104,13 +102,22 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen return; } - processingEntity.setMotion(new Vec3d(0, Math.max(-speed / 4f, -.5f), 0)); + double xMotion = ((pos.getX() + .5f) - processingEntity.posX) / 2f; + double zMotion = ((pos.getZ() + .5f) - processingEntity.posZ) / 2f; + if (processingEntity.isSneaking()) + xMotion = zMotion = 0; + + processingEntity.setMotion(new Vec3d(xMotion, Math.max(-speed / 4f, -.5f), zMotion)); if (world.isRemote) return; if (!(processingEntity instanceof ItemEntity)) { - processingEntity.attackEntityFrom(damageSource, CreateConfig.parameters.crushingDamage.get()); + processingEntity.attackEntityFrom(CrushingWheelTileEntity.damageSource, + CreateConfig.parameters.crushingDamage.get()); + if (!processingEntity.isAlive()) { + processingEntity.setPosition(outPos.x, outPos.y - .75f, outPos.z); + } return; } diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelTileEntity.java b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelTileEntity.java index bebec9635..d2736fd58 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelTileEntity.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelTileEntity.java @@ -3,18 +3,32 @@ package com.simibubi.create.modules.contraptions.components.crusher; import com.simibubi.create.AllTileEntities; import com.simibubi.create.modules.contraptions.base.KineticTileEntity; +import net.minecraft.util.DamageSource; import net.minecraft.util.Direction; import net.minecraft.util.math.AxisAlignedBB; +import net.minecraftforge.event.entity.living.LivingDeathEvent; +import net.minecraftforge.event.entity.living.LootingLevelEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +@EventBusSubscriber public class CrushingWheelTileEntity extends KineticTileEntity { + public static DamageSource damageSource = new DamageSource("create.crush").setDamageBypassesArmor() + .setDifficultyScaled(); + public CrushingWheelTileEntity() { super(AllTileEntities.CRUSHING_WHEEL.type); + setLazyTickRate(20); } @Override public void onSpeedChanged(float prevSpeed) { super.onSpeedChanged(prevSpeed); + fixControllers(); + } + + public void fixControllers() { for (Direction d : Direction.values()) ((CrushingWheelBlock) getBlockState().getBlock()).updateControllers(getBlockState(), getWorld(), getPos(), d); @@ -25,4 +39,24 @@ public class CrushingWheelTileEntity extends KineticTileEntity { return new AxisAlignedBB(pos).grow(1); } + @Override + public void lazyTick() { + super.lazyTick(); + fixControllers(); + } + + @SubscribeEvent + public static void crushingIsFortunate(LootingLevelEvent event) { + if (event.getDamageSource() != damageSource) + return; + event.setLootingLevel(2); + } + + @SubscribeEvent + public static void crushingTeleportsEntities(LivingDeathEvent event) { + if (event.getSource() != damageSource) + return; + event.getEntity().posY = Math.floor(event.getEntity().posY) - .5f; + } + } diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/turntable/TurntableBlock.java b/src/main/java/com/simibubi/create/modules/contraptions/components/turntable/TurntableBlock.java index c2308f351..e03302a92 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/components/turntable/TurntableBlock.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/turntable/TurntableBlock.java @@ -14,6 +14,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; @@ -54,31 +55,29 @@ public class TurntableBlock extends KineticBlock { if (e.posY < pos.getY() + .5f) return; - Vec3d origin = VecHelper.getCenterOf(pos); - Vec3d offset = e.getPositionVec().subtract(origin); - - if (!world.isRemote && (e instanceof PlayerEntity)) - return; - - if (offset.length() > 1 / 4f) { - offset = VecHelper.rotate(offset, speed / 1f, Axis.Y); - Vec3d movement = origin.add(offset).subtract(e.getPositionVec()); - e.setMotion(e.getMotion().add(movement)); - e.velocityChanged = true; + if (world.isRemote && (e instanceof PlayerEntity)) { + if (worldIn.getBlockState(e.getPosition()) != state) { + Vec3d origin = VecHelper.getCenterOf(pos); + Vec3d offset = e.getPositionVec().subtract(origin); + offset = VecHelper.rotate(offset, MathHelper.clamp(speed, -16, 16) / 1f, Axis.Y); + Vec3d movement = origin.add(offset).subtract(e.getPositionVec()); + e.setMotion(e.getMotion().add(movement)); + e.velocityChanged = true; + } } - if (world.isRemote) - return; if ((e instanceof PlayerEntity)) return; + if (world.isRemote) + return; if ((e instanceof LivingEntity)) { float diff = e.getRotationYawHead() - speed; ((LivingEntity) e).setIdleTime(20); e.setRenderYawOffset(diff); e.setRotationYawHead(diff); - return; + e.onGround = false; + e.velocityChanged = true; } - e.rotationYaw -= speed; } diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/turntable/TurntableHandler.java b/src/main/java/com/simibubi/create/modules/contraptions/components/turntable/TurntableHandler.java index 175d11bd8..5f7f9e7f5 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/components/turntable/TurntableHandler.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/turntable/TurntableHandler.java @@ -1,28 +1,41 @@ package com.simibubi.create.modules.contraptions.components.turntable; import com.simibubi.create.AllBlocks; +import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.modules.contraptions.base.KineticTileEntity; import net.minecraft.client.Minecraft; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; public class TurntableHandler { public static void gameRenderTick() { Minecraft mc = Minecraft.getInstance(); + BlockPos pos = mc.player.getPosition(); - if (!AllBlocks.TURNTABLE.typeOf(mc.world.getBlockState(mc.player.getPosition()))) + if (!AllBlocks.TURNTABLE.typeOf(mc.world.getBlockState(pos))) return; - if (!mc.player.onGround) return; - if (mc.isGamePaused()) return; - KineticTileEntity te = (KineticTileEntity) mc.world.getTileEntity(mc.player.getPosition()); + KineticTileEntity te = (KineticTileEntity) mc.world.getTileEntity(pos); float speed = te.getSpeed() / 19; + + if (speed == 0) + return; + + Vec3d origin = VecHelper.getCenterOf(pos); + Vec3d offset = mc.player.getPositionVec().subtract(origin); + + if (offset.length() > 1/4f) + speed *= MathHelper.clamp((1/2f - offset.length()) * 2, 0, 1); + mc.player.rotationYaw = mc.player.prevRotationYaw - speed * mc.getRenderPartialTicks(); mc.player.renderYawOffset = mc.player.rotationYaw; } - + } diff --git a/src/main/java/com/simibubi/create/modules/contraptions/processing/BasinTileEntity.java b/src/main/java/com/simibubi/create/modules/contraptions/processing/BasinTileEntity.java index 5fdbf9476..50d7a5779 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/processing/BasinTileEntity.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/processing/BasinTileEntity.java @@ -12,6 +12,7 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; +import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemStackHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; import net.minecraftforge.items.wrapper.RecipeWrapper; @@ -39,6 +40,16 @@ public class BasinTileEntity extends SyncedTileEntity implements ITickableTileEn sendData(); markDirty(); }; + + public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + for (int i = 0; i < getSlots(); i++) { + ItemStack stackInSlot = getStackInSlot(i); + if (ItemHandlerHelper.canItemStacksStack(stack, stackInSlot)) + if (stackInSlot.getCount() == getStackLimit(i, stackInSlot)) + return stack; + } + return super.insertItem(slot, stack, simulate); + }; }; public static class BasinInventory extends CombinedInvWrapper { diff --git a/src/main/resources/assets/create/models/block/turntable.json b/src/main/resources/assets/create/models/block/turntable.json index b13e9ee73..b1f3a7239 100644 --- a/src/main/resources/assets/create/models/block/turntable.json +++ b/src/main/resources/assets/create/models/block/turntable.json @@ -1,52 +1,56 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", + "credit": "Made with Blockbench", "parent": "block/block", - "textures": { - "particle": "block/stripped_spruce_log", - "0": "create:block/axis", - "1": "block/stripped_spruce_log", - "2": "block/stripped_spruce_log_top", - "3": "create:block/axis_top" - }, - "elements": [ - { - "name": "Axis", - "from": [ 6.0, 0.0, 6.0 ], - "to": [ 10.0, 7.0, 10.0 ], - "shade": false, - "faces": { - "north": { "texture": "#0", "uv": [ 6.0, 0.0, 10.0, 7.0 ] }, - "east": { "texture": "#0", "uv": [ 6.0, 0.0, 10.0, 7.0 ] }, - "south": { "texture": "#0", "uv": [ 6.0, 0.0, 10.0, 7.0 ] }, - "west": { "texture": "#0", "uv": [ 6.0, 0.0, 10.0, 7.0 ] }, - "down": { "texture": "#3", "uv": [ 6.0, 6.0, 10.0, 10.0 ] } - } - }, - { - "name": "GearCaseInner", - "from": [ 1.0, 6.0, 1.0 ], - "to": [ 15.0, 8.0, 15.0 ], - "faces": { - "north": { "texture": "#1", "uv": [ 1.0, 0.0, 15.0, 2.0 ] }, - "east": { "texture": "#1", "uv": [ 1.0, 0.0, 15.0, 2.0 ] }, - "south": { "texture": "#1", "uv": [ 1.0, 0.0, 15.0, 2.0 ] }, - "west": { "texture": "#1", "uv": [ 1.0, 0.0, 15.0, 2.0 ] }, - "up": { "texture": "#2", "uv": [ 1.0, 1.0, 15.0, 15.0 ] }, - "down": { "texture": "#2", "uv": [ 1.0, 1.0, 15.0, 15.0 ] } - } - }, - { - "name": "GearCaseOuter", - "from": [ 4.0, 5.0, 4.0 ], - "to": [ 12.0, 6.0, 12.0 ], - "faces": { - "north": { "texture": "#1", "uv": [ 4.0, 0.0, 12.0, 1.0 ] }, - "east": { "texture": "#1", "uv": [ 4.0, 0.0, 12.0, 1.0 ] }, - "south": { "texture": "#1", "uv": [ 4.0, 0.0, 12.0, 1.0 ] }, - "west": { "texture": "#1", "uv": [ 4.0, 0.0, 12.0, 1.0 ] }, - "up": { "texture": "#2", "uv": [ 4.0, 4.0, 12.0, 12.0 ] }, - "down": { "texture": "#2", "uv": [ 4.0, 4.0, 12.0, 12.0 ] } - } - } - ] + "textures": { + "0": "create:block/axis", + "1": "block/stripped_spruce_log", + "2": "block/stripped_spruce_log_top", + "3": "create:block/axis_top", + "5": "create:block/gearbox_top", + "6": "create:block/encased_belt", + "particle": "block/stripped_spruce_log" + }, + "elements": [ + { + "name": "Axis", + "from": [6, 0, 6], + "to": [10, 7, 10], + "shade": false, + "faces": { + "north": {"uv": [6, 9, 10, 16], "texture": "#0"}, + "east": {"uv": [6, 9, 10, 16], "texture": "#0"}, + "south": {"uv": [6, 9, 10, 16], "texture": "#0"}, + "west": {"uv": [6, 9, 10, 16], "texture": "#0"}, + "down": {"uv": [6, 6, 10, 10], "texture": "#3"} + } + }, + { + "name": "GearCaseInner", + "from": [1, 5.9, 1], + "to": [15, 7.9, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.9, 8]}, + "faces": { + "north": {"uv": [1, 1, 15, 3], "texture": "#6"}, + "east": {"uv": [1, 1, 15, 3], "texture": "#6"}, + "south": {"uv": [1, 1, 15, 3], "texture": "#6"}, + "west": {"uv": [1, 1, 15, 3], "texture": "#6"}, + "up": {"uv": [1, 1, 15, 15], "texture": "#5"}, + "down": {"uv": [1, 1, 15, 15], "texture": "#2"} + } + }, + { + "name": "GearCaseInner", + "from": [1, 3.9, 1], + "to": [15, 5.9, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.9, 8]}, + "faces": { + "north": {"uv": [1, 3, 15, 5], "texture": "#6"}, + "east": {"uv": [1, 3, 15, 5], "texture": "#6"}, + "south": {"uv": [1, 3, 15, 5], "texture": "#6"}, + "west": {"uv": [1, 3, 15, 5], "texture": "#6"}, + "up": {"uv": [1, 1, 15, 15], "texture": "#2"}, + "down": {"uv": [1, 1, 15, 15], "texture": "#1"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/water_wheel.json b/src/main/resources/assets/create/models/block/water_wheel.json index ea0b0a5a1..5a9652043 100644 --- a/src/main/resources/assets/create/models/block/water_wheel.json +++ b/src/main/resources/assets/create/models/block/water_wheel.json @@ -1,450 +1,450 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "parent": "create:block/large_wheels", - "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 } - } - } - ] + "credit": "Made with Blockbench", + "parent": "create:block/large_wheels", + "textures": { + "axis": "create:block/axis", + "axis_top": "create:block/axis_top", + "wheel": "create:block/wheel", + "spruce_planks": "block/spruce_planks", + "particle": "block/stripped_spruce_log", + "stripped_spruce_log": "block/stripped_spruce_log", + "spruce_log": "block/spruce_log" + }, + "elements": [ + { + "name": "Axis", + "from": [6, 0, 6], + "to": [10, 16, 10], + "shade": false, + "faces": { + "north": {"uv": [6, 0, 10, 16], "texture": "#axis"}, + "east": {"uv": [6, 0, 10, 16], "texture": "#axis"}, + "south": {"uv": [6, 0, 10, 16], "texture": "#axis"}, + "west": {"uv": [6, 0, 10, 16], "texture": "#axis"}, + "up": {"uv": [6, 6, 10, 10], "rotation": 90, "texture": "#axis_top"}, + "down": {"uv": [6, 6, 10, 10], "rotation": 90, "texture": "#axis_top"} + } + }, + { + "name": "Segment1", + "from": [13, -1, -8], + "to": [14, 17, 0], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "rotation": 90, "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "rotation": 90, "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment1", + "from": [13, -1, -8], + "to": [14, 17, 0], + "faces": { + "north": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "rotation": 90, "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "rotation": 90, "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment1", + "from": [13, -1, -8], + "to": [14, 17, 0], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "rotation": 90, "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "rotation": 90, "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment1", + "from": [13, -1, -8], + "to": [14, 17, 0], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "rotation": 90, "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "rotation": 90, "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment3", + "from": [2, -1, 16], + "to": [3, 17, 24], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "rotation": 270, "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "rotation": 270, "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment3", + "from": [2, -1, 16], + "to": [3, 17, 24], + "faces": { + "north": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "rotation": 270, "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "rotation": 270, "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment3", + "from": [2, -1, 16], + "to": [3, 17, 24], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "rotation": 270, "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "rotation": 270, "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment3", + "from": [2, -1, 16], + "to": [3, 17, 24], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "rotation": 270, "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "rotation": 270, "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment2", + "from": [-8, -1, 2], + "to": [0, 17, 3], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "rotation": 180, "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment2", + "from": [-8, -1, 2], + "to": [0, 17, 3], + "faces": { + "north": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "rotation": 180, "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment2", + "from": [-8, -1, 2], + "to": [0, 17, 3], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "rotation": 180, "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment2", + "from": [-8, -1, 2], + "to": [0, 17, 3], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "rotation": 180, "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment4", + "from": [16, -1, 13], + "to": [24, 17, 14], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "rotation": 180, "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment4", + "from": [16, -1, 13], + "to": [24, 17, 14], + "faces": { + "north": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "rotation": 180, "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment4", + "from": [16, -1, 13], + "to": [24, 17, 14], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "rotation": 180, "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "texture": "#stripped_spruce_log"} + } + }, + { + "name": "Segment4", + "from": [16, -1, 13], + "to": [24, 17, 14], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "east": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "south": {"uv": [0, 0, 8, 16], "texture": "#stripped_spruce_log"}, + "west": {"uv": [0, 0, 1, 16], "texture": "#stripped_spruce_log"}, + "up": {"uv": [0, 0, 8, 1], "rotation": 180, "texture": "#stripped_spruce_log"}, + "down": {"uv": [0, 0, 8, 1], "texture": "#stripped_spruce_log"} + } + }, + { + "name": "SmallRim", + "from": [-2, -0.8, -2], + "to": [18, 16.8, 18], + "faces": { + "up": {"uv": [2, 2, 14, 14], "texture": "#wheel"}, + "down": {"uv": [2, 2, 14, 14], "texture": "#wheel"} + } + }, + { + "name": "LargeRim", + "from": [-5, -0.7, -5], + "to": [21, -0.6, 21], + "faces": { + "up": {"uv": [2, 2, 14, 14], "texture": "#wheel"}, + "down": {"uv": [2, 2, 14, 14], "texture": "#wheel"} + } + }, + { + "name": "LargeRim2", + "from": [-5, 16.6, -5], + "to": [21, 16.7, 21], + "faces": { + "up": {"uv": [2, 2, 14, 14], "texture": "#wheel"}, + "down": {"uv": [2, 2, 14, 14], "texture": "#wheel"} + } + }, + { + "name": "InnerSegment", + "from": [-2, -0.6, 4], + "to": [0, 16.6, 12], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "east": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#spruce_planks"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "west": {"uv": [0, 0, 16, 8], "rotation": 270, "texture": "#spruce_planks"}, + "up": {"uv": [0, 0, 2, 8], "texture": "#spruce_planks"}, + "down": {"uv": [0, 0, 2, 8], "texture": "#spruce_planks"} + } + }, + { + "name": "InnerSegment", + "from": [-2, -0.6, 4], + "to": [0.1, 16.6, 12], + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "east": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#spruce_planks"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "west": {"uv": [0, 0, 16, 8], "rotation": 270, "texture": "#spruce_planks"}, + "up": {"uv": [0, 0, 2, 8], "texture": "#spruce_planks"}, + "down": {"uv": [0, 0, 2, 8], "texture": "#spruce_planks"} + } + }, + { + "name": "InnerSegment", + "from": [-2, -0.6, 4], + "to": [0, 16.6, 12], + "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "east": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#spruce_planks"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "west": {"uv": [0, 0, 16, 8], "rotation": 270, "texture": "#spruce_planks"}, + "up": {"uv": [0, 0, 2, 8], "texture": "#spruce_planks"}, + "down": {"uv": [0, 0, 2, 8], "texture": "#spruce_planks"} + } + }, + { + "name": "InnerSegment", + "from": [15.9, -0.6, 4], + "to": [18, 16.6, 12], + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "east": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#spruce_planks"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "west": {"uv": [0, 0, 16, 8], "rotation": 270, "texture": "#spruce_planks"}, + "up": {"uv": [0, 0, 2, 8], "texture": "#spruce_planks"}, + "down": {"uv": [0, 0, 2, 8], "texture": "#spruce_planks"} + } + }, + { + "name": "InnerSegment", + "from": [16, -0.6, 4], + "to": [18, 16.6, 12], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "east": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#spruce_planks"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "west": {"uv": [0, 0, 16, 8], "rotation": 270, "texture": "#spruce_planks"}, + "up": {"uv": [0, 0, 2, 8], "texture": "#spruce_planks"}, + "down": {"uv": [0, 0, 2, 8], "texture": "#spruce_planks"} + } + }, + { + "name": "InnerSegment", + "from": [16, -0.6, 4], + "to": [18, 16.6, 12], + "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "east": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#spruce_planks"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "west": {"uv": [0, 0, 16, 8], "rotation": 270, "texture": "#spruce_planks"}, + "up": {"uv": [0, 0, 2, 8], "texture": "#spruce_planks"}, + "down": {"uv": [0, 0, 2, 8], "texture": "#spruce_planks"} + } + }, + { + "name": "InnerSegment", + "from": [4, -0.6, -2], + "to": [12, 16.6, 0.1], + "faces": { + "north": {"uv": [0, 0, 16, 8], "rotation": 270, "texture": "#spruce_planks"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "south": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#spruce_planks"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "up": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#spruce_planks"}, + "down": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#spruce_planks"} + } + }, + { + "name": "InnerSegment", + "from": [4, -0.6, 15.9], + "to": [12, 16.6, 18], + "faces": { + "north": {"uv": [0, 0, 16, 8], "rotation": 270, "texture": "#spruce_planks"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "south": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#spruce_planks"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#spruce_planks"}, + "up": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#spruce_planks"}, + "down": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#spruce_planks"} + } + }, + { + "name": "AxisCoat", + "from": [5, 1, 5], + "to": [11, 15, 11], + "shade": false, + "faces": { + "north": {"uv": [5, 2, 11, 16], "texture": "#spruce_log"}, + "east": {"uv": [5, 2, 11, 16], "texture": "#spruce_log"}, + "south": {"uv": [5, 2, 11, 16], "texture": "#spruce_log"}, + "west": {"uv": [5, 2, 11, 16], "texture": "#spruce_log"}, + "up": {"uv": [5, 5, 11, 11], "rotation": 90, "texture": "#spruce_log"}, + "down": {"uv": [5, 5, 11, 11], "rotation": 90, "texture": "#spruce_log"} + } + }, + { + "name": "Connector", + "from": [6.5, 2, -1], + "to": [9.5, 14, 17], + "shade": false, + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [0, 2, 16, 14], "texture": "#spruce_log"}, + "west": {"uv": [0, 2, 16, 14], "texture": "#spruce_log"}, + "up": {"uv": [3, 0, 6, 16], "texture": "#spruce_log"}, + "down": {"uv": [6, 0, 9, 16], "texture": "#spruce_log"} + } + }, + { + "name": "Connector", + "from": [6.5, 2.1, -1], + "to": [9.5, 13.9, 17], + "shade": false, + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [0, 2, 16, 14], "texture": "#spruce_log"}, + "west": {"uv": [0, 2, 16, 14], "texture": "#spruce_log"}, + "up": {"uv": [9, 0, 12, 16], "texture": "#spruce_log"}, + "down": {"uv": [2, 0, 5, 16], "texture": "#spruce_log"} + } + }, + { + "name": "Connector", + "from": [-1, 2.1, 6.5], + "to": [17, 13.9, 9.5], + "shade": false, + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 2, 16, 14], "texture": "#spruce_log"}, + "south": {"uv": [0, 2, 16, 14], "texture": "#spruce_log"}, + "up": {"uv": [4, 0, 7, 16], "rotation": 90, "texture": "#spruce_log"}, + "down": {"uv": [8, 0, 11, 16], "rotation": 90, "texture": "#spruce_log"} + } + }, + { + "name": "Connector", + "from": [-1, 2, 6.5], + "to": [17, 14, 9.5], + "shade": false, + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 2, 16, 14], "texture": "#spruce_log"}, + "south": {"uv": [0, 2, 16, 14], "texture": "#spruce_log"}, + "up": {"uv": [9, 0, 12, 16], "rotation": 90, "texture": "#spruce_log"}, + "down": {"uv": [2, 0, 5, 16], "rotation": 90, "texture": "#spruce_log"} + } + } + ] } \ No newline at end of file