trusses and random fixes
This commit is contained in:
DrMangoTea
2023-10-26 18:16:15 +02:00
parent 1e8b38ab3c
commit af6f657de6
683 changed files with 33669 additions and 238 deletions

View File

@@ -14,8 +14,11 @@ public class TFMGSpriteShifts {
public static final CTSpriteShiftEntry
STEEL_CASING = omni("steel_casing");
public static final CTSpriteShiftEntry STEEL_SCAFFOLD = horizontal("scaffold/steel_scaffold"),
ALUMINUM_SCAFFOLD = horizontal("scaffold/aluminum_scaffold");
public static final CTSpriteShiftEntry
ALUMINUM_SCAFFOLD_TOP = omni("scaffold/aluminum_scaffold_top");
ALUMINUM_SCAFFOLD_TOP = omni("aluminum_casing");
public static final CTSpriteShiftEntry
HEAVY_MACHINERY_CASING = omni("heavy_machinery_casing");
@@ -33,9 +36,6 @@ public class TFMGSpriteShifts {
public static final CTSpriteShiftEntry STEEL_SCAFFOLD = horizontal("scaffold/steel_scaffold"),
ALUMINUM_SCAFFOLD = horizontal("scaffold/aluminum_scaffold");
public static final CTSpriteShiftEntry
STEEL_ENCASED_COGWHEEL_SIDE = vertical("steel_encased_cogwheel_side"),
STEEL_ENCASED_COGWHEEL_OTHERSIDE = horizontal("steel_encased_cogwheel_side"),

View File

@@ -0,0 +1,65 @@
package com.drmangotea.tfmg.blocks.decoration.flywheels;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.simibubi.create.AllShapes;
import com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.RenderShape;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class TFMGFlywheelBlock extends RotatedPillarKineticBlock implements IBE<TFMGFlywheelBlockEntity> {
public TFMGFlywheelBlock(Properties properties) {
super(properties);
}
@Override
public Class<TFMGFlywheelBlockEntity> getBlockEntityClass() {
return TFMGFlywheelBlockEntity.class;
}
@Override
public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) {
return AllShapes.LARGE_GEAR.get(pState.getValue(AXIS));
}
@Override
public RenderShape getRenderShape(BlockState pState) {
return RenderShape.ENTITYBLOCK_ANIMATED;
}
@Override
public BlockEntityType<? extends TFMGFlywheelBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.STEEL_FLYWHEEL.get();
}
@Override
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
return face.getAxis() == getRotationAxis(state);
}
@Override
public Axis getRotationAxis(BlockState state) {
return state.getValue(AXIS);
}
@Override
public float getParticleTargetRadius() {
return 2f;
}
@Override
public float getParticleInitialRadius() {
return 1.75f;
}
}

View File

@@ -0,0 +1,51 @@
package com.drmangotea.tfmg.blocks.decoration.flywheels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
public class TFMGFlywheelBlockEntity extends KineticBlockEntity {
LerpedFloat visualSpeed = LerpedFloat.linear();
float angle;
public TFMGFlywheelBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}
@Override
protected AABB createRenderBoundingBox() {
return super.createRenderBoundingBox().inflate(2);
}
@Override
public void write(CompoundTag compound, boolean clientPacket) {
super.write(compound, clientPacket);
}
@Override
protected void read(CompoundTag compound, boolean clientPacket) {
super.read(compound, clientPacket);
if (clientPacket)
visualSpeed.chase(getGeneratedSpeed(), 1 / 64f, Chaser.EXP);
}
@Override
public void tick() {
super.tick();
if (!level.isClientSide)
return;
float targetSpeed = getSpeed();
visualSpeed.updateChaseTarget(targetSpeed);
visualSpeed.tickChaser();
angle += visualSpeed.getValue() * 3 / 10f;
angle %= 360;
}
}

View File

@@ -0,0 +1,75 @@
package com.drmangotea.tfmg.blocks.decoration.flywheels;
import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.api.instance.DynamicInstance;
import com.jozufozu.flywheel.core.materials.model.ModelData;
import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityInstance;
import com.simibubi.create.content.kinetics.base.flwdata.RotatingData;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import net.minecraft.core.Direction;
public class TFMGFlywheelInstance extends KineticBlockEntityInstance<TFMGFlywheelBlockEntity> implements DynamicInstance {
protected final RotatingData shaft;
protected final ModelData wheel;
protected float lastAngle = Float.NaN;
public TFMGFlywheelInstance(MaterialManager materialManager, TFMGFlywheelBlockEntity blockEntity) {
super(materialManager, blockEntity);
shaft = setup(getRotatingMaterial().getModel(shaft())
.createInstance());
wheel = getTransformMaterial().getModel(blockState)
.createInstance();
animate(blockEntity.angle);
}
@Override
public void beginFrame() {
float partialTicks = AnimationTickHolder.getPartialTicks();
float speed = blockEntity.visualSpeed.getValue(partialTicks) * 3 / 10f;
float angle = blockEntity.angle + speed * partialTicks;
if (Math.abs(angle - lastAngle) < 0.001)
return;
animate(angle);
lastAngle = angle;
}
private void animate(float angle) {
PoseStack ms = new PoseStack();
TransformStack msr = TransformStack.cast(ms);
msr.translate(getInstancePosition());
msr.centre()
.rotate(Direction.get(Direction.AxisDirection.POSITIVE, axis), AngleHelper.rad(angle))
.unCentre();
wheel.setTransform(ms);
}
@Override
public void update() {
updateRotation(shaft);
}
@Override
public void updateLight() {
relight(pos, shaft, wheel);
}
@Override
public void remove() {
shaft.delete();
wheel.delete();
}
}

View File

@@ -0,0 +1,50 @@
package com.drmangotea.tfmg.blocks.decoration.flywheels;
import com.jozufozu.flywheel.backend.Backend;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedBufferer;
import com.simibubi.create.foundation.render.SuperByteBuffer;
import com.simibubi.create.foundation.utility.AngleHelper;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.world.level.block.state.BlockState;
public class TFMGFlywheelRenderer extends KineticBlockEntityRenderer<TFMGFlywheelBlockEntity> {
public TFMGFlywheelRenderer(BlockEntityRendererProvider.Context context) {
super(context);
}
@Override
protected void renderSafe(TFMGFlywheelBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer,
int light, int overlay) {
super.renderSafe(be, partialTicks, ms, buffer, light, overlay);
if (Backend.canUseInstancing(be.getLevel()))
return;
BlockState blockState = be.getBlockState();
float speed = be.visualSpeed.getValue(partialTicks) * 3 / 10f;
float angle = be.angle + speed * partialTicks;
VertexConsumer vb = buffer.getBuffer(RenderType.solid());
renderFlywheel(be, ms, light, blockState, angle, vb);
}
private void renderFlywheel(TFMGFlywheelBlockEntity be, PoseStack ms, int light, BlockState blockState, float angle,
VertexConsumer vb) {
SuperByteBuffer wheel = CachedBufferer.block(blockState);
kineticRotationTransform(wheel, be, getRotationAxisOf(be), AngleHelper.rad(angle), light);
wheel.renderInto(ms, vb);
}
@Override
protected BlockState getRenderedBlockState(TFMGFlywheelBlockEntity be) {
return shaft(getRotationAxisOf(be));
}
}

View File

@@ -121,7 +121,7 @@ boolean signalChanged;
fuelConsumption=0;
if(!tankInventory.isEmpty()) {
if(consumptionTimer>=5) {
if(consumptionTimer>=10) {
if(signal!=0)
tankInventory.drain(fuelConsumption, IFluidHandler.FluidAction.EXECUTE);
consumptionTimer=0;
@@ -140,7 +140,7 @@ boolean signalChanged;
public boolean isExhaustTankFull(){
if(!hasBackPart())
return false;
return false;
EngineBackBlockEntity back = (EngineBackBlockEntity) level.getBlockEntity(this.getBlockPos().relative(this.getBlockState().getValue(FACING).getOpposite()));
return back.tankInventory.getFluidAmount()+7>=500;

View File

@@ -0,0 +1,47 @@
package com.drmangotea.tfmg.blocks.engines.small;
import com.simibubi.create.foundation.data.SpecialBlockStateGen;
import com.tterrag.registrate.providers.DataGenContext;
import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.generators.ModelFile;
import static com.simibubi.create.foundation.data.AssetLookup.partialBaseModel;
public class EngineGenerator extends SpecialBlockStateGen {
@Override
protected int getXRotation(BlockState state) {
return switch (state.getValue(EngineBlock.FACING)) {
case NORTH -> 0;
case SOUTH -> 0;
case WEST -> 0;
case EAST -> 0;
case DOWN -> 90;
case UP -> 270;
};
}
@Override
protected int getYRotation(BlockState state) {
return switch (state.getValue(EngineBlock.FACING)) {
case NORTH -> 0;
case SOUTH -> 180;
case WEST -> 270;
case EAST -> 90;
case DOWN -> 180;
case UP -> 180;
};
}
@Override
public <T extends Block> ModelFile getModel(DataGenContext<Block, T> ctx, RegistrateBlockstateProvider prov,
BlockState state) {
// return AssetLookup.forPowered(ctx, prov)
// .apply(state);
return partialBaseModel(ctx, prov);
}
}

View File

@@ -29,6 +29,7 @@ import javax.annotation.Nullable;
import java.util.List;
import java.util.Optional;
@SuppressWarnings("removal")
public class ExhaustTileEntity extends SmartBlockEntity implements IHaveGoggleInformation {

View File

@@ -0,0 +1,34 @@
package com.drmangotea.tfmg.blocks.machines.flarestack;
import com.simibubi.create.foundation.data.SpecialBlockStateGen;
import com.tterrag.registrate.providers.DataGenContext;
import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.generators.ModelFile;
import static com.simibubi.create.foundation.data.AssetLookup.partialBaseModel;
public class FlarestackGenerator extends SpecialBlockStateGen {
@Override
protected int getXRotation(BlockState state) {
return 0;
}
@Override
protected int getYRotation(BlockState state) {
return 0;
}
@Override
public <T extends Block> ModelFile getModel(DataGenContext<Block, T> ctx, RegistrateBlockstateProvider prov,
BlockState state) {
// return AssetLookup.forPowered(ctx, prov)
// .apply(state);
return state.getValue(FlarestackBlock.LIT) ? partialBaseModel(ctx, prov, "lit")
: partialBaseModel(ctx, prov);
}
}

View File

@@ -0,0 +1,134 @@
package com.drmangotea.tfmg.blocks.pipes.normal.aluminum;
import com.drmangotea.tfmg.registry.TFMGPartialModels;
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.ItemBlockRenderTypes;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.ChunkRenderTypeSet;
import net.minecraftforge.client.model.data.ModelData;
import net.minecraftforge.client.model.data.ModelProperty;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class AluminumPipeAttachmentModel extends BakedModelWrapperWithData {
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
public AluminumPipeAttachmentModel(BakedModel template) {
super(template);
}
@Override
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
ModelData blockEntityData) {
PipeModelData data = new PipeModelData();
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
if (transport != null)
for (Direction d : Iterate.directions)
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
if (bracket != null)
data.putBracket(bracket.getBracket());
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
return builder.with(PIPE_PROPERTY, data);
}
@SuppressWarnings("removal")
@Override
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
if (set.isEmpty()) {
return ItemBlockRenderTypes.getRenderLayers(state);
}
return set;
}
@Override
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
if (data.has(PIPE_PROPERTY)) {
PipeModelData pipeData = data.get(PIPE_PROPERTY);
quads = new ArrayList<>(quads);
addQuads(quads, state, side, rand, data, pipeData, renderType);
}
return quads;
}
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
PipeModelData pipeData, RenderType renderType) {
BakedModel bracket = pipeData.getBracket();
if (bracket != null)
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
for (Direction d : Iterate.directions) {
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
quads.addAll(TFMGPartialModels.ALUMINUM_PIPE_ATTACHMENTS.get(partial)
.get(d)
.get()
.getQuads(state, side, rand, data, renderType));
}
}
if (pipeData.isEncased())
quads.addAll(TFMGPartialModels.ALUMINUM_FLUID_PIPE_CASING.get()
.getQuads(state, side, rand, data, renderType));
}
private static class PipeModelData {
private FluidTransportBehaviour.AttachmentTypes[] attachments;
private boolean encased;
private BakedModel bracket;
public PipeModelData() {
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
}
public void putBracket(BlockState state) {
if (state != null) {
this.bracket = Minecraft.getInstance()
.getBlockRenderer()
.getBlockModel(state);
}
}
public BakedModel getBracket() {
return bracket;
}
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
attachments[face.get3DDataValue()] = rim;
}
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
return attachments[face.get3DDataValue()];
}
public void setEncased(boolean encased) {
this.encased = encased;
}
public boolean isEncased() {
return encased;
}
}
}

View File

@@ -0,0 +1,201 @@
package com.drmangotea.tfmg.blocks.pipes.normal.aluminum;
import com.drmangotea.tfmg.blocks.pipes.normal.LockablePipeBlockEntity;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
import com.simibubi.create.content.fluids.FluidPropagator;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.EncasedPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlockEntity;
import com.simibubi.create.content.fluids.pipes.GlassFluidPipeBlock;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import net.minecraft.world.phys.Vec3;
import javax.annotation.Nullable;
import java.util.Arrays;
public class AluminumPipeBlock extends FluidPipeBlock {
// public static final BooleanProperty LOCKEDDDD = BlockStateProperties.LOCKED;
public AluminumPipeBlock(Properties properties) {
super(properties);
// this.registerDefaultState(super.defaultBlockState().setValue(LOCKEDDDD, false));
}
public BlockState updateBlockState(BlockState state, Direction preferredDirection, @Nullable Direction ignore,
BlockAndTintGetter world, BlockPos pos) {
if(world.getBlockEntity(pos) instanceof LockablePipeBlockEntity)
if(((LockablePipeBlockEntity)world.getBlockEntity(pos)).locked){
return state;
}
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
if (bracket != null && bracket.isBracketPresent())
return state;
BlockState prevState = state;
int prevStateSides = (int) Arrays.stream(Iterate.directions)
.map(PROPERTY_BY_DIRECTION::get)
.filter(prevState::getValue)
.count();
// Update sides that are not ignored
for (Direction d : Iterate.directions)
if (d != ignore) {
boolean shouldConnect = canConnectTo(world, pos.relative(d), world.getBlockState(pos.relative(d)), d);
if(world.getBlockEntity(pos.relative(d)) instanceof LockablePipeBlockEntity) {
if (((LockablePipeBlockEntity) world.getBlockEntity(pos.relative(d))).locked) {
shouldConnect = false;
if(world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()))){
shouldConnect =true;
}
}
}
state = state.setValue(PROPERTY_BY_DIRECTION.get(d), shouldConnect);
}
// See if it has enough connections
Direction connectedDirection = null;
for (Direction d : Iterate.directions) {
if (isOpenAt(state, d)) {
if (connectedDirection != null)
return state;
connectedDirection = d;
}
}
// Add opposite end if only one connection
if (connectedDirection != null)
return state.setValue(PROPERTY_BY_DIRECTION.get(connectedDirection.getOpposite()), true);
// If we can't connect to anything and weren't connected before, do nothing
if (prevStateSides == 2)
return prevState;
// Use preferred
return state.setValue(PROPERTY_BY_DIRECTION.get(preferredDirection), true)
.setValue(PROPERTY_BY_DIRECTION.get(preferredDirection.getOpposite()), true);
}
@Override
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource r) {
super.tick(state,world,pos,r);
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
if (tryRemoveBracket(context))
return InteractionResult.SUCCESS;
Level world = context.getLevel();
BlockPos pos = context.getClickedPos();
Direction clickedFace = context.getClickedFace();
Direction.Axis axis = getAxis(world, pos, state);
if (axis == null) {
Vec3 clickLocation = context.getClickLocation()
.subtract(pos.getX(), pos.getY(), pos.getZ());
double closest = Float.MAX_VALUE;
Direction argClosest = Direction.UP;
for (Direction direction : Iterate.directions) {
if (clickedFace.getAxis() == direction.getAxis())
continue;
Vec3 centerOf = Vec3.atCenterOf(direction.getNormal());
double distance = centerOf.distanceToSqr(clickLocation);
if (distance < closest) {
closest = distance;
argClosest = direction;
}
}
axis = argClosest.getAxis();
}
if (clickedFace.getAxis() == axis)
return InteractionResult.PASS;
if (!world.isClientSide) {
withBlockEntityDo(world, pos, fpte -> fpte.getBehaviour(FluidTransportBehaviour.TYPE).interfaces.values()
.stream()
.filter(pc -> pc != null && pc.hasFlow())
.findAny()
.ifPresent($ -> AllAdvancements.GLASS_PIPE.awardTo(context.getPlayer())));
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos, TFMGBlocks.GLASS_ALUMINUM_PIPE.getDefaultState()
.setValue(GlassFluidPipeBlock.AXIS, axis)
.setValue(BlockStateProperties.WATERLOGGED, state.getValue(BlockStateProperties.WATERLOGGED)));
FluidTransportBehaviour.loadFlows(world, pos);
}
return InteractionResult.SUCCESS;
}
@Nullable
private Direction.Axis getAxis(BlockGetter world, BlockPos pos, BlockState state) {
return FluidPropagator.getStraightPipeAxis(state);
}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos,
Player player) {
return TFMGBlocks.ALUMINUM_PIPE.asStack();
}
@Override
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
BlockHitResult hit) {
if (!AllBlocks.COPPER_CASING.isIn(player.getItemInHand(hand)))
return InteractionResult.PASS;
if (world.isClientSide)
return InteractionResult.SUCCESS;
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos,
EncasedPipeBlock.transferSixWayProperties(state, TFMGBlocks.COPPER_ENCASED_ALUMINUM_PIPE.getDefaultState()));
FluidTransportBehaviour.loadFlows(world, pos);
return InteractionResult.SUCCESS;
}
// @Override
// protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
// super.createBlockStateDefinition(builder);
// builder.add(LOCKEDDDD);
// }
@Override
public Class<FluidPipeBlockEntity> getBlockEntityClass() {
return FluidPipeBlockEntity.class;
}
@Override
public BlockEntityType<? extends FluidPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.LOCKABLE_PIPE.get();
}
}

View File

@@ -0,0 +1,70 @@
package com.drmangotea.tfmg.blocks.pipes.normal.aluminum;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.EncasedPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlockEntity;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.HitResult;
import java.util.function.Supplier;
public class EncasedAluminumPipeBlock extends EncasedPipeBlock {
public EncasedAluminumPipeBlock(Properties p_i48339_1_, Supplier<Block> casing) {
super(p_i48339_1_, casing);
}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos, Player player) {
return TFMGBlocks.ALUMINUM_PIPE.asStack();
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
Level world = context.getLevel();
BlockPos pos = context.getClickedPos();
if (world.isClientSide)
return InteractionResult.SUCCESS;
context.getLevel()
.levelEvent(2001, context.getClickedPos(), Block.getId(state));
BlockState equivalentPipe = transferSixWayProperties(state, TFMGBlocks.ALUMINUM_PIPE.getDefaultState());
Direction firstFound = Direction.UP;
for (Direction d : Iterate.directions)
if (state.getValue(FACING_TO_PROPERTY_MAP.get(d))) {
firstFound = d;
break;
}
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos, TFMGBlocks.ALUMINUM_PIPE.get()
.updateBlockState(equivalentPipe, firstFound, null, world, pos));
FluidTransportBehaviour.loadFlows(world, pos);
return InteractionResult.SUCCESS;
}
@Override
public Class<FluidPipeBlockEntity> getBlockEntityClass() {
return FluidPipeBlockEntity.class;
}
@Override
public BlockEntityType<? extends FluidPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.ENCASED_LOCKABLE_PIPE.get();
}
}

View File

@@ -0,0 +1,80 @@
package com.drmangotea.tfmg.blocks.pipes.normal.aluminum;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.EncasedPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.content.fluids.pipes.GlassFluidPipeBlock;
import com.simibubi.create.content.fluids.pipes.StraightPipeBlockEntity;
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import java.util.Map;
public class GlassAluminumPipeBlock extends GlassFluidPipeBlock {
public GlassAluminumPipeBlock(Properties p_i48339_1_) {
super(p_i48339_1_);
}
@Override
public ItemRequirement getRequiredItems(BlockState state, BlockEntity te) {
return ItemRequirement.of(TFMGBlocks.ALUMINUM_PIPE.getDefaultState(), te);
}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos,
Player player) {
return TFMGBlocks.ALUMINUM_PIPE.asStack();
}
@Override
public BlockState toRegularPipe(LevelAccessor world, BlockPos pos, BlockState state) {
Direction side = Direction.get(Direction.AxisDirection.POSITIVE, state.getValue(AXIS));
Map<Direction, BooleanProperty> facingToPropertyMap = FluidPipeBlock.PROPERTY_BY_DIRECTION;
return TFMGBlocks.ALUMINUM_PIPE.get()
.updateBlockState(TFMGBlocks.ALUMINUM_PIPE.getDefaultState()
.setValue(facingToPropertyMap.get(side), true)
.setValue(facingToPropertyMap.get(side.getOpposite()), true), side, null, world, pos);
}
@Override
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
BlockHitResult hit) {
if (!AllBlocks.COPPER_CASING.isIn(player.getItemInHand(hand)))
return InteractionResult.PASS;
if (world.isClientSide)
return InteractionResult.SUCCESS;
BlockState newState = TFMGBlocks.COPPER_ENCASED_ALUMINUM_PIPE.getDefaultState();
for (Direction d : Iterate.directionsInAxis(getAxis(state)))
newState = newState.setValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(d), true);
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos, newState);
FluidTransportBehaviour.loadFlows(world, pos);
return InteractionResult.SUCCESS;
}
@Override
public Class<StraightPipeBlockEntity> getBlockEntityClass() {
return StraightPipeBlockEntity.class;
}
@Override
public BlockEntityType<? extends StraightPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.GLASS_TFMG_PIPE.get();
}
}

View File

@@ -0,0 +1,134 @@
package com.drmangotea.tfmg.blocks.pipes.normal.brass;
import com.drmangotea.tfmg.registry.TFMGPartialModels;
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.ItemBlockRenderTypes;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.ChunkRenderTypeSet;
import net.minecraftforge.client.model.data.ModelData;
import net.minecraftforge.client.model.data.ModelProperty;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class BrassPipeAttachmentModel extends BakedModelWrapperWithData {
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
public BrassPipeAttachmentModel(BakedModel template) {
super(template);
}
@Override
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
ModelData blockEntityData) {
PipeModelData data = new PipeModelData();
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
if (transport != null)
for (Direction d : Iterate.directions)
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
if (bracket != null)
data.putBracket(bracket.getBracket());
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
return builder.with(PIPE_PROPERTY, data);
}
@SuppressWarnings("removal")
@Override
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
if (set.isEmpty()) {
return ItemBlockRenderTypes.getRenderLayers(state);
}
return set;
}
@Override
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
if (data.has(PIPE_PROPERTY)) {
PipeModelData pipeData = data.get(PIPE_PROPERTY);
quads = new ArrayList<>(quads);
addQuads(quads, state, side, rand, data, pipeData, renderType);
}
return quads;
}
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
PipeModelData pipeData, RenderType renderType) {
BakedModel bracket = pipeData.getBracket();
if (bracket != null)
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
for (Direction d : Iterate.directions) {
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
quads.addAll(TFMGPartialModels.BRASS_PIPE_ATTACHMENTS.get(partial)
.get(d)
.get()
.getQuads(state, side, rand, data, renderType));
}
}
if (pipeData.isEncased())
quads.addAll(TFMGPartialModels.BRASS_FLUID_PIPE_CASING.get()
.getQuads(state, side, rand, data, renderType));
}
private static class PipeModelData {
private FluidTransportBehaviour.AttachmentTypes[] attachments;
private boolean encased;
private BakedModel bracket;
public PipeModelData() {
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
}
public void putBracket(BlockState state) {
if (state != null) {
this.bracket = Minecraft.getInstance()
.getBlockRenderer()
.getBlockModel(state);
}
}
public BakedModel getBracket() {
return bracket;
}
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
attachments[face.get3DDataValue()] = rim;
}
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
return attachments[face.get3DDataValue()];
}
public void setEncased(boolean encased) {
this.encased = encased;
}
public boolean isEncased() {
return encased;
}
}
}

