修复火焰和准星

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); RenderUtil.translateAwayFromPivotPoint(stack, bone);
PoseStack.Pose pose = stack.last(); PoseStack.Pose pose = stack.last();
Matrix4f $$7 = pose.pose(); 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, 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, 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, 1.0F, 1, 1, 0, r, g, b, a);

View file

@ -1,8 +1,11 @@
package com.atsuishio.superbwarfare.client; 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.DefaultVertexFormat;
import com.mojang.blaze3d.vertex.VertexFormat; import com.mojang.blaze3d.vertex.VertexFormat;
import net.minecraft.Util; import net.minecraft.Util;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.client.renderer.RenderStateShard; import net.minecraft.client.renderer.RenderStateShard;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -33,21 +36,29 @@ public class ModRenderTypes extends RenderType {
//DickSheep的恩情还不完 //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) -> { public static final Function<ResourceLocation, RenderType> MUZZLE_FLASH_TYPE = Util.memoize((location) -> {
TextureStateShard shard = new RenderStateShard.TextureStateShard(location, false, false); TextureStateShard shard = new TextureStateShard(location, false, false);
RenderType.CompositeState state = RenderType.CompositeState.builder() CompositeState state = RenderType.CompositeState.builder()
// 关键修复使用内置的 POSITION_COLOR_TEX_SHADER直接调用 ShaderStateShard // 关键使用位置-颜色-贴图着色器
.setShaderState(RENDERTYPE_EYES_SHADER) .setShaderState(new RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexColorShader))
// 启用半透明确保正确排序 // 启用半透明混合
.setTransparencyState(RenderStateShard.TRANSLUCENT_TRANSPARENCY) .setTransparencyState(TEST_TRANSPARENCY)
// 绑定贴图 // 绑定贴图替换为你的路径
.setTextureState(shard) .setTextureState(shard)
// 禁用光照和覆盖颜色 // 禁用光照和覆盖颜色
.setLightmapState(RenderStateShard.NO_LIGHTMAP) .setLightmapState(RenderStateShard.NO_LIGHTMAP)
.setOverlayState(RenderStateShard.NO_OVERLAY) .setOverlayState(RenderStateShard.NO_OVERLAY)
.setWriteMaskState(RenderStateShard.COLOR_WRITE) // 深度测试配置
.setWriteMaskState(RenderStateShard.COLOR_WRITE) // 允许颜色写入
.createCompositeState(false); .createCompositeState(false);
return RenderType.create("muzzle_flash", DefaultVertexFormat.POSITION_TEX_COLOR, VertexFormat.Mode.QUADS, 256, false, true, state); return RenderType.create("muzzle_flash", DefaultVertexFormat.POSITION_TEX_COLOR, VertexFormat.Mode.QUADS, 256, false, true, state);
}); });
} }