翻新木仓口火焰

This commit is contained in:
Atsuishio 2025-04-23 23:31:14 +08:00 committed by Light_Quanta
parent 9a565d00dc
commit a78bfaf004
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
3 changed files with 41 additions and 10 deletions

View file

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

View file

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

After

Width:  |  Height:  |  Size: 174 KiB