View File

@@ -0,0 +1,201 @@
package com.drmangotea.tfmg.blocks.pipes.normal.brass;
import com.drmangotea.tfmg.blocks.pipes.normal.LockablePipeBlockEntity;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
import com.simibubi.create.content.fluids.FluidPropagator;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.EncasedPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlockEntity;
import com.simibubi.create.content.fluids.pipes.GlassFluidPipeBlock;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import net.minecraft.world.phys.Vec3;
import javax.annotation.Nullable;
import java.util.Arrays;
public class BrassPipeBlock extends FluidPipeBlock {
// public static final BooleanProperty LOCKEDDDD = BlockStateProperties.LOCKED;
public BrassPipeBlock(Properties properties) {
super(properties);
// this.registerDefaultState(super.defaultBlockState().setValue(LOCKEDDDD, false));
}
public BlockState updateBlockState(BlockState state, Direction preferredDirection, @Nullable Direction ignore,
BlockAndTintGetter world, BlockPos pos) {
if(world.getBlockEntity(pos) instanceof LockablePipeBlockEntity)
if(((LockablePipeBlockEntity)world.getBlockEntity(pos)).locked){
return state;
}
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
if (bracket != null && bracket.isBracketPresent())
return state;
BlockState prevState = state;
int prevStateSides = (int) Arrays.stream(Iterate.directions)
.map(PROPERTY_BY_DIRECTION::get)
.filter(prevState::getValue)
.count();
// Update sides that are not ignored
for (Direction d : Iterate.directions)
if (d != ignore) {
boolean shouldConnect = canConnectTo(world, pos.relative(d), world.getBlockState(pos.relative(d)), d);
if(world.getBlockEntity(pos.relative(d)) instanceof LockablePipeBlockEntity) {
if (((LockablePipeBlockEntity) world.getBlockEntity(pos.relative(d))).locked) {
shouldConnect = false;
if(world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()))){
shouldConnect =true;
}
}
}
state = state.setValue(PROPERTY_BY_DIRECTION.get(d), shouldConnect);
}
// See if it has enough connections
Direction connectedDirection = null;
for (Direction d : Iterate.directions) {
if (isOpenAt(state, d)) {
if (connectedDirection != null)
return state;
connectedDirection = d;
}
}
// Add opposite end if only one connection
if (connectedDirection != null)
return state.setValue(PROPERTY_BY_DIRECTION.get(connectedDirection.getOpposite()), true);
// If we can't connect to anything and weren't connected before, do nothing
if (prevStateSides == 2)
return prevState;
// Use preferred
return state.setValue(PROPERTY_BY_DIRECTION.get(preferredDirection), true)
.setValue(PROPERTY_BY_DIRECTION.get(preferredDirection.getOpposite()), true);
}
@Override
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource r) {
super.tick(state,world,pos,r);
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
if (tryRemoveBracket(context))
return InteractionResult.SUCCESS;
Level world = context.getLevel();
BlockPos pos = context.getClickedPos();
Direction clickedFace = context.getClickedFace();
Direction.Axis axis = getAxis(world, pos, state);
if (axis == null) {
Vec3 clickLocation = context.getClickLocation()
.subtract(pos.getX(), pos.getY(), pos.getZ());
double closest = Float.MAX_VALUE;
Direction argClosest = Direction.UP;
for (Direction direction : Iterate.directions) {
if (clickedFace.getAxis() == direction.getAxis())
continue;
Vec3 centerOf = Vec3.atCenterOf(direction.getNormal());
double distance = centerOf.distanceToSqr(clickLocation);
if (distance < closest) {
closest = distance;
argClosest = direction;
}
}
axis = argClosest.getAxis();
}
if (clickedFace.getAxis() == axis)
return InteractionResult.PASS;
if (!world.isClientSide) {
withBlockEntityDo(world, pos, fpte -> fpte.getBehaviour(FluidTransportBehaviour.TYPE).interfaces.values()
.stream()
.filter(pc -> pc != null && pc.hasFlow())
.findAny()
.ifPresent($ -> AllAdvancements.GLASS_PIPE.awardTo(context.getPlayer())));
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos, TFMGBlocks.GLASS_BRASS_PIPE.getDefaultState()
.setValue(GlassFluidPipeBlock.AXIS, axis)
.setValue(BlockStateProperties.WATERLOGGED, state.getValue(BlockStateProperties.WATERLOGGED)));
FluidTransportBehaviour.loadFlows(world, pos);
}
return InteractionResult.SUCCESS;
}
@Nullable
private Direction.Axis getAxis(BlockGetter world, BlockPos pos, BlockState state) {
return FluidPropagator.getStraightPipeAxis(state);
}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos,
Player player) {
return TFMGBlocks.BRASS_PIPE.asStack();
}
@Override
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
BlockHitResult hit) {
if (!AllBlocks.COPPER_CASING.isIn(player.getItemInHand(hand)))
return InteractionResult.PASS;
if (world.isClientSide)
return InteractionResult.SUCCESS;
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos,
EncasedPipeBlock.transferSixWayProperties(state, TFMGBlocks.COPPER_ENCASED_BRASS_PIPE.getDefaultState()));
FluidTransportBehaviour.loadFlows(world, pos);
return InteractionResult.SUCCESS;
}
// @Override
// protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
// super.createBlockStateDefinition(builder);
// builder.add(LOCKEDDDD);
// }
@Override
public Class<FluidPipeBlockEntity> getBlockEntityClass() {
return FluidPipeBlockEntity.class;
}
@Override
public BlockEntityType<? extends FluidPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.TFMG_PIPE.get();
}
}

View File

@@ -0,0 +1,70 @@
package com.drmangotea.tfmg.blocks.pipes.normal.brass;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.EncasedPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlockEntity;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.HitResult;
import java.util.function.Supplier;
public class EncasedBrassPipeBlock extends EncasedPipeBlock {
public EncasedBrassPipeBlock(Properties p_i48339_1_, Supplier<Block> casing) {
super(p_i48339_1_, casing);
}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos, Player player) {
return TFMGBlocks.BRASS_PIPE.asStack();
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
Level world = context.getLevel();
BlockPos pos = context.getClickedPos();
if (world.isClientSide)
return InteractionResult.SUCCESS;
context.getLevel()
.levelEvent(2001, context.getClickedPos(), Block.getId(state));
BlockState equivalentPipe = transferSixWayProperties(state, TFMGBlocks.BRASS_PIPE.getDefaultState());
Direction firstFound = Direction.UP;
for (Direction d : Iterate.directions)
if (state.getValue(FACING_TO_PROPERTY_MAP.get(d))) {
firstFound = d;
break;
}
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos, TFMGBlocks.BRASS_PIPE.get()
.updateBlockState(equivalentPipe, firstFound, null, world, pos));
FluidTransportBehaviour.loadFlows(world, pos);
return InteractionResult.SUCCESS;
}
@Override
public Class<FluidPipeBlockEntity> getBlockEntityClass() {
return FluidPipeBlockEntity.class;
}
@Override
public BlockEntityType<? extends FluidPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.ENCASED_TFMG_PIPE.get();
}
}

View File

@@ -0,0 +1,80 @@
package com.drmangotea.tfmg.blocks.pipes.normal.brass;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.EncasedPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.content.fluids.pipes.GlassFluidPipeBlock;
import com.simibubi.create.content.fluids.pipes.StraightPipeBlockEntity;
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import java.util.Map;
public class GlassBrassPipeBlock extends GlassFluidPipeBlock {
public GlassBrassPipeBlock(Properties p_i48339_1_) {
super(p_i48339_1_);
}
@Override
public ItemRequirement getRequiredItems(BlockState state, BlockEntity te) {
return ItemRequirement.of(TFMGBlocks.BRASS_PIPE.getDefaultState(), te);
}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos,
Player player) {
return TFMGBlocks.BRASS_PIPE.asStack();
}
@Override
public BlockState toRegularPipe(LevelAccessor world, BlockPos pos, BlockState state) {
Direction side = Direction.get(Direction.AxisDirection.POSITIVE, state.getValue(AXIS));
Map<Direction, BooleanProperty> facingToPropertyMap = FluidPipeBlock.PROPERTY_BY_DIRECTION;
return TFMGBlocks.BRASS_PIPE.get()
.updateBlockState(TFMGBlocks.BRASS_PIPE.getDefaultState()
.setValue(facingToPropertyMap.get(side), true)
.setValue(facingToPropertyMap.get(side.getOpposite()), true), side, null, world, pos);
}
@Override
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
BlockHitResult hit) {
if (!AllBlocks.COPPER_CASING.isIn(player.getItemInHand(hand)))
return InteractionResult.PASS;
if (world.isClientSide)
return InteractionResult.SUCCESS;
BlockState newState = TFMGBlocks.COPPER_ENCASED_BRASS_PIPE.getDefaultState();
for (Direction d : Iterate.directionsInAxis(getAxis(state)))
newState = newState.setValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(d), true);
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos, newState);
FluidTransportBehaviour.loadFlows(world, pos);
return InteractionResult.SUCCESS;
}
@Override
public Class<StraightPipeBlockEntity> getBlockEntityClass() {
return StraightPipeBlockEntity.class;
}
@Override
public BlockEntityType<? extends StraightPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.GLASS_TFMG_PIPE.get();
}
}

View File

@@ -0,0 +1,134 @@
package com.drmangotea.tfmg.blocks.pipes.normal.cast_iron;
import com.drmangotea.tfmg.registry.TFMGPartialModels;
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.ItemBlockRenderTypes;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.ChunkRenderTypeSet;
import net.minecraftforge.client.model.data.ModelData;
import net.minecraftforge.client.model.data.ModelProperty;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CastIronPipeAttachmentModel extends BakedModelWrapperWithData {
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
public CastIronPipeAttachmentModel(BakedModel template) {
super(template);
}
@Override
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
ModelData blockEntityData) {
PipeModelData data = new PipeModelData();
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
if (transport != null)
for (Direction d : Iterate.directions)
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
if (bracket != null)
data.putBracket(bracket.getBracket());
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
return builder.with(PIPE_PROPERTY, data);
}
@SuppressWarnings("removal")
@Override
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
if (set.isEmpty()) {
return ItemBlockRenderTypes.getRenderLayers(state);
}
return set;
}
@Override
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
if (data.has(PIPE_PROPERTY)) {
PipeModelData pipeData = data.get(PIPE_PROPERTY);
quads = new ArrayList<>(quads);
addQuads(quads, state, side, rand, data, pipeData, renderType);
}
return quads;
}
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
PipeModelData pipeData, RenderType renderType) {
BakedModel bracket = pipeData.getBracket();
if (bracket != null)
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
for (Direction d : Iterate.directions) {
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
quads.addAll(TFMGPartialModels.CAST_IRON_PIPE_ATTACHMENTS.get(partial)
.get(d)
.get()
.getQuads(state, side, rand, data, renderType));
}
}
if (pipeData.isEncased())
quads.addAll(TFMGPartialModels.CAST_IRON_FLUID_PIPE_CASING.get()
.getQuads(state, side, rand, data, renderType));
}
private static class PipeModelData {
private FluidTransportBehaviour.AttachmentTypes[] attachments;
private boolean encased;
private BakedModel bracket;
public PipeModelData() {
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
}
public void putBracket(BlockState state) {
if (state != null) {
this.bracket = Minecraft.getInstance()
.getBlockRenderer()
.getBlockModel(state);
}
}
public BakedModel getBracket() {
return bracket;
}
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
attachments[face.get3DDataValue()] = rim;
}
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
return attachments[face.get3DDataValue()];
}
public void setEncased(boolean encased) {
this.encased = encased;
}
public boolean isEncased() {
return encased;
}
}
}

View File

@@ -0,0 +1,201 @@
package com.drmangotea.tfmg.blocks.pipes.normal.cast_iron;
import com.drmangotea.tfmg.blocks.pipes.normal.LockablePipeBlockEntity;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
import com.simibubi.create.content.fluids.FluidPropagator;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.EncasedPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlockEntity;
import com.simibubi.create.content.fluids.pipes.GlassFluidPipeBlock;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import net.minecraft.world.phys.Vec3;
import javax.annotation.Nullable;
import java.util.Arrays;
public class CastIronPipeBlock extends FluidPipeBlock {
// public static final BooleanProperty LOCKEDDDD = BlockStateProperties.LOCKED;
public CastIronPipeBlock(Properties properties) {
super(properties);
// this.registerDefaultState(super.defaultBlockState().setValue(LOCKEDDDD, false));
}
public BlockState updateBlockState(BlockState state, Direction preferredDirection, @Nullable Direction ignore,
BlockAndTintGetter world, BlockPos pos) {
if(world.getBlockEntity(pos) instanceof LockablePipeBlockEntity)
if(((LockablePipeBlockEntity)world.getBlockEntity(pos)).locked){
return state;
}
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
if (bracket != null && bracket.isBracketPresent())
return state;
BlockState prevState = state;
int prevStateSides = (int) Arrays.stream(Iterate.directions)
.map(PROPERTY_BY_DIRECTION::get)
.filter(prevState::getValue)
.count();
// Update sides that are not ignored
for (Direction d : Iterate.directions)
if (d != ignore) {
boolean shouldConnect = canConnectTo(world, pos.relative(d), world.getBlockState(pos.relative(d)), d);
if(world.getBlockEntity(pos.relative(d)) instanceof LockablePipeBlockEntity) {
if (((LockablePipeBlockEntity) world.getBlockEntity(pos.relative(d))).locked) {
shouldConnect = false;
if(world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()))){
shouldConnect =true;
}
}
}
state = state.setValue(PROPERTY_BY_DIRECTION.get(d), shouldConnect);
}
// See if it has enough connections
Direction connectedDirection = null;
for (Direction d : Iterate.directions) {
if (isOpenAt(state, d)) {
if (connectedDirection != null)
return state;
connectedDirection = d;
}
}
// Add opposite end if only one connection
if (connectedDirection != null)
return state.setValue(PROPERTY_BY_DIRECTION.get(connectedDirection.getOpposite()), true);
// If we can't connect to anything and weren't connected before, do nothing
if (prevStateSides == 2)
return prevState;
// Use preferred
return state.setValue(PROPERTY_BY_DIRECTION.get(preferredDirection), true)
.setValue(PROPERTY_BY_DIRECTION.get(preferredDirection.getOpposite()), true);
}
@Override
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource r) {
super.tick(state,world,pos,r);
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
if (tryRemoveBracket(context))
return InteractionResult.SUCCESS;
Level world = context.getLevel();
BlockPos pos = context.getClickedPos();
Direction clickedFace = context.getClickedFace();
Direction.Axis axis = getAxis(world, pos, state);
if (axis == null) {
Vec3 clickLocation = context.getClickLocation()
.subtract(pos.getX(), pos.getY(), pos.getZ());
double closest = Float.MAX_VALUE;
Direction argClosest = Direction.UP;
for (Direction direction : Iterate.directions) {
if (clickedFace.getAxis() == direction.getAxis())
continue;
Vec3 centerOf = Vec3.atCenterOf(direction.getNormal());
double distance = centerOf.distanceToSqr(clickLocation);
if (distance < closest) {
closest = distance;
argClosest = direction;
}
}
axis = argClosest.getAxis();
}
if (clickedFace.getAxis() == axis)
return InteractionResult.PASS;
if (!world.isClientSide) {
withBlockEntityDo(world, pos, fpte -> fpte.getBehaviour(FluidTransportBehaviour.TYPE).interfaces.values()
.stream()
.filter(pc -> pc != null && pc.hasFlow())
.findAny()
.ifPresent($ -> AllAdvancements.GLASS_PIPE.awardTo(context.getPlayer())));
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos, TFMGBlocks.GLASS_CAST_IRON_PIPE.getDefaultState()
.setValue(GlassFluidPipeBlock.AXIS, axis)
.setValue(BlockStateProperties.WATERLOGGED, state.getValue(BlockStateProperties.WATERLOGGED)));
FluidTransportBehaviour.loadFlows(world, pos);
}
return InteractionResult.SUCCESS;
}
@Nullable
private Direction.Axis getAxis(BlockGetter world, BlockPos pos, BlockState state) {
return FluidPropagator.getStraightPipeAxis(state);
}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos,
Player player) {
return TFMGBlocks.CAST_IRON_PIPE.asStack();
}
@Override
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
BlockHitResult hit) {
if (!AllBlocks.COPPER_CASING.isIn(player.getItemInHand(hand)))
return InteractionResult.PASS;
if (world.isClientSide)
return InteractionResult.SUCCESS;
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos,
EncasedPipeBlock.transferSixWayProperties(state, TFMGBlocks.COPPER_ENCASED_CAST_IRON_PIPE.getDefaultState()));
FluidTransportBehaviour.loadFlows(world, pos);
return InteractionResult.SUCCESS;
}
// @Override
// protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
// super.createBlockStateDefinition(builder);
// builder.add(LOCKEDDDD);
// }
@Override
public Class<FluidPipeBlockEntity> getBlockEntityClass() {
return FluidPipeBlockEntity.class;
}
@Override
public BlockEntityType<? extends FluidPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.TFMG_PIPE.get();
}
}

View File

@@ -0,0 +1,70 @@
package com.drmangotea.tfmg.blocks.pipes.normal.cast_iron;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.EncasedPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlockEntity;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.HitResult;
import java.util.function.Supplier;
public class EncasedCastIronPipeBlock extends EncasedPipeBlock {
public EncasedCastIronPipeBlock(Properties p_i48339_1_, Supplier<Block> casing) {
super(p_i48339_1_, casing);
}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos, Player player) {
return TFMGBlocks.CAST_IRON_PIPE.asStack();
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
Level world = context.getLevel();
BlockPos pos = context.getClickedPos();
if (world.isClientSide)
return InteractionResult.SUCCESS;
context.getLevel()
.levelEvent(2001, context.getClickedPos(), Block.getId(state));
BlockState equivalentPipe = transferSixWayProperties(state, TFMGBlocks.CAST_IRON_PIPE.getDefaultState());
Direction firstFound = Direction.UP;
for (Direction d : Iterate.directions)
if (state.getValue(FACING_TO_PROPERTY_MAP.get(d))) {
firstFound = d;
break;
}
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos, TFMGBlocks.CAST_IRON_PIPE.get()
.updateBlockState(equivalentPipe, firstFound, null, world, pos));
FluidTransportBehaviour.loadFlows(world, pos);
return InteractionResult.SUCCESS;
}
@Override
public Class<FluidPipeBlockEntity> getBlockEntityClass() {
return FluidPipeBlockEntity.class;
}
@Override
public BlockEntityType<? extends FluidPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.ENCASED_TFMG_PIPE.get();
}
}

View File

@@ -0,0 +1,80 @@
package com.drmangotea.tfmg.blocks.pipes.normal.cast_iron;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.EncasedPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.content.fluids.pipes.GlassFluidPipeBlock;
import com.simibubi.create.content.fluids.pipes.StraightPipeBlockEntity;
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import java.util.Map;
public class GlassCastIronPipeBlock extends GlassFluidPipeBlock {
public GlassCastIronPipeBlock(Properties p_i48339_1_) {
super(p_i48339_1_);
}
@Override
public ItemRequirement getRequiredItems(BlockState state, BlockEntity te) {
return ItemRequirement.of(TFMGBlocks.CAST_IRON_PIPE.getDefaultState(), te);
}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos,
Player player) {
return TFMGBlocks.CAST_IRON_PIPE.asStack();
}
@Override
public BlockState toRegularPipe(LevelAccessor world, BlockPos pos, BlockState state) {
Direction side = Direction.get(Direction.AxisDirection.POSITIVE, state.getValue(AXIS));
Map<Direction, BooleanProperty> facingToPropertyMap = FluidPipeBlock.PROPERTY_BY_DIRECTION;
return TFMGBlocks.CAST_IRON_PIPE.get()
.updateBlockState(TFMGBlocks.CAST_IRON_PIPE.getDefaultState()
.setValue(facingToPropertyMap.get(side), true)
.setValue(facingToPropertyMap.get(side.getOpposite()), true), side, null, world, pos);
}
@Override
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
BlockHitResult hit) {
if (!AllBlocks.COPPER_CASING.isIn(player.getItemInHand(hand)))
return InteractionResult.PASS;
if (world.isClientSide)
return InteractionResult.SUCCESS;
BlockState newState = TFMGBlocks.COPPER_ENCASED_CAST_IRON_PIPE.getDefaultState();
for (Direction d : Iterate.directionsInAxis(getAxis(state)))
newState = newState.setValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(d), true);
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos, newState);
FluidTransportBehaviour.loadFlows(world, pos);
return InteractionResult.SUCCESS;
}
@Override
public Class<StraightPipeBlockEntity> getBlockEntityClass() {
return StraightPipeBlockEntity.class;
}
@Override
public BlockEntityType<? extends StraightPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.GLASS_TFMG_PIPE.get();
}
}

View File

@@ -0,0 +1,70 @@
package com.drmangotea.tfmg.blocks.pipes.normal.plastic;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.EncasedPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlockEntity;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.HitResult;
import java.util.function.Supplier;
public class EncasedPlasticPipeBlock extends EncasedPipeBlock {
public EncasedPlasticPipeBlock(Properties p_i48339_1_, Supplier<Block> casing) {
super(p_i48339_1_, casing);
}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos, Player player) {
return TFMGBlocks.PLASTIC_PIPE.asStack();
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
Level world = context.getLevel();
BlockPos pos = context.getClickedPos();
if (world.isClientSide)
return InteractionResult.SUCCESS;
context.getLevel()
.levelEvent(2001, context.getClickedPos(), Block.getId(state));
BlockState equivalentPipe = transferSixWayProperties(state, TFMGBlocks.PLASTIC_PIPE.getDefaultState());
Direction firstFound = Direction.UP;
for (Direction d : Iterate.directions)
if (state.getValue(FACING_TO_PROPERTY_MAP.get(d))) {
firstFound = d;
break;
}
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos, TFMGBlocks.PLASTIC_PIPE.get()
.updateBlockState(equivalentPipe, firstFound, null, world, pos));
FluidTransportBehaviour.loadFlows(world, pos);
return InteractionResult.SUCCESS;
}
@Override
public Class<FluidPipeBlockEntity> getBlockEntityClass() {
return FluidPipeBlockEntity.class;
}
@Override
public BlockEntityType<? extends FluidPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.ENCASED_LOCKABLE_PIPE.get();
}
}

View File

