aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-02-12 03:12:09 +0800
committershedaniel <daniel@shedaniel.me>2022-02-12 03:12:09 +0800
commitbd8aed1e2716fc57fefc640d303e403ba761e3b1 (patch)
tree334fa7ae51918ddf3d37db4961b14e77a0a441b9 /runtime
parentdbd26b5bd394957d1bd73016779b87baff3668b0 (diff)
downloadRoughlyEnoughItems-bd8aed1e2716fc57fefc640d303e403ba761e3b1.tar.gz
RoughlyEnoughItems-bd8aed1e2716fc57fefc640d303e403ba761e3b1.tar.bz2
RoughlyEnoughItems-bd8aed1e2716fc57fefc640d303e403ba761e3b1.zip
Update to 22w06a
Diffstat (limited to 'runtime')
-rw-r--r--runtime/build.gradle4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringRule.java17
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java27
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TagArgumentType.java23
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java23
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java11
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)