diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-05-16 17:45:22 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-05-16 17:45:22 +0800 |
| commit | b657842bcddcb65fb658d4cd9835e7fa15e1c236 (patch) | |
| tree | f42511d9bb3ac413c03245391f26cfa6b0496c72 /runtime/src/main/java/me/shedaniel/rei/impl | |
| parent | 4b55e2af04551f7b01047c9b47822e3a184e6362 (diff) | |
| download | RoughlyEnoughItems-b657842bcddcb65fb658d4cd9835e7fa15e1c236.tar.gz RoughlyEnoughItems-b657842bcddcb65fb658d4cd9835e7fa15e1c236.tar.bz2 RoughlyEnoughItems-b657842bcddcb65fb658d4cd9835e7fa15e1c236.zip | |
Update JEI API to 7.6.4 & Fix #520
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/impl')
3 files changed, 122 insertions, 43 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/EntryComparatorRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/EntryComparatorRegistryImpl.java new file mode 100644 index 000000000..1304e7c5d --- /dev/null +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/EntryComparatorRegistryImpl.java @@ -0,0 +1,78 @@ +/* + * 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.impl.common.entry.comparison; + +import me.shedaniel.rei.api.common.entry.comparison.ComparisonContext; +import me.shedaniel.rei.api.common.entry.comparison.EntryComparator; +import me.shedaniel.rei.api.common.entry.comparison.EntryComparatorRegistry; +import me.shedaniel.rei.api.common.plugins.REIPlugin; +import net.minecraft.core.Registry; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jetbrains.annotations.ApiStatus; + +import java.util.IdentityHashMap; +import java.util.Map; + +@ApiStatus.Internal +public abstract class EntryComparatorRegistryImpl<T, S> implements EntryComparatorRegistry<T, S> { + private static final Logger LOGGER = LogManager.getLogger(EntryComparatorRegistryImpl.class); + private final Map<S, EntryComparator<T>> comparators = new IdentityHashMap<>(); + + @Override + public void register(EntryComparator<T> comparator, S entry) { + EntryComparator<T> put = this.comparators.put(entry, comparator); + if (put != null) { + LOGGER.warn("[REI] Overriding " + put + "entry comparator with " + comparator + "for " + entry + "! This may result in unwanted comparisons!"); + } + } + + @Override + public void startReload() { + comparators.clear(); + } + + public abstract S getEntry(T stack); + + @Override + public long hashOf(ComparisonContext context, T stack) { + EntryComparator<T> comparator = comparators.get(getEntry(stack)); + if (comparator != null) { + return comparator.hash(context, stack); + } + return 1; + } + + @Override + public boolean containsComparator(S item) { + return comparators.containsKey(item); + } + + @Override + public int comparatorSize() { + return this.comparators.size(); + } +} diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/FluidComparatorRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/FluidComparatorRegistryImpl.java new file mode 100644 index 000000000..67cceb6dd --- /dev/null +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/FluidComparatorRegistryImpl.java @@ -0,0 +1,41 @@ +/* + * 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.impl.common.entry.comparison; + +import me.shedaniel.architectury.fluid.FluidStack; +import me.shedaniel.rei.api.common.entry.comparison.FluidComparatorRegistry; +import me.shedaniel.rei.api.common.plugins.REIPlugin; +import net.minecraft.world.level.material.Fluid; + +public class FluidComparatorRegistryImpl extends EntryComparatorRegistryImpl<FluidStack, Fluid> implements FluidComparatorRegistry { + @Override + public Fluid getEntry(FluidStack stack) { + return stack.getFluid(); + } + + @Override + public void acceptPlugin(REIPlugin<?> plugin) { + plugin.registerFluidComparators(this); + } +} diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java index ed3eb1fba..e1c7b7a3b 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java @@ -23,59 +23,19 @@ package me.shedaniel.rei.impl.common.entry.comparison; -import me.shedaniel.rei.api.common.entry.comparison.ComparisonContext; -import me.shedaniel.rei.api.common.entry.comparison.ItemComparator; import me.shedaniel.rei.api.common.entry.comparison.ItemComparatorRegistry; import me.shedaniel.rei.api.common.plugins.REIPlugin; -import net.minecraft.core.Registry; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.jetbrains.annotations.ApiStatus; -import java.util.IdentityHashMap; -import java.util.Map; - -@ApiStatus.Internal -public class ItemComparatorRegistryImpl implements ItemComparatorRegistry { - private static final Logger LOGGER = LogManager.getLogger(ItemComparatorRegistryImpl.class); - private final Map<Item, ItemComparator> comparators = new IdentityHashMap<>(); - +public class ItemComparatorRegistryImpl extends EntryComparatorRegistryImpl<ItemStack, Item> implements ItemComparatorRegistry { @Override - public void register(ItemComparator comparator, Item item) { - ItemComparator put = this.comparators.put(item, comparator); - if (put != null) { - LOGGER.warn("[REI] Overriding " + put + "item comparator with " + comparator + "for " + Registry.ITEM.getKey(item) + "! This may result in unwanted comparisons!"); - } - } - - @Override - public void startReload() { - comparators.clear(); + public Item getEntry(ItemStack stack) { + return stack.getItem(); } @Override public void acceptPlugin(REIPlugin<?> plugin) { plugin.registerItemComparators(this); } - - @Override - public long hashOf(ComparisonContext context, ItemStack stack) { - ItemComparator comparator = comparators.get(stack.getItem()); - if (comparator != null) { - return comparator.hash(context, stack); - } - return 1; - } - - @Override - public boolean containsComparator(Item item) { - return comparators.containsKey(item); - } - - @Override - public int comparatorSize() { - return this.comparators.size(); - } } |
