Fix fluid pipe culling

- Rework PipeAttachmentModel to not rely on cullfaces for extra
information
- Split connector away from rim/drain models into separate models
- Remove none pipe models
This commit is contained in:
PepperCode1 2022-08-06 19:37:19 -07:00
parent 544b9699d9
commit 6c0af5f83f
37 changed files with 233 additions and 429 deletions

View file

@ -128,6 +128,13 @@ repositories {
//location of the maven for curios api
url = "https://maven.theillusivec4.top/"
}
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
content {
includeGroup "maven.modrinth"
}
}
}
dependencies {
@ -161,6 +168,7 @@ dependencies {
// runtimeOnly fg.deobf("vazkii.quark:Quark:r2.0-212.984")
// runtimeOnly fg.deobf("slimeknights.mantle:Mantle:1.16.5-1.6.115")
// runtimeOnly fg.deobf("slimeknights.tconstruct:TConstruct:1.16.5-3.1.1.252")
// runtimeOnly fg.deobf("maven.modrinth:rubidium:0.5.3")
// https://discord.com/channels/313125603924639766/725850371834118214/910619168821354497
// Prevent Mixin annotation processor from getting into IntelliJ's annotation processor settings

View file

@ -209,7 +209,7 @@ d13940ed213d7acbc6ebe3bdd21175ef89e4d613 assets/create/blockstates/encased_fluid
8a87e42262f3f161b0e6fe10b795ff00eccf768f assets/create/blockstates/exposed_copper_tile_stairs.json
fb41aa1a0828c9256b3f886fdcb55bb54252ba09 assets/create/blockstates/exposed_copper_tiles.json
7a2259a71fbbbb9491fc1e6a9c935bc9fef14042 assets/create/blockstates/fake_track.json
bb74442749b6bd688d45d919b541dbd66bbeb18a assets/create/blockstates/fluid_pipe.json
dd6dadfeb65c4a4c4d1dc92516c411355e90dcca assets/create/blockstates/fluid_pipe.json
f0eaab18e16c4f3f65ebf3b55b08f0dc445720fe assets/create/blockstates/fluid_tank.json
5408d92ab02af86539ac42971d4033545970bb3a assets/create/blockstates/fluid_valve.json
95b0775bf4d619ca5b0a42dbdc47c6f2c15d7b3d assets/create/blockstates/flywheel.json
@ -1047,9 +1047,6 @@ abb8810d05128749bd7ffbbbd9d7c425886d8ef3 assets/create/models/block/fluid_pipe/l
eefb0e3b0ed7b6d5a99ff715d4aae42db4133343 assets/create/models/block/fluid_pipe/lu_x.json
a55a9ef109c4166c767459f88bce4f5c614fe13e assets/create/models/block/fluid_pipe/lu_y.json
d933b8a9e5d166cb6b250eb8f359180872daa276 assets/create/models/block/fluid_pipe/lu_z.json
8d2a247dcb09c4bc07c2c88ceaebc45f2f29ccaf assets/create/models/block/fluid_pipe/none_x.json
817252a6729ca8dc52753de47dbfe0b30c33dfa8 assets/create/models/block/fluid_pipe/none_y.json
ddba92d010016a0147ceecc30a30c9c1622d3daa assets/create/models/block/fluid_pipe/none_z.json
968fc1c2d555592134554bd16abb0b38629a76dd assets/create/models/block/fluid_pipe/r_x.json
c8fee17269f33f5e55ff0b019e535e9506dd964b assets/create/models/block/fluid_pipe/r_y.json
f63e221319b2703083e55f4034ed2d7b7a79a5da assets/create/models/block/fluid_pipe/r_z.json

View file

@ -1,53 +1,5 @@
{
"multipart": [
{
"when": {
"down": "true"
},
"apply": {
"model": "create:block/fluid_pipe/connection/down"
}
},
{
"when": {
"up": "true"
},
"apply": {
"model": "create:block/fluid_pipe/connection/up"
}
},
{
"when": {
"north": "true"
},
"apply": {
"model": "create:block/fluid_pipe/connection/north"
}
},
{
"when": {
"south": "true"
},
"apply": {
"model": "create:block/fluid_pipe/connection/south"
}
},
{
"when": {
"west": "true"
},
"apply": {
"model": "create:block/fluid_pipe/connection/west"
}
},
{
"when": {
"east": "true"
},
"apply": {
"model": "create:block/fluid_pipe/connection/east"
}
},
{
"when": {
"up": "true",
@ -158,17 +110,6 @@
"model": "create:block/fluid_pipe/r_x"
}
},
{
"when": {
"up": "false",
"south": "false",
"north": "false",
"down": "false"
},
"apply": {
"model": "create:block/fluid_pipe/none_x"
}
},
{
"when": {
"south": "true",
@ -279,17 +220,6 @@
"model": "create:block/fluid_pipe/r_y"
}
},
{
"when": {
"south": "false",
"east": "false",
"west": "false",
"north": "false"
},
"apply": {
"model": "create:block/fluid_pipe/none_y"
}
},
{
"when": {
"up": "true",
@ -399,17 +329,6 @@
"apply": {
"model": "create:block/fluid_pipe/r_z"
}
},
{
"when": {
"up": "false",
"east": "false",
"west": "false",
"down": "false"
},
"apply": {
"model": "create:block/fluid_pipe/none_z"
}
}
]
}

View file

@ -1,37 +0,0 @@
{
"parent": "create:block/fluid_pipe/core_x",
"elements": [
{
"from": [
4,
4,
4
],
"to": [
12,
12,
12
],
"faces": {
"west": {
"texture": "#0",
"uv": [
16.0,
8.0,
12.0,
12.0
]
},
"east": {
"texture": "#0",
"uv": [
12.0,
8.0,
16.0,
12.0
]
}
}
}
]
}

View file

@ -1,37 +0,0 @@
{
"parent": "create:block/fluid_pipe/core_y",
"elements": [
{
"from": [
4,
4,
4
],
"to": [
12,
12,
12
],
"faces": {
"down": {
"texture": "#0",
"uv": [
16.0,
8.0,
12.0,
12.0
]
},
"up": {
"texture": "#0",
"uv": [
16.0,
12.0,
12.0,
8.0
]
}
}
}
]
}

View file

@ -1,37 +0,0 @@
{
"parent": "create:block/fluid_pipe/core_z",
"elements": [
{
"from": [
4,
4,
4
],
"to": [
12,
12,
12
],
"faces": {
"north": {
"texture": "#0",
"uv": [
12.0,
8.0,
16.0,
12.0
]
},
"south": {
"texture": "#0",
"uv": [
16.0,
8.0,
12.0,
12.0
]
}
}
}
]
}

View file

@ -161,16 +161,14 @@ public class AllBlockPartials {
;
public static final Map<FluidTransportBehaviour.AttachmentTypes, Map<Direction, PartialModel>> PIPE_ATTACHMENTS =
new EnumMap<>(FluidTransportBehaviour.AttachmentTypes.class);
public static final Map<FluidTransportBehaviour.AttachmentTypes.ComponentPartials, Map<Direction, PartialModel>> PIPE_ATTACHMENTS =
new EnumMap<>(FluidTransportBehaviour.AttachmentTypes.ComponentPartials.class);
public static final Map<Direction, PartialModel> METAL_GIRDER_BRACKETS = new EnumMap<>(Direction.class);
public static final Map<DyeColor, PartialModel> TOOLBOX_LIDS = new EnumMap<>(DyeColor.class);
static {
for (FluidTransportBehaviour.AttachmentTypes type : FluidTransportBehaviour.AttachmentTypes.values()) {
if (!type.hasModel())
continue;
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials type : FluidTransportBehaviour.AttachmentTypes.ComponentPartials.values()) {
Map<Direction, PartialModel> map = new HashMap<>();
for (Direction d : Iterate.directions) {
String asId = Lang.asId(type.name());

View file

@ -812,7 +812,7 @@ public class AllBlocks {
.initialProperties(SharedProperties::copperMetal)
.transform(pickaxeOnly())
.blockstate(BlockStateGen.pipe())
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
@ -827,7 +827,7 @@ public class AllBlocks {
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
(s, f) -> !s.getValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, FLUID_PIPE.get()))
.register();
@ -849,7 +849,7 @@ public class AllBlocks {
.build();
}, BlockStateProperties.WATERLOGGED);
})
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::transparent))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, FLUID_PIPE.get()))
.register();
@ -858,7 +858,7 @@ public class AllBlocks {
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new))
.transform(BlockStressDefaults.setImpact(4.0))
.item()
.transform(customItemModel())
@ -870,7 +870,7 @@ public class AllBlocks {
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.transform(pickaxeOnly())
.blockstate(new SmartFluidPipeGenerator()::generate)
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::transparent))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
@ -881,7 +881,7 @@ public class AllBlocks {
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();

View file

@ -256,11 +256,30 @@ public abstract class FluidTransportBehaviour extends TileEntityBehaviour {
return AttachmentTypes.RIM;
}
public static enum AttachmentTypes {
NONE, RIM, DRAIN;
public enum AttachmentTypes {
NONE,
CONNECTION(ComponentPartials.CONNECTION),
RIM(ComponentPartials.RIM_CONNECTOR, ComponentPartials.RIM),
PARTIAL_RIM(ComponentPartials.RIM),
DRAIN(ComponentPartials.RIM_CONNECTOR, ComponentPartials.DRAIN),
PARTIAL_DRAIN(ComponentPartials.DRAIN);
public boolean hasModel() {
return this != NONE;
public final ComponentPartials[] partials;
AttachmentTypes(ComponentPartials... partials) {
this.partials = partials;
}
public AttachmentTypes withoutConnector() {
if (this == AttachmentTypes.RIM)
return AttachmentTypes.PARTIAL_RIM;
if (this == AttachmentTypes.DRAIN)
return AttachmentTypes.PARTIAL_DRAIN;
return this;
}
public enum ComponentPartials {
CONNECTION, RIM_CONNECTOR, RIM, DRAIN;
}
}

View file

@ -7,6 +7,7 @@ import java.util.Random;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour.AttachmentTypes;
import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour.AttachmentTypes.ComponentPartials;
import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.content.contraptions.relays.elementary.BracketedTileEntityBehaviour;
import com.simibubi.create.foundation.block.connected.BakedModelWrapperWithData;
@ -27,19 +28,9 @@ import net.minecraftforge.client.model.data.ModelProperty;
public class PipeAttachmentModel extends BakedModelWrapperWithData {
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
private boolean hideAttachmentConnector;
public static PipeAttachmentModel opaque(BakedModel template) {
return new PipeAttachmentModel(template, false);
}
public static PipeAttachmentModel transparent(BakedModel template) {
return new PipeAttachmentModel(template, true);
}
public PipeAttachmentModel(BakedModel template, boolean hideAttachmentConnector) {
public PipeAttachmentModel(BakedModel template) {
super(template);
this.hideAttachmentConnector = hideAttachmentConnector;
}
@Override
@ -50,7 +41,7 @@ public class PipeAttachmentModel extends BakedModelWrapperWithData {
if (transport != null)
for (Direction d : Iterate.directions)
data.putRim(d, transport.getRenderedRimAttachment(world, pos, state, d));
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
if (bracket != null)
data.putBracket(bracket.getBracket());
@ -63,7 +54,7 @@ public class PipeAttachmentModel extends BakedModelWrapperWithData {
List<BakedQuad> quads = super.getQuads(state, side, rand, data);
if (data.hasProperty(PIPE_PROPERTY)) {
PipeModelData pipeData = data.getData(PIPE_PROPERTY);
quads = side != null && pipeData.hasRim(side) ? new ArrayList<>() : new ArrayList<>(quads);
quads = new ArrayList<>(quads);
addQuads(quads, state, side, rand, data, pipeData);
}
return quads;
@ -74,27 +65,28 @@ public class PipeAttachmentModel extends BakedModelWrapperWithData {
BakedModel bracket = pipeData.getBracket();
if (bracket != null)
quads.addAll(bracket.getQuads(state, side, rand, data));
if (hideAttachmentConnector && side == Direction.UP)
return;
for (Direction d : Iterate.directions)
if (pipeData.hasRim(d))
quads.addAll(AllBlockPartials.PIPE_ATTACHMENTS.get(pipeData.getRim(d))
for (Direction d : Iterate.directions) {
AttachmentTypes type = pipeData.getAttachment(d);
for (ComponentPartials partial : type.partials) {
quads.addAll(AllBlockPartials.PIPE_ATTACHMENTS.get(partial)
.get(d)
.get()
.getQuads(state, side, rand, data));
}
}
if (pipeData.isEncased())
quads.addAll(AllBlockPartials.FLUID_PIPE_CASING.get()
.getQuads(state, side, rand, data));
}
private static class PipeModelData {
AttachmentTypes[] rims;
boolean encased;
BakedModel bracket;
private AttachmentTypes[] attachments;
private boolean encased;
private BakedModel bracket;
public PipeModelData() {
rims = new AttachmentTypes[6];
Arrays.fill(rims, AttachmentTypes.NONE);
attachments = new AttachmentTypes[6];
Arrays.fill(attachments, AttachmentTypes.NONE);
}
public void putBracket(BlockState state) {
@ -109,22 +101,18 @@ public class PipeAttachmentModel extends BakedModelWrapperWithData {
return bracket;
}
public void putRim(Direction face, AttachmentTypes rim) {
rims[face.get3DDataValue()] = rim;
public void putAttachment(Direction face, AttachmentTypes rim) {
attachments[face.get3DDataValue()] = rim;
}
public AttachmentTypes getAttachment(Direction face) {
return attachments[face.get3DDataValue()];
}
public void setEncased(boolean encased) {
this.encased = encased;
}
public boolean hasRim(Direction face) {
return rims[face.get3DDataValue()] != AttachmentTypes.NONE;
}
public AttachmentTypes getRim(Direction face) {
return rims[face.get3DDataValue()];
}
public boolean isEncased() {
return encased;
}

View file

@ -68,11 +68,13 @@ public class FluidPipeTileEntity extends SmartTileEntity implements ITransformab
TileEntityBehaviour.get(world, offsetPos, FluidTransportBehaviour.TYPE);
if (pipeBehaviour != null)
if (pipeBehaviour.canHaveFlowToward(otherState, direction.getOpposite()))
return AttachmentTypes.NONE;
return AttachmentTypes.CONNECTION;
}
if (attachment == AttachmentTypes.RIM && !FluidPipeBlock.shouldDrawRim(world, pos, state, direction))
return AttachmentTypes.NONE;
return AttachmentTypes.CONNECTION;
if (attachment == AttachmentTypes.NONE && state.getValue(FluidPipeBlock.PROPERTY_BY_DIRECTION.get(direction)))
return AttachmentTypes.CONNECTION;
return attachment;
}

View file

@ -51,7 +51,7 @@ public class StraightPipeTileEntity extends SmartTileEntity {
if (attachment == AttachmentTypes.RIM && state.getBlock() instanceof FluidValveBlock)
return AttachmentTypes.NONE;
if (attachment == AttachmentTypes.RIM && FluidPipeBlock.isPipe(otherState))
return AttachmentTypes.RIM;
return AttachmentTypes.PARTIAL_RIM;
if (axis == otherAxis && axis != null)
return AttachmentTypes.NONE;
@ -59,7 +59,7 @@ public class StraightPipeTileEntity extends SmartTileEntity {
&& FluidValveBlock.getPipeAxis(otherState) == direction.getAxis())
return AttachmentTypes.NONE;
return attachment;
return attachment.withoutConnector();
}
}

View file

@ -425,9 +425,7 @@ public class BlockStateGen {
String L = "l";
String R = "r";
String NONE = "none";
List<String> orientations = ImmutableList.of(LU, RU, LD, RD, LR, UD, U, D, L, R, NONE);
List<String> orientations = ImmutableList.of(LU, RU, LD, RD, LR, UD, U, D, L, R);
Map<String, Pair<Integer, Integer>> uvs = ImmutableMap.<String, Pair<Integer, Integer>>builder()
.put(LU, Pair.of(12, 4))
.put(RU, Pair.of(8, 4))
@ -439,7 +437,6 @@ public class BlockStateGen {
.put(D, Pair.of(0, 0))
.put(L, Pair.of(4, 0))
.put(R, Pair.of(0, 4))
.put(NONE, Pair.of(12, 8))
.build();
Map<Axis, ResourceLocation> coreTemplates = new IdentityHashMap<>();
@ -485,16 +482,6 @@ public class BlockStateGen {
}
MultiPartBlockStateBuilder builder = p.getMultipartBuilder(c.get());
for (Direction d : Iterate.directions) {
ModelFile end = p.models()
.getExistingFile(p.modLoc(path + "/connection/" + d.getSerializedName()));
builder.part()
.modelFile(end)
.addModel()
.condition(FluidPipeBlock.PROPERTY_BY_DIRECTION.get(d), true)
.end();
}
for (Axis axis : Iterate.axes) {
putPart(coreModels, builder, axis, LU, true, false, true, false);
putPart(coreModels, builder, axis, RU, true, false, false, true);
@ -506,7 +493,6 @@ public class BlockStateGen {
putPart(coreModels, builder, axis, LR, false, false, true, true);
putPart(coreModels, builder, axis, L, false, false, true, false);
putPart(coreModels, builder, axis, R, false, false, false, true);
putPart(coreModels, builder, axis, NONE, false, false, false, false);
}
};
}

View file

@ -11,10 +11,10 @@
"to": [12, 4, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, -16]},
"faces": {
"north": {"uv": [0, 6, 4, 8], "texture": "#0", "cullface": "down"},
"east": {"uv": [0, 6, 4, 8], "texture": "#0", "cullface": "down"},
"south": {"uv": [4, 6, 0, 8], "texture": "#0", "cullface": "down"},
"west": {"uv": [4, 6, 0, 8], "texture": "#0", "cullface": "down"}
"north": {"uv": [0, 6, 4, 8], "texture": "#0"},
"east": {"uv": [0, 6, 4, 8], "texture": "#0"},
"south": {"uv": [4, 6, 0, 8], "texture": "#0"},
"west": {"uv": [4, 6, 0, 8], "texture": "#0"}
}
}
]

View file

@ -11,10 +11,10 @@
"to": [16, 12, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, -16]},
"faces": {
"north": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0", "cullface": "east"},
"south": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0", "cullface": "east"},
"up": {"uv": [4, 0, 0, 2], "rotation": 90, "texture": "#0", "cullface": "east"},
"down": {"uv": [4, 6, 0, 8], "rotation": 270, "texture": "#0", "cullface": "east"}
"north": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0"},
"up": {"uv": [4, 0, 0, 2], "rotation": 90, "texture": "#0"},
"down": {"uv": [4, 6, 0, 8], "rotation": 270, "texture": "#0"}
}
}
]

View file

@ -11,10 +11,10 @@
"to": [12, 12, 4],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 0]},
"faces": {
"east": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0", "cullface": "north"},
"west": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0", "cullface": "north"},
"up": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#0", "cullface": "north"},
"down": {"uv": [0, 0, 4, 2], "rotation": 180, "texture": "#0", "cullface": "north"}
"east": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 0, 4, 2], "rotation": 180, "texture": "#0"}
}
}
]

