From 0b214c8f13fdb9238cd8d93fcc035728395da62b Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Fri, 16 Aug 2024 02:23:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DM4=E7=9A=84=E7=81=AB=E7=84=B0?= =?UTF-8?q?=EF=BC=8C=E6=89=8B=E8=87=82=E5=8A=A8=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/item/M4ItemModel.java | 25 +++---- .../client/renderer/item/M4ItemRenderer.java | 46 +++++++----- .../animations/m4.animation.json | 73 ++++--------------- .../assets/superbwarfare/geo/m4.geo.json | 14 ++-- 4 files changed, 62 insertions(+), 96 deletions(-) diff --git a/src/main/java/net/mcreator/superbwarfare/client/model/item/M4ItemModel.java b/src/main/java/net/mcreator/superbwarfare/client/model/item/M4ItemModel.java index cf2c4ceb9..c79a72dad 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/model/item/M4ItemModel.java +++ b/src/main/java/net/mcreator/superbwarfare/client/model/item/M4ItemModel.java @@ -39,11 +39,8 @@ public class M4ItemModel extends GeoModel { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return; - double p = 0; - p = player.getPersistentData().getDouble("zoom_pos"); - - double zp = 0; - zp = player.getPersistentData().getDouble("zoom_pos_z"); + double p = player.getPersistentData().getDouble("zoom_pos"); + double zp = player.getPersistentData().getDouble("zoom_pos_z"); gun.setPosX(2.935f * (float) p); @@ -71,16 +68,16 @@ public class M4ItemModel extends GeoModel { } shen.setPosX(0.5f * (float)fr * (float)((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).recoilHorizon * fp)); - CoreGeoBone flare = getAnimationProcessor().getBone("flare"); +// CoreGeoBone flare = getAnimationProcessor().getBone("flare"); - if (stack.getOrCreateTag().getDouble("flash_time") > 0) { - flare.setHidden(false); - flare.setScaleX((float) (0.55 + 0.5 * (Math.random() - 0.5))); - flare.setScaleY((float) (0.55 + 0.5 * (Math.random() - 0.5))); - flare.setRotZ((float) (0.5 * (Math.random() - 0.5))); - } else { - flare.setHidden(true); - } +// if (stack.getOrCreateTag().getDouble("flash_time") > 0) { +// flare.setHidden(false); +// flare.setScaleX((float) (0.55 + 0.5 * (Math.random() - 0.5))); +// flare.setScaleY((float) (0.55 + 0.5 * (Math.random() - 0.5))); +// flare.setRotZ((float) (0.5 * (Math.random() - 0.5))); +// } else { +// flare.setHidden(true); +// } CoreGeoBone root = getAnimationProcessor().getBone("root"); diff --git a/src/main/java/net/mcreator/superbwarfare/client/renderer/item/M4ItemRenderer.java b/src/main/java/net/mcreator/superbwarfare/client/renderer/item/M4ItemRenderer.java index 1a184da6a..49337d2c7 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/renderer/item/M4ItemRenderer.java +++ b/src/main/java/net/mcreator/superbwarfare/client/renderer/item/M4ItemRenderer.java @@ -14,6 +14,7 @@ import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.player.PlayerRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import software.bernie.geckolib.cache.object.BakedGeoModel; @@ -36,18 +37,19 @@ public class M4ItemRenderer extends GeoItemRenderer { } private static final float SCALE_RECIPROCAL = 1.0f / 16.0f; + protected boolean renderArms = false; protected MultiBufferSource currentBuffer; protected RenderType renderType; public ItemDisplayContext transformType; protected M4Item animatable; private final Set hiddenBones = new HashSet<>(); + private final Set suppressedBones = new HashSet<>(); @Override public void renderByItem(ItemStack stack, ItemDisplayContext transformType, PoseStack matrixStack, MultiBufferSource bufferIn, int combinedLightIn, int p_239207_6_) { this.transformType = transformType; - if (this.animatable != null) { + if (this.animatable != null) this.animatable.getTransformType(transformType); - } super.renderByItem(stack, transformType, matrixStack, bufferIn, combinedLightIn, p_239207_6_); } @@ -58,6 +60,9 @@ public class M4ItemRenderer extends GeoItemRenderer { this.renderType = type; this.animatable = animatable; super.actuallyRender(matrixStackIn, animatable, model, type, renderTypeBuffer, vertexBuilder, isRenderer, partialTicks, packedLightIn, packedOverlayIn, red, green, blue, alpha); + if (this.renderArms) { + this.renderArms = false; + } } @Override @@ -73,17 +78,26 @@ public class M4ItemRenderer extends GeoItemRenderer { bone.setHidden(this.hiddenBones.contains(name)); } + if (name.equals("flare")) { + Player player = Minecraft.getInstance().player; + ItemStack pstack = null; + if (player != null) { + pstack = player.getMainHandItem(); + } + if (pstack != null && pstack.getOrCreateTag().getDouble("flash_time") > 0) { + bone.setHidden(false); + bone.setScaleX((float) (0.55 + 0.5 * (Math.random() - 0.5))); + bone.setScaleY((float) (0.55 + 0.5 * (Math.random() - 0.5))); + bone.setRotZ((float) (0.5 * (Math.random() - 0.5))); + } else { + bone.setHidden(true); + } + } + if (this.transformType.firstPerson() && renderingArms) { AbstractClientPlayer player = mc.player; - - if (player == null) { - return; - } - - float armsAlpha = player.isInvisible() ? 0.15f : 1.0f; PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(player); PlayerModel model = playerRenderer.getModel(); - stack.pushPose(); RenderUtils.translateMatrixToBone(stack, bone); RenderUtils.translateToPivotPoint(stack, bone); @@ -93,17 +107,15 @@ public class M4ItemRenderer extends GeoItemRenderer { ResourceLocation loc = player.getSkinTextureLocation(); VertexConsumer armBuilder = this.currentBuffer.getBuffer(RenderType.entitySolid(loc)); VertexConsumer sleeveBuilder = this.currentBuffer.getBuffer(RenderType.entityTranslucent(loc)); - if (name.equals("Lefthand")) { stack.translate(-1.0f * SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f); - AnimUtils.renderPartOverBone(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, armsAlpha); - AnimUtils.renderPartOverBone(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, armsAlpha); - } else { - stack.translate(SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f); - AnimUtils.renderPartOverBone(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, armsAlpha); - AnimUtils.renderPartOverBone(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, armsAlpha); + AnimUtils.renderPartOverBone(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1); + AnimUtils.renderPartOverBone(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1); + } else if (name.equals("Righthand")) { + stack.translate(1.0f * SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f); + AnimUtils.renderPartOverBone(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1); + AnimUtils.renderPartOverBone(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1); } - this.currentBuffer.getBuffer(this.renderType); stack.popPose(); } diff --git a/src/main/resources/assets/superbwarfare/animations/m4.animation.json b/src/main/resources/assets/superbwarfare/animations/m4.animation.json index e7318cca1..1208a2445 100644 --- a/src/main/resources/assets/superbwarfare/animations/m4.animation.json +++ b/src/main/resources/assets/superbwarfare/animations/m4.animation.json @@ -260,14 +260,6 @@ } } }, - "Righthand": { - "rotation": { - "vector": [-2.03554, 4.28304, 3.39493] - }, - "position": { - "vector": [0.30134, -0.35141, 1.25128] - } - }, "Lefthand": { "rotation": { "vector": [-1.41476, -16.33468, -1.66483] @@ -567,44 +559,26 @@ "0.625": { "vector": [0, 1.5, 1] }, - "0.9167": { + "1.9167": { "vector": [0, 1.5, 1] }, - "1.0": { - "vector": [-1.80149, -4.34261, -11.56806] - }, - "1.9167": { - "vector": [-1.80149, -4.34261, -11.56806] - }, "2.0417": { - "vector": [8.98588, -28.60432, 4.50464] + "vector": [-1.45517, 21.15308, 5.24726] }, "2.1667": { - "vector": [-22.62507, -32.8034, 18.28494] + "vector": [11.44498, 46.40486, 9.26982] }, - "2.2083": { - "vector": [-22.62507, -32.8034, 18.28494] - }, - "2.2917": { - "vector": [-15.46722, -16.63005, 1.48245], + "2.25": { + "vector": [7.25998, 14.54051, 4.65923], "easing": "easeInElastic" }, - "2.375": { - "vector": [-15.46722, -16.63005, 1.48245], - "easing": "easeInElastic" + "2.3333": { + "vector": [7.25998, 14.54051, 4.65923] }, "2.4583": { - "vector": [-15.14496, -21.26229, 5.31052], - "easing": "easeOutSine" + "vector": [-1.35683, 22.31471, 2.47949] }, - "2.5417": { - "vector": [3.06668, -17.33275, 4.18047], - "easing": "easeInOutSine" - }, - "2.6667": { - "vector": [-8.03996, -14.46909, -5.02907] - }, - "2.75": { + "2.7083": { "vector": [0, 0, 0] } }, @@ -624,14 +598,8 @@ "0.625": { "vector": [0, -4, 5] }, - "0.9167": { - "vector": [0, -4, 5] - }, - "1.0": { - "vector": [-0.3, -3.7, 5.6] - }, "1.9167": { - "vector": [-0.3, -3.7, 5.6] + "vector": [0, -4, 5] }, "2.1667": { "vector": [-1, -2, 7] @@ -655,10 +623,7 @@ "vector": [0.29, -0.14, 6.76], "easing": "easeInOutSine" }, - "2.6667": { - "vector": [0.14, -2.57, 2.38] - }, - "2.75": { + "2.7083": { "vector": [0, 0, 0] } } @@ -962,14 +927,8 @@ "0.625": { "vector": [0, 1.5, 1] }, - "0.9167": { - "vector": [0, 1.5, 1] - }, - "1.0": { - "vector": [-1.80149, -4.34261, -11.56806] - }, "1.9167": { - "vector": [-1.80149, -4.34261, -11.56806] + "vector": [0, 1.5, 1] }, "2.0417": { "vector": [-3.81928, -8.59364, -9.17363] @@ -995,14 +954,8 @@ "0.625": { "vector": [0, -4, 5] }, - "0.9167": { - "vector": [0, -4, 5] - }, - "1.0": { - "vector": [-0.3, -3.7, 5.6] - }, "1.9167": { - "vector": [-0.3, -3.7, 5.6] + "vector": [0, -4, 5] }, "2.0417": { "vector": [1.89205, -2.68839, 4.36626] diff --git a/src/main/resources/assets/superbwarfare/geo/m4.geo.json b/src/main/resources/assets/superbwarfare/geo/m4.geo.json index e084fbcc5..3a56400d5 100644 --- a/src/main/resources/assets/superbwarfare/geo/m4.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/m4.geo.json @@ -58,11 +58,13 @@ "name": "Righthand", "parent": "0", "pivot": [-2.8, -6.4, 10.9], - "rotation": [70.17995, -12.39135, -1.6575], + "rotation": [109.82005, 12.39135, 178.3425], "cubes": [ { "origin": [-4.8, -6.4, 8.9], "size": [4, 12, 4], + "pivot": [-2.8, -0.4, 10.9], + "rotation": [-180, 0, 180], "uv": { "north": {"uv": [0, 91.5], "uv_size": [4, 12]}, "east": {"uv": [0, 91.5], "uv_size": [4, 12]}, @@ -11209,12 +11211,14 @@ { "name": "Lefthand", "parent": "magazine", - "pivot": [5.2, -4.7, 0], - "rotation": [65.81754, 23.7695, -7.98205], + "pivot": [4.8, -4.8, 0], + "rotation": [117.38836, -19.19361, 174.18449], "cubes": [ { - "origin": [3.2, -8.7, -2], - "size": [4, 16, 4], + "origin": [2.8, -4.8, -2], + "size": [4, 12, 4], + "pivot": [4.8, -0.8, 0], + "rotation": [-180, 0, 180], "uv": { "north": {"uv": [0, 92], "uv_size": [4, 12]}, "east": {"uv": [0, 92], "uv_size": [4, 12]},