Unknown 6 år sedan
förälder
incheckning
62bb1cb11f

+ 1 - 1
gradle.properties

@@ -1,4 +1,4 @@
-mod_version=2.9.3
+mod_version=2.9.4
 minecraft_version=1.14.2
 yarn_version=1.14.2+build.2
 fabricloader_version=0.4.7+build.147

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

@@ -5,7 +5,7 @@
 
 package me.shedaniel.rei.api;
 
-import me.shedaniel.rei.RoughlyEnoughItemsCore;
+import me.shedaniel.rei.client.ScreenHelper;
 import me.shedaniel.rei.gui.RecipeViewingScreen;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
 import me.shedaniel.rei.gui.widget.CategoryBaseWidget;
@@ -46,6 +46,7 @@ public interface RecipeCategory<T extends RecipeDisplay> {
      *
      * @return the renderer of the icon
      */
+    @SuppressWarnings("deprecation")
     default Renderer getIcon() {
         return Renderable.fromItemStackSupplier(this::getCategoryIcon);
     }
@@ -63,6 +64,7 @@ public interface RecipeCategory<T extends RecipeDisplay> {
      * @param recipe the recipe to render
      * @return the recipe renderer
      */
+    @SuppressWarnings("unchecked")
     default RecipeRenderer getSimpleRenderer(T recipe) {
         return Renderable.fromRecipe(recipe::getInput, recipe::getOutput);
     }
@@ -88,7 +90,7 @@ public interface RecipeCategory<T extends RecipeDisplay> {
      */
     default void drawCategoryBackground(Rectangle bounds, int mouseX, int mouseY, float delta) {
         new CategoryBaseWidget(bounds).render();
-        if (RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme) {
+        if (ScreenHelper.isDarkModeEnabled()) {
             DrawableHelper.fill(bounds.x + 17, bounds.y + 5, bounds.x + bounds.width - 17, bounds.y + 17, 0xFF404040);
             DrawableHelper.fill(bounds.x + 17, bounds.y + 21, bounds.x + bounds.width - 17, bounds.y + 33, 0xFF404040);
         } else {

+ 0 - 1
src/main/java/me/shedaniel/rei/api/RecipeDisplay.java

@@ -35,7 +35,6 @@ public interface RecipeDisplay<T extends Recipe> {
      *
      * @return the list of required items
      */
-    @Deprecated
     default List<List<ItemStack>> getRequiredItems() {
         return Lists.newArrayList();
     }

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

@@ -15,6 +15,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.Function;
+import java.util.function.Predicate;
 
 public interface RecipeHelper {
     
@@ -194,6 +195,8 @@ public interface RecipeHelper {
      */
     boolean isDisplayVisible(RecipeDisplay display);
     
+    <T extends Recipe<?>> void registerRecipes(Identifier category, Predicate<Recipe> recipeFilter, Function<T, RecipeDisplay> mappingFunction);
+    
     /**
      * Gets the cached category setting by the category identifier
      *

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

@@ -19,6 +19,7 @@ import java.util.List;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 public class RecipeHelperImpl implements RecipeHelper {
@@ -204,6 +205,7 @@ public class RecipeHelperImpl implements RecipeHelper {
             speedCraftAreaSupplierMap.put(category, rectangle);
     }
     
+    @SuppressWarnings("deprecation")
     @Override
     public void registerDefaultSpeedCraftButtonArea(Identifier category) {
         registerSpeedCraftButtonArea(category, bounds -> new Rectangle((int) bounds.getMaxX() - 16, (int) bounds.getMaxY() - 16, 10, 10));
@@ -271,7 +273,7 @@ public class RecipeHelperImpl implements RecipeHelper {
             Collections.reverse(allSortedRecipes);
             recipeFunctions.forEach(recipeFunction -> {
                 try {
-                    allSortedRecipes.stream().filter(recipe -> recipeFunction.recipeFilter.apply(recipe)).forEach(t -> registerDisplay(recipeFunction.category, (RecipeDisplay) recipeFunction.mappingFunction.apply(t), 0));
+                    allSortedRecipes.stream().filter(recipe -> recipeFunction.recipeFilter.test(recipe)).forEach(t -> registerDisplay(recipeFunction.category, (RecipeDisplay) recipeFunction.mappingFunction.apply(t), 0));
                 } catch (Exception e) {
                     RoughlyEnoughItemsCore.LOGGER.error("[REI] Failed to add recipes!", e);
                 }
@@ -361,6 +363,11 @@ public class RecipeHelperImpl implements RecipeHelper {
     
     @Override
     public <T extends Recipe<?>> void registerRecipes(Identifier category, Function<Recipe, Boolean> recipeFilter, Function<T, RecipeDisplay> mappingFunction) {
+        recipeFunctions.add(new RecipeFunction(category, recipeFilter::apply, mappingFunction));
+    }
+    
+    @Override
+    public <T extends Recipe<?>> void registerRecipes(Identifier category, Predicate<Recipe> recipeFilter, Function<T, RecipeDisplay> mappingFunction) {
         recipeFunctions.add(new RecipeFunction(category, recipeFilter, mappingFunction));
     }
     
@@ -376,10 +383,10 @@ public class RecipeHelperImpl implements RecipeHelper {
     
     private class RecipeFunction {
         Identifier category;
-        Function<Recipe, Boolean> recipeFilter;
+        Predicate<Recipe> recipeFilter;
         Function mappingFunction;
         
-        public RecipeFunction(Identifier category, Function<Recipe, Boolean> recipeFilter, Function<?, RecipeDisplay> mappingFunction) {
+        public RecipeFunction(Identifier category, Predicate<Recipe> recipeFilter, Function<?, RecipeDisplay> mappingFunction) {
             this.category = category;
             this.recipeFilter = recipeFilter;
             this.mappingFunction = mappingFunction;

+ 0 - 2
src/main/java/me/shedaniel/rei/client/RecipeScreenType.java

@@ -7,8 +7,6 @@ package me.shedaniel.rei.client;
 
 import net.minecraft.client.resource.language.I18n;
 
-import java.util.Locale;
-
 public enum RecipeScreenType {
     UNSET,
     ORIGINAL,

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

@@ -6,6 +6,7 @@
 package me.shedaniel.rei.client;
 
 import com.google.common.collect.Lists;
+import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.gui.ContainerScreenOverlay;
 import me.shedaniel.rei.gui.widget.SearchFieldWidget;
 import me.shedaniel.rei.listeners.ContainerScreenHooks;
@@ -75,6 +76,10 @@ public class ScreenHelper implements ClientModInitializer {
         consumer.accept(actualX, actualY, delta);
     }
     
+    public static boolean isDarkModeEnabled() {
+        return RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme;
+    }
+    
     @Override
     public void onInitializeClient() {
         ClientTickCallback.EVENT.register(client -> {

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

@@ -306,7 +306,7 @@ public class RecipeViewingScreen extends Screen {
             int yy = bounds.y + 16;
             preWidgets.add(new CategoryBaseWidget(new Rectangle(xx - 6, yy - 6, 15 + innerWidth * 18, 11 + actualHeight * 18)));
             int index = 0;
-            List list = Collections.singletonList(ChatFormat.YELLOW.toString() + I18n.translate("text.rei.working_station"));
+            List<String> list = Collections.singletonList(ChatFormat.YELLOW.toString() + I18n.translate("text.rei.working_station"));
             xx += (innerWidth - 1) * 18;
             for(List<ItemStack> workingStation : workingStations) {
                 preWidgets.add(new SlotWidget(xx, yy, workingStation, true, true, true) {
@@ -379,7 +379,7 @@ public class RecipeViewingScreen extends Screen {
             selectedCategory.drawCategoryBackground(bounds, mouseX, mouseY, delta);
         else {
             new CategoryBaseWidget(bounds).render();
-            if (RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme) {
+            if (ScreenHelper.isDarkModeEnabled()) {
                 fill(bounds.x + 17, bounds.y + 5, bounds.x + bounds.width - 17, bounds.y + 17, 0xFF404040);
                 fill(bounds.x + 17, bounds.y + 21, bounds.x + bounds.width - 17, bounds.y + 33, 0xFF404040);
             } else {

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

@@ -107,7 +107,7 @@ public class VillagerRecipeViewingScreen extends Screen {
             int yy = bounds.y + bounds.height + 5;
             widgets.add(new CategoryBaseWidget(new Rectangle(xx - 6, bounds.y + bounds.height - 5, 11 + w * 18, 15 + h * 18)));
             int index = 0;
-            List list = Collections.singletonList(ChatFormat.YELLOW.toString() + I18n.translate("text.rei.working_station"));
+            List<String> list = Collections.singletonList(ChatFormat.YELLOW.toString() + I18n.translate("text.rei.working_station"));
             for(List<ItemStack> workingStation : workingStations) {
                 widgets.add(new SlotWidget(xx, yy, workingStation, true, true, true) {
                     @Override
@@ -225,7 +225,7 @@ public class VillagerRecipeViewingScreen extends Screen {
             
             @Override
             public int getDefaultColor() {
-                return RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme ? 0xFFBBBBBB : 4210752;
+                return ScreenHelper.isDarkModeEnabled() ? 0xFFBBBBBB : 4210752;
             }
         });
         
@@ -355,7 +355,7 @@ public class VillagerRecipeViewingScreen extends Screen {
             GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
             GlStateManager.shadeModel(7425);
             buffer.begin(7, VertexFormats.POSITION_COLOR);
-            float b = RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme ? 0.37f : 1f;
+            float b = ScreenHelper.isDarkModeEnabled() ? 0.37f : 1f;
             buffer.vertex(scrollbarPositionMinX, minY + scrollBarHeight, 1000D).color(b, b, b, scrollBarAlpha).next();
             buffer.vertex(scrollbarPositionMaxX, minY + scrollBarHeight, 1000D).color(b, b, b, scrollBarAlpha).next();
             buffer.vertex(scrollbarPositionMaxX, minY, 1000D).color(b, b, b, scrollBarAlpha).next();

+ 1 - 2
src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java

@@ -6,7 +6,6 @@
 package me.shedaniel.rei.gui.widget;
 
 import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.client.ScreenHelper;
 import net.minecraft.client.gui.Element;
 import net.minecraft.client.sound.PositionedSoundInstance;
@@ -65,7 +64,7 @@ public abstract class ButtonWidget extends HighlightableWidget {
     @Override
     public void render(int mouseX, int mouseY, float delta) {
         int x = bounds.x, y = bounds.y, width = bounds.width, height = bounds.height;
-        minecraft.getTextureManager().bindTexture(RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme ? BUTTON_LOCATION_DARK : BUTTON_LOCATION);
+        minecraft.getTextureManager().bindTexture(ScreenHelper.isDarkModeEnabled() ? BUTTON_LOCATION_DARK : BUTTON_LOCATION);
         GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
         int textureOffset = this.getTextureId(isHovered(mouseX, mouseY));
         GlStateManager.enableBlend();

+ 2 - 3
src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java

@@ -5,7 +5,6 @@
 
 package me.shedaniel.rei.gui.widget;
 
-import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.client.ScreenHelper;
 import net.minecraft.ChatFormat;
 
@@ -40,11 +39,11 @@ public abstract class ClickableLabelWidget extends LabelWidget {
     }
     
     public int getDefaultColor() {
-        return RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme ? 0xFFBBBBBB : -1;
+        return ScreenHelper.isDarkModeEnabled() ? 0xFFBBBBBB : -1;
     }
     
     public int getHoveredColor() {
-        return RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme ? -1 : 0xFF66FFCC;
+        return ScreenHelper.isDarkModeEnabled() ? -1 : 0xFF66FFCC;
     }
     
     @Override

+ 3 - 2
src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java

@@ -8,6 +8,7 @@ package me.shedaniel.rei.gui.widget;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.client.RecipeScreenType;
+import me.shedaniel.rei.client.ScreenHelper;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.util.Identifier;
 
@@ -56,7 +57,7 @@ public class RecipeBaseWidget extends HighlightableWidget {
             return;
         GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
         GuiLighting.disable();
-        minecraft.getTextureManager().bindTexture(RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme ? CHEST_GUI_TEXTURE_DARK : CHEST_GUI_TEXTURE);
+        minecraft.getTextureManager().bindTexture(ScreenHelper.isDarkModeEnabled() ? CHEST_GUI_TEXTURE_DARK : CHEST_GUI_TEXTURE);
         int x = bounds.x, y = bounds.y, width = bounds.width, height = bounds.height;
         int textureOffset = getTextureOffset();
         
@@ -85,7 +86,7 @@ public class RecipeBaseWidget extends HighlightableWidget {
     }
     
     protected int getInnerColor() {
-        return RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme ? 0xFF2E2E2E : -3750202;
+        return ScreenHelper.isDarkModeEnabled() ? 0xFF2E2E2E : -3750202;
     }
     
     protected int getTextureOffset() {

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

@@ -5,7 +5,7 @@
 
 package me.shedaniel.rei.gui.widget;
 
-import me.shedaniel.rei.RoughlyEnoughItemsCore;
+import me.shedaniel.rei.client.ScreenHelper;
 
 import java.awt.*;
 
@@ -17,7 +17,7 @@ public class SlotBaseWidget extends RecipeBaseWidget {
     
     @Override
     public int getInnerColor() {
-        return RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme ? 0xFF303030 : -7631989;
+        return ScreenHelper.isDarkModeEnabled() ? 0xFF303030 : -7631989;
     }
     
     @Override

+ 1 - 2
src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java

@@ -8,7 +8,6 @@ package me.shedaniel.rei.gui.widget;
 import com.google.common.collect.Lists;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.cloth.api.ClientUtils;
-import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.api.ClientHelper;
 import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderer;
@@ -114,7 +113,7 @@ public class SlotWidget extends HighlightableWidget {
     @Override
     public void render(int mouseX, int mouseY, float delta) {
         Renderer renderer = getCurrentRenderer();
-        boolean darkTheme = RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme;
+        boolean darkTheme = ScreenHelper.isDarkModeEnabled();
         if (drawBackground) {
             minecraft.getTextureManager().bindTexture(darkTheme ? RECIPE_GUI_DARK : RECIPE_GUI);
             blit(this.x - 1, this.y - 1, 0, 222, 18, 18);

+ 1 - 2
src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java

@@ -6,7 +6,6 @@
 package me.shedaniel.rei.gui.widget;
 
 import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.api.ClientHelper;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.Renderer;
@@ -75,7 +74,7 @@ public class TabWidget extends HighlightableWidget {
         if (shown) {
             GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
             GuiLighting.disable();
-            minecraft.getTextureManager().bindTexture(RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme ? CHEST_GUI_TEXTURE_DARK : CHEST_GUI_TEXTURE);
+            minecraft.getTextureManager().bindTexture(ScreenHelper.isDarkModeEnabled() ? CHEST_GUI_TEXTURE_DARK : CHEST_GUI_TEXTURE);
             this.blit(bounds.x, bounds.y + 2, selected ? 28 : 0, 192, 28, (selected ? 30 : 27));
             renderer.setBlitOffset(100);
             renderer.render((int) bounds.getCenterX(), (int) bounds.getCenterY(), mouseX, mouseY, delta);

+ 0 - 1
src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java

@@ -6,7 +6,6 @@
 package me.shedaniel.rei.plugin;
 
 import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderer;

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

@@ -47,7 +47,7 @@ public class DefaultPlugin implements REIPluginEntry {
     private static final List<DefaultBrewingDisplay> BREWING_DISPLAYS = Lists.newArrayList();
     
     public static Identifier getDisplayTexture() {
-        return RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme ? DISPLAY_TEXTURE_DARK : DISPLAY_TEXTURE;
+        return ScreenHelper.isDarkModeEnabled() ? DISPLAY_TEXTURE_DARK : DISPLAY_TEXTURE;
     }
     
     public static void registerBrewingDisplay(DefaultBrewingDisplay display) {

+ 0 - 1
src/main/java/me/shedaniel/rei/plugin/DefaultShapelessDisplay.java

@@ -5,7 +5,6 @@
 
 package me.shedaniel.rei.plugin;
 
-import com.google.common.collect.Lists;
 import net.minecraft.item.ItemStack;
 import net.minecraft.recipe.ShapelessRecipe;
 

+ 2 - 1
src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java

@@ -14,6 +14,7 @@ import me.shedaniel.cloth.hooks.ScreenHooks;
 import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.api.ItemCheatingMode;
 import me.shedaniel.rei.client.RecipeScreenType;
+import me.shedaniel.rei.client.ScreenHelper;
 import me.shedaniel.rei.gui.config.ItemListOrderingConfig;
 import me.shedaniel.rei.gui.credits.CreditsScreen;
 import net.minecraft.client.MinecraftClient;
@@ -52,7 +53,7 @@ public class ClothScreenRegistry {
             }
         });
         ConfigScreenBuilder.CategoryBuilder appearance = builder.addCategory("text.rei.config.appearance");
-        appearance.addOption(new BooleanListEntry("text.rei.config.dark_theme", RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme, RESET, () -> false, bool -> RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme = bool, () -> getConfigTooltip("dark_theme")));
+        appearance.addOption(new BooleanListEntry("text.rei.config.dark_theme", ScreenHelper.isDarkModeEnabled(), RESET, () -> false, bool -> RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme = bool, () -> getConfigTooltip("dark_theme")));
         appearance.addOption(new EnumListEntry<>("text.rei.config.recipe_screen_type", RecipeScreenType.class, RoughlyEnoughItemsCore.getConfigManager().getConfig().screenType, RESET, () -> RecipeScreenType.UNSET, bool -> RoughlyEnoughItemsCore.getConfigManager().getConfig().screenType = bool, EnumListEntry.DEFAULT_NAME_PROVIDER, () -> getConfigTooltip("recipe_screen_type")));
         appearance.addOption(new BooleanListEntry("text.rei.config.side_search_box", RoughlyEnoughItemsCore.getConfigManager().getConfig().sideSearchField, RESET, () -> false, bool -> RoughlyEnoughItemsCore.getConfigManager().getConfig().sideSearchField = bool, () -> getConfigTooltip("side_search_box")));
         appearance.addOption(new EnumListEntry<>("text.rei.config.list_ordering", ItemListOrderingConfig.class, ItemListOrderingConfig.from(RoughlyEnoughItemsCore.getConfigManager().getConfig().itemListOrdering, RoughlyEnoughItemsCore.getConfigManager().getConfig().isAscending), RESET, () -> ItemListOrderingConfig.REGISTRY_ASCENDING, config -> {