View file

@ -11,10 +11,10 @@
"to": [12, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 0]},
"faces": {
"east": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0", "cullface": "south"},
"west": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0", "cullface": "south"},
"up": {"uv": [0, 0, 4, 2], "rotation": 180, "texture": "#0", "cullface": "south"},
"down": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#0", "cullface": "south"}
"east": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 0, 4, 2], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#0"}
}
}
]

View file

@ -11,10 +11,10 @@
"to": [12, 16, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, -16]},
"faces": {
"north": {"uv": [0, 0, 4, 2], "texture": "#0", "cullface": "up"},
"east": {"uv": [0, 0, 4, 2], "texture": "#0", "cullface": "up"},
"south": {"uv": [4, 0, 0, 2], "texture": "#0", "cullface": "up"},
"west": {"uv": [4, 0, 0, 2], "texture": "#0", "cullface": "up"}
"north": {"uv": [0, 0, 4, 2], "texture": "#0"},
"east": {"uv": [0, 0, 4, 2], "texture": "#0"},
"south": {"uv": [4, 0, 0, 2], "texture": "#0"},
"west": {"uv": [4, 0, 0, 2], "texture": "#0"}
}
}
]

View file

@ -11,10 +11,10 @@
"to": [4, 12, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, -16]},
"faces": {
"north": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0", "cullface": "west"},
"south": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0", "cullface": "west"},
"up": {"uv": [4, 6, 0, 8], "rotation": 90, "texture": "#0", "cullface": "west"},
"down": {"uv": [4, 0, 0, 2], "rotation": 270, "texture": "#0", "cullface": "west"}
"north": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0"},
"up": {"uv": [4, 6, 0, 8], "rotation": 90, "texture": "#0"},
"down": {"uv": [4, 0, 0, 2], "rotation": 270, "texture": "#0"}
}
}
]

