diff --git a/gradle.properties b/gradle.properties index 75b4592..ec9099a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,6 +6,6 @@ minecraft_version=1.18 yarn_mappings=1.18+build.1 loader_version=0.14.8 # Mod Properties -mod_version=0.4-1.18 +mod_version=0.5-1.18 maven_group=me.melontini archives_base_name=recipe-book-is-pain diff --git a/src/main/java/me/melontini/recipebookispain/access/RecipeGroupButtonAccess.java b/src/main/java/me/melontini/recipebookispain/access/RecipeGroupButtonAccess.java new file mode 100644 index 0000000..7e6c2a4 --- /dev/null +++ b/src/main/java/me/melontini/recipebookispain/access/RecipeGroupButtonAccess.java @@ -0,0 +1,7 @@ +package me.melontini.recipebookispain.access; + +public interface RecipeGroupButtonAccess { + int getPage(); + + void setPage(int page); +} diff --git a/src/main/java/me/melontini/recipebookispain/mixin/RecipeBookWidgetMixin.java b/src/main/java/me/melontini/recipebookispain/mixin/RecipeBookWidgetMixin.java index 8087162..20dd6b5 100644 --- a/src/main/java/me/melontini/recipebookispain/mixin/RecipeBookWidgetMixin.java +++ b/src/main/java/me/melontini/recipebookispain/mixin/RecipeBookWidgetMixin.java @@ -1,5 +1,6 @@ package me.melontini.recipebookispain.mixin; +import me.melontini.recipebookispain.access.RecipeGroupButtonAccess; import me.melontini.recipebookispain.client.RecipeBookIsPainClient; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; @@ -11,8 +12,6 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemGroup; import net.minecraft.text.Text; import net.minecraft.util.Identifier; -import net.minecraft.util.Pair; -import org.apache.commons.compress.utils.Lists; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -29,8 +28,6 @@ public abstract class RecipeBookWidgetMixin { @Shadow @Final protected static Identifier TEXTURE; - @Unique - public List> groupTab = Lists.newArrayList(); @Shadow protected MinecraftClient client; @Unique @@ -91,9 +88,9 @@ public abstract class RecipeBookWidgetMixin { @Unique //mmm spaghettio private void updatePages(int mouseX, int mouseY, MatrixStack stack) { - for (Pair pair : groupTab) { - RecipeGroupButtonWidget widget = pair.getRight(); - if (pair.getLeft() == page) { + for (RecipeGroupButtonWidget widget : tabButtons) { + + if (((RecipeGroupButtonAccess) widget).getPage() == page) { RecipeBookGroup recipeBookGroup = widget.getCategory(); if (client.currentScreen != null) if (recipeBookGroup.toString().contains("SEARCH")) { widget.visible = true; @@ -138,7 +135,6 @@ public abstract class RecipeBookWidgetMixin { @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Inject(at = @At("HEAD"), method = "refreshTabButtons", cancellable = true) private void recipe_book_is_pain$refresh(CallbackInfo ci) { - groupTab.clear(); this.pages = 0; int p = 0; int c = (this.parentWidth - 147) / 2 - this.leftOffset - 30; @@ -148,7 +144,7 @@ public abstract class RecipeBookWidgetMixin { for (RecipeGroupButtonWidget widget : this.tabButtons) { RecipeBookGroup recipeBookGroup = widget.getCategory(); if (recipeBookGroup == RecipeBookGroup.CRAFTING_SEARCH || recipeBookGroup == RecipeBookGroup.FURNACE_SEARCH || widget.hasKnownRecipes(recipeBook)) { - groupTab.add(new Pair<>((int) Math.ceil(p / 6), widget)); + ((RecipeGroupButtonAccess) widget).setPage((int) Math.ceil(p / 6)); widget.visible = false; widget.setPos(c, b + 27 * l++); if (l == 6) { diff --git a/src/main/java/me/melontini/recipebookispain/mixin/RecipeGroupButtonMixin.java b/src/main/java/me/melontini/recipebookispain/mixin/RecipeGroupButtonMixin.java new file mode 100644 index 0000000..e882783 --- /dev/null +++ b/src/main/java/me/melontini/recipebookispain/mixin/RecipeGroupButtonMixin.java @@ -0,0 +1,25 @@ +package me.melontini.recipebookispain.mixin; + +import me.melontini.recipebookispain.access.RecipeGroupButtonAccess; +import net.minecraft.client.gui.screen.recipebook.RecipeGroupButtonWidget; +import net.minecraft.client.gui.widget.ToggleButtonWidget; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(RecipeGroupButtonWidget.class) +public class RecipeGroupButtonMixin extends ToggleButtonWidget implements RecipeGroupButtonAccess { + private int page = 0; + + public RecipeGroupButtonMixin(int x, int y, int width, int height, boolean toggled) { + super(x, y, width, height, toggled); + } + + @Override + public int getPage() { + return page; + } + + @Override + public void setPage(int page) { + this.page = page; + } +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 4d29d58..f51a77f 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -10,7 +10,7 @@ "contact": {}, "license": "MIT", "icon": "assets/recipe-book-is-pain/icon.png", - "environment": "*", + "environment": "client", "entrypoints": { "client": [ "me.melontini.recipebookispain.client.RecipeBookIsPainClient" diff --git a/src/main/resources/recipe-book-is-pain.mixins.json b/src/main/resources/recipe-book-is-pain.mixins.json index 292ad3f..d6042b7 100644 --- a/src/main/resources/recipe-book-is-pain.mixins.json +++ b/src/main/resources/recipe-book-is-pain.mixins.json @@ -9,7 +9,8 @@ "Accessor", "ClientRecipeBookMixin", "RecipeBookGroupMixin", - "RecipeBookWidgetMixin" + "RecipeBookWidgetMixin", + "RecipeGroupButtonMixin" ], "injectors": { "defaultRequire": 1