From 35edff5a5c504ad23007b641446f22a90229ebdb Mon Sep 17 00:00:00 2001 From: LostLuma Date: Thu, 20 Feb 2025 23:22:10 +0100 Subject: [PATCH] Fix crash when search yields no results Signed-off-by: Lilly Rose Berner --- build.gradle | 3 +++ gradle.properties | 3 ++- .../modmenu/mixin/ListWidgetMixin.java | 27 +++++++++++++++++++ src/main/resources/fabric.mod.json | 2 +- src/main/resources/mixins.modmenu.json | 4 +++ 5 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/terraformersmc/modmenu/mixin/ListWidgetMixin.java diff --git a/build.gradle b/build.gradle index 8a7dcd3a..f0656ec9 100644 --- a/build.gradle +++ b/build.gradle @@ -23,6 +23,9 @@ dependencies { modImplementation "net.fabricmc:fabric-loader:${project.fabric_loader_version}" compileOnly "org.quiltmc:quilt-loader:${project.quilt_loader_version}" + implementation(annotationProcessor("io.github.llamalad7:mixinextras-fabric:${project.mixinextras_version}")) + include("io.github.llamalad7:mixinextras-fabric:${project.mixinextras_version}:slim") + ploceus.dependOsl(project.osl_version) } diff --git a/gradle.properties b/gradle.properties index 2722bd67..cdbe311e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,6 +8,7 @@ archives_base_name = modmenu # Dependencies minecraft_version = 1.12.2 feather_build = 19 -fabric_loader_version = 0.14.22 +fabric_loader_version = 0.16.10 quilt_loader_version = 0.19.2 +mixinextras_version=0.5.0-beta.5 osl_version = 0.10.3 diff --git a/src/main/java/com/terraformersmc/modmenu/mixin/ListWidgetMixin.java b/src/main/java/com/terraformersmc/modmenu/mixin/ListWidgetMixin.java new file mode 100644 index 00000000..9a3bf557 --- /dev/null +++ b/src/main/java/com/terraformersmc/modmenu/mixin/ListWidgetMixin.java @@ -0,0 +1,27 @@ +package com.terraformersmc.modmenu.mixin; + +import com.llamalad7.mixinextras.expression.Definition; +import com.llamalad7.mixinextras.expression.Expression; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.client.gui.widget.ListWidget; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(ListWidget.class) +public abstract class ListWidgetMixin { + @Shadow + protected abstract int getHeight(); + + @Definition(id = "maxScroll", local = @Local(type = int.class, ordinal = 7)) + @Expression("maxScroll > 0") + @ModifyExpressionValue(method = "render(IIF)V", at = @At("MIXINEXTRAS:EXPRESSION")) + private boolean skipBlock(boolean original) { + if (this.getHeight() == 0) { + return false; + } else { + return original; + } + } +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 060186e3..98643fd4 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -21,7 +21,7 @@ }, "depends": { "minecraft": "1.12.x", - "fabricloader": ">=0.14.21", + "fabricloader": ">=0.16.10", "osl-entrypoints": ">=0.4.0", "osl-resource-loader": ">=0.2.3" }, diff --git a/src/main/resources/mixins.modmenu.json b/src/main/resources/mixins.modmenu.json index cb2a44ca..33460521 100644 --- a/src/main/resources/mixins.modmenu.json +++ b/src/main/resources/mixins.modmenu.json @@ -6,10 +6,14 @@ "client": [ "AccessorButtonWidget", "InvokerScreen", + "ListWidgetMixin", "MixinGameMenu", "MixinTitleScreen" ], "injectors": { "defaultRequire": 1 + }, + "mixinextras": { + "minVersion": "0.5.0-beta.5" } }