Bläddra i källkod

nah let's break everyone's plugins

Unknown 6 år sedan
förälder
incheckning
ac4668f3bf
27 ändrade filer med 154 tillägg och 333 borttagningar
  1. 1 1
      gradle.properties
  2. 3 11
      src/main/java/me/shedaniel/rei/api/BaseBoundsHandler.java
  3. 4 4
      src/main/java/me/shedaniel/rei/api/DisplayHelper.java
  4. 0 44
      src/main/java/me/shedaniel/rei/api/DisplaySettings.java
  5. 5 5
      src/main/java/me/shedaniel/rei/api/DisplayVisibilityHandler.java
  6. 14 47
      src/main/java/me/shedaniel/rei/api/RecipeCategory.java
  7. 0 8
      src/main/java/me/shedaniel/rei/api/RecipeHelper.java
  8. 0 77
      src/main/java/me/shedaniel/rei/api/Renderable.java
  9. 65 0
      src/main/java/me/shedaniel/rei/api/Renderer.java
  10. 5 5
      src/main/java/me/shedaniel/rei/client/BaseBoundsHandlerImpl.java
  11. 10 10
      src/main/java/me/shedaniel/rei/client/DisplayHelperImpl.java
  12. 6 14
      src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java
  13. 2 2
      src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
  14. 0 13
      src/main/java/me/shedaniel/rei/gui/config/DisplayVisibility.java
  15. 3 3
      src/main/java/me/shedaniel/rei/gui/renderables/SimpleRecipeRenderer.java
  16. 3 4
      src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java
  17. 7 19
      src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
  18. 3 3
      src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java
  19. 4 3
      src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java
  20. 2 3
      src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java
  21. 1 2
      src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java
  22. 1 2
      src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireCategory.java
  23. 7 25
      src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java
  24. 1 2
      src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java
  25. 2 3
      src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingCategory.java
  26. 2 3
      src/main/java/me/shedaniel/rei/plugin/smoking/DefaultSmokingCategory.java
  27. 3 20
      src/main/java/me/shedaniel/rei/plugin/stonecutting/DefaultStoneCuttingCategory.java

+ 1 - 1
gradle.properties

@@ -1,4 +1,4 @@
-mod_version=2.9.5
+mod_version=2.10
 minecraft_version=1.14.2
 yarn_version=1.14.2+build.3
 fabricloader_version=0.4.7+build.147

+ 3 - 11
src/main/java/me/shedaniel/rei/api/BaseBoundsHandler.java

@@ -9,6 +9,7 @@ import net.minecraft.client.gui.screen.Screen;
 
 import java.awt.*;
 import java.util.List;
+import java.util.function.Function;
 
 public interface BaseBoundsHandler extends DisplayHelper.DisplayBoundsHandler<Screen> {
     /**
@@ -24,17 +25,8 @@ public interface BaseBoundsHandler extends DisplayHelper.DisplayBoundsHandler<Sc
      * Register an exclusion zone
      *
      * @param screenClass the screen
-     * @param supplier    the exclusion zone supplier
+     * @param supplier    the exclusion zone supplier, isOnRightSide -> the list of exclusion zones
      */
-    void registerExclusionZones(Class<?> screenClass, ExclusionZoneSupplier supplier);
+    void registerExclusionZones(Class<?> screenClass, Function<Boolean, List<Rectangle>> supplier);
     
-    public static interface ExclusionZoneSupplier {
-        /**
-         * Gets the current exclusion zones
-         *
-         * @param isOnRightSide whether the user has set the overlay to the right
-         * @return the list of exclusion zones
-         */
-        List<Rectangle> apply(boolean isOnRightSide);
-    }
 }

+ 4 - 4
src/main/java/me/shedaniel/rei/api/DisplayHelper.java