View file

@ -15,7 +15,7 @@
"east": {"uv": [12, 8, 13.5, 11], "rotation": 90, "texture": "#0"},
"south": {"uv": [12, 8, 13.5, 11], "rotation": 90, "texture": "#0"},
"west": {"uv": [12, 8, 13.5, 11], "rotation": 90, "texture": "#0"},
"down": {"uv": [13, 8, 16, 11], "rotation": 90, "texture": "#0"}
"down": {"uv": [13, 8, 16, 11], "rotation": 90, "texture": "#0", "cullface": "down"}
}
},
{
@ -28,17 +28,7 @@
"south": {"uv": [4, 8, 9, 9.5], "rotation": 180, "texture": "#0"},
"west": {"uv": [9, 9.5, 4, 8], "texture": "#0"},
"up": {"uv": [6, 11, 11, 16], "rotation": 90, "texture": "#0"},
"down": {"uv": [11, 11, 16, 16], "rotation": 90, "texture": "#0"}
}
},
{
"from": [4, 2, 4],
"to": [12, 4, 12],
"faces": {
"north": {"uv": [0, 9, 4, 10], "texture": "#0", "cullface": "up"},
"east": {"uv": [0, 9, 4, 10], "texture": "#0", "cullface": "up"},
"south": {"uv": [4, 9, 0, 10], "texture": "#0", "cullface": "up"},
"west": {"uv": [4, 9, 0, 10], "texture": "#0", "cullface": "up"}
"down": {"uv": [11, 11, 16, 16], "rotation": 90, "texture": "#0", "cullface": "down"}
}
}
]

