From 99a3f7542f729bc9844eeda3fe79a73589e9bf37 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Sat, 31 May 2025 16:29:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E5=B0=84=E5=99=A8?= =?UTF-8?q?=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/item/M79ItemModel.java | 14 ++++++-------- .../model/item/SecondaryCataclysmModel.java | 16 +++++++--------- .../client/renderer/gun/M79ItemRenderer.java | 9 +++++---- .../renderer/gun/SecondaryCataclysmRenderer.java | 9 +++++---- .../superbwarfare/item/gun/launcher/M79Item.java | 6 +++++- .../item/gun/launcher/SecondaryCataclysm.java | 11 +++++++++++ .../secondary_cataclysm.item.json | 6 +++--- 7 files changed, 42 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M79ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M79ItemModel.java index 6eba38866..7ea2ab766 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M79ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M79ItemModel.java @@ -4,7 +4,6 @@ import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.client.AnimationHelper; import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.launcher.M79Item; import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; @@ -13,9 +12,8 @@ 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; -public class M79ItemModel extends GeoModel { +public class M79ItemModel extends CustomGunModel { @Override public ResourceLocation getAnimationResource(M79Item animatable) { @@ -33,14 +31,14 @@ public class M79ItemModel extends GeoModel { } @Override - public void setCustomAnimations(M79Item animatable, long instanceId, AnimationState animationState) { - GeoBone gun = getAnimationProcessor().getBone("bone"); - GeoBone shen = getAnimationProcessor().getBone("gun"); - + public void setCustomAnimations(M79Item animatable, long instanceId, AnimationState animationState) { Player player = Minecraft.getInstance().player; if (player == null) return; ItemStack stack = player.getMainHandItem(); - if (!(stack.getItem() instanceof GunItem)) return; + if (shouldCancelRender(stack, animationState)) return; + + GeoBone gun = getAnimationProcessor().getBone("bone"); + GeoBone shen = getAnimationProcessor().getBone("gun"); float times = 0.6f * (float) Math.min(Minecraft.getInstance().getTimer().getRealtimeDeltaTicks(), 0.8); double zt = ClientEventHandler.zoomTime; diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/SecondaryCataclysmModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/SecondaryCataclysmModel.java index 17a94bbb1..2dcf27746 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/SecondaryCataclysmModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/SecondaryCataclysmModel.java @@ -2,9 +2,8 @@ package com.atsuishio.superbwarfare.client.model.item; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay; -import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.data.gun.GunData; +import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.item.gun.launcher.SecondaryCataclysm; import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; @@ -13,9 +12,8 @@ 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; -public class SecondaryCataclysmModel extends GeoModel { +public class SecondaryCataclysmModel extends CustomGunModel { @Override public ResourceLocation getAnimationResource(SecondaryCataclysm animatable) { @@ -33,14 +31,14 @@ public class SecondaryCataclysmModel extends GeoModel { } @Override - public void setCustomAnimations(SecondaryCataclysm animatable, long instanceId, AnimationState animationState) { - GeoBone gun = getAnimationProcessor().getBone("bone"); - GeoBone shen = getAnimationProcessor().getBone("shen"); - + public void setCustomAnimations(SecondaryCataclysm animatable, long instanceId, AnimationState animationState) { Player player = Minecraft.getInstance().player; if (player == null) return; ItemStack stack = player.getMainHandItem(); - if (!(stack.getItem() instanceof GunItem)) return; + if (shouldCancelRender(stack, animationState)) return; + + GeoBone gun = getAnimationProcessor().getBone("bone"); + GeoBone shen = getAnimationProcessor().getBone("shen"); float times = 0.6f * (float) Math.min(Minecraft.getInstance().getTimer().getRealtimeDeltaTicks(), 0.8); double zt = ClientEventHandler.zoomTime; diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/M79ItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/M79ItemRenderer.java index f1c153825..1319d8c92 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/M79ItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/M79ItemRenderer.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 M79ItemRenderer extends CustomGunRenderer { @@ -34,12 +35,12 @@ public class M79ItemRenderer 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, 0.59375, 0.6); + if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) { + AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 0.59375, 0.6); + } 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/client/renderer/gun/SecondaryCataclysmRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/SecondaryCataclysmRenderer.java index 4208a113c..e1710eae5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/SecondaryCataclysmRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/SecondaryCataclysmRenderer.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 SecondaryCataclysmRenderer extends CustomGunRenderer { @@ -34,12 +35,12 @@ public class SecondaryCataclysmRenderer extends CustomGunRenderer 0) { @@ -110,6 +115,9 @@ public class SecondaryCataclysm extends GunItem implements EnergyStorageItem { 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.secondary_cataclysm.idle")); + var data = GunData.from(stack); if (player.isSprinting() && player.onGround() @@ -133,6 +141,9 @@ public class SecondaryCataclysm extends GunItem implements EnergyStorageItem { } private PlayState meleePredicate(AnimationState event) { + if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND) + return event.setAndContinue(RawAnimation.begin().thenLoop("animation.secondary_cataclysm.idle")); + if (ClientEventHandler.gunMelee > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.secondary_cataclysm.hit")); } diff --git a/src/main/resources/assets/superbwarfare/models/displaysettings/secondary_cataclysm.item.json b/src/main/resources/assets/superbwarfare/models/displaysettings/secondary_cataclysm.item.json index 6d3800a4c..9a2ab367b 100644 --- a/src/main/resources/assets/superbwarfare/models/displaysettings/secondary_cataclysm.item.json +++ b/src/main/resources/assets/superbwarfare/models/displaysettings/secondary_cataclysm.item.json @@ -66,9 +66,9 @@ 0 ], "scale": [ - 0, - 0, - 0 + 1, + 1, + 1 ] }, "gui": {