diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-02-12 03:12:09 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-02-12 03:12:09 +0800 |
| commit | bd8aed1e2716fc57fefc640d303e403ba761e3b1 (patch) | |
| tree | 334fa7ae51918ddf3d37db4961b14e77a0a441b9 /runtime | |
| parent | dbd26b5bd394957d1bd73016779b87baff3668b0 (diff) | |
| download | RoughlyEnoughItems-bd8aed1e2716fc57fefc640d303e403ba761e3b1.tar.gz RoughlyEnoughItems-bd8aed1e2716fc57fefc640d303e403ba761e3b1.tar.bz2 RoughlyEnoughItems-bd8aed1e2716fc57fefc640d303e403ba761e3b1.zip | |
Update to 22w06a
Diffstat (limited to 'runtime')
10 files changed, 46 insertions, 82 deletions
diff --git a/runtime/build.gradle b/runtime/build.gradle index 25b8d9fed..8feb90d1e 100644 --- a/runtime/build.gradle +++ b/runtime/build.gradle @@ -21,10 +21,6 @@ dependencies { } remapJar { - remapAccessWidener = false -} - -remapJar { classifier "raw" } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java index af4c79d48..61f16508f 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java @@ -65,7 +65,7 @@ public class FilteringAddRuleScreen extends Screen { })); } rulesList = addWidget(new RulesList(minecraft, width, height, 30, height, BACKGROUND_LOCATION)); - for (FilteringRule<?> rule : FilteringRule.REGISTRY) { + for (FilteringRule<?> rule : FilteringRule.REGISTRY.values()) { if (!(rule instanceof ManualFilteringRule)) rulesList.addItem(new DefaultRuleEntry(parent, entry, rule.createNew(), null)); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringRule.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringRule.java index a3a8a5e67..e18d2e4ea 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringRule.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringRule.java @@ -23,7 +23,8 @@ package me.shedaniel.rei.impl.client.entry.filtering; -import com.mojang.serialization.Lifecycle; +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; import me.shedaniel.rei.impl.client.config.entries.FilteringEntry; import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRule; import me.shedaniel.rei.impl.client.entry.filtering.rules.SearchFilteringRule; @@ -31,11 +32,8 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.Util; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.core.MappedRegistry; -import net.minecraft.core.Registry; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.ApiStatus; @@ -46,14 +44,13 @@ import java.util.function.BiFunction; @ApiStatus.Experimental @Environment(EnvType.CLIENT) public interface FilteringRule<T extends FilteringRule<?>> { - ResourceKey<Registry<FilteringRule<?>>> REGISTRY_KEY = ResourceKey.createRegistryKey(new ResourceLocation("roughlyenoughitems", "filtering_rule")); - Registry<FilteringRule<?>> REGISTRY = Util.make(new MappedRegistry<>(REGISTRY_KEY, Lifecycle.stable()), registry -> { - Registry.register(registry, new ResourceLocation("roughlyenoughitems", "search"), new SearchFilteringRule()); - Registry.register(registry, new ResourceLocation("roughlyenoughitems", "manual"), new ManualFilteringRule()); + BiMap<ResourceLocation, FilteringRule<?>> REGISTRY = Util.make(HashBiMap.create(), registry -> { + registry.put(new ResourceLocation("roughlyenoughitems", "search"), new SearchFilteringRule()); + registry.put(new ResourceLocation("roughlyenoughitems", "manual"), new ManualFilteringRule()); }); static CompoundTag save(FilteringRule<?> rule, CompoundTag tag) { - tag.putString("id", REGISTRY.getKey(rule).toString()); + tag.putString("id", REGISTRY.inverse().get(rule).toString()); tag.put("rule", rule.save(new CompoundTag())); return tag; } @@ -74,7 +71,7 @@ public interface FilteringRule<T extends FilteringRule<?>> { } default Component getTitle() { - return Component.nullToEmpty(FilteringRule.REGISTRY.getKey(this).toString()); + return Component.nullToEmpty(FilteringRule.REGISTRY.inverse().get(this).toString()); } default Component getSubtitle() { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java index be9a9754c..4d8263f46 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java @@ -42,15 +42,12 @@ import me.shedaniel.rei.api.common.util.CollectionUtils; import me.shedaniel.rei.impl.client.ClientHelperImpl; import me.shedaniel.rei.impl.client.gui.widget.EntryWidget; import me.shedaniel.rei.impl.display.DisplaySpec; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.chat.NarratorChatListener; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.screens.Screen; +import net.minecraft.core.Holder; import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.Tag; -import net.minecraft.tags.TagCollection; -import net.minecraft.tags.TagContainer; +import net.minecraft.tags.TagKey; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; @@ -58,6 +55,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.stream.Stream; public abstract class AbstractDisplayViewingScreen extends Screen implements DisplayScreen { protected final Map<DisplayCategory<?>, List<DisplaySpec>> categoryMap; @@ -171,7 +169,6 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis } protected void setupTags(List<Widget> widgets) { - TagContainer tags = Minecraft.getInstance().getConnection().getTags(); outer: for (EntryWidget widget : Widgets.<EntryWidget>walk(widgets, EntryWidget.class::isInstance)) { widget.removeTagMatch = false; @@ -185,18 +182,20 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis } } // TODO: Don't hardcode - TagCollection<?> collection; - List<Object> objects; + Stream<? extends TagKey<?>> collection; + List<Holder<?>> objects; if (type == VanillaEntryTypes.ITEM) { - collection = tags.getOrEmpty(Registry.ITEM_REGISTRY); - objects = CollectionUtils.map(widget.getEntries(), stack -> stack.<ItemStack>castValue().getItem()); + collection = Registry.ITEM.getTagNames(); + objects = CollectionUtils.map(widget.getEntries(), stack -> stack.<ItemStack>castValue().getItem().builtInRegistryHolder()); } else if (type == VanillaEntryTypes.FLUID) { - collection = tags.getOrEmpty(Registry.FLUID_REGISTRY); - objects = CollectionUtils.map(widget.getEntries(), stack -> stack.<FluidStack>castValue().getFluid()); + collection = Registry.FLUID.getTagNames(); + objects = CollectionUtils.map(widget.getEntries(), stack -> stack.<FluidStack>castValue().getFluid().builtInRegistryHolder()); } else continue; - Map.Entry<ResourceLocation, ? extends Tag<?>> firstOrNull = CollectionUtils.findFirstOrNull(collection.getAllTags().entrySet(), entry -> entry.getValue().getValues().equals(objects)); + TagKey<?> firstOrNull = collection.filter(key -> + CollectionUtils.anyMatch(objects, holder -> ((Holder<Object>) holder).is((TagKey<Object>) key))) + .findAny().orElse(null); if (firstOrNull != null) { - widget.tagMatch = firstOrNull.getKey(); + widget.tagMatch = firstOrNull.location(); } } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TagArgumentType.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TagArgumentType.java index e64ebff9b..0e6fa7f98 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TagArgumentType.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TagArgumentType.java @@ -30,13 +30,14 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.network.chat.Style; import net.minecraft.network.chat.TextColor; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; import net.minecraft.util.Unit; import org.apache.commons.lang3.mutable.Mutable; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.util.Collection; +import java.util.Objects; +import java.util.stream.Stream; @ApiStatus.Internal @Environment(EnvType.CLIENT) @@ -69,18 +70,8 @@ public final class TagArgumentType extends ArgumentType<Unit, String[]> { @Override public boolean matches(Mutable<String[]> data, EntryStack<?> stack, String searchText, Unit filterData) { if (data.getValue() == null) { - Collection<ResourceLocation> tags = stack.getTagsFor(); - if (tags.isEmpty()) { - data.setValue(EMPTY_ARRAY); - } else { - data.setValue(new String[tags.size()]); - int i = 0; - - for (ResourceLocation identifier : tags) { - data.getValue()[i] = identifier.toString(); - i++; - } - } + Stream<TagKey<?>> tags = stack.getTagsFor(); + data.setValue(tags.map(TagArgumentType::toString).toArray(String[]::new)); } for (String tag : data.getValue()) { if (!tag.isEmpty() && tag.contains(searchText)) { @@ -95,6 +86,10 @@ public final class TagArgumentType extends ArgumentType<Unit, String[]> { return Unit.INSTANCE; } + private static String toString(TagKey<?> tagKey) { + return Objects.toString(tagKey.location()); + } + private TagArgumentType() { } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java index b8de9d7ca..568c5235a 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java @@ -24,8 +24,6 @@ package me.shedaniel.rei.impl.common.entry; import com.mojang.blaze3d.vertex.PoseStack; -import dev.architectury.platform.Platform; -import dev.architectury.utils.Env; import it.unimi.dsi.fastutil.shorts.Short2ObjectMap; import it.unimi.dsi.fastutil.shorts.Short2ObjectMaps; import it.unimi.dsi.fastutil.shorts.Short2ObjectOpenHashMap; @@ -43,19 +41,17 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.CrashReport; import net.minecraft.CrashReportCategory; -import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.SerializationTags; -import net.minecraft.tags.TagContainer; +import net.minecraft.tags.TagKey; import net.minecraft.world.item.ItemStack; import org.apache.commons.lang3.mutable.Mutable; import org.apache.commons.lang3.mutable.MutableObject; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.util.Collection; import java.util.Iterator; +import java.util.stream.Stream; @ApiStatus.Internal public abstract class AbstractEntryStack<A> implements EntryStack<A>, Renderer { @@ -247,19 +243,8 @@ public abstract class AbstractEntryStack<A> implements EntryStack<A>, Renderer { } @Override - public Collection<ResourceLocation> getTagsFor() { - TagContainer container; - if (Platform.getEnvironment() == Env.CLIENT) { - container = getClientTagContainer(); - } else { - container = SerializationTags.getInstance(); - } - return getDefinition().getTagsFor(container, this, getValue()); - } - - @Environment(EnvType.CLIENT) - private static TagContainer getClientTagContainer() { - return Minecraft.getInstance().getConnection().getTags(); + public Stream<TagKey<?>> getTagsFor() { + return (Stream<TagKey<?>>) getDefinition().getTagsFor(this, getValue()); } @Override diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java index 247de3c47..d56f32e10 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java @@ -142,7 +142,7 @@ public class EntryRegistryImpl implements EntryRegistry { FilteringRule<?> rule = rules.get(i); cache.setCache(rule, rule.prepareCache(true)); context.handleResult(rule.processFilteredStacks(context, cache, true)); - RoughlyEnoughItemsCore.LOGGER.debug("Refiltered rule [%s] in %s.", FilteringRule.REGISTRY.getKey(rule).toString(), innerStopwatch.stop().toString()); + RoughlyEnoughItemsCore.LOGGER.debug("Refiltered rule [%s] in %s.", FilteringRule.REGISTRY.inverse().get(rule).toString(), innerStopwatch.stop().toString()); } Set<HashedEntryStackWrapper> hiddenStacks = context.stacks.get(FilteringContextType.HIDDEN); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java index e7d8ddca3..d87a94300 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java @@ -37,14 +37,13 @@ import net.fabricmc.api.Environment; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagContainer; +import net.minecraft.tags.TagKey; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.util.Collection; -import java.util.Collections; import java.util.Objects; import java.util.function.Supplier; +import java.util.stream.Stream; @ApiStatus.Internal public class BuiltinEntryDefinition<T> implements EntryDefinition<T>, EntrySerializer<T> { @@ -127,8 +126,8 @@ public class BuiltinEntryDefinition<T> implements EntryDefinition<T>, EntrySeria } @Override - public Collection<ResourceLocation> getTagsFor(TagContainer tagContainer, EntryStack<T> entry, T value) { - return Collections.emptyList(); + public Stream<? extends TagKey<?>> getTagsFor(EntryStack<T> entry, T value) { + return Stream.empty(); } @Override diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java index a8b578a45..142f80b0e 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java @@ -63,8 +63,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagCollection; -import net.minecraft.tags.TagContainer; +import net.minecraft.tags.TagKey; import net.minecraft.util.Mth; import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.Item; @@ -73,8 +72,6 @@ import net.minecraft.world.level.material.FlowingFluid; import net.minecraft.world.level.material.Fluid; import org.jetbrains.annotations.Nullable; -import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -198,9 +195,8 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack>, EntryS } @Override - public Collection<ResourceLocation> getTagsFor(TagContainer tagContainer, EntryStack<FluidStack> entry, FluidStack value) { - TagCollection<Fluid> collection = tagContainer.getOrEmpty(Registry.FLUID_REGISTRY); - return collection == null ? Collections.emptyList() : collection.getMatchingTags(value.getFluid()); + public Stream<? extends TagKey<?>> getTagsFor(EntryStack<FluidStack> entry, FluidStack value) { + return value.getFluid().builtInRegistryHolder().tags(); } @Override diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java index 1515ed6ae..41c2bda04 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java @@ -61,18 +61,16 @@ import net.minecraft.core.Registry; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagCollection; -import net.minecraft.tags.TagContainer; +import net.minecraft.tags.TagKey; import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import org.jetbrains.annotations.Nullable; -import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Optional; +import java.util.stream.Stream; public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySerializer<ItemStack> { @Environment(EnvType.CLIENT) @@ -200,9 +198,8 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer } @Override - public Collection<ResourceLocation> getTagsFor(TagContainer tagContainer, EntryStack<ItemStack> entry, ItemStack value) { - TagCollection<Item> collection = tagContainer.getOrEmpty(Registry.ITEM_REGISTRY); - return collection == null ? Collections.emptyList() : collection.getMatchingTags(value.getItem()); + public Stream<? extends TagKey<?>> getTagsFor(EntryStack<ItemStack> entry, ItemStack value) { + return value.getTags(); } @Environment(EnvType.CLIENT) |
