From ba9301f7021ff64f7e8f2f633a26d4ac37947300 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Sat, 31 May 2025 02:17:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E5=AE=9E=E7=8E=B0m60?= =?UTF-8?q?=E6=B8=B2=E6=9F=93=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/item/M60ItemModel.java | 16 +++++++--------- .../client/renderer/gun/M60ItemRenderer.java | 9 +++++---- .../item/gun/machinegun/M60Item.java | 4 ++++ 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M60ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M60ItemModel.java index 3e7e29719..3305a0929 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M60ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M60ItemModel.java @@ -5,7 +5,6 @@ import com.atsuishio.superbwarfare.client.AnimationHelper; import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay; import com.atsuishio.superbwarfare.data.gun.GunData; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.machinegun.M60Item; import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; @@ -14,11 +13,10 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import software.bernie.geckolib.animation.AnimationState; import software.bernie.geckolib.cache.object.GeoBone; -import software.bernie.geckolib.model.GeoModel; import static com.atsuishio.superbwarfare.event.ClientEventHandler.isProne; -public class M60ItemModel extends GeoModel { +public class M60ItemModel extends CustomGunModel { @Override public ResourceLocation getAnimationResource(M60Item animatable) { @@ -36,7 +34,12 @@ public class M60ItemModel extends GeoModel { } @Override - public void setCustomAnimations(M60Item animatable, long instanceId, AnimationState animationState) { + public void setCustomAnimations(M60Item animatable, long instanceId, AnimationState animationState) { + Player player = Minecraft.getInstance().player; + if (player == null) return; + ItemStack stack = player.getMainHandItem(); + if (shouldCancelRender(stack, animationState)) return; + GeoBone gun = getAnimationProcessor().getBone("bone"); GeoBone shen = getAnimationProcessor().getBone("shen"); GeoBone tiba = getAnimationProcessor().getBone("tiba"); @@ -48,11 +51,6 @@ public class M60ItemModel extends GeoModel { GeoBone l = getAnimationProcessor().getBone("l"); GeoBone r = getAnimationProcessor().getBone("r"); - Player player = Minecraft.getInstance().player; - if (player == null) return; - ItemStack stack = player.getMainHandItem(); - if (!(stack.getItem() instanceof GunItem)) return; - if (isProne(player)) { l.setRotX(1.5f); r.setRotX(1.5f); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/M60ItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/M60ItemRenderer.java index e04c42d0f..0fc48e59e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/M60ItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/M60ItemRenderer.java @@ -11,6 +11,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.world.item.ItemStack; +import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.cache.object.GeoBone; public class M60ItemRenderer extends CustomGunRenderer { @@ -34,12 +35,12 @@ public class M60ItemRenderer extends CustomGunRenderer { var player = mc.player; if (player == null) return; ItemStack itemStack = player.getMainHandItem(); - if (!(itemStack.getItem() instanceof GunItem)) return; - - AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0.1, 1.95, 0.45); + if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) { + AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0.1, 1.95, 0.45); + } if (renderingArms) { - AnimationHelper.renderArms(player, this.transformType, stack, name, bone, this.currentBuffer, type, packedLightIn, true); + AnimationHelper.renderArms(player, this.renderPerspective, stack, name, bone, buffer, type, packedLightIn, true); } super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color); } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/M60Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/M60Item.java index e95e0647a..d7eec9b7a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/M60Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/M60Item.java @@ -13,10 +13,12 @@ import net.minecraft.sounds.SoundEvent; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Rarity; import net.minecraft.world.level.Level; import software.bernie.geckolib.animation.*; +import software.bernie.geckolib.constant.DataTickets; import software.bernie.geckolib.renderer.GeoItemRenderer; import javax.annotation.ParametersAreNonnullByDefault; @@ -54,6 +56,8 @@ public class M60Item extends GunItem { if (player == null) return PlayState.STOP; ItemStack stack = player.getMainHandItem(); if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP; + if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND) + return event.setAndContinue(RawAnimation.begin().thenLoop("animation.m_60.idle")); if (GunData.from(stack).reload.empty()) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.m_60.reload"));