View file

@ -6,23 +6,13 @@
"particle": "create:block/pipes"
},
"elements": [
{
"from": [12, 4, 4],
"to": [14, 12, 12],
"faces": {
"north": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"},
"south": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"},
"up": {"uv": [4, 8, 0, 9], "rotation": 90, "texture": "#0", "cullface": "up"},
"down": {"uv": [4, 9, 0, 10], "rotation": 270, "texture": "#0", "cullface": "up"}
}
},
{
"from": [16.95, 4.95, 4.95],
"to": [19.95, 11.05, 11.05],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [12, 8, 13.5, 11], "rotation": 180, "texture": "#0"},
"east": {"uv": [13, 8, 16, 11], "texture": "#0"},
"east": {"uv": [13, 8, 16, 11], "texture": "#0", "cullface": "east"},
"south": {"uv": [12, 8, 13.5, 11], "texture": "#0"},
"up": {"uv": [12, 8, 13.5, 11], "texture": "#0"},
"down": {"uv": [12, 8, 13.5, 11], "texture": "#0"}
@ -34,7 +24,7 @@
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [9, 9.5, 4, 8], "rotation": 90, "texture": "#0"},
"east": {"uv": [11, 11, 16, 16], "texture": "#0"},
"east": {"uv": [11, 11, 16, 16], "texture": "#0", "cullface": "east"},
"south": {"uv": [4, 8, 9, 9.5], "rotation": 90, "texture": "#0"},
"west": {"uv": [6, 11, 11, 16], "texture": "#0"},
"up": {"uv": [4, 8, 9, 9.5], "rotation": 90, "texture": "#0"},

