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
|
||||
41645919ece236df5804a5a73ef682720194de34 assets/create/models/block/horizontal_framed_glass_pane_side.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
|
||||
65da656d412d973865f50ab7f02e278fe5398bea assets/create/models/block/jungle_window_pane_noside.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": {
|
||||
"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.requiresCorrectToolForDrops())
|
||||
.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)
|
||||
.lang("Block of Industrial Iron")
|
||||
.recipe((c, p) -> p.stonecutting(DataIngredient.tag(Tags.Items.INGOTS_IRON), c::get, 2))
|
||||
|
|
|
@ -253,8 +253,8 @@ public class AllShapes {
|
|||
.build(),
|
||||
SPOUT = shape(1, 2, 1, 15, 14, 15).add(2, 0, 2, 14, 16, 14)
|
||||
.build(),
|
||||
MILLSTONE = shape(0, 0, 0, 16, 6, 16).add(2, 6, 2, 14, 13, 14)
|
||||
.add(3, 13, 3, 13, 16, 13)
|
||||
MILLSTONE = shape(0, 0, 0, 16, 6, 16).add(2, 6, 2, 14, 12, 14)
|
||||
.add(3, 12, 3, 13, 16, 13)
|
||||
.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)
|
||||
|
|
|
@ -64,9 +64,9 @@ public class RollerRenderer extends SmartBlockEntityRenderer<RollerBlockEntity>
|
|||
if (context.contraption.stalled)
|
||||
speed = 0;
|
||||
|
||||
superBuffer.translate(Vec3.atLowerCornerOf(facing.getNormal())
|
||||
.scale(17 / 16f))
|
||||
.transform(matrices.getModel());
|
||||
superBuffer.transform(matrices.getModel())
|
||||
.translate(Vec3.atLowerCornerOf(facing.getNormal())
|
||||
.scale(17 / 16f));
|
||||
HarvesterRenderer.transform(context.world, facing, superBuffer, speed, Vec3.ZERO);
|
||||
|
||||
PoseStack viewProjection = matrices.getViewProjection();
|
||||
|
|
|
@ -83,10 +83,21 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
|
|||
if (validationFrontier.isEmpty() && !queue.isEmpty() && !simulate && revalidateIn == 0)
|
||||
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()) {
|
||||
// Dont dequeue here, so we can decide not to dequeue a valid entry when
|
||||
// simulating
|
||||
BlockPos currentPos = queue.first().pos();
|
||||
BlockPos currentPos = queue.first()
|
||||
.pos();
|
||||
|
||||
BlockState blockState = world.getBlockState(currentPos);
|
||||
BlockState emptied = blockState;
|
||||
Fluid fluid = Fluids.EMPTY;
|
||||
|
@ -137,12 +148,6 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
|
|||
playEffect(world, currentPos, fluid, true);
|
||||
blockEntity.award(AllAdvancements.HOSE_PULLEY);
|
||||
|
||||
if (infinite) {
|
||||
if (FluidHelper.isLava(fluid))
|
||||
blockEntity.award(AllAdvancements.HOSE_PULLEY_LAVA);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!blockEntity.isVirtual())
|
||||
world.setBlock(currentPos, emptied, 2 | 16);
|
||||
affectedArea = BBHelper.encapsulate(affectedArea, currentPos);
|
||||
|
@ -273,20 +278,11 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
|
|||
visited.clear();
|
||||
}
|
||||
|
||||
Level world = getWorld();
|
||||
int maxBlocks = maxBlocks();
|
||||
if (visited.size() > maxBlocks && canDrainInfinitely(fluid) && !queue.isEmpty()) {
|
||||
infinite = true;
|
||||
// Find first block with valid fluid
|
||||
while (true) {
|
||||
BlockPos first = queue.first().pos();
|
||||
if (canPullFluidsFrom(world.getBlockState(first), first) != FluidBlockType.SOURCE) {
|
||||
queue.dequeue();
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
BlockPos firstValid = queue.first().pos();
|
||||
BlockPos firstValid = queue.first()
|
||||
.pos();
|
||||
frontier.clear();
|
||||
visited.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.FunnelBlock;
|
||||
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.filtering.FilteringBehaviour;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.filtering.SidedFilteringBehaviour;
|
||||
|
@ -66,7 +65,7 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
|||
|
||||
ItemStack stackToDistribute;
|
||||
Direction stackEnteredFrom;
|
||||
|
||||
|
||||
float distributionProgress;
|
||||
int distributionDistanceLeft;
|
||||
int distributionDistanceRight;
|
||||
|
@ -98,8 +97,9 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
|||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
super.addBehaviours(behaviours);
|
||||
behaviours.add(selectionMode = new ScrollOptionBehaviour<>(SelectionMode.class,
|
||||
Lang.translateDirect("logistics.when_multiple_outputs_available"), this,
|
||||
new CenteredSideValueBoxTransform((state, d) -> d == Direction.UP)));
|
||||
Lang.translateDirect("logistics.when_multiple_outputs_available"), this, new BrassTunnelModeSlot()));
|
||||
|
||||
selectionMode.onlyActiveWhen(this::hasDistributionBehaviour);
|
||||
|
||||
// Propagate settings across connected tunnels
|
||||
selectionMode.withCallback(setting -> {
|
||||
|
@ -159,7 +159,8 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
|||
continue;
|
||||
distributionTargets.get(!tunnel.flapFilterEmpty(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)
|
||||
distributionDistanceLeft = Math.max(distributionDistanceLeft, -distance);
|
||||
else
|
||||
|
@ -527,7 +528,7 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
|||
continue;
|
||||
if (!tunnelBE.sides.contains(direction))
|
||||
continue;
|
||||
|
||||
|
||||
BlockPos offset = tunnelBE.worldPosition.below()
|
||||
.relative(direction);
|
||||
|
||||
|
@ -578,11 +579,11 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
|||
compound.putBoolean("SyncedOutput", syncedOutputActive);
|
||||
compound.putBoolean("ConnectedLeft", connectedLeft);
|
||||
compound.putBoolean("ConnectedRight", connectedRight);
|
||||
|
||||
|
||||
compound.put("StackToDistribute", stackToDistribute.serializeNBT());
|
||||
if (stackEnteredFrom != null)
|
||||
NBTHelper.writeEnum(compound, "StackEnteredFrom", stackEnteredFrom);
|
||||
|
||||
|
||||
compound.putFloat("DistributionProgress", distributionProgress);
|
||||
compound.putInt("PreviousIndex", previousOutputIndex);
|
||||
compound.putInt("DistanceLeft", distributionDistanceLeft);
|
||||
|
@ -610,7 +611,7 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
|||
syncedOutputActive = compound.getBoolean("SyncedOutput");
|
||||
connectedLeft = compound.getBoolean("ConnectedLeft");
|
||||
connectedRight = compound.getBoolean("ConnectedRight");
|
||||
|
||||
|
||||
stackToDistribute = ItemStack.of(compound.getCompound("StackToDistribute"));
|
||||
stackEnteredFrom =
|
||||
compound.contains("StackEnteredFrom") ? NBTHelper.readEnum(compound, "StackEnteredFrom", Direction.class)
|
||||
|
@ -718,7 +719,7 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
|||
super.invalidate();
|
||||
tunnelCapability.invalidate();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
super.destroy();
|
||||
|
@ -781,20 +782,22 @@ public class BrassTunnelBlockEntity extends BeltTunnelBlockEntity implements IHa
|
|||
List<ItemStack> allStacks = grabAllStacksOfGroup(true);
|
||||
if (allStacks.isEmpty())
|
||||
return false;
|
||||
|
||||
|
||||
tooltip.add(componentSpacing.plainCopy()
|
||||
.append(Lang.translateDirect("tooltip.brass_tunnel.contains"))
|
||||
.withStyle(ChatFormatting.WHITE));
|
||||
for (ItemStack item : allStacks) {
|
||||
tooltip.add(componentSpacing.plainCopy()
|
||||
.append(Lang.translateDirect("tooltip.brass_tunnel.contains_entry", Components.translatable(item.getDescriptionId())
|
||||
.getString(), item.getCount()))
|
||||
.append(Lang.translateDirect("tooltip.brass_tunnel.contains_entry",
|
||||
Components.translatable(item.getDescriptionId())
|
||||
.getString(),
|
||||
item.getCount()))
|
||||
.withStyle(ChatFormatting.GRAY));
|
||||
}
|
||||
tooltip.add(componentSpacing.plainCopy()
|
||||
.append(Lang.translateDirect("tooltip.brass_tunnel.retrieve"))
|
||||
.withStyle(ChatFormatting.DARK_GRAY));
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,39 +4,45 @@ import org.jetbrains.annotations.Nullable;
|
|||
|
||||
import com.simibubi.create.AllSpriteShifts;
|
||||
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 net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
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
|
||||
public CTSpriteShiftEntry getShift(BlockState state, Direction direction, @Nullable TextureAtlasSprite sprite) {
|
||||
return direction == Direction.UP ? AllSpriteShifts.BRASS_TUNNEL_TOP : null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected boolean reverseUVs(BlockState state, Direction face) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean connectsTo(BlockState state, BlockState other, BlockAndTintGetter reader, BlockPos pos, BlockPos otherPos,
|
||||
Direction face) {
|
||||
public boolean connectsTo(BlockState state, BlockState other, BlockAndTintGetter reader, BlockPos pos,
|
||||
BlockPos otherPos, Direction face) {
|
||||
int yDiff = otherPos.getY() - pos.getY();
|
||||
int zDiff = otherPos.getZ() - pos.getZ();
|
||||
if (yDiff != 0)
|
||||
return false;
|
||||
|
||||
BlockEntity be = reader.getBlockEntity(pos);
|
||||
if (!(be instanceof BrassTunnelBlockEntity))
|
||||
if (!(reader.getBlockEntity(pos) instanceof BrassTunnelBlockEntity tunnelBE))
|
||||
return false;
|
||||
BrassTunnelBlockEntity tunnelBE = (BrassTunnelBlockEntity) be;
|
||||
boolean leftSide = zDiff > 0;
|
||||
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);
|
||||
}
|
||||
|
||||
@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.entity.BlockEntity;
|
||||
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.minecraftforge.registries.ForgeRegistries;
|
||||
|
||||
|
@ -222,6 +223,10 @@ public class AllDisplayBehaviours {
|
|||
DisplayTarget targetOfBlock = targetOf(blockState);
|
||||
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)
|
||||
return targetOfBlock;
|
||||
return targetOfBlockEntity;
|
||||
|
|
|
@ -134,9 +134,9 @@ public class BoilerDisplaySource extends DisplaySource {
|
|||
}
|
||||
|
||||
return Stream.of(List.of(Lang.translateDirect(label, boiler.getHeatLevelTextComponent())),
|
||||
List.of(size, boiler.getSizeComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.BLACK)),
|
||||
List.of(water, boiler.getWaterComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.BLACK)),
|
||||
List.of(heat, boiler.getHeatComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.BLACK)));
|
||||
List.of(size, boiler.getSizeComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.RESET)),
|
||||
List.of(water, boiler.getWaterComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.RESET)),
|
||||
List.of(heat, boiler.getHeatComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.RESET)));
|
||||
}
|
||||
|
||||
private int labelWidth() {
|
||||
|
|
|
@ -50,7 +50,7 @@ public class CTModel extends BakedModelWrapperWithData {
|
|||
&& !(actualState.getBlock()instanceof CopycatBlock ufb
|
||||
&& !ufb.canFaceBeOccluded(actualState, face)))
|
||||
continue;
|
||||
CTType dataType = behaviour.getDataType(state, face);
|
||||
CTType dataType = behaviour.getDataType(world, pos, state, face);
|
||||
if (dataType == null)
|
||||
continue;
|
||||
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?
|
||||
@Nullable
|
||||
public abstract CTType getDataType(BlockState state, Direction direction);
|
||||
public abstract CTType getDataType(BlockAndTintGetter world, BlockPos pos, BlockState state, Direction direction);
|
||||
|
||||
public boolean buildContextForOccludedDirections() {
|
||||
return false;
|
||||
|
@ -32,7 +32,7 @@ public abstract class ConnectedTextureBehaviour {
|
|||
BlockPos blockingPos = otherPos.relative(face);
|
||||
BlockState blockState = reader.getBlockState(pos);
|
||||
|
||||
if (blockState.getBlock()instanceof CopycatBlock ufb
|
||||
if (blockState.getBlock() instanceof CopycatBlock ufb
|
||||
&& ufb.isUnblockableConnectivitySide(reader, blockState, face, pos, otherPos))
|
||||
return false;
|
||||
|
||||
|
@ -60,7 +60,7 @@ public abstract class ConnectedTextureBehaviour {
|
|||
.relative(vertical, sv);
|
||||
BlockState blockState = reader.getBlockState(pos);
|
||||
|
||||
if (blockState.getBlock()instanceof CopycatBlock ufb
|
||||
if (blockState.getBlock() instanceof CopycatBlock ufb
|
||||
&& ufb.isIgnoredConnectivitySide(reader, blockState, face, pos, p))
|
||||
return false;
|
||||
|
||||
|
@ -73,7 +73,7 @@ public abstract class ConnectedTextureBehaviour {
|
|||
BlockPos 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);
|
||||
return connectiveMaterial == null ? blockState : connectiveMaterial;
|
||||
}
|
||||
|
@ -274,7 +274,7 @@ public abstract class ConnectedTextureBehaviour {
|
|||
|
||||
@Override
|
||||
@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);
|
||||
if (shift == null) {
|
||||
return null;
|
||||
|
|
|
@ -30,8 +30,8 @@ public class ValueBox extends ChasingAABBOutline {
|
|||
protected Component scrollTooltip = Components.immutableEmpty();
|
||||
protected Vec3 labelOffset = Vec3.ZERO;
|
||||
|
||||
protected int passiveColor;
|
||||
protected int highlightColor;
|
||||
public int overrideColor = -1;
|
||||
|
||||
public boolean isPassive;
|
||||
|
||||
protected BlockPos pos;
|
||||
|
@ -65,6 +65,11 @@ public class ValueBox extends ChasingAABBOutline {
|
|||
this.isPassive = passive;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ValueBox withColor(int color) {
|
||||
this.overrideColor = color;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(PoseStack ms, SuperRenderTypeBuffer buffer, float pt) {
|
||||
|
@ -183,7 +188,7 @@ public class ValueBox extends ChasingAABBOutline {
|
|||
Font font = Minecraft.getInstance().font;
|
||||
float scale = 3;
|
||||
ms.scale(scale, scale, 1);
|
||||
ms.translate(-4, -4, 5);
|
||||
ms.translate(-4, -3.75, 5);
|
||||
|
||||
int stringWidth = font.width(text);
|
||||
float numberScale = (float) font.lineHeight / stringWidth;
|
||||
|
@ -195,7 +200,8 @@ public class ValueBox extends ChasingAABBOutline {
|
|||
ms.scale(numberScale, numberScale, numberScale);
|
||||
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;
|
||||
ms.scale(scale, scale, scale);
|
||||
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,
|
||||
int shadowColor) {
|
||||
protected void renderHoveringText(PoseStack ms, MultiBufferSource buffer, Component text, int color) {
|
||||
ms.pushPose();
|
||||
drawString(ms, buffer, text, 0, 0, color);
|
||||
ms.translate(0, 0, -.25);
|
||||
drawString(ms, buffer, text, 1, 1, shadowColor);
|
||||
ms.popPose();
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,10 @@ public abstract class ValueBoxTransform {
|
|||
public boolean shouldRender(BlockState state) {
|
||||
return state.getMaterial() != Material.AIR && getLocalOffset(state) != null;
|
||||
}
|
||||
|
||||
public int getOverrideColor() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
protected Vec3 rotateHorizontally(BlockState state, Vec3 vec) {
|
||||
float yRot = 0;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
"textures": {
|
||||
"3": "create:block/chute",
|
||||
"4": "create:block/chute_large",
|
||||
"5": "create:block/industrial_iron_block_top",
|
||||
"particle": "create:block/industrial_iron_block"
|
||||
},
|
||||
"elements": [
|
||||
|
@ -15,7 +16,7 @@
|
|||
"east": {"uv": [0, 0, 16, 16], "texture": "#particle"},
|
||||
"south": {"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"}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
"from": [2, 5, 14],
|
||||
"to": [14, 14, 16],
|
||||
"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"},
|
||||
"up": {"uv": [1, 0, 7, 1], "rotation": 180, "texture": "#4"}
|
||||
}
|
||||
|
@ -42,7 +42,8 @@
|
|||
},
|
||||
{
|
||||
"from": [2, 5, 7],
|
||||
"to": [14, 10, 15],
|
||||
"to": [14, 10.1, 15],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0.1, 0]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 16, 7, 13.5], "rotation": 180, "texture": "#4"},
|
||||
"down": {"uv": [1, 16, 7, 12], "rotation": 180, "texture": "#4"}
|
||||
|
@ -58,9 +59,9 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"from": [2, 9, 7],
|
||||
"to": [14, 10, 15],
|
||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]},
|
||||
"from": [2, 9.1, 7],
|
||||
"to": [14, 10.1, 15],
|
||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10.1, 7]},
|
||||
"faces": {
|
||||
"up": {"uv": [1, 9.5, 7, 13.5], "rotation": 180, "texture": "#4"}
|
||||
}
|
||||
|
|
|
@ -314,8 +314,8 @@
|
|||
},
|
||||
"gui": {
|
||||
"rotation": [30, 225, 0],
|
||||
"translation": [0, -1.5, 0],
|
||||
"scale": [0.4, 0.4, 0.4]
|
||||
"translation": [0, -2.25, 0],
|
||||
"scale": [0.45, 0.45, 0.45]
|
||||
},
|
||||
"fixed": {
|
||||
"translation": [0, -3, 0],
|
||||
|
|
|
@ -4,66 +4,10 @@
|
|||
"textures": {
|
||||
"0": "create:block/gearbox",
|
||||
"5": "create:block/millstone",
|
||||
"6": "block/polished_andesite",
|
||||
"13": "block/stripped_spruce_log",
|
||||
"particle": "block/polished_andesite"
|
||||
"8": "create:block/andesite_casing",
|
||||
"particle": "create:block/palettes/stone_types/cap/andesite_cut_cap"
|
||||
},
|
||||
"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",
|
||||
"from": [0, 0, 0],
|
||||
|
@ -73,7 +17,7 @@
|
|||
"east": {"uv": [7, 13, 8, 16], "texture": "#5"},
|
||||
"south": {"uv": [0, 13, 8, 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"}
|
||||
}
|
||||
},
|
||||
|
@ -86,7 +30,7 @@
|
|||
"east": {"uv": [8, 13, 7, 16], "texture": "#5"},
|
||||
"south": {"uv": [8, 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"}
|
||||
}
|
||||
},
|
||||
|
@ -96,7 +40,7 @@
|
|||
"faces": {
|
||||
"east": {"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"}
|
||||
}
|
||||
},
|
||||
|
@ -106,7 +50,7 @@
|
|||
"faces": {
|
||||
"east": {"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"}
|
||||
}
|
||||
},
|
||||
|
@ -114,50 +58,30 @@
|
|||
"from": [2, 1, 2],
|
||||
"to": [14, 6, 14],
|
||||
"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"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": {
|
||||
"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,
|
||||
"groups": [
|
||||
{
|
||||
"name": "bottom",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [5, 6, 7, 8, 9]
|
||||
}
|
||||
"color": 0,
|
||||
"children": [0, 1, 2, 3, 4]
|
||||
},
|
||||
5
|
||||
]
|
||||
}
|
|
@ -11,8 +11,9 @@
|
|||
"elements": [
|
||||
{
|
||||
"name": "Gear5",
|
||||
"from": [6.5, 6.5, -1],
|
||||
"to": [9.5, 12.5, 17],
|
||||
"from": [6.5, 6, -1],
|
||||
"to": [9.5, 12, 17],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, -0.5, 0]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||
"east": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||
|
@ -24,9 +25,9 @@
|
|||
},
|
||||
{
|
||||
"name": "Gear6",
|
||||
"from": [6.5, 6.5, -1],
|
||||
"to": [9.5, 12.5, 17],
|
||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
|
||||
"from": [6.5, 6, -1],
|
||||
"to": [9.5, 12, 17],
|
||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 7.5, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||
"east": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||
|
@ -38,9 +39,9 @@
|
|||
},
|
||||
{
|
||||
"name": "Gear7",
|
||||
"from": [-1, 6.5, 6.5],
|
||||
"to": [17, 12.5, 9.5],
|
||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
|
||||
"from": [-1, 6, 6.5],
|
||||
"to": [17, 12, 9.5],
|
||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 7.5, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||
"east": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||
|
@ -52,8 +53,9 @@
|
|||
},
|
||||
{
|
||||
"name": "Gear7",
|
||||
"from": [-1, 6.5, 6.5],
|
||||
"to": [17, 12.5, 9.5],
|
||||
"from": [-1, 6, 6.5],
|
||||
"to": [17, 12, 9.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, -0.5, 0]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||
"east": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||
|
@ -65,9 +67,9 @@
|
|||
},
|
||||
{
|
||||
"name": "GearCaseInner",
|
||||
"from": [2, 7, 2],
|
||||
"to": [14, 12, 14],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.5, 8]},
|
||||
"from": [2, 6.5, 2],
|
||||
"to": [14, 11.5, 14],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"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"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"from": [6, 0, 6],
|
||||
|
@ -142,12 +131,14 @@
|
|||
{
|
||||
"name": "cogwheel",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [0, 1, 2, 3, 4, 5]
|
||||
"color": 0,
|
||||
"children": [0, 1, 2, 3, 4]
|
||||
},
|
||||
{
|
||||
"name": "shaft_half",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [6]
|
||||
"color": 0,
|
||||
"children": [5]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -3,16 +3,16 @@
|
|||
"parent": "block/block",
|
||||
"textures": {
|
||||
"0": "create:block/gearbox",
|
||||
"3": "block/stripped_spruce_log",
|
||||
"5": "create:block/millstone",
|
||||
"6": "block/polished_andesite",
|
||||
"particle": "block/polished_andesite"
|
||||
"8": "create:block/andesite_casing",
|
||||
"particle": "create:block/palettes/stone_types/cap/andesite_cut_cap"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Gear5",
|
||||
"from": [6.5, 6.5, -1],
|
||||
"to": [9.5, 12.5, 17],
|
||||
"from": [6.5, 6, -1],
|
||||
"to": [9.5, 12, 17],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, -0.5, 0]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||
"east": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||
|
@ -24,9 +24,9 @@
|
|||
},
|
||||
{
|
||||
"name": "Gear6",
|
||||
"from": [6.5, 6.5, -1],
|
||||
"to": [9.5, 12.5, 17],
|
||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
|
||||
"from": [6.5, 6, -1],
|
||||
"to": [9.5, 12, 17],
|
||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 7.5, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||
"east": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||
|
@ -38,9 +38,9 @@
|
|||
},
|
||||
{
|
||||
"name": "Gear7",
|
||||
"from": [-1, 6.5, 6.5],
|
||||
"to": [17, 12.5, 9.5],
|
||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
|
||||
"from": [-1, 6, 6.5],
|
||||
"to": [17, 12, 9.5],
|
||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 7.5, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||
"east": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||
|
@ -52,8 +52,9 @@
|
|||
},
|
||||
{
|
||||
"name": "Gear7",
|
||||
"from": [-1, 6.5, 6.5],
|
||||
"to": [17, 12.5, 9.5],
|
||||
"from": [-1, 6, 6.5],
|
||||
"to": [17, 12, 9.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, -0.5, 0]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 10, 9, 13], "texture": "#5"},
|
||||
"east": {"uv": [9, 10, 10.5, 13], "texture": "#5"},
|
||||
|
@ -65,8 +66,9 @@
|
|||
},
|
||||
{
|
||||
"name": "GearCaseInner",
|
||||
"from": [2, 6.6, 2],
|
||||
"to": [14, 11.6, 14],
|
||||
"from": [2, 6.1, 2],
|
||||
"to": [14, 11.1, 14],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, -0.5, 0]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 6, 6, 8.5], "texture": "#5"},
|
||||
"east": {"uv": [0, 6, 6, 8.5], "texture": "#5"},
|
||||
|
@ -78,8 +80,9 @@
|
|||
},
|
||||
{
|
||||
"name": "GearCaseOuter",
|
||||
"from": [4, 6, 4],
|
||||
"to": [12, 13, 12],
|
||||
"from": [4, 5.5, 4],
|
||||
"to": [12, 12.5, 12],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, -0.5, 0]},
|
||||
"faces": {
|
||||
"north": {"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"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [5, 13, 5],
|
||||
"to": [11, 15, 11],
|
||||
"faces": {
|
||||
"up": {"uv": [6, 0, 9, 3], "rotation": 90, "texture": "#5"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "bottom",
|
||||
"from": [0, 0, 0],
|
||||
|
@ -103,7 +99,7 @@
|
|||
"east": {"uv": [7, 13, 8, 16], "texture": "#5"},
|
||||
"south": {"uv": [0, 13, 8, 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"}
|
||||
}
|
||||
},
|
||||
|
@ -116,7 +112,7 @@
|
|||
"east": {"uv": [8, 13, 7, 16], "texture": "#5"},
|
||||
"south": {"uv": [8, 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"}
|
||||
}
|
||||
},
|
||||
|
@ -126,7 +122,7 @@
|
|||
"faces": {
|
||||
"east": {"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"}
|
||||
}
|
||||
},
|
||||
|
@ -136,7 +132,7 @@
|
|||
"faces": {
|
||||
"east": {"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"}
|
||||
}
|
||||
},
|
||||
|
@ -144,56 +140,20 @@
|
|||
"from": [2, 1, 2],
|
||||
"to": [14, 6, 14],
|
||||
"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"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [11, 13, 3],
|
||||
"from": [3, 12, 3],
|
||||
"to": [13, 16, 13],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 7, 3, 9], "rotation": 90, "texture": "#3"},
|
||||
"east": {"uv": [0, 10, 3, 0], "rotation": 90, "texture": "#3"},
|
||||
"south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#3"},
|
||||
"west": {"uv": [10, 0, 0, 3], "texture": "#3"},
|
||||
"up": {"uv": [5, 2, 3, 12], "texture": "#3"},
|
||||
"down": {"uv": [2, 0, 0, 10], "texture": "#3"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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"}
|
||||
"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"}
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -201,11 +161,15 @@
|
|||
{
|
||||
"name": "cogwheel",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0, 1, 2, 3, 4, 5]
|
||||
}, 6,
|
||||
},
|
||||
{
|
||||
"name": "bottom",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [7, 8, 9, 10, 11]
|
||||
}, 12, 13, 14, 15]
|
||||
"color": 0,
|
||||
"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 |