From d9f341dc3fe1ce6b19052a2fc474fa197752d93e Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Sat, 31 May 2025 01:32:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E9=AD=94=E6=94=B9=E6=B8=B2?= =?UTF-8?q?=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/superbwarfare/models/item/rpg.json | 15 --------------- .../client/renderer/gun/RpgItemRenderer.java | 8 ++++---- .../atsuishio/superbwarfare/item/gun/GunItem.java | 5 +++++ .../superbwarfare/item/gun/launcher/RpgItem.java | 5 +++++ 4 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/generated/resources/assets/superbwarfare/models/item/rpg.json b/src/generated/resources/assets/superbwarfare/models/item/rpg.json index e53016daf..02dd00323 100644 --- a/src/generated/resources/assets/superbwarfare/models/item/rpg.json +++ b/src/generated/resources/assets/superbwarfare/models/item/rpg.json @@ -5,23 +5,8 @@ "gui_light": "front", "loader": "neoforge:separate_transforms", "perspectives": { - "fixed": { - "parent": "superbwarfare:lod/rpg" - }, - "ground": { - "parent": "superbwarfare:lod/rpg" - }, "gui": { "parent": "superbwarfare:item/rpg_icon" - }, - "head": { - "parent": "superbwarfare:lod/rpg" - }, - "thirdperson_lefthand": { - "parent": "superbwarfare:lod/rpg" - }, - "thirdperson_righthand": { - "parent": "superbwarfare:lod/rpg" } } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/RpgItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/RpgItemRenderer.java index 14441b81c..ea62d6fd3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/RpgItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/gun/RpgItemRenderer.java @@ -34,12 +34,12 @@ public class RpgItemRenderer 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.625, 0.7); + if (itemStack.getItem() instanceof GunItem) { + AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 0.625, 0.7); + } if (renderingArms) { - AnimationHelper.renderArms(player, this.transformType, stack, name, bone, this.currentBuffer, type, packedLightIn, false); + AnimationHelper.renderArms(player, this.renderPerspective, 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/item/gun/GunItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java index 1fda51255..74e9c1bd4 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java @@ -96,6 +96,11 @@ public abstract class GunItem extends Item implements CustomRendererItem, GeoIte return Mth.hsvToRgb((float) f / 3.0F, 1.0F, 1.0F); } + @Override + public boolean isPerspectiveAware() { + return true; + } + @Override @ParametersAreNonnullByDefault public boolean canAttackBlock(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer) { diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/RpgItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/RpgItem.java index c574e85fc..18dbdf13b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/RpgItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/RpgItem.java @@ -18,11 +18,13 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.tooltip.TooltipComponent; 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 org.jetbrains.annotations.NotNull; import software.bernie.geckolib.animation.*; +import software.bernie.geckolib.constant.DataTickets; import software.bernie.geckolib.renderer.GeoItemRenderer; import javax.annotation.ParametersAreNonnullByDefault; @@ -55,6 +57,9 @@ public class RpgItem extends GunItem { if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP; var data = GunData.from(stack); + if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND) + return event.setAndContinue(RawAnimation.begin().thenLoop("animation.rpg.idle")); + if (data.reload.empty()) { return event.setAndContinue(RawAnimation.begin().thenPlayAndHold("animation.rpg.reload")); }