修复火焰和准星

This commit is contained in:
Atsuishio 2025-04-25 14:55:41 +08:00
parent 88916eeb8e
commit dcc749650e
2 changed files with 21 additions and 10 deletions

View file

@ -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);

View file

@ -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<ResourceLocation, RenderType> 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);
});
}