Как сделать прозрачность для Фона

Версия Minecraft
1.20.1
API
Forge
Пожалуйста, оформляйте код в соответствии с правилами форума
package com.example.mymod;

import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.brigadier.arguments.StringArgumentType;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.network.chat.Component;
import net.minecraftforge.client.event.RenderGuiOverlayEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegisterCommandsEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;

import static net.minecraft.commands.Commands.argument;
import static net.minecraft.commands.Commands.literal;

@Mod("mymod")
public class MyMod {
public static final String MODID = "mymod";

private boolean showMessage = false;
private String customMessage = "";
private long messageStartTime = 0;

public MyMod() {
// Регистрация событий
MinecraftForge.EVENT_BUS.register(this); // Общие события
}

@SubscribeEvent
public void onRegisterCommands(RegisterCommandsEvent event) {
event.getDispatcher().register(
literal("showmessage")
.then(argument("message", StringArgumentType.string())
.executes(context -> {
customMessage = StringArgumentType.getString(context, "message");
showMessage = true;
messageStartTime = System.currentTimeMillis();

context.getSource().sendSuccess(
() -> Component.literal("Сообщение установлено: " + customMessage),
false
);
return 1;
})
)
);
}

@SubscribeEvent
public void onRenderGuiOverlay(RenderGuiOverlayEvent.Post event) {
if (showMessage) {
long currentTime = System.currentTimeMillis();

if (currentTime - messageStartTime > 10_000) {
showMessage = false;
return;
}

renderCustomMessage(event.getGuiGraphics(), customMessage);
}
}

private void renderCustomMessage(GuiGraphics guiGraphics, String message) {
Minecraft mc = Minecraft.getInstance();
if (mc.font != null && !message.isEmpty()) {
int screenWidth = mc.getWindow().getGuiScaledWidth();
int screenHeight = mc.getWindow().getGuiScaledHeight();

int messageWidth = mc.font.width(message);
int messageHeight = mc.font.lineHeight;

int x = (screenWidth - messageWidth) / 2;
int y = screenHeight - 40;

int padding = 5;
int boxWidth = messageWidth + padding * 2;
int boxHeight = messageHeight + padding * 2;

int boxX = x - padding;
int boxY = y - padding;

drawTransparentRectangle(guiGraphics, boxX, boxY, boxX + boxWidth, boxY + boxHeight, 0x80000000);

guiGraphics.drawString(mc.font, message, x, y, 0xFFFFFF, false);
}
}

private void drawTransparentRectangle(GuiGraphics guiGraphics, int x1, int y1, int x2, int y2, int color) {
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
guiGraphics.fill(x1, y1, x2, y2, color);
RenderSystem.disableBlend();
}
}


Снимок экрана 2025-01-19 203631.png
Ну не получаеться у меня :(
 
Назад
Сверху