shedaniel 5 jaren geleden
bovenliggende
commit
f02ac6a761

+ 1 - 1
gradle.properties

@@ -1,4 +1,4 @@
-mod_version=3.3.3
+mod_version=3.3.4
 minecraft_version=1.15.1
 yarn_version=1.15.1+build.1
 fabricloader_version=0.7.2+build.174

+ 4 - 7
src/main/java/me/shedaniel/rei/gui/entries/SimpleRecipeEntry.java

@@ -19,7 +19,6 @@ import net.minecraft.util.math.MathHelper;
 import javax.annotation.Nullable;
 import java.util.Comparator;
 import java.util.List;
-import java.util.Optional;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
@@ -35,9 +34,9 @@ public class SimpleRecipeEntry extends RecipeEntry {
         List<Pair<List<EntryStack>, AtomicInteger>> newList = Lists.newArrayList();
         List<Pair<List<EntryStack>, Integer>> a = CollectionUtils.map(input, stacks -> new Pair<>(stacks, stacks.stream().map(EntryStack::getAmount).max(Integer::compareTo).orElse(1)));
         for (Pair<List<EntryStack>, Integer> pair : a) {
-            Optional<Pair<List<EntryStack>, AtomicInteger>> any = newList.stream().filter(pairr -> equalsList(pair.getLeft(), pairr.getLeft())).findAny();
-            if (any.isPresent()) {
-                any.get().getRight().addAndGet(pair.getRight());
+            Pair<List<EntryStack>, AtomicInteger> any = CollectionUtils.findFirstOrNull(newList, pairr -> equalsList(pair.getLeft(), pairr.getLeft()));
+            if (any != null) {
+                any.getRight().addAndGet(pair.getRight());
             } else
                 newList.add(new Pair<>(pair.getLeft(), new AtomicInteger(pair.getRight())));
         }
@@ -48,9 +47,7 @@ public class SimpleRecipeEntry extends RecipeEntry {
                 s.setAmount(pair.getRight().get());
                 return s;
             }).collect(Collectors.toList()));
-        this.inputWidgets = b.stream().filter(stacks -> !stacks.isEmpty()).map(stacks -> {
-            return EntryWidget.create(0, 0).entries(stacks).noBackground().noHighlight().noTooltips();
-        }).collect(Collectors.toList());
+        this.inputWidgets = b.stream().filter(stacks -> !stacks.isEmpty()).map(stacks -> EntryWidget.create(0, 0).entries(stacks).noBackground().noHighlight().noTooltips()).collect(Collectors.toList());
         this.outputWidget = EntryWidget.create(0, 0).entries(CollectionUtils.filter(output, stack -> !stack.isEmpty())).noBackground().noHighlight().noTooltips();
     }
     

+ 5 - 6
src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java

@@ -18,6 +18,7 @@ import me.shedaniel.rei.gui.PreRecipeViewingScreen;
 import me.shedaniel.rei.gui.RecipeViewingScreen;
 import me.shedaniel.rei.gui.VillagerRecipeViewingScreen;
 import me.shedaniel.rei.gui.config.RecipeScreenType;
+import me.shedaniel.rei.utils.CollectionUtils;
 import net.fabricmc.api.ClientModInitializer;
 import net.fabricmc.fabric.api.network.ClientSidePacketRegistry;
 import net.fabricmc.fabric.impl.client.keybinding.KeyBindingRegistryImpl;
