Are we there yet
- Fixed non-vanilla signs not accepted as valid display targets - Fixed roller not rotating with correct transforms when flywheel is disabled - Brass tunnels with no distribution behaviour no longer show the mode switcher - Used more contrasting colours for diode and tunnel value inputs - Fixed crash when hose pulley cannot find reference fluid for infinite draining - Fixed incorrect vertical textures for encased chutes and industrial iron blocks
|
@ -1129,7 +1129,7 @@ d13df8a5920c5778d98081fb0e97f045e2fd46a2 assets/create/models/block/horizontal_f
|
||||||
a5938ddd48109f067a19a90a0f9abab655c18821 assets/create/models/block/horizontal_framed_glass_pane_post.json
|
a5938ddd48109f067a19a90a0f9abab655c18821 assets/create/models/block/horizontal_framed_glass_pane_post.json
|
||||||
41645919ece236df5804a5a73ef682720194de34 assets/create/models/block/horizontal_framed_glass_pane_side.json
|
41645919ece236df5804a5a73ef682720194de34 assets/create/models/block/horizontal_framed_glass_pane_side.json
|
||||||
8bc0abaabdc62d0c27730dba7eb6da54607b7e96 assets/create/models/block/horizontal_framed_glass_pane_side_alt.json
|
8bc0abaabdc62d0c27730dba7eb6da54607b7e96 assets/create/models/block/horizontal_framed_glass_pane_side_alt.json
|
||||||
07c1e1bcd87766cf324ac11ce1488856d1db86c3 assets/create/models/block/industrial_iron_block.json
|
cb425a5ba6d27004e071b407a2d262b702bba065 assets/create/models/block/industrial_iron_block.json
|
||||||
35253c91ed72c7c2ce981c384d334c1113851469 assets/create/models/block/jungle_window.json
|
35253c91ed72c7c2ce981c384d334c1113851469 assets/create/models/block/jungle_window.json
|
||||||
65da656d412d973865f50ab7f02e278fe5398bea assets/create/models/block/jungle_window_pane_noside.json
|
65da656d412d973865f50ab7f02e278fe5398bea assets/create/models/block/jungle_window_pane_noside.json
|
||||||
9f4144df2e6b35c1fad04e594be5adb3b107bdb8 assets/create/models/block/jungle_window_pane_noside_alt.json
|
9f4144df2e6b35c1fad04e594be5adb3b107bdb8 assets/create/models/block/jungle_window_pane_noside_alt.json
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"parent": "minecraft:block/cube_all",
|
"parent": "minecraft:block/cube_column",
|
||||||
"textures": {
|
"textures": {
|
||||||
"all": "create:block/industrial_iron_block"
|
"side": "create:block/industrial_iron_block",
|
||||||
|
"end": "create:block/industrial_iron_block_top"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2238,7 +2238,9 @@ public class AllBlocks {
|
||||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||||
.properties(p -> p.requiresCorrectToolForDrops())
|
.properties(p -> p.requiresCorrectToolForDrops())
|
||||||
.transform(pickaxeOnly())
|
.transform(pickaxeOnly())
|
||||||
.blockstate(simpleCubeAll("industrial_iron_block"))
|
.blockstate((c, p) -> p.simpleBlock(c.get(), p.models()
|
||||||
|
.cubeColumn(c.getName(), p.modLoc("block/industrial_iron_block"),
|
||||||
|
p.modLoc("block/industrial_iron_block_top"))))
|
||||||
.tag(AllBlockTags.WRENCH_PICKUP.tag)
|
.tag(AllBlockTags.WRENCH_PICKUP.tag)
|
||||||
.lang("Block of Industrial Iron")
|
.lang("Block of Industrial Iron")
|
||||||
.recipe((c, p) -> p.stonecutting(DataIngredient.tag(Tags.Items.INGOTS_IRON), c::get, 2))
|
.recipe((c, p) -> p.stonecutting(DataIngredient.tag(Tags.Items.INGOTS_IRON), c::get, 2))
|
||||||
|
|
|
@ -253,8 +253,8 @@ public class AllShapes {
|
||||||
.build(),
|
.build(),
|
||||||
SPOUT = shape(1, 2, 1, 15, 14, 15).add(2, 0, 2, 14, 16, 14)
|
SPOUT = shape(1, 2, 1, 15, 14, 15).add(2, 0, 2, 14, 16, 14)
|
||||||
.build(),
|
.build(),
|
||||||
MILLSTONE = shape(0, 0, 0, 16, 6, 16).add(2, 6, 2, 14, 13, 14)
|
MILLSTONE = shape(0, 0, 0, 16, 6, 16).add(2, 6, 2, 14, 12, 14)
|
||||||
.add(3, 13, 3, 13, 16, 13)
|
.add(3, 12, 3, 13, 16, 13)
|
||||||
.build(),
|
.build(),
|
||||||
CUCKOO_CLOCK = shape(1, 0, 1, 15, 19, 15).build(),
|
CUCKOO_CLOCK = shape(1, 0, 1, 15, 19, 15).build(),
|
||||||
GAUGE_SHAPE_UP = shape(1, 0, 0, 15, 2, 16).add(2, 2, 1, 14, 14, 15)
|
GAUGE_SHAPE_UP = shape(1, 0, 0, 15, 2, 16).add(2, 2, 1, 14, 14, 15)
|
||||||
|
|
|
@ -64,9 +64,9 @@ public class RollerRenderer extends SmartBlockEntityRenderer<RollerBlockEntity>
|
||||||
if (context.contraption.stalled)
|
if (context.contraption.stalled)
|
||||||
speed = 0;
|
speed = 0;
|
||||||
|
|
||||||
superBuffer.translate(Vec3.atLowerCornerOf(facing.getNormal())
|
superBuffer.transform(matrices.getModel())
|
||||||
.scale(17 / 16f))
|
.translate(Vec3.atLowerCornerOf(facing.getNormal())
|
||||||
.transform(matrices.getModel());
|
.scale(17 / 16f));
|
||||||
HarvesterRenderer.transform(context.world, facing, superBuffer, speed, Vec3.ZERO);
|
HarvesterRenderer.transform(context.world, facing, superBuffer, speed, Vec3.ZERO);
|
||||||
|
|
||||||
PoseStack viewProjection = matrices.getViewProjection();
|
PoseStack viewProjection = matrices.getViewProjection();
|
||||||
|
|
|
@ -83,10 +83,21 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
|
||||||
if (validationFrontier.isEmpty() && !queue.isEmpty() && !simulate && revalidateIn == 0)
|
if (validationFrontier.isEmpty() && !queue.isEmpty() && !simulate && revalidateIn == 0)
|
||||||
revalidate(root);
|
revalidate(root);
|
||||||
|
|
||||||
|
if (infinite) {
|
||||||
|
blockEntity.award(AllAdvancements.HOSE_PULLEY);
|
||||||
|
if (FluidHelper.isLava(fluid))
|
||||||
|
blockEntity.award(AllAdvancements.HOSE_PULLEY_LAVA);
|
||||||
|
|
||||||
|
playEffect(world, root, fluid, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
while (!queue.isEmpty()) {
|
while (!queue.isEmpty()) {
|
||||||
// Dont dequeue here, so we can decide not to dequeue a valid entry when
|
// Dont dequeue here, so we can decide not to dequeue a valid entry when
|
||||||
// simulating
|
// simulating
|
||||||
BlockPos currentPos = queue.first().pos();
|
BlockPos currentPos = queue.first()
|
||||||
|
.pos();
|
||||||
|
|
||||||
BlockState blockState = world.getBlockState(currentPos);
|
BlockState blockState = world.getBlockState(currentPos);
|
||||||
BlockState emptied = blockState;
|
BlockState emptied = blockState;
|
||||||
Fluid fluid = Fluids.EMPTY;
|
Fluid fluid = Fluids.EMPTY;
|
||||||
|
@ -137,12 +148,6 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
|
||||||
playEffect(world, currentPos, fluid, true);
|
playEffect(world, currentPos, fluid, true);
|
||||||
blockEntity.award(AllAdvancements.HOSE_PULLEY);
|
blockEntity.award(AllAdvancements.HOSE_PULLEY);
|
||||||
|
|
||||||
if (infinite) {
|
|
||||||
if (FluidHelper.isLava(fluid))
|
|
||||||
blockEntity.award(AllAdvancements.HOSE_PULLEY_LAVA);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!blockEntity.isVirtual())
|
if (!blockEntity.isVirtual())
|
||||||
world.setBlock(currentPos, emptied, 2 | 16);
|
world.setBlock(currentPos, emptied, 2 | 16);
|
||||||
affectedArea = BBHelper.encapsulate(affectedArea, currentPos);
|
affectedArea = BBHelper.encapsulate(affectedArea, currentPos);
|
||||||
|
@ -273,20 +278,11 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
|
||||||
visited.clear();
|
visited.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
Level world = getWorld();
|
|
||||||
int maxBlocks = maxBlocks();
|
int maxBlocks = maxBlocks();
|
||||||
if (visited.size() > maxBlocks && canDrainInfinitely(fluid) && !queue.isEmpty()) {
|
if (visited.size() > maxBlocks && canDrainInfinitely(fluid) && !queue.isEmpty()) {
|
||||||
infinite = true;
|
infinite = true;
|
||||||
// Find first block with valid fluid
|
BlockPos firstValid = queue.first()
|
||||||
while (true) {
|
.pos();
|
||||||
BlockPos first = queue.first().pos();
|
|
||||||
if (canPullFluidsFrom(world.getBlockState(first), first) != FluidBlockType.SOURCE) {
|
|
||||||
queue.dequeue();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
BlockPos firstValid = queue.first().pos();
|
|
||||||
frontier.clear();
|
frontier.clear();
|
||||||
visited.clear();
|
visited.clear();
|
||||||
queue.clear();
|
queue.clear();
|
||||||
|
|
|
@ -21,7 +21,6 @@ import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock;
|
||||||
import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape;
|
import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape;
|
||||||
import com.simibubi.create.content.logistics.block.funnel.FunnelBlock;
|
import com.simibubi.create.content.logistics.block.funnel.FunnelBlock;
|
||||||
import com.simibubi.create.foundation.blockEntity.BlockEntityBehaviour;
|
import com.simibubi.create.foundation.blockEntity.BlockEntityBehaviour;
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.CenteredSideValueBoxTransform;
|
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.belt.DirectBeltInputBehaviour;
|
import com.simibubi.create.foundation.blockEntity.behaviour.belt.DirectBeltInputBehaviour;
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour;
|
import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour;
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.filtering.SidedFilteringBehaviour;
|
import com.simibubi.create.foundation.blockEntity.behaviour.filtering.SidedFilteringBehaviour;
|
||||||
|
@ -66,7 +65,7 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
||||||
|
|
||||||
ItemStack stackToDistribute;
|
ItemStack stackToDistribute;
|
||||||
Direction stackEnteredFrom;
|
Direction stackEnteredFrom;
|
||||||
|
|
||||||
float distributionProgress;
|
float distributionProgress;
|
||||||
int distributionDistanceLeft;
|
int distributionDistanceLeft;
|
||||||
int distributionDistanceRight;
|
int distributionDistanceRight;
|
||||||
|
@ -98,8 +97,9 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
||||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||||
super.addBehaviours(behaviours);
|
super.addBehaviours(behaviours);
|
||||||
behaviours.add(selectionMode = new ScrollOptionBehaviour<>(SelectionMode.class,
|
behaviours.add(selectionMode = new ScrollOptionBehaviour<>(SelectionMode.class,
|
||||||
Lang.translateDirect("logistics.when_multiple_outputs_available"), this,
|
Lang.translateDirect("logistics.when_multiple_outputs_available"), this, new BrassTunnelModeSlot()));
|
||||||
new CenteredSideValueBoxTransform((state, d) -> d == Direction.UP)));
|
|
||||||
|
selectionMode.onlyActiveWhen(this::hasDistributionBehaviour);
|
||||||
|
|
||||||
// Propagate settings across connected tunnels
|
// Propagate settings across connected tunnels
|
||||||
selectionMode.withCallback(setting -> {
|
selectionMode.withCallback(setting -> {
|
||||||
|
@ -159,7 +159,8 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
||||||
continue;
|
continue;
|
||||||
distributionTargets.get(!tunnel.flapFilterEmpty(output))
|
distributionTargets.get(!tunnel.flapFilterEmpty(output))
|
||||||
.add(Pair.of(tunnel.worldPosition, output));
|
.add(Pair.of(tunnel.worldPosition, output));
|
||||||
int distance = tunnel.worldPosition.getX() + tunnel.worldPosition.getZ() - worldPosition.getX() - worldPosition.getZ();
|
int distance = tunnel.worldPosition.getX() + tunnel.worldPosition.getZ() - worldPosition.getX()
|
||||||
|
- worldPosition.getZ();
|
||||||
if (distance < 0)
|
if (distance < 0)
|
||||||
distributionDistanceLeft = Math.max(distributionDistanceLeft, -distance);
|
distributionDistanceLeft = Math.max(distributionDistanceLeft, -distance);
|
||||||
else
|
else
|
||||||
|
@ -527,7 +528,7 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
||||||
continue;
|
continue;
|
||||||
if (!tunnelBE.sides.contains(direction))
|
if (!tunnelBE.sides.contains(direction))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
BlockPos offset = tunnelBE.worldPosition.below()
|
BlockPos offset = tunnelBE.worldPosition.below()
|
||||||
.relative(direction);
|
.relative(direction);
|
||||||
|
|
||||||
|
@ -578,11 +579,11 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
||||||
compound.putBoolean("SyncedOutput", syncedOutputActive);
|
compound.putBoolean("SyncedOutput", syncedOutputActive);
|
||||||
compound.putBoolean("ConnectedLeft", connectedLeft);
|
compound.putBoolean("ConnectedLeft", connectedLeft);
|
||||||
compound.putBoolean("ConnectedRight", connectedRight);
|
compound.putBoolean("ConnectedRight", connectedRight);
|
||||||
|
|
||||||
compound.put("StackToDistribute", stackToDistribute.serializeNBT());
|
compound.put("StackToDistribute", stackToDistribute.serializeNBT());
|
||||||
if (stackEnteredFrom != null)
|
if (stackEnteredFrom != null)
|
||||||
NBTHelper.writeEnum(compound, "StackEnteredFrom", stackEnteredFrom);
|
NBTHelper.writeEnum(compound, "StackEnteredFrom", stackEnteredFrom);
|
||||||
|
|
||||||
compound.putFloat("DistributionProgress", distributionProgress);
|
compound.putFloat("DistributionProgress", distributionProgress);
|
||||||
compound.putInt("PreviousIndex", previousOutputIndex);
|
compound.putInt("PreviousIndex", previousOutputIndex);
|
||||||
compound.putInt("DistanceLeft", distributionDistanceLeft);
|
compound.putInt("DistanceLeft", distributionDistanceLeft);
|
||||||
|
@ -610,7 +611,7 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
||||||
syncedOutputActive = compound.getBoolean("SyncedOutput");
|
syncedOutputActive = compound.getBoolean("SyncedOutput");
|
||||||
connectedLeft = compound.getBoolean("ConnectedLeft");
|
connectedLeft = compound.getBoolean("ConnectedLeft");
|
||||||
connectedRight = compound.getBoolean("ConnectedRight");
|
connectedRight = compound.getBoolean("ConnectedRight");
|
||||||
|
|
||||||
stackToDistribute = ItemStack.of(compound.getCompound("StackToDistribute"));
|
stackToDistribute = ItemStack.of(compound.getCompound("StackToDistribute"));
|
||||||
stackEnteredFrom =
|
stackEnteredFrom =
|
||||||
compound.contains("StackEnteredFrom") ? NBTHelper.readEnum(compound, "StackEnteredFrom", Direction.class)
|
compound.contains("StackEnteredFrom") ? NBTHelper.readEnum(compound, "StackEnteredFrom", Direction.class)
|
||||||
|
@ -718,7 +719,7 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
||||||
super.invalidate();
|
super.invalidate();
|
||||||
tunnelCapability.invalidate();
|
tunnelCapability.invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void destroy() {
|
public void destroy() {
|
||||||
super.destroy();
|
super.destroy();
|
||||||
|
@ -781,20 +782,22 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
||||||
List<ItemStack> allStacks = grabAllStacksOfGroup(true);
|
List<ItemStack> allStacks = grabAllStacksOfGroup(true);
|
||||||
if (allStacks.isEmpty())
|
if (allStacks.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
tooltip.add(componentSpacing.plainCopy()
|
tooltip.add(componentSpacing.plainCopy()
|
||||||
.append(Lang.translateDirect("tooltip.brass_tunnel.contains"))
|
.append(Lang.translateDirect("tooltip.brass_tunnel.contains"))
|
||||||
.withStyle(ChatFormatting.WHITE));
|
.withStyle(ChatFormatting.WHITE));
|
||||||
for (ItemStack item : allStacks) {
|
for (ItemStack item : allStacks) {
|
||||||
tooltip.add(componentSpacing.plainCopy()
|
tooltip.add(componentSpacing.plainCopy()
|
||||||
.append(Lang.translateDirect("tooltip.brass_tunnel.contains_entry", Components.translatable(item.getDescriptionId())
|
.append(Lang.translateDirect("tooltip.brass_tunnel.contains_entry",
|
||||||
.getString(), item.getCount()))
|
Components.translatable(item.getDescriptionId())
|
||||||
|
.getString(),
|
||||||
|
item.getCount()))
|
||||||
.withStyle(ChatFormatting.GRAY));
|
.withStyle(ChatFormatting.GRAY));
|
||||||
}
|
}
|
||||||
tooltip.add(componentSpacing.plainCopy()
|
tooltip.add(componentSpacing.plainCopy()
|
||||||
.append(Lang.translateDirect("tooltip.brass_tunnel.retrieve"))
|
.append(Lang.translateDirect("tooltip.brass_tunnel.retrieve"))
|
||||||
.withStyle(ChatFormatting.DARK_GRAY));
|
.withStyle(ChatFormatting.DARK_GRAY));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,39 +4,45 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import com.simibubi.create.AllSpriteShifts;
|
import com.simibubi.create.AllSpriteShifts;
|
||||||
import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry;
|
import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry;
|
||||||
|
import com.simibubi.create.foundation.block.connected.CTType;
|
||||||
import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour;
|
import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.level.BlockAndTintGetter;
|
import net.minecraft.world.level.BlockAndTintGetter;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
|
||||||
public class BrassTunnelCTBehaviour extends ConnectedTextureBehaviour.Base {
|
public class BrassTunnelCTBehaviour extends ConnectedTextureBehaviour.Base {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable CTType getDataType(BlockAndTintGetter world, BlockPos pos, BlockState state, Direction direction) {
|
||||||
|
if (!(world.getBlockEntity(pos) instanceof BrassTunnelBlockEntity tunnelBE)
|
||||||
|
|| !tunnelBE.hasDistributionBehaviour())
|
||||||
|
return null;
|
||||||
|
return super.getDataType(world, pos, state, direction);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CTSpriteShiftEntry getShift(BlockState state, Direction direction, @Nullable TextureAtlasSprite sprite) {
|
public CTSpriteShiftEntry getShift(BlockState state, Direction direction, @Nullable TextureAtlasSprite sprite) {
|
||||||
return direction == Direction.UP ? AllSpriteShifts.BRASS_TUNNEL_TOP : null;
|
return direction == Direction.UP ? AllSpriteShifts.BRASS_TUNNEL_TOP : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean reverseUVs(BlockState state, Direction face) {
|
protected boolean reverseUVs(BlockState state, Direction face) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean connectsTo(BlockState state, BlockState other, BlockAndTintGetter reader, BlockPos pos, BlockPos otherPos,
|
public boolean connectsTo(BlockState state, BlockState other, BlockAndTintGetter reader, BlockPos pos,
|
||||||
Direction face) {
|
BlockPos otherPos, Direction face) {
|
||||||
int yDiff = otherPos.getY() - pos.getY();
|
int yDiff = otherPos.getY() - pos.getY();
|
||||||
int zDiff = otherPos.getZ() - pos.getZ();
|
int zDiff = otherPos.getZ() - pos.getZ();
|
||||||
if (yDiff != 0)
|
if (yDiff != 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
BlockEntity be = reader.getBlockEntity(pos);
|
if (!(reader.getBlockEntity(pos) instanceof BrassTunnelBlockEntity tunnelBE))
|
||||||
if (!(be instanceof BrassTunnelBlockEntity))
|
|
||||||
return false;
|
return false;
|
||||||
BrassTunnelBlockEntity tunnelBE = (BrassTunnelBlockEntity) be;
|
|
||||||
boolean leftSide = zDiff > 0;
|
boolean leftSide = zDiff > 0;
|
||||||
return tunnelBE.isConnected(leftSide);
|
return tunnelBE.isConnected(leftSide);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
package com.simibubi.create.content.logistics.block.belts.tunnel;
|
||||||
|
|
||||||
|
import com.simibubi.create.foundation.blockEntity.behaviour.CenteredSideValueBoxTransform;
|
||||||
|
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
|
||||||
|
public class BrassTunnelModeSlot extends CenteredSideValueBoxTransform {
|
||||||
|
|
||||||
|
public BrassTunnelModeSlot() {
|
||||||
|
super((state, d) -> d == Direction.UP);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOverrideColor() {
|
||||||
|
return 0x592424;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -25,4 +25,9 @@ public class BrassDiodeScrollSlot extends ValueBoxTransform {
|
||||||
.rotateX(90);
|
.rotateX(90);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOverrideColor() {
|
||||||
|
return 0x592424;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
|
import net.minecraft.world.level.block.entity.SignBlockEntity;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
|
||||||
|
@ -222,6 +223,10 @@ public class AllDisplayBehaviours {
|
||||||
DisplayTarget targetOfBlock = targetOf(blockState);
|
DisplayTarget targetOfBlock = targetOf(blockState);
|
||||||
DisplayTarget targetOfBlockEntity = blockEntity == null ? null : targetOf(blockEntity);
|
DisplayTarget targetOfBlockEntity = blockEntity == null ? null : targetOf(blockEntity);
|
||||||
|
|
||||||
|
// Commonly added by mods, but with a non-vanilla blockentitytype
|
||||||
|
if (targetOfBlockEntity == null && blockEntity instanceof SignBlockEntity)
|
||||||
|
targetOfBlockEntity = targetOf(BlockEntityType.SIGN);
|
||||||
|
|
||||||
if (targetOfBlockEntity == null)
|
if (targetOfBlockEntity == null)
|
||||||
return targetOfBlock;
|
return targetOfBlock;
|
||||||
return targetOfBlockEntity;
|
return targetOfBlockEntity;
|
||||||
|
|
|
@ -134,9 +134,9 @@ public class BoilerDisplaySource extends DisplaySource {
|
||||||
}
|
}
|
||||||
|
|
||||||
return Stream.of(List.of(Lang.translateDirect(label, boiler.getHeatLevelTextComponent())),
|
return Stream.of(List.of(Lang.translateDirect(label, boiler.getHeatLevelTextComponent())),
|
||||||
List.of(size, boiler.getSizeComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.BLACK)),
|
List.of(size, boiler.getSizeComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.RESET)),
|
||||||
List.of(water, boiler.getWaterComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.BLACK)),
|
List.of(water, boiler.getWaterComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.RESET)),
|
||||||
List.of(heat, boiler.getHeatComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.BLACK)));
|
List.of(heat, boiler.getHeatComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.RESET)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private int labelWidth() {
|
private int labelWidth() {
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class CTModel extends BakedModelWrapperWithData {
|
||||||
&& !(actualState.getBlock()instanceof CopycatBlock ufb
|
&& !(actualState.getBlock()instanceof CopycatBlock ufb
|
||||||
&& !ufb.canFaceBeOccluded(actualState, face)))
|
&& !ufb.canFaceBeOccluded(actualState, face)))
|
||||||
continue;
|
continue;
|
||||||
CTType dataType = behaviour.getDataType(state, face);
|
CTType dataType = behaviour.getDataType(world, pos, state, face);
|
||||||
if (dataType == null)
|
if (dataType == null)
|
||||||
continue;
|
continue;
|
||||||
CTContext context = behaviour.buildContext(world, pos, state, face, dataType.getContextRequirement());
|
CTContext context = behaviour.buildContext(world, pos, state, face, dataType.getContextRequirement());
|
||||||
|
|
|
@ -21,7 +21,7 @@ public abstract class ConnectedTextureBehaviour {
|
||||||
|
|
||||||
// TODO: allow more than one data type per state/face?
|
// TODO: allow more than one data type per state/face?
|
||||||
@Nullable
|
@Nullable
|
||||||
public abstract CTType getDataType(BlockState state, Direction direction);
|
public abstract CTType getDataType(BlockAndTintGetter world, BlockPos pos, BlockState state, Direction direction);
|
||||||
|
|
||||||
public boolean buildContextForOccludedDirections() {
|
public boolean buildContextForOccludedDirections() {
|
||||||
return false;
|
return false;
|
||||||
|
@ -32,7 +32,7 @@ public abstract class ConnectedTextureBehaviour {
|
||||||
BlockPos blockingPos = otherPos.relative(face);
|
BlockPos blockingPos = otherPos.relative(face);
|
||||||
BlockState blockState = reader.getBlockState(pos);
|
BlockState blockState = reader.getBlockState(pos);
|
||||||
|
|
||||||
if (blockState.getBlock()instanceof CopycatBlock ufb
|
if (blockState.getBlock() instanceof CopycatBlock ufb
|
||||||
&& ufb.isUnblockableConnectivitySide(reader, blockState, face, pos, otherPos))
|
&& ufb.isUnblockableConnectivitySide(reader, blockState, face, pos, otherPos))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ public abstract class ConnectedTextureBehaviour {
|
||||||
.relative(vertical, sv);
|
.relative(vertical, sv);
|
||||||
BlockState blockState = reader.getBlockState(pos);
|
BlockState blockState = reader.getBlockState(pos);
|
||||||
|
|
||||||
if (blockState.getBlock()instanceof CopycatBlock ufb
|
if (blockState.getBlock() instanceof CopycatBlock ufb
|
||||||
&& ufb.isIgnoredConnectivitySide(reader, blockState, face, pos, p))
|
&& ufb.isIgnoredConnectivitySide(reader, blockState, face, pos, p))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ public abstract class ConnectedTextureBehaviour {
|
||||||
BlockPos toPos) {
|
BlockPos toPos) {
|
||||||
BlockState blockState = reader.getBlockState(toPos);
|
BlockState blockState = reader.getBlockState(toPos);
|
||||||
|
|
||||||
if (blockState.getBlock()instanceof CopycatBlock ufb) {
|
if (blockState.getBlock() instanceof CopycatBlock ufb) {
|
||||||
BlockState connectiveMaterial = ufb.getConnectiveMaterial(reader, reference, face, fromPos, toPos);
|
BlockState connectiveMaterial = ufb.getConnectiveMaterial(reader, reference, face, fromPos, toPos);
|
||||||
return connectiveMaterial == null ? blockState : connectiveMaterial;
|
return connectiveMaterial == null ? blockState : connectiveMaterial;
|
||||||
}
|
}
|
||||||
|
@ -274,7 +274,7 @@ public abstract class ConnectedTextureBehaviour {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public CTType getDataType(BlockState state, Direction direction) {
|
public CTType getDataType(BlockAndTintGetter world, BlockPos pos, BlockState state, Direction direction) {
|
||||||
CTSpriteShiftEntry shift = getShift(state, direction, null);
|
CTSpriteShiftEntry shift = getShift(state, direction, null);
|
||||||
if (shift == null) {
|
if (shift == null) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -30,8 +30,8 @@ public class ValueBox extends ChasingAABBOutline {
|
||||||
protected Component scrollTooltip = Components.immutableEmpty();
|
protected Component scrollTooltip = Components.immutableEmpty();
|
||||||
protected Vec3 labelOffset = Vec3.ZERO;
|
protected Vec3 labelOffset = Vec3.ZERO;
|
||||||
|
|
||||||
protected int passiveColor;
|
public int overrideColor = -1;
|
||||||
protected int highlightColor;
|
|
||||||
public boolean isPassive;
|
public boolean isPassive;
|
||||||
|
|
||||||
protected BlockPos pos;
|
protected BlockPos pos;
|
||||||
|
@ -65,6 +65,11 @@ public class ValueBox extends ChasingAABBOutline {
|
||||||
this.isPassive = passive;
|
this.isPassive = passive;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ValueBox withColor(int color) {
|
||||||
|
this.overrideColor = color;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(PoseStack ms, SuperRenderTypeBuffer buffer, float pt) {
|
public void render(PoseStack ms, SuperRenderTypeBuffer buffer, float pt) {
|
||||||
|
@ -183,7 +188,7 @@ public class ValueBox extends ChasingAABBOutline {
|
||||||
Font font = Minecraft.getInstance().font;
|
Font font = Minecraft.getInstance().font;
|
||||||
float scale = 3;
|
float scale = 3;
|
||||||
ms.scale(scale, scale, 1);
|
ms.scale(scale, scale, 1);
|
||||||
ms.translate(-4, -4, 5);
|
ms.translate(-4, -3.75, 5);
|
||||||
|
|
||||||
int stringWidth = font.width(text);
|
int stringWidth = font.width(text);
|
||||||
float numberScale = (float) font.lineHeight / stringWidth;
|
float numberScale = (float) font.lineHeight / stringWidth;
|
||||||
|
@ -195,7 +200,8 @@ public class ValueBox extends ChasingAABBOutline {
|
||||||
ms.scale(numberScale, numberScale, numberScale);
|
ms.scale(numberScale, numberScale, numberScale);
|
||||||
ms.translate(singleDigit ? stringWidth / 2 : 0, singleDigit ? -verticalMargin : verticalMargin, 0);
|
ms.translate(singleDigit ? stringWidth / 2 : 0, singleDigit ? -verticalMargin : verticalMargin, 0);
|
||||||
|
|
||||||
renderHoveringText(ms, buffer, text, 0xEDEDED, 0x4f4f4f);
|
int overrideColor = transform.getOverrideColor();
|
||||||
|
renderHoveringText(ms, buffer, text, overrideColor != -1 ? overrideColor : 0xEDEDED);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -214,17 +220,16 @@ public class ValueBox extends ChasingAABBOutline {
|
||||||
float scale = 2 * 16;
|
float scale = 2 * 16;
|
||||||
ms.scale(scale, scale, scale);
|
ms.scale(scale, scale, scale);
|
||||||
ms.translate(-.5f, -.5f, 5 / 32f);
|
ms.translate(-.5f, -.5f, 5 / 32f);
|
||||||
icon.render(ms, buffer, 0xFFFFFF);
|
|
||||||
|
int overrideColor = transform.getOverrideColor();
|
||||||
|
icon.render(ms, buffer, overrideColor != -1 ? overrideColor : 0xFFFFFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void renderHoveringText(PoseStack ms, MultiBufferSource buffer, Component text, int color,
|
protected void renderHoveringText(PoseStack ms, MultiBufferSource buffer, Component text, int color) {
|
||||||
int shadowColor) {
|
|
||||||
ms.pushPose();
|
ms.pushPose();
|
||||||
drawString(ms, buffer, text, 0, 0, color);
|
drawString(ms, buffer, text, 0, 0, color);
|
||||||
ms.translate(0, 0, -.25);
|
|
||||||
drawString(ms, buffer, text, 1, 1, shadowColor);
|
|
||||||
ms.popPose();
|
ms.popPose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,10 @@ public abstract class ValueBoxTransform {
|
||||||
public boolean shouldRender(BlockState state) {
|
public boolean shouldRender(BlockState state) {
|
||||||
return state.getMaterial() != Material.AIR && getLocalOffset(state) != null;
|
return state.getMaterial() != Material.AIR && getLocalOffset(state) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getOverrideColor() {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
protected Vec3 rotateHorizontally(BlockState state, Vec3 vec) {
|
protected Vec3 rotateHorizontally(BlockState state, Vec3 vec) {
|
||||||
float yRot = 0;
|
float yRot = 0;
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
"textures": {
|
"textures": {
|
||||||
"3": "create:block/chute",
|
"3": "create:block/chute",
|
||||||
"4": "create:block/chute_large",
|
"4": "create:block/chute_large",
|
||||||
|
"5": "create:block/industrial_iron_block_top",
|
||||||
"particle": "create:block/industrial_iron_block"
|
"particle": "create:block/industrial_iron_block"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
|
@ -15,7 +16,7 @@
|
||||||
"east": {"uv": [0, 0, 16, 16], "texture": "#particle"},
|
"east": {"uv": [0, 0, 16, 16], "texture": "#particle"},
|
||||||
"south": {"uv": [0, 0, 16, 16], "texture": "#particle"},
|
"south": {"uv": [0, 0, 16, 16], "texture": "#particle"},
|
||||||
"west": {"uv": [0, 0, 16, 16], "texture": "#particle"},
|
"west": {"uv": [0, 0, 16, 16], "texture": "#particle"},
|
||||||
"up": {"uv": [0, 0, 16, 16], "texture": "#particle"},
|
"up": {"uv": [0, 0, 16, 16], "texture": "#5"},
|
||||||
"down": {"uv": [0, 0, 8, 8], "texture": "#4"}
|
"down": {"uv": [0, 0, 8, 8], "texture": "#4"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
"from": [2, 5, 14],
|
"from": [2, 5, 14],
|
||||||
"to": [14, 14, 16],
|
"to": [14, 14, 16],
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [1, 0, 7, 4.5], "texture": "#1_7"},
|
"north": {"uv": [1, 0, 7, 3.5], "texture": "#1_7"},
|
||||||
"south": {"uv": [1, 0, 7, 4.5], "texture": "#4"},
|
"south": {"uv": [1, 0, 7, 4.5], "texture": "#4"},
|
||||||
"up": {"uv": [1, 0, 7, 1], "rotation": 180, "texture": "#4"}
|
"up": {"uv": [1, 0, 7, 1], "rotation": 180, "texture": "#4"}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": [2, 5, 7],
|
"from": [2, 5, 7],
|
||||||
"to": [14, 10, 15],
|
"to": [14, 10.1, 15],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0.1, 0]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [1, 16, 7, 13.5], "rotation": 180, "texture": "#4"},
|
"north": {"uv": [1, 16, 7, 13.5], "rotation": 180, "texture": "#4"},
|
||||||
"down": {"uv": [1, 16, 7, 12], "rotation": 180, "texture": "#4"}
|
"down": {"uv": [1, 16, 7, 12], "rotation": 180, "texture": "#4"}
|
||||||
|
@ -58,9 +59,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": [2, 9, 7],
|
"from": [2, 9.1, 7],
|
||||||
"to": [14, 10, 15],
|
"to": [14, 10.1, 15],
|
||||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]},
|
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10.1, 7]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"up": {"uv": [1, 9.5, 7, 13.5], "rotation": 180, "texture": "#4"}
|
"up": {"uv": [1, 9.5, 7, 13.5], "rotation": 180, "texture": "#4"}
|
||||||
}
|
}
|
||||||
|
|
|
@ -314,8 +314,8 @@
|
||||||
},
|
},
|
||||||
"gui": {
|
"gui": {
|
||||||
"rotation": [30, 225, 0],
|
"rotation": [30, 225, 0],
|
||||||
"translation": [0, -1.5, 0],
|
"translation": [0, -2.25, 0],
|
||||||
"scale": [0.4, 0.4, 0.4]
|
"scale": [0.45, 0.45, 0.45]
|
||||||
},
|
},
|
||||||
"fixed": {
|
"fixed": {
|
||||||
"translation": [0, -3, 0],
|
"translation": [0, -3, 0],
|
||||||
|
|
|
@ -4,66 +4,10 @@
|
||||||
"textures": {
|
"textures": {
|
||||||
"0": "create:block/gearbox",
|
"0": "create:block/gearbox",
|
||||||
"5": "create:block/millstone",
|
"5": "create:block/millstone",
|
||||||
"6": "block/polished_andesite",
|
"8": "create:block/andesite_casing",
|
||||||
"13": "block/stripped_spruce_log",
|
"particle": "create:block/palettes/stone_types/cap/andesite_cut_cap"
|
||||||
"particle": "block/polished_andesite"
|
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
|
||||||
"from": [3, 13, 3],
|
|
||||||
"to": [5, 16, 13],
|
|
||||||
"faces": {
|
|
||||||
"north": {"uv": [0, 3, 3, 5], "rotation": 90, "texture": "#13"},
|
|
||||||
"east": {"uv": [0, 0, 10, 3], "texture": "#13"},
|
|
||||||
"south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#13"},
|
|
||||||
"west": {"uv": [0, 0, 3, 10], "rotation": 90, "texture": "#13"},
|
|
||||||
"up": {"uv": [5, 3, 7, 13], "texture": "#13"},
|
|
||||||
"down": {"uv": [0, 0, 2, 10], "texture": "#13"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": [11, 13, 3],
|
|
||||||
"to": [13, 16, 13],
|
|
||||||
"faces": {
|
|
||||||
"north": {"uv": [0, 7, 3, 9], "rotation": 90, "texture": "#13"},
|
|
||||||
"east": {"uv": [0, 10, 3, 0], "rotation": 90, "texture": "#13"},
|
|
||||||
"south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#13"},
|
|
||||||
"west": {"uv": [10, 0, 0, 3], "texture": "#13"},
|
|
||||||
"up": {"uv": [5, 2, 3, 12], "texture": "#13"},
|
|
||||||
"down": {"uv": [2, 0, 0, 10], "texture": "#13"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": [5, 13, 11],
|
|
||||||
"to": [11, 16, 13],
|
|
||||||
"faces": {
|
|
||||||
"north": {"uv": [0, 0, 6, 3], "texture": "#13"},
|
|
||||||
"east": {"uv": [0, 0, 2, 3], "texture": "#13"},
|
|
||||||
"south": {"uv": [0, 3, 3, 9], "rotation": 90, "texture": "#13"},
|
|
||||||
"west": {"uv": [0, 0, 2, 3], "texture": "#13"},
|
|
||||||
"up": {"uv": [10, 4, 12, 10], "rotation": 90, "texture": "#13"},
|
|
||||||
"down": {"uv": [0, 0, 6, 2], "texture": "#13"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": [5, 13, 5],
|
|
||||||
"to": [11, 15, 11],
|
|
||||||
"faces": {
|
|
||||||
"up": {"uv": [6, 0, 9, 3], "rotation": 90, "texture": "#5"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": [5, 13, 3],
|
|
||||||
"to": [11, 16, 5],
|
|
||||||
"faces": {
|
|
||||||
"north": {"uv": [0, 9, 3, 3], "rotation": 90, "texture": "#13"},
|
|
||||||
"east": {"uv": [2, 0, 0, 3], "texture": "#13"},
|
|
||||||
"south": {"uv": [6, 0, 0, 3], "texture": "#13"},
|
|
||||||
"west": {"uv": [2, 0, 0, 3], "texture": "#13"},
|
|
||||||
"up": {"uv": [7, 3, 5, 9], "rotation": 270, "texture": "#13"},
|
|
||||||
"down": {"uv": [0, 2, 6, 0], "texture": "#13"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "bottom",
|
"name": "bottom",
|
||||||
"from": [0, 0, 0],
|
"from": [0, 0, 0],
|
||||||
|
@ -73,7 +17,7 @@
|
||||||
"east": {"uv": [7, 13, 8, 16], "texture": "#5"},
|
"east": {"uv": [7, 13, 8, 16], "texture": "#5"},
|
||||||
"south": {"uv": [0, 13, 8, 16], "texture": "#5"},
|
"south": {"uv": [0, 13, 8, 16], "texture": "#5"},
|
||||||
"west": {"uv": [0, 13, 1, 16], "texture": "#5"},
|
"west": {"uv": [0, 13, 1, 16], "texture": "#5"},
|
||||||
"up": {"uv": [0.5, 8.5, 8.5, 9.5], "texture": "#5"},
|
"up": {"uv": [0, 0, 16, 2], "texture": "#8"},
|
||||||
"down": {"uv": [0, 14, 16, 16], "texture": "#0"}
|
"down": {"uv": [0, 14, 16, 16], "texture": "#0"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -86,7 +30,7 @@
|
||||||
"east": {"uv": [8, 13, 7, 16], "texture": "#5"},
|
"east": {"uv": [8, 13, 7, 16], "texture": "#5"},
|
||||||
"south": {"uv": [8, 13, 0, 16], "texture": "#5"},
|
"south": {"uv": [8, 13, 0, 16], "texture": "#5"},
|
||||||
"west": {"uv": [1, 13, 0, 16], "texture": "#5"},
|
"west": {"uv": [1, 13, 0, 16], "texture": "#5"},
|
||||||
"up": {"uv": [0.5, 9.5, 8.5, 8.5], "texture": "#5"},
|
"up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#8"},
|
||||||
"down": {"uv": [0, 16, 16, 14], "texture": "#0"}
|
"down": {"uv": [0, 16, 16, 14], "texture": "#0"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -96,7 +40,7 @@
|
||||||
"faces": {
|
"faces": {
|
||||||
"east": {"uv": [1, 13, 7, 16], "texture": "#5"},
|
"east": {"uv": [1, 13, 7, 16], "texture": "#5"},
|
||||||
"west": {"uv": [1, 13, 7, 16], "texture": "#5"},
|
"west": {"uv": [1, 13, 7, 16], "texture": "#5"},
|
||||||
"up": {"uv": [1.5, 8.5, 7.5, 9.5], "rotation": 270, "texture": "#5"},
|
"up": {"uv": [0, 14, 2, 2], "texture": "#8"},
|
||||||
"down": {"uv": [0, 2, 2, 14], "texture": "#0"}
|
"down": {"uv": [0, 2, 2, 14], "texture": "#0"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -106,7 +50,7 @@
|
||||||
"faces": {
|
"faces": {
|
||||||
"east": {"uv": [7, 13, 1, 16], "texture": "#5"},
|
"east": {"uv": [7, 13, 1, 16], "texture": "#5"},
|
||||||
"west": {"uv": [7, 13, 1, 16], "texture": "#5"},
|
"west": {"uv": [7, 13, 1, 16], "texture": "#5"},
|
||||||
"up": {"uv": [1.5, 9.5, 7.5, 8.5], "rotation": 270, "texture": "#5"},
|
"up": {"uv": [0, 14, 2, 2], "rotation": 180, "texture": "#8"},
|
||||||
"down": {"uv": [2, 2, 0, 14], "texture": "#0"}
|
"down": {"uv": [2, 2, 0, 14], "texture": "#0"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -114,50 +58,30 @@
|
||||||
"from": [2, 1, 2],
|
"from": [2, 1, 2],
|
||||||
"to": [14, 6, 14],
|
"to": [14, 6, 14],
|
||||||
"faces": {
|
"faces": {
|
||||||
"up": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#6"},
|
"up": {"uv": [0, 0, 6, 6], "rotation": 270, "texture": "#5"},
|
||||||
"down": {"uv": [2, 2, 14, 14], "texture": "#0"}
|
"down": {"uv": [2, 2, 14, 14], "texture": "#0"}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [3, 12, 3],
|
||||||
|
"to": [13, 16, 13],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [11, 9, 16, 11], "texture": "#5"},
|
||||||
|
"east": {"uv": [11, 9, 16, 11], "texture": "#5"},
|
||||||
|
"south": {"uv": [11, 9, 16, 11], "texture": "#5"},
|
||||||
|
"west": {"uv": [11, 9, 16, 11], "texture": "#5"},
|
||||||
|
"up": {"uv": [16, 11, 11, 16], "texture": "#5"},
|
||||||
|
"down": {"uv": [16, 11, 11, 16], "texture": "#5"}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"display": {
|
"groups": [
|
||||||
"thirdperson_righthand": {
|
|
||||||
"rotation": [75, -149, 0],
|
|
||||||
"translation": [0, 2.5, 0],
|
|
||||||
"scale": [0.375, 0.375, 0.375]
|
|
||||||
},
|
|
||||||
"thirdperson_lefthand": {
|
|
||||||
"rotation": [75, -149, 0],
|
|
||||||
"translation": [0, 2.5, 0],
|
|
||||||
"scale": [0.375, 0.375, 0.375]
|
|
||||||
},
|
|
||||||
"firstperson_righthand": {
|
|
||||||
"rotation": [0, -55, 0],
|
|
||||||
"scale": [0.4, 0.4, 0.4]
|
|
||||||
},
|
|
||||||
"firstperson_lefthand": {
|
|
||||||
"rotation": [0, -55, 0],
|
|
||||||
"scale": [0.4, 0.4, 0.4]
|
|
||||||
},
|
|
||||||
"ground": {
|
|
||||||
"translation": [0, 1, 1.25],
|
|
||||||
"scale": [0.25, 0.25, 0.25]
|
|
||||||
},
|
|
||||||
"gui": {
|
|
||||||
"rotation": [30, 45, 0],
|
|
||||||
"translation": [2.5, -0.5, 0],
|
|
||||||
"scale": [0.625, 0.625, 0.625]
|
|
||||||
},
|
|
||||||
"fixed": {
|
|
||||||
"rotation": [0, 180, 0],
|
|
||||||
"translation": [0, 1.75, -4.5],
|
|
||||||
"scale": [0.5, 0.5, 0.5]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"groups": [0, 1, 2, 3, 4,
|
|
||||||
{
|
{
|
||||||
"name": "bottom",
|
"name": "bottom",
|
||||||
"origin": [8, 8, 8],
|
"origin": [8, 8, 8],
|
||||||
"children": [5, 6, 7, 8, 9]
|
"color": 0,
|
||||||
}
|
"children": [0, 1, 2, 3, 4]
|
||||||
|
},
|
||||||
|
5
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -11,8 +11,9 @@
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
"name": "Gear5",
|
"name": "Gear5",
|
||||||
"from": [6.5, 6.5, -1],
|
"from": [6.5, 6, -1],
|
||||||
"to": [9.5, 12.5, 17],
|
"to": [9.5, 12, 17],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [0, -0.5, 0]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
"north": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||||
"east": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
"east": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||||
|
@ -24,9 +25,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Gear6",
|
"name": "Gear6",
|
||||||
"from": [6.5, 6.5, -1],
|
"from": [6.5, 6, -1],
|
||||||
"to": [9.5, 12.5, 17],
|
"to": [9.5, 12, 17],
|
||||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
|
"rotation": {"angle": 45, "axis": "y", "origin": [8, 7.5, 8]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
"north": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||||
"east": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
"east": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||||
|
@ -38,9 +39,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Gear7",
|
"name": "Gear7",
|
||||||
"from": [-1, 6.5, 6.5],
|
"from": [-1, 6, 6.5],
|
||||||
"to": [17, 12.5, 9.5],
|
"to": [17, 12, 9.5],
|
||||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
|
"rotation": {"angle": 45, "axis": "y", "origin": [8, 7.5, 8]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
"north": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||||
"east": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
"east": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||||
|
@ -52,8 +53,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Gear7",
|
"name": "Gear7",
|
||||||
"from": [-1, 6.5, 6.5],
|
"from": [-1, 6, 6.5],
|
||||||
"to": [17, 12.5, 9.5],
|
"to": [17, 12, 9.5],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [0, -0.5, 0]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
"north": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||||
"east": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
"east": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||||
|
@ -65,9 +67,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "GearCaseInner",
|
"name": "GearCaseInner",
|
||||||
"from": [2, 7, 2],
|
"from": [2, 6.5, 2],
|
||||||
"to": [14, 12, 14],
|
"to": [14, 11.5, 14],
|
||||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.5, 8]},
|
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [0, 6, 6, 8.5], "texture": "#5"},
|
"north": {"uv": [0, 6, 6, 8.5], "texture": "#5"},
|
||||||
"east": {"uv": [0, 6, 6, 8.5], "texture": "#5"},
|
"east": {"uv": [0, 6, 6, 8.5], "texture": "#5"},
|
||||||
|
@ -77,19 +79,6 @@
|
||||||
"down": {"uv": [0, 0, 6, 6], "texture": "#5"}
|
"down": {"uv": [0, 0, 6, 6], "texture": "#5"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "GearCaseOuter",
|
|
||||||
"from": [4, 6, 4],
|
|
||||||
"to": [12, 13, 12],
|
|
||||||
"faces": {
|
|
||||||
"north": {"uv": [6, 4.5, 10, 8], "texture": "#5"},
|
|
||||||
"east": {"uv": [6, 4.5, 10, 8], "texture": "#5"},
|
|
||||||
"south": {"uv": [6, 4.5, 10, 8], "texture": "#5"},
|
|
||||||
"west": {"uv": [6, 4.5, 10, 8], "texture": "#5"},
|
|
||||||
"up": {"uv": [1, 1, 5, 5], "texture": "#5"},
|
|
||||||
"down": {"uv": [1, 1, 5, 5], "texture": "#5"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Axis",
|
"name": "Axis",
|
||||||
"from": [6, 0, 6],
|
"from": [6, 0, 6],
|
||||||
|
@ -142,12 +131,14 @@
|
||||||
{
|
{
|
||||||
"name": "cogwheel",
|
"name": "cogwheel",
|
||||||
"origin": [8, 8, 8],
|
"origin": [8, 8, 8],
|
||||||
"children": [0, 1, 2, 3, 4, 5]
|
"color": 0,
|
||||||
|
"children": [0, 1, 2, 3, 4]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "shaft_half",
|
"name": "shaft_half",
|
||||||
"origin": [8, 8, 8],
|
"origin": [8, 8, 8],
|
||||||
"children": [6]
|
"color": 0,
|
||||||
|
"children": [5]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -3,16 +3,16 @@
|
||||||
"parent": "block/block",
|
"parent": "block/block",
|
||||||
"textures": {
|
"textures": {
|
||||||
"0": "create:block/gearbox",
|
"0": "create:block/gearbox",
|
||||||
"3": "block/stripped_spruce_log",
|
|
||||||
"5": "create:block/millstone",
|
"5": "create:block/millstone",
|
||||||
"6": "block/polished_andesite",
|
"8": "create:block/andesite_casing",
|
||||||
"particle": "block/polished_andesite"
|
"particle": "create:block/palettes/stone_types/cap/andesite_cut_cap"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
"name": "Gear5",
|
"name": "Gear5",
|
||||||
"from": [6.5, 6.5, -1],
|
"from": [6.5, 6, -1],
|
||||||
"to": [9.5, 12.5, 17],
|
"to": [9.5, 12, 17],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [0, -0.5, 0]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
"north": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||||
"east": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
"east": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||||
|
@ -24,9 +24,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Gear6",
|
"name": "Gear6",
|
||||||
"from": [6.5, 6.5, -1],
|
"from": [6.5, 6, -1],
|
||||||
"to": [9.5, 12.5, 17],
|
"to": [9.5, 12, 17],
|
||||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
|
"rotation": {"angle": 45, "axis": "y", "origin": [8, 7.5, 8]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
"north": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||||
"east": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
"east": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||||
|
@ -38,9 +38,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Gear7",
|
"name": "Gear7",
|
||||||
"from": [-1, 6.5, 6.5],
|
"from": [-1, 6, 6.5],
|
||||||
"to": [17, 12.5, 9.5],
|
"to": [17, 12, 9.5],
|
||||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
|
"rotation": {"angle": 45, "axis": "y", "origin": [8, 7.5, 8]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
"north": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||||
"east": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
"east": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||||
|
@ -52,8 +52,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Gear7",
|
"name": "Gear7",
|
||||||
"from": [-1, 6.5, 6.5],
|
"from": [-1, 6, 6.5],
|
||||||
"to": [17, 12.5, 9.5],
|
"to": [17, 12, 9.5],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [0, -0.5, 0]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
"north": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||||
"east": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
"east": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||||
|
@ -65,8 +66,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "GearCaseInner",
|
"name": "GearCaseInner",
|
||||||
"from": [2, 6.6, 2],
|
"from": [2, 6.1, 2],
|
||||||
"to": [14, 11.6, 14],
|
"to": [14, 11.1, 14],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [0, -0.5, 0]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [0, 6, 6, 8.5], "texture": "#5"},
|
"north": {"uv": [0, 6, 6, 8.5], "texture": "#5"},
|
||||||
"east": {"uv": [0, 6, 6, 8.5], "texture": "#5"},
|
"east": {"uv": [0, 6, 6, 8.5], "texture": "#5"},
|
||||||
|
@ -78,8 +80,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "GearCaseOuter",
|
"name": "GearCaseOuter",
|
||||||
"from": [4, 6, 4],
|
"from": [4, 5.5, 4],
|
||||||
"to": [12, 13, 12],
|
"to": [12, 12.5, 12],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [0, -0.5, 0]},
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [1, 1.5, 5, 5], "texture": "#5"},
|
"north": {"uv": [1, 1.5, 5, 5], "texture": "#5"},
|
||||||
"east": {"uv": [1, 1.5, 5, 5], "texture": "#5"},
|
"east": {"uv": [1, 1.5, 5, 5], "texture": "#5"},
|
||||||
|
@ -87,13 +90,6 @@
|
||||||
"west": {"uv": [1, 1.5, 5, 5], "texture": "#5"}
|
"west": {"uv": [1, 1.5, 5, 5], "texture": "#5"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"from": [5, 13, 5],
|
|
||||||
"to": [11, 15, 11],
|
|
||||||
"faces": {
|
|
||||||
"up": {"uv": [6, 0, 9, 3], "rotation": 90, "texture": "#5"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "bottom",
|
"name": "bottom",
|
||||||
"from": [0, 0, 0],
|
"from": [0, 0, 0],
|
||||||
|
@ -103,7 +99,7 @@
|
||||||
"east": {"uv": [7, 13, 8, 16], "texture": "#5"},
|
"east": {"uv": [7, 13, 8, 16], "texture": "#5"},
|
||||||
"south": {"uv": [0, 13, 8, 16], "texture": "#5"},
|
"south": {"uv": [0, 13, 8, 16], "texture": "#5"},
|
||||||
"west": {"uv": [0, 13, 1, 16], "texture": "#5"},
|
"west": {"uv": [0, 13, 1, 16], "texture": "#5"},
|
||||||
"up": {"uv": [0.5, 8.5, 8.5, 9.5], "texture": "#5"},
|
"up": {"uv": [0, 0, 16, 2], "texture": "#8"},
|
||||||
"down": {"uv": [0, 14, 16, 16], "texture": "#0"}
|
"down": {"uv": [0, 14, 16, 16], "texture": "#0"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -116,7 +112,7 @@
|
||||||
"east": {"uv": [8, 13, 7, 16], "texture": "#5"},
|
"east": {"uv": [8, 13, 7, 16], "texture": "#5"},
|
||||||
"south": {"uv": [8, 13, 0, 16], "texture": "#5"},
|
"south": {"uv": [8, 13, 0, 16], "texture": "#5"},
|
||||||
"west": {"uv": [1, 13, 0, 16], "texture": "#5"},
|
"west": {"uv": [1, 13, 0, 16], "texture": "#5"},
|
||||||
"up": {"uv": [0.5, 9.5, 8.5, 8.5], "texture": "#5"},
|
"up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#8"},
|
||||||
"down": {"uv": [0, 16, 16, 14], "texture": "#0"}
|
"down": {"uv": [0, 16, 16, 14], "texture": "#0"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -126,7 +122,7 @@
|
||||||
"faces": {
|
"faces": {
|
||||||
"east": {"uv": [1, 13, 7, 16], "texture": "#5"},
|
"east": {"uv": [1, 13, 7, 16], "texture": "#5"},
|
||||||
"west": {"uv": [1, 13, 7, 16], "texture": "#5"},
|
"west": {"uv": [1, 13, 7, 16], "texture": "#5"},
|
||||||
"up": {"uv": [1.5, 8.5, 7.5, 9.5], "rotation": 270, "texture": "#5"},
|
"up": {"uv": [0, 14, 2, 2], "texture": "#8"},
|
||||||
"down": {"uv": [0, 2, 2, 14], "texture": "#0"}
|
"down": {"uv": [0, 2, 2, 14], "texture": "#0"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -136,7 +132,7 @@
|
||||||
"faces": {
|
"faces": {
|
||||||
"east": {"uv": [7, 13, 1, 16], "texture": "#5"},
|
"east": {"uv": [7, 13, 1, 16], "texture": "#5"},
|
||||||
"west": {"uv": [7, 13, 1, 16], "texture": "#5"},
|
"west": {"uv": [7, 13, 1, 16], "texture": "#5"},
|
||||||
"up": {"uv": [1.5, 9.5, 7.5, 8.5], "rotation": 270, "texture": "#5"},
|
"up": {"uv": [0, 14, 2, 2], "rotation": 180, "texture": "#8"},
|
||||||
"down": {"uv": [2, 2, 0, 14], "texture": "#0"}
|
"down": {"uv": [2, 2, 0, 14], "texture": "#0"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -144,56 +140,20 @@
|
||||||
"from": [2, 1, 2],
|
"from": [2, 1, 2],
|
||||||
"to": [14, 6, 14],
|
"to": [14, 6, 14],
|
||||||
"faces": {
|
"faces": {
|
||||||
"up": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#6"},
|
"up": {"uv": [0, 0, 6, 6], "rotation": 270, "texture": "#5"},
|
||||||
"down": {"uv": [2, 2, 14, 14], "texture": "#0"}
|
"down": {"uv": [2, 2, 14, 14], "texture": "#0"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": [11, 13, 3],
|
"from": [3, 12, 3],
|
||||||
"to": [13, 16, 13],
|
"to": [13, 16, 13],
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [0, 7, 3, 9], "rotation": 90, "texture": "#3"},
|
"north": {"uv": [11, 9, 16, 11], "texture": "#5"},
|
||||||
"east": {"uv": [0, 10, 3, 0], "rotation": 90, "texture": "#3"},
|
"east": {"uv": [11, 9, 16, 11], "texture": "#5"},
|
||||||
"south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#3"},
|
"south": {"uv": [11, 9, 16, 11], "texture": "#5"},
|
||||||
"west": {"uv": [10, 0, 0, 3], "texture": "#3"},
|
"west": {"uv": [11, 9, 16, 11], "texture": "#5"},
|
||||||
"up": {"uv": [5, 2, 3, 12], "texture": "#3"},
|
"up": {"uv": [16, 11, 11, 16], "texture": "#5"},
|
||||||
"down": {"uv": [2, 0, 0, 10], "texture": "#3"}
|
"down": {"uv": [16, 11, 11, 16], "texture": "#5"}
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": [5, 13, 11],
|
|
||||||
"to": [11, 16, 13],
|
|
||||||
"faces": {
|
|
||||||
"north": {"uv": [0, 0, 6, 3], "texture": "#3"},
|
|
||||||
"east": {"uv": [0, 0, 2, 3], "texture": "#3"},
|
|
||||||
"south": {"uv": [0, 3, 3, 9], "rotation": 90, "texture": "#3"},
|
|
||||||
"west": {"uv": [0, 0, 2, 3], "texture": "#3"},
|
|
||||||
"up": {"uv": [10, 4, 12, 10], "rotation": 90, "texture": "#3"},
|
|
||||||
"down": {"uv": [0, 0, 6, 2], "texture": "#3"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": [5, 13, 3],
|
|
||||||
"to": [11, 16, 5],
|
|
||||||
"faces": {
|
|
||||||
"north": {"uv": [0, 9, 3, 3], "rotation": 90, "texture": "#3"},
|
|
||||||
"east": {"uv": [2, 0, 0, 3], "texture": "#3"},
|
|
||||||
"south": {"uv": [6, 0, 0, 3], "texture": "#3"},
|
|
||||||
"west": {"uv": [2, 0, 0, 3], "texture": "#3"},
|
|
||||||
"up": {"uv": [7, 3, 5, 9], "rotation": 270, "texture": "#3"},
|
|
||||||
"down": {"uv": [0, 2, 6, 0], "texture": "#3"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": [3, 13, 3],
|
|
||||||
"to": [5, 16, 13],
|
|
||||||
"faces": {
|
|
||||||
"north": {"uv": [0, 3, 3, 5], "rotation": 90, "texture": "#3"},
|
|
||||||
"east": {"uv": [0, 0, 10, 3], "texture": "#3"},
|
|
||||||
"south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#3"},
|
|
||||||
"west": {"uv": [0, 0, 3, 10], "rotation": 90, "texture": "#3"},
|
|
||||||
"up": {"uv": [5, 3, 7, 13], "texture": "#3"},
|
|
||||||
"down": {"uv": [0, 0, 2, 10], "texture": "#3"}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -201,11 +161,15 @@
|
||||||
{
|
{
|
||||||
"name": "cogwheel",
|
"name": "cogwheel",
|
||||||
"origin": [8, 8, 8],
|
"origin": [8, 8, 8],
|
||||||
|
"color": 0,
|
||||||
"children": [0, 1, 2, 3, 4, 5]
|
"children": [0, 1, 2, 3, 4, 5]
|
||||||
}, 6,
|
},
|
||||||
{
|
{
|
||||||
"name": "bottom",
|
"name": "bottom",
|
||||||
"origin": [8, 8, 8],
|
"origin": [8, 8, 8],
|
||||||
"children": [7, 8, 9, 10, 11]
|
"color": 0,
|
||||||
}, 12, 13, 14, 15]
|
"children": [6, 7, 8, 9, 10]
|
||||||
|
},
|
||||||
|
11
|
||||||
|
]
|
||||||
}
|
}
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 312 B |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 312 B |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 321 B |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 312 B |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 322 B |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 317 B |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 317 B |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 324 B |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 316 B |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 325 B |
Before Width: | Height: | Size: 514 B After Width: | Height: | Size: 704 B |