diff --git a/src/main/java/dev/zenfyr/rbip/RecipeBookPageButton.java b/src/main/java/dev/zenfyr/rbip/RecipeBookPageButton.java index ab81f30..61113ae 100644 --- a/src/main/java/dev/zenfyr/rbip/RecipeBookPageButton.java +++ b/src/main/java/dev/zenfyr/rbip/RecipeBookPageButton.java @@ -1,7 +1,7 @@ package dev.zenfyr.rbip; import com.mojang.blaze3d.systems.RenderSystem; -import dev.zenfyr.rbip.access.PaginatedRecipeBookWidget; +import dev.zenfyr.rbip.access.RecipeBookComponentWidget; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; @@ -60,8 +60,8 @@ public class RecipeBookPageButton extends Button { if (this.isHovered && Minecraft.getInstance().screen != null) { context.renderTooltip( Minecraft.getInstance().font, - Component.literal(((PaginatedRecipeBookWidget) widget).rbip$getPage() + 1 + "/" - + ((PaginatedRecipeBookWidget) widget).rbip$getPageCount()), + Component.literal(((RecipeBookComponentWidget) widget).rbip$getPage() + 1 + "/" + + ((RecipeBookComponentWidget) widget).rbip$getPageCount()), mouseX, mouseY); } diff --git a/src/main/java/dev/zenfyr/rbip/access/ClientRecipeBookDuck.java b/src/main/java/dev/zenfyr/rbip/access/ClientRecipeBookDuck.java index 1833d2a..5ade114 100644 --- a/src/main/java/dev/zenfyr/rbip/access/ClientRecipeBookDuck.java +++ b/src/main/java/dev/zenfyr/rbip/access/ClientRecipeBookDuck.java @@ -6,5 +6,5 @@ import net.minecraft.world.item.CreativeModeTab; public interface ClientRecipeBookDuck { - List rbip$getResultsForGroup(CreativeModeTab group); + List rbip$getCollectionForTab(CreativeModeTab tab); } diff --git a/src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeGroupButtonWidget.java b/src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeBookTabButton.java similarity index 87% rename from src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeGroupButtonWidget.java rename to src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeBookTabButton.java index ed967e6..5b3e787 100644 --- a/src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeGroupButtonWidget.java +++ b/src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeBookTabButton.java @@ -4,7 +4,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @Environment(EnvType.CLIENT) -public interface PaginatedRecipeGroupButtonWidget { +public interface PaginatedRecipeBookTabButton { default int rbip$getPage() { throw new IllegalStateException("Interface not implemented"); diff --git a/src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeBookWidget.java b/src/main/java/dev/zenfyr/rbip/access/RecipeBookComponentWidget.java similarity index 95% rename from src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeBookWidget.java rename to src/main/java/dev/zenfyr/rbip/access/RecipeBookComponentWidget.java index 9e396d7..a1ed08b 100644 --- a/src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeBookWidget.java +++ b/src/main/java/dev/zenfyr/rbip/access/RecipeBookComponentWidget.java @@ -4,7 +4,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @Environment(EnvType.CLIENT) -public interface PaginatedRecipeBookWidget { +public interface RecipeBookComponentWidget { default void rbip$updatePages() { throw new IllegalStateException("Interface not implemented"); diff --git a/src/main/java/dev/zenfyr/rbip/access/RecipeBookTabButtonDuck.java b/src/main/java/dev/zenfyr/rbip/access/RecipeBookTabButtonDuck.java new file mode 100644 index 0000000..6cb0cfb --- /dev/null +++ b/src/main/java/dev/zenfyr/rbip/access/RecipeBookTabButtonDuck.java @@ -0,0 +1,10 @@ +package dev.zenfyr.rbip.access; + +import net.minecraft.world.item.CreativeModeTab; + +public interface RecipeBookTabButtonDuck { + + void rbip$setCreativeTab(CreativeModeTab tab); + + CreativeModeTab rbip$getCreativeTab(); +} diff --git a/src/main/java/dev/zenfyr/rbip/access/RecipeGroupButtonWidgetDuck.java b/src/main/java/dev/zenfyr/rbip/access/RecipeGroupButtonWidgetDuck.java deleted file mode 100644 index 1e0d63b..0000000 --- a/src/main/java/dev/zenfyr/rbip/access/RecipeGroupButtonWidgetDuck.java +++ /dev/null @@ -1,10 +0,0 @@ -package dev.zenfyr.rbip.access; - -import net.minecraft.world.item.CreativeModeTab; - -public interface RecipeGroupButtonWidgetDuck { - - void rbip$setRealItemGroup(CreativeModeTab group); - - CreativeModeTab rbip$getRealItemGroup(); -} diff --git a/src/main/java/dev/zenfyr/rbip/mixin/ClientRecipeBookMixin.java b/src/main/java/dev/zenfyr/rbip/mixin/ClientRecipeBookMixin.java index 33b195e..69c0d59 100644 --- a/src/main/java/dev/zenfyr/rbip/mixin/ClientRecipeBookMixin.java +++ b/src/main/java/dev/zenfyr/rbip/mixin/ClientRecipeBookMixin.java @@ -1,6 +1,5 @@ package dev.zenfyr.rbip.mixin; -import com.google.common.collect.*; import dev.zenfyr.rbip.access.ClientRecipeBookDuck; import java.util.*; import net.minecraft.client.ClientRecipeBook; @@ -29,23 +28,24 @@ public class ClientRecipeBookMixin implements ClientRecipeBookDuck { @Shadow private List allCollections; - @Unique private final Map> rbip$groupedRecipes = new HashMap<>(); + @Unique private final Map> rbip$groupedCollections = + new HashMap<>(); @Inject(at = @At("TAIL"), method = "setupCollections") private void rbip$reload(Iterable> recipes, RegistryAccess manager, CallbackInfo ci) { CreativeModeTabs.tryRebuildTabContents(FeatureFlags.REGISTRY.allFlags(), false, manager); - Map groups = new HashMap<>(); + Map tabs = new HashMap<>(); BuiltInRegistries.CREATIVE_MODE_TAB.stream() .filter(itemGroup -> !itemGroup.isAlignedRight()) .forEach(itemGroup -> { for (ItemStack stack : itemGroup.getSearchTabDisplayItems()) { - if (groups.containsKey(stack.getItem())) continue; - groups.put(stack.getItem(), itemGroup); + if (tabs.containsKey(stack.getItem())) continue; + tabs.put(stack.getItem(), itemGroup); } }); - Map> map2 = new HashMap<>(); + Map> collectionsByTab = new HashMap<>(); this.allCollections.forEach(collection -> { for (Recipe recipe : collection.getRecipes()) { @@ -56,14 +56,14 @@ public class ClientRecipeBookMixin implements ClientRecipeBookDuck { if (output.isEmpty()) continue; CreativeModeTab itemGroup = - groups.getOrDefault(output.getItem(), CreativeModeTabs.getDefaultTab()); - map2.computeIfAbsent(itemGroup, g -> new ArrayList<>()).add(collection); + tabs.getOrDefault(output.getItem(), CreativeModeTabs.getDefaultTab()); + collectionsByTab.computeIfAbsent(itemGroup, g -> new ArrayList<>()).add(collection); return; } }); - this.rbip$groupedRecipes.clear(); - this.rbip$groupedRecipes.putAll(map2); + this.rbip$groupedCollections.clear(); + this.rbip$groupedCollections.putAll(collectionsByTab); } @Inject(at = @At("HEAD"), method = "getCategory", cancellable = true) @@ -75,7 +75,7 @@ public class ClientRecipeBookMixin implements ClientRecipeBookDuck { } @Override - public List rbip$getResultsForGroup(CreativeModeTab group) { - return this.rbip$groupedRecipes.getOrDefault(group, List.of()); + public List rbip$getCollectionForTab(CreativeModeTab tab) { + return this.rbip$groupedCollections.getOrDefault(tab, List.of()); } } diff --git a/src/main/java/dev/zenfyr/rbip/mixin/RecipeBookWidgetMixin.java b/src/main/java/dev/zenfyr/rbip/mixin/RecipeBookComponentMixin.java similarity index 89% rename from src/main/java/dev/zenfyr/rbip/mixin/RecipeBookWidgetMixin.java rename to src/main/java/dev/zenfyr/rbip/mixin/RecipeBookComponentMixin.java index 13e2b6f..8f7a110 100644 --- a/src/main/java/dev/zenfyr/rbip/mixin/RecipeBookWidgetMixin.java +++ b/src/main/java/dev/zenfyr/rbip/mixin/RecipeBookComponentMixin.java @@ -8,9 +8,9 @@ import com.llamalad7.mixinextras.sugar.Share; import com.llamalad7.mixinextras.sugar.ref.LocalIntRef; import dev.zenfyr.rbip.RecipeBookPageButton; import dev.zenfyr.rbip.access.ClientRecipeBookDuck; -import dev.zenfyr.rbip.access.PaginatedRecipeBookWidget; -import dev.zenfyr.rbip.access.PaginatedRecipeGroupButtonWidget; -import dev.zenfyr.rbip.access.RecipeGroupButtonWidgetDuck; +import dev.zenfyr.rbip.access.PaginatedRecipeBookTabButton; +import dev.zenfyr.rbip.access.RecipeBookComponentWidget; +import dev.zenfyr.rbip.access.RecipeBookTabButtonDuck; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -38,7 +38,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(value = RecipeBookComponent.class, priority = 1001) -public abstract class RecipeBookWidgetMixin implements PaginatedRecipeBookWidget { +public abstract class RecipeBookComponentMixin implements RecipeBookComponentWidget { @Shadow protected Minecraft minecraft; @@ -132,10 +132,9 @@ public abstract class RecipeBookWidgetMixin implements PaginatedRecipeBookWidget @Inject(at = @At("TAIL"), method = "updateCollections") private void dark_matter$refreshResults(boolean resetCurrentPage, CallbackInfo ci) { if (resetCurrentPage && this.selectedTab != null) { - if (this.rbip$getPage() - != ((PaginatedRecipeGroupButtonWidget) this.selectedTab).rbip$getPage()) { + if (this.rbip$getPage() != ((PaginatedRecipeBookTabButton) this.selectedTab).rbip$getPage()) { this.rbip$setPage( - Math.max(((PaginatedRecipeGroupButtonWidget) this.selectedTab).rbip$getPage(), 0)); + Math.max(((PaginatedRecipeBookTabButton) this.selectedTab).rbip$getPage(), 0)); } } } @@ -186,7 +185,7 @@ public abstract class RecipeBookWidgetMixin implements PaginatedRecipeBookWidget @Local RecipeBookTabButton widget, @Share("index") LocalIntRef index, @Share("wc") LocalIntRef wc) { - ((PaginatedRecipeGroupButtonWidget) widget).rbip$setPage((int) Math.floor(wc.get() / 6f)); + ((PaginatedRecipeBookTabButton) widget).rbip$setPage((int) Math.floor(wc.get() / 6f)); if (index.get() == 6) index.set(0); wc.set(wc.get() + 1); } @@ -209,7 +208,7 @@ public abstract class RecipeBookWidgetMixin implements PaginatedRecipeBookWidget @Unique @Override public void rbip$updatePages() { for (RecipeBookTabButton widget : this.tabButtons) { - widget.visible = ((PaginatedRecipeGroupButtonWidget) widget).rbip$getPage() == this.rbip$page; + widget.visible = ((PaginatedRecipeBookTabButton) widget).rbip$getPage() == this.rbip$page; } } @@ -265,7 +264,7 @@ public abstract class RecipeBookWidgetMixin implements PaginatedRecipeBookWidget .filter(itemGroup -> !itemGroup.isAlignedRight()) .forEach(itemGroup -> { var widget = new RecipeBookTabButton(RecipeBookCategories.CRAFTING_MISC); - ((RecipeGroupButtonWidgetDuck) widget).rbip$setRealItemGroup(itemGroup); + ((RecipeBookTabButtonDuck) widget).rbip$setCreativeTab(itemGroup); this.tabButtons.add(widget); }); } @@ -281,11 +280,11 @@ public abstract class RecipeBookWidgetMixin implements PaginatedRecipeBookWidget Object o, Operation original, @Local(argsOnly = true) RecipeBookTabButton widget) { - if (((RecipeGroupButtonWidgetDuck) widget).rbip$getRealItemGroup() != null + if (((RecipeBookTabButtonDuck) widget).rbip$getCreativeTab() != null && this.selectedTab != null) { return Objects.equals( - ((RecipeGroupButtonWidgetDuck) widget).rbip$getRealItemGroup(), - ((RecipeGroupButtonWidgetDuck) this.selectedTab).rbip$getRealItemGroup()); + ((RecipeBookTabButtonDuck) widget).rbip$getCreativeTab(), + ((RecipeBookTabButtonDuck) this.selectedTab).rbip$getCreativeTab()); } return original.call(instance, o); } @@ -309,9 +308,9 @@ public abstract class RecipeBookWidgetMixin implements PaginatedRecipeBookWidget "Lnet/minecraft/client/ClientRecipeBook;getCollection(Lnet/minecraft/client/RecipeBookCategories;)Ljava/util/List;"), method = "updateCollections") private List refreshResults(List original) { - var real = ((RecipeGroupButtonWidgetDuck) this.selectedTab).rbip$getRealItemGroup(); + var real = ((RecipeBookTabButtonDuck) this.selectedTab).rbip$getCreativeTab(); if (real != null) { - return ((ClientRecipeBookDuck) this.book).rbip$getResultsForGroup(real); + return ((ClientRecipeBookDuck) this.book).rbip$getCollectionForTab(real); } return original; } @@ -335,7 +334,7 @@ public abstract class RecipeBookWidgetMixin implements PaginatedRecipeBookWidget context.renderTooltip( minecraft.font, CreativeModeTabs.searchTab().getDisplayName(), mouseX, mouseY); } else { - Optional.ofNullable(((RecipeGroupButtonWidgetDuck) widget).rbip$getRealItemGroup()) + Optional.ofNullable(((RecipeBookTabButtonDuck) widget).rbip$getCreativeTab()) .map(CreativeModeTab::getDisplayName) .ifPresent(text -> context.renderTooltip(minecraft.font, text, mouseX, mouseY)); } diff --git a/src/main/java/dev/zenfyr/rbip/mixin/RecipeGroupButtonMixin.java b/src/main/java/dev/zenfyr/rbip/mixin/RecipeBookTabButtonMixin.java similarity index 73% rename from src/main/java/dev/zenfyr/rbip/mixin/RecipeGroupButtonMixin.java rename to src/main/java/dev/zenfyr/rbip/mixin/RecipeBookTabButtonMixin.java index 9242513..6fa831d 100644 --- a/src/main/java/dev/zenfyr/rbip/mixin/RecipeGroupButtonMixin.java +++ b/src/main/java/dev/zenfyr/rbip/mixin/RecipeBookTabButtonMixin.java @@ -4,8 +4,8 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.sugar.Local; import dev.zenfyr.rbip.RecipeBookIsPain; import dev.zenfyr.rbip.access.ClientRecipeBookDuck; -import dev.zenfyr.rbip.access.PaginatedRecipeGroupButtonWidget; -import dev.zenfyr.rbip.access.RecipeGroupButtonWidgetDuck; +import dev.zenfyr.rbip.access.PaginatedRecipeBookTabButton; +import dev.zenfyr.rbip.access.RecipeBookTabButtonDuck; import dev.zenfyr.rbip.compat.OwOCompat; import dev.zenfyr.rbip.compat.PulsarCompat; import java.util.List; @@ -24,16 +24,16 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(RecipeBookTabButton.class) -public abstract class RecipeGroupButtonMixin extends StateSwitchingButton - implements RecipeGroupButtonWidgetDuck, PaginatedRecipeGroupButtonWidget { +public abstract class RecipeBookTabButtonMixin extends StateSwitchingButton + implements RecipeBookTabButtonDuck, PaginatedRecipeBookTabButton { - public RecipeGroupButtonMixin(int x, int y, int width, int height, boolean toggled) { + public RecipeBookTabButtonMixin(int x, int y, int width, int height, boolean toggled) { super(x, y, width, height, toggled); } @Unique private int rbip$page = -1; - @Unique private CreativeModeTab rbip$realGroup; + @Unique private CreativeModeTab rbip$creativeTab; @Override public int rbip$getPage() { @@ -46,13 +46,13 @@ public abstract class RecipeGroupButtonMixin extends StateSwitchingButton } @Override - public void rbip$setRealItemGroup(CreativeModeTab group) { - this.rbip$realGroup = group; + public void rbip$setCreativeTab(CreativeModeTab tab) { + this.rbip$creativeTab = tab; } @Override - public CreativeModeTab rbip$getRealItemGroup() { - return this.rbip$realGroup; + public CreativeModeTab rbip$getCreativeTab() { + return this.rbip$creativeTab; } @ModifyExpressionValue( @@ -64,8 +64,8 @@ public abstract class RecipeGroupButtonMixin extends StateSwitchingButton method = "startAnimation") private List checkForNewRecipes( List original, @Local ClientRecipeBook recipeBook) { - if (this.rbip$realGroup != null) { - return ((ClientRecipeBookDuck) recipeBook).rbip$getResultsForGroup(this.rbip$realGroup); + if (this.rbip$creativeTab != null) { + return ((ClientRecipeBookDuck) recipeBook).rbip$getCollectionForTab(this.rbip$creativeTab); } return original; } @@ -79,33 +79,33 @@ public abstract class RecipeGroupButtonMixin extends StateSwitchingButton method = "updateVisibility") private List hasKnownRecipes( List original, @Local(argsOnly = true) ClientRecipeBook recipeBook) { - if (this.rbip$realGroup != null) { - return ((ClientRecipeBookDuck) recipeBook).rbip$getResultsForGroup(this.rbip$realGroup); + if (this.rbip$creativeTab != null) { + return ((ClientRecipeBookDuck) recipeBook).rbip$getCollectionForTab(this.rbip$creativeTab); } return original; } @Inject(at = @At("HEAD"), method = "renderIcon", cancellable = true) private void rbip$render(GuiGraphics context, ItemRenderer itemRenderer, CallbackInfo ci) { - if (this.rbip$realGroup == null) return; + if (this.rbip$creativeTab == null) return; int i = this.isStateTriggered ? -2 : 0; if (RecipeBookIsPain.isOwOLoaded) { - if (OwOCompat.render(context, i, (RecipeBookTabButton) (Object) this, rbip$realGroup)) { + if (OwOCompat.render(context, i, (RecipeBookTabButton) (Object) this, rbip$creativeTab)) { ci.cancel(); return; } } if (RecipeBookIsPain.isPulsarLoaded) { - if (PulsarCompat.render(context, i, (RecipeBookTabButton) (Object) this, rbip$realGroup)) { + if (PulsarCompat.render(context, i, (RecipeBookTabButton) (Object) this, rbip$creativeTab)) { ci.cancel(); return; } } - ItemStack icon = this.rbip$realGroup.getIconItem(); + ItemStack icon = this.rbip$creativeTab.getIconItem(); if (!icon.isEmpty()) context.renderFakeItem(icon, this.getX() + 9 + i, this.getY() + 5); ci.cancel(); } diff --git a/src/main/resources/rbip.mixins.json b/src/main/resources/rbip.mixins.json index 2cd166c..6955569 100644 --- a/src/main/resources/rbip.mixins.json +++ b/src/main/resources/rbip.mixins.json @@ -7,8 +7,8 @@ ], "client": [ "ClientRecipeBookMixin", - "RecipeBookWidgetMixin", - "RecipeGroupButtonMixin" + "RecipeBookComponentMixin", + "RecipeBookTabButtonMixin" ], "injectors": { "defaultRequire": 1