提取渲染手臂方法并修改部分调用
This commit is contained in:
parent
29f421272b
commit
9bd832bf92
6 changed files with 60 additions and 246 deletions
|
@ -1,6 +1,7 @@
|
|||
package com.atsuishio.superbwarfare.client;
|
||||
|
||||
import com.atsuishio.superbwarfare.Mod;
|
||||
import com.atsuishio.superbwarfare.client.renderer.CustomGunRenderer;
|
||||
import com.atsuishio.superbwarfare.client.renderer.ModRenderTypes;
|
||||
import com.atsuishio.superbwarfare.data.gun.GunData;
|
||||
import com.atsuishio.superbwarfare.data.gun.value.AttachmentType;
|
||||
|
@ -131,54 +132,6 @@ public class AnimationHelper {
|
|||
.setNormal(pPose, 0.0F, 1.0F, 0.0F);
|
||||
}
|
||||
|
||||
public static void renderArms(
|
||||
Minecraft mc,
|
||||
LocalPlayer player,
|
||||
ItemDisplayContext transformType,
|
||||
PoseStack stack,
|
||||
String name,
|
||||
GeoBone bone,
|
||||
float SCALE_RECIPROCAL,
|
||||
MultiBufferSource currentBuffer,
|
||||
RenderType renderType,
|
||||
int packedLightIn,
|
||||
boolean useOldLeftHandRender,
|
||||
boolean useOldRightHandRender
|
||||
) {
|
||||
if (transformType.firstPerson()) {
|
||||
PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(player);
|
||||
PlayerModel<AbstractClientPlayer> model = playerRenderer.getModel();
|
||||
stack.pushPose();
|
||||
RenderUtil.translateMatrixToBone(stack, bone);
|
||||
RenderUtil.translateToPivotPoint(stack, bone);
|
||||
RenderUtil.rotateMatrixAroundBone(stack, bone);
|
||||
RenderUtil.scaleMatrixForBone(stack, bone);
|
||||
RenderUtil.translateAwayFromPivotPoint(stack, bone);
|
||||
ResourceLocation loc = player.getSkin().texture();
|
||||
if (name.equals("Lefthand")) {
|
||||
stack.translate(-1.0f * SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
|
||||
if (useOldLeftHandRender) {
|
||||
AnimationHelper.renderPartOverBone(model.leftArm, bone, stack, currentBuffer.getBuffer(RenderType.entitySolid(loc)), packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
AnimationHelper.renderPartOverBone(model.leftSleeve, bone, stack, currentBuffer.getBuffer(RenderType.entityTranslucent(loc)), packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
} else {
|
||||
AnimationHelper.renderPartOverBone2(model.leftArm, bone, stack, currentBuffer.getBuffer(RenderType.entitySolid(loc)), packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
AnimationHelper.renderPartOverBone2(model.leftSleeve, bone, stack, currentBuffer.getBuffer(RenderType.entityTranslucent(loc)), packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
}
|
||||
} else {
|
||||
stack.translate(SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
|
||||
if (useOldRightHandRender) {
|
||||
AnimationHelper.renderPartOverBoneR(model.leftArm, bone, stack, currentBuffer.getBuffer(RenderType.entitySolid(loc)), packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
AnimationHelper.renderPartOverBoneR(model.leftSleeve, bone, stack, currentBuffer.getBuffer(RenderType.entityTranslucent(loc)), packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
} else {
|
||||
AnimationHelper.renderPartOverBone2R(model.leftArm, bone, stack, currentBuffer.getBuffer(RenderType.entitySolid(loc)), packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
AnimationHelper.renderPartOverBone2R(model.leftSleeve, bone, stack, currentBuffer.getBuffer(RenderType.entityTranslucent(loc)), packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
}
|
||||
}
|
||||
currentBuffer.getBuffer(renderType);
|
||||
stack.popPose();
|
||||
}
|
||||
}
|
||||
|
||||
public static void handleZoomCrossHair(MultiBufferSource currentBuffer, RenderType renderType, String boneName, PoseStack stack, GeoBone bone, MultiBufferSource buffer, double x, double y, double z, float size, int r, int g, int b, int a, String name, boolean hasBlackPart) {
|
||||
if (boneName.equals("cross") && ClientEventHandler.zoomPos > 0.8) {
|
||||
stack.pushPose();
|
||||
|
@ -219,4 +172,49 @@ public class AnimationHelper {
|
|||
.setLight(pLightmapUV)
|
||||
.setNormal(pNormal, 0.0F, 1.0F, 0.0F);
|
||||
}
|
||||
|
||||
public static void renderArms(LocalPlayer localPlayer, ItemDisplayContext transformType, PoseStack stack, String name, GeoBone bone,
|
||||
MultiBufferSource currentBuffer, RenderType renderType, int packedLightIn, boolean useOldHandRender) {
|
||||
if (transformType.firstPerson()) {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
|
||||
if (localPlayer == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(localPlayer);
|
||||
PlayerModel<AbstractClientPlayer> model = playerRenderer.getModel();
|
||||
stack.pushPose();
|
||||
RenderUtil.translateMatrixToBone(stack, bone);
|
||||
RenderUtil.translateToPivotPoint(stack, bone);
|
||||
RenderUtil.rotateMatrixAroundBone(stack, bone);
|
||||
RenderUtil.scaleMatrixForBone(stack, bone);
|
||||
RenderUtil.translateAwayFromPivotPoint(stack, bone);
|
||||
ResourceLocation loc = localPlayer.getSkin().texture();
|
||||
VertexConsumer armBuilder = currentBuffer.getBuffer(RenderType.entitySolid(loc));
|
||||
VertexConsumer sleeveBuilder = currentBuffer.getBuffer(RenderType.entityTranslucent(loc));
|
||||
if (name.equals("Lefthand")) {
|
||||
stack.translate(-1.0f * CustomGunRenderer.SCALE_RECIPROCAL, 2.0f * CustomGunRenderer.SCALE_RECIPROCAL, 0.0f);
|
||||
if (useOldHandRender) {
|
||||
AnimationHelper.renderPartOverBone(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
AnimationHelper.renderPartOverBone(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
} else {
|
||||
AnimationHelper.renderPartOverBone2(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
AnimationHelper.renderPartOverBone2(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
}
|
||||
} else {
|
||||
stack.translate(CustomGunRenderer.SCALE_RECIPROCAL, 2.0f * CustomGunRenderer.SCALE_RECIPROCAL, 0.0f);
|
||||
if (useOldHandRender) {
|
||||
AnimationHelper.renderPartOverBone(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
AnimationHelper.renderPartOverBone(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
} else {
|
||||
AnimationHelper.renderPartOverBone2(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
AnimationHelper.renderPartOverBone2(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY);
|
||||
}
|
||||
}
|
||||
|
||||
currentBuffer.getBuffer(renderType);
|
||||
stack.popPose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.client.renderer.gun;
|
|||
import com.atsuishio.superbwarfare.client.AnimationHelper;
|
||||
import com.atsuishio.superbwarfare.client.ItemModelHelper;
|
||||
import com.atsuishio.superbwarfare.client.model.item.AK12ItemModel;
|
||||
import com.atsuishio.superbwarfare.client.renderer.CustomGunRenderer;
|
||||
import com.atsuishio.superbwarfare.data.gun.GunData;
|
||||
import com.atsuishio.superbwarfare.data.gun.value.AttachmentType;
|
||||
import com.atsuishio.superbwarfare.event.ClientEventHandler;
|
||||
|
@ -13,55 +14,15 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
|
|||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemDisplayContext;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
||||
import software.bernie.geckolib.cache.object.GeoBone;
|
||||
import software.bernie.geckolib.renderer.GeoItemRenderer;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class AK12ItemRenderer extends GeoItemRenderer<AK12Item> {
|
||||
public class AK12ItemRenderer extends CustomGunRenderer<AK12Item> {
|
||||
|
||||
public AK12ItemRenderer() {
|
||||
super(new AK12ItemModel());
|
||||
}
|
||||
|
||||
@Override
|
||||
public RenderType getRenderType(AK12Item animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
|
||||
return RenderType.entityTranslucent(getTextureLocation(animatable));
|
||||
}
|
||||
|
||||
private static final float SCALE_RECIPROCAL = 1.0f / 16.0f;
|
||||
protected boolean renderArms = false;
|
||||
protected MultiBufferSource currentBuffer;
|
||||
protected RenderType renderType;
|
||||
public ItemDisplayContext transformType;
|
||||
protected AK12Item animatable;
|
||||
private final Set<String> hiddenBones = 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)
|
||||
this.animatable.getTransformType(transformType);
|
||||
super.renderByItem(stack, transformType, matrixStack, bufferIn, combinedLightIn, p_239207_6_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actuallyRender(PoseStack matrixStackIn, AK12Item animatable, BakedGeoModel model, RenderType type, MultiBufferSource renderTypeBuffer, VertexConsumer vertexBuilder, boolean isRenderer, float partialTicks, int packedLightIn,
|
||||
int packedOverlayIn, int color) {
|
||||
this.currentBuffer = renderTypeBuffer;
|
||||
this.renderType = type;
|
||||
this.animatable = animatable;
|
||||
super.actuallyRender(matrixStackIn, animatable, model, type, renderTypeBuffer, vertexBuilder, isRenderer, partialTicks, packedLightIn, packedOverlayIn, color);
|
||||
if (this.renderArms) {
|
||||
this.renderArms = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderRecursively(PoseStack stack, AK12Item animatable, GeoBone bone, RenderType type, MultiBufferSource buffer, VertexConsumer bufferIn, boolean isReRender, float partialTick, int packedLightIn, int packedOverlayIn, int color) {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
|
@ -70,8 +31,6 @@ public class AK12ItemRenderer extends GeoItemRenderer<AK12Item> {
|
|||
if (name.equals("Lefthand") || name.equals("Righthand")) {
|
||||
bone.setHidden(true);
|
||||
renderingArms = true;
|
||||
} else {
|
||||
bone.setHidden(this.hiddenBones.contains(name));
|
||||
}
|
||||
|
||||
var player = mc.player;
|
||||
|
@ -107,13 +66,8 @@ public class AK12ItemRenderer extends GeoItemRenderer<AK12Item> {
|
|||
}
|
||||
|
||||
if (renderingArms) {
|
||||
AnimationHelper.renderArms(mc, player, this.transformType, stack, name, bone, SCALE_RECIPROCAL, this.currentBuffer, type, packedLightIn, false, false);
|
||||
AnimationHelper.renderArms(player, this.transformType, stack, name, bone, buffer, type, packedLightIn, false);
|
||||
}
|
||||
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getTextureLocation(AK12Item instance) {
|
||||
return super.getTextureLocation(instance);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.client.renderer.gun;
|
|||
import com.atsuishio.superbwarfare.client.AnimationHelper;
|
||||
import com.atsuishio.superbwarfare.client.ItemModelHelper;
|
||||
import com.atsuishio.superbwarfare.client.model.item.AK47ItemModel;
|
||||
import com.atsuishio.superbwarfare.client.renderer.CustomGunRenderer;
|
||||
import com.atsuishio.superbwarfare.data.gun.GunData;
|
||||
import com.atsuishio.superbwarfare.data.gun.value.AttachmentType;
|
||||
import com.atsuishio.superbwarfare.event.ClientEventHandler;
|
||||
|
@ -13,54 +14,14 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
|
|||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemDisplayContext;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
||||
import software.bernie.geckolib.cache.object.GeoBone;
|
||||
import software.bernie.geckolib.renderer.GeoItemRenderer;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class AK47ItemRenderer extends GeoItemRenderer<AK47Item> {
|
||||
public class AK47ItemRenderer extends CustomGunRenderer<AK47Item> {
|
||||
public AK47ItemRenderer() {
|
||||
super(new AK47ItemModel());
|
||||
}
|
||||
|
||||
@Override
|
||||
public RenderType getRenderType(AK47Item animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
|
||||
return RenderType.entityTranslucent(getTextureLocation(animatable));
|
||||
}
|
||||
|
||||
private static final float SCALE_RECIPROCAL = 1.0f / 16.0f;
|
||||
protected boolean renderArms = false;
|
||||
protected MultiBufferSource currentBuffer;
|
||||
protected RenderType renderType;
|
||||
public ItemDisplayContext transformType;
|
||||
protected AK47Item animatable;
|
||||
private final Set<String> hiddenBones = 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)
|
||||
this.animatable.getTransformType(transformType);
|
||||
super.renderByItem(stack, transformType, matrixStack, bufferIn, combinedLightIn, p_239207_6_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actuallyRender(PoseStack matrixStackIn, AK47Item animatable, BakedGeoModel model, RenderType type, MultiBufferSource renderTypeBuffer, VertexConsumer vertexBuilder, boolean isRenderer, float partialTicks, int packedLightIn,
|
||||
int packedOverlayIn, int color) {
|
||||
this.currentBuffer = renderTypeBuffer;
|
||||
this.renderType = type;
|
||||
this.animatable = animatable;
|
||||
super.actuallyRender(matrixStackIn, animatable, model, type, renderTypeBuffer, vertexBuilder, isRenderer, partialTicks, packedLightIn, packedOverlayIn, color);
|
||||
if (this.renderArms) {
|
||||
this.renderArms = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderRecursively(PoseStack stack, AK47Item animatable, GeoBone bone, RenderType type, MultiBufferSource buffer, VertexConsumer bufferIn, boolean isReRender, float partialTick, int packedLightIn, int packedOverlayIn, int color) {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
|
@ -69,8 +30,6 @@ public class AK47ItemRenderer extends GeoItemRenderer<AK47Item> {
|
|||
if (name.equals("Lefthand") || name.equals("Righthand")) {
|
||||
bone.setHidden(true);
|
||||
renderingArms = true;
|
||||
} else {
|
||||
bone.setHidden(this.hiddenBones.contains(name));
|
||||
}
|
||||
|
||||
var player = mc.player;
|
||||
|
@ -112,15 +71,9 @@ public class AK47ItemRenderer extends GeoItemRenderer<AK47Item> {
|
|||
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
|
||||
}
|
||||
|
||||
|
||||
if (renderingArms) {
|
||||
AnimationHelper.renderArms(mc, player, this.transformType, stack, name, bone, SCALE_RECIPROCAL, this.currentBuffer, type, packedLightIn, false, false);
|
||||
AnimationHelper.renderArms(player, this.transformType, stack, name, bone, buffer, type, packedLightIn, false);
|
||||
}
|
||||
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getTextureLocation(AK47Item instance) {
|
||||
return super.getTextureLocation(instance);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.client.renderer.gun;
|
|||
import com.atsuishio.superbwarfare.client.AnimationHelper;
|
||||
import com.atsuishio.superbwarfare.client.ItemModelHelper;
|
||||
import com.atsuishio.superbwarfare.client.model.item.Aa12ItemModel;
|
||||
import com.atsuishio.superbwarfare.client.renderer.CustomGunRenderer;
|
||||
import com.atsuishio.superbwarfare.item.gun.GunItem;
|
||||
import com.atsuishio.superbwarfare.item.gun.shotgun.Aa12Item;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
|
@ -10,55 +11,15 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
|
|||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemDisplayContext;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
||||
import software.bernie.geckolib.cache.object.GeoBone;
|
||||
import software.bernie.geckolib.renderer.GeoItemRenderer;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class Aa12ItemRenderer extends GeoItemRenderer<Aa12Item> {
|
||||
public class Aa12ItemRenderer extends CustomGunRenderer<Aa12Item> {
|
||||
|
||||
public Aa12ItemRenderer() {
|
||||
super(new Aa12ItemModel());
|
||||
}
|
||||
|
||||
@Override
|
||||
public RenderType getRenderType(Aa12Item animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
|
||||
return RenderType.entityTranslucent(getTextureLocation(animatable));
|
||||
}
|
||||
|
||||
private static final float SCALE_RECIPROCAL = 1.0f / 16.0f;
|
||||
protected boolean renderArms = false;
|
||||
protected MultiBufferSource currentBuffer;
|
||||
protected RenderType renderType;
|
||||
public ItemDisplayContext transformType;
|
||||
protected Aa12Item animatable;
|
||||
private final Set<String> hiddenBones = 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)
|
||||
this.animatable.getTransformType(transformType);
|
||||
super.renderByItem(stack, transformType, matrixStack, bufferIn, combinedLightIn, p_239207_6_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actuallyRender(PoseStack matrixStackIn, Aa12Item animatable, BakedGeoModel model, RenderType type, MultiBufferSource renderTypeBuffer, VertexConsumer vertexBuilder, boolean isRenderer, float partialTicks, int packedLightIn,
|
||||
int packedOverlayIn, int color) {
|
||||
this.currentBuffer = renderTypeBuffer;
|
||||
this.renderType = type;
|
||||
this.animatable = animatable;
|
||||
super.actuallyRender(matrixStackIn, animatable, model, type, renderTypeBuffer, vertexBuilder, isRenderer, partialTicks, packedLightIn, packedOverlayIn, color);
|
||||
if (this.renderArms) {
|
||||
this.renderArms = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderRecursively(PoseStack stack, Aa12Item animatable, GeoBone bone, RenderType type, MultiBufferSource buffer, VertexConsumer bufferIn, boolean isReRender, float partialTick, int packedLightIn, int packedOverlayIn, int color) {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
|
@ -67,8 +28,6 @@ public class Aa12ItemRenderer extends GeoItemRenderer<Aa12Item> {
|
|||
if (name.equals("Lefthand") || name.equals("Righthand")) {
|
||||
bone.setHidden(true);
|
||||
renderingArms = true;
|
||||
} else {
|
||||
bone.setHidden(this.hiddenBones.contains(name));
|
||||
}
|
||||
|
||||
var player = mc.player;
|
||||
|
@ -82,13 +41,8 @@ public class Aa12ItemRenderer extends GeoItemRenderer<Aa12Item> {
|
|||
}
|
||||
|
||||
if (renderingArms) {
|
||||
AnimationHelper.renderArms(mc, player, this.transformType, stack, name, bone, SCALE_RECIPROCAL, this.currentBuffer, type, packedLightIn, true, true);
|
||||
AnimationHelper.renderArms(player, this.transformType, stack, name, bone, buffer, type, packedLightIn, true);
|
||||
}
|
||||
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getTextureLocation(Aa12Item instance) {
|
||||
return super.getTextureLocation(instance);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -66,6 +66,7 @@ public class BocekItemRenderer extends CustomGunRenderer<BocekItem> {
|
|||
|
||||
var player = mc.player;
|
||||
if (player == null) return;
|
||||
|
||||
ItemStack itemStack = player.getMainHandItem();
|
||||
if (!(itemStack.getItem() instanceof GunItem)) return;
|
||||
|
||||
|
@ -82,7 +83,7 @@ public class BocekItemRenderer extends CustomGunRenderer<BocekItem> {
|
|||
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0.002, 0.1790625, 0.13, 0.08f, 255, 0, 0, 255, "dot", false);
|
||||
|
||||
if (renderingArms) {
|
||||
AnimationHelper.renderArms(mc, player, this.transformType, stack, name, bone, SCALE_RECIPROCAL, this.currentBuffer, type, packedLightIn, false, false);
|
||||
AnimationHelper.renderArms(player, this.transformType, stack, name, bone, buffer, type, packedLightIn, false);
|
||||
}
|
||||
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.atsuishio.superbwarfare.client.renderer.gun;
|
|||
|
||||
import com.atsuishio.superbwarfare.client.AnimationHelper;
|
||||
import com.atsuishio.superbwarfare.client.model.item.DevotionItemModel;
|
||||
import com.atsuishio.superbwarfare.client.renderer.CustomGunRenderer;
|
||||
import com.atsuishio.superbwarfare.item.gun.GunItem;
|
||||
import com.atsuishio.superbwarfare.item.gun.machinegun.DevotionItem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
|
@ -9,55 +10,15 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
|
|||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemDisplayContext;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
||||
import software.bernie.geckolib.cache.object.GeoBone;
|
||||
import software.bernie.geckolib.renderer.GeoItemRenderer;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class DevotionItemRenderer extends GeoItemRenderer<DevotionItem> {
|
||||
public class DevotionItemRenderer extends CustomGunRenderer<DevotionItem> {
|
||||
|
||||
public DevotionItemRenderer() {
|
||||
super(new DevotionItemModel());
|
||||
}
|
||||
|
||||
@Override
|
||||
public RenderType getRenderType(DevotionItem animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
|
||||
return RenderType.entityTranslucent(getTextureLocation(animatable));
|
||||
}
|
||||
|
||||
private static final float SCALE_RECIPROCAL = 1.0f / 16.0f;
|
||||
protected boolean renderArms = false;
|
||||
protected MultiBufferSource currentBuffer;
|
||||
protected RenderType renderType;
|
||||
public ItemDisplayContext transformType;
|
||||
protected DevotionItem animatable;
|
||||
private final Set<String> hiddenBones = 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)
|
||||
this.animatable.getTransformType(transformType);
|
||||
super.renderByItem(stack, transformType, matrixStack, bufferIn, combinedLightIn, p_239207_6_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actuallyRender(PoseStack matrixStackIn, DevotionItem animatable, BakedGeoModel model, RenderType type, MultiBufferSource renderTypeBuffer, VertexConsumer vertexBuilder, boolean isRenderer, float partialTicks, int packedLightIn,
|
||||
int packedOverlayIn, int color) {
|
||||
this.currentBuffer = renderTypeBuffer;
|
||||
this.renderType = type;
|
||||
this.animatable = animatable;
|
||||
super.actuallyRender(matrixStackIn, animatable, model, type, renderTypeBuffer, vertexBuilder, isRenderer, partialTicks, packedLightIn, packedOverlayIn, color);
|
||||
if (this.renderArms) {
|
||||
this.renderArms = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderRecursively(PoseStack stack, DevotionItem animatable, GeoBone bone, RenderType type, MultiBufferSource buffer, VertexConsumer bufferIn, boolean isReRender, float partialTick, int packedLightIn, int packedOverlayIn, int color) {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
|
@ -66,8 +27,6 @@ public class DevotionItemRenderer extends GeoItemRenderer<DevotionItem> {
|
|||
if (name.equals("Lefthand") || name.equals("Righthand")) {
|
||||
bone.setHidden(true);
|
||||
renderingArms = true;
|
||||
} else {
|
||||
bone.setHidden(this.hiddenBones.contains(name));
|
||||
}
|
||||
|
||||
var player = mc.player;
|
||||
|
@ -80,14 +39,9 @@ public class DevotionItemRenderer extends GeoItemRenderer<DevotionItem> {
|
|||
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.22993125, 20, 1, 255, 0, 0, 255, "apex_2x", false);
|
||||
|
||||
if (renderingArms) {
|
||||
AnimationHelper.renderArms(mc, player, this.transformType, stack, name, bone, SCALE_RECIPROCAL, this.currentBuffer, type, packedLightIn, true, true);
|
||||
AnimationHelper.renderArms(player, this.transformType, stack, name, bone, buffer, type, packedLightIn, true);
|
||||
}
|
||||
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getTextureLocation(DevotionItem instance) {
|
||||
return super.getTextureLocation(instance);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue