pipes,
trusses and random fixes
This commit is contained in:
@@ -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"),
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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() {}
|
||||
}
|
||||
|
||||
@@ -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() {}
|
||||
}
|
||||
|
||||
@@ -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"));
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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
|
||||
]
|
||||
}
|
||||
@@ -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
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "tfmg:block/aluminum_flywheel/flywheel",
|
||||
"loader": "forge:obj",
|
||||
"flip-v": true,
|
||||
"model": "create:models/block/flywheel/flywheel_shaftless.obj"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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 ]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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
Reference in New Issue
Block a user