@@ -0,0 +1,80 @@
package com.drmangotea.tfmg.blocks.pipes.normal.plastic;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.EncasedPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.content.fluids.pipes.GlassFluidPipeBlock;
import com.simibubi.create.content.fluids.pipes.StraightPipeBlockEntity;
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import java.util.Map;
public class GlassPlasticPipeBlock extends GlassFluidPipeBlock {
public GlassPlasticPipeBlock(Properties p_i48339_1_) {
super(p_i48339_1_);
}
@Override
public ItemRequirement getRequiredItems(BlockState state, BlockEntity te) {
return ItemRequirement.of(TFMGBlocks.PLASTIC_PIPE.getDefaultState(), te);
}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos,
Player player) {
return TFMGBlocks.PLASTIC_PIPE.asStack();
}
@Override
public BlockState toRegularPipe(LevelAccessor world, BlockPos pos, BlockState state) {
Direction side = Direction.get(Direction.AxisDirection.POSITIVE, state.getValue(AXIS));
Map<Direction, BooleanProperty> facingToPropertyMap = FluidPipeBlock.PROPERTY_BY_DIRECTION;
return TFMGBlocks.PLASTIC_PIPE.get()
.updateBlockState(TFMGBlocks.PLASTIC_PIPE.getDefaultState()
.setValue(facingToPropertyMap.get(side), true)
.setValue(facingToPropertyMap.get(side.getOpposite()), true), side, null, world, pos);
}
@Override
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
BlockHitResult hit) {
if (!AllBlocks.COPPER_CASING.isIn(player.getItemInHand(hand)))
return InteractionResult.PASS;
if (world.isClientSide)
return InteractionResult.SUCCESS;
BlockState newState = TFMGBlocks.COPPER_ENCASED_PLASTIC_PIPE.getDefaultState();
for (Direction d : Iterate.directionsInAxis(getAxis(state)))
newState = newState.setValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(d), true);
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos, newState);
FluidTransportBehaviour.loadFlows(world, pos);
return InteractionResult.SUCCESS;
}
@Override
public Class<StraightPipeBlockEntity> getBlockEntityClass() {
return StraightPipeBlockEntity.class;
}
@Override
public BlockEntityType<? extends StraightPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.GLASS_TFMG_PIPE.get();
}
}

View File

@@ -0,0 +1,134 @@
package com.drmangotea.tfmg.blocks.pipes.normal.plastic;
import com.drmangotea.tfmg.registry.TFMGPartialModels;
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.ItemBlockRenderTypes;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.ChunkRenderTypeSet;
import net.minecraftforge.client.model.data.ModelData;
import net.minecraftforge.client.model.data.ModelProperty;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class PlasticPipeAttachmentModel extends BakedModelWrapperWithData {
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
public PlasticPipeAttachmentModel(BakedModel template) {
super(template);
}
@Override
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
ModelData blockEntityData) {
PipeModelData data = new PipeModelData();
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
if (transport != null)
for (Direction d : Iterate.directions)
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
if (bracket != null)
data.putBracket(bracket.getBracket());
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
return builder.with(PIPE_PROPERTY, data);
}
@SuppressWarnings("removal")
@Override
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
if (set.isEmpty()) {
return ItemBlockRenderTypes.getRenderLayers(state);
}
return set;
}
@Override
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
if (data.has(PIPE_PROPERTY)) {
PipeModelData pipeData = data.get(PIPE_PROPERTY);
quads = new ArrayList<>(quads);
addQuads(quads, state, side, rand, data, pipeData, renderType);
}
return quads;
}
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
PipeModelData pipeData, RenderType renderType) {
BakedModel bracket = pipeData.getBracket();
if (bracket != null)
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
for (Direction d : Iterate.directions) {
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
quads.addAll(TFMGPartialModels.PLASTIC_PIPE_ATTACHMENTS.get(partial)
.get(d)
.get()
.getQuads(state, side, rand, data, renderType));
}
}
if (pipeData.isEncased())
quads.addAll(TFMGPartialModels.PLASTIC_FLUID_PIPE_CASING.get()
.getQuads(state, side, rand, data, renderType));
}
private static class PipeModelData {
private FluidTransportBehaviour.AttachmentTypes[] attachments;
private boolean encased;
private BakedModel bracket;
public PipeModelData() {
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
}
public void putBracket(BlockState state) {
if (state != null) {
this.bracket = Minecraft.getInstance()
.getBlockRenderer()
.getBlockModel(state);
}
}
public BakedModel getBracket() {
return bracket;
}
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
attachments[face.get3DDataValue()] = rim;
}
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
return attachments[face.get3DDataValue()];
}
public void setEncased(boolean encased) {
this.encased = encased;
}
public boolean isEncased() {
return encased;
}
}
}

View File

@@ -0,0 +1,201 @@
package com.drmangotea.tfmg.blocks.pipes.normal.plastic;
import com.drmangotea.tfmg.blocks.pipes.normal.LockablePipeBlockEntity;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
import com.simibubi.create.content.fluids.FluidPropagator;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.pipes.EncasedPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlockEntity;
import com.simibubi.create.content.fluids.pipes.GlassFluidPipeBlock;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import net.minecraft.world.phys.Vec3;
import javax.annotation.Nullable;
import java.util.Arrays;
public class PlasticPipeBlock extends FluidPipeBlock {
// public static final BooleanProperty LOCKEDDDD = BlockStateProperties.LOCKED;
public PlasticPipeBlock(Properties properties) {
super(properties);
// this.registerDefaultState(super.defaultBlockState().setValue(LOCKEDDDD, false));
}
public BlockState updateBlockState(BlockState state, Direction preferredDirection, @Nullable Direction ignore,
BlockAndTintGetter world, BlockPos pos) {
if(world.getBlockEntity(pos) instanceof LockablePipeBlockEntity)
if(((LockablePipeBlockEntity)world.getBlockEntity(pos)).locked){
return state;
}
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
if (bracket != null && bracket.isBracketPresent())
return state;
BlockState prevState = state;
int prevStateSides = (int) Arrays.stream(Iterate.directions)
.map(PROPERTY_BY_DIRECTION::get)
.filter(prevState::getValue)
.count();
// Update sides that are not ignored
for (Direction d : Iterate.directions)
if (d != ignore) {
boolean shouldConnect = canConnectTo(world, pos.relative(d), world.getBlockState(pos.relative(d)), d);
if(world.getBlockEntity(pos.relative(d)) instanceof LockablePipeBlockEntity) {
if (((LockablePipeBlockEntity) world.getBlockEntity(pos.relative(d))).locked) {
shouldConnect = false;
if(world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()))){
shouldConnect =true;
}
}
}
state = state.setValue(PROPERTY_BY_DIRECTION.get(d), shouldConnect);
}
// See if it has enough connections
Direction connectedDirection = null;
for (Direction d : Iterate.directions) {
if (isOpenAt(state, d)) {
if (connectedDirection != null)
return state;
connectedDirection = d;
}
}
// Add opposite end if only one connection
if (connectedDirection != null)
return state.setValue(PROPERTY_BY_DIRECTION.get(connectedDirection.getOpposite()), true);
// If we can't connect to anything and weren't connected before, do nothing
if (prevStateSides == 2)
return prevState;
// Use preferred
return state.setValue(PROPERTY_BY_DIRECTION.get(preferredDirection), true)
.setValue(PROPERTY_BY_DIRECTION.get(preferredDirection.getOpposite()), true);
}
@Override
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource r) {
super.tick(state,world,pos,r);
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
if (tryRemoveBracket(context))
return InteractionResult.SUCCESS;
Level world = context.getLevel();
BlockPos pos = context.getClickedPos();
Direction clickedFace = context.getClickedFace();
Direction.Axis axis = getAxis(world, pos, state);
if (axis == null) {
Vec3 clickLocation = context.getClickLocation()
.subtract(pos.getX(), pos.getY(), pos.getZ());
double closest = Float.MAX_VALUE;
Direction argClosest = Direction.UP;
for (Direction direction : Iterate.directions) {
if (clickedFace.getAxis() == direction.getAxis())
continue;
Vec3 centerOf = Vec3.atCenterOf(direction.getNormal());
double distance = centerOf.distanceToSqr(clickLocation);
if (distance < closest) {
closest = distance;
argClosest = direction;
}
}
axis = argClosest.getAxis();
}
if (clickedFace.getAxis() == axis)
return InteractionResult.PASS;
if (!world.isClientSide) {
withBlockEntityDo(world, pos, fpte -> fpte.getBehaviour(FluidTransportBehaviour.TYPE).interfaces.values()
.stream()
.filter(pc -> pc != null && pc.hasFlow())
.findAny()
.ifPresent($ -> AllAdvancements.GLASS_PIPE.awardTo(context.getPlayer())));
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos, TFMGBlocks.GLASS_PLASTIC_PIPE.getDefaultState()
.setValue(GlassFluidPipeBlock.AXIS, axis)
.setValue(BlockStateProperties.WATERLOGGED, state.getValue(BlockStateProperties.WATERLOGGED)));
FluidTransportBehaviour.loadFlows(world, pos);
}
return InteractionResult.SUCCESS;
}
@Nullable
private Direction.Axis getAxis(BlockGetter world, BlockPos pos, BlockState state) {
return FluidPropagator.getStraightPipeAxis(state);
}
@Override
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos,
Player player) {
return TFMGBlocks.PLASTIC_PIPE.asStack();
}
@Override
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
BlockHitResult hit) {
if (!AllBlocks.COPPER_CASING.isIn(player.getItemInHand(hand)))
return InteractionResult.PASS;
if (world.isClientSide)
return InteractionResult.SUCCESS;
FluidTransportBehaviour.cacheFlows(world, pos);
world.setBlockAndUpdate(pos,
EncasedPipeBlock.transferSixWayProperties(state, TFMGBlocks.COPPER_ENCASED_PLASTIC_PIPE.getDefaultState()));
FluidTransportBehaviour.loadFlows(world, pos);
return InteractionResult.SUCCESS;
}
// @Override
// protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
// super.createBlockStateDefinition(builder);
// builder.add(LOCKEDDDD);
// }
@Override
public Class<FluidPipeBlockEntity> getBlockEntityClass() {
return FluidPipeBlockEntity.class;
}
@Override
public BlockEntityType<? extends FluidPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.LOCKABLE_PIPE.get();
}
}

View File

@@ -65,6 +65,6 @@ public class EncasedSteelPipeBlock extends EncasedPipeBlock {
@Override
public BlockEntityType<? extends FluidPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.ENCASED_STEEL_PIPE.get();
return TFMGBlockEntities.ENCASED_LOCKABLE_PIPE.get();
}
}

View File

@@ -75,6 +75,6 @@ public class GlassSteelPipeBlock extends GlassFluidPipeBlock {
@Override
public BlockEntityType<? extends StraightPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.GLASS_STEEL_PIPE.get();
return TFMGBlockEntities.GLASS_TFMG_PIPE.get();
}
}

View File

@@ -195,7 +195,7 @@ public class SteelPipeBlock extends FluidPipeBlock {
@Override
public BlockEntityType<? extends FluidPipeBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.STEEL_PIPE.get();
return TFMGBlockEntities.LOCKABLE_PIPE.get();
}
}

View File

