Skip to content

Commit

Permalink
split off client api internals
Browse files Browse the repository at this point in the history
closes #317
  • Loading branch information
deirn committed Feb 10, 2025
1 parent 846dec2 commit 273a0f1
Show file tree
Hide file tree
Showing 8 changed files with 72 additions and 54 deletions.
14 changes: 0 additions & 14 deletions src/api/java/mcp/mobius/waila/api/__internal__/IApiService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import java.util.Collection;
import java.util.List;

import com.mojang.blaze3d.vertex.VertexConsumer;
import mcp.mobius.waila.api.IBlacklistConfig;
import mcp.mobius.waila.api.IData;
import mcp.mobius.waila.api.IInstanceRegistry;
Expand All @@ -15,18 +14,13 @@
import mcp.mobius.waila.api.IRegistryFilter;
import mcp.mobius.waila.api.ITheme;
import mcp.mobius.waila.api.IThemeType;
import mcp.mobius.waila.api.ITooltipComponent;
import mcp.mobius.waila.api.IWailaConfig;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.ToolMaterial;
import org.jetbrains.annotations.ApiStatus;
import org.joml.Matrix4f;

/**
* @hidden
Expand All @@ -52,18 +46,12 @@ public interface IApiService {

IWailaConfig getConfig();

void renderComponent(GuiGraphics ctx, ITooltipComponent component, int x, int y, DeltaTracker delta);

int getPairComponentColonOffset();

int getColonFontWidth();

int getFontColor();

void fillGradient(Matrix4f matrix, VertexConsumer buf, int x, int y, int w, int h, int start, int end);

void renderRectBorder(Matrix4f matrix, VertexConsumer buf, int x, int y, int w, int h, int s, int gradStart, int gradEnd);

<T extends ITheme> IThemeType.Builder<T> createThemeTypeBuilder(Class<T> clazz);

String getDefaultEnergyUnit();
Expand All @@ -80,6 +68,4 @@ public interface IApiService {

boolean isDevEnv();

MultiBufferSource getBufferSource(GuiGraphics ctx);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package mcp.mobius.waila.api.__internal__;

import com.mojang.blaze3d.vertex.VertexConsumer;
import mcp.mobius.waila.api.ITooltipComponent;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.renderer.MultiBufferSource;
import org.jetbrains.annotations.ApiStatus;
import org.joml.Matrix4f;

/** @hidden */
@ApiStatus.Internal
public interface IClientApiService {

IClientApiService INSTANCE = Internals.loadService(IClientApiService.class);

MultiBufferSource getBufferSource(GuiGraphics ctx);

void renderComponent(GuiGraphics ctx, ITooltipComponent component, int x, int y, DeltaTracker delta);

void fillGradient(Matrix4f matrix, VertexConsumer buf, int x, int y, int w, int h, int start, int end);

void renderRectBorder(Matrix4f matrix, VertexConsumer buf, int x, int y, int w, int h, int s, int gradStart, int gradEnd);

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import mcp.mobius.waila.api.IWailaConfig;
import mcp.mobius.waila.api.__internal__.ApiSide;
import mcp.mobius.waila.api.__internal__.IApiService;
import mcp.mobius.waila.api.__internal__.IClientApiService;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
Expand Down Expand Up @@ -48,14 +49,14 @@ public int getHeight() {
@Override
public void render(GuiGraphics ctx, int x, int y, DeltaTracker delta) {
var offset = key.getHeight() < height ? (height - key.getHeight()) / 2 : 0;
IApiService.INSTANCE.renderComponent(ctx, key, x, y + offset, delta);
IClientApiService.INSTANCE.renderComponent(ctx, key, x, y + offset, delta);

var font = Minecraft.getInstance().font;
offset = font.lineHeight < height ? (height - font.lineHeight) / 2 : 0;
ctx.drawString(font, ": ", x + getColonOffset(), y + offset, IWailaConfig.get().getOverlay().getColor().getTheme().getDefaultTextColor());

offset = value.getHeight() < height ? (height - value.getHeight()) / 2 : 0;
IApiService.INSTANCE.renderComponent(ctx, value, x + getColonOffset() + getColonWidth(), y + offset, delta);
IClientApiService.INSTANCE.renderComponent(ctx, value, x + getColonOffset() + getColonWidth(), y + offset, delta);
}

private int getColonOffset() {
Expand Down
4 changes: 2 additions & 2 deletions src/api/java/mcp/mobius/waila/api/util/WRenders.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.mojang.blaze3d.vertex.VertexConsumer;
import mcp.mobius.waila.api.__internal__.ApiSide;
import mcp.mobius.waila.api.__internal__.IApiService;
import mcp.mobius.waila.api.__internal__.IClientApiService;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
Expand All @@ -11,7 +11,7 @@
public final class WRenders {

public static MultiBufferSource bufferSource(GuiGraphics ctx) {
return IApiService.INSTANCE.getBufferSource(ctx);
return IClientApiService.INSTANCE.getBufferSource(ctx);
}

public static VertexConsumer buffer(GuiGraphics ctx, RenderType type) {
Expand Down
28 changes: 0 additions & 28 deletions src/main/java/mcp/mobius/waila/service/ApiService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import java.util.Collection;
import java.util.List;

import com.mojang.blaze3d.vertex.VertexConsumer;
import mcp.mobius.waila.Waila;
import mcp.mobius.waila.access.DataType;
import mcp.mobius.waila.api.IBlacklistConfig;
Expand All @@ -17,22 +16,16 @@
import mcp.mobius.waila.api.IRegistryFilter;
import mcp.mobius.waila.api.ITheme;
import mcp.mobius.waila.api.IThemeType;
import mcp.mobius.waila.api.ITooltipComponent;
import mcp.mobius.waila.api.IWailaConfig;
import mcp.mobius.waila.api.__internal__.IApiService;
import mcp.mobius.waila.config.JsonConfig;
import mcp.mobius.waila.gui.hud.TooltipRenderer;
import mcp.mobius.waila.gui.hud.theme.ThemeType;
import mcp.mobius.waila.mixin.GuiGraphicsAccess;
import mcp.mobius.waila.plugin.PluginInfo;
import mcp.mobius.waila.registry.InstanceRegistry;
import mcp.mobius.waila.registry.RegistryFilter;
import mcp.mobius.waila.util.DisplayUtil;
import mcp.mobius.waila.util.Log;
import mcp.mobius.waila.util.ModInfo;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.core.HolderSet;
import net.minecraft.core.Registry;
import net.minecraft.core.component.DataComponents;
Expand All @@ -48,7 +41,6 @@
import net.minecraft.world.item.component.CustomData;
import net.minecraft.world.item.enchantment.ItemEnchantments;
import net.minecraft.world.level.block.Block;
import org.joml.Matrix4f;

public abstract class ApiService implements IApiService {

Expand Down Expand Up @@ -122,11 +114,6 @@ public IWailaConfig getConfig() {
return Waila.CONFIG.get();
}

@Override
public void renderComponent(GuiGraphics ctx, ITooltipComponent component, int x, int y, DeltaTracker delta) {
DisplayUtil.renderComponent(ctx, component, x, y, 0, delta);
}

@Override
public int getPairComponentColonOffset() {
return TooltipRenderer.colonOffset;
Expand All @@ -142,16 +129,6 @@ public int getFontColor() {
return TooltipRenderer.state.getTheme().getDefaultTextColor();
}

@Override
public void fillGradient(Matrix4f matrix, VertexConsumer buf, int x, int y, int w, int h, int start, int end) {
DisplayUtil.fillGradient(matrix, buf, x, y, w, h, start, end);
}

@Override
public void renderRectBorder(Matrix4f matrix, VertexConsumer buf, int x, int y, int w, int h, int s, int gradStart, int gradEnd) {
DisplayUtil.renderRectBorder(matrix, buf, x, y, w, h, s, gradStart, gradEnd);
}

@Override
public <T extends ITheme> IThemeType.Builder<T> createThemeTypeBuilder(Class<T> clazz) {
return new ThemeType<>(clazz);
Expand Down Expand Up @@ -232,9 +209,4 @@ public boolean isDevEnv() {
return Waila.DEV;
}

@Override
public MultiBufferSource getBufferSource(GuiGraphics ctx) {
return ((GuiGraphicsAccess) ctx).wthit_bufferSource();
}

}
35 changes: 35 additions & 0 deletions src/main/java/mcp/mobius/waila/service/ClientApiService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package mcp.mobius.waila.service;

import com.mojang.blaze3d.vertex.VertexConsumer;
import mcp.mobius.waila.api.ITooltipComponent;
import mcp.mobius.waila.api.__internal__.IClientApiService;
import mcp.mobius.waila.mixin.GuiGraphicsAccess;
import mcp.mobius.waila.util.DisplayUtil;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.renderer.MultiBufferSource;
import org.joml.Matrix4f;

public class ClientApiService implements IClientApiService {

@Override
public void renderComponent(GuiGraphics ctx, ITooltipComponent component, int x, int y, DeltaTracker delta) {
DisplayUtil.renderComponent(ctx, component, x, y, 0, delta);
}

@Override
public void fillGradient(Matrix4f matrix, VertexConsumer buf, int x, int y, int w, int h, int start, int end) {
DisplayUtil.fillGradient(matrix, buf, x, y, w, h, start, end);
}

@Override
public void renderRectBorder(Matrix4f matrix, VertexConsumer buf, int x, int y, int w, int h, int s, int gradStart, int gradEnd) {
DisplayUtil.renderRectBorder(matrix, buf, x, y, w, h, s, gradStart, gradEnd);
}

@Override
public MultiBufferSource getBufferSource(GuiGraphics ctx) {
return ((GuiGraphicsAccess) ctx).wthit_bufferSource();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,10 @@
import mcp.mobius.waila.api.IThemeAccessor;
import mcp.mobius.waila.api.IThemeType;
import mcp.mobius.waila.api.IntFormat;
import mcp.mobius.waila.api.__internal__.IApiService;
import mcp.mobius.waila.api.__internal__.IClientApiService;
import mcp.mobius.waila.api.util.WRenders;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.renderer.CoreShaders;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.util.Mth;
import org.jetbrains.annotations.Range;
Expand Down Expand Up @@ -58,7 +57,6 @@ public void setPadding(Padding padding) {
public void renderTooltipBackground(GuiGraphics ctx, int x, int y, int width, int height, @Range(from = 0x00, to = 0xFF) int alpha, DeltaTracker delta) {
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.setShader(CoreShaders.POSITION_COLOR);

var buf = WRenders.buffer(ctx, RenderType.gui());
var matrix = ctx.pose().last().pose();
Expand All @@ -71,16 +69,16 @@ public void renderTooltipBackground(GuiGraphics ctx, int x, int y, int width, in
var bo2 = borderOffset * 2;

if (drawCorner) {
IApiService.INSTANCE.fillGradient(matrix, buf, x, y, width, height, bg, bg);
IClientApiService.INSTANCE.fillGradient(matrix, buf, x, y, width, height, bg, bg);
} else {
// @formatter:off
IApiService.INSTANCE.fillGradient(matrix, buf, x + bo , y , width - bo2, height , bg, bg);
IApiService.INSTANCE.fillGradient(matrix, buf, x , y + bo, bo , height - bo2, bg, bg);
IApiService.INSTANCE.fillGradient(matrix, buf, x + width - bo, y + bo, bo , height - bo2, bg, bg);
IClientApiService.INSTANCE.fillGradient(matrix, buf, x + bo , y , width - bo2, height , bg, bg);
IClientApiService.INSTANCE.fillGradient(matrix, buf, x , y + bo, bo , height - bo2, bg, bg);
IClientApiService.INSTANCE.fillGradient(matrix, buf, x + width - bo, y + bo, bo , height - bo2, bg, bg);
// @formatter:on
}

IApiService.INSTANCE.renderRectBorder(matrix, buf, x + bo, y + bo, width - bo2, height - bo2, borderSize, gradStart, gradEnd);
IClientApiService.INSTANCE.renderRectBorder(matrix, buf, x + bo, y + bo, width - bo2, height - bo2, borderSize, gradStart, gradEnd);

ctx.flush();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
mcp.mobius.waila.service.ClientApiService

0 comments on commit 273a0f1

Please sign in to comment.