aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/plugin
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-07-14 11:19:19 +0800
committershedaniel <daniel@shedaniel.me>2020-07-14 11:19:29 +0800
commite2c264a82dc10b8e29b08225cd5bc24e689fa332 (patch)
tree4adf065ef2183d7cb22b684806543121f9fb4359 /src/main/java/me/shedaniel/rei/plugin
parent1a6a10596fd0d9cc7e35419ced6fe056d93d7604 (diff)
downloadRoughlyEnoughItems-e2c264a82dc10b8e29b08225cd5bc24e689fa332.tar.gz
RoughlyEnoughItems-e2c264a82dc10b8e29b08225cd5bc24e689fa332.tar.bz2
RoughlyEnoughItems-e2c264a82dc10b8e29b08225cd5bc24e689fa332.zip
Optimised craftable filter and changed some api
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/me/shedaniel/rei/plugin')
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java3
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java31
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java3
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java3
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java3
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultRecipeBookHandler.java3
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/beacon/DefaultBeaconBaseDisplay.java6
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingDisplay.java3
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java8
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireDisplay.java5
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java10
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/cooking/DefaultCookingDisplay.java6
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java3
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCustomDisplay.java5
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java5
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java8
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/fuel/DefaultFuelDisplay.java3
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/information/DefaultInformationDisplay.java3
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingDisplay.java3
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/smithing/DefaultSmithingDisplay.java13
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/stonecutting/DefaultStoneCuttingDisplay.java7
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/stripping/DefaultStrippingDisplay.java3
22 files changed, 97 insertions, 40 deletions
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java
index 6c33d3559..d7cc11ddf 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java
@@ -28,8 +28,11 @@ import me.shedaniel.rei.api.RecipeHelper;
import me.shedaniel.rei.api.plugins.REIPluginV0;
import me.shedaniel.rei.plugin.autocrafting.DefaultCategoryHandler;
import me.shedaniel.rei.plugin.autocrafting.DefaultRecipeBookHandler;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.util.Identifier;
+@Environment(EnvType.CLIENT)
public class DefaultAutoCraftingPlugin implements REIPluginV0 {
public static final Identifier PLUGIN = new Identifier("roughlyenoughitems", "default_auto_crafting_plugin");
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
index d852de324..f54bf8ba9 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
@@ -230,21 +230,19 @@ public class DefaultPlugin implements REIPluginV0 {
recipeHelper.registerDisplay(new DefaultFuelDisplay(EntryStack.create(entry.getKey()), entry.getValue()));
}
List<EntryStack> arrowStack = Collections.singletonList(EntryStack.create(Items.ARROW));
- for (EntryStack entry : EntryRegistry.getInstance().getStacksList()) {
- if (entry.getItem() == Items.LINGERING_POTION) {
- List<List<EntryStack>> input = new ArrayList<>();
- for (int i = 0; i < 4; i++)
- input.add(arrowStack);
- input.add(Collections.singletonList(EntryStack.create(entry.getItemStack())));
- for (int i = 0; i < 4; i++)
- input.add(arrowStack);
- ItemStack outputStack = new ItemStack(Items.TIPPED_ARROW, 8);
- PotionUtil.setPotion(outputStack, PotionUtil.getPotion(entry.getItemStack()));
- PotionUtil.setCustomPotionEffects(outputStack, PotionUtil.getCustomPotionEffects(entry.getItemStack()));
- List<EntryStack> output = Collections.singletonList(EntryStack.create(outputStack).addSetting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE));
- recipeHelper.registerDisplay(new DefaultCustomDisplay(null, input, output));
- }
- }
+ EntryRegistry.getInstance().getEntryStacks().filter(entry -> entry.getItem() == Items.LINGERING_POTION).forEach(entry -> {
+ List<List<EntryStack>> input = new ArrayList<>();
+ for (int i = 0; i < 4; i++)
+ input.add(arrowStack);
+ input.add(Collections.singletonList(EntryStack.create(entry.getItemStack())));
+ for (int i = 0; i < 4; i++)
+ input.add(arrowStack);
+ ItemStack outputStack = new ItemStack(Items.TIPPED_ARROW, 8);
+ PotionUtil.setPotion(outputStack, PotionUtil.getPotion(entry.getItemStack()));
+ PotionUtil.setCustomPotionEffects(outputStack, PotionUtil.getCustomPotionEffects(entry.getItemStack()));
+ List<EntryStack> output = Collections.singletonList(EntryStack.create(outputStack).addSetting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE));
+ recipeHelper.registerDisplay(new DefaultCustomDisplay(null, input, output));
+ });
Map<ItemConvertible, Float> map = Maps.newLinkedHashMap();
if (ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.isEmpty())
ComposterBlock.registerDefaultCompostableItems();
@@ -274,8 +272,7 @@ public class DefaultPlugin implements REIPluginV0 {
// TODO Turn this into an API
// Sit tight! This will be a fast journey!
long time = System.currentTimeMillis();
- for (EntryStack stack : EntryRegistry.getInstance().getStacksList())
- applyPotionTransformer(stack);
+ EntryRegistry.getInstance().getEntryStacks().forEach(this::applyPotionTransformer);
for (List<RecipeDisplay> displays : RecipeHelper.getInstance().getAllRecipesNoHandlers().values()) {
for (RecipeDisplay display : displays) {
for (List<EntryStack> entries : display.getInputEntries())
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java
index 0dbd2df61..79116da14 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java
@@ -26,6 +26,8 @@ package me.shedaniel.rei.plugin;
import com.google.common.collect.Ordering;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.REIHelper;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.ingame.AbstractInventoryScreen;
import net.minecraft.client.gui.screen.ingame.ContainerScreen;
@@ -37,6 +39,7 @@ import java.util.Collections;
import java.util.List;
import java.util.function.Supplier;
+@Environment(EnvType.CLIENT)
public class DefaultPotionEffectExclusionZones implements Supplier<List<Rectangle>> {
@Override
public List<Rectangle> get() {
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java b/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java
index ff5a14025..87602364f 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java
@@ -26,6 +26,8 @@ package me.shedaniel.rei.plugin;
import com.google.common.collect.Lists;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.REIHelper;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.ingame.ContainerScreen;
import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider;
@@ -36,6 +38,7 @@ import java.util.Collections;
import java.util.List;
import java.util.function.Supplier;
+@Environment(EnvType.CLIENT)
public class DefaultRecipeBookExclusionZones implements Supplier<List<Rectangle>> {
@Override
diff --git a/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java b/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java
index 2dc9a4a32..a4b2f297d 100644
--- a/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java
+++ b/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java
@@ -32,6 +32,8 @@ import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.TransferRecipeDisplay;
import me.shedaniel.rei.server.ContainerInfo;
import me.shedaniel.rei.server.ContainerInfoHandler;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.network.ClientSidePacketRegistry;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
@@ -45,6 +47,7 @@ import net.minecraft.util.collection.DefaultedList;
import java.util.List;
+@Environment(EnvType.CLIENT)
public class DefaultCategoryHandler implements AutoTransferHandler {
public static boolean canUseMovePackets() {
diff --git a/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultRecipeBookHandler.java b/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultRecipeBookHandler.java
index b9f96a27d..5f300e731 100644
--- a/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultRecipeBookHandler.java
+++ b/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultRecipeBookHandler.java
@@ -29,6 +29,8 @@ import me.shedaniel.rei.api.TransferRecipeDisplay;
import me.shedaniel.rei.impl.ScreenHelper;
import me.shedaniel.rei.plugin.cooking.DefaultCookingDisplay;
import me.shedaniel.rei.plugin.crafting.DefaultCraftingDisplay;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider;
import net.minecraft.client.resource.language.I18n;
@@ -37,6 +39,7 @@ import net.minecraft.container.CraftingTableContainer;
import net.minecraft.container.PlayerContainer;
import net.minecraft.recipe.Recipe;
+@Environment(EnvType.CLIENT)
public class DefaultRecipeBookHandler implements AutoTransferHandler {
@Override
public Result handle(Context context) {
diff --git a/src/main/java/me/shedaniel/rei/plugin/beacon/DefaultBeaconBaseDisplay.java b/src/main/java/me/shedaniel/rei/plugin/beacon/DefaultBeaconBaseDisplay.java
index 46941d320..6749a9f4a 100644
--- a/src/main/java/me/shedaniel/rei/plugin/beacon/DefaultBeaconBaseDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/beacon/DefaultBeaconBaseDisplay.java
@@ -26,19 +26,21 @@ package me.shedaniel.rei.plugin.beacon;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeDisplay;
import me.shedaniel.rei.plugin.DefaultPlugin;
-import me.shedaniel.rei.utils.CollectionUtils;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier;
import java.util.Collections;
import java.util.List;
+@Environment(EnvType.CLIENT)
public class DefaultBeaconBaseDisplay implements RecipeDisplay {
private List<EntryStack> entries;
public DefaultBeaconBaseDisplay(List<ItemStack> entries) {
- this.entries = CollectionUtils.map(entries, EntryStack::create);
+ this.entries = EntryStack.ofItemStacks(entries);
}
@Override
diff --git a/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingDisplay.java
index 6286697f1..e34d580a7 100644
--- a/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingDisplay.java
@@ -25,9 +25,12 @@ package me.shedaniel.rei.plugin.blasting;
import me.shedaniel.rei.plugin.DefaultPlugin;
import me.shedaniel.rei.plugin.cooking.DefaultCookingDisplay;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.recipe.BlastingRecipe;
import net.minecraft.util.Identifier;
+@Environment(EnvType.CLIENT)
public class DefaultBlastingDisplay extends DefaultCookingDisplay {
public DefaultBlastingDisplay(BlastingRecipe recipe) {
diff --git a/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java
index 5ab1f94cb..2c81519e1 100644
--- a/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java
@@ -27,6 +27,8 @@ import com.google.common.collect.Lists;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeDisplay;
import me.shedaniel.rei.plugin.DefaultPlugin;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.item.ItemStack;
import net.minecraft.recipe.Ingredient;
import net.minecraft.text.TranslatableText;
@@ -37,6 +39,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+@Environment(EnvType.CLIENT)
public class DefaultBrewingDisplay implements RecipeDisplay {
private EntryStack input, output;
@@ -44,8 +47,9 @@ public class DefaultBrewingDisplay implements RecipeDisplay {
public DefaultBrewingDisplay(ItemStack input, Ingredient reactant, ItemStack output) {
this.input = EntryStack.create(input).setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, stack -> Collections.singletonList(new TranslatableText("category.rei.brewing.input").formatted(Formatting.YELLOW)));
- this.reactant = new ArrayList<>();
- for (ItemStack stack : reactant.getMatchingStacksClient()) {
+ ItemStack[] reactantStacks = reactant.getMatchingStacksClient();
+ this.reactant = new ArrayList<>(reactantStacks.length);
+ for (ItemStack stack : reactantStacks) {
EntryStack entryStack = EntryStack.create(stack);
entryStack.setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, s -> Collections.singletonList(new TranslatableText("category.rei.brewing.reactant").formatted(Formatting.YELLOW)));
this.reactant.add(entryStack);
diff --git a/src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireDisplay.java b/src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireDisplay.java
index 9ae044f21..706a9d22b 100644
--- a/src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireDisplay.java
@@ -26,6 +26,8 @@ package me.shedaniel.rei.plugin.campfire;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeDisplay;
import me.shedaniel.rei.plugin.DefaultPlugin;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.item.ItemStack;
import net.minecraft.recipe.AbstractCookingRecipe;
import net.minecraft.recipe.CampfireCookingRecipe;
@@ -39,6 +41,7 @@ import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
+@Environment(EnvType.CLIENT)
public class DefaultCampfireDisplay implements RecipeDisplay {
private List<List<EntryStack>> inputs;
@@ -52,7 +55,7 @@ public class DefaultCampfireDisplay implements RecipeDisplay {
}
public DefaultCampfireDisplay(DefaultedList<Ingredient> ingredients, ItemStack output, int cookTime) {
- this.inputs = EntryStack.create(ingredients);
+ this.inputs = EntryStack.ofIngredients(ingredients);
this.output = Collections.singletonList(EntryStack.create(output));
this.cookTime = cookTime;
}
diff --git a/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java
index a3e9a98f8..c2bc3b22a 100644
--- a/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java
@@ -26,13 +26,15 @@ package me.shedaniel.rei.plugin.composting;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeDisplay;
import me.shedaniel.rei.plugin.DefaultPlugin;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.item.ItemConvertible;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier;
import java.util.*;
-import java.util.stream.Collectors;
+@Environment(EnvType.CLIENT)
public class DefaultCompostingDisplay implements RecipeDisplay {
private List<EntryStack> order, allItems;
@@ -42,10 +44,10 @@ public class DefaultCompostingDisplay implements RecipeDisplay {
public DefaultCompostingDisplay(int page, List<ItemConvertible> order, Map<ItemConvertible, Float> inputMap, List<ItemConvertible> allItems, ItemStack[] output) {
this.page = page;
- this.order = order.stream().map(EntryStack::create).collect(Collectors.toList());
+ this.order = EntryStack.ofItems(order);
this.inputMap = inputMap;
- this.output = Arrays.stream(output).map(EntryStack::create).collect(Collectors.toList());
- this.allItems = allItems.stream().map(EntryStack::create).collect(Collectors.toList());
+ this.output = EntryStack.ofItemStacks(Arrays.asList(output));
+ this.allItems = EntryStack.ofItems(allItems);
}
public int getPage() {
diff --git a/src/main/java/me/shedaniel/rei/plugin/cooking/DefaultCookingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/cooking/DefaultCookingDisplay.java
index 5a501d9c9..b0bbeb783 100644
--- a/src/main/java/me/shedaniel/rei/plugin/cooking/DefaultCookingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/cooking/DefaultCookingDisplay.java
@@ -26,7 +26,8 @@ package me.shedaniel.rei.plugin.cooking;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.TransferRecipeDisplay;
import me.shedaniel.rei.server.ContainerInfo;
-import me.shedaniel.rei.utils.CollectionUtils;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.block.entity.FurnaceBlockEntity;
import net.minecraft.container.Container;
import net.minecraft.item.Item;
@@ -41,6 +42,7 @@ import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
+@Environment(EnvType.CLIENT)
public abstract class DefaultCookingDisplay implements TransferRecipeDisplay {
private static List<EntryStack> fuel;
@@ -56,7 +58,7 @@ public abstract class DefaultCookingDisplay implements TransferRecipeDisplay {
public DefaultCookingDisplay(AbstractCookingRecipe recipe) {
this.recipe = recipe;
- this.input = EntryStack.create(recipe.getPreviewInputs());
+ this.input = EntryStack.ofIngredients(recipe.getPreviewInputs());
this.output = Collections.singletonList(EntryStack.create(recipe.getOutput()));
this.xp = recipe.getExperience();
this.cookTime = recipe.getCookTime();
diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java
index 44654b894..8bea073fa 100644
--- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java
@@ -28,6 +28,8 @@ import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.TransferRecipeDisplay;
import me.shedaniel.rei.plugin.DefaultPlugin;
import me.shedaniel.rei.server.ContainerInfo;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.container.Container;
import net.minecraft.recipe.Recipe;
import net.minecraft.util.Identifier;
@@ -36,6 +38,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Optional;
+@Environment(EnvType.CLIENT)
public interface DefaultCraftingDisplay extends TransferRecipeDisplay {
@Override
diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCustomDisplay.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCustomDisplay.java
index 5c3b93e0a..e9ede3e99 100644
--- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCustomDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCustomDisplay.java
@@ -26,6 +26,8 @@ package me.shedaniel.rei.plugin.crafting;
import com.google.common.collect.Lists;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.utils.CollectionUtils;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.item.ItemStack;
import net.minecraft.recipe.Recipe;
import net.minecraft.util.Identifier;
@@ -33,6 +35,7 @@ import net.minecraft.util.Identifier;
import java.util.List;
import java.util.Optional;
+@Environment(EnvType.CLIENT)
public class DefaultCustomDisplay implements DefaultCraftingDisplay {
private List<List<EntryStack>> input;
@@ -41,7 +44,7 @@ public class DefaultCustomDisplay implements DefaultCraftingDisplay {
private int width, height;
public DefaultCustomDisplay(List<List<ItemStack>> input, List<ItemStack> output, Recipe<?> possibleRecipe) {
- this(possibleRecipe, CollectionUtils.map(input, i -> CollectionUtils.map(i, EntryStack::create)), CollectionUtils.map(output, EntryStack::create));
+ this(possibleRecipe, CollectionUtils.map(input, EntryStack::ofItemStacks), EntryStack.ofItemStacks(output));
}
public DefaultCustomDisplay(Recipe<?> possibleRecipe, List<List<EntryStack>> input, List<EntryStack> output) {
diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java
index 2510336ba..c00aa90c9 100644
--- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java
@@ -24,6 +24,8 @@
package me.shedaniel.rei.plugin.crafting;
import me.shedaniel.rei.api.EntryStack;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.item.ItemStack;
import net.minecraft.recipe.Recipe;
import net.minecraft.recipe.ShapedRecipe;
@@ -35,6 +37,7 @@ import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
+@Environment(EnvType.CLIENT)
public class DefaultShapedDisplay implements DefaultCraftingDisplay {
private ShapedRecipe display;
@@ -43,7 +46,7 @@ public class DefaultShapedDisplay implements DefaultCraftingDisplay {
public DefaultShapedDisplay(ShapedRecipe recipe) {
this.display = recipe;
- this.input = EntryStack.create(recipe.getPreviewInputs());
+ this.input = EntryStack.ofIngredients(recipe.getPreviewInputs());
this.output = Collections.singletonList(EntryStack.create(recipe.getOutput()));
}
diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java
index eb3c99d85..2277269b3 100644
--- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java
@@ -24,17 +24,17 @@
package me.shedaniel.rei.plugin.crafting;
import me.shedaniel.rei.api.EntryStack;
-import net.minecraft.item.ItemStack;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.recipe.Recipe;
import net.minecraft.recipe.ShapelessRecipe;
import net.minecraft.util.Identifier;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
-import java.util.stream.Collectors;
+@Environment(EnvType.CLIENT)
public class DefaultShapelessDisplay implements DefaultCraftingDisplay {
private ShapelessRecipe display;
@@ -43,7 +43,7 @@ public class DefaultShapelessDisplay implements DefaultCraftingDisplay {
public DefaultShapelessDisplay(ShapelessRecipe recipe) {
this.display = recipe;
- this.input = EntryStack.create(recipe.getPreviewInputs());
+ this.input = EntryStack.ofIngredients(recipe.getPreviewInputs());
this.output = Collections.singletonList(EntryStack.create(recipe.getOutput()));
}
diff --git a/src/main/java/me/shedaniel/rei/plugin/fuel/DefaultFuelDisplay.java b/src/main/java/me/shedaniel/rei/plugin/fuel/DefaultFuelDisplay.java
index 9c78462d2..a5173913d 100644
--- a/src/main/java/me/shedaniel/rei/plugin/fuel/DefaultFuelDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/fuel/DefaultFuelDisplay.java
@@ -26,11 +26,14 @@ package me.shedaniel.rei.plugin.fuel;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeDisplay;
import me.shedaniel.rei.plugin.DefaultPlugin;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.util.Identifier;
import java.util.Collections;
import java.util.List;
+@Environment(EnvType.CLIENT)
public class DefaultFuelDisplay implements RecipeDisplay {
private EntryStack fuel;
private int fuelTime;
diff --git a/src/main/java/me/shedaniel/rei/plugin/information/DefaultInformationDisplay.java b/src/main/java/me/shedaniel/rei/plugin/information/DefaultInformationDisplay.java
index 580af3eff..f7acd2718 100644
--- a/src/main/java/me/shedaniel/rei/plugin/information/DefaultInformationDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/information/DefaultInformationDisplay.java
@@ -27,6 +27,8 @@ import com.google.common.collect.Lists;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeDisplay;
import me.shedaniel.rei.plugin.DefaultPlugin;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
@@ -35,6 +37,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
+@Environment(EnvType.CLIENT)
public class DefaultInformationDisplay implements RecipeDisplay {
private List<EntryStack> entryStacks;
private List<Text> texts;
diff --git a/src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingDisplay.java
index ae177d2c5..e742430d6 100644
--- a/src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingDisplay.java
@@ -25,9 +25,12 @@ package me.shedaniel.rei.plugin.smelting;
import me.shedaniel.rei.plugin.DefaultPlugin;
import me.shedaniel.rei.plugin.cooking.DefaultCookingDisplay;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.recipe.SmeltingRecipe;
import net.minecraft.util.Identifier;
+@Environment(EnvType.CLIENT)
public class DefaultSmeltingDisplay extends DefaultCookingDisplay {
public DefaultSmeltingDisplay(SmeltingRecipe recipe) {
diff --git a/src/main/java/me/shedaniel/rei/plugin/smithing/DefaultSmithingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/smithing/DefaultSmithingDisplay.java
index 05b5bbc87..97ea39ed7 100644
--- a/src/main/java/me/shedaniel/rei/plugin/smithing/DefaultSmithingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/smithing/DefaultSmithingDisplay.java
@@ -27,7 +27,8 @@ import com.google.common.collect.Lists;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeDisplay;
import me.shedaniel.rei.plugin.DefaultPlugin;
-import me.shedaniel.rei.utils.CollectionUtils;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.recipe.SmithingRecipe;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.NotNull;
@@ -37,6 +38,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Optional;
+@Environment(EnvType.CLIENT)
public class DefaultSmithingDisplay implements RecipeDisplay {
@NotNull
private List<List<EntryStack>> input;
@@ -48,8 +50,8 @@ public class DefaultSmithingDisplay implements RecipeDisplay {
public DefaultSmithingDisplay(@NotNull SmithingRecipe r