@@ -33,7 +33,11 @@ public class ScrewdriverItem extends Item {
if(level.getBlockState(positionClicked).is(TFMGBlocks.STEEL_PIPE.get())) {
if(
level.getBlockState(positionClicked).is(TFMGBlocks.STEEL_PIPE.get())||
level.getBlockState(positionClicked).is(TFMGBlocks.ALUMINUM_PIPE.get())||
level.getBlockState(positionClicked).is(TFMGBlocks.PLASTIC_PIPE.get())
) {
level.playSound(player, positionClicked, SoundEvents.ANVIL_PLACE, SoundSource.BLOCKS, 0.3f,0.5f);
((LockablePipeBlockEntity)level.getBlockEntity(positionClicked)).toggleLock(player);

View File

@@ -4,6 +4,9 @@ import com.drmangotea.tfmg.blocks.concrete.formwork.FormWorkBlockEntity;
import com.drmangotea.tfmg.blocks.concrete.formwork.FormWorkRenderer;
import com.drmangotea.tfmg.blocks.decoration.doors.TFMGSlidingDoorBlockEntity;
import com.drmangotea.tfmg.blocks.decoration.doors.TFMGSlidingDoorRenderer;
import com.drmangotea.tfmg.blocks.decoration.flywheels.TFMGFlywheelBlockEntity;
import com.drmangotea.tfmg.blocks.decoration.flywheels.TFMGFlywheelInstance;
import com.drmangotea.tfmg.blocks.decoration.flywheels.TFMGFlywheelRenderer;
import com.drmangotea.tfmg.blocks.deposits.FluidDepositBlockEntity;
import com.drmangotea.tfmg.blocks.deposits.surface_scanner.SurfaceScannerBlockEntity;
import com.drmangotea.tfmg.blocks.deposits.surface_scanner.SurfaceScannerRenderer;
@@ -35,7 +38,6 @@ import com.drmangotea.tfmg.blocks.machines.oil_processing.distillation.distiller
import com.drmangotea.tfmg.blocks.machines.oil_processing.distillation.distillery.DistilleryOutputBlockEntity;
import com.drmangotea.tfmg.blocks.machines.oil_processing.pumpjack.base.PumpjackBaseRenderer;
import com.drmangotea.tfmg.blocks.machines.oil_processing.pumpjack.base.PumpjackBaseBlockEntity;
import com.drmangotea.tfmg.blocks.machines.oil_processing.pumpjack.crank.PumpjackCrankInstance;
import com.drmangotea.tfmg.blocks.machines.oil_processing.pumpjack.crank.PumpjackCrankRenderer;
import com.drmangotea.tfmg.blocks.machines.oil_processing.pumpjack.crank.PumpjackCrankBlockEntity;
import com.drmangotea.tfmg.blocks.machines.oil_processing.pumpjack.hammer_holder.PumpjackHammerHolderInstance;
@@ -47,6 +49,8 @@ import com.drmangotea.tfmg.blocks.pipes.normal.LockablePipeBlockEntity;
import com.drmangotea.tfmg.blocks.tanks.SteelFluidTankRenderer;
import com.drmangotea.tfmg.blocks.tanks.SteelTankBlockEntity;
import com.drmangotea.tfmg.blocks.engines.small.UniversalEngineRenderer;
import com.simibubi.create.Create;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlockEntity;
import com.simibubi.create.content.fluids.pipes.SmartFluidPipeBlockEntity;
import com.simibubi.create.content.fluids.pipes.StraightPipeBlockEntity;
import com.simibubi.create.content.fluids.pipes.TransparentStraightPipeRenderer;
@@ -79,23 +83,6 @@ public class TFMGBlockEntities {
.register();
public static final BlockEntityEntry<LockablePipeBlockEntity> STEEL_PIPE = REGISTRATE
.blockEntity("steel_pipe", LockablePipeBlockEntity::new)
.validBlocks(TFMGBlocks.STEEL_PIPE)
.register();
public static final BlockEntityEntry<LockablePipeBlockEntity> ENCASED_STEEL_PIPE = REGISTRATE
.blockEntity("encased_steel_pipe", LockablePipeBlockEntity::new)
.validBlocks(TFMGBlocks.COPPER_ENCASED_STEEL_PIPE)
.register();
public static final BlockEntityEntry<StraightPipeBlockEntity> GLASS_STEEL_PIPE = REGISTRATE
.blockEntity("glass_steel_pipe", StraightPipeBlockEntity::new)
.validBlocks(TFMGBlocks.GLASS_STEEL_PIPE)
.renderer(() -> TransparentStraightPipeRenderer::new)
.register();
public static final BlockEntityEntry<SteelTankBlockEntity> STEEL_FLUID_TANK = REGISTRATE
.blockEntity("steel_fluid_tank", SteelTankBlockEntity::new)
.validBlocks(TFMGBlocks.STEEL_FLUID_TANK)
@@ -110,25 +97,7 @@ public class TFMGBlockEntities {
.register();
public static final BlockEntityEntry<PumpBlockEntity> TFMG_MECHANICAL_PUMP = REGISTRATE
.blockEntity("mechanical_pump", PumpBlockEntity::new)
.instance(() -> PumpCogInstance::new)
.validBlocks(TFMGBlocks.STEEL_MECHANICAL_PUMP)
.renderer(() -> PumpRenderer::new)
.register();
public static final BlockEntityEntry<SmartFluidPipeBlockEntity> TFMG_SMART_FLUID_PIPE = REGISTRATE
.blockEntity("smart_fluid_pipe", SmartFluidPipeBlockEntity::new)
.validBlocks(TFMGBlocks.STEEL_SMART_FLUID_PIPE)
.renderer(() -> SmartBlockEntityRenderer::new)
.register();
public static final BlockEntityEntry<FluidValveBlockEntity> TFMG_FLUID_VALVE = REGISTRATE
.blockEntity("fluid_valve", FluidValveBlockEntity::new)
.instance(() -> FluidValveInstance::new)
.validBlocks(TFMGBlocks.STEEL_FLUID_VALVE)
.renderer(() -> FluidValveRenderer::new)
.register();
public static final BlockEntityEntry<SurfaceScannerBlockEntity> SURFACE_SCANNER = REGISTRATE
.blockEntity("deposit_scanner", SurfaceScannerBlockEntity::new)
@@ -272,6 +241,92 @@ public class TFMGBlockEntities {
public static final BlockEntityEntry<LockablePipeBlockEntity> LOCKABLE_PIPE = REGISTRATE
.blockEntity("lockable_pipe", LockablePipeBlockEntity::new)
.validBlocks(TFMGBlocks.STEEL_PIPE,TFMGBlocks.ALUMINUM_PIPE,TFMGBlocks.PLASTIC_PIPE)
.register();
public static final BlockEntityEntry<FluidPipeBlockEntity> TFMG_PIPE = REGISTRATE
.blockEntity("tfmg_pipe", FluidPipeBlockEntity::new)
.validBlocks(TFMGBlocks.CAST_IRON_PIPE,TFMGBlocks.BRASS_PIPE)
.register();
public static final BlockEntityEntry<LockablePipeBlockEntity> ENCASED_LOCKABLE_PIPE = REGISTRATE
.blockEntity("encased_lockable_pipe", LockablePipeBlockEntity::new)
.validBlocks(TFMGBlocks.COPPER_ENCASED_STEEL_PIPE,
TFMGBlocks.COPPER_ENCASED_ALUMINUM_PIPE,
TFMGBlocks.COPPER_ENCASED_PLASTIC_PIPE
)
.register();
public static final BlockEntityEntry<FluidPipeBlockEntity> ENCASED_TFMG_PIPE = REGISTRATE
.blockEntity("encased_tfmg_pipe", FluidPipeBlockEntity::new)
.validBlocks(TFMGBlocks.COPPER_ENCASED_CAST_IRON_PIPE,TFMGBlocks.COPPER_ENCASED_BRASS_PIPE)
.register();
public static final BlockEntityEntry<PumpBlockEntity> TFMG_MECHANICAL_PUMP = REGISTRATE
.blockEntity("mechanical_pump", PumpBlockEntity::new)
.instance(() -> PumpCogInstance::new)
.validBlocks(
TFMGBlocks.STEEL_MECHANICAL_PUMP,
TFMGBlocks.CAST_IRON_MECHANICAL_PUMP,
TFMGBlocks.BRASS_MECHANICAL_PUMP,
TFMGBlocks.PLASTIC_MECHANICAL_PUMP,
TFMGBlocks.ALUMINUM_MECHANICAL_PUMP
)
.renderer(() -> PumpRenderer::new)
.register();
public static final BlockEntityEntry<SmartFluidPipeBlockEntity> TFMG_SMART_FLUID_PIPE = REGISTRATE
.blockEntity("smart_fluid_pipe", SmartFluidPipeBlockEntity::new)
.validBlocks(
TFMGBlocks.STEEL_SMART_FLUID_PIPE,
TFMGBlocks.CAST_IRON_SMART_FLUID_PIPE,
TFMGBlocks.BRASS_SMART_FLUID_PIPE,
TFMGBlocks.PLASTIC_SMART_FLUID_PIPE,
TFMGBlocks.ALUMINUM_SMART_FLUID_PIPE
)
.renderer(() -> SmartBlockEntityRenderer::new)
.register();
public static final BlockEntityEntry<FluidValveBlockEntity> TFMG_FLUID_VALVE = REGISTRATE
.blockEntity("fluid_valve", FluidValveBlockEntity::new)
.instance(() -> FluidValveInstance::new)
.validBlocks(
TFMGBlocks.STEEL_FLUID_VALVE,
TFMGBlocks.CAST_IRON_FLUID_VALVE,
TFMGBlocks.BRASS_FLUID_VALVE,
TFMGBlocks.PLASTIC_FLUID_VALVE,
TFMGBlocks.ALUMINUM_FLUID_VALVE
)
.renderer(() -> FluidValveRenderer::new)
.register();
public static final BlockEntityEntry<StraightPipeBlockEntity> GLASS_TFMG_PIPE = REGISTRATE
.blockEntity("glass_tfmg_pipe", StraightPipeBlockEntity::new)
.validBlocks(
TFMGBlocks.GLASS_STEEL_PIPE,
TFMGBlocks.GLASS_CAST_IRON_PIPE,
TFMGBlocks.GLASS_ALUMINUM_PIPE,
TFMGBlocks.GLASS_PLASTIC_PIPE,
TFMGBlocks.GLASS_BRASS_PIPE
)
.renderer(() -> TransparentStraightPipeRenderer::new)
.register();
public static final BlockEntityEntry<TFMGFlywheelBlockEntity> STEEL_FLYWHEEL = REGISTRATE
.blockEntity("steel_flywheel", TFMGFlywheelBlockEntity::new)
.instance(() -> TFMGFlywheelInstance::new, false)
.validBlocks(TFMGBlocks.STEEL_FLYWHEEL,TFMGBlocks.ALUMINUM_FLYWHEEL,TFMGBlocks.CAST_IRON_FLYWHEEL)
.renderer(() -> TFMGFlywheelRenderer::new)
.register();
public static void register() {}
}

View File

@@ -5,11 +5,14 @@ import com.drmangotea.tfmg.base.TFMGSpriteShifts;
import com.drmangotea.tfmg.base.TFMGVanillaBlockStates;
import com.drmangotea.tfmg.blocks.concrete.formwork.FormWorkBlock;
import com.drmangotea.tfmg.blocks.concrete.formwork.FormWorkGenerator;
import com.drmangotea.tfmg.blocks.decoration.TrussBlock;
import com.drmangotea.tfmg.blocks.decoration.doors.TFMGSlidingDoorBlock;
import com.drmangotea.tfmg.blocks.decoration.flywheels.TFMGFlywheelBlock;
import com.drmangotea.tfmg.blocks.deposits.FluidDepositBlock;
import com.drmangotea.tfmg.blocks.engines.diesel.DieselEngineBlock;
import com.drmangotea.tfmg.blocks.engines.intake.AirIntakeBlock;
import com.drmangotea.tfmg.blocks.engines.intake.AirIntakeGenerator;
import com.drmangotea.tfmg.blocks.engines.small.EngineGenerator;
import com.drmangotea.tfmg.blocks.engines.small.gasoline.GasolineEngineBackBlock;
import com.drmangotea.tfmg.blocks.engines.small.gasoline.GasolineEngineBlock;
import com.drmangotea.tfmg.blocks.engines.small.gasoline.GasolineEngineGenerator;
@@ -19,6 +22,23 @@ import com.drmangotea.tfmg.blocks.engines.small.turbine.TurbineEngineBackBlock;
import com.drmangotea.tfmg.blocks.engines.small.turbine.TurbineEngineBlock;
import com.drmangotea.tfmg.blocks.machines.exhaust.ExhaustBlock;
import com.drmangotea.tfmg.blocks.machines.flarestack.FlarestackBlock;
import com.drmangotea.tfmg.blocks.machines.flarestack.FlarestackGenerator;
import com.drmangotea.tfmg.blocks.pipes.normal.aluminum.AluminumPipeAttachmentModel;
import com.drmangotea.tfmg.blocks.pipes.normal.aluminum.AluminumPipeBlock;
import com.drmangotea.tfmg.blocks.pipes.normal.aluminum.EncasedAluminumPipeBlock;
import com.drmangotea.tfmg.blocks.pipes.normal.aluminum.GlassAluminumPipeBlock;
import com.drmangotea.tfmg.blocks.pipes.normal.brass.BrassPipeAttachmentModel;
import com.drmangotea.tfmg.blocks.pipes.normal.brass.BrassPipeBlock;
import com.drmangotea.tfmg.blocks.pipes.normal.brass.EncasedBrassPipeBlock;
import com.drmangotea.tfmg.blocks.pipes.normal.brass.GlassBrassPipeBlock;
import com.drmangotea.tfmg.blocks.pipes.normal.cast_iron.CastIronPipeAttachmentModel;
import com.drmangotea.tfmg.blocks.pipes.normal.cast_iron.CastIronPipeBlock;
import com.drmangotea.tfmg.blocks.pipes.normal.cast_iron.EncasedCastIronPipeBlock;
import com.drmangotea.tfmg.blocks.pipes.normal.cast_iron.GlassCastIronPipeBlock;
import com.drmangotea.tfmg.blocks.pipes.normal.plastic.EncasedPlasticPipeBlock;
import com.drmangotea.tfmg.blocks.pipes.normal.plastic.GlassPlasticPipeBlock;
import com.drmangotea.tfmg.blocks.pipes.normal.plastic.PlasticPipeAttachmentModel;
import com.drmangotea.tfmg.blocks.pipes.normal.plastic.PlasticPipeBlock;
import com.drmangotea.tfmg.items.gadgets.explosives.napalm.NapalmBombBlock;
import com.drmangotea.tfmg.blocks.machines.metal_processing.casting_basin.CastingBasinBlock;
import com.drmangotea.tfmg.blocks.machines.metal_processing.casting_spout.CastingSpoutBlock;
@@ -51,6 +71,7 @@ import com.drmangotea.tfmg.blocks.tanks.SteelTankItem;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllSpriteShifts;
import com.simibubi.create.AllTags;
import com.simibubi.create.content.decoration.MetalScaffoldingBlock;
import com.simibubi.create.content.decoration.encasing.CasingBlock;
import com.simibubi.create.content.decoration.encasing.EncasedCTBehaviour;
import com.simibubi.create.content.decoration.encasing.EncasingRegistry;
@@ -61,10 +82,12 @@ import com.simibubi.create.content.kinetics.BlockStressDefaults;
import com.simibubi.create.content.processing.AssemblyOperatorBlockItem;
import com.simibubi.create.foundation.data.*;
import com.simibubi.create.foundation.utility.Couple;
import com.tterrag.registrate.util.DataIngredient;
import com.tterrag.registrate.util.entry.BlockEntry;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.Direction;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.level.block.*;
import net.minecraft.world.level.block.state.BlockBehaviour;
@@ -134,11 +157,105 @@ public class TFMGBlocks {
.properties(p -> p.sound(SoundType.COPPER))
.register();
public static final BlockEntry<TrussBlock> STEEL_TRUSS = REGISTRATE.block("steel_truss", TrussBlock::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.properties(p -> p.noOcclusion())
.transform(pickaxeOnly())
.addLayer(() -> RenderType::cutoutMipped)
.blockstate(BlockStateGen.axisBlockProvider(false))
.item()
.build()
.lang("Steel Truss")
.register();
public static final BlockEntry<TrussBlock> ALUMINUM_TRUSS = REGISTRATE.block("aluminum_truss", TrussBlock::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.properties(p -> p.noOcclusion())
.addLayer(() -> RenderType::cutoutMipped)
.transform(pickaxeOnly())
.blockstate(BlockStateGen.axisBlockProvider(false))
.item()
.build()
.lang("Aluminum Truss")
.register();
public static final BlockEntry<Block> CAUTION_BLOCK = REGISTRATE.block("caution_block", Block::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.COLOR_YELLOW))
.transform(pickaxeOnly())
.item()
.build()
.lang("Caution Block")
.register();
public static final BlockEntry<Block> RED_CAUTION_BLOCK = REGISTRATE.block("red_caution_block", Block::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.COLOR_RED))
.transform(pickaxeOnly())
.item()
.build()
.lang("Red Caution Block")
.register();
public static final BlockEntry<MetalScaffoldingBlock> STEEL_SCAFFOLD =
REGISTRATE.block("steel_scaffolding", MetalScaffoldingBlock::new)
.properties(p -> p
.strength(4.0F)
.requiresCorrectToolForDrops())
.transform(BuilderTransformers.scaffold("steel",
() -> DataIngredient.tag(AllTags.forgeItemTag("ingots/steel")), MaterialColor.TERRACOTTA_CYAN,
TFMGSpriteShifts.STEEL_SCAFFOLD, TFMGSpriteShifts.STEEL_SCAFFOLD_INSIDE, TFMGSpriteShifts.STEEL_CASING))
.register();
public static final BlockEntry<MetalScaffoldingBlock> ALUMINUM_SCAFFOLD =
REGISTRATE.block("aluminum_scaffolding", MetalScaffoldingBlock::new)
.properties(p -> p
.strength(3.0F)
.requiresCorrectToolForDrops())
.transform(BuilderTransformers.scaffold("aluminum",
() -> DataIngredient.tag(AllTags.forgeItemTag("ingots/steel")), MaterialColor.TERRACOTTA_CYAN,
TFMGSpriteShifts.ALUMINUM_SCAFFOLD, TFMGSpriteShifts.ALUMINUM_SCAFFOLD_INSIDE, TFMGSpriteShifts.ALUMINUM_SCAFFOLD_TOP))
.register();
public static final BlockEntry<TFMGFlywheelBlock> STEEL_FLYWHEEL = REGISTRATE.block("steel_flywheel", TFMGFlywheelBlock::new)
.initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_CYAN))
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe())
.transform(BlockStressDefaults.setNoImpact())
.blockstate(BlockStateGen.axisBlockProvider(true))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGFlywheelBlock> ALUMINUM_FLYWHEEL = REGISTRATE.block("aluminum_flywheel", TFMGFlywheelBlock::new)
.initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_WHITE))
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe())
.transform(BlockStressDefaults.setNoImpact())
.blockstate(BlockStateGen.axisBlockProvider(true))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGFlywheelBlock> CAST_IRON_FLYWHEEL = REGISTRATE.block("cast_iron_flywheel", TFMGFlywheelBlock::new)
.initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BLACK))
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe())
.transform(BlockStressDefaults.setNoImpact())
.blockstate(BlockStateGen.axisBlockProvider(true))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<SlabBlock> FACTORY_FLOOR = withVariants("factory_floor",Blocks.STONE,
MaterialColor.COLOR_GRAY,"Factory Floor",BlockTags.NEEDS_STONE_TOOL,SoundType.NETHERITE_BLOCK,false);
//-----------------------MACHINES---------------------------//
public static final BlockEntry<FormWorkBlock> FORMWORK_BLOCK =
REGISTRATE.block("formwork_block", FormWorkBlock::new)
@@ -156,7 +273,8 @@ public class TFMGBlocks {
public static final BlockEntry<ExhaustBlock> EXHAUST =
REGISTRATE.block("exhaust", ExhaustBlock::new)
.initialProperties(SharedProperties::copperMetal)
.blockstate((c, p) -> p.horizontalFaceBlock(c.get(), AssetLookup.partialBaseModel(c, p)))
.addLayer(() -> RenderType::cutoutMipped)
.blockstate(BlockStateGen.directionalBlockProvider(false))
.item()
.transform(customItemModel())
.register();
@@ -165,9 +283,11 @@ public class TFMGBlocks {
public static final BlockEntry<FlarestackBlock> FLARESTACK =
REGISTRATE.block("flarestack", FlarestackBlock::new)
.initialProperties(SharedProperties::copperMetal)
.addLayer(() -> RenderType::cutoutMipped)
.properties(p -> p.color(MaterialColor.TERRACOTTA_CYAN)
.lightLevel(s -> s.getValue(FlarestackBlock.LIT) ? 15 : 0)
.noOcclusion())
.blockstate(new FlarestackGenerator()::generate)
.item()
.transform(customItemModel())
.register();
@@ -186,88 +306,11 @@ public class TFMGBlocks {
.register();
//fluid stuff
public static final BlockEntry<SteelPipeBlock> STEEL_PIPE = REGISTRATE.block("steel_pipe", SteelPipeBlock::new)
.initialProperties(Material.HEAVY_METAL)
.transform(pickaxeOnly())
.blockstate(BlockStateGen.pipe())
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<EncasedSteelPipeBlock> COPPER_ENCASED_STEEL_PIPE =
REGISTRATE.block("copper_encased_steel_pipe", p -> new EncasedSteelPipeBlock(p, AllBlocks.COPPER_CASING::get))
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY))
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe())
.blockstate(BlockStateGen.encasedPipe())
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
(s, f) -> !s.getValue(EncasedSteelPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, STEEL_PIPE.get()))
.transform(EncasingRegistry.addVariantTo(TFMGBlocks.STEEL_PIPE))
.register();
@SuppressWarnings("removal")
public static final BlockEntry<GlassSteelPipeBlock> GLASS_STEEL_PIPE =
REGISTRATE.block("glass_steel_pipe", GlassSteelPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.addLayer(() -> RenderType::cutoutMipped)
.transform(pickaxeOnly())
.blockstate((c, p) -> {
p.getVariantBuilder(c.getEntry())
.forAllStatesExcept(state -> {
Direction.Axis axis = state.getValue(BlockStateProperties.AXIS);
return ConfiguredModel.builder()
.modelFile(p.models()
.getExistingFile(p.modLoc("block/steel_pipe/window")))
.uvLock(false)
.rotationX(axis == Direction.Axis.Y ? 0 : 90)
.rotationY(axis == Direction.Axis.X ? 90 : 0)
.build();
}, BlockStateProperties.WATERLOGGED);
})
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, STEEL_PIPE.get()))
.register();
public static final BlockEntry<TFMGPumpBlock> STEEL_MECHANICAL_PUMP = REGISTRATE.block("steel_mechanical_pump", TFMGPumpBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
.transform(BlockStressDefaults.setImpact(4.0))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGSmartFluidPipeBlock> STEEL_SMART_FLUID_PIPE =
REGISTRATE.block("steel_smart_fluid_pipe", TFMGSmartFluidPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(new SmartFluidPipeGenerator()::generate)
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGFluidValveBlock> STEEL_FLUID_VALVE = REGISTRATE.block("steel_fluid_valve", TFMGFluidValveBlock::new)
.initialProperties(SharedProperties::copperMetal)
.transform(pickaxeOnly())
.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(() -> SteelPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
@SuppressWarnings("'addLayer(java.util.function.Supplier<java.util.function.Supplier<net.minecraft.client.renderer.RenderType>>)' is deprecated and marked for removal ")
public static final BlockEntry<SteelTankBlock> STEEL_FLUID_TANK = REGISTRATE.block("steel_fluid_tank", SteelTankBlock::regular)
@@ -516,22 +559,25 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
.lang("Block of Aluminum")
.register();
public static final BlockEntry<Block> LEAD_BLOCK = REGISTRATE.block("lead_block", Block::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY))
.properties(p -> p.requiresCorrectToolForDrops())
.onRegister(connectedTextures(() -> new EncasedCTBehaviour(TFMGSpriteShifts.CAST_IRON_BLOCK)))
.onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, TFMGSpriteShifts.CAST_IRON_BLOCK)))
.transform(pickaxeOnly())
.blockstate(simpleCubeAll("lead_block"))
.tag(BlockTags.NEEDS_IRON_TOOL)
.tag(Tags.Blocks.STORAGE_BLOCKS)
.tag(BlockTags.BEACON_BASE_BLOCKS)
.transform(tagBlockAndItem("storage_blocks/lead"))
.tag(Tags.Items.STORAGE_BLOCKS)
.build()
.lang("Block of Lead")
.register();
//public static final BlockEntry<Block> LEAD_BLOCK = REGISTRATE.block("lead_block", Block::new)
// .initialProperties(() -> Blocks.IRON_BLOCK)
// .properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY))
// .properties(p -> p.requiresCorrectToolForDrops())
// .onRegister(connectedTextures(() -> new EncasedCTBehaviour(TFMGSpriteShifts.CAST_IRON_BLOCK)))
// .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, TFMGSpriteShifts.CAST_IRON_BLOCK)))
// .transform(pickaxeOnly())
// .blockstate(simpleCubeAll("lead_block"))
// .tag(BlockTags.NEEDS_IRON_TOOL)
// .tag(Tags.Blocks.STORAGE_BLOCKS)
// .tag(BlockTags.BEACON_BASE_BLOCKS)
// .transform(tagBlockAndItem("storage_blocks/lead"))
// .tag(Tags.Items.STORAGE_BLOCKS)
// .build()
// .lang("Block of Lead")
// .register();
public static final BlockEntry<Block> COAL_COKE_BLOCK = REGISTRATE.block("coal_coke_block", Block::new)
@@ -587,7 +633,7 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
.tag(AllTags.AllBlockTags.SAFE_NBT.tag)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly())
.blockstate(new GasolineEngineGenerator()::generate)
.blockstate(new EngineGenerator()::generate)
.transform(BlockStressDefaults.setCapacity(60.0))
.transform(BlockStressDefaults.setGeneratorSpeed(() -> Couple.create(0, 256)))
.item()
@@ -602,7 +648,7 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
.tag(AllTags.AllBlockTags.SAFE_NBT.tag)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly())
.blockstate(new GasolineEngineGenerator()::generate)
.blockstate(new EngineGenerator()::generate)
.transform(BlockStressDefaults.setCapacity(60.0))
.transform(BlockStressDefaults.setGeneratorSpeed(() -> Couple.create(0, 256)))
.item()
@@ -618,7 +664,7 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
.tag(AllTags.AllBlockTags.SAFE_NBT.tag)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly())
.blockstate(new GasolineEngineGenerator()::generate)
.blockstate(new EngineGenerator()::generate)
.transform(BlockStressDefaults.setCapacity(60.0))
.transform(BlockStressDefaults.setGeneratorSpeed(() -> Couple.create(0, 256)))
.item()
@@ -633,7 +679,7 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
.tag(AllTags.AllBlockTags.SAFE_NBT.tag)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly())
.blockstate(new GasolineEngineGenerator()::generate)
.blockstate(new EngineGenerator()::generate)
.transform(BlockStressDefaults.setCapacity(60.0))
.transform(BlockStressDefaults.setGeneratorSpeed(() -> Couple.create(0, 256)))
.item()
@@ -648,7 +694,7 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
.tag(AllTags.AllBlockTags.SAFE_NBT.tag)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly())
.blockstate(new GasolineEngineGenerator()::generate)
.blockstate(new EngineGenerator()::generate)
.transform(BlockStressDefaults.setCapacity(60.0))
.transform(BlockStressDefaults.setGeneratorSpeed(() -> Couple.create(0, 256)))
.item()
@@ -663,7 +709,7 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
.tag(AllTags.AllBlockTags.SAFE_NBT.tag)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly())
.blockstate(new GasolineEngineGenerator()::generate)
.blockstate(new EngineGenerator()::generate)
.transform(BlockStressDefaults.setCapacity(60.0))
.transform(BlockStressDefaults.setGeneratorSpeed(() -> Couple.create(0, 256)))
.item()
@@ -684,6 +730,422 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
.transform(customItemModel())
.register();
//----------------------PIPES-------------------------------//
//STEEL
public static final BlockEntry<SteelPipeBlock> STEEL_PIPE = REGISTRATE.block("steel_pipe", SteelPipeBlock::new)
.initialProperties(Material.HEAVY_METAL)
.transform(pickaxeOnly())
.blockstate(BlockStateGen.pipe())
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<EncasedSteelPipeBlock> COPPER_ENCASED_STEEL_PIPE =
REGISTRATE.block("copper_encased_steel_pipe", p -> new EncasedSteelPipeBlock(p, AllBlocks.COPPER_CASING::get))
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY))
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe())
.blockstate(BlockStateGen.encasedPipe())
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
(s, f) -> !s.getValue(EncasedSteelPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, STEEL_PIPE.get()))
.transform(EncasingRegistry.addVariantTo(TFMGBlocks.STEEL_PIPE))
.register();
@SuppressWarnings("removal")
public static final BlockEntry<GlassSteelPipeBlock> GLASS_STEEL_PIPE =
REGISTRATE.block("glass_steel_pipe", GlassSteelPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.addLayer(() -> RenderType::cutoutMipped)
.transform(pickaxeOnly())
.blockstate((c, p) -> {
p.getVariantBuilder(c.getEntry())
.forAllStatesExcept(state -> {
Direction.Axis axis = state.getValue(BlockStateProperties.AXIS);
return ConfiguredModel.builder()
.modelFile(p.models()
.getExistingFile(p.modLoc("block/steel_pipe/window")))
.uvLock(false)
.rotationX(axis == Direction.Axis.Y ? 0 : 90)
.rotationY(axis == Direction.Axis.X ? 90 : 0)
.build();
}, BlockStateProperties.WATERLOGGED);
})
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, STEEL_PIPE.get()))
.register();
public static final BlockEntry<TFMGPumpBlock> STEEL_MECHANICAL_PUMP = REGISTRATE.block("steel_mechanical_pump", TFMGPumpBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
.transform(BlockStressDefaults.setImpact(4.0))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGSmartFluidPipeBlock> STEEL_SMART_FLUID_PIPE =
REGISTRATE.block("steel_smart_fluid_pipe", TFMGSmartFluidPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(new SmartFluidPipeGenerator()::generate)
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGFluidValveBlock> STEEL_FLUID_VALVE = REGISTRATE.block("steel_fluid_valve", TFMGFluidValveBlock::new)
.initialProperties(SharedProperties::copperMetal)
.transform(pickaxeOnly())
.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(() -> SteelPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
//CAST_IRON
public static final BlockEntry<CastIronPipeBlock> CAST_IRON_PIPE = REGISTRATE.block("cast_iron_pipe", CastIronPipeBlock::new)
.initialProperties(Material.HEAVY_METAL)
.transform(pickaxeOnly())
.blockstate(BlockStateGen.pipe())
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<EncasedCastIronPipeBlock> COPPER_ENCASED_CAST_IRON_PIPE =
REGISTRATE.block("copper_encased_cast_iron_pipe", p -> new EncasedCastIronPipeBlock(p, AllBlocks.COPPER_CASING::get))
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY))
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe())
.blockstate(BlockStateGen.encasedPipe())
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
(s, f) -> !s.getValue(EncasedCastIronPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, CAST_IRON_PIPE.get()))
.transform(EncasingRegistry.addVariantTo(TFMGBlocks.CAST_IRON_PIPE))
.register();
@SuppressWarnings("removal")
public static final BlockEntry<GlassCastIronPipeBlock> GLASS_CAST_IRON_PIPE =
REGISTRATE.block("glass_cast_iron_pipe", GlassCastIronPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.addLayer(() -> RenderType::cutoutMipped)
.transform(pickaxeOnly())
.blockstate((c, p) -> {
p.getVariantBuilder(c.getEntry())
.forAllStatesExcept(state -> {
Direction.Axis axis = state.getValue(BlockStateProperties.AXIS);
return ConfiguredModel.builder()
.modelFile(p.models()
.getExistingFile(p.modLoc("block/cast_iron_pipe/window")))
.uvLock(false)
.rotationX(axis == Direction.Axis.Y ? 0 : 90)
.rotationY(axis == Direction.Axis.X ? 90 : 0)
.build();
}, BlockStateProperties.WATERLOGGED);
})
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, CAST_IRON_PIPE.get()))
.register();
public static final BlockEntry<TFMGPumpBlock> CAST_IRON_MECHANICAL_PUMP = REGISTRATE.block("cast_iron_mechanical_pump", TFMGPumpBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
.transform(BlockStressDefaults.setImpact(4.0))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGSmartFluidPipeBlock> CAST_IRON_SMART_FLUID_PIPE =
REGISTRATE.block("cast_iron_smart_fluid_pipe", TFMGSmartFluidPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(new SmartFluidPipeGenerator()::generate)
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGFluidValveBlock> CAST_IRON_FLUID_VALVE = REGISTRATE.block("cast_iron_fluid_valve", TFMGFluidValveBlock::new)
.initialProperties(SharedProperties::copperMetal)
.transform(pickaxeOnly())
.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(() -> CastIronPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
//BRASS
public static final BlockEntry<BrassPipeBlock> BRASS_PIPE = REGISTRATE.block("brass_pipe", BrassPipeBlock::new)
.initialProperties(Material.HEAVY_METAL)
.transform(pickaxeOnly())
.blockstate(BlockStateGen.pipe())
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<EncasedBrassPipeBlock> COPPER_ENCASED_BRASS_PIPE =
REGISTRATE.block("copper_encased_brass_pipe", p -> new EncasedBrassPipeBlock(p, AllBlocks.COPPER_CASING::get))
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY))
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe())
.blockstate(BlockStateGen.encasedPipe())
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
(s, f) -> !s.getValue(EncasedBrassPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, BRASS_PIPE.get()))
.transform(EncasingRegistry.addVariantTo(TFMGBlocks.BRASS_PIPE))
.register();
@SuppressWarnings("removal")
public static final BlockEntry<GlassBrassPipeBlock> GLASS_BRASS_PIPE =
REGISTRATE.block("glass_brass_pipe", GlassBrassPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.addLayer(() -> RenderType::cutoutMipped)
.transform(pickaxeOnly())
.blockstate((c, p) -> {
p.getVariantBuilder(c.getEntry())
.forAllStatesExcept(state -> {
Direction.Axis axis = state.getValue(BlockStateProperties.AXIS);
return ConfiguredModel.builder()
.modelFile(p.models()
.getExistingFile(p.modLoc("block/brass_pipe/window")))
.uvLock(false)
.rotationX(axis == Direction.Axis.Y ? 0 : 90)
.rotationY(axis == Direction.Axis.X ? 90 : 0)
.build();
}, BlockStateProperties.WATERLOGGED);
})
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, STEEL_PIPE.get()))
.register();
public static final BlockEntry<TFMGPumpBlock> BRASS_MECHANICAL_PUMP = REGISTRATE.block("brass_mechanical_pump", TFMGPumpBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
.transform(BlockStressDefaults.setImpact(4.0))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGSmartFluidPipeBlock> BRASS_SMART_FLUID_PIPE =
REGISTRATE.block("brass_smart_fluid_pipe", TFMGSmartFluidPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(new SmartFluidPipeGenerator()::generate)
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGFluidValveBlock> BRASS_FLUID_VALVE = REGISTRATE.block("brass_fluid_valve", TFMGFluidValveBlock::new)
.initialProperties(SharedProperties::copperMetal)
.transform(pickaxeOnly())
.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(() -> BrassPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
//PLASTIC
public static final BlockEntry<PlasticPipeBlock> PLASTIC_PIPE = REGISTRATE.block("plastic_pipe", PlasticPipeBlock::new)
.initialProperties(Material.HEAVY_METAL)
.transform(pickaxeOnly())
.blockstate(BlockStateGen.pipe())
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<EncasedPlasticPipeBlock> COPPER_ENCASED_PLASTIC_PIPE =
REGISTRATE.block("copper_encased_plastic_pipe", p -> new EncasedPlasticPipeBlock(p, AllBlocks.COPPER_CASING::get))
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY))
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe())
.blockstate(BlockStateGen.encasedPipe())
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
(s, f) -> !s.getValue(EncasedPlasticPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, PLASTIC_PIPE.get()))
.transform(EncasingRegistry.addVariantTo(TFMGBlocks.PLASTIC_PIPE))
.register();
@SuppressWarnings("removal")
public static final BlockEntry<GlassPlasticPipeBlock> GLASS_PLASTIC_PIPE =
REGISTRATE.block("glass_plastic_pipe", GlassPlasticPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.addLayer(() -> RenderType::cutoutMipped)
.transform(pickaxeOnly())
.blockstate((c, p) -> {
p.getVariantBuilder(c.getEntry())
.forAllStatesExcept(state -> {
Direction.Axis axis = state.getValue(BlockStateProperties.AXIS);
return ConfiguredModel.builder()
.modelFile(p.models()
.getExistingFile(p.modLoc("block/plastic_pipe/window")))
.uvLock(false)
.rotationX(axis == Direction.Axis.Y ? 0 : 90)
.rotationY(axis == Direction.Axis.X ? 90 : 0)
.build();
}, BlockStateProperties.WATERLOGGED);
})
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, PLASTIC_PIPE.get()))
.register();
public static final BlockEntry<TFMGPumpBlock> PLASTIC_MECHANICAL_PUMP = REGISTRATE.block("plastic_mechanical_pump", TFMGPumpBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
.transform(BlockStressDefaults.setImpact(4.0))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGSmartFluidPipeBlock> PLASTIC_SMART_FLUID_PIPE =
REGISTRATE.block("plastic_smart_fluid_pipe", TFMGSmartFluidPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(new SmartFluidPipeGenerator()::generate)
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGFluidValveBlock> PLASTIC_FLUID_VALVE = REGISTRATE.block("plastic_fluid_valve", TFMGFluidValveBlock::new)
.initialProperties(SharedProperties::copperMetal)
.transform(pickaxeOnly())
.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(() -> PlasticPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
//ALUMINUM
public static final BlockEntry<AluminumPipeBlock> ALUMINUM_PIPE = REGISTRATE.block("aluminum_pipe", AluminumPipeBlock::new)
.initialProperties(Material.HEAVY_METAL)
.transform(pickaxeOnly())
.blockstate(BlockStateGen.pipe())
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<EncasedAluminumPipeBlock> COPPER_ENCASED_ALUMINUM_PIPE =
REGISTRATE.block("copper_encased_aluminum_pipe", p -> new EncasedAluminumPipeBlock(p, AllBlocks.COPPER_CASING::get))
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY))
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe())
.blockstate(BlockStateGen.encasedPipe())
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
(s, f) -> !s.getValue(EncasedAluminumPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, ALUMINUM_PIPE.get()))
.transform(EncasingRegistry.addVariantTo(TFMGBlocks.ALUMINUM_PIPE))
.register();
@SuppressWarnings("removal")
public static final BlockEntry<GlassAluminumPipeBlock> GLASS_ALUMINUM_PIPE =
REGISTRATE.block("glass_aluminum_pipe", GlassAluminumPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.addLayer(() -> RenderType::cutoutMipped)
.transform(pickaxeOnly())
.blockstate((c, p) -> {
p.getVariantBuilder(c.getEntry())
.forAllStatesExcept(state -> {
Direction.Axis axis = state.getValue(BlockStateProperties.AXIS);
return ConfiguredModel.builder()
.modelFile(p.models()
.getExistingFile(p.modLoc("block/aluminum_pipe/window")))
.uvLock(false)
.rotationX(axis == Direction.Axis.Y ? 0 : 90)
.rotationY(axis == Direction.Axis.X ? 90 : 0)
.build();
}, BlockStateProperties.WATERLOGGED);
})
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, ALUMINUM_PIPE.get()))
.register();
public static final BlockEntry<TFMGPumpBlock> ALUMINUM_MECHANICAL_PUMP = REGISTRATE.block("aluminum_mechanical_pump", TFMGPumpBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
.transform(BlockStressDefaults.setImpact(4.0))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGSmartFluidPipeBlock> ALUMINUM_SMART_FLUID_PIPE =
REGISTRATE.block("aluminum_smart_fluid_pipe", TFMGSmartFluidPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly())
.blockstate(new SmartFluidPipeGenerator()::generate)
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<TFMGFluidValveBlock> ALUMINUM_FLUID_VALVE = REGISTRATE.block("aluminum_fluid_valve", TFMGFluidValveBlock::new)
.initialProperties(SharedProperties::copperMetal)
.transform(pickaxeOnly())
.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(() -> AluminumPipeAttachmentModel::new))
.item()
.transform(customItemModel())
.register();
////////////////////////////////////
//-----------------------CONCRETE---------------------------//
@@ -706,6 +1168,20 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
public static final BlockEntry<Block> CONCRETE = generateConcrete();
public static final BlockEntry<SlabBlock> CONCRETE_SLAB = REGISTRATE.block("concrete_slab", SlabBlock::new)
.initialProperties(() -> Blocks.STONE)
.properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY))
.properties(p -> p.requiresCorrectToolForDrops())
.transform(pickaxeOnly())
.blockstate((c, p) -> TFMGVanillaBlockStates.generateSlabBlockState(c, p, "concrete"))
.tag(BlockTags.NEEDS_STONE_TOOL)
.tag(BlockTags.WALLS)
.item()
.transform(customItemModel("concrete_bottom"))
.lang("Concrete Slab")
.register();
public static BlockEntry<Block> generateConcrete(){
@@ -713,6 +1189,38 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
REGISTRATE.block("concrete_wall", WallBlock::new)
.initialProperties(() -> Blocks.STONE)
.properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY))
.properties(p -> p.requiresCorrectToolForDrops())
.transform(pickaxeOnly())
.blockstate((c, p) -> TFMGVanillaBlockStates.generateWallBlockState(c, p, "concrete"))
.tag(BlockTags.NEEDS_STONE_TOOL)
.tag(BlockTags.WALLS)
.item()
.transform(b -> TFMGVanillaBlockStates.transformWallItem(b, "concrete"))
.build()
.lang("Concrete Wall")
.register();
REGISTRATE.block("concrete_stairs", p -> new StairBlock(()-> TFMGBlocks.CONCRETE.get().defaultBlockState(),p))
.initialProperties(() -> Blocks.STONE)
.properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY))
.properties(p -> p.requiresCorrectToolForDrops())
.transform(pickaxeOnly())
.blockstate((c, p) -> TFMGVanillaBlockStates.generateStairBlockState(c, p, "concrete"))
.tag(BlockTags.NEEDS_STONE_TOOL)
.tag(BlockTags.STAIRS)
.item()
.transform(b -> TFMGVanillaBlockStates.transformStairItem(b, "concrete"))
.build()
.lang("Concrete Stairs")
.register();
return REGISTRATE.block("concrete", Block::new)
.initialProperties(() -> Blocks.STONE)
.properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY))
@@ -725,6 +1233,9 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
.lang("Concrete")
.register();
}
//this saved so much time
public static void generateColoredConcrete() {
String[] colours = {"black", "white", "blue", "light_blue", "red", "green", "lime", "pink", "magenta", "yellow", "gray", "light_gray", "brown", "cyan", "purple", "orange"};
@@ -805,6 +1316,75 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
}
}
public static BlockEntry<SlabBlock> withVariants(String name, Block properties, MaterialColor color,
String displayName, TagKey<Block> toolRequired,SoundType sound, boolean wall){
if(wall)
REGISTRATE.block(name+"_wall", WallBlock::new)
.initialProperties(() -> properties)
.properties(p -> p.color(color))
.properties(p -> p.sound(sound))
.properties(p -> p.requiresCorrectToolForDrops())
.transform(pickaxeOnly())
.blockstate((c, p) -> TFMGVanillaBlockStates.generateWallBlockState(c, p, name))
.tag(toolRequired)
.tag(BlockTags.WALLS)
.item()
.transform(b -> TFMGVanillaBlockStates.transformWallItem(b, name))
.build()
.lang(displayName+" Wall")
.register();
//
REGISTRATE.block(name+"_stairs", p -> new StairBlock(()-> TFMGBlocks.CONCRETE.get().defaultBlockState(),p))
.initialProperties(() -> properties)
.properties(p -> p.color(color))
.properties(p -> p.sound(sound))
.properties(p -> p.requiresCorrectToolForDrops())
.transform(pickaxeOnly())
.blockstate((c, p) -> TFMGVanillaBlockStates.generateStairBlockState(c, p, name))
.tag(toolRequired)
.tag(BlockTags.STAIRS)
.item()
.transform(b -> TFMGVanillaBlockStates.transformStairItem(b, name))
.build()
.lang(displayName+" Stairs")
.register();
//
REGISTRATE.block(name, Block::new)
.initialProperties(() -> properties)
.properties(p -> p.color(color))
.properties(p -> p.sound(sound))
.properties(p -> p.requiresCorrectToolForDrops())
.transform(pickaxeOnly())
.blockstate(simpleCubeAll(name))
.tag(toolRequired)
.transform(tagBlockAndItem(name))
.build()
.lang(displayName)
.register();
return REGISTRATE.block(name+"_slab", SlabBlock::new)
.initialProperties(() -> properties)
.properties(p -> p.color(color))
.properties(p -> p.sound(sound))
.properties(p -> p.requiresCorrectToolForDrops())
.transform(pickaxeOnly())
.blockstate((c, p) -> TFMGVanillaBlockStates.generateSlabBlockState(c, p, name))
.tag(toolRequired)
.tag(BlockTags.WALLS)
.item()
.transform(customItemModel(name+"_bottom"))
.lang(displayName+" Slab")
.register();
}
public static void register() {}
}