View file

@ -6,23 +6,12 @@
"particle": "create:block/pipes"
},
"elements": [
{
"from": [4, 4, 2],
"to": [12, 12, 4],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"},
"west": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"},
"up": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#0", "cullface": "up"}
}
},
{
"from": [2.95, 2.95, -0.95],
"to": [13.05, 13.05, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 34, 8]},
"faces": {
"north": {"uv": [11, 11, 16, 16], "texture": "#0"},
"north": {"uv": [11, 11, 16, 16], "texture": "#0", "cullface": "north"},
"east": {"uv": [4, 8, 9, 9.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [6, 11, 11, 16], "texture": "#0"},
"west": {"uv": [9, 9.5, 4, 8], "rotation": 90, "texture": "#0"},
@ -35,7 +24,7 @@
"to": [11.05, 11.05, -0.95],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 34, 8]},
"faces": {
"north": {"uv": [13, 8, 16, 11], "texture": "#0"},
"north": {"uv": [13, 8, 16, 11], "texture": "#0", "cullface": "north"},
"east": {"uv": [12, 8, 13.5, 11], "texture": "#0"},
"west": {"uv": [12, 8, 13.5, 11], "rotation": 180, "texture": "#0"},
"up": {"uv": [12, 8, 13.5, 11], "rotation": 270, "texture": "#0"},

View file

@ -6,24 +6,13 @@
"particle": "create:block/pipes"
},
"elements": [
{
"from": [4, 4, 12],
"to": [12, 12, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"},
"west": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"},
"up": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0", "cullface": "up"}
}
},
{
"from": [4.95, 4.95, 16.95],
"to": [11.05, 11.05, 19.95],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 34, 8]},
"faces": {
"east": {"uv": [13.5, 8, 12, 11], "texture": "#0"},
"south": {"uv": [16, 8, 13, 11], "texture": "#0"},
"south": {"uv": [16, 8, 13, 11], "texture": "#0", "cullface": "south"},
"west": {"uv": [13.5, 8, 12, 11], "rotation": 180, "texture": "#0"},
"up": {"uv": [13.5, 8, 12, 11], "rotation": 270, "texture": "#0"},
"down": {"uv": [13.5, 8, 12, 11], "rotation": 90, "texture": "#0"}
@ -36,7 +25,7 @@
"faces": {
"north": {"uv": [11, 11, 6, 16], "texture": "#0"},
"east": {"uv": [4, 9.5, 9, 8], "rotation": 90, "texture": "#0"},
"south": {"uv": [16, 11, 11, 16], "texture": "#0"},
"south": {"uv": [16, 11, 11, 16], "texture": "#0", "cullface": "south"},
"west": {"uv": [9, 8, 4, 9.5], "rotation": 90, "texture": "#0"},
"up": {"uv": [4, 9.5, 9, 8], "texture": "#0"},
"down": {"uv": [9, 8, 4, 9.5], "texture": "#0"}

View file

@ -6,16 +6,6 @@
"particle": "create:block/pipes"
},
"elements": [
{
"from": [4, 12, 4],
"to": [12, 14, 12],
"faces": {
"north": {"uv": [0, 8, 4, 9], "texture": "#0", "cullface": "up"},
"east": {"uv": [0, 8, 4, 9], "texture": "#0", "cullface": "up"},
"south": {"uv": [4, 8, 0, 9], "texture": "#0", "cullface": "up"},
"west": {"uv": [4, 8, 0, 9], "texture": "#0", "cullface": "up"}
}
},
{
"from": [2.95, 14, 2.95],
"to": [13.05, 16.95, 13.05],
@ -25,7 +15,7 @@
"east": {"uv": [4, 9.5, 9, 8], "rotation": 180, "texture": "#0"},
"south": {"uv": [4, 9.5, 9, 8], "rotation": 180, "texture": "#0"},
"west": {"uv": [9, 8, 4, 9.5], "texture": "#0"},
"up": {"uv": [16, 11, 11, 16], "rotation": 90, "texture": "#0"},
"up": {"uv": [16, 11, 11, 16], "rotation": 90, "texture": "#0", "cullface": "up"},
"down": {"uv": [11, 11, 6, 16], "rotation": 90, "texture": "#0"}
}
},
@ -38,7 +28,7 @@
"east": {"uv": [13.5, 8, 12, 11], "rotation": 90, "texture": "#0"},
"south": {"uv": [13.5, 8, 12, 11], "rotation": 90, "texture": "#0"},
"west": {"uv": [13.5, 8, 12, 11], "rotation": 90, "texture": "#0"},
"up": {"uv": [16, 8, 13, 11], "rotation": 90, "texture": "#0"}
"up": {"uv": [16, 8, 13, 11], "rotation": 90, "texture": "#0", "cullface": "up"}
}
}
]