@@ -22,14 +22,14 @@ public interface DisplayHelper {
      * @return the sorted list of responsible bounds handlers
      * @see DisplayHelper#getResponsibleBoundsHandler(Class) for the unsorted version
      */
-    List<DisplayBoundsHandler> getSortedBoundsHandlers(Class screenClass);
+    List<DisplayBoundsHandler<?>> getSortedBoundsHandlers(Class<?> screenClass);
     
     /**
      * Gets all registered bounds handlers
      *
      * @return the list of registered bounds handlers
      */
-    List<DisplayBoundsHandler> getAllBoundsHandlers();
+    List<DisplayBoundsHandler<?>> getAllBoundsHandlers();
     
     /**
      * Gets all responsible bounds handlers
@@ -38,14 +38,14 @@ public interface DisplayHelper {
      * @return the the list of responsible bounds handlers
      * @see DisplayHelper#getSortedBoundsHandlers(Class) for the sorted version
      */
-    DisplayBoundsHandler getResponsibleBoundsHandler(Class screenClass);
+    DisplayBoundsHandler<?> getResponsibleBoundsHandler(Class<?> screenClass);
     
     /**
      * Registers a bounds handler
      *
      * @param handler the handler to register
      */
-    void registerBoundsHandler(DisplayBoundsHandler handler);
+    void registerBoundsHandler(DisplayBoundsHandler<?> handler);
     
     /**
      * Gets the base bounds handler api for exclusion zones

+ 0 - 44
src/main/java/me/shedaniel/rei/api/DisplaySettings.java

@@ -1,44 +0,0 @@
-/*
- * Roughly Enough Items by Danielshe.
- * Licensed under the MIT License.
- */
-
-package me.shedaniel.rei.api;
-
-public interface DisplaySettings<T extends RecipeDisplay> {
-    
-    /**
-     * Gets the recipe display height
-     *
-     * @param category the category of the display
-     * @return the height
-     */
-    int getDisplayHeight(RecipeCategory<?> category);
-    
-    /**
-     * Gets the recipe display width
-     *
-     * @param category the category of the display
-     * @param display  the display of the recipe
-     * @return the width
-     */
-    int getDisplayWidth(RecipeCategory<?> category, T display);
-    
-    /**
-     * Gets the maximum amount of recipe displays of the category displayed at the same time.
-     *
-     * @param category the category of the displays
-     * @return the maximum amount
-     */
-    int getMaximumRecipePerPage(RecipeCategory<?> category);
-    
-    /**
-     * Gets the fixed amount of recipes per page.
-     *
-     * @return the amount of recipes, returns -1 if not fixed
-     */
-    default int getFixedRecipesPerPage() {
-        return -1;
-    }
-    
-}

+ 5 - 5
src/main/java/me/shedaniel/rei/api/DisplayVisibilityHandler.java

@@ -5,7 +5,7 @@
 
 package me.shedaniel.rei.api;
 
-import me.shedaniel.rei.gui.config.DisplayVisibility;
+import net.minecraft.util.ActionResult;
 
 public interface DisplayVisibilityHandler {
     
@@ -20,14 +20,14 @@ public interface DisplayVisibilityHandler {
     
     /**
      * Handles the visibility of the display.
-     * {@link DisplayVisibility#PASS} to pass the handling to another handler
-     * {@link DisplayVisibility#ALWAYS_VISIBLE} to always display it
-     * {@link DisplayVisibility#NEVER_VISIBLE} to never display it
+     * {@link ActionResult#PASS} to pass the handling to another handler
+     * {@link ActionResult#SUCCESS} to always display it
+     * {@link ActionResult#FAIL} to never display it
      *
      * @param category the category of the display
      * @param display  the display of the recipe
      * @return the visibility
      */
-    DisplayVisibility handleDisplay(RecipeCategory<?> category, RecipeDisplay display);
+    ActionResult handleDisplay(RecipeCategory<?> category, RecipeDisplay display);
     
 }

+ 14 - 47
src/main/java/me/shedaniel/rei/api/RecipeCategory.java

@@ -12,7 +12,6 @@ import me.shedaniel.rei.gui.widget.CategoryBaseWidget;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.Widget;
 import net.minecraft.client.gui.DrawableHelper;
-import net.minecraft.item.ItemStack;
 import net.minecraft.util.Identifier;
 
 import java.awt.*;
@@ -30,26 +29,12 @@ public interface RecipeCategory<T extends RecipeDisplay> {
      */
     Identifier getIdentifier();
     
-    /**
-     * Gets the stack to render for the icon
-     *
-     * @return the stack to render
-     * @deprecated use {@link RecipeCategory#getIcon()} instead
-     */
-    @Deprecated
-    default ItemStack getCategoryIcon() {
-        return ItemStack.EMPTY;
-    }
-    
     /**
      * Gets the renderer of the icon, allowing developers to render things other than items
      *
      * @return the renderer of the icon
      */
-    @SuppressWarnings("deprecation")
-    default Renderer getIcon() {
-        return Renderable.fromItemStackSupplier(this::getCategoryIcon);
-    }
+    Renderer getIcon();
     
     /**
      * Gets the category name
@@ -66,7 +51,7 @@ public interface RecipeCategory<T extends RecipeDisplay> {
      */
     @SuppressWarnings("unchecked")
     default RecipeRenderer getSimpleRenderer(T recipe) {
-        return Renderable.fromRecipe(recipe::getInput, recipe::getOutput);
+        return Renderer.fromRecipe(recipe::getInput, recipe::getOutput);
     }
     
     /**
@@ -99,59 +84,41 @@ public interface RecipeCategory<T extends RecipeDisplay> {
         }
     }
     
-    /**
-     * Gets the display settings for the category, used for getting the bounds for the display
-     *
-     * @return the display settings
-     */
-    default DisplaySettings<T> getDisplaySettings() {
-        return new DisplaySettings<T>() {
-            @Override
-            public int getDisplayHeight(RecipeCategory<?> category) {
-                return 66;
-            }
-            
-            @Override
-            public int getDisplayWidth(RecipeCategory<?> category, T display) {
-                return 150;
-            }
-            
-            @Override
-            public int getMaximumRecipePerPage(RecipeCategory<?> category) {
-                return 99;
-            }
-        };
-    }
-    
     /**
      * Gets the recipe display height
-     * Please do not override this, use {@link RecipeCategory#getDisplaySettings()} instead
      *
      * @return the recipe display height
      */
     default int getDisplayHeight() {
-        return RecipeHelper.getInstance().getCachedCategorySettings(getIdentifier()).map(settings -> settings.getDisplayHeight(this)).orElse(0);
+        return 66;
     }
     
     /**
      * Gets the recipe display width
-     * Please do not override this, use {@link RecipeCategory#getDisplaySettings()} instead
      *
      * @param display the recipe display
      * @return the recipe display width
      */
     default int getDisplayWidth(T display) {
-        return RecipeHelper.getInstance().getCachedCategorySettings(getIdentifier()).map(settings -> settings.getDisplayWidth(this, display)).orElse(0);
+        return 150;
     }
     
     /**
      * Gets the maximum recipe per page.
-     * Please do not override this, use {@link RecipeCategory#getDisplaySettings()} instead
      *
      * @return the maximum amount of recipes for page
      */
     default int getMaximumRecipePerPage() {
-        return RecipeHelper.getInstance().getCachedCategorySettings(getIdentifier()).map(settings -> settings.getMaximumRecipePerPage(this)).orElse(0);
+        return 99;
+    }
+    
+    /**
+     * Gets the fixed amount of recipes per page.
+     *
+     * @return the amount of recipes, returns -1 if not fixed
+     */
+    default int getFixedRecipesPerPage() {
+        return -1;
     }
     
     /**

+ 0 - 8
src/main/java/me/shedaniel/rei/api/RecipeHelper.java

@@ -196,14 +196,6 @@ public interface RecipeHelper {
     
     <T extends Recipe<?>> void registerRecipes(Identifier category, Predicate<Recipe> recipeFilter, Function<T, RecipeDisplay> mappingFunction);
     
-    /**
-     * Gets the cached category setting by the category identifier
-     *
-     * @param category the identifier of the category
-     * @return the optional of the category settings
-     */
-    Optional<DisplaySettings> getCachedCategorySettings(Identifier category);
-    
     /**
      * Registers a live recipe generator.
      *

+ 0 - 77
src/main/java/me/shedaniel/rei/api/Renderable.java

@@ -1,77 +0,0 @@
-/*
- * Roughly Enough Items by Danielshe.
- * Licensed under the MIT License.
- */
-
-package me.shedaniel.rei.api;
-
-import me.shedaniel.rei.gui.renderables.EmptyRenderer;
-import me.shedaniel.rei.gui.renderables.ItemStackRenderer;
-import me.shedaniel.rei.gui.renderables.SimpleRecipeRenderer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.math.MathHelper;
-
-import java.util.List;
-import java.util.function.Supplier;
-
-/**
- * The base class for renderables
- */
-public class Renderable {
-    
-    /**
-     * Gets an item stack renderer by an item stack supplier
-     *
-     * @param supplier the supplier for getting the item stack
-     * @return the item stack renderer
-     */
-    public static ItemStackRenderer fromItemStackSupplier(Supplier<ItemStack> supplier) {
-        return new ItemStackRenderer() {
-            @Override
-            public ItemStack getItemStack() {
-                return supplier.get();
-            }
-        };
-    }
-    
-    /**
-     * Gets an item stack renderer by an item stack
-     *
-     * @param stack the item stack to be displayed
-     * @return the item stack renderer
-     */
-    public static ItemStackRenderer fromItemStack(ItemStack stack) {
-        return fromItemStackSupplier(() -> stack);
-    }
-    
-    /**
-     * Gets an empty renderer
-     *
-     * @return an empty renderer
-     */
-    public static EmptyRenderer empty() {
-        return EmptyRenderer.INSTANCE;
-    }
-    
-    /**
-     * Gets a simple recipe renderer from inputs and outputs
-     *
-     * @param input  the list of input items
-     * @param output the list of output items
-     * @return the recipe renderer
-     */
-    public static SimpleRecipeRenderer fromRecipe(Supplier<List<List<ItemStack>>> input, Supplier<List<ItemStack>> output) {
-        return new SimpleRecipeRenderer(input, output);
-    }
-    
-    public static ItemStackRenderer fromItemStacks(List<ItemStack> stacks) {
-        return new ItemStackRenderer() {
-            @Override
-            public ItemStack getItemStack() {
-                if (stacks.isEmpty())
-                    return ItemStack.EMPTY;
-                return stacks.get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) stacks.size()) / 1f));
-            }
-        };
-    }
-}

