Implemented text interface

This commit is contained in:
2026-03-08 02:30:47 +01:00
parent 66024ebfa2
commit c22a9ff5ae
9 changed files with 43 additions and 73 deletions
+1 -1
Submodule common updated: 7eb705d802...48494cd857
@@ -1,57 +0,0 @@
package org.saturnclient.impl;
import org.saturnclient.saturnclient.SaturnClient;
import net.minecraft.text.Style;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
public class Fonts {
public static final Identifier INTER = Identifier.of("saturnclient", "inter");
public static final Identifier INTER_BOLD = Identifier.of("saturnclient", "inter_bold");
public static final Identifier DEFAULT = Identifier.ofVanilla("default");
public static Identifier getFont(int font) {
switch (font) {
case 0:
return DEFAULT;
case 1:
return INTER;
default:
return INTER_BOLD;
}
}
public static Text setFont(String text, Identifier font) {
return Text.literal(text).setStyle(
Style.EMPTY.withFont(font));
}
public static Text setFont(String text, int font) {
return Text.literal(text).setStyle(
Style.EMPTY.withFont(getFont(font)));
}
public static int getWidth(String text, int font) {
int w = 0;
for (String line : text.split("\n")) {
w = Math.max(w, getWidth(line, getFont(font)));
}
return w;
}
private static int getWidth(String text, Identifier font) {
return SaturnClient.client.textRenderer.getWidth(setFont(text, font));
}
public static int getHeight() {
return 18;
}
public static int centerX(int w, String text, int font) {
return (w - Fonts.getWidth(text, font)) / 2;
}
public static int centerY(int h) {
return (h - 18) / 2;
}
}
@@ -0,0 +1,24 @@
package org.saturnclient.impl.mixins;
import org.saturnclient.common.ref.asset.IdentifierRef;
import org.saturnclient.common.ref.render.TextRef;
import org.saturnclient.saturnclient.SaturnClient;
import org.spongepowered.asm.mixin.Mixin;
import net.minecraft.text.Style;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
@Mixin(Text.class)
public abstract class TextMixin implements TextRef {
@Override
public TextRef withFont(IdentifierRef font) {
return (TextRef) (((Text) this).copy().setStyle(Style.EMPTY.withFont((Identifier) (Object) font)));
}
@Override
public int getWidth() {
return SaturnClient.client.textRenderer.getWidth((Text) this);
}
}
@@ -1,4 +1,4 @@
package org.saturnclient.impl;
package org.saturnclient.impl.provider;
import org.saturnclient.modules.Module;
import org.saturnclient.modules.ModManager.ModuleProvider;
@@ -2,7 +2,9 @@ package org.saturnclient.impl.provider;
import org.saturnclient.common.provider.RefConstructorProvider;
import org.saturnclient.common.ref.asset.IdentifierRef;
import org.saturnclient.common.ref.render.TextRef;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
public class RefConstructorImpl implements RefConstructorProvider {
@@ -15,4 +17,9 @@ public class RefConstructorImpl implements RefConstructorProvider {
public IdentifierRef identifier(String namespace, String path) {
return (IdentifierRef) (Object) Identifier.of(namespace, path);
}
@Override
public TextRef text(String text) {
return (TextRef) Text.literal(text);
}
}
@@ -7,7 +7,6 @@ import org.saturnclient.common.provider.SaturnProvider;
import org.saturnclient.common.ref.asset.IdentifierRef;
import org.saturnclient.common.ref.game.MinecraftClientRef;
import org.saturnclient.cosmetics.cloak.utils.IdentifierUtils;
import org.saturnclient.impl.Fonts;
import org.saturnclient.saturnclient.SaturnClient;
import net.minecraft.util.Identifier;
@@ -24,11 +23,6 @@ public class SaturnProviderImpl implements SaturnProvider {
&& SaturnClient.client.currentScreen == null;
}
@Override
public int getWidth(String text, int font) {
return Fonts.getWidth(text, font);
}
@Override
public void registerBufferedImageTexture(IdentifierRef i, BufferedImage bi) {
IdentifierUtils.registerBufferedImageTextureFast((Identifier) (Object) i, bi);
@@ -11,7 +11,7 @@ import org.saturnclient.cosmetics.Hats;
import org.saturnclient.cosmetics.cloak.Cloaks;
import org.saturnclient.common.bindings.SaturnClientBindings;
import org.saturnclient.common.provider.Providers;
import org.saturnclient.impl.FabricModuleProvider;
import org.saturnclient.impl.provider.FabricModuleProvider;
import org.saturnclient.impl.provider.RefConstructorImpl;
import org.saturnclient.impl.provider.SaturnProviderImpl;
import org.saturnclient.modules.ModManager;
@@ -59,12 +59,13 @@ public class EntityDrawerImpl implements EntityDrawer {
EntityRenderDispatcher entityRenderDispatcher = SaturnClient.client.getEntityRenderDispatcher();
entityRenderDispatcher.setRenderShadows(false);
// TODO add the method draw with vertex consumers
// renderScope.draw((vertexConsumers) -> {
// entityRenderDispatcher.render(entity, 0.0, 0.0, 0.0, 1.0F,
// renderScope.getMatrixStack(), vertexConsumers,
// 15728880);
// });
if (renderScope instanceof RenderScopeImpl r) {
r.draw((vertexConsumers) -> {
entityRenderDispatcher.render(entity, 0.0, 0.0, 0.0, 1.0F,
r.matrices, vertexConsumers,
15728880);
});
}
renderScope.draw();
entityRenderDispatcher.setRenderShadows(true);
renderScope.getMatrixStack().pop();
@@ -36,6 +36,7 @@ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ModelTransformationMode;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import net.minecraft.util.crash.CrashException;
import net.minecraft.util.crash.CrashReport;
@@ -130,7 +131,7 @@ public class RenderScopeImpl implements RenderScope {
matrices.translate(x, y + (i * Fonts.getHeight()), 0);
matrices.scale(scale, scale, 1.0f);
TextRenderer textRenderer = SaturnClient.client.textRenderer;
textRenderer.draw(org.saturnclient.impl.Fonts.setFont(line, font), 0,
textRenderer.draw((Text) Fonts.setFont(line, font), 0,
font == 0 ? 1 : 7, color, false,
this.matrices.peek().getPositionMatrix(),
this.vertexConsumers, TextLayerType.NORMAL, 0, 15728880);