1
mirror of https://github.com/Shiewk/Widgets.git synced 2026-04-28 11:34:17 +02:00

(1.6.1) 1.21.6 support

This commit is contained in:
Shy
2025-07-25 12:31:27 +02:00
parent 070e0d86b6
commit e1e13545c9
16 changed files with 81 additions and 82 deletions
@@ -8,9 +8,7 @@ import de.shiewk.widgets.client.screen.WidgetConfigScreen;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.rendering.v1.HudLayerRegistrationCallback;
import net.fabricmc.fabric.api.client.rendering.v1.IdentifiedLayer;
import net.fabricmc.fabric.api.client.rendering.v1.LayeredDrawerWrapper;
import net.fabricmc.fabric.api.client.rendering.v1.hud.HudElementRegistry;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
@@ -22,18 +20,16 @@ import net.minecraft.util.profiler.Profilers;
import static de.shiewk.widgets.WidgetUtils.translateToScreen;
public class WidgetRenderer implements HudLayerRegistrationCallback, ClientTickEvents.StartTick, ClientLifecycleEvents.ClientStarted {
public class WidgetRenderer implements ClientTickEvents.StartTick, ClientLifecycleEvents.ClientStarted {
public static final Identifier LAYER_ID = Identifier.of(WidgetsMod.MOD_ID, "widgets-hud-layer");
private static MinecraftClient client;
@Override
public void register(LayeredDrawerWrapper layeredDrawer) {
layeredDrawer.addLayer(IdentifiedLayer.of(
public WidgetRenderer(){
HudElementRegistry.addLast(
LAYER_ID,
this::renderWidgets
));
);
}
public void renderWidgets(DrawContext drawContext, RenderTickCounter tickCounter) {
@@ -10,7 +10,6 @@ import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientEntityEvents;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.fabricmc.fabric.api.client.rendering.v1.HudLayerRegistrationCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.util.InputUtil;
@@ -24,9 +23,9 @@ public class WidgetsModClient implements ClientModInitializer {
@Override
public void onInitializeClient() {
HudLayerRegistrationCallback.EVENT.register(new WidgetRenderer());
ClientTickEvents.START_CLIENT_TICK.register(new WidgetRenderer());
ClientLifecycleEvents.CLIENT_STARTED.register(new WidgetRenderer());
WidgetRenderer widgetRenderer = new WidgetRenderer();
ClientTickEvents.START_CLIENT_TICK.register(widgetRenderer);
ClientLifecycleEvents.CLIENT_STARTED.register(widgetRenderer);
// manage widgets keybind
configKeyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding(
@@ -5,6 +5,7 @@ import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.text.Text;
import net.minecraft.util.Util;
import org.joml.Matrix3x2fStack;
public abstract class AnimatedScreen extends Screen {
protected final Screen parent;
@@ -22,16 +23,17 @@ public abstract class AnimatedScreen extends Screen {
final boolean shouldAnimate = timeMs < animationDurationMs;
if (shouldAnimate){
double translation = WidgetUtils.computeEasing(timeMs / animationDurationMs) * this.width;
context.getMatrices().push();
context.getMatrices().translate(-translation, 0, 0);
Matrix3x2fStack stack = context.getMatrices().pushMatrix();
stack.translate((float) -translation, 0, stack);
parent.render(context, (int) (mouseX + translation), mouseY, delta);
context.getMatrices().translate(this.width, 0, 0);
stack.translate(this.width, 0, stack);
mouseX -= (int) translation;
}
super.render(context, mouseX, mouseY, delta);
this.renderScreenContents(context, mouseX, mouseY, delta);
if (shouldAnimate){
context.getMatrices().pop();
context.getMatrices().popMatrix();
}
}
@@ -11,6 +11,7 @@ import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.text.Text;
import net.minecraft.util.Util;
import org.joml.Matrix3x2fStack;
import java.util.ArrayList;
import java.util.Objects;
@@ -103,17 +104,17 @@ public class WidgetConfigScreen extends Screen {
assert client != null;
final double time = getScreenTimeMs();
if (time < 400){
context.getMatrices().push();
Matrix3x2fStack stack = context.getMatrices().pushMatrix();
final float v = (float) WidgetUtils.computeEasing(time / 400d);
context.getMatrices().translate(width / 2d - (width * v / 2d), height / 2d - (height * v / 2d), 0);
context.getMatrices().scale(v, v, 1);
stack.translate((float) (width / 2d - (width * v / 2d)), (float) (height / 2d - (height * v / 2d)), stack);
stack.scale(v, v, stack);
}
super.render(context, mouseX, mouseY, delta);
if (widgetList != null){
widgetList.render(context, mouseX, mouseY, delta);
}
if (time < 400){
context.getMatrices().pop();
context.getMatrices().popMatrix();
}
}
@@ -11,9 +11,9 @@ import net.minecraft.client.gui.widget.GridWidget;
import net.minecraft.client.gui.widget.ScrollableWidget;
import net.minecraft.client.gui.widget.SimplePositioningWidget;
import net.minecraft.client.sound.PositionedSoundInstance;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.sound.SoundEvents;
import net.minecraft.text.Text;
import org.joml.Matrix3x2fStack;
import java.util.ArrayList;
import java.util.List;
@@ -68,13 +68,12 @@ public class WidgetListWidget extends ScrollableWidget {
@Override
protected void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) {
context.enableScissor(getX(), getY(), getX()+width, getY()+height);
MatrixStack matrices = context.getMatrices();
matrices.push();
matrices.translate(0, -getScrollY(), 0);
Matrix3x2fStack stack = context.getMatrices().pushMatrix();
stack.translate(0, (float) -getScrollY(), stack);
for (WidgetWidget element : elements) {
element.render(context, mouseX, (int) (mouseY + getScrollY()), delta);
}
matrices.pop();
stack.popMatrix();
context.disableScissor();
}
@@ -6,8 +6,8 @@ import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
import net.minecraft.client.gui.widget.ScrollableWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;
import org.joml.Matrix3x2fStack;
import java.awt.*;
@@ -50,14 +50,13 @@ public class WidgetSettingsEditWidget extends ScrollableWidget {
@Override
protected void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) {
context.fill(getX(), getY(), getX()+width, getY()+height, COLOR_BG);
MatrixStack matrices = context.getMatrices();
matrices.push();
matrices.translate(0, -getScrollY(), 0);
matrices.push();
matrices.scale(2, 2, 2);
matrices.translate(0, -getScrollY(), 0);
Matrix3x2fStack matrices = context.getMatrices().pushMatrix();
matrices.translate(0, (float) -getScrollY(), matrices);
matrices.pushMatrix();
matrices.scale(2, 2, matrices);
matrices.translate(0, (float) -getScrollY(), matrices);
context.drawText(textRenderer, widget.getName(), this.width / 4 - textRenderer.getWidth(widget.getName()) / 2, this.height / 100, COLOR_FG, true);
matrices.pop();
matrices.popMatrix();
int y = textRenderer.fontHeight * 2 + this.height / 50 + 5;
for (WidgetSettingOption setting : widget.getSettings().getCustomSettings()) {
if (!setting.shouldShow()) continue;
@@ -76,7 +75,7 @@ public class WidgetSettingsEditWidget extends ScrollableWidget {
y += 5;
}
this.contentsHeight = y;
matrices.pop();
matrices.popMatrix();
}
@Override
@@ -11,6 +11,7 @@ import net.minecraft.client.gui.widget.ClickableWidget;
import net.minecraft.text.OrderedText;
import net.minecraft.text.Text;
import net.minecraft.util.Util;
import org.joml.Matrix3x2fStack;
import java.awt.*;
import java.util.Iterator;
@@ -53,11 +54,11 @@ public class WidgetWidget extends ClickableWidget {
boolean hover = this.isMouseOver(mouseX, mouseY);
boolean widgetEnabled = widget.getSettings().isEnabled();
context.fill(this.getX(), this.getY(), this.getX() + this.getWidth(), this.getY() + this.getHeight(), hover ? COLOR_BG_HOVER : COLOR_BG);
context.getMatrices().push();
context.getMatrices().scale(2, 2, 1);
Matrix3x2fStack stack = context.getMatrices().pushMatrix();
stack.scale(2, 2, stack);
int titleSize = textRenderer.getWidth(widget.getName());
context.drawText(textRenderer, widget.getName(), getX() / 2 + getWidth() / 4 - titleSize / 2, getY() / 2 + 4, COLOR_FG, false);
context.getMatrices().pop();
stack.popMatrix();
int y = this.getY() + 12 + textRenderer.fontHeight * 2;
for (Iterator<OrderedText> it = textRenderer.wrapLines(widget.getDescription(), this.getWidth() - 10).iterator(); it.hasNext(); y += 9) {
OrderedText t = it.next();