+ 65 - 0
src/main/java/me/shedaniel/rei/api/Renderer.java

@@ -5,9 +5,73 @@
 
 package me.shedaniel.rei.api;
 
+import me.shedaniel.rei.gui.renderables.EmptyRenderer;
+import me.shedaniel.rei.gui.renderables.ItemStackRenderer;
+import me.shedaniel.rei.gui.renderables.SimpleRecipeRenderer;
 import net.minecraft.client.gui.DrawableHelper;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.math.MathHelper;
+
+import java.util.List;
+import java.util.function.Supplier;
 
 public abstract class Renderer extends DrawableHelper {
+    /**
+     * Gets an item stack renderer by an item stack supplier
+     *
+     * @param supplier the supplier for getting the item stack
+     * @return the item stack renderer
+     */
+    public static ItemStackRenderer fromItemStackSupplier(Supplier<ItemStack> supplier) {
+        return new ItemStackRenderer() {
+            @Override
+            public ItemStack getItemStack() {
+                return supplier.get();
+            }
+        };
+    }
+    
+    /**
+     * Gets an item stack renderer by an item stack
+     *
+     * @param stack the item stack to be displayed
+     * @return the item stack renderer
+     */
+    public static ItemStackRenderer fromItemStack(ItemStack stack) {
+        return fromItemStackSupplier(() -> stack);
+    }
+    
+    /**
+     * Gets an empty renderer
+     *
+     * @return an empty renderer
+     */
+    public static EmptyRenderer empty() {
+        return EmptyRenderer.INSTANCE;
+    }
+    
+    /**
+     * Gets a simple recipe renderer from inputs and outputs
+     *
+     * @param input  the list of input items
+     * @param output the list of output items
+     * @return the recipe renderer
+     */
+    public static SimpleRecipeRenderer fromRecipe(Supplier<List<List<ItemStack>>> input, Supplier<List<ItemStack>> output) {
+        return new SimpleRecipeRenderer(input, output);
+    }
+    
+    public static ItemStackRenderer fromItemStacks(List<ItemStack> stacks) {
+        return new ItemStackRenderer() {
+            @Override
+            public ItemStack getItemStack() {
+                if (stacks.isEmpty())
+                    return ItemStack.EMPTY;
+                return stacks.get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) stacks.size()) / 1f));
+            }
+        };
+    }
+    
     /**
      * Gets the current blit offset
      *
@@ -36,4 +100,5 @@ public abstract class Renderer extends DrawableHelper {
      * @param delta  the delta
      */
     public abstract void render(int x, int y, double mouseX, double mouseY, float delta);
+    
 }

+ 5 - 5
src/main/java/me/shedaniel/rei/client/BaseBoundsHandlerImpl.java

