Dangly Flaps
- More progress on Crafter blocks - Belt tunnels now render dangling flaps reacting to bypassing items - Made Mechanical Press and Mixer full blocks
This commit is contained in:
parent
898b3f055e
commit
3a7d3f8562
34 changed files with 891 additions and 353 deletions
|
@ -5,6 +5,7 @@ import com.simibubi.create.foundation.block.IWithoutBlockItem;
|
|||
import com.simibubi.create.foundation.block.ProperStairsBlock;
|
||||
import com.simibubi.create.foundation.block.RenderUtilityAxisBlock;
|
||||
import com.simibubi.create.foundation.block.RenderUtilityBlock;
|
||||
import com.simibubi.create.foundation.block.RenderUtilityDirectionalBlock;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.modules.IModule;
|
||||
import com.simibubi.create.modules.contraptions.generators.MotorBlock;
|
||||
|
@ -125,7 +126,10 @@ public enum AllBlocks {
|
|||
MECHANICAL_MIXER_HEAD(new RenderUtilityBlock()),
|
||||
BASIN(new BasinBlock()),
|
||||
MECHANICAL_CRAFTER(new MechanicalCrafterBlock()),
|
||||
MECHANICAL_CRAFTER_LID(new MechanicalCrafterBlock.Lid()),
|
||||
MECHANICAL_CRAFTER_LID(new RenderUtilityDirectionalBlock()),
|
||||
MECHANICAL_CRAFTER_ARROW(new RenderUtilityDirectionalBlock()),
|
||||
MECHANICAL_CRAFTER_BELT_FRAME(new RenderUtilityDirectionalBlock()),
|
||||
MECHANICAL_CRAFTER_BELT(new RenderUtilityDirectionalBlock()),
|
||||
|
||||
MECHANICAL_PISTON(new MechanicalPistonBlock(false)),
|
||||
STICKY_MECHANICAL_PISTON(new MechanicalPistonBlock(true)),
|
||||
|
|
|
@ -30,6 +30,7 @@ import com.simibubi.create.modules.contraptions.receivers.constructs.MechanicalB
|
|||
import com.simibubi.create.modules.contraptions.receivers.constructs.MechanicalPistonTileEntity;
|
||||
import com.simibubi.create.modules.contraptions.receivers.constructs.MechanicalPistonTileEntityRenderer;
|
||||
import com.simibubi.create.modules.contraptions.receivers.crafter.MechanicalCrafterTileEntity;
|
||||
import com.simibubi.create.modules.contraptions.receivers.crafter.MechanicalCrafterTileEntityRenderer;
|
||||
import com.simibubi.create.modules.contraptions.relays.ClutchTileEntity;
|
||||
import com.simibubi.create.modules.contraptions.relays.EncasedShaftTileEntity;
|
||||
import com.simibubi.create.modules.contraptions.relays.EncasedShaftTileEntityRenderer;
|
||||
|
@ -102,10 +103,7 @@ public enum AllTileEntities {
|
|||
BELT_TUNNEL(BeltTunnelTileEntity::new, AllBlocks.BELT_TUNNEL),
|
||||
MECHANICAL_PISTON(MechanicalPistonTileEntity::new, AllBlocks.MECHANICAL_PISTON, AllBlocks.STICKY_MECHANICAL_PISTON),
|
||||
MECHANICAL_BEARING(MechanicalBearingTileEntity::new, AllBlocks.MECHANICAL_BEARING),
|
||||
CHASSIS(
|
||||
ChassisTileEntity::new,
|
||||
AllBlocks.ROTATION_CHASSIS,
|
||||
AllBlocks.TRANSLATION_CHASSIS,
|
||||
CHASSIS(ChassisTileEntity::new, AllBlocks.ROTATION_CHASSIS, AllBlocks.TRANSLATION_CHASSIS,
|
||||
AllBlocks.TRANSLATION_CHASSIS_SECONDARY),
|
||||
DRILL(DrillTileEntity::new, AllBlocks.DRILL),
|
||||
SAW(SawTileEntity::new, AllBlocks.SAW),
|
||||
|
@ -198,6 +196,7 @@ public enum AllTileEntities {
|
|||
bind(LogisticiansTableTileEntity.class, new LogisticiansTableTileEntityRenderer());
|
||||
bind(HarvesterTileEntity.class, new HarvesterTileEntityRenderer());
|
||||
bind(MechanicalMixerTileEntity.class, new MechanicalMixerTileEntityRenderer());
|
||||
bind(MechanicalCrafterTileEntity.class, new MechanicalCrafterTileEntityRenderer());
|
||||
bind(BasinTileEntity.class, new BasinTileEntityRenderer());
|
||||
}
|
||||
|
||||
|
|
|
@ -5,11 +5,10 @@ import java.util.function.Consumer;
|
|||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.IWorld;
|
||||
|
||||
public interface IWithTileEntity<T extends TileEntity> {
|
||||
|
||||
default void withTileEntityDo(IWorld world, BlockPos pos, Consumer<T> action) {
|
||||
default void withTileEntityDo(IBlockReader world, BlockPos pos, Consumer<T> action) {
|
||||
@SuppressWarnings("unchecked")
|
||||
T te = (T) world.getTileEntity(pos);
|
||||
if (te == null)
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
package com.simibubi.create.foundation.block;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
|
||||
public class RenderUtilityDirectionalBlock extends ProperDirectionalBlock implements IRenderUtilityBlock {
|
||||
|
||||
public RenderUtilityDirectionalBlock() {
|
||||
super(Properties.create(Material.AIR));
|
||||
}
|
||||
|
||||
}
|
|
@ -91,6 +91,9 @@ public class SuperByteBuffer {
|
|||
}
|
||||
|
||||
t.setIdentity();
|
||||
shouldShiftUV = false;
|
||||
shouldColor = false;
|
||||
shouldLight = false;
|
||||
return mutable;
|
||||
}
|
||||
|
||||
|
@ -141,6 +144,13 @@ public class SuperByteBuffer {
|
|||
return this;
|
||||
}
|
||||
|
||||
public SuperByteBuffer dontShiftUV() {
|
||||
shouldShiftUV = false;
|
||||
uShift = 0;
|
||||
vShift = 0;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SuperByteBuffer light(int packedLightCoords) {
|
||||
shouldLight = true;
|
||||
this.packedLightCoords = packedLightCoords;
|
||||
|
|
|
@ -37,7 +37,7 @@ import net.minecraft.world.World;
|
|||
public class MechanicalPressBlock extends HorizontalKineticBlock
|
||||
implements IWithTileEntity<MechanicalPressTileEntity>, IBeltAttachment {
|
||||
|
||||
public static VoxelShape SHAPE = makeCuboidShape(0, 2, 0, 16, 16, 16);
|
||||
public static VoxelShape SHAPE = makeCuboidShape(0, 0, 0, 16, 16, 16);
|
||||
|
||||
public MechanicalPressBlock() {
|
||||
super(Properties.from(Blocks.PISTON));
|
||||
|
|
|
@ -1,16 +1,13 @@
|
|||
package com.simibubi.create.modules.contraptions.receivers.crafter;
|
||||
|
||||
import com.simibubi.create.foundation.block.IWithTileEntity;
|
||||
import com.simibubi.create.foundation.block.RenderUtilityBlock;
|
||||
import com.simibubi.create.modules.contraptions.base.DirectionalKineticBlock;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.state.DirectionProperty;
|
||||
import net.minecraft.state.StateContainer.Builder;
|
||||
import net.minecraft.state.properties.BlockStateProperties;
|
||||
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.math.BlockPos;
|
||||
|
@ -20,17 +17,10 @@ import net.minecraft.world.World;
|
|||
public class MechanicalCrafterBlock extends DirectionalKineticBlock
|
||||
implements IWithTileEntity<MechanicalCrafterTileEntity> {
|
||||
|
||||
public static final DirectionProperty OUTPUT = BlockStateProperties.HORIZONTAL_FACING;
|
||||
|
||||
public MechanicalCrafterBlock() {
|
||||
super(Properties.from(Blocks.GOLD_BLOCK));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void fillStateContainer(Builder<Block, BlockState> builder) {
|
||||
super.fillStateContainer(builder.add(OUTPUT));
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return new MechanicalCrafterTileEntity();
|
||||
|
@ -50,12 +40,19 @@ public class MechanicalCrafterBlock extends DirectionalKineticBlock
|
|||
public Axis getRotationAxis(BlockState state) {
|
||||
return state.get(FACING).getAxis();
|
||||
}
|
||||
|
||||
public static class Lid extends RenderUtilityBlock {
|
||||
@Override
|
||||
protected void fillStateContainer(Builder<Block, BlockState> builder) {
|
||||
super.fillStateContainer(builder.add(BlockStateProperties.FACING));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
||||
BlockPos placedOnPos = context.getPos().offset(context.getFace().getOpposite());
|
||||
BlockState blockState = context.getWorld().getBlockState(placedOnPos);
|
||||
if ((blockState.getBlock() == this) && !context.isPlacerSneaking())
|
||||
return getDefaultState().with(FACING, blockState.get(FACING));
|
||||
return super.getStateForPlacement(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockRenderLayer getRenderLayer() {
|
||||
return BlockRenderLayer.CUTOUT_MIPPED;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -8,5 +8,10 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity {
|
|||
public MechanicalCrafterTileEntity() {
|
||||
super(AllTileEntities.MECHANICAL_CRAFTER.type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasFastRenderer() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ import net.minecraft.nbt.CompoundNBT;
|
|||
import net.minecraft.nbt.ListNBT;
|
||||
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;
|
||||
|
@ -139,6 +140,16 @@ public class BeltInventory {
|
|||
}
|
||||
}
|
||||
|
||||
// Client: Belt tunnel flaps
|
||||
if (onClient) {
|
||||
int seg1 = (int) current.beltPosition;
|
||||
int seg2 = (int) (current.beltPosition + limitedMovement);
|
||||
if (seg1 != seg2) {
|
||||
flapTunnel(seg1, belt.getMovementFacing(), false);
|
||||
flapTunnel(seg2, belt.getMovementFacing().getOpposite(), true);
|
||||
}
|
||||
}
|
||||
|
||||
// Apply Movement
|
||||
current.beltPosition += limitedMovement;
|
||||
current.sideOffset += (current.getTargetSideOffset() - current.sideOffset) * Math.abs(limitedMovement) * 2f;
|
||||
|
@ -168,6 +179,7 @@ public class BeltInventory {
|
|||
if (world.isRemote)
|
||||
continue;
|
||||
|
||||
int lastOffset = beltMovementPositive ? belt.beltLength - 1 : 0;
|
||||
BlockPos nextPosition = getPositionForOffset(beltMovementPositive ? belt.beltLength : -1);
|
||||
BlockState state = world.getBlockState(nextPosition);
|
||||
Direction movementFacing = belt.getMovementFacing();
|
||||
|
@ -189,6 +201,7 @@ public class BeltInventory {
|
|||
if (remainder.isEmpty()) {
|
||||
iterator.remove();
|
||||
current = null;
|
||||
flapTunnel(lastOffset, belt.getMovementFacing(), false);
|
||||
}
|
||||
|
||||
belt.sendData();
|
||||
|
@ -203,6 +216,7 @@ public class BeltInventory {
|
|||
eject(current);
|
||||
iterator.remove();
|
||||
current = null;
|
||||
flapTunnel(lastOffset, belt.getMovementFacing(), false);
|
||||
belt.sendData();
|
||||
}
|
||||
continue;
|
||||
|
@ -223,6 +237,7 @@ public class BeltInventory {
|
|||
if (nextBelt.tryInsertingFromSide(movementFacing, current, false)) {
|
||||
iterator.remove();
|
||||
current = null;
|
||||
flapTunnel(lastOffset, belt.getMovementFacing(), false);
|
||||
belt.sendData();
|
||||
}
|
||||
|
||||
|
@ -232,6 +247,20 @@ public class BeltInventory {
|
|||
|
||||
}
|
||||
|
||||
private void flapTunnel(int offset, Direction side, boolean inward) {
|
||||
if (belt.getBlockState().get(BeltBlock.SLOPE) != Slope.HORIZONTAL)
|
||||
return;
|
||||
BlockPos pos = getPositionForOffset(offset).up();
|
||||
if (!AllBlocks.BELT_TUNNEL.typeOf(belt.getWorld().getBlockState(pos)))
|
||||
return;
|
||||
TileEntity te = belt.getWorld().getTileEntity(pos);
|
||||
if (te == null || !(te instanceof BeltTunnelTileEntity))
|
||||
return;
|
||||
if (side.getAxis() == Axis.Z)
|
||||
side = side.getOpposite();
|
||||
((BeltTunnelTileEntity) te).flap(side, inward ^ side.getAxis() == Axis.Z);
|
||||
}
|
||||
|
||||
public boolean canInsertAt(int segment) {
|
||||
return canInsertFrom(segment, Direction.UP);
|
||||
}
|
||||
|
|
|
@ -320,6 +320,18 @@ public class BeltTileEntity extends KineticTileEntity {
|
|||
nextInventory.insert(transportedStack);
|
||||
nextBeltController.markDirty();
|
||||
nextBeltController.sendData();
|
||||
|
||||
if (side.getAxis().isHorizontal()) {
|
||||
if (AllBlocks.BELT_TUNNEL.typeOf(world.getBlockState(pos.up()))) {
|
||||
TileEntity tileEntity = world.getTileEntity(pos.up());
|
||||
if (tileEntity != null && tileEntity instanceof BeltTunnelTileEntity) {
|
||||
if (side.getAxis() == Axis.X)
|
||||
side = side.getOpposite();
|
||||
((BeltTunnelTileEntity) tileEntity).flap(side, side.getAxis() == Axis.X);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -63,18 +63,22 @@ public class BeltTileEntityRenderer extends TileEntityRenderer<BeltTileEntity> {
|
|||
beltBuffer.color(te.color == -1 ? 0x808080 : te.color);
|
||||
|
||||
// UV shift
|
||||
if (te.getSpeed() != 0) {
|
||||
if (animatedTexture == null)
|
||||
animatedTexture = SpriteShifter.get("block/belt", "block/belt_animated");
|
||||
|
||||
float speed = te.getSpeed();
|
||||
if (animatedTexture == null)
|
||||
animatedTexture = SpriteShifter.get("block/belt", "block/belt_animated");
|
||||
if (speed != 0) {
|
||||
float time = AnimationTickHolder.getRenderTick()
|
||||
* te.getBlockState().get(HORIZONTAL_FACING).getAxisDirection().getOffset();
|
||||
int textureIndex = (int) ((te.getSpeed() * time / 8) % 16);
|
||||
if (renderedState.get(BeltBlock.HORIZONTAL_FACING).getAxis() == Axis.X)
|
||||
speed = -speed;
|
||||
int textureIndex = (int) ((speed * time / 8) % 16);
|
||||
if (textureIndex < 0)
|
||||
textureIndex += 16;
|
||||
|
||||
beltBuffer.shiftUVtoSheet(animatedTexture.getOriginal(), animatedTexture.getTarget(),
|
||||
(textureIndex % 4) * 16, (textureIndex / 4) * 16);
|
||||
} else {
|
||||
beltBuffer.shiftUVtoSheet(animatedTexture.getOriginal(), animatedTexture.getTarget(), 0, 0);
|
||||
}
|
||||
|
||||
int packedLightmapCoords = te.getBlockState().getPackedLightmapCoords(getWorld(), te.getPos());
|
||||
|
@ -148,7 +152,7 @@ public class BeltTileEntityRenderer extends TileEntityRenderer<BeltTileEntity> {
|
|||
}
|
||||
|
||||
if (blockItem) {
|
||||
GlStateManager.translated(r.nextFloat() * .25f, 0, r.nextFloat() * .25f);
|
||||
GlStateManager.translated(r.nextFloat() * .0625f * i, 0, r.nextFloat() * .0625f * i);
|
||||
}
|
||||
|
||||
GlStateManager.scaled(.5, .5, .5);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.simibubi.create.modules.contraptions.relays.belt;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.foundation.block.IWithTileEntity;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.modules.contraptions.relays.belt.BeltBlock.Slope;
|
||||
|
||||
|
@ -19,12 +20,14 @@ import net.minecraft.util.Direction.Axis;
|
|||
import net.minecraft.util.Direction.AxisDirection;
|
||||
import net.minecraft.util.IStringSerializable;
|
||||
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;
|
||||
|
||||
public class BeltTunnelBlock extends Block {
|
||||
public class BeltTunnelBlock extends Block implements IWithTileEntity<BeltTunnelTileEntity> {
|
||||
|
||||
public static final IProperty<Shape> SHAPE = EnumProperty.create("shape", Shape.class);
|
||||
public static final IProperty<Axis> HORIZONTAL_AXIS = BlockStateProperties.HORIZONTAL_AXIS;
|
||||
|
@ -42,12 +45,28 @@ public class BeltTunnelBlock extends Block {
|
|||
return Lang.asId(name());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity(BlockState state) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isSolid(BlockState state) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
|
||||
return BeltTunnelShapes.getFilledShape(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos,
|
||||
ISelectionContext context) {
|
||||
return BeltTunnelShapes.getFrameShape(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return new BeltTunnelTileEntity();
|
||||
|
@ -80,6 +99,7 @@ public class BeltTunnelBlock extends Block {
|
|||
@Override
|
||||
public BlockState updatePostPlacement(BlockState state, Direction facing, BlockState facingState, IWorld worldIn,
|
||||
BlockPos currentPos, BlockPos facingPos) {
|
||||
withTileEntityDo(worldIn, currentPos, BeltTunnelTileEntity::initFlaps);
|
||||
return getTunnelState(worldIn, currentPos);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
package com.simibubi.create.modules.contraptions.relays.belt;
|
||||
|
||||
import static com.simibubi.create.foundation.utility.VoxelShaper.forHorizontalAxis;
|
||||
import static net.minecraft.block.Block.makeCuboidShape;
|
||||
import static net.minecraft.util.math.shapes.VoxelShapes.or;
|
||||
|
||||
import com.simibubi.create.foundation.utility.VoxelShaper;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.math.shapes.VoxelShape;
|
||||
import net.minecraft.util.math.shapes.VoxelShapes;
|
||||
|
||||
public class BeltTunnelShapes {
|
||||
|
||||
private static final VoxelShape TOP = makeCuboidShape(0, 8, 0, 16, 16, 16),
|
||||
INNER = makeCuboidShape(2, -5, 2, 14, 16, 14);
|
||||
|
||||
private static final VoxelShaper WALL = VoxelShaper.forHorizontal(makeCuboidShape(0, -5, 14, 16, 16, 16)),
|
||||
POLES = VoxelShaper
|
||||
.forHorizontal(or(makeCuboidShape(0, -5, 14, 2, 16, 16), makeCuboidShape(14, -5, 14, 16, 16, 16)));
|
||||
|
||||
private static final VoxelShaper STRAIGHT = forHorizontalAxis(
|
||||
VoxelShapes.or(TOP, WALL.get(Direction.EAST), WALL.get(Direction.WEST))),
|
||||
T_LEFT = forHorizontalAxis(VoxelShapes.or(TOP, WALL.get(Direction.EAST), POLES.get(Direction.WEST))),
|
||||
T_RIGHT = forHorizontalAxis(VoxelShapes.or(TOP, POLES.get(Direction.EAST), WALL.get(Direction.WEST))),
|
||||
CROSS = forHorizontalAxis(VoxelShapes.or(TOP, POLES.get(Direction.EAST), POLES.get(Direction.WEST)));
|
||||
|
||||
public static VoxelShape getFrameShape(BlockState state) {
|
||||
VoxelShaper shaper = null;
|
||||
switch (state.get(BeltTunnelBlock.SHAPE)) {
|
||||
case CROSS:
|
||||
shaper = CROSS;
|
||||
break;
|
||||
case T_LEFT:
|
||||
shaper = T_LEFT;
|
||||
break;
|
||||
case T_RIGHT:
|
||||
shaper = T_RIGHT;
|
||||
break;
|
||||
case STRAIGHT:
|
||||
case WINDOW:
|
||||
default:
|
||||
shaper = STRAIGHT;
|
||||
break;
|
||||
}
|
||||
return shaper.get(state.get(BeltTunnelBlock.HORIZONTAL_AXIS));
|
||||
}
|
||||
|
||||
public static VoxelShape getFilledShape(BlockState state) {
|
||||
return or(getFrameShape(state), INNER);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,30 +1,133 @@
|
|||
package com.simibubi.create.modules.contraptions.relays.belt;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.foundation.block.SyncedTileEntity;
|
||||
import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue;
|
||||
import com.simibubi.create.modules.contraptions.relays.belt.BeltTunnelBlock.Shape;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.state.properties.BlockStateProperties;
|
||||
import net.minecraft.tileentity.ITickableTileEntity;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.Direction.AxisDirection;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
public class BeltTunnelTileEntity extends SyncedTileEntity {
|
||||
public class BeltTunnelTileEntity extends SyncedTileEntity implements ITickableTileEntity {
|
||||
|
||||
public HashMap<Direction, InterpolatedChasingValue> flaps;
|
||||
private LazyOptional<IItemHandler> cap = LazyOptional.empty();
|
||||
private boolean initialize;
|
||||
|
||||
private Direction flapToSend;
|
||||
private boolean flapInward;
|
||||
|
||||
public BeltTunnelTileEntity() {
|
||||
super(AllTileEntities.BELT_TUNNEL.type);
|
||||
flaps = new HashMap<>();
|
||||
initialize = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) {
|
||||
public <T> LazyOptional<T> getCapability(Capability<T> capabitily, Direction side) {
|
||||
|
||||
if (AllBlocks.BELT.typeOf(world.getBlockState(pos.down()))) {
|
||||
TileEntity teBelow = world.getTileEntity(pos.down());
|
||||
if (teBelow != null)
|
||||
return teBelow.getCapability(cap, Direction.UP);
|
||||
if (capabitily == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
|
||||
if (!this.cap.isPresent()) {
|
||||
if (AllBlocks.BELT.typeOf(world.getBlockState(pos.down()))) {
|
||||
TileEntity teBelow = world.getTileEntity(pos.down());
|
||||
if (teBelow != null)
|
||||
cap = LazyOptional.of(() -> teBelow.getCapability(capabitily, Direction.UP).orElse(null))
|
||||
.cast();
|
||||
}
|
||||
}
|
||||
return this.cap.cast();
|
||||
}
|
||||
return super.getCapability(capabitily, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
super.remove();
|
||||
cap.invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundNBT writeToClient(CompoundNBT tag) {
|
||||
CompoundNBT writeToClient = super.writeToClient(tag);
|
||||
if (flapToSend != null) {
|
||||
writeToClient.putInt("Flap", flapToSend.getIndex());
|
||||
writeToClient.putBoolean("FlapInward", flapInward);
|
||||
flapToSend = null;
|
||||
}
|
||||
return writeToClient;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readClientUpdate(CompoundNBT tag) {
|
||||
super.readClientUpdate(tag);
|
||||
if (tag.contains("Flap")) {
|
||||
Direction side = Direction.byIndex(tag.getInt("Flap"));
|
||||
flap(side, tag.getBoolean("FlapInward"));
|
||||
} else
|
||||
initFlaps();
|
||||
}
|
||||
|
||||
public void initFlaps() {
|
||||
if (!world.isRemote) {
|
||||
sendData();
|
||||
return;
|
||||
}
|
||||
|
||||
return super.getCapability(cap, side);
|
||||
initialize = false;
|
||||
flaps.clear();
|
||||
BlockState tunnelState = getBlockState();
|
||||
for (Direction direction : Direction.values()) {
|
||||
if (direction.getAxis().isVertical())
|
||||
continue;
|
||||
if (AllBlocks.BELT_TUNNEL.typeOf(world.getBlockState(pos.offset(direction))))
|
||||
continue;
|
||||
if (direction.getAxis() != tunnelState.get(BlockStateProperties.HORIZONTAL_AXIS)) {
|
||||
boolean positive = direction.getAxisDirection() == AxisDirection.POSITIVE
|
||||
^ direction.getAxis() == Axis.Z;
|
||||
Shape shape = tunnelState.get(BeltTunnelBlock.SHAPE);
|
||||
if (shape == Shape.STRAIGHT || shape == Shape.WINDOW)
|
||||
continue;
|
||||
if (positive && shape == Shape.T_LEFT)
|
||||
continue;
|
||||
if (!positive && shape == Shape.T_RIGHT)
|
||||
continue;
|
||||
}
|
||||
flaps.put(direction, new InterpolatedChasingValue().target(0).withSpeed(.05f));
|
||||
}
|
||||
}
|
||||
|
||||
public void flap(Direction side, boolean inward) {
|
||||
if (world.isRemote) {
|
||||
if (flaps.containsKey(side))
|
||||
flaps.get(side).set(inward ? -1 : 1);
|
||||
return;
|
||||
}
|
||||
|
||||
flapToSend = side;
|
||||
flapInward = inward;
|
||||
sendData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
if (!world.isRemote)
|
||||
return;
|
||||
if (initialize)
|
||||
initFlaps();
|
||||
flaps.forEach((d, value) -> value.tick());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,15 +3,13 @@ package com.simibubi.create.modules.contraptions.relays.belt;
|
|||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.CreateClient;
|
||||
import com.simibubi.create.foundation.utility.SuperByteBuffer;
|
||||
import com.simibubi.create.modules.contraptions.relays.belt.BeltTunnelBlock.Shape;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
import net.minecraft.state.properties.BlockStateProperties;
|
||||
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.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.model.animation.TileEntityRendererFast;
|
||||
|
||||
|
@ -21,33 +19,37 @@ public class BeltTunnelTileEntityRenderer extends TileEntityRendererFast<BeltTun
|
|||
public void renderTileEntityFast(BeltTunnelTileEntity te, double x, double y, double z, float partialTicks,
|
||||
int destroyStage, BufferBuilder buffer) {
|
||||
BlockState flapState = AllBlocks.BELT_TUNNEL_FLAP.get().getDefaultState();
|
||||
BlockState tunnelState = te.getBlockState();
|
||||
SuperByteBuffer flapBuffer = CreateClient.bufferCache.renderGenericBlockModel(flapState);
|
||||
BlockPos pos = te.getPos();
|
||||
World world = getWorld();
|
||||
|
||||
for (Direction direction : Direction.values()) {
|
||||
// TODO: move flap presence to TE
|
||||
if (direction.getAxis().isVertical())
|
||||
if (!te.flaps.containsKey(direction))
|
||||
continue;
|
||||
if (AllBlocks.BELT_TUNNEL.typeOf(world.getBlockState(pos.offset(direction))))
|
||||
continue;
|
||||
if (direction.getAxis() != tunnelState.get(BlockStateProperties.HORIZONTAL_AXIS)) {
|
||||
boolean positive = direction.getAxisDirection() == AxisDirection.POSITIVE;
|
||||
Shape shape = tunnelState.get(BeltTunnelBlock.SHAPE);
|
||||
if (shape == Shape.STRAIGHT || shape == Shape.WINDOW)
|
||||
continue;
|
||||
if (positive && shape == Shape.T_LEFT)
|
||||
continue;
|
||||
if (!positive && shape == Shape.T_RIGHT)
|
||||
continue;
|
||||
|
||||
float horizontalAngle = direction.getHorizontalAngle() + 90;
|
||||
if (direction.getAxis() != Axis.X)
|
||||
horizontalAngle += 180;
|
||||
|
||||
float flapPivotX = -15 / 16f;
|
||||
float flapPivotY = -.5f;
|
||||
float flapPivotZ = 0;
|
||||
for (int segment = 0; segment <= 3; segment++) {
|
||||
|
||||
float f = te.flaps.get(direction).get(partialTicks);
|
||||
if (direction.getAxis() == Axis.X)
|
||||
f *= -1;
|
||||
|
||||
float intensity = segment == 3 ? 1.5f : segment + 1;
|
||||
float flapAngle = MathHelper.sin((float) ((1 - Math.abs(f)) * Math.PI * intensity)) * 30 * -f;
|
||||
flapAngle = (float) (flapAngle / 180 * Math.PI);
|
||||
|
||||
flapBuffer.translate(0, 0, -segment * 3 / 16f);
|
||||
flapBuffer.translate(flapPivotX, flapPivotY, flapPivotZ).rotate(Axis.Z, flapAngle)
|
||||
.translate(-flapPivotX, -flapPivotY, -flapPivotZ);
|
||||
flapBuffer.rotateCentered(Axis.Y, (float) (horizontalAngle / 180f * Math.PI)).translate(x, y, z);
|
||||
flapBuffer.light(te.getBlockState().getPackedLightmapCoords(world, pos)).renderInto(buffer);
|
||||
}
|
||||
|
||||
// get flap angle
|
||||
|
||||
flapBuffer.rotateCentered(Axis.Y, (float) (direction.getHorizontalAngle() / 180f * Math.PI));
|
||||
flapBuffer.translate(x, y, z);
|
||||
flapBuffer.light(te.getBlockState().getPackedLightmapCoords(world, pos)).renderInto(buffer);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"variants": {
|
||||
"": { "model": "create:block/belt_tunnel/flap" }
|
||||
}
|
||||
}
|
|
@ -5,12 +5,12 @@
|
|||
},
|
||||
"variants": {
|
||||
"facing": {
|
||||
"north": { "y": 180 },
|
||||
"south": { },
|
||||
"west": { "y": 90 },
|
||||
"up": { "x": 90 },
|
||||
"down": { "x": 270 },
|
||||
"east": { "y": 270 }
|
||||
"north": { "x": 90 },
|
||||
"south": { "x": 90, "y": 180 },
|
||||
"west": { "x": 90, "y": 270 },
|
||||
"up": { },
|
||||
"down": { "x": 180 },
|
||||
"east": { "x": 90, "y": 90 }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "create:block/crafter/arrow"
|
||||
},
|
||||
"variants": {
|
||||
"facing": {
|
||||
"north": { "y": 180 },
|
||||
"south": { },
|
||||
"west": { "y": 90 },
|
||||
"up": { "x": 90 },
|
||||
"down": { "x": 270 },
|
||||
"east": { "y": 270 }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "create:block/crafter/belt_animated"
|
||||
},
|
||||
"variants": {
|
||||
"facing": {
|
||||
"north": { "y": 180 },
|
||||
"south": { },
|
||||
"west": { "y": 90 },
|
||||
"up": { "x": 90 },
|
||||
"down": { "x": 270 },
|
||||
"east": { "y": 270 }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "create:block/crafter/belt"
|
||||
},
|
||||
"variants": {
|
||||
"facing": {
|
||||
"north": { "y": 180 },
|
||||
"south": { },
|
||||
"west": { "y": 90 },
|
||||
"up": { "x": 90 },
|
||||
"down": { "x": 270 },
|
||||
"east": { "y": 270 }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -71,6 +71,7 @@
|
|||
"block.create.mechanical_press": "Mechanical Press",
|
||||
"block.create.mechanical_mixer": "Mechanical Mixer",
|
||||
"block.create.basin": "Basin",
|
||||
"block.create.mechanical_crafter": "Mechanical Crafter",
|
||||
|
||||
"block.create.sticky_mechanical_piston": "Sticky Mechanical Piston",
|
||||
"block.create.mechanical_piston": "Mechanical Piston",
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"0": "create:block/belttunnel",
|
||||
"particle": "create:block/belttunnel"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "F1",
|
||||
"from": [14.5, -2.5, 2],
|
||||
"to": [15.5, 8.5, 5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 4, 1.5, 9], "texture": "#0"},
|
||||
"east": {"uv": [1, 4, 2.5, 9], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [2, 4, 2.5, 9], "texture": "#0"},
|
||||
"west": {"uv": [1, 4, 2.5, 9], "texture": "#0"},
|
||||
"up": {"uv": [1, 4, 2.5, 4.5], "rotation": 90, "texture": "#0"},
|
||||
"down": {"uv": [1, 4, 2.5, 4.5], "rotation": 270, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "F2",
|
||||
"from": [14.5, -2.5, 5],
|
||||
"to": [15.5, 8.5, 8],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 4, 1.5, 9], "texture": "#0"},
|
||||
"east": {"uv": [1, 4, 2.5, 9], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [2, 4, 2.5, 9], "texture": "#0"},
|
||||
"west": {"uv": [1, 4, 2.5, 9], "texture": "#0"},
|
||||
"up": {"uv": [1, 4, 2.5, 4.5], "rotation": 90, "texture": "#0"},
|
||||
"down": {"uv": [1, 4, 2.5, 4.5], "rotation": 270, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "F3",
|
||||
"from": [14.5, -2.5, 8],
|
||||
"to": [15.5, 8.5, 11],
|
||||
"rotation": {"angle": 0, "axis": "x", "origin": [-24.5, -7.5, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 4, 1.5, 9], "texture": "#0"},
|
||||
"east": {"uv": [1, 4, 2.5, 9], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [2, 4, 2.5, 9], "texture": "#0"},
|
||||
"west": {"uv": [1, 4, 2.5, 9], "texture": "#0"},
|
||||
"up": {"uv": [1, 4, 2.5, 4.5], "rotation": 90, "texture": "#0"},
|
||||
"down": {"uv": [1, 4, 2.5, 4.5], "rotation": 270, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "F4",
|
||||
"from": [14.5, -2.5, 11],
|
||||
"to": [15.5, 8.5, 14],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 4, 1.5, 9], "texture": "#0"},
|
||||
"east": {"uv": [1, 4, 2.5, 9], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [2, 4, 2.5, 9], "texture": "#0"},
|
||||
"west": {"uv": [1, 4, 2.5, 9], "texture": "#0"},
|
||||
"up": {"uv": [1, 4, 2.5, 4.5], "rotation": 90, "texture": "#0"},
|
||||
"down": {"uv": [1, 4, 2.5, 4.5], "rotation": 270, "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Flap",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -12,94 +12,70 @@
|
|||
"to": [14, 16, 14],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"east": {"uv": [16, 0, 10, 1], "texture": "#0"},
|
||||
"west": {"uv": [16, 0, 10, 1], "texture": "#0"},
|
||||
"up": {"uv": [1, 15, 7, 9], "rotation": 270, "texture": "#0"},
|
||||
"down": {"uv": [7, 9, 1, 15], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "FrontRight",
|
||||
"from": [14, -3, 0],
|
||||
"to": [16, 8, 2],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 10.5, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [10, 10.5, 9, 16], "texture": "#0"},
|
||||
"south": {"uv": [10, 10.5, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [10, 10.5, 9, 16], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackRight",
|
||||
"from": [14, -3, 14],
|
||||
"to": [16, 8, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 10.5, 9, 16], "texture": "#0"},
|
||||
"east": {"uv": [10, 10.5, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [10, 10.5, 9, 16], "texture": "#0"},
|
||||
"west": {"uv": [10, 10.5, 9, 16], "rotation": 180, "texture": "#0"}
|
||||
"north": {"uv": [16, 0, 10, 1], "texture": "#0"},
|
||||
"south": {"uv": [16, 0, 10, 1], "texture": "#0"},
|
||||
"up": {"uv": [1, 15, 7, 9], "texture": "#0"},
|
||||
"down": {"uv": [7, 9, 1, 15], "rotation": 90, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [0, -3, 14],
|
||||
"to": [2, 8, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 10.5, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [10, 10.5, 9, 16], "texture": "#0"},
|
||||
"south": {"uv": [10, 10.5, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [10, 10.5, 9, 16], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [0, -5, 15],
|
||||
"to": [1, -3, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [9.5, 15, 9, 16], "texture": "#0"},
|
||||
"south": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9.5, 15, 9, 16], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [15, -5, 15],
|
||||
"to": [16, -3, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 15, 9.5, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [9, 15, 9.5, 16], "texture": "#0"},
|
||||
"south": {"uv": [9, 15, 9.5, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9, 15, 9.5, 16], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [15, -5, 0],
|
||||
"from": [14, -5, 0],
|
||||
"to": [16, -3, 1],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 15, 9.5, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [9, 15, 9.5, 16], "texture": "#0"},
|
||||
"south": {"uv": [9, 15, 9.5, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9, 15, 9.5, 16], "texture": "#0"}
|
||||
"north": {"uv": [10, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [10, 15, 9, 16], "texture": "#0"},
|
||||
"west": {"uv": [10, 15, 9.5, 16], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [0, -5, 0],
|
||||
"to": [1, -3, 1],
|
||||
"to": [2, -3, 1],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [9.5, 15, 9, 16], "texture": "#0"},
|
||||
"south": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9.5, 15, 9, 16], "texture": "#0"}
|
||||
"north": {"uv": [9, 15, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [9.5, 15, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [9, 15, 10, 16], "texture": "#0"},
|
||||
"west": {"uv": [9, 15, 9.5, 16], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [14, -5, 15],
|
||||
"to": [16, -3, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 15, 10, 16], "texture": "#0"},
|
||||
"east": {"uv": [9, 15, 9.5, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [9, 15, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9.5, 15, 10, 16], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [0, -5, 15],
|
||||
"to": [2, -3, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 15, 9, 16], "texture": "#0"},
|
||||
"east": {"uv": [10, 15, 9.5, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [10, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "FrontLeft",
|
||||
"from": [14, -3, 0],
|
||||
"to": [16, 8, 2],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 9.5, 9, 15], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [10, 9.5, 9, 15], "texture": "#0"},
|
||||
"south": {"uv": [10, 9.5, 9, 15], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [10, 9.5, 9, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -108,66 +84,90 @@
|
|||
"to": [2, 8, 2],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 10.5, 9, 16], "texture": "#0"},
|
||||
"east": {"uv": [10, 10.5, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [10, 10.5, 9, 16], "texture": "#0"},
|
||||
"west": {"uv": [10, 10.5, 9, 16], "rotation": 180, "texture": "#0"}
|
||||
"north": {"uv": [9, 9.5, 10, 15], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [9, 9.5, 10, 15], "texture": "#0"},
|
||||
"south": {"uv": [9, 9.5, 10, 15], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9, 9.5, 10, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "FrontLeft",
|
||||
"from": [14, -3, 14],
|
||||
"to": [16, 8, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 9.5, 10, 15], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [9, 9.5, 10, 15], "texture": "#0"},
|
||||
"south": {"uv": [9, 9.5, 10, 15], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9, 9.5, 10, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "FrontLeft",
|
||||
"from": [0, -3, 14],
|
||||
"to": [2, 8, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 9.5, 9, 15], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [10, 9.5, 9, 15], "texture": "#0"},
|
||||
"south": {"uv": [10, 9.5, 9, 15], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [10, 9.5, 9, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "FrontTop",
|
||||
"from": [0, 8, 0],
|
||||
"to": [16, 16, 2],
|
||||
"from": [14, 8, 0],
|
||||
"to": [16, 16, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [16, 2.5, 8, 6.5], "texture": "#0"},
|
||||
"east": {"uv": [10, 8, 9, 12], "texture": "#0"},
|
||||
"south": {"uv": [8, 0, 0, 4], "texture": "#0"},
|
||||
"west": {"uv": [10, 8, 9, 12], "rotation": 180, "texture": "#0"},
|
||||
"up": {"uv": [7, 16, 8, 8], "rotation": 270, "texture": "#0"},
|
||||
"down": {"uv": [16, 2.5, 8, 3.5], "rotation": 180, "texture": "#0"}
|
||||
"north": {"uv": [10, 8, 9, 12], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [16, 2.5, 8, 6.5], "texture": "#0"},
|
||||
"south": {"uv": [10, 8, 9, 12], "texture": "#0"},
|
||||
"west": {"uv": [8, 0, 0, 4], "texture": "#0"},
|
||||
"up": {"uv": [7, 16, 8, 8], "texture": "#0"},
|
||||
"down": {"uv": [16, 2.5, 8, 3.5], "rotation": 90, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackTop",
|
||||
"from": [0, 8, 2],
|
||||
"to": [2, 16, 14],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 24]},
|
||||
"from": [2, 8, 0],
|
||||
"to": [14, 16, 2],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [15, 2.5, 9, 6.5], "texture": "#0"},
|
||||
"east": {"uv": [10, 8, 9, 12], "texture": "#0"},
|
||||
"south": {"uv": [8, 0, 0, 4], "texture": "#0"},
|
||||
"west": {"uv": [10, 8, 9, 12], "rotation": 180, "texture": "#0"},
|
||||
"up": {"uv": [1, 8, 0, 16], "rotation": 270, "texture": "#0"},
|
||||
"down": {"uv": [8, 6.5, 16, 5.5], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackTop",
|
||||
"from": [2, 8, 14],
|
||||
"to": [14, 16, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 8, 4], "texture": "#0"},
|
||||
"east": {"uv": [9, 8, 10, 12], "texture": "#0"},
|
||||
"south": {"uv": [9, 2.5, 15, 6.5], "texture": "#0"},
|
||||
"west": {"uv": [9, 8, 10, 12], "rotation": 180, "texture": "#0"},
|
||||
"up": {"uv": [0, 8, 1, 16], "rotation": 270, "texture": "#0"},
|
||||
"down": {"uv": [8, 5.5, 16, 6.5], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackTop",
|
||||
"from": [0, 8, 0],
|
||||
"to": [2, 16, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 8, 9, 12], "texture": "#0"},
|
||||
"east": {"uv": [8, 0, 0, 4], "texture": "#0"},
|
||||
"south": {"uv": [10, 8, 9, 12], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [15, 2.5, 9, 6.5], "texture": "#0"},
|
||||
"up": {"uv": [1, 8, 0, 16], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [8, 6.5, 16, 5.5], "rotation": 270, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackTop",
|
||||
"from": [14, 8, 2],
|
||||
"to": [16, 16, 14],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 24]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 8, 10, 12], "texture": "#0"},
|
||||
"east": {"uv": [9, 2.5, 15, 6.5], "texture": "#0"},
|
||||
"south": {"uv": [9, 8, 10, 12], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [0, 0, 8, 4], "texture": "#0"},
|
||||
"up": {"uv": [0, 8, 1, 16], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [8, 5.5, 16, 6.5], "rotation": 270, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackTop",
|
||||
"from": [0, 8, 14],
|
||||
"to": [16, 16, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [8, 0, 0, 4], "texture": "#0"},
|
||||
"east": {"uv": [10, 8, 9, 12], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [16, 2.5, 8, 6.5], "texture": "#0"},
|
||||
"west": {"uv": [10, 8, 9, 12], "texture": "#0"},
|
||||
"up": {"uv": [0, 16, 1, 8], "rotation": 270, "texture": "#0"},
|
||||
"down": {"uv": [16, 5.5, 8, 6.5], "rotation": 180, "texture": "#0"}
|
||||
"west": {"uv": [16, 2.5, 8, 6.5], "texture": "#0"},
|
||||
"up": {"uv": [0, 16, 1, 8], "texture": "#0"},
|
||||
"down": {"uv": [16, 5.5, 8, 6.5], "rotation": 90, "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"0": "create:block/belttunnel",
|
||||
"particle": "create:block/belttunnel"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "F4",
|
||||
"from": [14.5, -2.5, 11],
|
||||
"to": [15.5, 8.5, 14],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 4, 1.5, 9], "texture": "#0"},
|
||||
"east": {"uv": [1, 4, 2.5, 9], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [2, 4, 2.5, 9], "texture": "#0"},
|
||||
"west": {"uv": [1, 4, 2.5, 9], "texture": "#0"},
|
||||
"up": {"uv": [1, 4, 2.5, 4.5], "rotation": 90, "texture": "#0"},
|
||||
"down": {"uv": [1, 4, 2.5, 4.5], "rotation": 270, "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Flap",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [0]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -72,34 +72,10 @@
|
|||
"to": [2, 8, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 10.5, 10, 16], "texture": "#0"},
|
||||
"east": {"uv": [9, 10.5, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [9, 10.5, 10, 16], "texture": "#0"},
|
||||
"west": {"uv": [9, 10.5, 10, 16], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [0, -5, 15],
|
||||
"to": [1, -3, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 15, 9.5, 16], "texture": "#0"},
|
||||
"east": {"uv": [9, 15, 9.5, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [9, 15, 9.5, 16], "texture": "#0"},
|
||||
"west": {"uv": [9, 15, 9.5, 16], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [15, -5, 15],
|
||||
"to": [16, -3, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 15, 9.5, 16], "texture": "#0"},
|
||||
"east": {"uv": [9, 15, 9.5, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [9, 15, 9.5, 16], "texture": "#0"},
|
||||
"west": {"uv": [9, 15, 9.5, 16], "rotation": 180, "texture": "#0"}
|
||||
"north": {"uv": [9, 9.5, 10, 15], "texture": "#0"},
|
||||
"east": {"uv": [9, 9.5, 10, 15], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [9, 9.5, 10, 15], "texture": "#0"},
|
||||
"west": {"uv": [9, 9.5, 10, 15], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -108,10 +84,10 @@
|
|||
"to": [16, 8, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 10.5, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [9, 10.5, 10, 16], "texture": "#0"},
|
||||
"south": {"uv": [9, 10.5, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9, 10.5, 10, 16], "texture": "#0"}
|
||||
"north": {"uv": [9, 9.5, 10, 15], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [9, 9.5, 10, 15], "texture": "#0"},
|
||||
"south": {"uv": [9, 9.5, 10, 15], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9, 9.5, 10, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -155,6 +131,30 @@
|
|||
"up": {"uv": [0, 8, 1, 16], "texture": "#0"},
|
||||
"down": {"uv": [8, 5.5, 16, 6.5], "rotation": 90, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [14, -5, 15],
|
||||
"to": [16, -3, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 15, 10, 16], "texture": "#0"},
|
||||
"east": {"uv": [9, 15, 9.5, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [9, 15, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9.5, 15, 10, 16], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [0, -5, 15],
|
||||
"to": [2, -3, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 15, 9, 16], "texture": "#0"},
|
||||
"east": {"uv": [10, 15, 9.5, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [10, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
|
@ -165,9 +165,8 @@
|
|||
{
|
||||
"name": "Cover",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
|
||||
}
|
||||
]
|
||||
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
}, 10, 11]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -72,34 +72,10 @@
|
|||
"to": [2, 8, 2],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 10.5, 9, 16], "texture": "#0"},
|
||||
"north": {"uv": [10, 9.5, 9, 15], "texture": "#0"},
|
||||
"east": {"uv": [10, 10.5, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [10, 10.5, 9, 16], "texture": "#0"},
|
||||
"west": {"uv": [10, 10.5, 9, 16], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [0, -5, 0],
|
||||
"to": [1, -3, 1],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9.5, 15, 9, 16], "texture": "#0"},
|
||||
"east": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [9.5, 15, 9, 16], "texture": "#0"},
|
||||
"west": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [15, -5, 0],
|
||||
"to": [16, -3, 1],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9.5, 15, 9, 16], "texture": "#0"},
|
||||
"east": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [9.5, 15, 9, 16], "texture": "#0"},
|
||||
"west": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"}
|
||||
"west": {"uv": [10, 9.5, 9, 15], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -109,9 +85,9 @@
|
|||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 10.5, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [10, 10.5, 9, 16], "texture": "#0"},
|
||||
"south": {"uv": [10, 10.5, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [10, 10.5, 9, 16], "texture": "#0"}
|
||||
"east": {"uv": [10, 9.5, 9, 15], "texture": "#0"},
|
||||
"south": {"uv": [10, 9.5, 9, 15], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [10, 9.5, 9, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -155,6 +131,34 @@
|
|||
"up": {"uv": [0, 16, 1, 8], "texture": "#0"},
|
||||
"down": {"uv": [16, 5.5, 8, 6.5], "rotation": 90, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [0, -5, 0],
|
||||
"to": [2, -3, 1],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 15, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [9.5, 15, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [9, 15, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"up": {"uv": [9, 15, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [9, 15, 10, 16], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BackLeft",
|
||||
"from": [14, -5, 0],
|
||||
"to": [16, -3, 1],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [9.5, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"south": {"uv": [10, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"west": {"uv": [10, 15, 9.5, 16], "rotation": 180, "texture": "#0"},
|
||||
"up": {"uv": [10, 15, 9, 16], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [10, 15, 9, 16], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
|
@ -165,9 +169,8 @@
|
|||
{
|
||||
"name": "Cover",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
|
||||
}
|
||||
]
|
||||
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
}, 10, 11]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"3": "create:block/crafter_thingies"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "arrow",
|
||||
"from": [5, 16, 12],
|
||||
"to": [11, 17, 14],
|
||||
"faces": {
|
||||
"north": {"uv": [12, 0, 13, 6], "rotation": 90, "texture": "#3"},
|
||||
"east": {"uv": [12, 0, 14, 1], "rotation": 180, "texture": "#3"},
|
||||
"south": {"uv": [13, 0, 14, 6], "rotation": 90, "texture": "#3"},
|
||||
"west": {"uv": [12, 5, 14, 6], "texture": "#3"},
|
||||
"up": {"uv": [12, 0, 14, 6], "rotation": 90, "texture": "#3"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "arrow",
|
||||
"from": [6, 16, 14],
|
||||
"to": [10, 17, 15],
|
||||
"faces": {
|
||||
"east": {"uv": [14, 1, 15, 2], "rotation": 180, "texture": "#3"},
|
||||
"south": {"uv": [14, 1, 15, 5], "rotation": 90, "texture": "#3"},
|
||||
"west": {"uv": [14, 4, 15, 5], "texture": "#3"},
|
||||
"up": {"uv": [14, 1, 15, 5], "rotation": 90, "texture": "#3"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "arrow",
|
||||
"from": [7, 16, 15],
|
||||
"to": [9, 17, 16],
|
||||
"faces": {
|
||||
"east": {"uv": [15, 2, 16, 3], "rotation": 180, "texture": "#3"},
|
||||
"south": {"uv": [15, 2, 16, 4], "rotation": 90, "texture": "#3"},
|
||||
"west": {"uv": [15, 3, 16, 4], "texture": "#3"},
|
||||
"up": {"uv": [15, 2, 16, 4], "rotation": 90, "texture": "#3"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/cube",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"5": "create:block/brass_casing"
|
||||
},
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/cube",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"3": "create:block/crafter_thingies"
|
||||
},
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/cube",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"3": "create:block/crafter_thingies",
|
||||
"4": "create:block/crafter_side",
|
||||
"5": "create:block/brass_casing",
|
||||
"6": "create:block/crafter_top",
|
||||
"7": "create:block/crafter_topunderside"
|
||||
"7": "create:block/crafter_topunderside",
|
||||
"particle": "create:block/brass_casing"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
@ -42,8 +43,7 @@
|
|||
"rotation": {"angle": 0, "axis": "y", "origin": [24, 8, 8]},
|
||||
"faces": {
|
||||
"east": {"uv": [0, 6, 16, 10], "texture": "#4"},
|
||||
"west": {"uv": [0, 6, 16, 10], "texture": "#4"},
|
||||
"down": {"uv": [0, 0, 1, 1], "texture": "#missing"}
|
||||
"west": {"uv": [0, 6, 16, 10], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -53,8 +53,7 @@
|
|||
"rotation": {"angle": 0, "axis": "y", "origin": [-8, 8, 8]},
|
||||
"faces": {
|
||||
"east": {"uv": [0, 6, 16, 10], "texture": "#4"},
|
||||
"west": {"uv": [0, 6, 16, 10], "texture": "#4"},
|
||||
"down": {"uv": [0, 0, 1, 1], "texture": "#missing"}
|
||||
"west": {"uv": [0, 6, 16, 10], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -132,19 +131,6 @@
|
|||
"faces": {
|
||||
"up": {"uv": [6, 0, 12, 6], "texture": "#3"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "arrow",
|
||||
"from": [5, 15.1, 11.9],
|
||||
"to": [11, 16.1, 15.9],
|
||||
"faces": {
|
||||
"north": {"uv": [12, 0, 13, 6], "rotation": 90, "texture": "#3"},
|
||||
"east": {"uv": [12, 0, 16, 1], "rotation": 180, "texture": "#3"},
|
||||
"south": {"uv": [15, 0, 16, 6], "rotation": 90, "texture": "#3"},
|
||||
"west": {"uv": [12, 5, 16, 6], "texture": "#3"},
|
||||
"up": {"uv": [12, 0, 16, 6], "rotation": 90, "texture": "#3"},
|
||||
"down": {"uv": [12, 0, 16, 6], "rotation": 90, "texture": "#3"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
243
src/main/resources/assets/create/models/block/crafter/item.json
Normal file
243
src/main/resources/assets/create/models/block/crafter/item.json
Normal file
|
@ -0,0 +1,243 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"1": "block/stripped_spruce_log",
|
||||
"2": "block/stripped_spruce_log_top",
|
||||
"3": "create:block/crafter_thingies",
|
||||
"4": "create:block/crafter_side",
|
||||
"5": "create:block/brass_casing",
|
||||
"6": "create:block/crafter_top",
|
||||
"7": "create:block/crafter_topunderside",
|
||||
"particle": "block/stripped_spruce_log",
|
||||
"2_3": "create:block/crafter_thingies"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Top",
|
||||
"from": [0, 10, 0],
|
||||
"to": [16, 16, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 16, 6], "texture": "#4"},
|
||||
"east": {"uv": [0, 0, 16, 6], "texture": "#4"},
|
||||
"south": {"uv": [0, 0, 16, 6], "texture": "#4"},
|
||||
"west": {"uv": [0, 0, 16, 6], "texture": "#4"},
|
||||
"up": {"uv": [0, 0, 2, 2], "rotation": 270, "texture": "#6"},
|
||||
"down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#7"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Bottom",
|
||||
"from": [0, 0, 0],
|
||||
"to": [16, 6, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 10, 16, 16], "texture": "#4"},
|
||||
"east": {"uv": [0, 10, 16, 16], "texture": "#4"},
|
||||
"south": {"uv": [0, 10, 16, 16], "texture": "#4"},
|
||||
"west": {"uv": [0, 10, 16, 16], "texture": "#4"},
|
||||
"up": {"uv": [0, 0, 16, 16], "texture": "#5"},
|
||||
"down": {"uv": [0, 0, 2, 2], "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Side1",
|
||||
"from": [16, 6, 0],
|
||||
"to": [16, 10, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [24, 8, 8]},
|
||||
"faces": {
|
||||
"east": {"uv": [0, 6, 16, 10], "texture": "#4"},
|
||||
"west": {"uv": [0, 6, 16, 10], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Side2",
|
||||
"from": [0, 6, 0],
|
||||
"to": [0, 10, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [-8, 8, 8]},
|
||||
"faces": {
|
||||
"east": {"uv": [0, 6, 16, 10], "texture": "#4"},
|
||||
"west": {"uv": [0, 6, 16, 10], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Side3",
|
||||
"from": [0, 6, 0],
|
||||
"to": [16, 10, 0],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 6, 16, 10], "texture": "#4"},
|
||||
"south": {"uv": [0, 6, 16, 10], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Side4",
|
||||
"from": [0, 6, 16],
|
||||
"to": [16, 10, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 24]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 6, 16, 10], "texture": "#4"},
|
||||
"south": {"uv": [0, 6, 16, 10], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "valve_case",
|
||||
"from": [4, 16, 4],
|
||||
"to": [5, 17, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [8, 2, 9, 3], "texture": "#5"},
|
||||
"east": {"uv": [4, 2, 12, 3], "texture": "#5"},
|
||||
"south": {"uv": [7, 2, 8, 3], "texture": "#5"},
|
||||
"west": {"uv": [4, 2, 12, 3], "texture": "#5"},
|
||||
"up": {"uv": [2, 4, 3, 12], "texture": "#5"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "valve_case",
|
||||
"from": [11, 16, 4],
|
||||
"to": [12, 17, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [8, 2, 9, 3], "texture": "#5"},
|
||||
"east": {"uv": [4, 2, 12, 3], "texture": "#5"},
|
||||
"south": {"uv": [7, 2, 8, 3], "texture": "#5"},
|
||||
"west": {"uv": [4, 2, 12, 3], "texture": "#5"},
|
||||
"up": {"uv": [2, 4, 3, 12], "texture": "#5"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "valve_case",
|
||||
"from": [5, 16, 4],
|
||||
"to": [11, 17, 5],
|
||||
"faces": {
|
||||
"north": {"uv": [6, 2, 12, 3], "texture": "#5"},
|
||||
"east": {"uv": [2, 4, 3, 5], "texture": "#5"},
|
||||
"south": {"uv": [5, 2, 11, 3], "texture": "#5"},
|
||||
"west": {"uv": [2, 4, 3, 5], "texture": "#5"},
|
||||
"up": {"uv": [5, 2, 11, 3], "texture": "#5"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "valve_case",
|
||||
"from": [5, 16, 11],
|
||||
"to": [11, 17, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [6, 2, 12, 3], "texture": "#5"},
|
||||
"east": {"uv": [2, 4, 3, 5], "texture": "#5"},
|
||||
"south": {"uv": [5, 2, 11, 3], "texture": "#5"},
|
||||
"west": {"uv": [2, 4, 3, 5], "texture": "#5"},
|
||||
"up": {"uv": [5, 2, 11, 3], "texture": "#5"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "opening",
|
||||
"from": [5, 15.5, 5],
|
||||
"to": [11, 16.5, 11],
|
||||
"faces": {
|
||||
"up": {"uv": [6, 0, 12, 6], "texture": "#3"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Gear",
|
||||
"from": [-1, 6.5, 6.5],
|
||||
"to": [17, 9.5, 9.5],
|
||||
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 0, 9, 16], "rotation": 90, "texture": "#1"},
|
||||
"east": {"uv": [1, 3, 4, 6], "texture": "#1"},
|
||||
"south": {"uv": [0, 0, 16, 3], "texture": "#1"},
|
||||
"west": {"uv": [5, 10, 8, 13], "texture": "#1"},
|
||||
"up": {"uv": [0, 0, 16, 3], "texture": "#1"},
|
||||
"down": {"uv": [0, 0, 16, 3], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Gear2",
|
||||
"from": [-1, 6.5, 6.5],
|
||||
"to": [17, 9.5, 9.5],
|
||||
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 16, 3], "texture": "#1"},
|
||||
"east": {"uv": [0, 0, 3, 3], "texture": "#1"},
|
||||
"south": {"uv": [0, 0, 16, 3], "texture": "#1"},
|
||||
"west": {"uv": [0, 0, 3, 3], "texture": "#1"},
|
||||
"up": {"uv": [0, 0, 16, 3], "texture": "#1"},
|
||||
"down": {"uv": [0, 0, 16, 3], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Gear3",
|
||||
"from": [6.5, 6.5, -1],
|
||||
"to": [9.5, 9.5, 17],
|
||||
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 3, 3], "texture": "#1"},
|
||||
"east": {"uv": [0, 0, 16, 3], "texture": "#1"},
|
||||
"south": {"uv": [0, 0, 3, 3], "texture": "#1"},
|
||||
"west": {"uv": [0, 0, 16, 3], "texture": "#1"},
|
||||
"up": {"uv": [0, 0, 16, 3], "rotation": 90, "texture": "#1"},
|
||||
"down": {"uv": [0, 0, 16, 3], "rotation": 270, "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Gear4",
|
||||
"from": [6.5, 6.5, -1],
|
||||
"to": [9.5, 9.5, 17],
|
||||
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 3, 3], "texture": "#1"},
|
||||
"east": {"uv": [0, 0, 16, 3], "texture": "#1"},
|
||||
"south": {"uv": [0, 0, 3, 3], "texture": "#1"},
|
||||
"west": {"uv": [0, 0, 16, 3], "texture": "#1"},
|
||||
"up": {"uv": [0, 0, 3, 16], "texture": "#1"},
|
||||
"down": {"uv": [0, 0, 3, 16], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "GearCaseInner",
|
||||
"from": [2, 7, 2],
|
||||
"to": [14, 9, 14],
|
||||
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 12, 2], "texture": "#1"},
|
||||
"east": {"uv": [0, 0, 12, 2], "texture": "#1"},
|
||||
"south": {"uv": [0, 0, 12, 2], "texture": "#1"},
|
||||
"west": {"uv": [0, 0, 12, 2], "texture": "#1"},
|
||||
"up": {"uv": [2, 2, 14, 14], "texture": "#2"},
|
||||
"down": {"uv": [2, 2, 14, 14], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "GearCaseOuter",
|
||||
"from": [4, 6, 4],
|
||||
"to": [12, 10, 12],
|
||||
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 8, 4], "texture": "#1"},
|
||||
"east": {"uv": [0, 0, 8, 4], "texture": "#1"},
|
||||
"south": {"uv": [0, 0, 8, 4], "texture": "#1"},
|
||||
"west": {"uv": [0, 0, 8, 4], "texture": "#1"},
|
||||
"up": {"uv": [4, 4, 12, 12], "texture": "#2"},
|
||||
"down": {"uv": [4, 4, 12, 12], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "valve_lid",
|
||||
"from": [5, 16, 5],
|
||||
"to": [11, 17, 11],
|
||||
"faces": {
|
||||
"up": {"uv": [0, 0, 6, 6], "texture": "#2_3"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
|
||||
{
|
||||
"name": "cogwheel_shaftless",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [11, 12, 13, 14, 15, 16]
|
||||
},
|
||||
{
|
||||
"name": "lid",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [17]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/cube",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"3": "create:block/crafter_thingies"
|
||||
},
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:block/crafter/item"
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 481 B After Width: | Height: | Size: 464 B |
Loading…
Reference in a new issue