diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/CustomGunRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/CustomGunRenderer.java index 5cc9485f2..de02fbd6a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/CustomGunRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/CustomGunRenderer.java @@ -1,12 +1,10 @@ package com.atsuishio.superbwarfare.client.renderer; -import com.atsuishio.superbwarfare.client.ItemModelHelper; import com.atsuishio.superbwarfare.client.model.item.CustomGunModel; import com.atsuishio.superbwarfare.config.client.DisplayConfig; import com.atsuishio.superbwarfare.item.gun.GunItem; import com.mojang.blaze3d.vertex.PoseStack; 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.client.renderer.texture.OverlayTexture; @@ -16,7 +14,6 @@ import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; import software.bernie.geckolib.animatable.GeoAnimatable; -import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.cache.object.BakedGeoModel; import software.bernie.geckolib.cache.object.GeoBone; import software.bernie.geckolib.model.GeoModel; @@ -24,8 +21,6 @@ import software.bernie.geckolib.renderer.GeoItemRenderer; import software.bernie.geckolib.util.Color; import software.bernie.geckolib.util.RenderUtil; -import java.util.Set; - public class CustomGunRenderer extends GeoItemRenderer { public static final float SCALE_RECIPROCAL = 1.0f / 16.0f; @@ -40,36 +35,10 @@ public class CustomGunRenderer extends GeoIte super(model); } - /** - * 在其他视角下会隐藏的骨骼名称,例如配件的骨骼名 - */ - public Set getHiddenBonesInOtherPerspective() { - return Set.of(); - } - @Override - public void renderRecursively(PoseStack poseStack, T animatable, GeoBone bone, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int color) { - Minecraft mc = Minecraft.getInstance(); - String name = bone.getName(); - - var player = mc.player; - if (player == null) return; - ItemStack itemStack = player.getMainHandItem(); - if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) { - if (this.renderPerspective == ItemDisplayContext.FIXED) { - ItemModelHelper.hideAllAttachments(bone, name); - if (this.getHiddenBonesInOtherPerspective().contains(name)) { - bone.setHidden(true); - } - } - } else { - ItemModelHelper.hideAllAttachments(bone, name); - if (this.getHiddenBonesInOtherPerspective().contains(name)) { - bone.setHidden(true); - } - } - - super.renderRecursively(poseStack, animatable, bone, renderType, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, color); + public void renderByItem(ItemStack stack, ItemDisplayContext transformType, PoseStack matrixStack, MultiBufferSource bufferIn, int combinedLightIn, int p_239207_6_) { + this.transformType = transformType; + super.renderByItem(stack, transformType, matrixStack, bufferIn, combinedLightIn, p_239207_6_); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/Mp5ItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/Mp5ItemRenderer.java index c181bad67..d5ccd5e4a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/Mp5ItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/Mp5ItemRenderer.java @@ -19,8 +19,6 @@ import net.minecraft.world.item.ItemStack; import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.cache.object.GeoBone; -import java.util.Set; - public class Mp5ItemRenderer extends CustomGunRenderer { public Mp5ItemRenderer() { @@ -56,6 +54,11 @@ public class Mp5ItemRenderer extends CustomGunRenderer { } AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0.05, 1, 0.35); ItemModelHelper.handleGunAttachments(bone, itemStack, name); + } else if (this.renderPerspective == ItemDisplayContext.FIXED) { + ItemModelHelper.hideAllAttachments(bone, name); + if (name.equals("yugu")) { + bone.setHidden(true); + } } int scopeType = GunData.from(itemStack).attachment.get(AttachmentType.SCOPE); @@ -65,6 +68,11 @@ public class Mp5ItemRenderer extends CustomGunRenderer { case 2 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.52, 14, 1.4f, 255, 0, 0, 255, "acog", true); } + } else { + ItemModelHelper.hideAllAttachments(bone, name); + if (name.equals("yugu")) { + bone.setHidden(true); + } } if (renderingArms) { @@ -73,9 +81,4 @@ public class Mp5ItemRenderer extends CustomGunRenderer { super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color); } - - @Override - public Set getHiddenBonesInOtherPerspective() { - return Set.of("yugu"); - } }