aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-01-06 15:01:10 +0800
committershedaniel <daniel@shedaniel.me>2020-01-06 15:01:10 +0800
commit0d8c3fa7d1422067ec3c4a1b2d624db9afb54ab4 (patch)
tree27ede6fd331aa9641b3a3d55dddaa084011c2ae2 /src
parent22494701d3080868d6dbf4d5ae9f4100a5332d9e (diff)
downloadRoughlyEnoughItems-0d8c3fa7d1422067ec3c4a1b2d624db9afb54ab4.tar.gz
RoughlyEnoughItems-0d8c3fa7d1422067ec3c4a1b2d624db9afb54ab4.tar.bz2
RoughlyEnoughItems-0d8c3fa7d1422067ec3c4a1b2d624db9afb54ab4.zip
3.3.4
Diffstat (limited to 'src')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/entries/SimpleRecipeEntry.java11
-rw-r--r--src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java11
-rw-r--r--src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java59
-rw-r--r--src/main/java/me/shedaniel/rei/utils/CollectionUtils.java30
4 files changed, 56 insertions, 55 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/entries/SimpleRecipeEntry.java b/src/main/java/me/shedaniel/rei/gui/entries/SimpleRecipeEntry.java
index 0906e5a2d..c9fe5c05d 100644
--- a/src/main/java/me/shedaniel/rei/gui/entries/SimpleRecipeEntry.java
+++ b/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();
}
diff --git a/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java
index bb71355b0..79a34a19f 100644
--- a/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java
+++ b/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)
diff --git a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java
index 1eeae4222..af2d66637 100644
--- a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java
+++ b/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;
diff --git a/src/main/java/me/shedaniel/rei/utils/CollectionUtils.java b/src/main/java/me/shedaniel/rei/utils/CollectionUtils.java
index b23b802c7..296c9c747 100644
--- a/src/main/java/me/shedaniel/rei/utils/CollectionUtils.java
+++ b/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));
}
}