diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-06-08 19:32:54 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-06-08 19:32:54 +0800 |
| commit | a5da8d98938c518783b57a7459376d63a893a543 (patch) | |
| tree | 258b8105db06d6701b17c86ea75da837a12e3117 /src/main/java/me | |
| parent | 943db0bb8bdbc5daf065745f78fca8a87175af48 (diff) | |
| download | RoughlyEnoughItems-a5da8d98938c518783b57a7459376d63a893a543.tar.gz RoughlyEnoughItems-a5da8d98938c518783b57a7459376d63a893a543.tar.bz2 RoughlyEnoughItems-a5da8d98938c518783b57a7459376d63a893a543.zip | |
a
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/me')
6 files changed, 35 insertions, 169 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/ConfigObject.java b/src/main/java/me/shedaniel/rei/api/ConfigObject.java index 34c98c225..52b7fe664 100644 --- a/src/main/java/me/shedaniel/rei/api/ConfigObject.java +++ b/src/main/java/me/shedaniel/rei/api/ConfigObject.java @@ -105,7 +105,11 @@ public interface ConfigObject { boolean doDisplayFavoritesTooltip(); - boolean doDisplayFavoritesOnTheLeft(); + @Deprecated + @ApiStatus.ScheduledForRemoval + default boolean doDisplayFavoritesOnTheLeft() { + return true; + } boolean doesFastEntryRendering(); diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index d2887464e..95532cbbd 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -190,7 +190,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds { DisplayHelper.DisplayBoundsHandler boundsHandler = DisplayHelper.getInstance().getResponsibleBoundsHandler(MinecraftClient.getInstance().currentScreen.getClass()); this.bounds = ConfigObject.getInstance().isLeftHandSidePanel() ? boundsHandler.getLeftBounds(MinecraftClient.getInstance().currentScreen) : boundsHandler.getRightBounds(MinecraftClient.getInstance().currentScreen); widgets.add(ENTRY_LIST_WIDGET); - if (ConfigObject.getInstance().doDisplayFavoritesOnTheLeft() && ConfigObject.getInstance().isFavoritesEnabled()) { + if (ConfigObject.getInstance().isFavoritesEnabled()) { if (favoritesListWidget == null) favoritesListWidget = new FavoritesListWidget(); widgets.add(favoritesListWidget); @@ -646,23 +646,19 @@ public class ContainerScreenOverlay extends WidgetWithBounds { itemStack = containerScreen.focusedSlot.getStack(); } if (itemStack != null && !itemStack.isEmpty()) { - if (ConfigObject.getInstance().getRecipeKeybind().matchesKey(keyCode, scanCode)) - return ClientHelper.getInstance().executeRecipeKeyBind(itemStack); - else if (ConfigObject.getInstance().getUsageKeybind().matchesKey(keyCode, scanCode)) - return ClientHelper.getInstance().executeUsageKeyBind(itemStack); - else if (ConfigObject.getInstance().getFavoriteKeyCode().matchesKey(keyCode, scanCode)) { - EntryStack entry = EntryStack.create(itemStack.copy()); - entry.setAmount(127); - if (!CollectionUtils.anyMatchEqualsEntryIgnoreAmount(ConfigObject.getInstance().getFavorites(), entry)) - ConfigObject.getInstance().getFavorites().add(entry); + EntryStack stack = EntryStack.create(itemStack.copy()); + if (ConfigObject.getInstance().getRecipeKeybind().matchesKey(keyCode, scanCode)) { + return ClientHelper.getInstance().openView(ClientHelper.ViewSearchBuilder.builder().addRecipesFor(stack).setOutputNotice(stack).fillPreferredOpenedCategory()); + } else if (ConfigObject.getInstance().getUsageKeybind().matchesKey(keyCode, scanCode)) { + return ClientHelper.getInstance().openView(ClientHelper.ViewSearchBuilder.builder().addUsagesFor(stack).setInputNotice(stack).fillPreferredOpenedCategory()); + } else if (ConfigObject.getInstance().getFavoriteKeyCode().matchesKey(keyCode, scanCode)) { + stack.setAmount(127); + if (!CollectionUtils.anyMatchEqualsEntryIgnoreAmount(ConfigObject.getInstance().getFavorites(), stack)) + ConfigObject.getInstance().getFavorites().add(stack); ConfigManager.getInstance().saveConfig(); - if (ConfigObject.getInstance().doDisplayFavoritesOnTheLeft()) { - FavoritesListWidget favoritesListWidget = ContainerScreenOverlay.getFavoritesListWidget(); - if (favoritesListWidget != null) - favoritesListWidget.updateSearch(ContainerScreenOverlay.getEntryListWidget(), ScreenHelper.getSearchField().getText()); - } else { - ContainerScreenOverlay.getEntryListWidget().updateSearch(ScreenHelper.getSearchField().getText()); - } + FavoritesListWidget favoritesListWidget = ContainerScreenOverlay.getFavoritesListWidget(); + if (favoritesListWidget != null) + favoritesListWidget.updateSearch(ContainerScreenOverlay.getEntryListWidget(), ScreenHelper.getSearchField().getText()); return true; } } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java index 4aee01ce9..c5a342742 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java @@ -90,16 +90,13 @@ public class EntryListWidget extends WidgetWithBounds { @Override public int getMaxScrollHeight() { - if (favorites.isEmpty()) - return MathHelper.ceil((allStacks.size() + blockedCount) / (innerBounds.width / (float) entrySize())) * entrySize(); - return MathHelper.ceil((allStacks.size() + blockedCount + getScrollNumberForFavorites()) / (innerBounds.width / (float) entrySize())) * entrySize() - 12; + return MathHelper.ceil((allStacks.size() + blockedCount) / (innerBounds.width / (float) entrySize())) * entrySize(); } }; protected int blockedCount; private boolean debugTime; private Rectangle bounds, innerBounds; private List<EntryStack> allStacks = null; - private List<EntryStack> favorites = null; private List<EntryListEntry> entries = Collections.emptyList(); private List<Widget> renders = Collections.emptyList(); private List<Widget> widgets = Collections.emptyList(); @@ -133,24 +130,6 @@ public class EntryListWidget extends WidgetWithBounds { return new Rectangle((int) (bounds.getCenterX() - width * (entrySize() / 2f)), (int) (bounds.getCenterY() - height * (entrySize() / 2f)), width * entrySize(), height * entrySize()); } - protected final int getSlotsHeightNumberForFavorites() { - if (favorites.isEmpty()) - return 0; - if (ConfigObject.getInstance().isEntryListWidgetScrolled()) - return MathHelper.ceil(2 + favorites.size() / (innerBounds.width / (float) entrySize())); - int height = MathHelper.ceil(favorites.size() / (innerBounds.width / (float) entrySize())); - int pagesToFit = MathHelper.ceil(height / (innerBounds.height / (float) entrySize() - 1)); - if (height > (innerBounds.height / entrySize() - 1) && (height) % (innerBounds.height / entrySize()) == (innerBounds.height / entrySize()) - 2) - height--; - return height + pagesToFit + 1; - } - - protected final int getScrollNumberForFavorites() { - if (favorites.isEmpty()) - return 0; - return (innerBounds.width / entrySize()) * getSlotsHeightNumberForFavorites(); - } - @Override public boolean mouseScrolled(double double_1, double double_2, double double_3) { if (ConfigObject.getInstance().isEntryListWidgetScrolled() && bounds.contains(double_1, double_2)) { @@ -185,7 +164,7 @@ public class EntryListWidget extends WidgetWithBounds { public int getTotalPages() { if (ConfigObject.getInstance().isEntryListWidgetScrolled()) return 1; - return MathHelper.ceil((allStacks.size() + getScrollNumberForFavorites()) / (float) entries.size()); + return MathHelper.ceil(allStacks.size() / (float) entries.size()); } @Override @@ -194,8 +173,7 @@ public class EntryListWidget extends WidgetWithBounds { for (EntryListEntry entry : entries) entry.clearStacks(); ScissorsHandler.INSTANCE.scissor(bounds); - int sizeForFavorites = getSlotsHeightNumberForFavorites(); - int skip = Math.max(0, MathHelper.floor(scrolling.scrollAmount / (float) entrySize()) - sizeForFavorites); + int skip = Math.max(0, MathHelper.floor(scrolling.scrollAmount / (float) entrySize())); int nextIndex = skip * innerBounds.width / entrySize(); int i = nextIndex; blockedCount = 0; @@ -203,45 +181,16 @@ public class EntryListWidget extends WidgetWithBounds { long totalTimeStart = System.nanoTime(); int size = 0; long time = 0; - if (sizeForFavorites > 0) { - drawTextWithShadow(matrices, font, new TranslatableText("text.rei.favorites"), innerBounds.x + 2, (int) (innerBounds.y + 8 - scrolling.scrollAmount), -1); - nextIndex += innerBounds.width / entrySize(); - back1: - for (EntryStack stack : favorites) { - while (true) { - EntryListEntry entry = entries.get(nextIndex); - entry.getBounds().y = (int) (entry.backupY - scrolling.scrollAmount); - if (entry.getBounds().y > bounds.getMaxY()) - break back1; - if (notSteppingOnExclusionZones(entry.getBounds().x, entry.getBounds().y, innerBounds)) { - entry.entry(stack); - entry.isFavorites = true; - size++; - long l = System.currentTimeMillis(); - entry.render(matrices, mouseX, mouseY, delta); - time += (System.currentTimeMillis() - l); - nextIndex++; - break; - } else { - blockedCount++; - nextIndex++; - } - } - } - nextIndex += innerBounds.width / -entrySize() + getScrollNumberForFavorites() - favorites.size(); - } - int offset = sizeForFavorites > 0 ? -12 : 0; back: for (; i < allStacks.size(); i++) { EntryStack stack = allStacks.get(i); while (true) { EntryListEntry entry = entries.get(nextIndex); - entry.getBounds().y = (int) (entry.backupY - scrolling.scrollAmount + offset); + entry.getBounds().y = (int) (entry.backupY - scrolling.scrollAmount); if (entry.getBounds().y > bounds.getMaxY()) break back; if (notSteppingOnExclusionZones(entry.getBounds().x, entry.getBounds().y, innerBounds)) { entry.entry(stack); - entry.isFavorites = false; if (!entry.getCurrentEntry().isEmpty()) { size++; long l = System.nanoTime(); @@ -270,42 +219,16 @@ public class EntryListWidget extends WidgetWithBounds { setZ(z); matrices.pop(); } else { - if (sizeForFavorites > 0) { - drawTextWithShadow(matrices, font, new TranslatableText("text.rei.favorites"), innerBounds.x + 2, (int) (innerBounds.y + 8 - scrolling.scrollAmount), -1); - nextIndex += innerBounds.width / entrySize(); - back1: - for (EntryStack stack : favorites) { - while (true) { - EntryListEntry entry = entries.get(nextIndex); - entry.getBounds().y = (int) (entry.backupY - scrolling.scrollAmount); - if (entry.getBounds().y > bounds.getMaxY()) - break back1; - if (notSteppingOnExclusionZones(entry.getBounds().x, entry.getBounds().y, innerBounds)) { - entry.entry(stack); - entry.isFavorites = true; - entry.render(matrices, mouseX, mouseY, delta); - nextIndex++; - break; - } else { - blockedCount++; - nextIndex++; - } - } - } - nextIndex += innerBounds.width / -entrySize() + getScrollNumberForFavorites() - favorites.size(); - } - int offset = sizeForFavorites > 0 ? -12 : 0; back: for (; i < allStacks.size(); i++) { EntryStack stack = allStacks.get(i); while (true) { EntryListEntry entry = entries.get(nextIndex); - entry.getBounds().y = (int) (entry.backupY - scrolling.scrollAmount + offset); + entry.getBounds().y = (int) (entry.backupY - scrolling.scrollAmount); if (entry.getBounds().y > bounds.getMaxY()) break back; if (notSteppingOnExclusionZones(entry.getBounds().x, entry.getBounds().y, innerBounds)) { entry.entry(stack); - entry.isFavorites = false; entry.render(matrices, mouseX, mouseY, delta); nextIndex++; break; @@ -481,7 +404,7 @@ public class EntryListWidget extends WidgetWithBounds { favoritesListWidget.updateFavoritesBounds(boundsHandler, searchTerm); if (searchTerm != null) updateSearch(searchTerm, true); - else if (allStacks == null || favorites == null || (favoritesListWidget != null && favoritesListWidget.favorites == null)) + else if (allStacks == null || (favoritesListWidget != null && favoritesListWidget.favorites == null)) updateSearch("", true); else updateEntriesPosition(); @@ -503,36 +426,19 @@ public class EntryListWidget extends WidgetWithBounds { } } page = Math.max(Math.min(page, getTotalPages() - 1), 0); - int numberForFavorites = getScrollNumberForFavorites(); - List<EntryStack> subList = allStacks.stream().skip(Math.max(0, page * entries.size() - numberForFavorites)).limit(Math.max(0, entries.size() - Math.max(0, numberForFavorites - page * entries.size()))).collect(Collectors.toList()); + List<EntryStack> subList = allStacks.stream().skip(Math.max(0, page * entries.size())).limit(Math.max(0, entries.size() - Math.max(0, -page * entries.size()))).collect(Collectors.toList()); for (int i = 0; i < subList.size(); i++) { EntryStack stack = subList.get(i); - entries.get(i + Math.max(0, numberForFavorites - page * entries.size())).clearStacks().entry(stack); - entries.get(i + Math.max(0, numberForFavorites - page * entries.size())).isFavorites = false; + entries.get(i + Math.max(0, -page * entries.size())).clearStacks().entry(stack); } this.entries = entries; - if (numberForFavorites > 0) { - int skippedFavorites = page * (entries.size() - width); - int j = 0; - if (skippedFavorites < favorites.size()) { - renders.add(Widgets.createLabel(new Point(innerBounds.x + 2, innerBounds.y + 6), new TranslatableText("text.rei.favorites")).leftAligned()); - j += width; - } - List<EntryStack> subFavoritesList = favorites.stream().skip(skippedFavorites).limit(Math.max(0, entries.size() - width)).collect(Collectors.toList()); - for (EntryStack stack : subFavoritesList) { - entries.get(j).clearStacks().entry(stack); - entries.get(j).isFavorites = true; - j++; - } - } this.widgets = Lists.newArrayList(renders); this.widgets.addAll(entries); } else { page = 0; int width = innerBounds.width / entrySize(); int pageHeight = innerBounds.height / entrySize(); - int sizeForFavorites = getScrollNumberForFavorites(); - int slotsToPrepare = Math.max(allStacks.size() * 3 + sizeForFavorites * 3, width * pageHeight * 3); + int slotsToPrepare = Math.max(allStacks.size() * 3, width * pageHeight * 3); int currentX = 0; int currentY = 0; List<EntryListEntry> entries = Lists.newArrayList(); @@ -622,27 +528,6 @@ public class EntryListWidget extends WidgetWithBounds { Collections.reverse(list); allStacks = list; } - if (ConfigObject.getInstance().isFavoritesEnabled() && !ConfigObject.getInstance().doDisplayFavoritesOnTheLeft()) { - List<EntryStack> list = Lists.newArrayList(); - boolean checkCraftable = ConfigManager.getInstance().isCraftableOnlyEnabled() && !ScreenHelper.inventoryStacks.isEmpty(); - List<EntryStack> workingItems = checkCraftable ? RecipeHelper.getInstance().findCraftableEntriesByItems(CollectionUtils.map(ScreenHelper.inventoryStacks, EntryStack::create)) : null; - for (EntryStack stack : ConfigObject.getInstance().getFavorites()) { - if (canLastSearchTermsBeAppliedTo(stack)) { - if (workingItems != null && CollectionUtils.findFirstOrNullEqualsEntryIgnoreAmount(workingItems, stack) == null) - continue; - list.add(stack.copy().setting(EntryStack.Settings.RENDER_COUNTS, EntryStack.Settings.FALSE).setting(EntryStack.Settings.Item.RENDER_ENCHANTMENT_GLINT, RENDER_ENCHANTMENT_GLINT)); - } - } - ItemListOrdering ordering = ConfigObject.getInstance().getItemListOrdering(); - if (ordering == ItemListOrdering.name) - list.sort(ENTRY_NAME_COMPARER); - if (ordering == ItemListOrdering.item_groups) - list.sort(ENTRY_GROUP_COMPARER); - if (!ConfigObject.getInstance().isItemListAscending()) - Collections.reverse(list); - favorites = list; - } else - favorites = Collections.emptyList(); debugTime = ConfigObject.getInstance().doDebugRenderTimeRequired(); FavoritesListWidget favoritesListWidget = ContainerScreenOverlay.getFavoritesListWidget(); if (favoritesListWidget != null) @@ -687,7 +572,6 @@ public class EntryListWidget extends WidgetWithBounds { private class EntryListEntry extends EntryWidget { private int backupY; - private boolean isFavorites; private EntryListEntry(int x, int y) { super(new Point(x, y)); @@ -719,11 +603,6 @@ public class EntryListWidget extends WidgetWithBounds { } @Override - protected boolean reverseFavoritesAction() { - return isFavorites; - } - - @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (!interactable) return super.mouseClicked(mouseX, mouseY, button); diff --git a/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java index 58fb85802..7d239eaa2 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java @@ -354,9 +354,9 @@ public class EntryWidget extends Slot { return false; if (containsMouse(mouseX, mouseY)) { if (button == 0) - return ClientHelper.getInstance().executeRecipeKeyBind(getCurrentEntry()); + return ClientHelper.getInstance().openView(ClientHelper.ViewSearchBuilder.builder().addRecipesFor(getCurrentEntry()).setOutputNotice(getCurrentEntry()).fillPreferredOpenedCategory()); else if (button == 1) - return ClientHelper.getInstance().executeUsageKeyBind(getCurrentEntry()); + return ClientHelper.getInstance().openView(ClientHelper.ViewSearchBuilder.builder().addUsagesFor(getCurrentEntry()).setInputNotice(getCurrentEntry()).fillPreferredOpenedCategory()); } return false; } @@ -380,20 +380,16 @@ public class EntryWidget extends Slot { else if (!CollectionUtils.anyMatchEqualsEntryIgnoreAmount(ConfigObject.getInstance().getFavorites(), entry)) ConfigObject.getInstance().getFavorites().add(entry); ConfigManager.getInstance().saveConfig(); - if (ConfigObject.getInstance().doDisplayFavoritesOnTheLeft()) { - FavoritesListWidget favoritesListWidget = ContainerScreenOverlay.getFavoritesListWidget(); - if (favoritesListWidget != null) - favoritesListWidget.updateSearch(ContainerScreenOverlay.getEntryListWidget(), ScreenHelper.getSearchField().getText()); - } else { - ContainerScreenOverlay.getEntryListWidget().updateSearch(ScreenHelper.getSearchField().getText()); - } + FavoritesListWidget favoritesListWidget = ContainerScreenOverlay.getFavoritesListWidget(); + if (favoritesListWidget != null) + favoritesListWidget.updateSearch(ContainerScreenOverlay.getEntryListWidget(), ScreenHelper.getSearchField().getText()); return true; } } if (ConfigObject.getInstance().getRecipeKeybind().matchesKey(int_1, int_2)) - return ClientHelper.getInstance().executeRecipeKeyBind(getCurrentEntry()); + return ClientHelper.getInstance().openView(ClientHelper.ViewSearchBuilder.builder().addRecipesFor(getCurrentEntry()).setOutputNotice(getCurrentEntry()).fillPreferredOpenedCategory()); else if (ConfigObject.getInstance().getUsageKeybind().matchesKey(int_1, int_2)) - return ClientHelper.getInstance().executeUsageKeyBind(getCurrentEntry()); + return ClientHelper.getInstance().openView(ClientHelper.ViewSearchBuilder.builder().addUsagesFor(getCurrentEntry()).setInputNotice(getCurrentEntry()).fillPreferredOpenedCategory()); } return false; } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java index b828a9eae..bc8796adb 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java @@ -171,7 +171,7 @@ public class FavoritesListWidget extends WidgetWithBounds { } public void updateSearch(EntryListWidget listWidget, String searchTerm) { - if (ConfigObject.getInstance().isFavoritesEnabled() && ConfigObject.getInstance().doDisplayFavoritesOnTheLeft()) { + if (ConfigObject.getInstance().isFavoritesEnabled()) { if (ConfigObject.getInstance().doSearchFavorites()) { List<EntryStack> list = Lists.newArrayList(); boolean checkCraftable = ConfigManager.getInstance().isCraftableOnlyEnabled() && !ScreenHelper.inventoryStacks.isEmpty(); diff --git a/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java b/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java index ac6d6f472..824014850 100644 --- a/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java @@ -32,9 +32,6 @@ import me.shedaniel.clothconfig2.api.ModifierKeyCode; import me.shedaniel.rei.api.ConfigObject; import me.shedaniel.rei.api.EntryStack; import me.shedaniel.rei.gui.config.*; -import me.shedaniel.rei.impl.ConfigObjectImpl.DontApplyFieldName; -import me.shedaniel.rei.impl.ConfigObjectImpl.UseFilteringScreen; -import me.shedaniel.rei.impl.ConfigObjectImpl.UseSpecialRecipeTypeScreen; import net.minecraft.client.util.InputUtil; import org.jetbrains.annotations.ApiStatus; @@ -220,11 +217,6 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData { } @Override - public boolean doDisplayFavoritesOnTheLeft() { - return appearance.displayFavoritesOnTheLeft; - } - - @Override public boolean doesFastEntryRendering() { return performance.newFastEntryRendering; } @@ -397,7 +389,6 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData { @Comment("Declares how the scrollbar in villager screen should act.") private boolean villagerScreenPermanentScrollBar = false; @Comment("Declares whether entry list widget is scrolled.") private boolean scrollingEntryListWidget = false; @Comment("Declares whether scrolled entry list widget should snap to rows.") private boolean snapToRows = false; - @Comment("Declares the location of the favorites list.") private boolean displayFavoritesOnTheLeft = true; @Comment("Declares whether favorites tooltip should be displayed.") private boolean displayFavoritesTooltip = false; @Comment("Declares whether favorites will be searched.") private boolean searchFavorites = true; @UsePercentage(min = 0.25, max = 4.0) private double entrySize = 1.0; |
