From b11c3866aada638f0ad758ced4068c71e620ce23 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 27 Mar 2021 01:12:02 +0800 Subject: Make Recipe Transfer work Signed-off-by: shedaniel --- .../java/me/shedaniel/rei/api/client/search/SearchFilter.java | 5 +++++ .../java/me/shedaniel/rei/api/common/entry/EntryIngredient.java | 8 +++++++- .../main/java/me/shedaniel/rei/api/common/entry/EntryStack.java | 9 ++++----- .../me/shedaniel/rei/api/common/entry/type/EntryDefinition.java | 3 ++- .../java/me/shedaniel/rei/api/common/plugins/PluginManager.java | 2 +- .../java/me/shedaniel/rei/api/common/util/EntryIngredients.java | 2 +- 6 files changed, 20 insertions(+), 9 deletions(-) (limited to 'api/src/main') diff --git a/api/src/main/java/me/shedaniel/rei/api/client/search/SearchFilter.java b/api/src/main/java/me/shedaniel/rei/api/client/search/SearchFilter.java index 735e5fddf..ce77fe569 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/search/SearchFilter.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/search/SearchFilter.java @@ -27,6 +27,11 @@ import me.shedaniel.rei.api.common.entry.EntryStack; import java.util.function.Predicate; +/** + * A search filter that respects different prefixes, matches a {@link EntryStack}. + * + * @see SearchProvider + */ public interface SearchFilter extends Predicate> { static SearchFilter matchAll() { return new SearchFilter() { diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java index 103586d35..cd179180f 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java @@ -28,6 +28,8 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import java.util.List; +import java.util.function.Predicate; +import java.util.function.UnaryOperator; /** * An immutable representation of a list of {@link EntryStack}. @@ -59,7 +61,7 @@ public interface EntryIngredient extends List> { return Internals.getEntryIngredientProvider().builder(initialCapacity); } - static EntryIngredient from(ListTag tag) { + static EntryIngredient read(ListTag tag) { if (tag.isEmpty()) return empty(); EntryStack[] stacks = new EntryStack[tag.size()]; for (int i = 0; i < tag.size(); i++) { @@ -75,6 +77,10 @@ public interface EntryIngredient extends List> { return (List>) (List) this; } + EntryIngredient filter(Predicate> filter); + + EntryIngredient map(UnaryOperator> transformer); + interface Builder { Builder add(EntryStack stack); diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java index 07cbe62f7..ce7201d51 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java @@ -50,10 +50,7 @@ import net.minecraft.util.Unit; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import java.util.*; import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Supplier; @@ -108,7 +105,7 @@ public interface EntryStack extends TextRepresentable, Renderer { EntryDefinition definition = EntryTypeRegistry.getInstance().get(new ResourceLocation(tag.getString("type"))); EntrySerializer serializer = definition.getSerializer(); if (serializer != null && serializer.supportReading()) { - return EntryStack.of((EntryType) definition, serializer.read(tag)); + return EntryStack.of((EntryDefinition) definition, serializer.read(tag)); } throw new UnsupportedOperationException(definition.getType().getId() + " does not support deserialization!"); } @@ -163,6 +160,8 @@ public interface EntryStack extends TextRepresentable, Renderer { EntryStack normalize(); + Collection getTagsFor(); + @Deprecated int hashCode(); diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java index f08480de1..04ea05d7f 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java @@ -31,6 +31,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagContainer; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -67,7 +68,7 @@ public interface EntryDefinition { Component asFormattedText(EntryStack entry, T value); - Collection getTagsFor(EntryStack entry, T value); + Collection getTagsFor(TagContainer tagContainer, EntryStack entry, T value); @ApiStatus.NonExtendable default EntryDefinition cast() { diff --git a/api/src/main/java/me/shedaniel/rei/api/common/plugins/PluginManager.java b/api/src/main/java/me/shedaniel/rei/api/common/plugins/PluginManager.java index 12c35f604..4cd223fa7 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/plugins/PluginManager.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/plugins/PluginManager.java @@ -55,7 +55,7 @@ public interface PluginManager

> extends ParentReloadable< } static List>> getActiveInstances() { - return EnvExecutor.getEnvSpecific(() -> () -> Arrays.asList(getInstance(), getClientInstance()), + return EnvExecutor.getEnvSpecific(() -> () -> Arrays.asList(getInstance(), getClientInstance(), getServerInstance()), () -> () -> Arrays.asList(getInstance(), getServerInstance())); } diff --git a/api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java b/api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java index 9b022ff28..786a212fc 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java @@ -158,7 +158,7 @@ public final class EntryIngredients { } ImmutableList.Builder ingredients = ImmutableList.builder(); for (Tag tag : listTag) { - ingredients.add(EntryIngredient.from((ListTag) tag)); + ingredients.add(EntryIngredient.read((ListTag) tag)); } return ingredients.build(); } -- cgit