View file

@ -6,16 +6,6 @@
"particle": "create:block/pipes"
},
"elements": [
{
"from": [2, 4, 4],
"to": [4, 12, 12],
"faces": {
"north": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"},
"south": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"},
"up": {"uv": [4, 9, 0, 10], "rotation": 90, "texture": "#0", "cullface": "up"},
"down": {"uv": [4, 8, 0, 9], "rotation": 270, "texture": "#0", "cullface": "up"}
}
},
{
"from": [-0.95, 2.95, 2.95],
"to": [2, 13.05, 13.05],
@ -24,7 +14,7 @@
"north": {"uv": [9, 8, 4, 9.5], "rotation": 90, "texture": "#0"},
"east": {"uv": [11, 11, 6, 16], "texture": "#0"},
"south": {"uv": [4, 9.5, 9, 8], "rotation": 90, "texture": "#0"},
"west": {"uv": [16, 11, 11, 16], "texture": "#0"},
"west": {"uv": [16, 11, 11, 16], "texture": "#0", "cullface": "west"},
"up": {"uv": [4, 9.5, 9, 8], "rotation": 90, "texture": "#0"},
"down": {"uv": [9, 8, 4, 9.5], "rotation": 270, "texture": "#0"}
}
@ -36,7 +26,7 @@
"faces": {
"north": {"uv": [13.5, 8, 12, 11], "rotation": 180, "texture": "#0"},
"south": {"uv": [13.5, 8, 12, 11], "texture": "#0"},
"west": {"uv": [16, 8, 13, 11], "texture": "#0"},
"west": {"uv": [16, 8, 13, 11], "texture": "#0", "cullface": "west"},
"up": {"uv": [13.5, 8, 12, 11], "texture": "#0"},
"down": {"uv": [13.5, 8, 12, 11], "texture": "#0"}
}

View file

@ -6,16 +6,6 @@
"particle": "create:block/pipes"
},
"elements": [
{
"from": [4, 2, 4],
"to": [12, 4, 12],
"faces": {
"north": {"uv": [0, 9, 4, 10], "texture": "#0", "cullface": "up"},
"east": {"uv": [0, 9, 4, 10], "texture": "#0", "cullface": "up"},
"south": {"uv": [4, 9, 0, 10], "texture": "#0", "cullface": "up"},
"west": {"uv": [4, 9, 0, 10], "texture": "#0", "cullface": "up"}
}
},
{
"from": [3, 0, 3],
"to": [13, 2, 13],
@ -25,7 +15,7 @@
"south": {"uv": [10.5, 11, 11.5, 16], "rotation": 90, "texture": "#0"},
"west": {"uv": [10.5, 11, 11.5, 16], "rotation": 90, "texture": "#0"},
"up": {"uv": [6, 11, 11, 16], "rotation": 90, "texture": "#0"},
"down": {"uv": [11, 11, 16, 16], "rotation": 270, "texture": "#0"}
"down": {"uv": [11, 11, 16, 16], "rotation": 270, "texture": "#0", "cullface": "down"}
}
}
]

