diff --git a/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java b/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java index 89263c995..3dbae7060 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java @@ -178,7 +178,7 @@ public class AnimationHelper { } } - public static void handleZoomCrossHair(MultiBufferSource currentBuffer, RenderType renderType, String boneName, PoseStack stack, GeoBone bone, MultiBufferSource buffer, int packedLightIn, double x, double y, double z, int r, int g, int b, int a, String name, boolean hasBlackPart) { + public static void handleZoomCrossHair(MultiBufferSource currentBuffer, RenderType renderType, String boneName, PoseStack stack, GeoBone bone, MultiBufferSource buffer, int packedLightIn, double x, double y, double z, float size, int r, int g, int b, int a, String name, boolean hasBlackPart) { if (boneName.equals("cross") && ClientEventHandler.zoomPos > 0.8) { stack.pushPose(); stack.translate(x, y, -z); @@ -191,26 +191,27 @@ public class AnimationHelper { Matrix4f $$7 = pose.pose(); ResourceLocation tex = Mod.loc("textures/crosshair/" + name + ".png"); - // 准星里如果有黑色部分则使用此渲染 - if (hasBlackPart) { - VertexConsumer blackPart = buffer.getBuffer(RenderType.entityTranslucent(tex)); - vertexRGB(blackPart, $$7, pose, packedLightIn, 0.0F, 0, 0, 1, r, g, b, a); - vertexRGB(blackPart, $$7, pose, packedLightIn, 1.0F, 0, 1, 1, r, g, b, a); - vertexRGB(blackPart, $$7, pose, packedLightIn, 1.0F, 1, 1, 0, r, g, b, a); - vertexRGB(blackPart, $$7, pose, packedLightIn, 0.0F, 1, 0, 0, r, g, b, a); - } + + int alpha = hasBlackPart ? a : (int) (0.05 * a); + + VertexConsumer blackPart = buffer.getBuffer(RenderType.entityTranslucent(tex)); + vertexRGB(blackPart, $$7, pose, packedLightIn, 0.0F, 0, 0, 1, r, g, b, alpha, size); + vertexRGB(blackPart, $$7, pose, packedLightIn, size, 0, 1, 1, r, g, b, alpha, size); + vertexRGB(blackPart, $$7, pose, packedLightIn, size, size, 1, 0, r, g, b, alpha, size); + vertexRGB(blackPart, $$7, pose, packedLightIn, 0.0F, size, 0, 0, r, g, b, alpha, size); + VertexConsumer $$9 = buffer.getBuffer(ModRenderTypes.MUZZLE_FLASH_TYPE.apply(tex)); - vertexRGB($$9, $$7, pose, packedLightIn, 0.0F, 0, 0, 1, r, g, b, a); - vertexRGB($$9, $$7, pose, packedLightIn, 1.0F, 0, 1, 1, r, g, b, a); - vertexRGB($$9, $$7, pose, packedLightIn, 1.0F, 1, 1, 0, r, g, b, a); - vertexRGB($$9, $$7, pose, packedLightIn, 0.0F, 1, 0, 0, r, g, b, a); + vertexRGB($$9, $$7, pose, packedLightIn, 0.0F, 0, 0, 1, r, g, b, a, size); + vertexRGB($$9, $$7, pose, packedLightIn, size, 0, 1, 1, r, g, b, a, size); + vertexRGB($$9, $$7, pose, packedLightIn, size, size, 1, 0, r, g, b, a, size); + vertexRGB($$9, $$7, pose, packedLightIn, 0.0F, size, 0, 0, r, g, b, a, size); stack.popPose(); } currentBuffer.getBuffer(renderType); } - private static void vertexRGB(VertexConsumer pConsumer, Matrix4f pPose, PoseStack.Pose pNormal, int pLightmapUV, float pX, float pY, int pU, int pV, int r, int g, int b, int a) { - pConsumer.addVertex(pPose, pX - 0.5F, pY - 0.5F, 0.0F) + private static void vertexRGB(VertexConsumer pConsumer, Matrix4f pPose, PoseStack.Pose pNormal, int pLightmapUV, float pX, float pY, int pU, int pV, int r, int g, int b, int a, float size) { + pConsumer.addVertex(pPose, pX - 0.5F * size, pY - 0.5F * size, 0.0F) .setColor(r, g, b, a) .setUv((float) pU, (float) pV) .setOverlay(OverlayTexture.NO_OVERLAY) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/layer/gun/DevotionLayer.java b/src/main/java/com/atsuishio/superbwarfare/client/layer/gun/DevotionLayer.java deleted file mode 100644 index 6f1ab6aa7..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/client/layer/gun/DevotionLayer.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.atsuishio.superbwarfare.client.layer.gun; - -import com.atsuishio.superbwarfare.Mod; -import com.atsuishio.superbwarfare.item.gun.machinegun.DevotionItem; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.resources.ResourceLocation; -import software.bernie.geckolib.cache.object.BakedGeoModel; -import software.bernie.geckolib.renderer.GeoRenderer; -import software.bernie.geckolib.renderer.layer.GeoRenderLayer; - -public class DevotionLayer extends GeoRenderLayer { - private static final ResourceLocation LAYER = Mod.loc("textures/item/devotion_e.png"); - - public DevotionLayer(GeoRenderer entityRenderer) { - super(entityRenderer); - } - - @Override - public void render(PoseStack poseStack, DevotionItem animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { - RenderType glowRenderType = RenderType.eyes(LAYER); - getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 0xFFFFFFFF); - } -} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/AK12ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/AK12ItemModel.java index ffccbfb44..39c97a3aa 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/AK12ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/AK12ItemModel.java @@ -76,14 +76,14 @@ public class AK12ItemModel extends GeoModel { case 0 -> 0.52f; case 1 -> 0.6f; case 2 -> 0.77f; - case 3 -> 0.78f; + case 3 -> 0.84f; default -> 0f; }; float posZ = switch (type) { case 0 -> 3f; case 1 -> 3.4f; case 2 -> 4.1f; - case 3 -> 4.5f; + case 3 -> 5.14f; default -> 0f; }; diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/AK12ItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/AK12ItemRenderer.java index 9d51293db..f26e2ab5a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/AK12ItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/AK12ItemRenderer.java @@ -93,9 +93,9 @@ public class AK12ItemRenderer extends GeoItemRenderer { int scopeType = GunData.from(itemStack).attachment.get(AttachmentType.SCOPE); switch (scopeType) { - case 1 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, -0.03, 0.27363125, 28, 0, 255, 0, 255, "okp_7", false); - case 2 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, -0.03, 0.29, 18, 255, 0, 0, 255, "dot", false); - case 3 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, -0.03, 0.29, Math.max(30 - 4 * ClientEventHandler.customZoom, 3), 255, 0, 0, 255, "lpvo", true); + case 1 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, -0.03, 0.27363125, 28, 1, 0, 255, 0, 255, "okp_7", false); + case 2 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, -0.03, 0.29, 18, 1, 255, 0, 0, 255, "dot", false); + case 3 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, -0.03, 0.29, 36, (float) ClientEventHandler.customZoom, 255, 0, 0, 255, "lpvo", true); } AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, -0.012, 0.02, 1.25229375, 0.3); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/AK47ItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/AK47ItemRenderer.java index d8ee1b022..4484921c9 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/AK47ItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/AK47ItemRenderer.java @@ -101,9 +101,9 @@ public class AK47ItemRenderer extends GeoItemRenderer { int scopeType = GunData.from(itemStack).attachment.get(AttachmentType.SCOPE); switch (scopeType) { - case 1 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, -0.03, 0.27363125, 20, 255, 0, 0, 255, "kobra", false); - case 2 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, -0.04, 0.28, 18, 255, 0, 0, 255, "pso_1", true); - case 3 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, -0.03, 0.28, Math.max(30 - 4 * ClientEventHandler.customZoom, 3), 255, 0, 0, 255, "lpvo", true); + case 1 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, -0.03, 0.27363125, 20, 1, 255, 0, 0, 255, "kobra", false); + case 2 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, -0.04, 0.28, 18, 1, 255, 0, 0, 255, "pso_1", true); + case 3 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, -0.03, 0.28, 36, (float) ClientEventHandler.customZoom, 255, 0, 0, 255, "lpvo", true); } AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 1.06875, 0.3); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/BocekItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/BocekItemRenderer.java index 55879d1a9..f2db7e931 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/BocekItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/BocekItemRenderer.java @@ -89,6 +89,8 @@ public class BocekItemRenderer extends GeoItemRenderer { bone.setHidden(data.ammo.get() != 0); } + AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, 0.002, 0.1790625, 0.13, 0.08f, 255, 0, 0, 255, "dot", false); + if (renderingArms) { AnimationHelper.renderArms(mc, player, this.transformType, stack, name, bone, SCALE_RECIPROCAL, this.currentBuffer, type, packedLightIn, false, false); } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/DevotionItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/DevotionItemRenderer.java index 02d452783..4be7c6ede 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/DevotionItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/DevotionItemRenderer.java @@ -2,7 +2,6 @@ package com.atsuishio.superbwarfare.client.renderer.item; import com.atsuishio.superbwarfare.client.AnimationHelper; import com.atsuishio.superbwarfare.client.model.item.DevotionItemModel; -import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.machinegun.DevotionItem; import com.mojang.blaze3d.vertex.PoseStack; @@ -24,8 +23,6 @@ public class DevotionItemRenderer extends GeoItemRenderer { public DevotionItemRenderer() { super(new DevotionItemModel()); - // TODO layer -// this.addRenderLayer(new DevotionLayer(this)); } @Override @@ -80,9 +77,7 @@ public class DevotionItemRenderer extends GeoItemRenderer { AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 1.3875, 0.35); - if (name.equals("holo")) { - bone.setHidden(ClientEventHandler.zoomPos < 0.7 || !ClientEventHandler.zoom); - } + AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, 0, 0.22993125, 20, 1, 255, 0, 0, 255, "apex_2x", false); if (renderingArms) { AnimationHelper.renderArms(mc, player, this.transformType, stack, name, bone, SCALE_RECIPROCAL, this.currentBuffer, type, packedLightIn, true, true); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/Hk416ItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/Hk416ItemRenderer.java index 42ffcc5de..3a25e5d76 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/Hk416ItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/Hk416ItemRenderer.java @@ -92,9 +92,9 @@ public class Hk416ItemRenderer extends GeoItemRenderer { int scopeType = GunData.from(itemStack).attachment.get(AttachmentType.SCOPE); switch (scopeType) { - case 1 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, 0, 0.25, 30, 0, 255, 0, 255, "eotech", false); - case 2 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, 0, 0.313, 9, 255, 0, 0, 255, "acog", true); - case 3 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, 0, 0.29, Math.max(44 - 5 * ClientEventHandler.customZoom, 3), 255, 0, 0, 255, "lpvo", true); + case 1 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, 0, 0.25, 30, 1, 0, 255, 0, 255, "eotech", false); + case 2 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, 0, 0.313, 9, 1, 255, 0, 0, 255, "acog", true); + case 3 -> AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, 0, 0.29, 65, (float) ClientEventHandler.customZoom, 255, 0, 0, 255, "lpvo", true); } AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 1.440625, 0.3); diff --git a/src/main/resources/assets/superbwarfare/geo/bocek.geo.json b/src/main/resources/assets/superbwarfare/geo/bocek.geo.json index 78ad619ca..8f0835ee3 100644 --- a/src/main/resources/assets/superbwarfare/geo/bocek.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/bocek.geo.json @@ -39,6 +39,11 @@ "parent": "bone", "pivot": [0, 0, 0] }, + { + "name": "cross", + "parent": "0", + "pivot": [-0.02, 2.865, -1.94] + }, { "name": "lh", "parent": "0", @@ -18805,22 +18810,6 @@ } ] }, - { - "name": "dot", - "parent": "bone127", - "pivot": [-1.01232, 3.84123, 0.10947], - "cubes": [ - { - "origin": [-1.06107, 3.79248, 0.09322], - "size": [0.0975, 0.0975, 0.0325], - "pivot": [-1.01232, 3.84123, 0.10947], - "rotation": [0, 0, 45], - "uv": { - "north": {"uv": [113, 19], "uv_size": [0.5, 0.5]} - } - } - ] - }, { "name": "bone128", "parent": "Scope0", diff --git a/src/main/resources/assets/superbwarfare/geo/devotion.geo.json b/src/main/resources/assets/superbwarfare/geo/devotion.geo.json index 240ec66a9..53b0af8ed 100644 --- a/src/main/resources/assets/superbwarfare/geo/devotion.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/devotion.geo.json @@ -13115,23 +13115,9 @@ ] }, { - "name": "holo", + "name": "cross", "parent": "0", - "pivot": [0, 3.67891, -4.5], - "cubes": [ - { - "origin": [-0.19125, 3.48766, -4.5], - "size": [0.3825, 0.3825, 0], - "uv": { - "north": {"uv": [59.53906, 60.625], "uv_size": [3.125, 2.625]}, - "east": {"uv": [3.16406, 110.30469], "uv_size": [8, 8]}, - "south": {"uv": [53.28125, 2.78125], "uv_size": [5, 5]}, - "west": {"uv": [3.16406, 110.30469], "uv_size": [8, 8]}, - "up": {"uv": [11.16406, 118.30469], "uv_size": [-8, -8]}, - "down": {"uv": [11.16406, 118.30469], "uv_size": [-8, -8]} - } - } - ] + "pivot": [0, 3.67891, -4.5] }, { "name": "flare", diff --git a/src/main/resources/assets/superbwarfare/textures/crosshair/apex_2x.png b/src/main/resources/assets/superbwarfare/textures/crosshair/apex_2x.png new file mode 100644 index 000000000..72d59a1f1 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/crosshair/apex_2x.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/devotion.png b/src/main/resources/assets/superbwarfare/textures/item/devotion.png index d53ef1e67..2719df7d9 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/item/devotion.png and b/src/main/resources/assets/superbwarfare/textures/item/devotion.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/devotion_e.png b/src/main/resources/assets/superbwarfare/textures/item/devotion_e.png deleted file mode 100644 index f52dabf8c..000000000 Binary files a/src/main/resources/assets/superbwarfare/textures/item/devotion_e.png and /dev/null differ