aboutsummaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-05-16 17:45:22 +0800
committershedaniel <daniel@shedaniel.me>2021-05-16 17:45:22 +0800
commitb657842bcddcb65fb658d4cd9835e7fa15e1c236 (patch)
treef42511d9bb3ac413c03245391f26cfa6b0496c72 /api
parent4b55e2af04551f7b01047c9b47822e3a184e6362 (diff)
downloadRoughlyEnoughItems-b657842bcddcb65fb658d4cd9835e7fa15e1c236.tar.gz
RoughlyEnoughItems-b657842bcddcb65fb658d4cd9835e7fa15e1c236.tar.bz2
RoughlyEnoughItems-b657842bcddcb65fb658d4cd9835e7fa15e1c236.zip
Update JEI API to 7.6.4 & Fix #520
Diffstat (limited to 'api')
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparator.java (renamed from api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/ItemComparator.java)27
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparatorRegistry.java49
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/FluidComparatorRegistry.java45
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/ItemComparatorRegistry.java28
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/plugins/REIPlugin.java10
5 files changed, 125 insertions, 34 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/ItemComparator.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparator.java
index 09c36cec6..c40966887 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/ItemComparator.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparator.java
@@ -23,6 +23,7 @@
package me.shedaniel.rei.api.common.entry.comparison;
+import me.shedaniel.architectury.fluid.FluidStack;
import me.shedaniel.rei.impl.Internals;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
@@ -32,15 +33,15 @@ import java.util.Objects;
import java.util.function.ToLongFunction;
/**
- * Hasher implementation for {@link ItemStack}.
+ * Hasher implementation for {@link T}.
*/
@FunctionalInterface
-public interface ItemComparator {
- static ItemComparator noop() {
+public interface EntryComparator<T> {
+ static <T> EntryComparator<T> noop() {
return (context, stack) -> 1;
}
- static ItemComparator itemNbt() {
+ static EntryComparator<ItemStack> itemNbt() {
ToLongFunction<Tag> nbtHasher = nbtHasher("Count");
return (context, stack) -> {
CompoundTag tag = stack.getTag();
@@ -48,23 +49,31 @@ public interface ItemComparator {
};
}
+ static EntryComparator<FluidStack> fluidNbt() {
+ ToLongFunction<Tag> nbtHasher = nbtHasher("Amount");
+ return (context, stack) -> {
+ CompoundTag tag = stack.getTag();
+ return tag == null ? 0L : nbtHasher.applyAsLong(tag);
+ };
+ }
+
static ToLongFunction<Tag> nbtHasher(String... ignoredKeys) {
return Internals.getNbtHasher(ignoredKeys);
}
- long hash(ComparisonContext context, ItemStack stack);
+ long hash(ComparisonContext context, T stack);
- default ItemComparator onlyExact() {
- ItemComparator self = this;
+ default EntryComparator<T> onlyExact() {
+ EntryComparator<T> self = this;
return (context, stack) -> {
return context.isExact() ? self.hash(context, stack) : 1;
};
}
- default ItemComparator then(ItemComparator other) {
+ default EntryComparator<T> then(EntryComparator<T> other) {
Objects.requireNonNull(other);
- ItemComparator self = this;
+ EntryComparator<T> self = this;
return (context, stack) -> {
long hash = 1L;
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparatorRegistry.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparatorRegistry.java
new file mode 100644
index 000000000..ba77326e6
--- /dev/null
+++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparatorRegistry.java
@@ -0,0 +1,49 @@
+/*
+ * This file is licensed under the MIT License, part of Roughly Enough Items.
+ * Copyright (c) 2018, 2019, 2020, 2021 shedaniel
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package me.shedaniel.rei.api.common.entry.comparison;
+
+import me.shedaniel.rei.api.common.plugins.REIPlugin;
+import me.shedaniel.rei.api.common.registry.Reloadable;
+
+/**
+ * Registry for registering custom methods for identifying variants of {@link T}.
+ * The default comparator is {@link EntryComparator#noop()}, which does not compare the NBT of the entries.
+ * <p>
+ * This comparator is used when the comparison context is {@link ComparisonContext#EXACT}.
+ */
+public interface EntryComparatorRegistry<T, S> extends Reloadable<REIPlugin<?>> {
+ void register(EntryComparator<T> comparator, S entry);
+
+ default void register(EntryComparator<T> comparator, S... entries) {
+ for (S entry : entries) {
+ register(comparator, entry);
+ }
+ }
+
+ long hashOf(ComparisonContext context, T stack);
+
+ boolean containsComparator(S entry);
+
+ int comparatorSize();
+}
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/FluidComparatorRegistry.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/FluidComparatorRegistry.java
new file mode 100644
index 000000000..f8489ef2e
--- /dev/null
+++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/FluidComparatorRegistry.java
@@ -0,0 +1,45 @@
+/*
+ * This file is licensed under the MIT License, part of Roughly Enough Items.
+ * Copyright (c) 2018, 2019, 2020, 2021 shedaniel
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package me.shedaniel.rei.api.common.entry.comparison;
+
+import me.shedaniel.architectury.fluid.FluidStack;
+import me.shedaniel.rei.api.common.plugins.PluginManager;
+import net.minecraft.world.level.material.Fluid;
+
+public interface FluidComparatorRegistry extends EntryComparatorRegistry<FluidStack, Fluid> {
+ /**
+ * @return the instance of {@link FluidComparatorRegistry}
+ */
+ static FluidComparatorRegistry getInstance() {
+ return PluginManager.getInstance().get(FluidComparatorRegistry.class);
+ }
+
+ default void registerNbt(Fluid fluid) {
+ register(EntryComparator.fluidNbt(), fluid);
+ }
+
+ default void registerNbt(Fluid... fluids) {
+ register(EntryComparator.fluidNbt(), fluids);
+ }
+}
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/ItemComparatorRegistry.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/ItemComparatorRegistry.java
index 99f8a0038..299eab648 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/ItemComparatorRegistry.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/ItemComparatorRegistry.java
@@ -24,18 +24,10 @@
package me.shedaniel.rei.api.common.entry.comparison;
import me.shedaniel.rei.api.common.plugins.PluginManager;
-import me.shedaniel.rei.api.common.plugins.REIPlugin;
-import me.shedaniel.rei.api.common.registry.Reloadable;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
-/**
- * Registry for registering custom methods for identifying variants of {@link net.minecraft.world.item.ItemStack}.
- * The default comparator is {@link ItemComparator#noop()}, which does not compare the NBT of the items.
- * <p>
- * This comparator is used when the comparison context is {@link ComparisonContext#EXACT}.
- */
-public interface ItemComparatorRegistry extends Reloadable<REIPlugin<?>> {
+public interface ItemComparatorRegistry extends EntryComparatorRegistry<ItemStack, Item> {
/**
* @return the instance of {@link ItemComparatorRegistry}
*/
@@ -43,25 +35,11 @@ public interface ItemComparatorRegistry extends Reloadable<REIPlugin<?>> {
return PluginManager.getInstance().get(ItemComparatorRegistry.class);
}
- void register(ItemComparator comparator, Item item);
-
- default void register(ItemComparator comparator, Item... items) {
- for (Item item : items) {
- register(comparator, item);
- }
- }
-
default void registerNbt(Item item) {
- register(ItemComparator.itemNbt(), item);
+ register(EntryComparator.itemNbt(), item);
}
default void registerNbt(Item... items) {
- register(ItemComparator.itemNbt(), items);
+ register(EntryComparator.itemNbt(), items);
}
-
- long hashOf(ComparisonContext context, ItemStack stack);
-
- boolean containsComparator(Item item);
-
- int comparatorSize();
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/plugins/REIPlugin.java b/api/src/main/java/me/shedaniel/rei/api/common/plugins/REIPlugin.java
index 0c5559f05..44998c914 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/plugins/REIPlugin.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/plugins/REIPlugin.java
@@ -24,6 +24,7 @@
package me.shedaniel.rei.api.common.plugins;
import me.shedaniel.rei.api.common.display.DisplaySerializerRegistry;
+import me.shedaniel.rei.api.common.entry.comparison.FluidComparatorRegistry;
import me.shedaniel.rei.api.common.entry.comparison.ItemComparatorRegistry;
import me.shedaniel.rei.api.common.entry.type.EntryTypeRegistry;
import me.shedaniel.rei.api.common.fluid.FluidSupportProvider;
@@ -69,6 +70,15 @@ public interface REIPlugin<P extends REIPlugin<?>> extends Comparable<REIPlugin<
}
/**
+ * Registers fluid comparators for identifying variants of {@link me.shedaniel.architectury.fluid.FluidStack}.
+ *
+ * @see FluidComparatorRegistry
+ */
+ @ApiStatus.OverrideOnly
+ default void registerFluidComparators(FluidComparatorRegistry registry) {
+ }
+
+ /**
* Registers new item to fluid support providers.
*
* @param support the support registry