实现提示文字渐出效果

This commit is contained in:
Light_Quanta 2024-05-21 17:21:49 +08:00
parent 3a881a2f5f
commit eb2ca0f08d
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959

View file

@ -1,5 +1,7 @@
package net.mcreator.target.client.screens; package net.mcreator.target.client.screens;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.mcreator.target.TargetMod; import net.mcreator.target.TargetMod;
import net.mcreator.target.event.KillMessageHandler; import net.mcreator.target.event.KillMessageHandler;
import net.mcreator.target.init.TargetModDamageTypes; import net.mcreator.target.init.TargetModDamageTypes;
@ -74,10 +76,25 @@ public class KillMessageOverlay {
int targetNameWidth = font.width(targetName.get()); int targetNameWidth = font.width(targetName.get());
var gui = event.getGuiGraphics();
gui.pose().pushPose();
RenderSystem.disableDepthTest();
RenderSystem.depthMask(false);
RenderSystem.enableBlend();
RenderSystem.blendFuncSeparate(
GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE,
GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE
);
float alpha = (100 - record.tick) / 100f;
// TODO 实现图标半透明渲染
gui.setColor(1, 1, 1, alpha);
// 击杀提示是右对齐的这里从右向左渲染 // 击杀提示是右对齐的这里从右向左渲染
// 渲染被击杀者名称 // 渲染被击杀者名称
event.getGuiGraphics().drawString( gui.drawString(
Minecraft.getInstance().font, Minecraft.getInstance().font,
targetName.get(), targetName.get(),
w - targetNameWidth - 10f, w - targetNameWidth - 10f,
@ -92,7 +109,7 @@ public class KillMessageOverlay {
ResourceLocation damageTypeIcon = getDamageTypeIcon(record); ResourceLocation damageTypeIcon = getDamageTypeIcon(record);
if (damageTypeIcon != null) { if (damageTypeIcon != null) {
event.getGuiGraphics().blit(damageTypeIcon, gui.blit(damageTypeIcon,
damageTypeIconW, damageTypeIconW,
h - 2, h - 2,
0, 0,
@ -112,7 +129,7 @@ public class KillMessageOverlay {
ResourceLocation resourceLocation = gunItem.getGunIcon(); ResourceLocation resourceLocation = gunItem.getGunIcon();
event.getGuiGraphics().blit(resourceLocation, gui.blit(resourceLocation,
itemIconW, itemIconW,
h, h,
0, 0,
@ -128,7 +145,7 @@ public class KillMessageOverlay {
if (record.stack.getItem().getDescriptionId().equals("item.dreamaticvoyage.world_peace_staff")) { if (record.stack.getItem().getDescriptionId().equals("item.dreamaticvoyage.world_peace_staff")) {
renderItem = true; renderItem = true;
event.getGuiGraphics().blit(WORLD_PEACE_STAFF, gui.blit(WORLD_PEACE_STAFF,
itemIconW, itemIconW,
h, h,
0, 0,
@ -161,7 +178,7 @@ public class KillMessageOverlay {
nameW -= 18; nameW -= 18;
} }
event.getGuiGraphics().drawString( gui.drawString(
Minecraft.getInstance().font, Minecraft.getInstance().font,
attackerName.get(), attackerName.get(),
nameW, nameW,
@ -170,6 +187,12 @@ public class KillMessageOverlay {
false false
); );
RenderSystem.defaultBlendFunc();
RenderSystem.disableBlend();
RenderSystem.depthMask(true);
RenderSystem.enableDepthTest();
gui.pose().popPose();
} }
@Nullable @Nullable
@ -193,7 +216,6 @@ public class KillMessageOverlay {
} else if (record.damageType == TargetModDamageTypes.MINE) { } else if (record.damageType == TargetModDamageTypes.MINE) {
icon = CLAYMORE; icon = CLAYMORE;
} else { } else {
icon = GENERIC; icon = GENERIC;
} }
} }