Made covers automatically adjust to the model size. Fixes #1862

This commit is contained in:
raoulvdberge
2018-07-09 17:52:32 +02:00
parent 257af46372
commit 26b677f5ea
15 changed files with 335 additions and 556 deletions

View File

@@ -16,7 +16,7 @@ public class NetworkNodeCable extends NetworkNode implements ICoverable {
private static final String NBT_COVERS = "Covers"; private static final String NBT_COVERS = "Covers";
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.ALLOW_ALL); private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.ANY);
public NetworkNodeCable(World world, BlockPos pos) { public NetworkNodeCable(World world, BlockPos pos) {
super(world, pos); super(world, pos);

View File

@@ -67,7 +67,7 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable,
private int type = IType.ITEMS; private int type = IType.ITEMS;
private boolean drop = false; private boolean drop = false;
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.NONE_ON_FACE); private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_LARGE_ON_FACE);
public NetworkNodeConstructor(World world, BlockPos pos) { public NetworkNodeConstructor(World world, BlockPos pos) {
super(world, pos); super(world, pos);

View File

@@ -73,7 +73,7 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
private int type = IType.ITEMS; private int type = IType.ITEMS;
private boolean pickupItem = false; private boolean pickupItem = false;
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.NONE_ON_FACE); private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_LARGE_ON_FACE);
public NetworkNodeDestructor(World world, BlockPos pos) { public NetworkNodeDestructor(World world, BlockPos pos) {
super(world, pos); super(world, pos);

View File

@@ -44,7 +44,7 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE; private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
private int type = IType.ITEMS; private int type = IType.ITEMS;
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_WIDE_ON_FACE); private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_ON_FACE);
private int filterSlot; private int filterSlot;

View File

@@ -56,7 +56,7 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
private AccessType accessType = AccessType.INSERT_EXTRACT; private AccessType accessType = AccessType.INSERT_EXTRACT;
private int networkTicks; private int networkTicks;
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_WIDE_ON_FACE); private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_MEDIUM_ON_FACE);
private List<IStorageExternal<ItemStack>> itemStorages = new CopyOnWriteArrayList<>(); private List<IStorageExternal<ItemStack>> itemStorages = new CopyOnWriteArrayList<>();
private List<IStorageExternal<FluidStack>> fluidStorages = new CopyOnWriteArrayList<>(); private List<IStorageExternal<FluidStack>> fluidStorages = new CopyOnWriteArrayList<>();

View File

@@ -49,7 +49,7 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
private int mode = IFilterable.BLACKLIST; private int mode = IFilterable.BLACKLIST;
private int type = IType.ITEMS; private int type = IType.ITEMS;
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_WIDE_ON_FACE); private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_MEDIUM_ON_FACE);
private int currentSlot; private int currentSlot;

View File