View File

@@ -28,8 +28,9 @@ public class TFMGItems {
public static final ItemEntry<Item>
STEEL_INGOT = taggedIngredient("steel_ingot", forgeItemTag("ingots/steel"), CREATE_INGOTS.tag),
CAST_IRON_INGOT = taggedIngredient("cast_iron_ingot", forgeItemTag("ingots/cast_iron"), CREATE_INGOTS.tag),
ALUMINUM_INGOT = taggedIngredient("aluminum_ingot", forgeItemTag("ingots/aluminum"), CREATE_INGOTS.tag),
LEAD_INGOT = taggedIngredient("lead_ingot", forgeItemTag("ingots/lead"), CREATE_INGOTS.tag);
ALUMINUM_INGOT = taggedIngredient("aluminum_ingot", forgeItemTag("ingots/aluminum"), CREATE_INGOTS.tag)
// LEAD_INGOT = taggedIngredient("lead_ingot", forgeItemTag("ingots/lead"), CREATE_INGOTS.tag)
;
public static final ItemEntry<Item>
COAL_COKE_DUST = taggedIngredient("coal_coke_dust", forgeItemTag("dusts/coal_coke"));

View File

@@ -38,27 +38,42 @@ public class TFMGPartialModels {
PUMPJACK_CRANK_BLOCK = block("pumpjack/pumpjack_crank_block"),
PUMPJACK_CRANK = block("pumpjack/pumpjack_crank"),
TOWER_GAUGE = block("distillation_tower/gauge"),
STEEL_FLUID_PIPE_CASING = block("steel_pipe/casing"),
SURFACE_SCANNER_DIAL = block("surface_scanner/dial"),
SURFACE_SCANNER_FLAG = block("surface_scanner/flag"),
FORMWORK_BOTTOM = block("formwork_block/block_bottom"),
FORMWORK_SIDE = block("formwork_block/block_side");
FORMWORK_SIDE = block("formwork_block/block_side"),
STEEL_FLUID_PIPE_CASING = block("steel_pipe/casing"),
CAST_IRON_FLUID_PIPE_CASING = block("cast_iron_pipe/casing"),
BRASS_FLUID_PIPE_CASING = block("brass_pipe/casing"),
PLASTIC_FLUID_PIPE_CASING = block("plastic_pipe/casing"),
ALUMINUM_FLUID_PIPE_CASING = block("aluminum_pipe/casing")
;
public static final Map<ResourceLocation, Couple<PartialModel>> FOLDING_DOORS = new HashMap<>();
public static final Map<FluidTransportBehaviour.AttachmentTypes.ComponentPartials, Map<Direction, PartialModel>> STEEL_PIPE_ATTACHMENTS =
new EnumMap<>(FluidTransportBehaviour.AttachmentTypes.ComponentPartials.class);
public static final Map<FluidTransportBehaviour.AttachmentTypes.ComponentPartials, Map<Direction, PartialModel>> CAST_IRON_PIPE_ATTACHMENTS =
new EnumMap<>(FluidTransportBehaviour.AttachmentTypes.ComponentPartials.class);
public static final Map<FluidTransportBehaviour.AttachmentTypes.ComponentPartials, Map<Direction, PartialModel>> BRASS_PIPE_ATTACHMENTS =
new EnumMap<>(FluidTransportBehaviour.AttachmentTypes.ComponentPartials.class);
public static final Map<FluidTransportBehaviour.AttachmentTypes.ComponentPartials, Map<Direction, PartialModel>> PLASTIC_PIPE_ATTACHMENTS =
new EnumMap<>(FluidTransportBehaviour.AttachmentTypes.ComponentPartials.class);
public static final Map<FluidTransportBehaviour.AttachmentTypes.ComponentPartials, Map<Direction, PartialModel>> ALUMINUM_PIPE_ATTACHMENTS =
new EnumMap<>(FluidTransportBehaviour.AttachmentTypes.ComponentPartials.class);
static {
// 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());
// map.put(d, block("steel_pipe/" + asId + "/" + Lang.asId(d.getSerializedName())));
// }
// STEEL_PIPE_ATTACHMENTS.put(type, map);
// }
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials type : FluidTransportBehaviour.AttachmentTypes.ComponentPartials.values()) {
Map<Direction, PartialModel> map = new HashMap<>();
for (Direction d : Iterate.directions) {
@@ -70,6 +85,52 @@ public class TFMGPartialModels {
putFoldingDoor("steel_door");
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());
map.put(d, block("plastic_pipe/" + asId + "/" + Lang.asId(d.getSerializedName())));
}
PLASTIC_PIPE_ATTACHMENTS.put(type, map);
}
////
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());
map.put(d, block("cast_iron_pipe/" + asId + "/" + Lang.asId(d.getSerializedName())));
}
CAST_IRON_PIPE_ATTACHMENTS.put(type, map);
}
////
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());
map.put(d, block("brass_pipe/" + asId + "/" + Lang.asId(d.getSerializedName())));
}
BRASS_PIPE_ATTACHMENTS.put(type, map);
}
////
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());
map.put(d, block("aluminum_pipe/" + asId + "/" + Lang.asId(d.getSerializedName())));
}
ALUMINUM_PIPE_ATTACHMENTS.put(type, map);
}
////
////////////////
putFoldingDoor("steel_door");
}
private static void putFoldingDoor(String path) {

View File

@@ -0,0 +1,74 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/fluid_tank"
},
"elements": [
{
"name": "Lid",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "north"},
"east": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "east"},
"south": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "south"},
"west": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
}
},
{
"name": "SideRight",
"from": [0, 4, 0],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, -23]},
"faces": {
"north": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "north"},
"south": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "north"}
}
},
{
"name": "SideRight",
"from": [15, 4, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
"faces": {
"east": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "east"},
"west": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "east"}
}
},
{
"name": "SideRight",
"from": [0, 4, 15],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "south"},
"south": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "south"}
}
},
{
"name": "SideRight",
"from": [0, 4, 0],
"to": [1, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
"faces": {
"east": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "west"},
"west": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "west"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
}
]
}

View File

@@ -0,0 +1,154 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [0, 4, 0],
"to": [4, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "north"},
"east": {"uv": [0, 0, 1, 12], "texture": "#1", "cullface": "north"},
"south": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "north"}
}
},
{
"name": "SideRight",
"from": [15, 4, 0],
"to": [16, 16, 4],
"faces": {
"east": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "east"},
"south": {"uv": [0, 0, 1, 12], "texture": "#1", "cullface": "east"},
"west": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "east"}
}
},
{
"name": "SideRight",
"from": [12, 4, 15],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "south"},
"south": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "south"},
"west": {"uv": [0, 0, 1, 12], "texture": "#1", "cullface": "south"}
}
},
{
"name": "SideRight",
"from": [0, 4, 12],
"to": [1, 16, 16],
"faces": {
"north": {"uv": [0, 0, 1, 12], "texture": "#1", "cullface": "west"},
"east": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "west"},
"west": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "west"}
}
},
{
"name": "Window",
"from": [4, 4, 0.95],
"to": [12, 16, 0.95],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "north"},
"south": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "north"}
}
},
{
"name": "Window",
"from": [15.05, 4, 4],
"to": [15.05, 16, 12],
"faces": {
"east": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "east"},
"west": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "east"}
}
},
{
"name": "Window",
"from": [4, 4, 15.05],
"to": [12, 16, 15.05],
"faces": {
"north": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "south"},
"south": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "south"}
}
},
{
"name": "Window",
"from": [0.95, 4, 4],
"to": [0.95, 16, 12],
"faces": {
"east": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "west"},
"west": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "west"}
}
},
{
"name": "SideLeft",
"from": [12, 4, 0],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "north"},
"south": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "north"},
"west": {"uv": [15, 0, 16, 12], "texture": "#1", "cullface": "north"}
}
},
{
"name": "SideLeft",
"from": [15, 4, 12],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [15, 0, 16, 12], "texture": "#1", "cullface": "east"},
"east": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "east"},
"west": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "east"}
}
},
{
"name": "SideLeft",
"from": [0, 4, 15],
"to": [4, 16, 16],
"faces": {
"north": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "south"},
"east": {"uv": [15, 0, 16, 12], "texture": "#1", "cullface": "south"},
"south": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "south"}
}
},
{
"name": "SideLeft",
"from": [0, 4, 0],
"to": [1, 16, 4],
"faces": {
"east": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "west"},
"south": {"uv": [15, 0, 16, 12], "texture": "#1", "cullface": "west"},
"west": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "west"}
}
},
{
"name": "Bottom",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "north"},
"east": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "east"},
"south": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "south"},
"west": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
}
]
}

View File

@@ -0,0 +1,73 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [15, 4, 0],
"to": [16, 16, 12],
"faces": {
"east": {"uv": [4, 0, 16, 12], "texture": "#1"},
"south": {"uv": [4, 0, 5, 12], "texture": "#1"},
"west": {"uv": [0, 0, 12, 12], "texture": "#1"}
}
},
{
"name": "Window",
"from": [0, 4, 0.95],
"to": [4, 16, 0.95],
"faces": {
"north": {"uv": [0, 4, 4, 16], "texture": "#3"},
"south": {"uv": [4, 4, 8, 16], "texture": "#3"}
}
},
{
"name": "Window",
"from": [15.05, 4, 12],
"to": [15.05, 16, 16],
"faces": {
"east": {"uv": [4, 4, 8, 16], "texture": "#3"},
"west": {"uv": [0, 4, 4, 16], "texture": "#3"}
}
},
{
"name": "SideLeft",
"from": [4, 4, 0],
"to": [16, 16, 1],
"faces": {
"north": {"uv": [0, 0, 12, 12], "texture": "#1"},
"south": {"uv": [4, 0, 16, 12], "texture": "#1"},
"west": {"uv": [11, 0, 12, 12], "texture": "#1"}
}
},
{
"name": "Bottom",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [-23, 8, 8]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#1"},
"east": {"uv": [0, 12, 16, 16], "texture": "#1"},
"south": {"uv": [0, 12, 16, 16], "texture": "#1"},
"west": {"uv": [0, 12, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
}
]
}

View File

@@ -0,0 +1,73 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [0, 4, 0],
"to": [12, 16, 1],
"faces": {
"north": {"uv": [4, 0, 16, 12], "texture": "#1"},
"east": {"uv": [4, 0, 5, 12], "texture": "#1"},
"south": {"uv": [0, 0, 12, 12], "texture": "#1"}
}
},
{
"name": "Window",
"from": [0.95, 4, 12],
"to": [0.95, 16, 16],
"faces": {
"east": {"uv": [4, 4, 8, 16], "texture": "#3"},
"west": {"uv": [0, 4, 4, 16], "texture": "#3"}
}
},
{
"name": "Window",
"from": [12, 4, 0.95],
"to": [16, 16, 0.95],
"faces": {
"north": {"uv": [4, 4, 8, 16], "texture": "#3"},
"south": {"uv": [0, 4, 4, 16], "texture": "#3"}
}
},
{
"name": "SideLeft",
"from": [0, 4, 0],
"to": [1, 16, 12],
"faces": {
"east": {"uv": [4, 0, 16, 12], "texture": "#1"},
"south": {"uv": [11, 0, 12, 12], "texture": "#1"},
"west": {"uv": [0, 0, 12, 12], "texture": "#1"}
}
},
{
"name": "Bottom",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 39]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#1"},
"east": {"uv": [0, 12, 16, 16], "texture": "#1"},
"south": {"uv": [0, 12, 16, 16], "texture": "#1"},
"west": {"uv": [0, 12, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
}
]
}

View File

@@ -0,0 +1,73 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [4, 4, 15],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 12, 12], "texture": "#1"},
"south": {"uv": [4, 0, 16, 12], "texture": "#1"},
"west": {"uv": [4, 0, 5, 12], "texture": "#1"}
}
},
{
"name": "Window",
"from": [15.05, 4, 0],
"to": [15.05, 16, 4],
"faces": {
"east": {"uv": [0, 4, 4, 16], "texture": "#3"},
"west": {"uv": [4, 4, 8, 16], "texture": "#3"}
}
},
{
"name": "Window",
"from": [0, 4, 15.05],
"to": [4, 16, 15.05],
"faces": {
"north": {"uv": [0, 4, 4, 16], "texture": "#3"},
"south": {"uv": [4, 4, 8, 16], "texture": "#3"}
}
},
{
"name": "SideLeft",
"from": [15, 4, 4],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [11, 0, 12, 12], "texture": "#1"},
"east": {"uv": [0, 0, 12, 12], "texture": "#1"},
"west": {"uv": [4, 0, 16, 12], "texture": "#1"}
}
},
{
"name": "Bottom",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#1"},
"east": {"uv": [0, 12, 16, 16], "texture": "#1"},
"south": {"uv": [0, 12, 16, 16], "texture": "#1"},
"west": {"uv": [0, 12, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
}
]
}

View File

@@ -0,0 +1,73 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [0, 4, 4],
"to": [1, 16, 16],
"faces": {
"north": {"uv": [4, 0, 5, 12], "texture": "#1"},
"east": {"uv": [0, 0, 12, 12], "texture": "#1"},
"west": {"uv": [4, 0, 16, 12], "texture": "#1"}
}
},
{
"name": "Window",
"from": [12, 4, 15.05],
"to": [16, 16, 15.05],
"faces": {
"north": {"uv": [4, 4, 8, 16], "texture": "#3"},
"south": {"uv": [0, 4, 4, 16], "texture": "#3"}
}
},
{
"name": "Window",
"from": [0.95, 4, 0],
"to": [0.95, 16, 4],
"faces": {
"east": {"uv": [0, 4, 4, 16], "texture": "#3"},
"west": {"uv": [4, 4, 8, 16], "texture": "#3"}
}
},
{
"name": "SideLeft",
"from": [0, 4, 15],
"to": [12, 16, 16],
"faces": {
"north": {"uv": [4, 0, 16, 12], "texture": "#1"},
"east": {"uv": [11, 0, 12, 12], "texture": "#1"},
"south": {"uv": [0, 0, 12, 12], "texture": "#1"}
}
},
{
"name": "Bottom",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [39, 8, 8]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#1"},
"east": {"uv": [0, 12, 16, 16], "texture": "#1"},
"south": {"uv": [0, 12, 16, 16], "texture": "#1"},
"west": {"uv": [0, 12, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
}
]
}

View File

@@ -0,0 +1,57 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"1": "tfmg:block/aluminum_fluid_tank",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [0, 0, 0],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, -23]},
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "north"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "north"}
}
},
{
"name": "SideRight",
"from": [15, 0, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
"faces": {
"east": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "east"},
"west": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "east"}
}
},
{
"name": "SideRight",
"from": [0, 0, 15],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "south"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "south"}
}
},
{
"name": "SideRight",
"from": [0, 0, 0],
"to": [1, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
"faces": {
"east": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "west"},
"west": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "west"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"children": [0, 1, 2, 3]
}
]
}

