diff options
Diffstat (limited to 'runtime/src/main')
7 files changed, 63 insertions, 91 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java index 9590c62a7..abaf8443f 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java @@ -43,7 +43,7 @@ import me.shedaniel.rei.api.common.util.EntryStacks; import me.shedaniel.rei.impl.ClientInternals; import me.shedaniel.rei.impl.client.gui.screen.CompositeDisplayViewingScreen; import me.shedaniel.rei.impl.client.gui.screen.DefaultDisplayViewingScreen; -import me.shedaniel.rei.impl.client.gui.screen.RecipeScreen; +import me.shedaniel.rei.api.client.gui.screen.DisplayScreen; import me.shedaniel.rei.impl.client.gui.screen.UncertainDisplayViewingScreen; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -242,14 +242,17 @@ public class ClientHelperImpl implements ClientHelper { } else { screen = new DefaultDisplayViewingScreen(map, builder.getPreferredOpenedCategory()); } - if (screen instanceof RecipeScreen) { - if (builder.getInputNotice() != null) - ((RecipeScreen) screen).addIngredientStackToNotice(builder.getInputNotice()); - if (builder.getOutputNotice() != null) - ((RecipeScreen) screen).addResultStackToNotice(builder.getOutputNotice()); + if (screen instanceof DisplayScreen) { + if (builder.getInputNotice() != null) { + ((DisplayScreen) screen).setIngredientStackToNotice(builder.getInputNotice()); + } + if (builder.getOutputNotice() != null) { + ((DisplayScreen) screen).setResultStackToNotice(builder.getOutputNotice()); + } + } + if (Minecraft.getInstance().screen instanceof DisplayScreen) { + REIHelperImpl.getInstance().storeDisplayScreen((DisplayScreen) Minecraft.getInstance().screen); } - if (Minecraft.getInstance().screen instanceof RecipeScreen) - REIHelperImpl.getInstance().storeRecipeScreen((RecipeScreen) Minecraft.getInstance().screen); Minecraft.getInstance().setScreen(screen); return true; } @@ -269,8 +272,8 @@ public class ClientHelperImpl implements ClientHelper { public ViewSearchBuilder fillPreferredOpenedCategory() { if (getPreferredOpenedCategory() == null) { Screen currentScreen = Minecraft.getInstance().screen; - if (currentScreen instanceof RecipeScreen) { - setPreferredOpenedCategory(((RecipeScreen) currentScreen).getCurrentCategory()); + if (currentScreen instanceof DisplayScreen) { + setPreferredOpenedCategory(((DisplayScreen) currentScreen).getCurrentCategoryId()); } } return this; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java index 82c3eb983..568149a11 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java @@ -38,7 +38,7 @@ import me.shedaniel.rei.api.client.gui.widgets.TextField; import me.shedaniel.rei.api.client.gui.widgets.Tooltip; import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry; import me.shedaniel.rei.impl.client.gui.ContainerScreenOverlay; -import me.shedaniel.rei.impl.client.gui.screen.RecipeScreen; +import me.shedaniel.rei.api.client.gui.screen.DisplayScreen; import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -64,7 +64,7 @@ public class REIHelperImpl implements REIHelper { private OverlaySearchField searchField; private AbstractContainerScreen<?> previousContainerScreen = null; private Screen previousScreen = null; - private LinkedHashSet<RecipeScreen> lastRecipeScreen = Sets.newLinkedHashSetWithExpectedSize(10); + private LinkedHashSet<DisplayScreen> lastDisplayScreen = Sets.newLinkedHashSetWithExpectedSize(10); /** * @return the instance of screen helper @@ -97,19 +97,19 @@ public class REIHelperImpl implements REIHelper { return (OverlaySearchField) getInstance().getSearchTextField(); } - public void storeRecipeScreen(RecipeScreen screen) { - while (lastRecipeScreen.size() >= 10) - lastRecipeScreen.remove(Iterables.get(lastRecipeScreen, 0)); - lastRecipeScreen.add(screen); + public void storeDisplayScreen(DisplayScreen screen) { + while (lastDisplayScreen.size() >= 10) + lastDisplayScreen.remove(Iterables.get(lastDisplayScreen, 0)); + lastDisplayScreen.add(screen); } - public boolean hasLastRecipeScreen() { - return !lastRecipeScreen.isEmpty(); + public boolean hasLastDisplayScreen() { + return !lastDisplayScreen.isEmpty(); } - public Screen getLastRecipeScreen() { - RecipeScreen screen = Iterables.getLast(lastRecipeScreen); - lastRecipeScreen.remove(screen); + public Screen getLastDisplayScreen() { + DisplayScreen screen = Iterables.getLast(lastDisplayScreen); + lastDisplayScreen.remove(screen); screen.recalculateCategoryPage(); return (Screen) screen; } @@ -208,7 +208,7 @@ public class REIHelperImpl implements REIHelper { @Override public void startReload() { getOverlay().ifPresent(REIOverlay::queueReloadOverlay); - lastRecipeScreen.clear(); + lastDisplayScreen.clear(); } @Override diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java index 05230cbe5..833f4fa01 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java @@ -25,6 +25,7 @@ package me.shedaniel.rei.impl.client.gui.screen; import com.google.common.collect.Lists; import me.shedaniel.math.Rectangle; +import me.shedaniel.rei.api.client.gui.screen.DisplayScreen; import me.shedaniel.rei.api.client.gui.widgets.Slot; import me.shedaniel.rei.api.client.gui.widgets.Widget; import me.shedaniel.rei.api.client.gui.widgets.Widgets; @@ -43,7 +44,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Map; -public abstract class AbstractDisplayViewingScreen extends Screen implements RecipeScreen { +public abstract class AbstractDisplayViewingScreen extends Screen implements DisplayScreen { protected final Map<DisplayCategory<?>, List<Display>> categoryMap; protected final List<DisplayCategory<?>> categories; protected EntryStack<?> ingredientStackToNotice = EntryStack.empty(); @@ -68,35 +69,42 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Rec } @Override + public boolean isPauseScreen() { + return false; + } + + @Override public Rectangle getBounds() { return bounds; } @Override - public void addIngredientStackToNotice(EntryStack<?> stack) { + public void setIngredientStackToNotice(EntryStack<?> stack) { this.ingredientStackToNotice = stack; } @Override - public void addResultStackToNotice(EntryStack<?> stack) { + public void setResultStackToNotice(EntryStack<?> stack) { this.resultStackToNotice = stack; } @Override - public boolean isPauseScreen() { - return false; + public EntryStack<?> getIngredientStackToNotice() { + return ingredientStackToNotice; } @Override - public CategoryIdentifier<?> getCurrentCategory() { - return getSelectedCategory().getCategoryIdentifier(); + public EntryStack<?> getResultStackToNotice() { + return resultStackToNotice; } - public DisplayCategory<Display> getSelectedCategory() { + @Override + public DisplayCategory<Display> getCurrentCategory() { return (DisplayCategory<Display>) categories.get(selectedCategoryIndex); } - protected void previousCategory() { + @Override + public void previousCategory() { int currentCategoryIndex = selectedCategoryIndex; currentCategoryIndex--; if (currentCategoryIndex < 0) @@ -104,7 +112,8 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Rec ClientHelperImpl.getInstance().openRecipeViewingScreen(categoryMap, categories.get(currentCategoryIndex).getCategoryIdentifier(), ingredientStackToNotice, resultStackToNotice); } - protected void nextCategory() { + @Override + public void nextCategory() { int currentCategoryIndex = selectedCategoryIndex; currentCategoryIndex++; if (currentCategoryIndex >= categories.size()) diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java index 619b9ab7a..6214c0254 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java @@ -411,10 +411,11 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen return true; } if (keyCode == 259) { - if (REIHelperImpl.getInstance().hasLastRecipeScreen()) - minecraft.setScreen(REIHelperImpl.getInstance().getLastRecipeScreen()); - else + if (REIHelperImpl.getInstance().hasLastDisplayScreen()) { + minecraft.setScreen(REIHelperImpl.getInstance().getLastDisplayScreen()); + } else { minecraft.setScreen(REIHelper.getInstance().getPreviousScreen()); + } return true; } return super.keyPressed(keyCode, scanCode, modifiers); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java index 915e85be6..85cb85994 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java @@ -143,10 +143,11 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { return true; } if (keyCode == 259) { - if (REIHelperImpl.getInstance().hasLastRecipeScreen()) - minecraft.setScreen(REIHelperImpl.getInstance().getLastRecipeScreen()); - else + if (REIHelperImpl.getInstance().hasLastDisplayScreen()) { + minecraft.setScreen(REIHelperImpl.getInstance().getLastDisplayScreen()); + } else { minecraft.setScreen(REIHelper.getInstance().getPreviousScreen()); + } return true; } return super.keyPressed(keyCode, scanCode, modifiers); @@ -164,7 +165,7 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { this.widgets.clear(); int largestWidth = width - 100; int largestHeight = Math.max(height - 34 - 30, 100); - int maxWidthDisplay = CollectionUtils.mapAndMax(getCurrentDisplayed(), getSelectedCategory()::getDisplayWidth, Comparator.naturalOrder()).orElse(150); + int maxWidthDisplay = CollectionUtils.mapAndMax(getCurrentDisplayed(), getCurrentCategory()::getDisplayWidth, Comparator.naturalOrder()).orElse(150); int guiWidth = Math.max(maxWidthDisplay + 40, 190); this.tabsPerPage = Math.max(5, Mth.floor((guiWidth - 20d) / tabSize)); if (this.categoryPages == -1) { @@ -194,7 +195,7 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { .enabled(categories.size() > tabsPerPage)); widgets.add(categoryBack = Widgets.createButton(new Rectangle(bounds.getX() + 5, bounds.getY() + 5, 12, 12), new TranslatableComponent("text.rei.left_arrow")) .onClick(button -> previousCategory()).tooltipLine(new TranslatableComponent("text.rei.previous_category"))); - widgets.add(Widgets.createClickableLabel(new Point(bounds.getCenterX(), bounds.getY() + 7), getSelectedCategory().getTitle(), clickableLabelWidget -> { + widgets.add(Widgets.createClickableLabel(new Point(bounds.getCenterX(), bounds.getY() + 7), getCurrentCategory().getTitle(), clickableLabelWidget -> { ClientHelper.getInstance().openView(ViewSearchBuilder.builder().addAllCategories().fillPreferredOpenedCategory()); }).tooltipLine(I18n.get("text.rei.view_all_categories"))); widgets.add(categoryNext = Widgets.createButton(new Rectangle(bounds.getMaxX() - 17, bounds.getY() + 5, 12, 12), new TranslatableComponent("text.rei.right_arrow")) @@ -240,21 +241,21 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { tab.setRenderer(categories.get(j), categories.get(j).getIcon(), categories.get(j).getTitle(), tab.getId() + categoryPages * tabsPerPage == selectedCategoryIndex); } } - Optional<ButtonArea> supplier = CategoryRegistry.getInstance().get(getCurrentCategory()).getPlusButtonArea(); - int recipeHeight = getSelectedCategory().getDisplayHeight(); + Optional<ButtonArea> supplier = CategoryRegistry.getInstance().get(getCurrentCategoryId()).getPlusButtonArea(); + int recipeHeight = getCurrentCategory().getDisplayHeight(); List<Display> currentDisplayed = getCurrentDisplayed(); for (int i = 0; i < currentDisplayed.size(); i++) { final Display display = currentDisplayed.get(i); final Supplier<Display> displaySupplier = () -> display; - int displayWidth = getSelectedCategory().getDisplayWidth(displaySupplier.get()); + int displayWidth = getCurrentCategory().getDisplayWidth(displaySupplier.get()); final Rectangle displayBounds = new Rectangle(getBounds().getCenterX() - displayWidth / 2, getBounds().getCenterY() + 16 - recipeHeight * (getRecipesPerPage() + 1) / 2 - 2 * (getRecipesPerPage() + 1) + recipeHeight * i + 4 * i, displayWidth, recipeHeight); - List<Widget> setupDisplay = getSelectedCategory().setupDisplay(display, displayBounds); + List<Widget> setupDisplay = getCurrentCategory().setupDisplay(display, displayBounds); transformIngredientNotice(setupDisplay, ingredientStackToNotice); transformResultNotice(setupDisplay, resultStackToNotice); recipeBounds.put(displayBounds, setupDisplay); this.widgets.addAll(setupDisplay); if (supplier.isPresent() && supplier.get().get(displayBounds) != null) - this.widgets.add(InternalWidgets.createAutoCraftingButtonWidget(displayBounds, supplier.get().get(displayBounds), new TextComponent(supplier.get().getButtonText()), displaySupplier, setupDisplay, getSelectedCategory())); + this.widgets.add(InternalWidgets.createAutoCraftingButtonWidget(displayBounds, supplier.get().get(displayBounds), new TextComponent(supplier.get().getButtonText()), displaySupplier, setupDisplay, getCurrentCategory())); } if (choosePageActivated) choosePageWidget = new DefaultDisplayChoosePageWidget(this, page, getCurrentTotalPages()); @@ -262,7 +263,7 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { choosePageWidget = null; workingStationsBaseWidget = null; - List<EntryIngredient> workstations = CategoryRegistry.getInstance().get(getCurrentCategory()).getWorkstations(); + List<EntryIngredient> workstations = CategoryRegistry.getInstance().get(getCurrentCategoryId()).getWorkstations(); if (!workstations.isEmpty()) { int hh = Mth.floor((bounds.height - 16) / 18f); int actualHeight = Math.min(hh, workstations.size()); @@ -297,7 +298,7 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { public List<Display> getCurrentDisplayed() { List<Display> list = Lists.newArrayList(); int recipesPerPage = getRecipesPerPage(); - List<Display> displays = categoryMap.get(getSelectedCategory()); + List<Display> displays = categoryMap.get(getCurrentCategory()); for (int i = 0; i <= recipesPerPage; i++) { if (page * (recipesPerPage + 1) + i < displays.size()) { list.add(displays.get(page * (recipesPerPage + 1) + i)); @@ -315,7 +316,7 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { } private int getRecipesPerPage() { - DisplayCategory<Display> selectedCategory = getSelectedCategory(); + DisplayCategory<Display> selectedCategory = getCurrentCategory(); if (selectedCategory.getFixedDisplaysPerPage() > 0) return selectedCategory.getFixedDisplaysPerPage() - 1; int height = selectedCategory.getDisplayHeight(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/RecipeScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/RecipeScreen.java deleted file mode 100644 index 7309262e1..000000000 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/RecipeScreen.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is licensed under the MIT License, part of Roughly Enough Items. - * Copyright (c) 2018, 2019, 2020 shedaniel - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package me.shedaniel.rei.impl.client.gui.screen; - -import me.shedaniel.math.Rectangle; -import me.shedaniel.rei.api.common.category.CategoryIdentifier; -import me.shedaniel.rei.api.common.entry.EntryStack; -import org.jetbrains.annotations.ApiStatus; - -@ApiStatus.Internal -public interface RecipeScreen { - Rectangle getBounds(); - - void addIngredientStackToNotice(EntryStack<?> stack); - - void addResultStackToNotice(EntryStack<?> stack); - - CategoryIdentifier<?> getCurrentCategory(); - - void recalculateCategoryPage(); -}
\ No newline at end of file diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java index 6c1fa75ee..b5f0607f8 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java @@ -99,7 +99,7 @@ public class UncertainDisplayViewingScreen extends Screen { this.callback = callback; this.parent = parent; this.showTips = showTips; - if (showTips && Platform.isForge()) { + if (showTips && false && Platform.isForge()) { allModsUsingJEI = ClientInternals.getJeiCompatMods().stream() .distinct() .map(ClientHelper.getInstance()::getModFromModId) |