@@ -21,7 +21,7 @@ public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReade
private String channel = ""; private String channel = "";
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.NONE_ON_FACE); private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_LARGE_ON_FACE);
public NetworkNodeReader(World world, BlockPos pos) { public NetworkNodeReader(World world, BlockPos pos) {
super(world, pos); super(world, pos);

View File

@@ -27,7 +27,7 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReade
private int redstoneStrength; private int redstoneStrength;
private int lastRedstoneStrength; private int lastRedstoneStrength;
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.NONE_ON_FACE); private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_LARGE_ON_FACE);
public NetworkNodeWriter(World world, BlockPos pos) { public NetworkNodeWriter(World world, BlockPos pos) {
super(world, pos); super(world, pos);

View File

@@ -25,9 +25,10 @@ import java.util.Map;
public class CoverManager { public class CoverManager {
public enum CoverPlacementMode { public enum CoverPlacementMode {
ALLOW_ALL, ANY,
NONE_ON_FACE, HOLLOW_ON_FACE,
HOLLOW_WIDE_ON_FACE HOLLOW_MEDIUM_ON_FACE,
HOLLOW_LARGE_ON_FACE
} }
private static final String NBT_DIRECTION = "Direction"; private static final String NBT_DIRECTION = "Direction";
@@ -74,15 +75,15 @@ public class CoverManager {
if (isValidCover(cover.getStack()) && !hasCover(facing)) { if (isValidCover(cover.getStack()) && !hasCover(facing)) {
if (facing == node.getDirection()) { if (facing == node.getDirection()) {
switch (placementMode) { switch (placementMode) {
case ALLOW_ALL: case ANY:
break; break;
case NONE_ON_FACE: case HOLLOW_ON_FACE:
return false; case HOLLOW_MEDIUM_ON_FACE:
case HOLLOW_WIDE_ON_FACE: case HOLLOW_LARGE_ON_FACE:
if (!cover.getType().isHollow()) { if (!cover.getType().isHollow()) {
return false; return false;
} }
cover = new Cover(cover.getStack(), CoverType.HOLLOW_WIDE); cover = new Cover(cover.getStack(), placementMode == CoverPlacementMode.HOLLOW_ON_FACE ? CoverType.HOLLOW : (placementMode == CoverPlacementMode.HOLLOW_MEDIUM_ON_FACE ? CoverType.HOLLOW_MEDIUM : CoverType.HOLLOW_LARGE));
break; break;
} }
} }

View File

@@ -6,10 +6,11 @@ import net.minecraft.item.ItemStack;
public enum CoverType { public enum CoverType {
NORMAL, NORMAL,
HOLLOW, HOLLOW,
HOLLOW_WIDE; HOLLOW_MEDIUM,
HOLLOW_LARGE;
public boolean isHollow() { public boolean isHollow() {
return this == HOLLOW || this == HOLLOW_WIDE; return this == HOLLOW || this == HOLLOW_MEDIUM || this == HOLLOW_LARGE;
} }
public ItemStack createStack() { public ItemStack createStack() {

View File

@@ -76,10 +76,13 @@ public class BakedModelCableCover implements IBakedModel {
addNormalCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, handle); addNormalCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, handle);
break; break;
case HOLLOW: case HOLLOW:
addHollowCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest); addHollowCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, 6);
break; break;
case HOLLOW_WIDE: case HOLLOW_MEDIUM:
addHollowWideCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest); addHollowCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, 3);
break;
case HOLLOW_LARGE:
addHollowCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, 2);
break; break;
} }
} }
@@ -134,7 +137,7 @@ public class BakedModelCableCover implements IBakedModel {
} }
} }
private static void addHollowCover(List<BakedQuad> quads, TextureAtlasSprite sprite, EnumFacing coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) { private static void addHollowCover(List<BakedQuad> quads, TextureAtlasSprite sprite, EnumFacing coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, int size) {
AxisAlignedBB bounds = ConstantsCable.getCoverBounds(coverSide); AxisAlignedBB bounds = ConstantsCable.getCoverBounds(coverSide);
Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16); Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
@@ -158,7 +161,7 @@ public class BakedModelCableCover implements IBakedModel {
from.setX(0); from.setX(0);
} }
to.setX(6); to.setX(size);
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
if (hasEast) { if (hasEast) {
to.setX(14); to.setX(14);
@@ -166,15 +169,15 @@ public class BakedModelCableCover implements IBakedModel {
to.setX(16); to.setX(16);
} }
from.setX(10); from.setX(16 - size);
} else if (coverSide == EnumFacing.EAST) { } else if (coverSide == EnumFacing.EAST) {
from.setZ(0); from.setZ(0);
to.setZ(6); to.setZ(size);
} else if (coverSide == EnumFacing.WEST) { } else if (coverSide == EnumFacing.WEST) {
from.setZ(10); from.setZ(16 - size);
to.setZ(16); to.setZ(16);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) { } else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
from.setZ(10); from.setZ(16 - size);
to.setZ(16); to.setZ(16);
} }
@@ -193,7 +196,7 @@ public class BakedModelCableCover implements IBakedModel {
to.setX(16); to.setX(16);
} }
from.setX(10); from.setX(16 - size);
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
if (hasWest) { if (hasWest) {
from.setX(2); from.setX(2);
@@ -201,16 +204,16 @@ public class BakedModelCableCover implements IBakedModel {
from.setX(0); from.setX(0);
} }
to.setX(6); to.setX(size);
} else if (coverSide == EnumFacing.EAST) { } else if (coverSide == EnumFacing.EAST) {
from.setZ(16 - size);
to.setZ(16); to.setZ(16);
from.setZ(10);
} else if (coverSide == EnumFacing.WEST) { } else if (coverSide == EnumFacing.WEST) {
from.setZ(0); from.setZ(0);
to.setZ(6); to.setZ(size);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) { } else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
from.setZ(0); from.setZ(0);
to.setZ(6); to.setZ(size);
} }
quads.addAll(new CubeBuilder() quads.addAll(new CubeBuilder()
@@ -222,8 +225,8 @@ public class BakedModelCableCover implements IBakedModel {
// Bottom // Bottom
if (coverSide == EnumFacing.NORTH) { if (coverSide == EnumFacing.NORTH) {
from.setX(6); from.setX(size);
to.setX(10); to.setX(16 - size);
if (hasDown) { if (hasDown) {
from.setY(2); from.setY(2);
@@ -231,10 +234,10 @@ public class BakedModelCableCover implements IBakedModel {
from.setY(0); from.setY(0);
} }
to.setY(6); to.setY(size);
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
from.setX(6); from.setX(size);
to.setX(10); to.setX(16 - size);
if (hasDown) { if (hasDown) {
from.setY(2); from.setY(2);
@@ -242,10 +245,10 @@ public class BakedModelCableCover implements IBakedModel {
from.setY(0); from.setY(0);
} }
to.setY(6); to.setY(size);
} else if (coverSide == EnumFacing.EAST) { } else if (coverSide == EnumFacing.EAST) {
from.setZ(6); from.setZ(size);
to.setZ(10); to.setZ(16 - size);
if (hasDown) { if (hasDown) {
from.setY(2); from.setY(2);
@@ -253,10 +256,10 @@ public class BakedModelCableCover implements IBakedModel {
from.setY(0); from.setY(0);
} }
to.setY(6); to.setY(size);
} else if (coverSide == EnumFacing.WEST) { } else if (coverSide == EnumFacing.WEST) {
from.setZ(6); from.setZ(size);
to.setZ(10); to.setZ(16 - size);
if (hasDown) { if (hasDown) {
from.setY(2); from.setY(2);
@@ -264,13 +267,13 @@ public class BakedModelCableCover implements IBakedModel {
from.setY(0); from.setY(0);
} }
to.setY(6); to.setY(size);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) { } else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
from.setZ(6); from.setZ(size);
to.setZ(10); to.setZ(16 - size);
from.setX(0); from.setX(0);
to.setX(6); to.setX(size);
} }
quads.addAll(new CubeBuilder() quads.addAll(new CubeBuilder()
@@ -282,8 +285,8 @@ public class BakedModelCableCover implements IBakedModel {
// Up // Up
if (coverSide == EnumFacing.NORTH) { if (coverSide == EnumFacing.NORTH) {
from.setX(6); from.setX(size);
to.setX(10); to.setX(16 - size);
if (hasUp) { if (hasUp) {
to.setY(14); to.setY(14);
@@ -291,10 +294,10 @@ public class BakedModelCableCover implements IBakedModel {
to.setY(16); to.setY(16);
} }
from.setY(10); from.setY(16 - size);
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
from.setX(6); from.setX(size);
to.setX(10); to.setX(16 - size);
if (hasUp) { if (hasUp) {
to.setY(14); to.setY(14);
@@ -302,10 +305,10 @@ public class BakedModelCableCover implements IBakedModel {
to.setY(16); to.setY(16);
} }
from.setY(10); from.setY(16 - size);
} else if (coverSide == EnumFacing.EAST) { } else if (coverSide == EnumFacing.EAST) {
from.setZ(6); from.setZ(size);
to.setZ(10); to.setZ(16 - size);
if (hasUp) { if (hasUp) {
to.setY(14); to.setY(14);
@@ -313,10 +316,10 @@ public class BakedModelCableCover implements IBakedModel {
to.setY(16); to.setY(16);
} }
from.setY(10); from.setY(16 - size);
} else if (coverSide == EnumFacing.WEST) { } else if (coverSide == EnumFacing.WEST) {
from.setZ(6); from.setZ(size);
to.setZ(10); to.setZ(16 - size);
if (hasUp) { if (hasUp) {
to.setY(14); to.setY(14);
@@ -324,219 +327,12 @@ public class BakedModelCableCover implements IBakedModel {
to.setY(16); to.setY(16);
} }
from.setY(10); from.setY(16 - size);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) { } else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
from.setZ(6); from.setZ(size);
to.setZ(10); to.setZ(16 - size);
from.setX(10); from.setX(16 - size);
to.setX(16);
}
quads.addAll(new CubeBuilder()
.from(from.getX(), from.getY(), from.getZ())
.to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake()
);
}
private static void addHollowWideCover(List<BakedQuad> quads, TextureAtlasSprite sprite, EnumFacing coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) {
AxisAlignedBB bounds = ConstantsCable.getCoverBounds(coverSide);
Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
Vector3f to = new Vector3f((float) bounds.maxX * 16, (float) bounds.maxY * 16, (float) bounds.maxZ * 16);
if (coverSide.getAxis() != EnumFacing.Axis.Y) {
if (hasDown) {
from.setY(2);
}
if (hasUp) {
to.setY(14);
}
}
// Right
if (coverSide == EnumFacing.NORTH) {
if (hasWest) {
from.setX(2);
} else {
from.setX(0);
}
to.setX(3);
} else if (coverSide == EnumFacing.SOUTH) {
if (hasEast) {
to.setX(14);
} else {
to.setX(16);
}
from.setX(13);
} else if (coverSide == EnumFacing.EAST) {
from.setZ(0);
to.setZ(3);
} else if (coverSide == EnumFacing.WEST) {
from.setZ(13);
to.setZ(16);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
from.setZ(13);
to.setZ(16);
}
quads.addAll(new CubeBuilder()
.from(from.getX(), from.getY(), from.getZ())
.to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake()
);
// Left
if (coverSide == EnumFacing.NORTH) {
if (hasEast) {
to.setX(14);
} else {
to.setX(16);
}
from.setX(13);
} else if (coverSide == EnumFacing.SOUTH) {
if (hasWest) {
from.setX(2);
} else {
from.setX(0);
}
to.setX(3);
} else if (coverSide == EnumFacing.EAST) {
to.setZ(16);
from.setZ(13);
} else if (coverSide == EnumFacing.WEST) {
from.setZ(0);
to.setZ(3);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
from.setZ(0);
to.setZ(3);
}
quads.addAll(new CubeBuilder()
.from(from.getX(), from.getY(), from.getZ())
.to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake()
);
// Bottom
if (coverSide == EnumFacing.NORTH) {
from.setX(3);
to.setX(13);
if (hasDown) {
from.setY(2);
} else {
from.setY(0);
}
to.setY(3);
} else if (coverSide == EnumFacing.SOUTH) {
from.setX(3);
to.setX(13);
if (hasDown) {
from.setY(2);
} else {
from.setY(0);
}
to.setY(3);
} else if (coverSide == EnumFacing.EAST) {
from.setZ(3);
to.setZ(13);
if (hasDown) {
from.setY(2);
} else {
from.setY(0);
}
to.setY(3);
} else if (coverSide == EnumFacing.WEST) {
from.setZ(3);
to.setZ(13);
if (hasDown) {
from.setY(2);
} else {
from.setY(0);
}
to.setY(3);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
from.setZ(3);
to.setZ(13);
from.setX(0);
to.setX(3);
}
quads.addAll(new CubeBuilder()
.from(from.getX(), from.getY(), from.getZ())
.to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake()
);
// Up
if (coverSide == EnumFacing.NORTH) {
from.setX(3);
to.setX(13);
if (hasUp) {
to.setY(14);
} else {
to.setY(16);
}
from.setY(13);
} else if (coverSide == EnumFacing.SOUTH) {
from.setX(3);
to.setX(13);
if (hasUp) {
to.setY(14);
} else {
to.setY(16);
}
from.setY(13);
} else if (coverSide == EnumFacing.EAST) {
from.setZ(3);
to.setZ(13);
if (hasUp) {
to.setY(14);
} else {
to.setY(16);
}
from.setY(13);
} else if (coverSide == EnumFacing.WEST) {
from.setZ(3);
to.setZ(13);
if (hasUp) {
to.setY(14);
} else {
to.setY(16);
}
from.setY(13);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
from.setZ(3);
to.setZ(13);
from.setX(13);
to.setX(16); to.setX(16);
} }

View File

@@ -1,210 +1,209 @@
{ {
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"elements": [ "elements": [
{ {
"name": "Line1", "name": "Line1",
"from": [ "from": [
6.0, 6,
6.0, 6,
0.0 0
], ],
"to": [ "to": [
10.0, 10,
10.0, 10,
2.0 2
], ],
"faces": { "faces": {
"north": { "north": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
10.0, 4,
10.0 4
] ],
"texture": "#line"
}, },
"east": { "east": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
2.0, 2,
10.0 4
] ],
"texture": "#line"
}, },
"south": { "south": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
10.0, 4,
10.0 4
] ],
"texture": "#line"
}, },
"west": { "west": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
2.0, 2,
10.0 4
] ],
"texture": "#line"
}, },
"up": { "up": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
10.0, 4,
2.0 2
] ],
"texture": "#line"
}, },
"down": { "down": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
10.0, 4,
2.0 2
] ],
"texture": "#line"
} }
} }
}, },
{ {
"name": "Line2", "name": "Line2",
"from": [ "from": [
5.0, 5,
5.0, 5,
2.0 2
], ],
"to": [ "to": [
11.0, 11,
11.0, 11,
4.0 4
], ],
"faces": { "faces": {
"north": { "north": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
6.0, 6,
6.0 6
] ],
"texture": "#line"
}, },
"east": { "east": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
2.0, 2,
6.0 6
] ],
"texture": "#line"
}, },
"south": { "south": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
6.0, 6,
6.0 6
] ],
"texture": "#line"
}, },
"west": { "west": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
2.0, 2,
6.0 6
] ],
"texture": "#line"
}, },
"up": { "up": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
6.0, 6,
2.0 2
] ],
"texture": "#line"
}, },
"down": { "down": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
6.0, 6,
2.0 2
] ],
"texture": "#line"
} }
} }
}, },
{ {
"name": "Line3", "name": "Line3",
"from": [ "from": [
3.0, 3,
3.0, 3,
4.0 4
], ],
"to": [ "to": [
13.0, 13,
13.0, 13,
6.0 6
], ],
"faces": { "faces": {
"north": { "north": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
4.0, 10,
4.0 10
] ],
"texture": "#line"
}, },
"east": { "east": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
2.0, 2,
4.0 10
] ],
"texture": "#line"
}, },
"south": { "south": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
4.0, 10,
4.0 10
] ],
"texture": "#line"
}, },
"west": { "west": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
2.0, 2,
4.0 10
] ],
"texture": "#line"
}, },
"up": { "up": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
4.0, 10,
2.0 2
] ],
"texture": "#line"
}, },
"down": { "down": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
4.0, 10,
2.0 2
] ],
"texture": "#line"
} }
} }
} }