View File

@@ -0,0 +1,138 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/fluid_tank_window",
"particle": "tfmg:block/fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [0, 0, 0],
"to": [4, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "north"},
"east": {"uv": [0, 0, 1, 16], "texture": "#1", "cullface": "north"},
"south": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "north"}
}
},
{
"name": "SideRight",
"from": [15, 0, 0],
"to": [16, 16, 4],
"faces": {
"east": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "east"},
"south": {"uv": [0, 0, 1, 16], "texture": "#1", "cullface": "east"},
"west": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "east"}
}
},
{
"name": "SideRight",
"from": [12, 0, 15],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "south"},
"south": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "south"},
"west": {"uv": [0, 0, 1, 16], "texture": "#1", "cullface": "south"}
}
},
{
"name": "SideRight",
"from": [0, 0, 12],
"to": [1, 16, 16],
"faces": {
"north": {"uv": [0, 0, 1, 16], "texture": "#1", "cullface": "west"},
"east": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "west"},
"west": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "west"}
}
},
{
"name": "Window",
"from": [4, 0, 0.95],
"to": [12, 16, 0.95],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "north"},
"south": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "north"}
}
},
{
"name": "Window",
"from": [15.05, 0, 4],
"to": [15.05, 16, 12],
"faces": {
"east": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "east"},
"west": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "east"}
}
},
{
"name": "Window",
"from": [4, 0, 15.05],
"to": [12, 16, 15.05],
"faces": {
"north": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "south"},
"south": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "south"}
}
},
{
"name": "Window",
"from": [0.95, 0, 4],
"to": [0.95, 16, 12],
"faces": {
"east": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "west"},
"west": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "west"}
}
},
{
"name": "SideLeft",
"from": [12, 0, 0],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "north"},
"south": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "north"},
"west": {"uv": [15, 0, 16, 16], "texture": "#1", "cullface": "north"}
}
},
{
"name": "SideLeft",
"from": [15, 0, 12],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [15, 0, 16, 16], "texture": "#1", "cullface": "east"},
"east": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "east"},
"west": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "east"}
}
},
{
"name": "SideLeft",
"from": [0, 0, 15],
"to": [4, 16, 16],
"faces": {
"north": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "south"},
"east": {"uv": [15, 0, 16, 16], "texture": "#1", "cullface": "south"},
"south": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "south"}
}
},
{
"name": "SideLeft",
"from": [0, 0, 0],
"to": [1, 16, 4],
"faces": {
"east": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "west"},
"south": {"uv": [15, 0, 16, 16], "texture": "#1", "cullface": "west"},
"west": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "west"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
}
]
}

View File

@@ -0,0 +1,57 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [15, 0, 0],
"to": [16, 16, 12],
"faces": {
"east": {"uv": [4, 0, 16, 16], "texture": "#1"},
"south": {"uv": [4, 0, 5, 16], "texture": "#1"},
"west": {"uv": [0, 0, 12, 16], "texture": "#1"}
}
},
{
"name": "Window",
"from": [0, 0, 0.95],
"to": [4, 16, 0.95],
"faces": {
"north": {"uv": [8, 0, 12, 16], "texture": "#3"},
"south": {"uv": [12, 0, 16, 16], "texture": "#3"}
}
},
{
"name": "Window",
"from": [15.05, 0, 12],
"to": [15.05, 16, 16],
"faces": {
"east": {"uv": [12, 0, 16, 16], "texture": "#3"},
"west": {"uv": [8, 0, 12, 16], "texture": "#3"}
}
},
{
"name": "SideLeft",
"from": [4, 0, 0],
"to": [16, 16, 1],
"faces": {
"north": {"uv": [0, 0, 12, 16], "texture": "#1"},
"south": {"uv": [4, 0, 16, 16], "texture": "#1"},
"west": {"uv": [11, 0, 12, 16], "texture": "#1"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3]
}
]
}

View File

@@ -0,0 +1,57 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [0, 0, 0],
"to": [12, 16, 1],
"faces": {
"north": {"uv": [4, 0, 16, 16], "texture": "#1"},
"east": {"uv": [4, 0, 5, 16], "texture": "#1"},
"south": {"uv": [0, 0, 12, 16], "texture": "#1"}
}
},
{
"name": "Window",
"from": [0.95, 0, 12],
"to": [0.95, 16, 16],
"faces": {
"east": {"uv": [12, 0, 16, 16], "texture": "#3"},
"west": {"uv": [8, 0, 12, 16], "texture": "#3"}
}
},
{
"name": "Window",
"from": [12, 0, 0.95],
"to": [16, 16, 0.95],
"faces": {
"north": {"uv": [12, 0, 16, 16], "texture": "#3"},
"south": {"uv": [8, 0, 12, 16], "texture": "#3"}
}
},
{
"name": "SideLeft",
"from": [0, 0, 0],
"to": [1, 16, 12],
"faces": {
"east": {"uv": [4, 0, 16, 16], "texture": "#1"},
"south": {"uv": [11, 0, 12, 16], "texture": "#1"},
"west": {"uv": [0, 0, 12, 16], "texture": "#1"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3]
}
]
}

View File

@@ -0,0 +1,57 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [4, 0, 15],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 12, 16], "texture": "#1"},
"south": {"uv": [4, 0, 16, 16], "texture": "#1"},
"west": {"uv": [4, 0, 5, 16], "texture": "#1"}
}
},
{
"name": "Window",
"from": [15.05, 0, 0],
"to": [15.05, 16, 4],
"faces": {
"east": {"uv": [8, 0, 12, 16], "texture": "#3"},
"west": {"uv": [12, 0, 16, 16], "texture": "#3"}
}
},
{
"name": "Window",
"from": [0, 0, 15.05],
"to": [4, 16, 15.05],
"faces": {
"north": {"uv": [8, 0, 12, 16], "texture": "#3"},
"south": {"uv": [12, 0, 16, 16], "texture": "#3"}
}
},
{
"name": "SideLeft",
"from": [15, 0, 4],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [11, 0, 12, 16], "texture": "#1"},
"east": {"uv": [0, 0, 12, 16], "texture": "#1"},
"west": {"uv": [4, 0, 16, 16], "texture": "#1"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3]
}
]
}

View File

@@ -0,0 +1,57 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [0, 0, 4],
"to": [1, 16, 16],
"faces": {
"north": {"uv": [4, 0, 5, 16], "texture": "#1"},
"east": {"uv": [0, 0, 12, 16], "texture": "#1"},
"west": {"uv": [4, 0, 16, 16], "texture": "#1"}
}
},
{
"name": "Window",
"from": [12, 0, 15.05],
"to": [16, 16, 15.05],
"faces": {
"north": {"uv": [12, 0, 16, 16], "texture": "#3"},
"south": {"uv": [8, 0, 12, 16], "texture": "#3"}
}
},
{
"name": "Window",
"from": [0.95, 0, 0],
"to": [0.95, 16, 4],
"faces": {
"east": {"uv": [8, 0, 12, 16], "texture": "#3"},
"west": {"uv": [12, 0, 16, 16], "texture": "#3"}
}
},
{
"name": "SideLeft",
"from": [0, 0, 15],
"to": [12, 16, 16],
"faces": {
"north": {"uv": [4, 0, 16, 16], "texture": "#1"},
"east": {"uv": [11, 0, 12, 16], "texture": "#1"},
"south": {"uv": [0, 0, 12, 16], "texture": "#1"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3]
}
]
}

View File

@@ -0,0 +1,127 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "Lid",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "north"},
"east": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "east"},
"south": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "south"},
"west": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
}
},
{
"name": "SideRight",
"from": [15, 4, 0],
"to": [16, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
"faces": {
"east": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "east"},
"west": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "east"}
}
},
{
"name": "SideRight",
"from": [0, 4, 15],
"to": [16, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
"faces": {
"north": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "south"},
"south": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "south"}
}
},
{
"name": "SideRight",
"from": [0, 4, 0],
"to": [1, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
"faces": {
"east": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "west"},
"west": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "west"}
}
},
{
"name": "Lid",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "north"},
"east": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "east"},
"south": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "south"},
"west": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
},
{
"name": "SideRight",
"from": [0, 4, 0],
"to": [16, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "north"},
"south": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "north"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": []
},
{
"name": "block_middle",
"origin": [8, 8, 8],
"color": 0,
"children": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": []
}
]
},
{
"name": "block_bottom",
"origin": [8, 8, 8],
"color": 0,
"children": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3]
}
]
},
{
"name": "block_top",
"origin": [8, 8, 8],
"color": 0,
"children": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [4, 5]
}
]
}
]
}

View File

@@ -0,0 +1,168 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"5": "tfmg:block/aluminum_fluid_tank_window_single",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "Lid",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "north"},
"east": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "east"},
"south": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "south"},
"west": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
},
{
"name": "SideRight",
"from": [0, 4, 0],
"to": [4, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "north"},
"east": {"uv": [8, 4, 9, 12], "texture": "#1", "cullface": "north"},
"south": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "north"}
}
},
{
"name": "SideRight",
"from": [15, 4, 0],
"to": [16, 12, 4],
"faces": {
"east": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "east"},
"south": {"uv": [8, 4, 9, 12], "texture": "#1", "cullface": "east"},
"west": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "east"}
}
},
{
"name": "SideRight",
"from": [12, 4, 15],
"to": [16, 12, 16],
"faces": {
"north": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "south"},
"south": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "south"},
"west": {"uv": [8, 4, 9, 12], "texture": "#1", "cullface": "south"}
}
},
{
"name": "SideRight",
"from": [0, 4, 12],
"to": [1, 12, 16],
"faces": {
"north": {"uv": [8, 4, 9, 12], "texture": "#1", "cullface": "west"},
"east": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "west"},
"west": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "west"}
}
},
{
"name": "Window",
"from": [4, 4, 0.95],
"to": [12, 12, 0.95],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "north"},
"south": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "north"}
}
},
{
"name": "Window",
"from": [15.05, 4, 4],
"to": [15.05, 12, 12],
"faces": {
"east": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "east"},
"west": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "east"}
}
},
{
"name": "Window",
"from": [4, 4, 15.05],
"to": [12, 12, 15.05],
"faces": {
"north": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "south"},
"south": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "south"}
}
},
{
"name": "Window",
"from": [0.95, 4, 4],
"to": [0.95, 12, 12],
"faces": {
"east": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "west"},
"west": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "west"}
}
},
{
"name": "SideLeft",
"from": [12, 4, 0],
"to": [16, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "north"},
"south": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "north"},
"west": {"uv": [7, 4, 8, 12], "texture": "#1", "cullface": "north"}
}
},
{
"name": "SideLeft",
"from": [15, 4, 12],
"to": [16, 12, 16],
"faces": {
"north": {"uv": [7, 4, 8, 12], "texture": "#1", "cullface": "east"},
"east": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "east"},
"west": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "east"}
}
},
{
"name": "SideLeft",
"from": [0, 4, 15],
"to": [4, 12, 16],
"faces": {
"north": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "south"},
"east": {"uv": [7, 4, 8, 12], "texture": "#1", "cullface": "south"},
"south": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "south"}
}
},
{
"name": "SideLeft",
"from": [0, 4, 0],
"to": [1, 12, 4],
"faces": {
"east": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "west"},
"south": {"uv": [7, 4, 8, 12], "texture": "#1", "cullface": "west"},
"west": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "west"}
}
},
{
"name": "Bottom",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "north"},
"east": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "east"},
"south": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "south"},
"west": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
}
]
}

View File

@@ -0,0 +1,104 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"5": "tfmg:block/aluminum_fluid_tank_window_single",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [15, 4, 0],
"to": [16, 12, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"east": {"uv": [4, 4, 16, 12], "texture": "#1"},
"south": {"uv": [4, 4, 5, 12], "texture": "#1"},
"west": {"uv": [0, 4, 12, 12], "texture": "#1"}
}
},
{
"name": "Window",
"from": [0, 4, 0.95],
"to": [4, 12, 0.95],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [0, 0, 4, 8], "texture": "#5"},
"south": {"uv": [4, 0, 8, 8], "texture": "#5"}
}
},
{
"name": "Window",
"from": [15.05, 4, 12],
"to": [15.05, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"east": {"uv": [4, 0, 8, 8], "texture": "#5"},
"west": {"uv": [0, 0, 4, 8], "texture": "#5"}
}
},
{
"name": "SideLeft",
"from": [4, 4, 0],
"to": [16, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [0, 4, 12, 12], "texture": "#1"},
"south": {"uv": [4, 4, 16, 12], "texture": "#1"},
"west": {"uv": [11, 4, 12, 12], "texture": "#1"}
}
},
{
"name": "Bottom",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [-23, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#1"},
"east": {"uv": [0, 0, 16, 4], "texture": "#1"},
"south": {"uv": [0, 0, 16, 4], "texture": "#1"},
"west": {"uv": [0, 0, 16, 4], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
},
{
"name": "Bottom",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [-23, 8, 8]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#1"},
"east": {"uv": [0, 12, 16, 16], "texture": "#1"},
"south": {"uv": [0, 12, 16, 16], "texture": "#1"},
"west": {"uv": [0, 12, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
},
{
"name": "block_bottom_centered_window",
"origin": [8, 8, 8],
"color": 0,
"children": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [5]
}
]
}
]
}

View File

@@ -0,0 +1,104 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"5": "tfmg:block/aluminum_fluid_tank_window_single",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [0, 4, 0],
"to": [12, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [4, 4, 16, 12], "texture": "#1"},
"east": {"uv": [4, 4, 5, 12], "texture": "#1"},
"south": {"uv": [0, 4, 12, 12], "texture": "#1"}
}
},
{
"name": "Window",
"from": [0.95, 4, 12],
"to": [0.95, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"east": {"uv": [4, 0, 8, 8], "texture": "#5"},
"west": {"uv": [0, 0, 4, 8], "texture": "#5"}
}
},
{
"name": "Window",
"from": [12, 4, 0.95],
"to": [16, 12, 0.95],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [4, 0, 8, 8], "texture": "#5"},
"south": {"uv": [0, 0, 4, 8], "texture": "#5"}
}
},
{
"name": "SideLeft",
"from": [0, 4, 0],
"to": [1, 12, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"east": {"uv": [4, 4, 16, 12], "texture": "#1"},
"south": {"uv": [11, 4, 12, 12], "texture": "#1"},
"west": {"uv": [0, 4, 12, 12], "texture": "#1"}
}
},
{
"name": "Bottom",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 39]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#1"},
"east": {"uv": [0, 0, 16, 4], "texture": "#1"},
"south": {"uv": [0, 0, 16, 4], "texture": "#1"},
"west": {"uv": [0, 0, 16, 4], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
},
{
"name": "Bottom",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 39]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#1"},
"east": {"uv": [0, 12, 16, 16], "texture": "#1"},
"south": {"uv": [0, 12, 16, 16], "texture": "#1"},
"west": {"uv": [0, 12, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
},
{
"name": "block_bottom_centered_window",
"origin": [8, 8, 8],
"color": 0,
"children": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [5]
}
]
}
]
}

View File

@@ -0,0 +1,104 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"5": "tfmg:block/aluminum_fluid_tank_window_single",
"particle": "tfmg:block/fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [4, 4, 15],
"to": [16, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [0, 4, 12, 12], "texture": "#1"},
"south": {"uv": [4, 4, 16, 12], "texture": "#1"},
"west": {"uv": [4, 4, 5, 12], "texture": "#1"}
}
},
{
"name": "Window",
"from": [15.05, 4, 0],
"to": [15.05, 12, 4],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"east": {"uv": [0, 0, 4, 8], "texture": "#5"},
"west": {"uv": [4, 0, 8, 8], "texture": "#5"}
}
},
{
"name": "Window",
"from": [0, 4, 15.05],
"to": [4, 12, 15.05],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [0, 0, 4, 8], "texture": "#5"},
"south": {"uv": [4, 0, 8, 8], "texture": "#5"}
}
},
{
"name": "SideLeft",
"from": [15, 4, 4],
"to": [16, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [11, 4, 12, 12], "texture": "#1"},
"east": {"uv": [0, 4, 12, 12], "texture": "#1"},
"west": {"uv": [4, 4, 16, 12], "texture": "#1"}
}
},
{
"name": "Bottom",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#1"},
"east": {"uv": [0, 0, 16, 4], "texture": "#1"},
"south": {"uv": [0, 0, 16, 4], "texture": "#1"},
"west": {"uv": [0, 0, 16, 4], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
},
{
"name": "Bottom",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#1"},
"east": {"uv": [0, 12, 16, 16], "texture": "#1"},
"south": {"uv": [0, 12, 16, 16], "texture": "#1"},
"west": {"uv": [0, 12, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
},
{
"name": "block_bottom_centered_window",
"origin": [8, 8, 8],
"color": 0,
"children": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [5]
}
]
}
]
}

View File

@@ -0,0 +1,104 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"5": "tfmg:block/aluminum_fluid_tank_window_single",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [0, 4, 4],
"to": [1, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [4, 4, 5, 12], "texture": "#1"},
"east": {"uv": [0, 4, 12, 12], "texture": "#1"},
"west": {"uv": [4, 4, 16, 12], "texture": "#1"}
}
},
{
"name": "Window",
"from": [12, 4, 15.05],
"to": [16, 12, 15.05],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [4, 0, 8, 8], "texture": "#5"},
"south": {"uv": [0, 0, 4, 8], "texture": "#5"}
}
},
{
"name": "Window",
"from": [0.95, 4, 0],
"to": [0.95, 12, 4],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"east": {"uv": [0, 0, 4, 8], "texture": "#5"},
"west": {"uv": [4, 0, 8, 8], "texture": "#5"}
}
},
{
"name": "SideLeft",
"from": [0, 4, 15],
"to": [12, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [4, 4, 16, 12], "texture": "#1"},
"east": {"uv": [11, 4, 12, 12], "texture": "#1"},
"south": {"uv": [0, 4, 12, 12], "texture": "#1"}
}
},
{
"name": "Bottom",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [39, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#1"},
"east": {"uv": [0, 0, 16, 4], "texture": "#1"},
"south": {"uv": [0, 0, 16, 4], "texture": "#1"},
"west": {"uv": [0, 0, 16, 4], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
},
{
"name": "Bottom",
"from": [0, 0, 0],
"to": [16, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [39, 8, 8]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#1"},
"east": {"uv": [0, 12, 16, 16], "texture": "#1"},
"south": {"uv": [0, 12, 16, 16], "texture": "#1"},
"west": {"uv": [0, 12, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
},
{
"name": "block_bottom_centered_window",
"origin": [8, 8, 8],
"color": 0,
"children": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [5]
}
]
}
]
}

View File

@@ -0,0 +1,71 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "Lid",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "north"},
"east": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "east"},
"south": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "south"},
"west": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
},
{
"name": "SideRight",
"from": [0, 0, 0],
"to": [16, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "north"},
"south": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "north"}
}
},
{
"name": "SideRight",
"from": [15, 0, 0],
"to": [16, 12, 16],
"faces": {
"east": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "east"},
"west": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "east"}
}
},
{
"name": "SideRight",
"from": [0, 0, 15],
"to": [16, 12, 16],
"faces": {
"north": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "south"},
"south": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "south"}
}
},
{
"name": "SideRight",
"from": [0, 0, 0],
"to": [1, 12, 16],
"faces": {
"east": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "west"},
"west": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "west"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
}
]
}

View File

@@ -0,0 +1,154 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "Lid",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "north"},
"east": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "east"},
"south": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "south"},
"west": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
},
{
"name": "SideRight",
"from": [0, 0, 0],
"to": [4, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "north"},
"east": {"uv": [0, 4, 1, 16], "texture": "#1", "cullface": "north"},
"south": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "north"}
}
},
{
"name": "SideRight",
"from": [15, 0, 0],
"to": [16, 12, 4],
"faces": {
"east": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "east"},
"south": {"uv": [0, 4, 1, 16], "texture": "#1", "cullface": "east"},
"west": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "east"}
}
},
{
"name": "SideRight",
"from": [12, 0, 15],
"to": [16, 12, 16],
"faces": {
"north": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "south"},
"south": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "south"},
"west": {"uv": [0, 4, 1, 16], "texture": "#1", "cullface": "south"}
}
},
{
"name": "SideRight",
"from": [0, 0, 12],
"to": [1, 12, 16],
"faces": {
"north": {"uv": [0, 4, 1, 16], "texture": "#1", "cullface": "west"},
"east": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "west"},
"west": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "west"}
}
},
{
"name": "Window",
"from": [4, 0, 0.95],
"to": [12, 12, 0.95],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "north"},
"south": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "north"}
}
},
{
"name": "Window",
"from": [15.05, 0, 4],
"to": [15.05, 12, 12],
"faces": {
"east": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "east"},
"west": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "east"}
}
},
{
"name": "Window",
"from": [4, 0, 15.05],
"to": [12, 12, 15.05],
"faces": {
"north": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "south"},
"south": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "south"}
}
},
{
"name": "Window",
"from": [0.95, 0, 4],
"to": [0.95, 12, 12],
"faces": {
"east": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "west"},
"west": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "west"}
}
},
{
"name": "SideLeft",
"from": [12, 0, 0],
"to": [16, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "north"},
"south": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "north"},
"west": {"uv": [15, 4, 16, 16], "texture": "#1", "cullface": "north"}
}
},
{
"name": "SideLeft",
"from": [15, 0, 12],
"to": [16, 12, 16],
"faces": {
"north": {"uv": [15, 4, 16, 16], "texture": "#1", "cullface": "east"},
"east": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "east"},
"west": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "east"}
}
},
{
"name": "SideLeft",
"from": [0, 0, 15],
"to": [4, 12, 16],
"faces": {
"north": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "south"},
"east": {"uv": [15, 4, 16, 16], "texture": "#1", "cullface": "south"},
"south": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "south"}
}
},
{
"name": "SideLeft",
"from": [0, 0, 0],
"to": [1, 12, 4],
"faces": {
"east": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "west"},
"south": {"uv": [15, 4, 16, 16], "texture": "#1", "cullface": "west"},
"west": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "west"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
}
]
}

View File

@@ -0,0 +1,77 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [15, 0, 0],
"to": [16, 12, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"east": {"uv": [4, 4, 16, 16], "texture": "#1"},
"south": {"uv": [4, 4, 5, 16], "texture": "#1"},
"west": {"uv": [0, 4, 12, 16], "texture": "#1"}
}
},
{
"name": "Window",
"from": [0, 0, 0.95],
"to": [4, 12, 0.95],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [0, 0, 4, 12], "texture": "#3"},
"south": {"uv": [4, 0, 8, 12], "texture": "#3"}
}
},
{
"name": "Window",
"from": [15.05, 0, 12],
"to": [15.05, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"east": {"uv": [4, 0, 8, 12], "texture": "#3"},
"west": {"uv": [0, 0, 4, 12], "texture": "#3"}
}
},
{
"name": "SideLeft",
"from": [4, 0, 0],
"to": [16, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [0, 4, 12, 16], "texture": "#1"},
"south": {"uv": [4, 4, 16, 16], "texture": "#1"},
"west": {"uv": [11, 4, 12, 16], "texture": "#1"}
}
},
{
"name": "Bottom",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [-23, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#1"},
"east": {"uv": [0, 0, 16, 4], "texture": "#1"},
"south": {"uv": [0, 0, 16, 4], "texture": "#1"},
"west": {"uv": [0, 0, 16, 4], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
}
]
}

View File

