diff --git a/gradle.properties b/gradle.properties index 64fc435..29231e8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,8 +2,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://modmuss50.me/fabric.html -minecraft_version=1.21.6 -yarn_mappings=1.21.6+build.1 +minecraft_version=1.21.5 +yarn_mappings=1.21.5+build.1 loader_version=0.17.2 # Mod Properties mod_version=2.0.0 @@ -11,5 +11,5 @@ maven_group=de.shiewk archives_base_name=Widgets # Dependencies # check this on https://modmuss50.me/fabric.html -fabric_version=0.127.0+1.21.6 -modmenu_version=15.0.0 +fabric_version=0.127.0+1.21.5 +modmenu_version=14.0.0 diff --git a/src/main/java/de/shiewk/widgets/client/WidgetRenderer.java b/src/main/java/de/shiewk/widgets/client/WidgetRenderer.java index 9fb5cb3..b83aa0f 100644 --- a/src/main/java/de/shiewk/widgets/client/WidgetRenderer.java +++ b/src/main/java/de/shiewk/widgets/client/WidgetRenderer.java @@ -7,7 +7,9 @@ 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.hud.HudElementRegistry; +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.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; @@ -17,16 +19,17 @@ import net.minecraft.util.Util; import net.minecraft.util.profiler.Profiler; import net.minecraft.util.profiler.Profilers; -public class WidgetRenderer implements ClientTickEvents.StartTick, ClientLifecycleEvents.ClientStarted { +public class WidgetRenderer implements ClientTickEvents.StartTick, ClientLifecycleEvents.ClientStarted, HudLayerRegistrationCallback { public static final Identifier LAYER_ID = Identifier.of(WidgetsMod.MOD_ID, "widgets-hud-layer"); private static MinecraftClient client; - public WidgetRenderer(){ - HudElementRegistry.addLast( + @Override + public void register(LayeredDrawerWrapper layeredDrawerWrapper) { + layeredDrawerWrapper.addLayer(IdentifiedLayer.of( LAYER_ID, this::renderWidgets - ); + )); } public void renderWidgets(DrawContext drawContext, RenderTickCounter tickCounter) { diff --git a/src/main/java/de/shiewk/widgets/client/WidgetsModClient.java b/src/main/java/de/shiewk/widgets/client/WidgetsModClient.java index 52432f1..ddd03b5 100644 --- a/src/main/java/de/shiewk/widgets/client/WidgetsModClient.java +++ b/src/main/java/de/shiewk/widgets/client/WidgetsModClient.java @@ -10,6 +10,7 @@ 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.fabricmc.fabric.api.event.player.AttackEntityCallback; import net.minecraft.client.MinecraftClient; import net.minecraft.client.option.KeyBinding; @@ -26,6 +27,7 @@ public class WidgetsModClient implements ClientModInitializer { WidgetRenderer widgetRenderer = new WidgetRenderer(); ClientTickEvents.START_CLIENT_TICK.register(widgetRenderer); ClientLifecycleEvents.CLIENT_STARTED.register(widgetRenderer); + HudLayerRegistrationCallback.EVENT.register(widgetRenderer); // manage widgets keybind configKeyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding( diff --git a/src/main/java/de/shiewk/widgets/client/screen/AnimatedScreen.java b/src/main/java/de/shiewk/widgets/client/screen/AnimatedScreen.java index 80c6955..23093ab 100644 --- a/src/main/java/de/shiewk/widgets/client/screen/AnimatedScreen.java +++ b/src/main/java/de/shiewk/widgets/client/screen/AnimatedScreen.java @@ -3,9 +3,9 @@ package de.shiewk.widgets.client.screen; import de.shiewk.widgets.utils.WidgetUtils; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; import net.minecraft.util.Util; -import org.joml.Matrix3x2fStack; public abstract class AnimatedScreen extends Screen { protected final Screen parent; @@ -23,17 +23,18 @@ public abstract class AnimatedScreen extends Screen { final boolean shouldAnimate = timeMs < animationDurationMs; if (shouldAnimate){ double translation = WidgetUtils.computeEasing(timeMs / animationDurationMs) * this.width; - Matrix3x2fStack stack = context.getMatrices().pushMatrix(); + MatrixStack stack = context.getMatrices(); + stack.push(); - stack.translate((float) -translation, 0, stack); + stack.translate((float) -translation, 0, 0); parent.render(context, -67, -67, delta); - stack.translate(this.width, 0, stack); + stack.translate(this.width, 0, 0); mouseX -= (int) translation; } super.render(context, mouseX, mouseY, delta); this.renderScreenContents(context, mouseX, mouseY, delta); if (shouldAnimate){ - context.getMatrices().popMatrix(); + context.getMatrices().pop(); } } diff --git a/src/main/java/de/shiewk/widgets/client/screen/WidgetConfigScreen.java b/src/main/java/de/shiewk/widgets/client/screen/WidgetConfigScreen.java index 3af9a6e..05baf08 100644 --- a/src/main/java/de/shiewk/widgets/client/screen/WidgetConfigScreen.java +++ b/src/main/java/de/shiewk/widgets/client/screen/WidgetConfigScreen.java @@ -11,9 +11,9 @@ import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.GridWidget; import net.minecraft.client.gui.widget.SimplePositioningWidget; import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; import net.minecraft.util.Util; -import org.joml.Matrix3x2fStack; import java.util.ArrayList; import java.util.function.Consumer; @@ -93,15 +93,16 @@ public class WidgetConfigScreen extends Screen { assert client != null; final double time = getScreenTimeMs(); if (time < 400){ - Matrix3x2fStack stack = context.getMatrices().pushMatrix(); + MatrixStack stack = context.getMatrices(); + stack.push(); final float v = (float) WidgetUtils.computeEasing(time / 400d); - stack.translate((float) (width / 2d - (width * v / 2d)), (float) (height / 2d - (height * v / 2d)), stack); - stack.scale(v, v, stack); + stack.translate((float) (width / 2d - (width * v / 2d)), (float) (height / 2d - (height * v / 2d)), 0); + stack.scale(v, v, 1); } super.render(context, mouseX, mouseY, delta); if (time < 400){ - context.getMatrices().popMatrix(); + context.getMatrices().pop(); } } diff --git a/src/main/java/de/shiewk/widgets/client/screen/components/ScaledTextWidget.java b/src/main/java/de/shiewk/widgets/client/screen/components/ScaledTextWidget.java index 01eff56..46984c4 100644 --- a/src/main/java/de/shiewk/widgets/client/screen/components/ScaledTextWidget.java +++ b/src/main/java/de/shiewk/widgets/client/screen/components/ScaledTextWidget.java @@ -4,8 +4,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.ClickableWidget; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; -import org.joml.Matrix3x2fStack; public class ScaledTextWidget extends ClickableWidget { @@ -25,10 +25,11 @@ public class ScaledTextWidget extends ClickableWidget { @Override protected void renderWidget(DrawContext context, int mouseX, int mouseY, float deltaTicks) { - Matrix3x2fStack stack = context.getMatrices().pushMatrix(); - stack.scale(scale); + MatrixStack stack = context.getMatrices(); + stack.push(); + stack.scale(scale, scale, 1); context.drawText(textRenderer, getMessage(), (int) (getX() / scale), (int) (getY() / scale), 0xffffffff, true); - stack.popMatrix(); + stack.pop(); } @Override diff --git a/src/main/java/de/shiewk/widgets/client/screen/components/WidgetListWidget.java b/src/main/java/de/shiewk/widgets/client/screen/components/WidgetListWidget.java index 7c022f4..1344488 100644 --- a/src/main/java/de/shiewk/widgets/client/screen/components/WidgetListWidget.java +++ b/src/main/java/de/shiewk/widgets/client/screen/components/WidgetListWidget.java @@ -12,9 +12,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; @@ -90,12 +90,13 @@ 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); - Matrix3x2fStack stack = context.getMatrices().pushMatrix(); - stack.translate(0, (float) -getScrollY(), stack); + MatrixStack stack = context.getMatrices(); + stack.push(); + stack.translate(0, (float) -getScrollY(), 0); for (WidgetWidget element : elements) { element.render(context, mouseX, (int) (mouseY + getScrollY()), delta); } - stack.popMatrix(); + stack.pop(); context.disableScissor(); } diff --git a/src/main/java/de/shiewk/widgets/client/screen/components/WidgetSettingsEditWidget.java b/src/main/java/de/shiewk/widgets/client/screen/components/WidgetSettingsEditWidget.java index c1605fd..8cfe7a4 100644 --- a/src/main/java/de/shiewk/widgets/client/screen/components/WidgetSettingsEditWidget.java +++ b/src/main/java/de/shiewk/widgets/client/screen/components/WidgetSettingsEditWidget.java @@ -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.*; @@ -52,13 +52,14 @@ 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); - Matrix3x2fStack matrices = context.getMatrices().pushMatrix(); - matrices.translate(0, (float) -getScrollY(), matrices); - matrices.pushMatrix(); - matrices.scale(2, 2, matrices); - matrices.translate(0, (float) -getScrollY(), matrices); + MatrixStack matrices = context.getMatrices(); + matrices.push(); + matrices.translate(0, (float) -getScrollY(), 0); + matrices.push(); + matrices.scale(2, 2, 1); + matrices.translate(0, (float) -getScrollY(), 0); context.drawText(textRenderer, widget.getName(), this.width / 4 - textRenderer.getWidth(widget.getName()) / 2, this.height / 100, COLOR_FG, true); - matrices.popMatrix(); + matrices.pop(); int y = textRenderer.fontHeight * 2 + this.height / 50 + 5; for (WidgetSettingOption setting : widget.getSettings().getCustomSettings()) { if (!setting.shouldShow()) continue; @@ -77,7 +78,7 @@ public class WidgetSettingsEditWidget extends ScrollableWidget { y += 5; } this.contentsHeight = y; - matrices.popMatrix(); + matrices.pop(); } @Override diff --git a/src/main/java/de/shiewk/widgets/client/screen/components/WidgetWidget.java b/src/main/java/de/shiewk/widgets/client/screen/components/WidgetWidget.java index d45338e..f606d7b 100644 --- a/src/main/java/de/shiewk/widgets/client/screen/components/WidgetWidget.java +++ b/src/main/java/de/shiewk/widgets/client/screen/components/WidgetWidget.java @@ -8,10 +8,10 @@ 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.ClickableWidget; +import net.minecraft.client.util.math.MatrixStack; 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; @@ -55,11 +55,12 @@ 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); - Matrix3x2fStack stack = context.getMatrices().pushMatrix(); - stack.scale(2, 2, stack); + MatrixStack stack = context.getMatrices(); + stack.push(); + stack.scale(2, 2, 1); int titleSize = textRenderer.getWidth(widget.getName()); context.drawText(textRenderer, widget.getName(), getX() / 2 + getWidth() / 4 - titleSize / 2, getY() / 2 + 4, COLOR_FG, false); - stack.popMatrix(); + stack.pop(); int y = this.getY() + 12 + textRenderer.fontHeight * 2; for (Iterator it = textRenderer.wrapLines(widget.getDescription(), this.getWidth() - 10).iterator(); it.hasNext(); y += 9) { OrderedText t = it.next(); diff --git a/src/main/java/de/shiewk/widgets/widgets/InventoryWidget.java b/src/main/java/de/shiewk/widgets/widgets/InventoryWidget.java index 6e3f216..199a5f5 100644 --- a/src/main/java/de/shiewk/widgets/widgets/InventoryWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/InventoryWidget.java @@ -7,9 +7,9 @@ import de.shiewk.widgets.widgets.settings.RGBAColorWidgetSetting; import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gl.RenderPipelines; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; @@ -98,13 +98,13 @@ public class InventoryWidget extends ResizableWidget { private void drawBackground(DrawContext context, long mt, int posX, int posY) { switch (mode){ - case VANILLA -> context.drawTexture(RenderPipelines.GUI_TEXTURED, VANILLA_INVENTORY, posX, posY, 0, 0, 176, 91, 176, 91); + case VANILLA -> context.drawTexture(RenderLayer::getGuiTextured, VANILLA_INVENTORY, posX, posY, 0, 0, 176, 91, 176, 91); case TEXTURE_PACK -> { context.enableScissor(posX, posY, posX + width(), posY + 6); - context.drawTexture(RenderPipelines.GUI_TEXTURED, TEXTURE_PACK_INVENTORY, posX, posY, 0, 0, 256, 256, 256, 256); + context.drawTexture(RenderLayer::getGuiTextured, TEXTURE_PACK_INVENTORY, posX, posY, 0, 0, 256, 256, 256, 256); context.disableScissor(); context.enableScissor(posX, posY + 6, posX + width(), posY + height()); - context.drawTexture(RenderPipelines.GUI_TEXTURED, TEXTURE_PACK_INVENTORY, posX, posY - 75, 0, 0, 256, 256, 256, 256); + context.drawTexture(RenderLayer::getGuiTextured, TEXTURE_PACK_INVENTORY, posX, posY - 75, 0, 0, 256, 256, 256, 256); context.disableScissor(); } case GRID -> { diff --git a/src/main/java/de/shiewk/widgets/widgets/ResizableWidget.java b/src/main/java/de/shiewk/widgets/widgets/ResizableWidget.java index de79888..b3a7178 100644 --- a/src/main/java/de/shiewk/widgets/widgets/ResizableWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/ResizableWidget.java @@ -6,9 +6,9 @@ import de.shiewk.widgets.WidgetSettings; import de.shiewk.widgets.widgets.settings.IntSliderWidgetSetting; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; import net.minecraft.util.Identifier; -import org.joml.Matrix3x2fStack; import java.util.ArrayList; import java.util.List; @@ -30,13 +30,13 @@ public abstract class ResizableWidget extends ModWidget { @Override public final void render(DrawContext context, long measuringTimeNano, TextRenderer textRenderer, int posX, int posY) { if (size != 1f){ - Matrix3x2fStack matrices = context.getMatrices(); - matrices.pushMatrix(); - matrices.translate(-(size-1) * posX, -(size-1) * posY, matrices); - matrices.scale(size, size, matrices); + MatrixStack matrices = context.getMatrices(); + matrices.push(); + matrices.translate(-(size-1) * posX, -(size-1) * posY, 0); + matrices.scale(size, size, 1); } this.renderScaled(context, measuringTimeNano, textRenderer, posX, posY); - if (size != 1f) context.getMatrices().popMatrix(); + if (size != 1f) context.getMatrices().pop(); } public abstract void renderScaled(DrawContext context, long measuringTimeNano, TextRenderer textRenderer, int posX, int posY);