@@ -24,15 +24,15 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler {
     
     private static final Function<Rectangle, String> RECTANGLE_STRING_FUNCTION = rectangle -> rectangle.x + "," + rectangle.y + "," + rectangle.width + "," + rectangle.height;
     private static final Comparator<Rectangle> RECTANGLE_COMPARATOR = BaseBoundsHandlerImpl::compare;
-    private static final Comparator<Pair<Pair<Class<?>, Float>, ExclusionZoneSupplier>> LIST_PAIR_COMPARATOR;
+    private static final Comparator<Pair<Pair<Class<?>, Float>, Function<Boolean, List<Rectangle>>>> LIST_PAIR_COMPARATOR;
     
     static {
-        Comparator<Pair<Pair<Class<?>, Float>, ExclusionZoneSupplier>> comparator = Comparator.comparingDouble(value -> value.getLeft().getRight());
+        Comparator<Pair<Pair<Class<?>, Float>, Function<Boolean, List<Rectangle>>>> comparator = Comparator.comparingDouble(value -> value.getLeft().getRight());
         LIST_PAIR_COMPARATOR = comparator.reversed();
     }
     
     private String lastArea = null;
-    private List<Pair<Pair<Class<?>, Float>, ExclusionZoneSupplier>> list = Lists.newArrayList();
+    private List<Pair<Pair<Class<?>, Float>, Function<Boolean, List<Rectangle>>>> list = Lists.newArrayList();
     
     private static int compare(Rectangle o1, Rectangle o2) {return RECTANGLE_STRING_FUNCTION.apply(o1).compareTo(RECTANGLE_STRING_FUNCTION.apply(o2));}
     
@@ -94,7 +94,7 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler {
     }
     
     public List<Rectangle> getCurrentExclusionZones(Class<?> currentScreenClass, boolean isOnRightSide) {
-        List<Pair<Pair<Class<?>, Float>, ExclusionZoneSupplier>> only = list.stream().filter(pair -> pair.getLeft().getLeft().isAssignableFrom(currentScreenClass)).collect(Collectors.toList());
+        List<Pair<Pair<Class<?>, Float>, Function<Boolean, List<Rectangle>>>> only = list.stream().filter(pair -> pair.getLeft().getLeft().isAssignableFrom(currentScreenClass)).collect(Collectors.toList());
         only.sort(LIST_PAIR_COMPARATOR);
         List<Rectangle> rectangles = Lists.newArrayList();
         only.forEach(pair -> rectangles.addAll(pair.getRight().apply(isOnRightSide)));
@@ -102,7 +102,7 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler {
     }
     
     @Override
-    public void registerExclusionZones(Class<?> screenClass, ExclusionZoneSupplier supplier) {
+    public void registerExclusionZones(Class<?> screenClass, Function<Boolean, List<Rectangle>> supplier) {
         list.add(new Pair<>(new Pair<>(screenClass, 0f), supplier));
     }
     

+ 10 - 10
src/main/java/me/shedaniel/rei/client/DisplayHelperImpl.java

@@ -19,8 +19,8 @@ import java.util.stream.Collectors;
 
 public class DisplayHelperImpl implements DisplayHelper {
     
-    private static final Comparator<DisplayBoundsHandler> BOUNDS_HANDLER_COMPARATOR;
-    private static final DisplayBoundsHandler EMPTY = new DisplayBoundsHandler() {
+    private static final Comparator<DisplayBoundsHandler<?>> BOUNDS_HANDLER_COMPARATOR;
+    private static final DisplayBoundsHandler<Object> EMPTY = new DisplayBoundsHandler() {
         @Override
         public Class getBaseSupportedClass() {
             return null;
@@ -43,27 +43,27 @@ public class DisplayHelperImpl implements DisplayHelper {
     };
     
     static {
-        Comparator<DisplayBoundsHandler> comparator = Comparator.comparingDouble(DisplayBoundsHandler::getPriority);
+        Comparator<DisplayBoundsHandler<?>> comparator = Comparator.comparingDouble(DisplayBoundsHandler::getPriority);
         BOUNDS_HANDLER_COMPARATOR = comparator.reversed();
     }
     
-    private List<DisplayBoundsHandler> screenDisplayBoundsHandlers = Lists.newArrayList();
-    private Map<Class, DisplayBoundsHandler> handlerCache = Maps.newHashMap();
+    private List<DisplayBoundsHandler<?>> screenDisplayBoundsHandlers = Lists.newArrayList();
+    private Map<Class<?>, DisplayBoundsHandler<?>> handlerCache = Maps.newHashMap();
     private BaseBoundsHandler baseBoundsHandler;
     
     @Override
-    public List<DisplayBoundsHandler> getSortedBoundsHandlers(Class screenClass) {
+    public List<DisplayBoundsHandler<?>> getSortedBoundsHandlers(Class<?> screenClass) {
         return screenDisplayBoundsHandlers.stream().filter(handler -> handler.getBaseSupportedClass().isAssignableFrom(screenClass)).sorted(BOUNDS_HANDLER_COMPARATOR).collect(Collectors.toList());
     }
     
     @Override
-    public List<DisplayBoundsHandler> getAllBoundsHandlers() {
+    public List<DisplayBoundsHandler<?>> getAllBoundsHandlers() {
         return screenDisplayBoundsHandlers;
     }
     
     @Override
-    public DisplayBoundsHandler getResponsibleBoundsHandler(Class screenClass) {
-        Optional<DisplayBoundsHandler> any = handlerCache.entrySet().stream().filter(entry -> entry.getKey().equals(screenClass)).map(Map.Entry::getValue).findAny();
+    public DisplayBoundsHandler<?> getResponsibleBoundsHandler(Class<?> screenClass) {
+        Optional<? extends DisplayBoundsHandler<?>> any = handlerCache.entrySet().stream().filter(entry -> entry.getKey().equals(screenClass)).map(Map.Entry::getValue).findAny();
         if (any.isPresent())
             return any.get();
         handlerCache.put(screenClass, screenDisplayBoundsHandlers.stream().filter(handler -> handler.getBaseSupportedClass().isAssignableFrom(screenClass)).sorted(BOUNDS_HANDLER_COMPARATOR).findAny().orElse(EMPTY));
@@ -71,7 +71,7 @@ public class DisplayHelperImpl implements DisplayHelper {
     }
     
     @Override
-    public void registerBoundsHandler(DisplayBoundsHandler handler) {
+    public void registerBoundsHandler(DisplayBoundsHandler<?> handler) {
         screenDisplayBoundsHandlers.add(handler);
     }
     

+ 6 - 14
src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java

@@ -9,10 +9,10 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.api.*;
-import me.shedaniel.rei.gui.config.DisplayVisibility;
 import net.minecraft.item.ItemStack;
 import net.minecraft.recipe.Recipe;
 import net.minecraft.recipe.RecipeManager;
+import net.minecraft.util.ActionResult;
 import net.minecraft.util.Identifier;
 
 import java.awt.*;
@@ -42,7 +42,6 @@ public class RecipeHelperImpl implements RecipeHelper {
     private final List<RecipeFunction> recipeFunctions = Lists.newArrayList();
     private final AtomicInteger recipeCount = new AtomicInteger();
     private final Map<Identifier, List<RecipeDisplay>> recipeCategoryListMap = Maps.newHashMap();
-    private final Map<Identifier, DisplaySettings> categoryDisplaySettingsMap = Maps.newHashMap();
     private final List<RecipeCategory> categories = Lists.newArrayList();
     private final Map<Identifier, ButtonAreaSupplier> speedCraftAreaSupplierMap = Maps.newHashMap();
     private final Map<Identifier, List<List<ItemStack>>> categoryWorkingStations = Maps.newHashMap();
@@ -267,8 +266,8 @@ public class RecipeHelperImpl implements RecipeHelper {
         if (getDisplayVisibilityHandlers().isEmpty())
             registerRecipeVisibilityHandler(new DisplayVisibilityHandler() {
                 @Override
-                public DisplayVisibility handleDisplay(RecipeCategory<?> category, RecipeDisplay display) {
-                    return DisplayVisibility.ALWAYS_VISIBLE;
+                public ActionResult handleDisplay(RecipeCategory<?> category, RecipeDisplay display) {
+                    return ActionResult.SUCCESS;
                 }
                 
                 @Override
@@ -278,8 +277,6 @@ public class RecipeHelperImpl implements RecipeHelper {
             });
         // Clear Cache
         ((DisplayHelperImpl) RoughlyEnoughItemsCore.getDisplayHelper()).resetCache();
-        this.categoryDisplaySettingsMap.clear();
-        getAllCategories().forEach(category -> categoryDisplaySettingsMap.put(category.getIdentifier(), category.getDisplaySettings()));
         ScreenHelper.getOptionalOverlay().ifPresent(overlay -> overlay.shouldReInit = true);
         
         long usedTime = System.currentTimeMillis() - startTime;
@@ -353,9 +350,9 @@ public class RecipeHelperImpl implements RecipeHelper {
         List<DisplayVisibilityHandler> list = getDisplayVisibilityHandlers().stream().sorted(VISIBILITY_HANDLER_COMPARATOR).collect(Collectors.toList());
         for(DisplayVisibilityHandler displayVisibilityHandler : list) {
             try {
-                DisplayVisibility visibility = displayVisibilityHandler.handleDisplay(category, display);
-                if (visibility != DisplayVisibility.PASS)
-                    return visibility == DisplayVisibility.ALWAYS_VISIBLE || visibility == DisplayVisibility.CONFIG_OPTIONAL;
+                ActionResult visibility = displayVisibilityHandler.handleDisplay(category, display);
+                if (visibility != ActionResult.PASS)
+                    return visibility == ActionResult.SUCCESS;
             } catch (Throwable throwable) {
                 RoughlyEnoughItemsCore.LOGGER.error("[REI] Failed to check if the recipe is visible!", throwable);
             }
@@ -378,11 +375,6 @@ public class RecipeHelperImpl implements RecipeHelper {
         recipeFunctions.add(new RecipeFunction(category, recipeFilter, mappingFunction));
     }
     
-    @Override
-    public Optional<DisplaySettings> getCachedCategorySettings(Identifier category) {
-        return categoryDisplaySettingsMap.entrySet().stream().filter(entry -> entry.getKey().equals(category)).map(Map.Entry::getValue).findAny();
-    }
-    
     @Override
     public void registerLiveRecipeGenerator(LiveRecipeGenerator<?> liveRecipeGenerator) {
         liveRecipeGenerators.add(liveRecipeGenerator);

+ 2 - 2
src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java

@@ -347,8 +347,8 @@ public class RecipeViewingScreen extends Screen {
     }
     
     private int getRecipesPerPage() {
-        if (selectedCategory.getDisplaySettings().getFixedRecipesPerPage() > 0)
-            return selectedCategory.getDisplaySettings().getFixedRecipesPerPage() - 1;
+        if (selectedCategory.getFixedRecipesPerPage() > 0)
+            return selectedCategory.getFixedRecipesPerPage() - 1;
         int height = selectedCategory.getDisplayHeight();
         return MathHelper.clamp(MathHelper.floor(((double) largestHeight - 40d) / ((double) height + 7d)) - 1, 0, Math.min(RoughlyEnoughItemsCore.getConfigManager().getConfig().maxRecipePerPage - 1, selectedCategory.getMaximumRecipePerPage() - 1));
     }

+ 0 - 13
src/main/java/me/shedaniel/rei/gui/config/DisplayVisibility.java

@@ -1,13 +0,0 @@
-/*
- * Roughly Enough Items by Danielshe.
- * Licensed under the MIT License.
- */
-
-package me.shedaniel.rei.gui.config;
-
-public enum DisplayVisibility {
-    ALWAYS_VISIBLE,
-    @Deprecated CONFIG_OPTIONAL,
-    NEVER_VISIBLE,
-    PASS
-}

+ 3 - 3
src/main/java/me/shedaniel/rei/gui/renderables/SimpleRecipeRenderer.java

@@ -6,7 +6,7 @@
 package me.shedaniel.rei.gui.renderables;
 
 import com.google.common.collect.Lists;
-import me.shedaniel.rei.api.Renderable;
+import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.VillagerRecipeViewingScreen;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.render.GuiLighting;
@@ -58,8 +58,8 @@ public class SimpleRecipeRenderer extends RecipeRenderer {
                 s.setAmount(pair.getRight().get());
                 return s;
             }).collect(Collectors.toList()));
-        this.inputRenderer = b.stream().filter(stacks -> !stacks.isEmpty()).map(stacks -> Renderable.fromItemStacks(stacks)).collect(Collectors.toList());
-        this.outputRenderer = Renderable.fromItemStacks(output.get().stream().filter(stack -> !stack.isEmpty()).collect(Collectors.toList()));
+        this.inputRenderer = b.stream().filter(stacks -> !stacks.isEmpty()).map(stacks -> Renderer.fromItemStacks(stacks)).collect(Collectors.toList());
+        this.outputRenderer = Renderer.fromItemStacks(output.get().stream().filter(stack -> !stack.isEmpty()).collect(Collectors.toList()));
     }
     
     public static boolean equalsList(List<ItemStack> list_1, List<ItemStack> list_2) {

+ 3 - 4
src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java

@@ -9,7 +9,6 @@ import com.google.common.collect.Lists;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.cloth.api.ClientUtils;
 import me.shedaniel.rei.api.ClientHelper;
-import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.client.ClientHelperImpl;
 import me.shedaniel.rei.client.ScreenHelper;
@@ -37,7 +36,7 @@ public class SlotWidget extends HighlightableWidget {
     }
     
     public SlotWidget(int x, int y, Collection<ItemStack> itemList, boolean drawBackground, boolean showToolTips) {
-        this(x, y, itemList.stream().map(Renderable::fromItemStack).collect(Collectors.toList()), drawBackground, showToolTips);
+        this(x, y, itemList.stream().map(Renderer::fromItemStack).collect(Collectors.toList()), drawBackground, showToolTips);
     }
     
     public SlotWidget(int x, int y, List<Renderer> renderers, boolean drawBackground, boolean showToolTips) {
@@ -178,12 +177,12 @@ public class SlotWidget extends HighlightableWidget {
     
     public Renderer getCurrentRenderer() {
         if (renderers.size() == 0)
-            return Renderable.empty();
+            return Renderer.empty();
         return renderers.get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) renderers.size()) / 1f));
     }
     
     public void setItemList(List<ItemStack> itemList) {
-        this.setRenderers(itemList.stream().map(Renderable::fromItemStack).collect(Collectors.toList()));
+        this.setRenderers(itemList.stream().map(Renderer::fromItemStack).collect(Collectors.toList()));
     }
     
     public void setRenderers(List<Renderer> renderers) {

+ 7 - 19
src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java

@@ -12,7 +12,6 @@ import me.shedaniel.rei.api.*;
 import me.shedaniel.rei.client.ScreenHelper;
 import me.shedaniel.rei.gui.RecipeViewingScreen;
 import me.shedaniel.rei.gui.VillagerRecipeViewingScreen;
-import me.shedaniel.rei.gui.config.DisplayVisibility;
 import me.shedaniel.rei.plugin.blasting.DefaultBlastingCategory;
 import me.shedaniel.rei.plugin.blasting.DefaultBlastingDisplay;
 import me.shedaniel.rei.plugin.brewing.DefaultBrewingCategory;
@@ -171,19 +170,19 @@ public class DefaultPlugin implements REIPluginEntry {
     public void registerBounds(DisplayHelper displayHelper) {
         displayHelper.getBaseBoundsHandler().registerExclusionZones(AbstractInventoryScreen.class, new DefaultPotionEffectExclusionZones());
         displayHelper.getBaseBoundsHandler().registerExclusionZones(RecipeBookProvider.class, new DefaultRecipeBookExclusionZones());
-        displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler<AbstractContainerScreen>() {
+        displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler<AbstractContainerScreen<?>>() {
             @Override
-            public Class getBaseSupportedClass() {
+            public Class<?> getBaseSupportedClass() {
                 return AbstractContainerScreen.class;
             }
             
             @Override
-            public Rectangle getLeftBounds(AbstractContainerScreen screen) {
+            public Rectangle getLeftBounds(AbstractContainerScreen<?> screen) {
                 return new Rectangle(2, 0, ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft() - 4, MinecraftClient.getInstance().window.getScaledHeight());
             }
             
             @Override
-            public Rectangle getRightBounds(AbstractContainerScreen screen) {
+            public Rectangle getRightBounds(AbstractContainerScreen<?> screen) {
                 int startX = ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft() + ScreenHelper.getLastContainerScreenHooks().rei_getContainerWidth() + 2;
                 return new Rectangle(startX, 0, MinecraftClient.getInstance().window.getScaledWidth() - startX - 2, MinecraftClient.getInstance().window.getScaledHeight());
             }
@@ -195,7 +194,7 @@ public class DefaultPlugin implements REIPluginEntry {
         });
         displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler<RecipeViewingScreen>() {
             @Override
-            public Class getBaseSupportedClass() {
+            public Class<?> getBaseSupportedClass() {
                 return RecipeViewingScreen.class;
             }
             
@@ -217,7 +216,7 @@ public class DefaultPlugin implements REIPluginEntry {
         });
         displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler<VillagerRecipeViewingScreen>() {
             @Override
-            public Class getBaseSupportedClass() {
+            public Class<?> getBaseSupportedClass() {
                 return VillagerRecipeViewingScreen.class;
             }
             
@@ -239,7 +238,7 @@ public class DefaultPlugin implements REIPluginEntry {
         });
         displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler<CreativeInventoryScreen>() {
             @Override
-            public Class getBaseSupportedClass() {
+            public Class<?> getBaseSupportedClass() {
                 return CreativeInventoryScreen.class;
             }
             
@@ -278,17 +277,6 @@ public class DefaultPlugin implements REIPluginEntry {
         recipeHelper.registerWorkingStations(COMPOSTING, new ItemStack(Items.COMPOSTER));
         recipeHelper.registerSpeedCraftButtonArea(COMPOSTING, bounds -> null);
         recipeHelper.registerSpeedCraftButtonArea(DefaultPlugin.CAMPFIRE, bounds -> new Rectangle((int) bounds.getMaxX() - 16, bounds.y + 6, 10, 10));
-        recipeHelper.registerRecipeVisibilityHandler(new DisplayVisibilityHandler() {
-            @Override
-            public DisplayVisibility handleDisplay(RecipeCategory<?> category, RecipeDisplay display) {
-                return DisplayVisibility.ALWAYS_VISIBLE;
-            }
-            
-            @Override
-            public float getPriority() {
-                return -1f;
-            }
-        });
     }
     
     @Override

+ 3 - 3
src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java

@@ -6,7 +6,6 @@
 package me.shedaniel.rei.plugin;
 
 import com.google.common.collect.Ordering;
-import me.shedaniel.rei.api.BaseBoundsHandler;
 import me.shedaniel.rei.client.ScreenHelper;
 import me.shedaniel.rei.listeners.AbstractInventoryScreenHooks;
 import me.shedaniel.rei.listeners.ContainerScreenHooks;
@@ -19,10 +18,11 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.function.Function;
 
-public class DefaultPotionEffectExclusionZones implements BaseBoundsHandler.ExclusionZoneSupplier {
+public class DefaultPotionEffectExclusionZones implements Function<Boolean, List<Rectangle>> {
     @Override
-    public List<Rectangle> apply(boolean isOnRightSide) {
+    public List<Rectangle> apply(Boolean isOnRightSide) {
         if (isOnRightSide || !(ScreenHelper.getLastContainerScreen() instanceof AbstractInventoryScreen) || !((AbstractInventoryScreenHooks) ScreenHelper.getLastContainerScreen()).rei_doesOffsetGuiForEffects())
             return Collections.emptyList();
         Collection<StatusEffectInstance> activePotionEffects = MinecraftClient.getInstance().player.getStatusEffects();

+ 4 - 3
src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java

@@ -17,16 +17,17 @@ import net.minecraft.container.CraftingContainer;
 import java.awt.*;
 import java.util.Collections;
 import java.util.List;
+import java.util.function.Function;
 
-public class DefaultRecipeBookExclusionZones implements BaseBoundsHandler.ExclusionZoneSupplier {
+public class DefaultRecipeBookExclusionZones implements Function<Boolean, List<Rectangle>> {
     
     @Override
-    public List<Rectangle> apply(boolean isOnRightSide) {
+    public List<Rectangle> apply(Boolean isOnRightSide) {
         if (isOnRightSide || !MinecraftClient.getInstance().player.getRecipeBook().isGuiOpen() || !(MinecraftClient.getInstance().currentScreen instanceof RecipeBookProvider) || !(ScreenHelper.getLastContainerScreen().getContainer() instanceof CraftingContainer))
             return Collections.emptyList();
         ContainerScreenHooks screenHooks = ScreenHelper.getLastContainerScreenHooks();
         List<Rectangle> l = Lists.newArrayList(new Rectangle(screenHooks.rei_getContainerLeft() - 4 - 145, screenHooks.rei_getContainerTop(), 4 + 145 + 30, screenHooks.rei_getContainerHeight()));
-        int size = ClientRecipeBook.getGroupsForContainer((CraftingContainer) ScreenHelper.getLastContainerScreen().getContainer()).size();
+        int size = ClientRecipeBook.getGroupsForContainer((CraftingContainer<?>) ScreenHelper.getLastContainerScreen().getContainer()).size();
         if (size > 0)
             l.add(new Rectangle(screenHooks.rei_getContainerLeft() - 4 - 145 - 30, screenHooks.rei_getContainerTop(), 30, size * 27));
         return l;

+ 2 - 3
src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java

@@ -7,7 +7,6 @@ package me.shedaniel.rei.plugin.blasting;
 
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
@@ -39,7 +38,7 @@ public class DefaultBlastingCategory implements RecipeCategory<DefaultBlastingDi
     
     @Override
     public Renderer getIcon() {
-        return Renderable.fromItemStack(new ItemStack(Blocks.BLAST_FURNACE));
+        return Renderer.fromItemStack(new ItemStack(Blocks.BLAST_FURNACE));
     }
     
     @Override
@@ -49,7 +48,7 @@ public class DefaultBlastingCategory implements RecipeCategory<DefaultBlastingDi
     
     @Override
     public RecipeRenderer getSimpleRenderer(DefaultBlastingDisplay recipe) {
-        return Renderable.fromRecipe(() -> Arrays.asList(recipe.getInput().get(0)), recipe::getOutput);
+        return Renderer.fromRecipe(() -> Arrays.asList(recipe.getInput().get(0)), recipe::getOutput);
     }
     
     @Override

+ 1 - 2
src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java

@@ -7,7 +7,6 @@ package me.shedaniel.rei.plugin.brewing;
 
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.SlotWidget;
@@ -39,7 +38,7 @@ public class DefaultBrewingCategory implements RecipeCategory<DefaultBrewingDisp
     
     @Override
     public Renderer getIcon() {
-        return Renderable.fromItemStack(new ItemStack(Blocks.BREWING_STAND));
+        return Renderer.fromItemStack(new ItemStack(Blocks.BREWING_STAND));
     }
     
     @Override

+ 1 - 2
src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireCategory.java

@@ -7,7 +7,6 @@ package me.shedaniel.rei.plugin.campfire;
 
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.SlotWidget;
@@ -36,7 +35,7 @@ public class DefaultCampfireCategory implements RecipeCategory<DefaultCampfireDi
     
     @Override
     public Renderer getIcon() {
-        return Renderable.fromItemStack(new ItemStack(Blocks.CAMPFIRE));
+        return Renderer.fromItemStack(new ItemStack(Blocks.CAMPFIRE));
     }
     
     @Override

+ 7 - 25
src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java

@@ -7,9 +7,7 @@ package me.shedaniel.rei.plugin.composting;
 
 import com.google.common.collect.Lists;
 import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.rei.api.DisplaySettings;
 import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
@@ -40,7 +38,7 @@ public class DefaultCompostingCategory implements RecipeCategory<DefaultComposti
     
     @Override
     public Renderer getIcon() {
-        return Renderable.fromItemStack(new ItemStack(Blocks.COMPOSTER));
+        return Renderer.fromItemStack(new ItemStack(Blocks.COMPOSTER));
     }
     
     @Override
@@ -100,28 +98,12 @@ public class DefaultCompostingCategory implements RecipeCategory<DefaultComposti
     }
     
     @Override
-    public DisplaySettings<DefaultCompostingDisplay> getDisplaySettings() {
-        return new DisplaySettings<DefaultCompostingDisplay>() {
-            @Override
-            public int getDisplayHeight(RecipeCategory<?> recipeCategory) {
-                return 140;
-            }
-            
-            @Override
-            public int getDisplayWidth(RecipeCategory<?> recipeCategory, DefaultCompostingDisplay display) {
-                return 150;
-            }
-            
-            @Override
-            public int getMaximumRecipePerPage(RecipeCategory<?> recipeCategory) {
-                return -1;
-            }
-            
-            @Override
-            public int getFixedRecipesPerPage() {
-                return 1;
-            }
-        };
+    public int getDisplayHeight() {
+        return 140;
     }
     
+    @Override
+    public int getFixedRecipesPerPage() {
+        return 1;
+    }
 }

+ 1 - 2
src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java

@@ -8,7 +8,6 @@ package me.shedaniel.rei.plugin.crafting;
 import com.google.common.collect.Lists;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.SlotWidget;
@@ -37,7 +36,7 @@ public class DefaultCraftingCategory implements RecipeCategory<DefaultCraftingDi
     
     @Override
     public Renderer getIcon() {
-        return Renderable.fromItemStack(new ItemStack(Blocks.CRAFTING_TABLE));
+        return Renderer.fromItemStack(new ItemStack(Blocks.CRAFTING_TABLE));
     }
     
     @Override

+ 2 - 3
src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingCategory.java

@@ -7,7 +7,6 @@ package me.shedaniel.rei.plugin.smelting;
 
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
@@ -39,7 +38,7 @@ public class DefaultSmeltingCategory implements RecipeCategory<DefaultSmeltingDi
     
     @Override
     public Renderer getIcon() {
-        return Renderable.fromItemStack(new ItemStack(Blocks.FURNACE));
+        return Renderer.fromItemStack(new ItemStack(Blocks.FURNACE));
     }
     
     @Override
@@ -49,7 +48,7 @@ public class DefaultSmeltingCategory implements RecipeCategory<DefaultSmeltingDi
     
     @Override
     public RecipeRenderer getSimpleRenderer(DefaultSmeltingDisplay recipe) {
-        return Renderable.fromRecipe(() -> Arrays.asList(recipe.getInput().get(0)), recipe::getOutput);
+        return Renderer.fromRecipe(() -> Arrays.asList(recipe.getInput().get(0)), recipe::getOutput);
     }
     
     @Override

+ 2 - 3
src/main/java/me/shedaniel/rei/plugin/smoking/DefaultSmokingCategory.java

@@ -7,7 +7,6 @@ package me.shedaniel.rei.plugin.smoking;
 
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
@@ -39,7 +38,7 @@ public class DefaultSmokingCategory implements RecipeCategory<DefaultSmokingDisp
     
     @Override
     public Renderer getIcon() {
-        return Renderable.fromItemStack(new ItemStack(Blocks.SMOKER));
+        return Renderer.fromItemStack(new ItemStack(Blocks.SMOKER));
     }
     
     @Override
@@ -49,7 +48,7 @@ public class DefaultSmokingCategory implements RecipeCategory<DefaultSmokingDisp
     
     @Override
     public RecipeRenderer getSimpleRenderer(DefaultSmokingDisplay recipe) {
-        return Renderable.fromRecipe(() -> Arrays.asList(recipe.getInput().get(0)), recipe::getOutput);
+        return Renderer.fromRecipe(() -> Arrays.asList(recipe.getInput().get(0)), recipe::getOutput);
     }
     
     @Override

+ 3 - 20
src/main/java/me/shedaniel/rei/plugin/stonecutting/DefaultStoneCuttingCategory.java

@@ -6,9 +6,7 @@
 package me.shedaniel.rei.plugin.stonecutting;
 
 import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.rei.api.DisplaySettings;
 import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.SlotWidget;
@@ -36,7 +34,7 @@ public class DefaultStoneCuttingCategory implements RecipeCategory<DefaultStoneC
     
     @Override
     public Renderer getIcon() {
-        return Renderable.fromItemStack(new ItemStack(Blocks.STONECUTTER));
+        return Renderer.fromItemStack(new ItemStack(Blocks.STONECUTTER));
     }
     
     @Override
@@ -63,23 +61,8 @@ public class DefaultStoneCuttingCategory implements RecipeCategory<DefaultStoneC
     }
     
     @Override
-    public DisplaySettings<DefaultStoneCuttingDisplay> getDisplaySettings() {
-        return new DisplaySettings<DefaultStoneCuttingDisplay>() {
-            @Override
-            public int getDisplayHeight(RecipeCategory<?> category) {
-                return 36;
-            }
-            
-            @Override
-            public int getDisplayWidth(RecipeCategory<?> category, DefaultStoneCuttingDisplay display) {
-                return 150;
-            }
-            
-            @Override
-            public int getMaximumRecipePerPage(RecipeCategory<?> category) {
-                return 99;
-            }
-        };
+    public int getDisplayHeight() {
+        return 36;
     }
     
 }