按 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