@@ -0,0 +1,77 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [0, 0, 0],
"to": [12, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [4, 4, 16, 16], "texture": "#1"},
"east": {"uv": [4, 4, 5, 16], "texture": "#1"},
"south": {"uv": [0, 4, 12, 16], "texture": "#1"}
}
},
{
"name": "Window",
"from": [0.95, 0, 12],
"to": [0.95, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"east": {"uv": [4, 0, 8, 12], "texture": "#3"},
"west": {"uv": [0, 0, 4, 12], "texture": "#3"}
}
},
{
"name": "Window",
"from": [12, 0, 0.95],
"to": [16, 12, 0.95],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [4, 0, 8, 12], "texture": "#3"},
"south": {"uv": [0, 0, 4, 12], "texture": "#3"}
}
},
{
"name": "SideLeft",
"from": [0, 0, 0],
"to": [1, 12, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"east": {"uv": [4, 4, 16, 16], "texture": "#1"},
"south": {"uv": [11, 4, 12, 16], "texture": "#1"},
"west": {"uv": [0, 4, 12, 16], "texture": "#1"}
}
},
{
"name": "Bottom",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 39]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#1"},
"east": {"uv": [0, 0, 16, 4], "texture": "#1"},
"south": {"uv": [0, 0, 16, 4], "texture": "#1"},
"west": {"uv": [0, 0, 16, 4], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
}
]
}

View File

@@ -0,0 +1,77 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [4, 0, 15],
"to": [16, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [0, 4, 12, 16], "texture": "#1"},
"south": {"uv": [4, 4, 16, 16], "texture": "#1"},
"west": {"uv": [4, 4, 5, 16], "texture": "#1"}
}
},
{
"name": "Window",
"from": [15.05, 0, 0],
"to": [15.05, 12, 4],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"east": {"uv": [0, 0, 4, 12], "texture": "#3"},
"west": {"uv": [4, 0, 8, 12], "texture": "#3"}
}
},
{
"name": "Window",
"from": [0, 0, 15.05],
"to": [4, 12, 15.05],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [0, 0, 4, 12], "texture": "#3"},
"south": {"uv": [4, 0, 8, 12], "texture": "#3"}
}
},
{
"name": "SideLeft",
"from": [15, 0, 4],
"to": [16, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [11, 4, 12, 16], "texture": "#1"},
"east": {"uv": [0, 4, 12, 16], "texture": "#1"},
"west": {"uv": [4, 4, 16, 16], "texture": "#1"}
}
},
{
"name": "Bottom",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#1"},
"east": {"uv": [0, 0, 16, 4], "texture": "#1"},
"south": {"uv": [0, 0, 16, 4], "texture": "#1"},
"west": {"uv": [0, 0, 16, 4], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
}
]
}

View File

@@ -0,0 +1,77 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/aluminum_fluid_tank_top",
"1": "tfmg:block/aluminum_fluid_tank",
"3": "tfmg:block/aluminum_fluid_tank_window",
"4": "tfmg:block/aluminum_fluid_tank_inner",
"particle": "tfmg:block/aluminum_fluid_tank"
},
"elements": [
{
"name": "SideRight",
"from": [0, 0, 4],
"to": [1, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [4, 4, 5, 16], "texture": "#1"},
"east": {"uv": [0, 4, 12, 16], "texture": "#1"},
"west": {"uv": [4, 4, 16, 16], "texture": "#1"}
}
},
{
"name": "Window",
"from": [12, 0, 15.05],
"to": [16, 12, 15.05],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [4, 0, 8, 12], "texture": "#3"},
"south": {"uv": [0, 0, 4, 12], "texture": "#3"}
}
},
{
"name": "Window",
"from": [0.95, 0, 0],
"to": [0.95, 12, 4],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"east": {"uv": [0, 0, 4, 12], "texture": "#3"},
"west": {"uv": [4, 0, 8, 12], "texture": "#3"}
}
},
{
"name": "SideLeft",
"from": [0, 0, 15],
"to": [12, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [4, 4, 16, 16], "texture": "#1"},
"east": {"uv": [11, 4, 12, 16], "texture": "#1"},
"south": {"uv": [0, 4, 12, 16], "texture": "#1"}
}
},
{
"name": "Bottom",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [39, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#1"},
"east": {"uv": [0, 0, 16, 4], "texture": "#1"},
"south": {"uv": [0, 0, 16, 4], "texture": "#1"},
"west": {"uv": [0, 0, 16, 4], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
}
],
"groups": [
{
"name": "tank",
"origin": [8, 8, -23],
"color": 0,
"children": [0, 1, 2, 3, 4]
}
]
}

View File

@@ -0,0 +1,50 @@
{
"credit": "Made with Blockbench",
"textures": {
"2": "create:block/fluid_valve",
"4": "create:block/pipes",
"particle": "create:block/copper_plating"
},
"elements": [
{
"name": "ValveCenter",
"from": [2, 2, 2],
"to": [14, 14, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]},
"faces": {
"north": {"uv": [6, 6, 12, 12], "texture": "#2"},
"east": {"uv": [6, 0, 12, 6], "texture": "#2"},
"south": {"uv": [0, 0, 6, 6], "texture": "#2"},
"west": {"uv": [6, 0, 12, 6], "texture": "#2"},
"up": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"},
"down": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"}
}
},
{
"from": [3, 14, 3],
"to": [13, 16, 13],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"},
"east": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"},
"south": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"},
"west": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"},
"up": {"uv": [11, 11, 16, 16], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"}
}
},
{
"from": [3, 0, 3],
"to": [13, 2, 13],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"},
"east": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"},
"south": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"},
"west": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"},
"up": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"},
"down": {"uv": [16, 11, 11, 16], "rotation": 90, "texture": "#4"}
}
}
]
}

View File

@@ -0,0 +1,50 @@
{
"credit": "Made with Blockbench",
"textures": {
"2": "create:block/fluid_valve",
"4": "create:block/pipes",
"particle": "create:block/copper_plating"
},
"elements": [
{
"name": "ValveCenter",
"from": [2, 2, 2],
"to": [14, 14, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]},
"faces": {
"north": {"uv": [6, 6, 12, 12], "texture": "#2"},
"east": {"uv": [6, 0, 12, 6], "texture": "#2"},
"south": {"uv": [0, 6, 6, 12], "texture": "#2"},
"west": {"uv": [6, 0, 12, 6], "texture": "#2"},
"up": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"},
"down": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"}
}
},
{
"from": [3, 14, 3],
"to": [13, 16, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"},
"east": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"},
"south": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"},
"west": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"},
"up": {"uv": [11, 11, 16, 16], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"}
}
},
{
"from": [3, 0, 3],
"to": [13, 2, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"},
"east": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"},
"south": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"},
"west": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"},
"up": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"},
"down": {"uv": [16, 11, 11, 16], "rotation": 90, "texture": "#4"}
}
}
]
}

View File

@@ -0,0 +1,50 @@
{
"credit": "Made with Blockbench",
"textures": {
"2": "create:block/fluid_valve",
"3": "create:block/pipes",
"particle": "create:block/copper_plating"
},
"elements": [
{
"name": "ValveCenter",
"from": [2, 2, 2],
"to": [14, 14, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]},
"faces": {
"north": {"uv": [6, 6, 12, 12], "rotation": 90, "texture": "#2"},
"east": {"uv": [6, 6, 12, 12], "rotation": 90, "texture": "#2"},
"south": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"},
"west": {"uv": [6, 6, 12, 12], "rotation": 90, "texture": "#2"},
"up": {"uv": [6, 0, 12, 6], "rotation": 90, "texture": "#2"},
"down": {"uv": [6, 0, 12, 6], "rotation": 90, "texture": "#2"}
}
},
{
"from": [0, 3, 3],
"to": [2, 13, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [4, 8.5, 9, 9.5], "rotation": 90, "texture": "#3"},
"east": {"uv": [0, 0, 0, 0], "texture": "#3"},
"south": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"},
"west": {"uv": [11, 11, 16, 16], "texture": "#3"},
"up": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"},
"down": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"}
}
},
{
"from": [14, 3, 3],
"to": [16, 13, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [4, 9.5, 9, 8.5], "rotation": 90, "texture": "#3"},
"east": {"uv": [16, 11, 11, 16], "texture": "#3"},
"south": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"},
"west": {"uv": [0, 0, 0, 0], "texture": "#3"},
"up": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"},
"down": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"}
}
}
]
}

View File

@@ -0,0 +1,50 @@
{
"credit": "Made with Blockbench",
"textures": {
"2": "create:block/fluid_valve",
"3": "create:block/pipes",
"particle": "create:block/copper_plating"
},
"elements": [
{
"name": "ValveCenter",
"from": [2, 2, 2],
"to": [14, 14, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]},
"faces": {
"north": {"uv": [6, 6, 12, 12], "rotation": 90, "texture": "#2"},
"east": {"uv": [6, 6, 12, 12], "rotation": 90, "texture": "#2"},
"south": {"uv": [0, 6, 6, 12], "rotation": 90, "texture": "#2"},
"west": {"uv": [6, 6, 12, 12], "rotation": 90, "texture": "#2"},
"up": {"uv": [6, 0, 12, 6], "rotation": 90, "texture": "#2"},
"down": {"uv": [6, 0, 12, 6], "rotation": 90, "texture": "#2"}
}
},
{
"from": [0, 3, 3],
"to": [2, 13, 13],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [4, 8.5, 9, 9.5], "rotation": 90, "texture": "#3"},
"east": {"uv": [0, 0, 0, 0], "texture": "#3"},
"south": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"},
"west": {"uv": [11, 11, 16, 16], "texture": "#3"},
"up": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"},
"down": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"}
}
},
{
"from": [14, 3, 3],
"to": [16, 13, 13],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [4, 9.5, 9, 8.5], "rotation": 90, "texture": "#3"},
"east": {"uv": [16, 11, 11, 16], "texture": "#3"},
"south": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"},
"west": {"uv": [0, 0, 0, 0], "texture": "#3"},
"up": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"},
"down": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"}
}
}
]
}

View File

@@ -0,0 +1,190 @@
{
"credit": "Made with Blockbench",
"textures": {
"2": "create:block/fluid_valve",
"3": "create:block/pipes",
"4": "create:block/pump",
"1_1": "create:block/axis_top",
"1_0": "create:block/axis",
"particle": "create:block/copper_plating"
},
"elements": [
{
"name": "ValveCenter",
"from": [2, 2, 2],
"to": [14, 14, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]},
"faces": {
"north": {"uv": [6, 0, 12, 6], "texture": "#2"},
"east": {"uv": [6, 6, 12, 12], "texture": "#2"},
"south": {"uv": [6, 0, 12, 6], "texture": "#2"},
"west": {"uv": [6, 6, 12, 12], "texture": "#2"},
"up": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"},
"down": {"uv": [6, 6, 12, 12], "texture": "#2"}
}
},
{
"name": "Axis",
"from": [6, 6, 0],
"to": [10, 10, 16],
"faces": {
"north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"},
"east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1_0"},
"south": {"uv": [6, 6, 10, 10], "texture": "#1_1"},
"west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"},
"up": {"uv": [6, 0, 10, 16], "texture": "#1_0"},
"down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#1_0"}
}
},
{
"from": [7, 14.1, 5],
"to": [9, 15.1, 7],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [14, 0, 12, 1], "rotation": 180, "texture": "#4"},
"east": {"uv": [14, 3, 12, 4], "texture": "#4"},
"south": {"uv": [14, 2, 12, 3], "rotation": 180, "texture": "#4"},
"west": {"uv": [12, 0, 13, 2], "rotation": 270, "texture": "#4"},
"up": {"uv": [14, 2, 12, 0], "rotation": 180, "texture": "#4"},
"down": {"uv": [12, 2, 14, 4], "texture": "#4"}
}
},
{
"from": [9, 14.1, 5],
"to": [11, 15.1, 9],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [16, 0, 14, 1], "texture": "#4"},
"east": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"},
"south": {"uv": [16, 0, 14, 1], "rotation": 180, "texture": "#4"},
"west": {"uv": [12, 4, 13, 0], "rotation": 90, "texture": "#4"},
"up": {"uv": [16, 4, 14, 0], "rotation": 180, "texture": "#4"},
"down": {"uv": [14, 0, 16, 4], "texture": "#4"}
}
},
{
"from": [5, 14.1, 7],
"to": [7, 15.1, 11],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [16, 0, 14, 1], "rotation": 180, "texture": "#4"},
"east": {"uv": [12, 4, 13, 0], "rotation": 90, "texture": "#4"},
"south": {"uv": [16, 0, 14, 1], "texture": "#4"},
"west": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"},
"up": {"uv": [16, 4, 14, 0], "texture": "#4"},
"down": {"uv": [14, 0, 16, 4], "rotation": 180, "texture": "#4"}
}
},
{
"from": [7, 14.1, 9],
"to": [9, 15.1, 11],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [14, 2, 12, 3], "rotation": 180, "texture": "#4"},
"east": {"uv": [12, 0, 13, 2], "rotation": 270, "texture": "#4"},
"south": {"uv": [14, 0, 12, 1], "rotation": 180, "texture": "#4"},
"west": {"uv": [14, 3, 12, 4], "texture": "#4"},
"up": {"uv": [14, 2, 12, 0], "texture": "#4"},
"down": {"uv": [12, 2, 14, 4], "rotation": 180, "texture": "#4"}
}
},
{
"name": "Center",
"from": [7, 14, 7],
"to": [9, 16, 9],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [12.5, 0, 12, 1], "rotation": 90, "texture": "#2"},
"east": {"uv": [13, 0.5, 12, 1], "texture": "#2"},
"south": {"uv": [12, 0.5, 13, 1], "texture": "#2"},
"west": {"uv": [12, 1, 12.5, 0], "rotation": 90, "texture": "#2"},
"up": {"uv": [12, 0, 13, 1], "texture": "#2"}
}
},
{
"from": [0, 3, 3],
"to": [2, 13, 13],
"faces": {
"north": {"uv": [4, 8.5, 9, 9.5], "rotation": 90, "texture": "#3"},
"south": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"},
"west": {"uv": [11, 11, 16, 16], "texture": "#3"},
"up": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"},
"down": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"}
}
},
{
"from": [14, 3, 3],
"to": [16, 13, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
"faces": {
"north": {"uv": [4, 9.5, 9, 8.5], "rotation": 90, "texture": "#3"},
"east": {"uv": [16, 11, 11, 16], "texture": "#3"},
"south": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"},
"up": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"},
"down": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, 45, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, 225, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 3, 0],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 135, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
0,
{
"name": "shaft",
"origin": [8, 8, 8],
"color": 0,
"children": [1]
},
{
"name": "Pointer",
"origin": [7.5, 14, 8],
"color": 0,
"children": [
{
"name": "arrow",
"origin": [8, 8, 8],
"color": 0,
"children": []
},
{
"name": "arrow",
"origin": [8, 8, 8],
"color": 0,
"children": [2, 3, 4, 5]
},
6
]
},
7,
8
]
}

View File

@@ -0,0 +1,151 @@
{
"credit": "Made with Blockbench",
"textures": {
"2": "create:block/fluid_valve",
"4": "create:block/pump",
"particle": "create:block/copper_plating"
},
"elements": [
{
"from": [7, 14.1, 5],
"to": [9, 15.1, 7],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [14, 0, 12, 1], "rotation": 180, "texture": "#4"},
"east": {"uv": [14, 3, 12, 4], "texture": "#4"},
"south": {"uv": [14, 2, 12, 3], "rotation": 180, "texture": "#4"},
"west": {"uv": [12, 0, 13, 2], "rotation": 270, "texture": "#4"},
"up": {"uv": [12, 0, 14, 2], "texture": "#4"},
"down": {"uv": [14, 0, 12, 2], "rotation": 180, "texture": "#4"}
}
},
{
"from": [9, 14.1, 5],
"to": [11, 15.1, 9],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [16, 0, 14, 1], "texture": "#4"},
"east": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"},
"south": {"uv": [16, 0, 14, 1], "rotation": 180, "texture": "#4"},
"up": {"uv": [14, 0, 16, 4], "texture": "#4"},
"down": {"uv": [16, 0, 14, 4], "rotation": 180, "texture": "#4"}
}
},
{
"from": [7, 14.1, 9],
"to": [11, 15.1, 11],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [16, 0, 14, 1], "texture": "#4"},
"south": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"},
"west": {"uv": [16, 0, 14, 1], "rotation": 180, "texture": "#4"},
"up": {"uv": [14, 0, 16, 4], "rotation": 90, "texture": "#4"},
"down": {"uv": [16, 0, 14, 4], "rotation": 90, "texture": "#4"}
}
},
{
"from": [9, 14.1, 7],
"to": [11, 15.1, 9],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [12, 0, 13, 2], "rotation": 270, "texture": "#4"},
"east": {"uv": [14, 0, 12, 1], "rotation": 180, "texture": "#4"},
"south": {"uv": [14, 3, 12, 4], "texture": "#4"},
"west": {"uv": [14, 2, 12, 3], "rotation": 180, "texture": "#4"},
"up": {"uv": [12, 0, 14, 2], "rotation": 90, "texture": "#4"},
"down": {"uv": [14, 0, 12, 2], "rotation": 90, "texture": "#4"}
}
},
{
"from": [9, 14.1, 5],
"to": [11, 15.1, 9],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [16, 0, 14, 1], "texture": "#4"},
"east": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"},
"south": {"uv": [16, 0, 14, 1], "rotation": 180, "texture": "#4"},
"up": {"uv": [14, 0, 16, 4], "texture": "#4"},
"down": {"uv": [16, 0, 14, 4], "rotation": 180, "texture": "#4"}
}
},
{
"from": [7, 14.1, 5],
"to": [9, 15.1, 7],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [14, 0, 12, 1], "rotation": 180, "texture": "#4"},
"east": {"uv": [14, 3, 12, 4], "texture": "#4"},
"south": {"uv": [14, 2, 12, 3], "rotation": 180, "texture": "#4"},
"west": {"uv": [12, 0, 13, 2], "rotation": 270, "texture": "#4"},
"up": {"uv": [12, 0, 14, 2], "texture": "#4"},
"down": {"uv": [14, 0, 12, 2], "rotation": 180, "texture": "#4"}
}
},
{
"name": "Center",
"from": [7, 14, 7],
"to": [9, 16, 9],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 15, 8]},
"faces": {
"north": {"uv": [12.5, 0, 12, 1], "rotation": 90, "texture": "#2"},
"east": {"uv": [13, 0.5, 12, 1], "texture": "#2"},
"south": {"uv": [12, 0.5, 13, 1], "texture": "#2"},
"west": {"uv": [12, 1, 12.5, 0], "rotation": 90, "texture": "#2"},
"up": {"uv": [12, 0, 13, 1], "texture": "#2"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, 45, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, 225, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 3, 0],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 135, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "Pointer",
"origin": [7.5, 14, 8],
"color": 0,
"children": [
{
"name": "arrow",
"origin": [8, 8, 8],
"color": 0,
"children": []
},
{
"name": "arrow",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2, 3, 4, 5]
},
6
]
}
]
}

View File

@@ -0,0 +1,6 @@
{
"parent": "tfmg:block/aluminum_flywheel/flywheel",
"loader": "forge:obj",
"flip-v": true,
"model": "create:models/block/flywheel/flywheel_shaftless.obj"
}

View File

@@ -0,0 +1,10 @@
{
"parent": "block/block",
"ambientocclusion": false,
"textures": {
"0": "tfmg:block/aluminum_flywheel",
"1": "create:block/axis",
"2": "create:block/axis_top",
"particle": "tfmg:block/aluminum_flywheel"
}
}

View File

@@ -0,0 +1,18 @@
{
"parent": "tfmg:block/aluminum_flywheel/flywheel",
"loader": "forge:obj",
"flip-v": true,
"model": "create:models/block/flywheel/flywheel.obj",
"display": {
"gui": {
"rotation": [ 30, 225, 0 ],
"translation": [ 0, 0, 0],
"scale":[ 0.4, 0.4, 0.4 ]
},
"fixed": {
"rotation": [ 90, 0, 0 ],
"translation": [ 0, 0, 0],
"scale":[ 0.4, 0.4, 0.4 ]
}
}
}

View File

@@ -0,0 +1,146 @@
{
"credit": "Made with Blockbench",
"parent": "create:block/block",
"textures": {
"2": "create:block/pipes",
"4": "create:block/pump",
"particle": "create:block/pump"
},
"elements": [
{
"name": "middle",
"from": [4, 4, 4],
"to": [12, 12, 12],
"rotation": {"angle": 0, "axis": "z", "origin": [8.33333, 8.5, 8]},
"faces": {
"north": {"uv": [0, 6.5, 4, 2.5], "rotation": 90, "texture": "#2"},
"east": {"uv": [0, 6.5, 4, 2.5], "rotation": 90, "texture": "#2"},
"south": {"uv": [0, 6.5, 4, 2.5], "rotation": 90, "texture": "#2"},
"west": {"uv": [0, 6.5, 4, 2.5], "rotation": 90, "texture": "#2"},
"up": {"uv": [0, 6.5, 4, 2.5], "rotation": 90, "texture": "#2"},
"down": {"uv": [0, 6.5, 4, 2.5], "rotation": 90, "texture": "#2"}
}
},
{
"name": "back",
"from": [2, 0, 2],
"to": [14, 5, 14],
"rotation": {"angle": 0, "axis": "z", "origin": [8.33333, 8.5, 8]},
"faces": {
"north": {"uv": [13.5, 2, 16, 8], "rotation": 270, "texture": "#2"},
"east": {"uv": [13.5, 2, 16, 8], "rotation": 270, "texture": "#2"},
"south": {"uv": [13.5, 2, 16, 8], "rotation": 270, "texture": "#2"},
"west": {"uv": [13.5, 2, 16, 8], "rotation": 270, "texture": "#2"},
"up": {"uv": [0, 0, 12, 12], "rotation": 180, "texture": "#4"},
"down": {"uv": [0, 0, 12, 12], "texture": "#4"}
}
},
{
"name": "front",
"from": [3, 11, 3],
"to": [13, 16, 13],
"rotation": {"angle": 0, "axis": "z", "origin": [8.33333, 8.5, 8]},
"faces": {
"north": {"uv": [10.5, 2.5, 13, 7.5], "rotation": 90, "texture": "#2"},
"east": {"uv": [10.5, 2.5, 13, 7.5], "rotation": 90, "texture": "#2"},
"south": {"uv": [10.5, 2.5, 13, 7.5], "rotation": 90, "texture": "#2"},
"west": {"uv": [10.5, 2.5, 13, 7.5], "rotation": 90, "texture": "#2"},
"up": {"uv": [11, 11, 16, 16], "texture": "#2"},
"down": {"uv": [6, 11, 11, 16], "texture": "#2"}
}
},
{
"from": [5.85355, 13.25, 1.75],
"to": [9.85355, 15.25, 13.75],
"rotation": {"angle": 45, "axis": "z", "origin": [8.35355, 13.25, 7.75]},
"faces": {
"north": {"uv": [16, 0, 12, 2], "texture": "#4"},
"east": {"uv": [15, 0, 16, 2], "texture": "#4"},
"south": {"uv": [12, 0, 16, 2], "texture": "#4"},
"west": {"uv": [12, 0, 13, 2], "texture": "#4"},
"up": {"uv": [12, 0, 16, 1], "texture": "#4"},
"down": {"uv": [12, 1, 16, 2], "texture": "#4"}
}
},
{
"from": [7.85355, 11.25, 1.75],
"to": [9.85355, 13.25, 13.75],
"rotation": {"angle": 45, "axis": "z", "origin": [8.35355, 13.25, 7.75]},
"faces": {
"north": {"uv": [16, 2, 14, 4], "texture": "#4"},
"east": {"uv": [15, 2, 16, 4], "texture": "#4"},
"south": {"uv": [14, 2, 16, 4], "texture": "#4"},
"west": {"uv": [14, 2, 15, 4], "texture": "#4"},
"down": {"uv": [14, 3, 16, 4], "texture": "#4"}
}
},
{
"from": [2.35355, 10.75, 7.75],
"to": [14.35355, 12.75, 9.75],
"rotation": {"angle": -45, "axis": "x", "origin": [8.35355, 13.25, 7.75]},
"faces": {
"north": {"uv": [14, 2, 15, 4], "texture": "#4"},
"east": {"uv": [16, 2, 14, 4], "texture": "#4"},
"south": {"uv": [15, 2, 16, 4], "texture": "#4"},
"west": {"uv": [14, 2, 16, 4], "texture": "#4"},
"down": {"uv": [14, 3, 16, 4], "rotation": 270, "texture": "#4"}
}
},
{
"from": [2.35355, 12.75, 5.75],
"to": [14.35355, 14.75, 9.75],
"rotation": {"angle": -45, "axis": "x", "origin": [8.35355, 13.25, 7.75]},
"faces": {
"north": {"uv": [12, 0, 13, 2], "texture": "#4"},
"east": {"uv": [16, 0, 12, 2], "texture": "#4"},
"south": {"uv": [15, 0, 16, 2], "texture": "#4"},
"west": {"uv": [12, 0, 16, 2], "texture": "#4"},
"up": {"uv": [12, 0, 16, 1], "rotation": 90, "texture": "#4"},
"down": {"uv": [12, 1, 16, 2], "rotation": 270, "texture": "#4"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, 45, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, 225, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 3, 0],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 135, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "pump",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2]
},
3,
4,
5,
6
]
}