View File

@@ -4,207 +4,207 @@
{ {
"name": "Line1", "name": "Line1",
"from": [ "from": [
6.0, 6,
6.0, 6,
0.0 0
], ],
"to": [ "to": [
10.0, 10,
10.0, 10,
2.0 2
], ],
"faces": { "faces": {
"north": { "north": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
10.0, 4,
10.0 4
] ],
"texture": "#line"
}, },
"east": { "east": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
2.0, 2,
10.0 4
] ],
"texture": "#line"
}, },
"south": { "south": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
10.0, 4,
10.0 4
] ],
"texture": "#line"
}, },
"west": { "west": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
2.0, 2,
10.0 4
] ],
"texture": "#line"
}, },
"up": { "up": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
10.0, 4,
2.0 2
] ],
"texture": "#line"
}, },
"down": { "down": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
10.0, 4,
2.0 2
] ],
"texture": "#line"
} }
} }
}, },
{ {
"name": "Line2", "name": "Line2",
"from": [ "from": [
5.0, 5,
5.0, 5,
2.0 2
], ],
"to": [ "to": [
11.0, 11,
11.0, 11,
4.0 4
], ],
"faces": { "faces": {
"north": { "north": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
6.0, 6,
6.0 6
] ],
"texture": "#line"
}, },
"east": { "east": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
2.0, 2,
6.0 6
] ],
"texture": "#line"
}, },
"south": { "south": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
6.0, 6,
6.0 6
] ],
"texture": "#line"
}, },
"west": { "west": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
2.0, 2,
6.0 6
] ],
"texture": "#line"
}, },
"up": { "up": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
6.0, 6,
2.0 2
] ],
"texture": "#line"
}, },
"down": { "down": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
6.0, 6,
2.0 2
] ],
"texture": "#line"
} }
} }
}, },
{ {
"name": "Line3", "name": "Line3",
"from": [ "from": [
3.0, 3,
3.0, 3,
4.0 4
], ],
"to": [ "to": [
13.0, 13,
13.0, 13,
6.0 6
], ],
"faces": { "faces": {
"north": { "north": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
4.0, 10,
4.0 10
] ],
"texture": "#line"
}, },
"east": { "east": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
2.0, 2,
4.0 10
] ],
"texture": "#line"
}, },
"south": { "south": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
4.0, 10,
4.0 10
] ],
"texture": "#line"
}, },
"west": { "west": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
2.0, 2,
4.0 10
] ],
"texture": "#line"
}, },
"up": { "up": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
4.0, 10,
2.0 2
] ],
"texture": "#line"
}, },
"down": { "down": {
"texture": "#line",
"uv": [ "uv": [
0.0, 0,
0.0, 0,
4.0, 10,
2.0 2
] ],
"texture": "#line"
} }
} }
}, },

