diff --git a/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java b/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java index 72dc8812a..9a8845896 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/AnimationHelper.java @@ -189,7 +189,7 @@ public class AnimationHelper { RenderUtil.translateAwayFromPivotPoint(stack, bone); PoseStack.Pose pose = stack.last(); Matrix4f $$7 = pose.pose(); - VertexConsumer $$9 = buffer.getBuffer(ModRenderTypes.MUZZLE_FLASH_TYPE.apply(Mod.loc("textures/crosshair/" + name + ".png"))); + VertexConsumer $$9 = buffer.getBuffer(RenderType.entityTranslucentEmissive(Mod.loc("textures/crosshair/" + name + ".png"))); 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); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/ModRenderTypes.java b/src/main/java/com/atsuishio/superbwarfare/client/ModRenderTypes.java index 19d3b76d4..b31af721e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/ModRenderTypes.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/ModRenderTypes.java @@ -1,8 +1,11 @@ package com.atsuishio.superbwarfare.client; +import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.VertexFormat; import net.minecraft.Util; +import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.RenderStateShard; import net.minecraft.client.renderer.RenderType; import net.minecraft.resources.ResourceLocation; @@ -33,21 +36,29 @@ public class ModRenderTypes extends RenderType { //DickSheep的恩情还不完 + public static final TransparencyStateShard TEST_TRANSPARENCY = new TransparencyStateShard("test_transparency", () -> { + RenderSystem.enableBlend(); + RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE); + }, () -> { + RenderSystem.disableBlend(); + RenderSystem.defaultBlendFunc(); + }); + public static final Function MUZZLE_FLASH_TYPE = Util.memoize((location) -> { - TextureStateShard shard = new RenderStateShard.TextureStateShard(location, false, false); - RenderType.CompositeState state = RenderType.CompositeState.builder() - // 关键修复:使用内置的 POSITION_COLOR_TEX_SHADER(直接调用 ShaderStateShard) - .setShaderState(RENDERTYPE_EYES_SHADER) - // 启用半透明(确保正确排序) - .setTransparencyState(RenderStateShard.TRANSLUCENT_TRANSPARENCY) - // 绑定贴图 + TextureStateShard shard = new TextureStateShard(location, false, false); + CompositeState state = RenderType.CompositeState.builder() + // 关键:使用位置-颜色-贴图着色器 + .setShaderState(new RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexColorShader)) + // 启用半透明混合 + .setTransparencyState(TEST_TRANSPARENCY) + // 绑定贴图(替换为你的路径) .setTextureState(shard) // 禁用光照和覆盖颜色 .setLightmapState(RenderStateShard.NO_LIGHTMAP) .setOverlayState(RenderStateShard.NO_OVERLAY) - .setWriteMaskState(RenderStateShard.COLOR_WRITE) + // 深度测试配置 + .setWriteMaskState(RenderStateShard.COLOR_WRITE) // 允许颜色写入 .createCompositeState(false); - return RenderType.create("muzzle_flash", DefaultVertexFormat.POSITION_TEX_COLOR, VertexFormat.Mode.QUADS, 256, false, true, state); }); }