View File

@@ -0,0 +1,123 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"5": "create:block/millstone",
"particle": "create:block/palettes/stone_types/cut/andesite_cut"
},
"elements": [
{
"name": "Gear6",
"from": [6.5, -1, 5],
"to": [9.5, 17, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6.5]},
"faces": {
"north": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"},
"east": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"},
"south": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"},
"west": {"uv": [0, 10, 9, 13], "rotation": 90, "texture": "#5"},
"up": {"uv": [9, 10, 10.5, 13], "rotation": 180, "texture": "#5"},
"down": {"uv": [9, 10, 10.5, 13], "texture": "#5"}
}
},
{
"name": "Gear7",
"from": [6.5, -1, 5],
"to": [9.5, 17, 11],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 6.5]},
"faces": {
"north": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"},
"east": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"},
"south": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"},
"west": {"uv": [0, 10, 9, 13], "rotation": 90, "texture": "#5"},
"up": {"uv": [9, 10, 10.5, 13], "rotation": 180, "texture": "#5"},
"down": {"uv": [9, 10, 10.5, 13], "texture": "#5"}
}
},
{
"name": "Gear8",
"from": [-1, 6.5, 5],
"to": [17, 9.5, 11],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 6.5]},
"faces": {
"north": {"uv": [0, 8.5, 9, 10], "texture": "#5"},
"east": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"},
"south": {"uv": [0, 8.5, 9, 10], "texture": "#5"},
"west": {"uv": [9, 10, 10.5, 13], "rotation": 90, "texture": "#5"},
"up": {"uv": [0, 10, 9, 13], "rotation": 180, "texture": "#5"},
"down": {"uv": [0, 10, 9, 13], "texture": "#5"}
}
},
{
"name": "Gear8",
"from": [-1, 6.5, 5],
"to": [17, 9.5, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6.5]},
"faces": {
"north": {"uv": [0, 8.5, 9, 10], "texture": "#5"},
"east": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"},
"south": {"uv": [0, 8.5, 9, 10], "texture": "#5"},
"west": {"uv": [9, 10, 10.5, 13], "rotation": 90, "texture": "#5"},
"up": {"uv": [0, 10, 9, 13], "rotation": 180, "texture": "#5"},
"down": {"uv": [0, 10, 9, 13], "texture": "#5"}
}
},
{
"name": "GearCaseInner",
"from": [2, 2, 5.5],
"to": [14, 14, 10.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]},
"faces": {
"north": {"uv": [0, 0, 6, 6], "rotation": 180, "texture": "#5"},
"east": {"uv": [0, 6, 6, 8.5], "rotation": 270, "texture": "#5"},
"south": {"uv": [0, 0, 6, 6], "texture": "#5"},
"west": {"uv": [0, 6, 6, 8.5], "rotation": 90, "texture": "#5"},
"up": {"uv": [0, 6, 6, 8.5], "rotation": 180, "texture": "#5"},
"down": {"uv": [0, 6, 6, 8.5], "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": [
{
"name": "cogwheel",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2, 3, 4]
}
]
}

View File

@@ -0,0 +1,225 @@
{
"credit": "Made with Blockbench",
"parent": "create:block/block",
"textures": {
"2": "create:block/pipes",
"4": "create:block/pump",
"5": "create:block/millstone",
"particle": "create:block/pump"
},
"elements": [
{
"name": "Gear5",
"from": [5.5, 7, -1],
"to": [11.5, 10, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8.5, 8]},
"faces": {
"north": {"uv": [9, 10, 10.5, 13], "rotation": 90, "texture": "#5"},
"east": {"uv": [0, 8.5, 9, 10], "texture": "#5"},
"south": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"},
"west": {"uv": [0, 8.5, 9, 10], "texture": "#5"},
"up": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"},
"down": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}
}
},
{
"name": "Gear6",
"from": [5.5, 7, -1],
"to": [11.5, 10, 17],
"rotation": {"angle": -45, "axis": "x", "origin": [8.5, 8.5, 8]},
"faces": {
"north": {"uv": [9, 10, 10.5, 13], "rotation": 90, "texture": "#5"},
"east": {"uv": [0, 8.5, 9, 10], "texture": "#5"},
"south": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"},
"west": {"uv": [0, 8.5, 9, 10], "texture": "#5"},
"up": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"},
"down": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}
}
},
{
"name": "Gear7",
"from": [5.5, -0.5, 6.5],
"to": [11.5, 17.5, 9.5],
"rotation": {"angle": -45, "axis": "x", "origin": [8.5, 8.5, 8]},
"faces": {
"north": {"uv": [0, 10, 9, 13], "rotation": 90, "texture": "#5"},
"east": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"},
"south": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"},
"west": {"uv": [0, 8.5, 9, 10], "rotation": 270, "texture": "#5"},
"up": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"},
"down": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}
}
},
{
"name": "Gear7",
"from": [5.5, -0.5, 6.5],
"to": [11.5, 17.5, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8.5, 8]},
"faces": {
"north": {"uv": [0, 10, 9, 13], "rotation": 90, "texture": "#5"},
"east": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"},
"south": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"},
"west": {"uv": [0, 8.5, 9, 10], "rotation": 270, "texture": "#5"},
"up": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"},
"down": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}
}
},
{
"name": "GearCaseInner",
"from": [6, 2.5, 2],
"to": [11, 14.5, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8.5, 8]},
"faces": {
"north": {"uv": [0, 6, 6, 8.5], "rotation": 90, "texture": "#5"},
"east": {"uv": [0, 0, 6, 6], "rotation": 270, "texture": "#5"},
"south": {"uv": [0, 6, 6, 8.5], "rotation": 270, "texture": "#5"},
"west": {"uv": [0, 0, 6, 6], "rotation": 270, "texture": "#5"},
"up": {"uv": [0, 6, 6, 8.5], "rotation": 270, "texture": "#5"},
"down": {"uv": [0, 6, 6, 8.5], "rotation": 270, "texture": "#5"}
}
},
{
"name": "middle",
"from": [4.5, 4.5, 4],
"to": [12.5, 12.5, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8.5, 8]},
"faces": {
"north": {"uv": [11.5, 15.5, 15.5, 11.5], "texture": "#2"},
"east": {"uv": [11.5, 15.5, 15.5, 11.5], "texture": "#2"},
"south": {"uv": [11.5, 15.5, 15.5, 11.5], "texture": "#2"},
"west": {"uv": [11.5, 15.5, 15.5, 11.5], "texture": "#2"},
"up": {"uv": [11.5, 15.5, 15.5, 11.5], "texture": "#2"},
"down": {"uv": [11.5, 15.5, 15.5, 11.5], "texture": "#2"}
}
},
{
"name": "front",
"from": [0.5, 3.5, 3],
"to": [5.5, 13.5, 13],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10.5, 2.5, 13, 7.5], "rotation": 180, "texture": "#2"},
"east": {"uv": [6, 11, 11, 16], "rotation": 270, "texture": "#2"},
"south": {"uv": [10.5, 2.5, 13, 7.5], "texture": "#2"},
"west": {"uv": [11, 11, 16, 16], "rotation": 270, "texture": "#2"},
"up": {"uv": [10.5, 2.5, 13, 7.5], "texture": "#2"},
"down": {"uv": [10.5, 2.5, 13, 7.5], "texture": "#2"}
}
},
{
"name": "back",
"from": [11.5, 2.5, 2],
"to": [16.5, 14.5, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8.5, 11.5, 8]},
"faces": {
"north": {"uv": [13.5, 2, 16, 8], "texture": "#2"},
"east": {"uv": [0, 0, 12, 12], "rotation": 270, "texture": "#4"},
"south": {"uv": [13.5, 2, 16, 8], "rotation": 180, "texture": "#2"},
"west": {"uv": [0, 0, 12, 12], "rotation": 90, "texture": "#4"},
"up": {"uv": [13.5, 2, 16, 8], "rotation": 180, "texture": "#2"},
"down": {"uv": [13.5, 2, 16, 8], "rotation": 180, "texture": "#2"}
}
},
{
"from": [1.70355, 6.15, 2],
"to": [3.70355, 10.15, 14],
"rotation": {"angle": 45, "axis": "z", "origin": [3.35355, 8.25, 7.75]},
"faces": {
"north": {"uv": [16, 0, 12, 2], "rotation": 90, "texture": "#4"},
"east": {"uv": [12, 1, 16, 2], "rotation": 270, "texture": "#4"},
"south": {"uv": [12, 0, 16, 2], "rotation": 270, "texture": "#4"},
"west": {"uv": [12, 0, 16, 1], "rotation": 270, "texture": "#4"},
"up": {"uv": [15, 0, 16, 2], "rotation": 270, "texture": "#4"},
"down": {"uv": [12, 0, 13, 2], "rotation": 270, "texture": "#4"}
}
},
{
"from": [3.70355, 8.15, 2],
"to": [5.70355, 10.15, 14],
"rotation": {"angle": 45, "axis": "z", "origin": [3.35355, 8.25, 7.75]},
"faces": {
"north": {"uv": [16, 2, 14, 4], "rotation": 90, "texture": "#4"},
"east": {"uv": [14, 3, 16, 4], "rotation": 270, "texture": "#4"},
"south": {"uv": [14, 2, 16, 4], "rotation": 270, "texture": "#4"},
"up": {"uv": [15, 2, 16, 4], "rotation": 270, "texture": "#4"},
"down": {"uv": [14, 2, 15, 4], "rotation": 270, "texture": "#4"}
}
},
{
"from": [3.85355, 2.5, 7.75],
"to": [5.85355, 14.5, 9.75],
"rotation": {"angle": -45, "axis": "y", "origin": [3.35355, 8.25, 7.75]},
"faces": {
"north": {"uv": [14, 2, 15, 4], "rotation": 90, "texture": "#4"},
"east": {"uv": [14, 3, 16, 4], "rotation": 180, "texture": "#4"},
"south": {"uv": [15, 2, 16, 4], "rotation": 270, "texture": "#4"},
"up": {"uv": [16, 2, 14, 4], "rotation": 270, "texture": "#4"},
"down": {"uv": [14, 2, 16, 4], "rotation": 270, "texture": "#4"}
}
},
{
"from": [1.85355, 2.5, 5.75],
"to": [3.85355, 14.5, 9.75],
"rotation": {"angle": -45, "axis": "y", "origin": [3.35355, 8.25, 7.75]},
"faces": {
"north": {"uv": [12, 0, 13, 2], "rotation": 90, "texture": "#4"},
"east": {"uv": [12, 1, 16, 2], "rotation": 180, "texture": "#4"},
"south": {"uv": [15, 0, 16, 2], "rotation": 270, "texture": "#4"},
"west": {"uv": [12, 0, 16, 1], "texture": "#4"},
"up": {"uv": [16, 0, 12, 2], "rotation": 270, "texture": "#4"},
"down": {"uv": [12, 0, 16, 2], "rotation": 270, "texture": "#4"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, 45, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, 225, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 3, 0],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 135, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "cogwheel",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2, 3, 4]
},
{
"name": "pump",
"origin": [8, 8, 8],
"color": 0,
"children": [5, 6, 7]
},
{
"name": "Arrow",
"origin": [8, 8, 8],
"color": 0,
"children": [8, 9, 10, 11]
}
]
}

View File

@@ -0,0 +1,21 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [3, 3, 3],
"to": [13, 13, 13],
"faces": {
"north": {"uv": [1, 11, 6, 16], "texture": "#0"},
"east": {"uv": [1, 11, 6, 16], "texture": "#0"},
"south": {"uv": [1, 11, 6, 16], "texture": "#0"},
"west": {"uv": [1, 11, 6, 16], "texture": "#0"},
"up": {"uv": [1, 11, 6, 16], "texture": "#0"},
"down": {"uv": [1, 11, 6, 16], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,21 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [4, 0, 4],
"to": [12, 4, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, -16]},
"faces": {
"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

@@ -0,0 +1,21 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [12, 4, 4],
"to": [16, 12, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, -16]},
"faces": {
"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

@@ -0,0 +1,21 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [4, 4, 0],
"to": [12, 12, 4],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 0]},
"faces": {
"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

@@ -0,0 +1,21 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [4, 4, 12],
"to": [12, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 0]},
"faces": {
"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

@@ -0,0 +1,21 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [4, 12, 4],
"to": [12, 16, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, -16]},
"faces": {
"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

@@ -0,0 +1,21 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [0, 4, 4],
"to": [4, 12, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, -16]},
"faces": {
"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

@@ -0,0 +1,17 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "tfmg:block/aluminum_pipes_connected",
"particle": "tfmg:block/aluminum_pipes_connected"
},
"elements": [
{
"from": [4, 4, 4],
"to": [12, 12, 12],
"faces": {
"east": {"uv": [16, 8, 12, 12], "rotation": 180, "texture": "#0"},
"west": {"uv": [16, 8, 12, 12], "rotation": 180, "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,17 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "tfmg:block/aluminum_pipes_connected",
"particle": "tfmg:block/aluminum_pipes_connected"
},
"elements": [
{
"from": [4, 4, 4],
"to": [12, 12, 12],
"faces": {
"up": {"uv": [16, 8, 12, 12], "rotation": 180, "texture": "#0"},
"down": {"uv": [16, 8, 12, 12], "rotation": 180, "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,17 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "tfmg:block/aluminum_pipes_connected",
"particle": "tfmg:block/aluminum_pipes_connected"
},
"elements": [
{
"from": [4, 4, 4],
"to": [12, 12, 12],
"faces": {
"north": {"uv": [12, 8, 16, 12], "rotation": 180, "texture": "#0"},
"south": {"uv": [12, 8, 16, 12], "rotation": 180, "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,35 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [4.95, -3.95, 4.95],
"to": [11.05, -0.95, 11.05],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [12, 8, 13.5, 11], "rotation": 90, "texture": "#0"},
"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", "cullface": "down"}
}
},
{
"from": [2.95, -0.95, 2.95],
"to": [13.05, 2, 13.05],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [9, 9.5, 4, 8], "texture": "#0"},
"east": {"uv": [4, 8, 9, 9.5], "rotation": 180, "texture": "#0"},
"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", "cullface": "down"}
}
}
]
}

View File

@@ -0,0 +1,35 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"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", "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"}
}
},
{
"from": [14, 2.95, 2.95],
"to": [16.95, 13.05, 13.05],
"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", "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"},
"down": {"uv": [9, 9.5, 4, 8], "rotation": 270, "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,35 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"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", "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"},
"up": {"uv": [4, 8, 9, 9.5], "texture": "#0"},
"down": {"uv": [9, 9.5, 4, 8], "texture": "#0"}
}
},
{
"from": [4.95, 4.95, -3.95],
"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", "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"},
"down": {"uv": [12, 8, 13.5, 11], "rotation": 90, "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,35 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"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", "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"}
}
},
{
"from": [2.95, 2.95, 14],
"to": [13.05, 13.05, 16.95],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 34, 8]},
"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", "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

@@ -0,0 +1,35 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [2.95, 14, 2.95],
"to": [13.05, 16.95, 13.05],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [9, 8, 4, 9.5], "texture": "#0"},
"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", "cullface": "up"},
"down": {"uv": [11, 11, 6, 16], "rotation": 90, "texture": "#0"}
}
},
{
"from": [4.95, 16.95, 4.95],
"to": [11.05, 19.95, 11.05],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [13.5, 8, 12, 11], "rotation": 90, "texture": "#0"},
"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", "cullface": "up"}
}
}
]
}

View File

@@ -0,0 +1,35 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [-0.95, 2.95, 2.95],
"to": [2, 13.05, 13.05],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"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", "cullface": "west"},
"up": {"uv": [4, 9.5, 9, 8], "rotation": 90, "texture": "#0"},
"down": {"uv": [9, 8, 4, 9.5], "rotation": 270, "texture": "#0"}
}
},
{
"from": [-3.95, 4.95, 4.95],
"to": [-0.95, 11.05, 11.05],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"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", "cullface": "west"},
"up": {"uv": [13.5, 8, 12, 11], "texture": "#0"},
"down": {"uv": [13.5, 8, 12, 11], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,78 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"1": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [4, 4, 4],
"to": [12, 12, 12],
"faces": {
"east": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#1"},
"west": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#1"},
"up": {"uv": [0, 0, 4, 4], "rotation": 180, "texture": "#1"},
"down": {"uv": [0, 0, 4, 4], "rotation": 180, "texture": "#1"}
}
},
{
"from": [4, 4, 12],
"to": [12, 12, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 0, 0], "texture": "#1"},
"east": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#1"},
"south": {"uv": [0, 0, 0, 0], "texture": "#1"},
"west": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#1"},
"up": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#1"},
"down": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#1"}
}
},
{
"from": [4, 4, 2],
"to": [12, 12, 4],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 0, 0], "texture": "#1"},
"east": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#1"},
"south": {"uv": [0, 0, 0, 0], "texture": "#1"},
"west": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#1"},
"up": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#1"},
"down": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#1"}
}
},
{
"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": "#1"},
"east": {"uv": [10.5, 11, 11.5, 16], "texture": "#1"},
"south": {"uv": [6, 11, 11, 16], "texture": "#1"},
"west": {"uv": [11.5, 16, 10.5, 11], "texture": "#1"},
"up": {"uv": [10.5, 11, 11.5, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [11.5, 16, 10.5, 11], "rotation": 270, "texture": "#1"}
}
},
{
"from": [3, 3, 14],
"to": [13, 13, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 28, 8]},
"faces": {
"north": {"uv": [6, 11, 11, 16], "texture": "#1"},
"east": {"uv": [11.5, 16, 10.5, 11], "texture": "#1"},
"south": {"uv": [11, 11, 16, 16], "texture": "#1"},
"west": {"uv": [10.5, 11, 11.5, 16], "texture": "#1"},
"up": {"uv": [11.5, 16, 10.5, 11], "rotation": 270, "texture": "#1"},
"down": {"uv": [10.5, 11, 11.5, 16], "rotation": 270, "texture": "#1"}
}
}
],
"display": {
"fixed": {
"rotation": [0, 90, 0],
"scale": [0.5, 0.5, 0.5]
}
}
}

View File

@@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [3, 0, 3],
"to": [13, 2, 13],
"faces": {
"north": {"uv": [10.5, 11, 11.5, 16], "rotation": 90, "texture": "#0"},
"east": {"uv": [10.5, 11, 11.5, 16], "rotation": 90, "texture": "#0"},
"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", "cullface": "down"}
}
}
]
}

View File

@@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"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", "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"},
"down": {"uv": [10.5, 11, 11.5, 16], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,23 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"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", "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"},
"up": {"uv": [10.5, 11, 11.5, 16], "rotation": 270, "texture": "#0"},
"down": {"uv": [11.5, 16, 10.5, 11], "rotation": 270, "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,23 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [3, 3, 14],
"to": [13, 13, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 28, 8]},
"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", "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

@@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [3, 14, 3],
"to": [13, 16, 13],
"faces": {
"north": {"uv": [11.5, 16, 10.5, 11], "rotation": 90, "texture": "#0"},
"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", "cullface": "up"},
"down": {"uv": [6, 11, 11, 16], "rotation": 270, "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_pipes"
},
"elements": [
{
"from": [0, 3, 3],
"to": [2, 13, 13],
"faces": {
"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", "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": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_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": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_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": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_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": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_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": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_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": "tfmg:block/aluminum_pipes",
"particle": "tfmg:block/aluminum_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"}
}
}
]
}

View File

@@ -0,0 +1,85 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/glass_aluminum_pipe",
"particle": "tfmg:block/aluminum_block"
},
"elements": [
{
"name": "Outer",
"from": [4, 0, 4],
"to": [12, 16, 12],
"faces": {
"north": {"uv": [0, 16, 16, 8], "rotation": 90, "texture": "#0"},
"east": {"uv": [0, 16, 16, 8], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"}
}
},
{
"name": "Inner",
"from": [4, 0, 11.9],
"to": [12, 16, 11.9],
"faces": {
"north": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"}
}
},
{
"name": "Inner",
"from": [4.1, 0, 4],
"to": [4.1, 16, 12],
"faces": {
"east": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"}
}
},
{
"name": "Inner",
"from": [4, 0, 4.1],
"to": [12, 16, 4.1],
"faces": {
"south": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"}
}
},
{
"name": "Inner",
"from": [11.9, 0, 4],
"to": [11.9, 16, 12],
"faces": {
"west": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"}
}
},
{
"from": [4, 0, 4],
"to": [6, 16, 6],
"faces": {
"east": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 8, 16, 10], "rotation": 90, "texture": "#0"}
}
},
{
"from": [4, 0, 10],
"to": [6, 16, 12],
"faces": {
"north": {"uv": [0, 10, 16, 8], "rotation": 90, "texture": "#0"},
"east": {"uv": [0, 16, 16, 14], "rotation": 90, "texture": "#0"}
}
},
{
"from": [10, 0, 4],
"to": [12, 16, 6],
"faces": {
"south": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 8, 16, 10], "rotation": 90, "texture": "#0"}
}
},
{
"from": [10, 0, 10],
"to": [12, 16, 12],
"faces": {
"north": {"uv": [0, 16, 16, 14], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 10, 16, 8], "rotation": 90, "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,58 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/glass_aluminum_pipe",
"particle": "#0"
},
"elements": [
{
"name": "Outer",
"from": [4, 0, 4],
"to": [12, 16, 12],
"shade": false,
"faces": {
"north": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"},
"east": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"}
}
},
{
"name": "Inner",
"from": [4, 0, 11.5],
"to": [12, 16, 11.5],
"shade": false,
"faces": {
"north": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"}
}
},
{
"name": "Inner",
"from": [4, 0, 4.5],
"to": [12, 16, 4.5],
"shade": false,
"faces": {
"south": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"}
}
},
{
"name": "Inner",
"from": [4.5, 0, 4],
"to": [4.5, 16, 12],
"shade": false,
"faces": {
"east": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"}
}
},
{
"name": "Inner",
"from": [11.5, 0, 4],
"to": [11.5, 16, 12],
"shade": false,
"faces": {
"west": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"}
}
}
]
}

Some files were not shown because too many files have changed in this diff Show More