View File

@@ -14,22 +14,13 @@
6.0 6.0
], ],
"faces": { "faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"east": { "east": {
"texture": "#line", "texture": "#line",
"uv": [ "uv": [
0.0, 0.0,
0.0, 0.0,
2.0, 4.0,
4.0 2.0
] ]
}, },
"south": { "south": {
@@ -46,8 +37,8 @@
"uv": [ "uv": [
0.0, 0.0,
0.0, 0.0,
2.0, 4.0,
4.0 2.0
] ]
}, },
"up": { "up": {
@@ -55,8 +46,8 @@
"uv": [ "uv": [
0.0, 0.0,
0.0, 0.0,
4.0, 2.0,
2.0 4.0
] ]
}, },
"down": { "down": {
@@ -64,8 +55,8 @@
"uv": [ "uv": [
0.0, 0.0,
0.0, 0.0,
4.0, 2.0,
2.0 4.0
] ]
} }
} }

View File

@@ -14,22 +14,13 @@
6.0 6.0
], ],
"faces": { "faces": {
"north": {
"texture": "#line",
"uv": [
0.0,
0.0,
4.0,
4.0
]
},
"east": { "east": {
"texture": "#line", "texture": "#line",
"uv": [ "uv": [
0.0, 0.0,
0.0, 0.0,
2.0, 4.0,
4.0 2.0
] ]
}, },
"south": { "south": {
@@ -46,8 +37,8 @@
"uv": [ "uv": [
0.0, 0.0,
0.0, 0.0,
2.0, 4.0,
4.0 2.0
] ]
}, },
"up": { "up": {
@@ -55,8 +46,8 @@
"uv": [ "uv": [
0.0, 0.0,
0.0, 0.0,
4.0, 2.0,
2.0 4.0
] ]
}, },
"down": { "down": {
@@ -64,8 +55,8 @@
"uv": [ "uv": [
0.0, 0.0,
0.0, 0.0,
4.0, 2.0,
2.0 4.0
] ]
} }
} }