diff --git a/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java b/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java index 18d7393f0..bc722432b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java @@ -1,6 +1,5 @@ package com.atsuishio.superbwarfare.client; -import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; @@ -19,8 +18,6 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; -import org.joml.Matrix3f; -import org.joml.Matrix4f; import software.bernie.geckolib.animation.AnimationProcessor; import software.bernie.geckolib.cache.object.GeoBone; import software.bernie.geckolib.util.RenderUtil; @@ -113,16 +110,16 @@ public class AnimationHelper { RenderUtil.scaleMatrixForBone(stack, bone); RenderUtil.translateAwayFromPivotPoint(stack, bone); PoseStack.Pose pose = stack.last(); - Matrix3f normal = pose.normal(); - VertexConsumer vertexConsumer = buffer.getBuffer(RenderType.eyes(Mod.loc("textures/particle/flare.png"))); - vertex(vertexConsumer, pose, normal, packedLightIn, 0.0F, 0, 0, 1); - vertex(vertexConsumer, pose, normal, packedLightIn, 1.0F, 0, 1, 1); - vertex(vertexConsumer, pose, normal, packedLightIn, 1.0F, 1, 1, 0); - vertex(vertexConsumer, pose, normal, packedLightIn, 0.0F, 1, 0, 0); + VertexConsumer vertexConsumer = buffer.getBuffer(ModRenderTypes.MUZZLE_FLASH_TYPE); + vertex(vertexConsumer, pose, packedLightIn, 0.0F, 0, 0, 1); + vertex(vertexConsumer, pose, packedLightIn, 1.0F, 0, 1, 1); + vertex(vertexConsumer, pose, packedLightIn, 1.0F, 1, 1, 0); + vertex(vertexConsumer, pose, packedLightIn, 0.0F, 1, 0, 0); stack.popPose(); } } - private static void vertex(VertexConsumer pConsumer, PoseStack.Pose pPose, Matrix3f pNormal, int pLightmapUV, float pX, float pY, int pU, int pV) { + + private static void vertex(VertexConsumer pConsumer, PoseStack.Pose pPose, int pLightmapUV, float pX, float pY, int pU, int pV) { pConsumer.addVertex(pPose, pX - 0.5F, pY - 0.5F, 0.0F) .setColor(255, 255, 255, 255) .setUv((float) pU, (float) pV) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/ModRenderTypes.java b/src/main/java/com/atsuishio/superbwarfare/client/ModRenderTypes.java index ca5b8ea29..06df4adf0 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/ModRenderTypes.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/ModRenderTypes.java @@ -1,5 +1,6 @@ package com.atsuishio.superbwarfare.client; +import com.atsuishio.superbwarfare.Mod; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.VertexFormat; import net.minecraft.Util; @@ -30,4 +31,37 @@ public class ModRenderTypes extends RenderType { .setCullState(NO_CULL).setOverlayState(NO_OVERLAY).setWriteMaskState(COLOR_WRITE).createCompositeState(false); return RenderType.create("illuminated", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, false, state); }); + + //DickSheep的恩情还不完 + + public static final RenderType MUZZLE_FLASH_TYPE = + RenderType.create( + "muzzle_flash", + DefaultVertexFormat.POSITION_TEX_COLOR, // 注意:格式名改为 POSITION_COLOR_TEX(不是 TEX) + VertexFormat.Mode.QUADS, + 256, + false, + true, + // 使用新的 CompositeState 构造方式 + RenderType.CompositeState.builder() + // 关键修复:使用内置的 POSITION_COLOR_TEX_SHADER(直接调用 ShaderStateShard) + .setShaderState(RENDERTYPE_EYES_SHADER) + // 启用半透明(确保正确排序) + .setTransparencyState(RenderStateShard.TRANSLUCENT_TRANSPARENCY) + // 绑定贴图(替换为你的路径) + .setTextureState(new RenderStateShard.TextureStateShard( + Mod.loc("textures/particle/flare.png"), + false, // 不模糊 + false // 不生成Mipmap + )) + // 禁用光照和覆盖颜色 + .setLightmapState(RenderStateShard.NO_LIGHTMAP) + .setOverlayState(RenderStateShard.NO_OVERLAY) + // 深度测试和写入设置 +// .setDepthTestState(RenderStateShard.NO_DEPTH_TEST) + .setWriteMaskState(RenderStateShard.COLOR_WRITE) + .createCompositeState(false) + ); + + } diff --git a/src/main/resources/assets/superbwarfare/textures/particle/flare.png b/src/main/resources/assets/superbwarfare/textures/particle/flare.png index 64d2bacd4..c4ea55e4d 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/particle/flare.png and b/src/main/resources/assets/superbwarfare/textures/particle/flare.png differ