Skip to Content

按 API 自定义 Element / Frame / Background / Behind

自定义 ElementPainter

import link.botwmcs.fizzy.ui.element.ElementPainter; import link.botwmcs.fizzy.ui.element.ElementType; import net.minecraft.client.gui.GuiGraphics; public final class GuideLineElement implements ElementPainter { @Override public void render(GuiGraphics g, int leftPx, int topPx, int widthPx, int heightPx, float partialTick) { int y = topPx + Math.max(0, heightPx / 2); g.fill(leftPx, y, leftPx + widthPx, y + 1, 0xFF57D7FF); } @Override public ElementType type() { return ElementType.CUSTOM; } }

自定义 FramePainter

import link.botwmcs.fizzy.ui.frame.FizzyFrame; import link.botwmcs.fizzy.ui.frame.FrameMetrics; import link.botwmcs.fizzy.ui.frame.FramePainter; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; public final class AccentFrame implements FramePainter { private final FizzyFrame delegate; private Layout layout; public AccentFrame(Component title) { this.delegate = new FizzyFrame(title); } @Override public void paint(GuiGraphics g, int left, int top, int w, int h, boolean drawBottomEdge, boolean hasBelow) { delegate.paint(g, left, top, w, h, drawBottomEdge, hasBelow); g.fill(left + 2, top + 2, left + w - 2, top + 4, 0xFF57D7FF); } @Override public FrameMetrics metrics() { return delegate.metrics(); } @Override public void setLayout(int left, int top, int w, int h, boolean drawBottomEdge, boolean hasBelow) { this.layout = new Layout(left, top, w, h, drawBottomEdge, hasBelow); delegate.setLayout(left, top, w, h, drawBottomEdge, hasBelow); } @Override public Layout layout() { return layout; } }

自定义 BgPainter

import link.botwmcs.fizzy.ui.background.BgPainter; import link.botwmcs.fizzy.ui.frame.FramePainter; import net.minecraft.client.gui.GuiGraphics; public final class GridBg implements BgPainter { @Override public void paint(GuiGraphics g, FramePainter frame) { var a = frame.currentBackgroundArea(); g.fill(a.x(), a.y(), a.x() + a.w(), a.y() + a.h(), 0xCC111111); for (int x = a.x(); x < a.x() + a.w(); x += 9) { g.fill(x, a.y(), x + 1, a.y() + a.h(), 0x3314B8FF); } } }

自定义 BehindPainter

import link.botwmcs.fizzy.ui.behind.BehindPainter; import link.botwmcs.fizzy.ui.behind.BehindType; import link.botwmcs.fizzy.ui.frame.FramePainter; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; public final class DimBehind implements BehindPainter { @Override public void paint(GuiGraphics g, FramePainter painter, float partialTick) { var mc = Minecraft.getInstance(); int sw = mc.getWindow().getGuiScaledWidth(); int sh = mc.getWindow().getGuiScaledHeight(); g.fill(0, 0, sw, sh, 0x88000000); } @Override public BehindType type() { return BehindType.SOILD_COLOR; } }
Last updated on