调整renderType

This commit is contained in:
17146 2024-08-16 01:35:39 +08:00
parent 213994351f
commit 2ac0b4eeb3

View file

@ -36,19 +36,18 @@ public class M4ItemRenderer extends GeoItemRenderer<M4Item> {
}
private static final float SCALE_RECIPROCAL = 1.0f / 16.0f;
protected boolean renderArms = false;
protected MultiBufferSource currentBuffer;
protected RenderType renderType;
public ItemDisplayContext transformType;
protected M4Item animatable;
private final Set<String> hiddenBones = new HashSet<>();
private final Set<String> suppressedBones = new HashSet<>();
@Override
public void renderByItem(ItemStack stack, ItemDisplayContext transformType, PoseStack matrixStack, MultiBufferSource bufferIn, int combinedLightIn, int p_239207_6_) {
this.transformType = transformType;
if (this.animatable != null)
if (this.animatable != null) {
this.animatable.getTransformType(transformType);
}
super.renderByItem(stack, transformType, matrixStack, bufferIn, combinedLightIn, p_239207_6_);
}
@ -59,9 +58,6 @@ public class M4ItemRenderer extends GeoItemRenderer<M4Item> {
this.renderType = type;
this.animatable = animatable;
super.actuallyRender(matrixStackIn, animatable, model, type, renderTypeBuffer, vertexBuilder, isRenderer, partialTicks, packedLightIn, packedOverlayIn, red, green, blue, alpha);
if (this.renderArms) {
this.renderArms = false;
}
}
@Override
@ -76,11 +72,18 @@ public class M4ItemRenderer extends GeoItemRenderer<M4Item> {
} else {
bone.setHidden(this.hiddenBones.contains(name));
}
if (this.transformType.firstPerson() && renderingArms) {
AbstractClientPlayer player = mc.player;
if (player == null) {
return;
}
float armsAlpha = player.isInvisible() ? 0.15f : 1.0f;
PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(player);
PlayerModel<AbstractClientPlayer> model = playerRenderer.getModel();
stack.pushPose();
RenderUtils.translateMatrixToBone(stack, bone);
RenderUtils.translateToPivotPoint(stack, bone);
@ -90,16 +93,18 @@ public class M4ItemRenderer extends GeoItemRenderer<M4Item> {
ResourceLocation loc = player.getSkinTextureLocation();
VertexConsumer armBuilder = this.currentBuffer.getBuffer(RenderType.entitySolid(loc));
VertexConsumer sleeveBuilder = this.currentBuffer.getBuffer(RenderType.entityTranslucent(loc));
if (name.equals("Lefthand")) {
stack.translate(-1.0f * SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
AnimUtils.renderPartOverBone(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, armsAlpha);
AnimUtils.renderPartOverBone(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, armsAlpha);
} else if (name.equals("Righthand")) {
stack.translate(1.0f * SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
} else {
stack.translate(SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
AnimUtils.renderPartOverBone(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, armsAlpha);
AnimUtils.renderPartOverBone(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, armsAlpha);
}
this.currentBuffer.getBuffer(RenderType.entityTranslucent(getTextureLocation(this.animatable)));
this.currentBuffer.getBuffer(this.renderType);
stack.popPose();
}
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, red, green, blue, alpha);