From 2cea1f38b55c9adee8e89bd1c7fc9bcc931bca3b Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Mon, 21 Oct 2024 02:18:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B8=B2=E6=9F=93=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/item/AK12ItemModel.java | 38 +++++++++---------- .../renderer/item/AK12ItemRenderer.java | 23 ++++++----- .../superbwarfare/tools/GunsTool.java | 22 +++++++++++ 3 files changed, 50 insertions(+), 33 deletions(-) diff --git a/src/main/java/net/mcreator/superbwarfare/client/model/item/AK12ItemModel.java b/src/main/java/net/mcreator/superbwarfare/client/model/item/AK12ItemModel.java index 624d65985..048141c1f 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/model/item/AK12ItemModel.java +++ b/src/main/java/net/mcreator/superbwarfare/client/model/item/AK12ItemModel.java @@ -5,6 +5,7 @@ import net.mcreator.superbwarfare.event.ClientEventHandler; import net.mcreator.superbwarfare.init.ModTags; import net.mcreator.superbwarfare.item.gun.rifle.AK12Item; import net.mcreator.superbwarfare.tools.AnimUtils; +import net.mcreator.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; @@ -18,24 +19,24 @@ public class AK12ItemModel extends GeoModel { @Override public ResourceLocation getAnimationResource(AK12Item animatable) { - return new ResourceLocation(ModUtils.MODID, "animations/ak12.animation.json"); + return ModUtils.loc("animations/ak12.animation.json"); } @Override public ResourceLocation getModelResource(AK12Item animatable) { - return new ResourceLocation(ModUtils.MODID, "geo/ak12.geo.json"); + return ModUtils.loc("geo/ak12.geo.json"); } @Override public ResourceLocation getTextureResource(AK12Item animatable) { - return new ResourceLocation(ModUtils.MODID, "textures/item/ak12.png"); + return ModUtils.loc("textures/item/ak12.png"); } @Override public void setCustomAnimations(AK12Item animatable, long instanceId, AnimationState animationState) { CoreGeoBone gun = getAnimationProcessor().getBone("bone"); CoreGeoBone shen = getAnimationProcessor().getBone("shen"); - CoreGeoBone Scope1 = getAnimationProcessor().getBone("Scope1"); + CoreGeoBone scope1 = getAnimationProcessor().getBone("Scope1"); CoreGeoBone shuan = getAnimationProcessor().getBone("shuan"); Player player = Minecraft.getInstance().player; @@ -60,30 +61,25 @@ public class AK12ItemModel extends GeoModel { double fp = ClientEventHandler.firePos; double fr = ClientEventHandler.fireRot; - int type = stack.getOrCreateTag().getInt("scope_type"); + int type = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE); - float posY = 0; - float scaleZ = 0; + float posY = switch (type) { + case 0, 2, 3 -> 0.781f; + case 1 -> 0.351f; + default -> 0f; + }; + float scaleZ = switch (type) { + case 0, 2, 3 -> 0.55f; + case 1 -> 0.4f; + default -> 0f; + }; gun.setPosX(1.97f * (float) zp); - if (type == 0) { - posY = 0.781f; - scaleZ = 0.55f; - } else if (type == 1) { - posY = 0.351f; - scaleZ = 0.4f; - } else if (type == 2) { - posY = 0.781f; - scaleZ = 0.55f; - } else if (type == 3) { - posY = 0.781f; - scaleZ = 0.55f; - } gun.setPosY(posY * (float) zp - (float) (0.2f * zpz)); gun.setPosZ(2.8f * (float) zp + (float) (0.5f * zpz)); gun.setScaleZ(1f - (scaleZ * (float) zp)); - Scope1.setScaleZ(1f - (0.4f * (float) zp)); + scope1.setScaleZ(1f - (0.4f * (float) zp)); stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 1.8)); diff --git a/src/main/java/net/mcreator/superbwarfare/client/renderer/item/AK12ItemRenderer.java b/src/main/java/net/mcreator/superbwarfare/client/renderer/item/AK12ItemRenderer.java index 6f5959a19..b2eadc50e 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/renderer/item/AK12ItemRenderer.java +++ b/src/main/java/net/mcreator/superbwarfare/client/renderer/item/AK12ItemRenderer.java @@ -7,6 +7,7 @@ import net.mcreator.superbwarfare.client.layer.AK12Layer; import net.mcreator.superbwarfare.client.model.item.AK12ItemModel; import net.mcreator.superbwarfare.item.gun.rifle.AK12Item; import net.mcreator.superbwarfare.tools.AnimUtils; +import net.mcreator.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.PlayerModel; import net.minecraft.client.player.AbstractClientPlayer; @@ -79,22 +80,21 @@ public class AK12ItemRenderer extends GeoItemRenderer { bone.setHidden(this.hiddenBones.contains(name)); } - Player player_ = Minecraft.getInstance().player; - if (player_ != null) { - ItemStack itemStack = player_.getMainHandItem(); + Player player = mc.player; + if (player != null) { + ItemStack itemStack = player.getMainHandItem(); if (name.equals("holo")) { - bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden") || GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) != GLFW.GLFW_PRESS - || itemStack.getOrCreateTag().getInt("scope_type") != 1); + || GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) != 1); } if (name.equals("flare")) { - if (itemStack.getOrCreateTag().getInt("barrel_type") == 1) { + if (GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.BARREL) == 1) { bone.setPosZ(2.25f); } - if (itemStack.getOrCreateTag().getDouble("flash_time") == 0 || itemStack.getOrCreateTag().getInt("barrel_type") == 2) { + if (itemStack.getOrCreateTag().getDouble("flash_time") == 0 || GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.BARREL) == 2) { bone.setHidden(true); } else { bone.setHidden(false); @@ -107,15 +107,14 @@ public class AK12ItemRenderer extends GeoItemRenderer { ItemModelHelper.handleGunAttachments(bone, itemStack, name); } - if (this.transformType.firstPerson() && renderingArms) { - AbstractClientPlayer player = mc.player; + AbstractClientPlayer localPlayer = mc.player; - if (player == null) { + if (localPlayer == null) { return; } - PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(player); + PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(localPlayer); PlayerModel model = playerRenderer.getModel(); stack.pushPose(); RenderUtils.translateMatrixToBone(stack, bone); @@ -123,7 +122,7 @@ public class AK12ItemRenderer extends GeoItemRenderer { RenderUtils.rotateMatrixAroundBone(stack, bone); RenderUtils.scaleMatrixForBone(stack, bone); RenderUtils.translateAwayFromPivotPoint(stack, bone); - ResourceLocation loc = player.getSkinTextureLocation(); + ResourceLocation loc = localPlayer.getSkinTextureLocation(); VertexConsumer armBuilder = this.currentBuffer.getBuffer(RenderType.entitySolid(loc)); VertexConsumer sleeveBuilder = this.currentBuffer.getBuffer(RenderType.entityTranslucent(loc)); if (name.equals("Lefthand")) { diff --git a/src/main/java/net/mcreator/superbwarfare/tools/GunsTool.java b/src/main/java/net/mcreator/superbwarfare/tools/GunsTool.java index 28864ab17..b2e3ecc72 100644 --- a/src/main/java/net/mcreator/superbwarfare/tools/GunsTool.java +++ b/src/main/java/net/mcreator/superbwarfare/tools/GunsTool.java @@ -122,4 +122,26 @@ public class GunsTool { tag.putBoolean("is_empty_reloading", false); } + public static int getAttachmentType(ItemStack stack, AttachmentType type) { + CompoundTag tag = stack.getOrCreateTag().getCompound("Attachments"); + return tag.getInt(type.getName()); + } + + public enum AttachmentType { + SCOPE("Scope"), + MAGAZINE("Magazine"), + BARREL("Barrel"), + STOCK("Stock"); + + private final String name; + + AttachmentType(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + }