diff --git a/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java b/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java index bd7e111e0..02c845d48 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java @@ -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 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 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(); + } + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/AK12ItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/AK12ItemRenderer.java index 10f7b38fa..c56635271 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/AK12ItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/AK12ItemRenderer.java @@ -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 { +public class AK12ItemRenderer extends CustomGunRenderer { 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 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 { 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 { } 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); - } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/AK47ItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/AK47ItemRenderer.java index 39a8517d3..7fbaaac06 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/AK47ItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/AK47ItemRenderer.java @@ -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 { +public class AK47ItemRenderer extends CustomGunRenderer { 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 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 { 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 { 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); - } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/Aa12ItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/Aa12ItemRenderer.java index 64aac1878..e3f37d902 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/Aa12ItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/Aa12ItemRenderer.java @@ -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 { +public class Aa12ItemRenderer extends CustomGunRenderer { 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 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 { 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 { } 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); - } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/BocekItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/BocekItemRenderer.java index 988a6c4ca..5620e5901 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/BocekItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/BocekItemRenderer.java @@ -66,6 +66,7 @@ public class BocekItemRenderer extends CustomGunRenderer { 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 { 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); } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/DevotionItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/DevotionItemRenderer.java index d51bcb79a..199b52d12 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/DevotionItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/DevotionItemRenderer.java @@ -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 { +public class DevotionItemRenderer extends CustomGunRenderer { 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 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 { 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 { 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); - } }