181 lines
6.4 KiB
Java
181 lines
6.4 KiB
Java
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.old.crank;
|
|
|
|
|
|
|
|
import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
|
import com.jozufozu.flywheel.util.transform.TransformStack;
|
|
import com.mojang.blaze3d.vertex.PoseStack;
|
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
|
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
|
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.core.Direction;
|
|
import net.minecraft.world.level.block.state.BlockState;
|
|
|
|
import static net.minecraft.world.level.block.HorizontalDirectionalBlock.FACING;
|
|
|
|
public class PumpjackCrankRenderer extends KineticBlockEntityRenderer {
|
|
|
|
public PumpjackCrankRenderer(BlockEntityRendererProvider.Context context) {
|
|
super(context);
|
|
}
|
|
|
|
@Override
|
|
protected void renderSafe(KineticBlockEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer,
|
|
int light, int overlay) {
|
|
renderBlock((PumpjackCrankBlockEntity) te, ms, light,buffer);
|
|
|
|
|
|
|
|
|
|
|
|
// if (Backend.canUseInstancing(te.getLevel()))
|
|
// return;
|
|
|
|
BlockState blockState = te.getBlockState();
|
|
PumpjackCrankBlockEntity wte = (PumpjackCrankBlockEntity) te;
|
|
|
|
|
|
|
|
float angle = wte.angle * partialTicks;
|
|
|
|
VertexConsumer vb = buffer.getBuffer(RenderType.solid());
|
|
|
|
renderCrank(te, ms, light, blockState, angle, vb);
|
|
}
|
|
|
|
private void renderCrank(KineticBlockEntity te, PoseStack ms, int light, BlockState blockState, float angle,
|
|
VertexConsumer vb) {
|
|
|
|
|
|
SuperByteBuffer hammer = CachedBufferer.block(blockState);
|
|
//kineticRotationTransform(hammer, te, getRotationAxisOf(te), AngleHelper.rad(angle), light);
|
|
hammer.renderInto(ms, vb);
|
|
}
|
|
private void renderBlock(PumpjackCrankBlockEntity be, PoseStack ms, int light,
|
|
MultiBufferSource buffer) {
|
|
|
|
BlockState blockState = be.getBlockState();
|
|
VertexConsumer vb = buffer.getBuffer(RenderType.solid());
|
|
ms.pushPose();
|
|
TransformStack msr = TransformStack.cast(ms);
|
|
msr.translate(1 / 2f, 0.5, 1 / 2f);
|
|
|
|
float dialPivot = 5.75f / 16;
|
|
|
|
SuperByteBuffer crank = CachedBufferer.partialFacing(TFMGPartialModels.PUMPJACK_CRANK, blockState,blockState.getValue(HorizontalDirectionalBlock.FACING));
|
|
CachedBufferer.partialFacing(TFMGPartialModels.PUMPJACK_CRANK_BLOCK, blockState,blockState.getValue(HorizontalDirectionalBlock.FACING))
|
|
.translate(-0.5, -0.5, -0.5)
|
|
.light(light)
|
|
.renderInto(ms,vb);
|
|
|
|
|
|
crank
|
|
.translate(-0.5, -0.5, -0.5)
|
|
.centre()
|
|
.translate(0, -.25, 0)
|
|
.rotate(be.getBlockState().getValue(HorizontalDirectionalBlock.FACING).getCounterClockWise(), -AngleHelper.rad(be.angle))
|
|
.translate(0, .25, 0)
|
|
.unCentre()
|
|
|
|
.light(light);
|
|
|
|
crank.renderInto(ms,vb);
|
|
|
|
|
|
|
|
if (be.direction == Direction.NORTH){
|
|
|
|
|
|
if(be.isValid()) {
|
|
|
|
CachedBufferer.partial(TFMGPartialModels.PUMPJACK_CONNECTOR, blockState)
|
|
|
|
.translate(-0.5, -0.75, -0.5)
|
|
.centre()
|
|
.rotate(Direction.WEST, -AngleHelper.rad(be.angle))
|
|
.unCentre()
|
|
.translateY(0.4)
|
|
.centre()
|
|
.rotate(Direction.WEST, AngleHelper.rad(be.angle))
|
|
.unCentre()
|
|
.light(light)
|
|
.translateY(0.4)
|
|
.renderInto(ms, vb);
|
|
}
|
|
}
|
|
if(be.direction == Direction.EAST) {
|
|
|
|
if(be.isValid()) {
|
|
|
|
CachedBufferer.partial(TFMGPartialModels.PUMPJACK_CONNECTOR, blockState)
|
|
.rotateY(270)
|
|
.translate(-0.5, -0.75, -0.5)
|
|
.centre()
|
|
.rotate(Direction.WEST, -AngleHelper.rad(be.angle))
|
|
.unCentre()
|
|
.translateY(0.4)
|
|
.centre()
|
|
.rotate(Direction.WEST, AngleHelper.rad(be.angle))
|
|
.unCentre()
|
|
.light(light)
|
|
.translateY(0.4)
|
|
.renderInto(ms, vb);
|
|
}
|
|
}
|
|
if(be.direction == Direction.SOUTH) {
|
|
|
|
|
|
if(be.isValid()) {
|
|
|
|
CachedBufferer.partial(TFMGPartialModels.PUMPJACK_CONNECTOR, blockState)
|
|
.rotateY(180)
|
|
.translate(-0.5, -0.75, -0.5)
|
|
.centre()
|
|
.rotate(Direction.WEST, -AngleHelper.rad(be.angle))
|
|
.unCentre()
|
|
.translateY(0.4)
|
|
.centre()
|
|
.rotate(Direction.WEST, AngleHelper.rad(be.angle))
|
|
.unCentre()
|
|
.light(light)
|
|
.translateY(0.4)
|
|
.renderInto(ms, vb);
|
|
}
|
|
}
|
|
if(be.direction == Direction.WEST) {
|
|
|
|
if(be.isValid()) {
|
|
|
|
CachedBufferer.partial(TFMGPartialModels.PUMPJACK_CONNECTOR, blockState)
|
|
.rotateY(90)
|
|
.translate(-0.5, -0.75, -0.5)
|
|
.centre()
|
|
.rotate(Direction.WEST, -AngleHelper.rad(be.angle))
|
|
.unCentre()
|
|
.translateY(0.4)
|
|
.centre()
|
|
.rotate(Direction.WEST, AngleHelper.rad(be.angle))
|
|
.unCentre()
|
|
.light(light)
|
|
.translateY(0.4)
|
|
.renderInto(ms, vb);
|
|
}
|
|
}
|
|
|
|
|
|
ms.popPose();
|
|
}
|
|
|
|
@Override
|
|
protected BlockState getRenderedBlockState(KineticBlockEntity te) {
|
|
return KineticBlockEntityRenderer.shaft(KineticBlockEntityRenderer.getRotationAxisOf(te));
|
|
}
|
|
|
|
}
|