@@ -171,10 +172,9 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer {
     @Override
     public boolean executeViewAllRecipesFromCategory(Identifier category) {
         Map<RecipeCategory<?>, List<RecipeDisplay>> map = Maps.newLinkedHashMap();
-        Optional<RecipeCategory<?>> any = RecipeHelper.getInstance().getAllCategories().stream().filter(c -> c.getIdentifier().equals(category)).findAny();
-        if (!any.isPresent())
+        RecipeCategory<?> recipeCategory = CollectionUtils.findFirstOrNull(RecipeHelper.getInstance().getAllCategories(), c -> c.getIdentifier().equals(category));
+        if (recipeCategory == null)
             return false;
-        RecipeCategory<?> recipeCategory = any.get();
         map.put(recipeCategory, RecipeHelper.getInstance().getAllRecipesFromCategory(recipeCategory));
         if (map.keySet().size() > 0)
             openRecipeViewingScreen(map);
@@ -185,10 +185,9 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer {
     public boolean executeViewAllRecipesFromCategories(List<Identifier> categories) {
         Map<RecipeCategory<?>, List<RecipeDisplay>> map = Maps.newLinkedHashMap();
         for (Identifier category : categories) {
-            Optional<RecipeCategory<?>> any = RecipeHelper.getInstance().getAllCategories().stream().filter(c -> c.getIdentifier().equals(category)).findAny();
-            if (!any.isPresent())
+            RecipeCategory<?> recipeCategory = CollectionUtils.findFirstOrNull(RecipeHelper.getInstance().getAllCategories(), c -> c.getIdentifier().equals(category));
+            if (recipeCategory == null)
                 continue;
-            RecipeCategory<?> recipeCategory = any.get();
             map.put(recipeCategory, RecipeHelper.getInstance().getAllRecipesFromCategory(recipeCategory));
         }
         if (map.keySet().size() > 0)

+ 21 - 38
src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java

@@ -33,12 +33,8 @@ import java.util.stream.Collectors;
 public class RecipeHelperImpl implements RecipeHelper {
     
     private static final Comparator<DisplayVisibilityHandler> VISIBILITY_HANDLER_COMPARATOR;
-    @SuppressWarnings("rawtypes") private static final Comparator<Recipe> RECIPE_COMPARATOR = (o1, o2) -> {
-        int int_1 = o1.getId().getNamespace().compareTo(o2.getId().getNamespace());
-        if (int_1 == 0)
-            int_1 = o1.getId().getPath().compareTo(o2.getId().getPath());
-        return int_1;
-    };
+    @SuppressWarnings("rawtypes")
+    private static final Comparator<Recipe> RECIPE_COMPARATOR = Comparator.comparing((Recipe o) -> o.getId().getNamespace()).thenComparing(o -> o.getId().getPath());
     
     static {
         Comparator<DisplayVisibilityHandler> comparator = Comparator.comparingDouble(DisplayVisibilityHandler::getPriority);
@@ -97,14 +93,15 @@ public class RecipeHelperImpl implements RecipeHelper {
         categoryWorkingStations.put(category.getIdentifier(), Lists.newLinkedList());
     }
     
+    @SafeVarargs
     @Override
-    public void registerWorkingStations(Identifier category, List<EntryStack>... workingStations) {
+    public final void registerWorkingStations(Identifier category, List<EntryStack>... workingStations) {
         categoryWorkingStations.get(category).addAll(Arrays.asList(workingStations));
     }
     
     @Override
     public void registerWorkingStations(Identifier category, EntryStack... workingStations) {
-        categoryWorkingStations.get(category).addAll(Arrays.asList(workingStations).stream().map(Collections::singletonList).collect(Collectors.toList()));
+        categoryWorkingStations.get(category).addAll(Arrays.stream(workingStations).map(Collections::singletonList).collect(Collectors.toList()));
     }
     
     @Override
@@ -144,7 +141,7 @@ public class RecipeHelperImpl implements RecipeHelper {
         Map<RecipeCategory<?>, List<RecipeDisplay>> recipeCategoryListMap = Maps.newLinkedHashMap();
         categories.forEach(category -> {
             if (categoriesMap.containsKey(category.getIdentifier()) && !categoriesMap.get(category.getIdentifier()).isEmpty())
-                recipeCategoryListMap.put(category, categoriesMap.get(category.getIdentifier()).stream().filter(display -> isDisplayVisible(display)).collect(Collectors.toList()));
+                recipeCategoryListMap.put(category, categoriesMap.get(category.getIdentifier()).stream().filter(this::isDisplayVisible).collect(Collectors.toList()));
         });
         for (RecipeCategory<?> category : Lists.newArrayList(recipeCategoryListMap.keySet()))
             if (recipeCategoryListMap.get(category).isEmpty())
@@ -178,33 +175,21 @@ public class RecipeHelperImpl implements RecipeHelper {
         categories.forEach(f -> categoriesMap.put(f.getIdentifier(), Sets.newLinkedHashSet()));
         for (Map.Entry<Identifier, List<RecipeDisplay>> entry : recipeCategoryListMap.entrySet()) {
             boolean isWorkstationCategory = isStackWorkStationOfCategory(entry.getKey(), stack);
-            if (isWorkstationCategory) {
-                for (RecipeDisplay recipeDisplay : entry.getValue()) {
-                    back:
-                    for (List<EntryStack> input : recipeDisplay.getInputEntries()) {
-                        for (EntryStack otherEntry : input) {
-                            if (otherEntry.equals(stack)) {
-                                categoriesMap.get(recipeDisplay.getRecipeCategory()).add(recipeDisplay);
-                                break back;
-                            }
+            for (RecipeDisplay recipeDisplay : entry.getValue()) {
+                back:
+                for (List<EntryStack> input : recipeDisplay.getInputEntries()) {
+                    for (EntryStack otherEntry : input) {
+                        if (otherEntry.equals(stack)) {
+                            categoriesMap.get(recipeDisplay.getRecipeCategory()).add(recipeDisplay);
+                            break back;
                         }
                     }
                 }
+            }
+            if (isWorkstationCategory) {
                 for (RecipeDisplay recipeDisplay : entry.getValue()) {
                     categoriesMap.get(recipeDisplay.getRecipeCategory()).add(recipeDisplay);
                 }
-            } else {
-                for (RecipeDisplay recipeDisplay : entry.getValue()) {
-                    back:
-                    for (List<EntryStack> input : recipeDisplay.getInputEntries()) {
-                        for (EntryStack otherEntry : input) {
-                            if (otherEntry.equals(stack)) {
-                                categoriesMap.get(recipeDisplay.getRecipeCategory()).add(recipeDisplay);
-                                break back;
-                            }
-                        }
-                    }
-                }
             }
         }
         for (LiveRecipeGenerator<RecipeDisplay> liveRecipeGenerator : liveRecipeGenerators) {
@@ -213,7 +198,7 @@ public class RecipeHelperImpl implements RecipeHelper {
         Map<RecipeCategory<?>, List<RecipeDisplay>> recipeCategoryListMap = Maps.newLinkedHashMap();
         for (RecipeCategory<?> category : categories) {
             if (categoriesMap.containsKey(category.getIdentifier()) && !categoriesMap.get(category.getIdentifier()).isEmpty())
-                recipeCategoryListMap.put(category, categoriesMap.get(category.getIdentifier()).stream().filter(display -> isDisplayVisible(display)).collect(Collectors.toList()));
+                recipeCategoryListMap.put(category, CollectionUtils.filterSetToList(categoriesMap.get(category.getIdentifier()), this::isDisplayVisible));
         }
         for (RecipeCategory<?> category : Lists.newArrayList(recipeCategoryListMap.keySet()))
             if (recipeCategoryListMap.get(category).isEmpty())
@@ -241,7 +226,6 @@ public class RecipeHelperImpl implements RecipeHelper {
             autoCraftAreaSupplierMap.put(category, rectangle);
     }
     
-    @SuppressWarnings("deprecation")
     public void recipesLoaded(RecipeManager recipeManager) {
         long startTime = System.currentTimeMillis();
         arePluginsLoading = true;
@@ -262,11 +246,12 @@ public class RecipeHelperImpl implements RecipeHelper {
         BaseBoundsHandler baseBoundsHandler = new BaseBoundsHandlerImpl();
         DisplayHelper.getInstance().registerBoundsHandler(baseBoundsHandler);
         ((DisplayHelperImpl) DisplayHelper.getInstance()).setBaseBoundsHandler(baseBoundsHandler);
-        List<REIPluginEntry> plugins = Lists.newLinkedList(RoughlyEnoughItemsCore.getPlugins());
+        List<REIPluginEntry> plugins = RoughlyEnoughItemsCore.getPlugins();
         plugins.sort(Comparator.comparingInt(REIPluginEntry::getPriority).reversed());
         RoughlyEnoughItemsCore.LOGGER.info("[REI] Loading %d plugins: %s", plugins.size(), plugins.stream().map(REIPluginEntry::getPluginIdentifier).map(Identifier::toString).collect(Collectors.joining(", ")));
         Collections.reverse(plugins);
         ((EntryRegistryImpl) EntryRegistry.getInstance()).reset();
+        @SuppressWarnings("OptionalGetWithoutIsPresent")
         Version reiVersion = FabricLoader.getInstance().getModContainer("roughlyenoughitems").get().getMetadata().getVersion();
         if (!(reiVersion instanceof SemanticVersion))
             RoughlyEnoughItemsCore.LOGGER.warn("[REI] Roughly Enough Items is not using semantic versioning, will be ignoring plugins' minimum versions!");
@@ -347,7 +332,7 @@ public class RecipeHelperImpl implements RecipeHelper {
         ScreenHelper.getOptionalOverlay().ifPresent(overlay -> overlay.shouldReInit = true);
         
         long usedTime = System.currentTimeMillis() - startTime;
-        RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered %d stack entries, %d recipes displays, %d exclusion zones suppliers, %d bounds handler, %d visibility handlers and %d categories (%s) in %d ms.", EntryRegistry.getInstance().getStacksList().size(), recipeCount[0], DisplayHelper.getInstance().getBaseBoundsHandler().supplierSize(), DisplayHelper.getInstance().getAllBoundsHandlers().size(), getDisplayVisibilityHandlers().size(), categories.size(), String.join(", ", categories.stream().map(RecipeCategory::getCategoryName).collect(Collectors.toList())), usedTime);
+        RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered %d stack entries, %d recipes displays, %d exclusion zones suppliers, %d bounds handler, %d visibility handlers and %d categories (%s) in %d ms.", EntryRegistry.getInstance().getStacksList().size(), recipeCount[0], DisplayHelper.getInstance().getBaseBoundsHandler().supplierSize(), DisplayHelper.getInstance().getAllBoundsHandlers().size(), getDisplayVisibilityHandlers().size(), categories.size(), categories.stream().map(RecipeCategory::getCategoryName).collect(Collectors.joining(", ")), usedTime);
     }
     
     @Override
@@ -405,13 +390,11 @@ public class RecipeHelperImpl implements RecipeHelper {
         return Collections.unmodifiableList(displayVisibilityHandlers);
     }
     
-    @SuppressWarnings("deprecation")
     @Override
     public boolean isDisplayVisible(RecipeDisplay display, boolean respectConfig) {
         return isDisplayVisible(display);
     }
     
-    @SuppressWarnings("deprecation")
     @Override
     public boolean isDisplayVisible(RecipeDisplay display) {
         RecipeCategory<?> category = getCategory(display.getRecipeCategory());
@@ -460,7 +443,7 @@ public class RecipeHelperImpl implements RecipeHelper {
         return screenClickAreas;
     }
     
-    private class ScreenClickAreaImpl implements ScreenClickArea {
+    private static class ScreenClickAreaImpl implements ScreenClickArea {
         Class<? extends AbstractContainerScreen<?>> screenClass;
         Rectangle rectangle;
         Identifier[] categories;
@@ -485,7 +468,7 @@ public class RecipeHelperImpl implements RecipeHelper {
     }
     
     @SuppressWarnings("rawtypes")
-    private class RecipeFunction {
+    private static class RecipeFunction {
         Identifier category;
         Predicate<Recipe> recipeFilter;
         Function mappingFunction;

+ 26 - 4
src/main/java/me/shedaniel/rei/utils/CollectionUtils.java

@@ -5,6 +5,8 @@
 
 package me.shedaniel.rei.utils;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
 import me.shedaniel.rei.api.EntryStack;
 import me.shedaniel.rei.api.annotations.Internal;
 
@@ -55,7 +57,27 @@ public class CollectionUtils {
     }
     
     public static <T> List<T> filter(List<T> list, Predicate<T> predicate) {
-        List<T> l = new LinkedList<>();
+        List<T> l = Lists.newArrayList();
+        for (T t : list) {
+            if (predicate.test(t)) {
+                l.add(t);
+            }
+        }
+        return l;
+    }
+    
+    public static <T> Set<T> filter(Set<T> list, Predicate<T> predicate) {
+        Set<T> l = Sets.newLinkedHashSet();
+        for (T t : list) {
+            if (predicate.test(t)) {
+                l.add(t);
+            }
+        }
+        return l;
+    }
+    
+    public static <T> List<T> filterSetToList(Set<T> list, Predicate<T> predicate) {
+        List<T> l = Lists.newArrayList();
         for (T t : list) {
             if (predicate.test(t)) {
                 l.add(t);
@@ -65,7 +87,7 @@ public class CollectionUtils {
     }
     
     public static <T, R> List<R> map(List<T> list, Function<T, R> function) {
-        List<R> l = new LinkedList<>();
+        List<R> l = Lists.newArrayList();
         for (T t : list) {
             l.add(function.apply(t));
         }
@@ -73,7 +95,7 @@ public class CollectionUtils {
     }
     
     public static <T, R> List<R> map(T[] list, Function<T, R> function) {
-        List<R> l = new LinkedList<>();
+        List<R> l = Lists.newArrayList();
         for (T t : list) {
             l.add(function.apply(t));
         }
@@ -149,7 +171,7 @@ public class CollectionUtils {
         for (T t : list) {
             if (predicate.test(t)) {
                 if (l == null)
-                    l = new LinkedList<>();
+                    l = Lists.newArrayList();
                 l.add(function.apply(t));
             }
         }