View file

@ -6,22 +6,12 @@
"particle": "create:block/pipes"
},
"elements": [
{
"from": [12, 4, 4],
"to": [14, 12, 12],
"faces": {
"north": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"},
"south": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"},
"up": {"uv": [4, 8, 0, 9], "rotation": 90, "texture": "#0", "cullface": "up"},
"down": {"uv": [4, 9, 0, 10], "rotation": 270, "texture": "#0", "cullface": "up"}
}
},
{
"from": [14, 3, 3],
"to": [16, 13, 13],
"faces": {
"north": {"uv": [11.5, 16, 10.5, 11], "texture": "#0"},
"east": {"uv": [11, 11, 16, 16], "texture": "#0"},
"east": {"uv": [11, 11, 16, 16], "texture": "#0", "cullface": "east"},
"south": {"uv": [10.5, 11, 11.5, 16], "texture": "#0"},
"west": {"uv": [6, 11, 11, 16], "texture": "#0"},
"up": {"uv": [11.5, 16, 10.5, 11], "rotation": 180, "texture": "#0"},

View file

@ -6,23 +6,12 @@
"particle": "create:block/pipes"
},
"elements": [
{
"from": [4, 4, 2],
"to": [12, 12, 4],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"},
"west": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"},
"up": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#0", "cullface": "up"}
}
},
{
"from": [3, 3, 0],
"to": [13, 13, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 28, 8]},
"faces": {
"north": {"uv": [11, 11, 16, 16], "texture": "#0"},
"north": {"uv": [11, 11, 16, 16], "texture": "#0", "cullface": "north"},
"east": {"uv": [10.5, 11, 11.5, 16], "texture": "#0"},
"south": {"uv": [6, 11, 11, 16], "texture": "#0"},
"west": {"uv": [11.5, 16, 10.5, 11], "texture": "#0"},

View file

@ -6,17 +6,6 @@
"particle": "create:block/pipes"
},
"elements": [
{
"from": [4, 4, 12],
"to": [12, 12, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"},
"west": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"},
"up": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0", "cullface": "up"}
}
},
{
"from": [3, 3, 14],
"to": [13, 13, 16],
@ -24,7 +13,7 @@
"faces": {
"north": {"uv": [6, 11, 11, 16], "texture": "#0"},
"east": {"uv": [11.5, 16, 10.5, 11], "texture": "#0"},
"south": {"uv": [11, 11, 16, 16], "texture": "#0"},
"south": {"uv": [11, 11, 16, 16], "texture": "#0", "cullface": "south"},
"west": {"uv": [10.5, 11, 11.5, 16], "texture": "#0"},
"up": {"uv": [11.5, 16, 10.5, 11], "rotation": 270, "texture": "#0"},
"down": {"uv": [10.5, 11, 11.5, 16], "rotation": 270, "texture": "#0"}

View file

@ -14,19 +14,9 @@
"east": {"uv": [11.5, 16, 10.5, 11], "rotation": 90, "texture": "#0"},
"south": {"uv": [11.5, 16, 10.5, 11], "rotation": 90, "texture": "#0"},
"west": {"uv": [11.5, 16, 10.5, 11], "rotation": 90, "texture": "#0"},
"up": {"uv": [11, 11, 16, 16], "rotation": 90, "texture": "#0"},
"up": {"uv": [11, 11, 16, 16], "rotation": 90, "texture": "#0", "cullface": "up"},
"down": {"uv": [6, 11, 11, 16], "rotation": 270, "texture": "#0"}
}
},
{
"from": [4, 12, 4],
"to": [12, 14, 12],
"faces": {
"north": {"uv": [0, 8, 4, 9], "texture": "#0", "cullface": "up"},
"east": {"uv": [0, 8, 4, 9], "texture": "#0", "cullface": "up"},
"south": {"uv": [4, 8, 0, 9], "texture": "#0", "cullface": "up"},
"west": {"uv": [4, 8, 0, 9], "texture": "#0", "cullface": "up"}
}
}
]
}

View file

@ -6,16 +6,6 @@
"particle": "create:block/pipes"
},
"elements": [
{
"from": [2, 4, 4],
"to": [4, 12, 12],
"faces": {
"north": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"},
"south": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"},
"up": {"uv": [4, 9, 0, 10], "rotation": 90, "texture": "#0", "cullface": "up"},
"down": {"uv": [4, 8, 0, 9], "rotation": 270, "texture": "#0", "cullface": "up"}
}
},
{
"from": [0, 3, 3],
"to": [2, 13, 13],
@ -23,7 +13,7 @@
"north": {"uv": [10.5, 11, 11.5, 16], "texture": "#0"},
"east": {"uv": [6, 11, 11, 16], "texture": "#0"},
"south": {"uv": [11.5, 16, 10.5, 11], "texture": "#0"},
"west": {"uv": [11, 11, 16, 16], "texture": "#0"},
"west": {"uv": [11, 11, 16, 16], "texture": "#0", "cullface": "west"},
"up": {"uv": [10.5, 11, 11.5, 16], "rotation": 180, "texture": "#0"},
"down": {"uv": [11.5, 16, 10.5, 11], "texture": "#0"}
}

View file

@ -0,0 +1,20 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "create:block/pipes",
"particle": "create:block/pipes"
},
"elements": [
{
"from": [4, 2, 4],
"to": [12, 4, 12],
"faces": {
"north": {"uv": [0, 9, 4, 10], "texture": "#0"},
"east": {"uv": [0, 9, 4, 10], "texture": "#0"},
"south": {"uv": [4, 9, 0, 10], "texture": "#0"},
"west": {"uv": [4, 9, 0, 10], "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,20 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "create:block/pipes",
"particle": "create:block/pipes"
},
"elements": [
{
"from": [12, 4, 4],
"to": [14, 12, 12],
"faces": {
"north": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0"},
"up": {"uv": [4, 8, 0, 9], "rotation": 90, "texture": "#0"},
"down": {"uv": [4, 9, 0, 10], "rotation": 270, "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "create:block/pipes",
"particle": "create:block/pipes"
},
"elements": [
{
"from": [4, 4, 2],
"to": [12, 12, 4],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "create:block/pipes",
"particle": "create:block/pipes"
},
"elements": [
{
"from": [4, 4, 12],
"to": [12, 12, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,20 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "create:block/pipes",
"particle": "create:block/pipes"
},
"elements": [
{
"from": [4, 12, 4],
"to": [12, 14, 12],
"faces": {
"north": {"uv": [0, 8, 4, 9], "texture": "#0"},
"east": {"uv": [0, 8, 4, 9], "texture": "#0"},
"south": {"uv": [4, 8, 0, 9], "texture": "#0"},
"west": {"uv": [4, 8, 0, 9], "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,20 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "create:block/pipes",
"particle": "create:block/pipes"
},
"elements": [
{
"from": [2, 4, 4],
"to": [4, 12, 12],
"faces": {
"north": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0"},
"up": {"uv": [4, 9, 0, 10], "rotation": 90, "texture": "#0"},
"down": {"uv": [4, 8, 0, 9], "rotation": 270, "texture": "#0"}
}
}
]
}