diff options
Diffstat (limited to 'src/main/java/me')
44 files changed, 355 insertions, 197 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index b5e259553..4d57b3242 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -11,9 +11,9 @@ import me.shedaniel.cloth.api.ClientUtils; import me.shedaniel.cloth.hooks.ClothClientHooks; import me.shedaniel.rei.api.*; import me.shedaniel.rei.api.plugins.REIPluginV0; -import me.shedaniel.rei.client.*; +import me.shedaniel.rei.impl.*; import me.shedaniel.rei.gui.ContainerScreenOverlay; -import me.shedaniel.rei.gui.widget.EntryListOverlay; +import me.shedaniel.rei.gui.widget.EntryListWidget; import me.shedaniel.rei.listeners.RecipeBookButtonWidgetHooks; import me.shedaniel.rei.listeners.RecipeBookGuiHooks; import net.fabricmc.api.ClientModInitializer; @@ -143,7 +143,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { ClientSidePacketRegistry.INSTANCE.register(RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, (packetContext, packetByteBuf) -> { ItemStack stack = packetByteBuf.readItemStack(); String player = packetByteBuf.readString(32767); - packetContext.getPlayer().addChatMessage(new LiteralText(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", EntryListOverlay.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getCount() + "").replaceAll("\\{player_name}", player)), false); + packetContext.getPlayer().addChatMessage(new LiteralText(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", EntryListWidget.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getCount() + "").replaceAll("\\{player_name}", player)), false); }); ClientSidePacketRegistry.INSTANCE.register(RoughlyEnoughItemsNetwork.NOT_ENOUGH_ITEMS_PACKET, (packetContext, packetByteBuf) -> { Screen currentScreen = MinecraftClient.getInstance().currentScreen; diff --git a/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java b/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java index a328c16c8..c0eaa26e6 100644 --- a/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java +++ b/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java @@ -7,7 +7,7 @@ package me.shedaniel.rei.api; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; -import me.shedaniel.rei.client.ScreenHelper; +import me.shedaniel.rei.impl.ScreenHelper; import me.shedaniel.rei.gui.ContainerScreenOverlay; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; diff --git a/src/main/java/me/shedaniel/rei/api/ClientHelper.java b/src/main/java/me/shedaniel/rei/api/ClientHelper.java index 7b6c8b0e7..68b8f2e0d 100644 --- a/src/main/java/me/shedaniel/rei/api/ClientHelper.java +++ b/src/main/java/me/shedaniel/rei/api/ClientHelper.java @@ -5,7 +5,7 @@ package me.shedaniel.rei.api; -import me.shedaniel.rei.client.ClientHelperImpl; +import me.shedaniel.rei.impl.ClientHelperImpl; import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/shedaniel/rei/api/ConfigObject.java b/src/main/java/me/shedaniel/rei/api/ConfigObject.java index de6911c96..b9519132a 100644 --- a/src/main/java/me/shedaniel/rei/api/ConfigObject.java +++ b/src/main/java/me/shedaniel/rei/api/ConfigObject.java @@ -9,16 +9,18 @@ public interface ConfigObject { ConfigNode getConfigNode(); - void setCheating(boolean cheating); - boolean isCheating(); + void setCheating(boolean cheating); + ItemListOrdering getItemListOrdering(); boolean isItemListAscending(); boolean isUsingDarkTheme(); + boolean isEntryListWidgetScrolled(); + boolean shouldAppendModNames(); RecipeScreenType getRecipeScreenType(); diff --git a/src/main/java/me/shedaniel/rei/api/DisplayHelper.java b/src/main/java/me/shedaniel/rei/api/DisplayHelper.java index 8b745f846..2d8fc5991 100644 --- a/src/main/java/me/shedaniel/rei/api/DisplayHelper.java +++ b/src/main/java/me/shedaniel/rei/api/DisplayHelper.java @@ -112,7 +112,7 @@ public interface DisplayHelper { * @return the item list bounds */ default Rectangle getItemListArea(Rectangle rectangle) { - return new Rectangle(rectangle.x + 2, rectangle.y + 24, rectangle.width - 4, rectangle.height - (RoughlyEnoughItemsCore.getConfigManager().getConfig().isSideSearchField() ? 27 + 22 : 27)); + return new Rectangle(rectangle.x + 1, rectangle.y + 2 + (RoughlyEnoughItemsCore.getConfigManager().getConfig().isEntryListWidgetScrolled() ? 0 : 22), rectangle.width - 2, rectangle.height - (RoughlyEnoughItemsCore.getConfigManager().getConfig().isSideSearchField() ? 27 + 22 : 27) + (!RoughlyEnoughItemsCore.getConfigManager().getConfig().isEntryListWidgetScrolled() ? 0 : 22)); } /** diff --git a/src/main/java/me/shedaniel/rei/api/Entry.java b/src/main/java/me/shedaniel/rei/api/Entry.java index 148c0c242..e38fc4835 100644 --- a/src/main/java/me/shedaniel/rei/api/Entry.java +++ b/src/main/java/me/shedaniel/rei/api/Entry.java @@ -1,7 +1,7 @@ package me.shedaniel.rei.api; -import me.shedaniel.rei.client.FluidEntry; -import me.shedaniel.rei.client.ItemStackEntry; +import me.shedaniel.rei.impl.FluidEntry; +import me.shedaniel.rei.impl.ItemStackEntry; import net.minecraft.fluid.Fluid; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java index 5204fcbc8..1e71d7c00 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java @@ -5,7 +5,7 @@ package me.shedaniel.rei.api; -import me.shedaniel.rei.client.ScreenHelper; +import me.shedaniel.rei.impl.ScreenHelper; import me.shedaniel.rei.gui.RecipeViewingScreen; import me.shedaniel.rei.gui.renderers.RecipeRenderer; import me.shedaniel.rei.gui.widget.CategoryBaseWidget; diff --git a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java index 9deec1c0e..b0a02f1ba 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java @@ -22,7 +22,7 @@ import java.util.function.Predicate; public interface RecipeHelper { /** - * @return the api instance of {@link me.shedaniel.rei.client.RecipeHelperImpl} + * @return the api instance of {@link me.shedaniel.rei.impl.RecipeHelperImpl} */ static RecipeHelper getInstance() { return RoughlyEnoughItemsCore.getRecipeHelper(); diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index d81871eca..cf302aa9e 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -8,15 +8,16 @@ package me.shedaniel.rei.gui; import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.cloth.api.ClientUtils; +import me.shedaniel.clothconfig2.api.MouseUtils; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.ClientHelper; import me.shedaniel.rei.api.DisplayHelper; import me.shedaniel.rei.api.Entry; import me.shedaniel.rei.api.RecipeHelper; -import me.shedaniel.rei.client.RecipeHelperImpl; -import me.shedaniel.rei.client.ScreenHelper; -import me.shedaniel.rei.client.Weather; import me.shedaniel.rei.gui.widget.*; +import me.shedaniel.rei.impl.RecipeHelperImpl; +import me.shedaniel.rei.impl.ScreenHelper; +import me.shedaniel.rei.impl.Weather; import me.shedaniel.rei.listeners.ContainerScreenHooks; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; @@ -48,7 +49,7 @@ public class ContainerScreenOverlay extends Widget { private static final List<QueuedTooltip> QUEUED_TOOLTIPS = Lists.newArrayList(); public static String searchTerm = ""; private static int page = 0; - private static EntryListOverlay entryListOverlay; + private static EntryListWidget entryListWidget; private final List<Widget> widgets = Lists.newLinkedList(); public boolean shouldReInit = false; private Rectangle rectangle; @@ -56,8 +57,12 @@ public class ContainerScreenOverlay extends Widget { private CraftableToggleButtonWidget toggleButtonWidget; private ButtonWidget buttonLeft, buttonRight; - public static EntryListOverlay getEntryListOverlay() { - return entryListOverlay; + public static EntryListWidget getEntryListWidget() { + return entryListWidget; + } + + public static void setPage(int page) { + ContainerScreenOverlay.page = page; } public void init() { @@ -71,47 +76,49 @@ public class ContainerScreenOverlay extends Widget { this.window = MinecraftClient.getInstance().window; DisplayHelper.DisplayBoundsHandler boundsHandler = RoughlyEnoughItemsCore.getDisplayHelper().getResponsibleBoundsHandler(MinecraftClient.getInstance().currentScreen.getClass()); this.rectangle = RoughlyEnoughItemsCore.getConfigManager().getConfig().isLeftHandSidePanel() ? boundsHandler.getLeftBounds(MinecraftClient.getInstance().currentScreen) : boundsHandler.getRightBounds(MinecraftClient.getInstance().currentScreen); - widgets.add(entryListOverlay = new EntryListOverlay(page)); - entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); + widgets.add(entryListWidget = new EntryListWidget(page)); + entryListWidget.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); - widgets.add(buttonLeft = new ButtonWidget(rectangle.x, rectangle.y + 5, 16, 16, new TranslatableText("text.rei.left_arrow")) { - @Override - public void onPressed() { - page--; - if (page < 0) - page = getTotalPage(); - entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); - } - - @Override - public Optional<String> getTooltips() { - return Optional.ofNullable(I18n.translate("text.rei.previous_page")); - } - - @Override - public boolean changeFocus(boolean boolean_1) { - return false; - } - }); - widgets.add(buttonRight = new ButtonWidget(rectangle.x + rectangle.width - 18, rectangle.y + 5, 16, 16, new TranslatableText("text.rei.right_arrow")) { - @Override - public void onPressed() { - page++; - if (page > getTotalPage()) - page = 0; - entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); - } - - @Override - public Optional<String> getTooltips() { - return Optional.ofNullable(I18n.translate("text.rei.next_page")); - } - - @Override - public boolean changeFocus(boolean boolean_1) { - return false; - } - }); + if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().isEntryListWidgetScrolled()) { + widgets.add(buttonLeft = new ButtonWidget(rectangle.x, rectangle.y + 5, 16, 16, new TranslatableText("text.rei.left_arrow")) { + @Override + public void onPressed() { + page--; + if (page < 0) + page = getTotalPage(); + entryListWidget.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); + } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.previous_page")); + } + + @Override + public boolean changeFocus(boolean boolean_1) { + return false; + } + }); + widgets.add(buttonRight = new ButtonWidget(rectangle.x + rectangle.width - 18, rectangle.y + 5, 16, 16, new TranslatableText("text.rei.right_arrow")) { + @Override + public void onPressed() { + page++; + if (page > getTotalPage()) + page = 0; + entryListWidget.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); + } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.next_page")); + } + + @Override + public boolean changeFocus(boolean boolean_1) { + return false; + } + }); + } if (setPage) page = MathHelper.clamp(page, 0, getTotalPage()); @@ -214,32 +221,34 @@ public class ContainerScreenOverlay extends Widget { xxx += RoughlyEnoughItemsCore.getConfigManager().getConfig().isLeftHandSidePanel() ? -25 : 25; } } - widgets.add(new ClickableLabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, "", getTotalPage() > 0) { - @Override - public void render(int mouseX, int mouseY, float delta) { - page = MathHelper.clamp(page, 0, getTotalPage()); - this.text = String.format("%s/%s", page + 1, getTotalPage() + 1); - super.render(mouseX, mouseY, delta); - } - - @Override - public Optional<String> getTooltips() { - return Optional.ofNullable(I18n.translate("text.rei.go_back_first_page")); - } - - @Override - public void onLabelClicked() { - MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); - page = 0; - entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); - } - - @Override - public boolean changeFocus(boolean boolean_1) { - return false; - } - }); - buttonLeft.enabled = buttonRight.enabled = getTotalPage() > 0; + if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().isEntryListWidgetScrolled()) { + widgets.add(new ClickableLabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, "", getTotalPage() > 0) { + @Override + public void render(int mouseX, int mouseY, float delta) { + page = MathHelper.clamp(page, 0, getTotalPage()); + this.text = String.format("%s/%s", page + 1, getTotalPage() + 1); + super.render(mouseX, mouseY, delta); + } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.go_back_first_page")); + } + + @Override + public void onLabelClicked() { + MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + page = 0; + entryListWidget.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); + } + + @Override + public boolean changeFocus(boolean boolean_1) { + return false; + } + }); + buttonLeft.enabled = buttonRight.enabled = getTotalPage() > 0; + } if (ScreenHelper.searchField == null) ScreenHelper.searchField = new SearchFieldWidget(0, 0, 0, 0); ScreenHelper.searchField.getBounds().setBounds(getTextFieldArea()); @@ -247,14 +256,14 @@ public class ContainerScreenOverlay extends Widget { ScreenHelper.searchField.setText(searchTerm); ScreenHelper.searchField.setChangedListener(s -> { searchTerm = s; - entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true); + entryListWidget.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true); }); if (RoughlyEnoughItemsCore.getConfigManager().getConfig().isCraftableFilterEnabled()) this.widgets.add(toggleButtonWidget = new CraftableToggleButtonWidget(getCraftableToggleArea()) { @Override public void onPressed() { RoughlyEnoughItemsCore.getConfigManager().toggleCraftableOnly(); - entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true); + entryListWidget.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true); } @Override @@ -265,7 +274,7 @@ public class ContainerScreenOverlay extends Widget { }); else toggleButtonWidget = null; - this.entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); + this.entryListWidget.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); } private Weather getNextWeather() { @@ -357,7 +366,7 @@ public class ContainerScreenOverlay extends Widget { else if (RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() && ((currentStacks.size() != ScreenHelper.inventoryStacks.size()) || !hasSameListContent(new LinkedList<>(ScreenHelper.inventoryStacks), currentStacks))) { ScreenHelper.inventoryStacks = currentStacks; DisplayHelper.DisplayBoundsHandler<?> boundsHandler = RoughlyEnoughItemsCore.getDisplayHelper().getResponsibleBoundsHandler(MinecraftClient.getInstance().currentScreen.getClass()); - entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true); + entryListWidget.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true); } if (SearchFieldWidget.isSearching) { GuiLighting.disable(); @@ -366,7 +375,7 @@ public class ContainerScreenOverlay extends Widget { ContainerScreenHooks hooks = (ContainerScreenHooks) MinecraftClient.getInstance().currentScreen; int left = hooks.rei_getContainerLeft(), top = hooks.rei_getContainerTop(); for (Slot slot : ((AbstractContainerScreen<?>) MinecraftClient.getInstance().currentScreen).getContainer().slotList) - if (!slot.hasStack() || !entryListOverlay.filterEntry(Entry.create(slot.getStack()), entryListOverlay.getLastSearchArgument())) + if (!slot.hasStack() || !entryListWidget.filterEntry(Entry.create(slot.getStack()), entryListWidget.getLastSearchArgument())) fillGradient(left + slot.xPosition, top + slot.yPosition, left + slot.xPosition + 16, top + slot.yPosition + 16, -601874400, -601874400); } blitOffset = 0; @@ -453,7 +462,8 @@ public class ContainerScreenOverlay extends Widget { public void renderWidgets(int int_1, int int_2, float float_1) { if (!ScreenHelper.isOverlayVisible()) return; - buttonLeft.enabled = buttonRight.enabled = getTotalPage() > 0; + if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().isEntryListWidgetScrolled()) + buttonLeft.enabled = buttonRight.enabled = getTotalPage() > 0; widgets.forEach(widget -> { GuiLighting.disable(); widget.render(int_1, int_2, float_1); @@ -462,7 +472,7 @@ public class ContainerScreenOverlay extends Widget { } private int getTotalPage() { - return entryListOverlay.getTotalPage(); + return entryListWidget.getTotalPage(); } @Override @@ -470,13 +480,17 @@ public class ContainerScreenOverlay extends Widget { if (!ScreenHelper.isOverlayVisible()) return false; if (isInside(ClientUtils.getMouseLocation())) { - if (amount > 0 && buttonLeft.enabled) - buttonLeft.onPressed(); - else if (amount < 0 && buttonRight.enabled) - buttonRight.onPressed(); - else - return false; - return true; + if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().isEntryListWidgetScrolled()) { + if (amount > 0 && buttonLeft.enabled) + buttonLeft.onPressed(); + else if (amount < 0 && buttonRight.enabled) + buttonRight.onPressed(); + else + return false; + return true; + } else { + return entryListWidget.mouseScrolled(i, j, amount); + } } for (Widget widget : widgets) if (widget.mouseScrolled(i, j, amount)) @@ -486,7 +500,7 @@ public class ContainerScreenOverlay extends Widget { @Override public boolean keyPressed(int int_1, int int_2, int int_3) { - if (ScreenHelper.isOverlayVisible()) + if (ScreenHelper.isOverlayVisible() && isInside(MouseUtils.getMouseLocation())) for (Element listener : widgets) if (listener.keyPressed(int_1, int_2, int_3)) return true; @@ -518,9 +532,10 @@ public class ContainerScreenOverlay extends Widget { public boolean charTyped(char char_1, int int_1) { if (!ScreenHelper.isOverlayVisible()) return false; - for (Element listener : widgets) - if (listener.charTyped(char_1, int_1)) - return true; + if (isInside(MouseUtils.getMouseLocation())) + for (Element listener : widgets) + if (listener.charTyped(char_1, int_1)) + return true; return false; } diff --git a/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java index a39667f25..1063cbbd8 100644 --- a/src/main/java/me/shedaniel/rei/gui/Pre |
