aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-10-22 22:57:08 +0800
committershedaniel <daniel@shedaniel.me>2022-10-22 22:57:08 +0800
commit91d9941c8271ee7718739f6700047df6229c9b94 (patch)
treef89ea89153e083f617e730e7c4e1e01f1865c4d7
parentbecefcce17a7130bb5642fc4cbf3ad4f7cbdcadf (diff)
downloadRoughlyEnoughItems-91d9941c8271ee7718739f6700047df6229c9b94.tar.gz
RoughlyEnoughItems-91d9941c8271ee7718739f6700047df6229c9b94.tar.bz2
RoughlyEnoughItems-91d9941c8271ee7718739f6700047df6229c9b94.zip
Properly register items on 1.19.3
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/VersionAdapter.java14
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java9
-rw-r--r--version_support/1.19.3/src/main/java/me/shedaniel/rei/impl/init/versions/Version1_19_3Adapter.java43
3 files changed, 59 insertions, 7 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/impl/VersionAdapter.java b/api/src/main/java/me/shedaniel/rei/impl/VersionAdapter.java
index 159dfeddf..24d57ab7c 100644
--- a/api/src/main/java/me/shedaniel/rei/impl/VersionAdapter.java
+++ b/api/src/main/java/me/shedaniel/rei/impl/VersionAdapter.java
@@ -23,7 +23,10 @@
package me.shedaniel.rei.impl;
+import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
import me.shedaniel.rei.api.common.entry.EntryStack;
+import me.shedaniel.rei.api.common.util.EntryIngredients;
+import me.shedaniel.rei.api.common.util.EntryStacks;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
@@ -62,6 +65,17 @@ public interface VersionAdapter {
}
@Environment(EnvType.CLIENT)
+ default void registerDefaultItems(EntryRegistry registry) {
+ for (Item item : Registry.ITEM) {
+ try {
+ registry.addEntries(EntryIngredients.ofItemStacks(registry.appendStacksForItem(item)));
+ } catch (Exception ignored) {
+ registry.addEntry(EntryStacks.of(item));
+ }
+ }
+ }
+
+ @Environment(EnvType.CLIENT)
List<ItemStack> appendStacksForItem(Item item, Comparator<ItemStack> comparator);
@Environment(EnvType.CLIENT)
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
index 240e85bef..63121cc06 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
@@ -44,6 +44,7 @@ import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.EntryIngredients;
import me.shedaniel.rei.api.common.util.EntryStacks;
import me.shedaniel.rei.impl.ClientInternals;
+import me.shedaniel.rei.impl.VersionAdapter;
import me.shedaniel.rei.plugin.autocrafting.recipebook.DefaultRecipeBookHandler;
import me.shedaniel.rei.plugin.client.categories.*;
import me.shedaniel.rei.plugin.client.categories.anvil.DefaultAnvilCategory;
@@ -119,13 +120,7 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
@Override
public void registerEntries(EntryRegistry registry) {
- for (Item item : Registry.ITEM) {
- try {
- registry.addEntries(EntryIngredients.ofItemStacks(registry.appendStacksForItem(item)));
- } catch (Exception ignored) {
- registry.addEntry(EntryStacks.of(item));
- }
- }
+ VersionAdapter.INSTANCE.registerDefaultItems(registry);
for (Fluid fluid : Registry.FLUID) {
FluidState state = fluid.defaultFluidState();
if (!state.isEmpty() && state.isSource()) {
diff --git a/version_support/1.19.3/src/main/java/me/shedaniel/rei/impl/init/versions/Version1_19_3Adapter.java b/version_support/1.19.3/src/main/java/me/shedaniel/rei/impl/init/versions/Version1_19_3Adapter.java
index 5b4824f15..bca0aea65 100644
--- a/version_support/1.19.3/src/main/java/me/shedaniel/rei/impl/init/versions/Version1_19_3Adapter.java
+++ b/version_support/1.19.3/src/main/java/me/shedaniel/rei/impl/init/versions/Version1_19_3Adapter.java
@@ -23,7 +23,11 @@
package me.shedaniel.rei.impl.init.versions;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.Multimap;
+import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
import me.shedaniel.rei.api.common.entry.EntryStack;
+import me.shedaniel.rei.api.common.util.EntryStacks;
import me.shedaniel.rei.impl.VersionAdapter;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@@ -34,9 +38,13 @@ import net.minecraft.core.Holder;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.flag.FeatureFlagSet;
+import net.minecraft.world.item.CreativeModeTab;
+import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
+import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
@@ -45,6 +53,41 @@ import java.util.function.Function;
public class Version1_19_3Adapter implements VersionAdapter {
@Override
@Environment(EnvType.CLIENT)
+ public void registerDefaultItems(EntryRegistry registry) {
+ FeatureFlagSet features = Minecraft.getInstance().player.getLevel().enabledFeatures();
+ Multimap<Item, EntryStack<ItemStack>> items = ArrayListMultimap.create();
+
+ for (CreativeModeTab tab : CreativeModeTabs.TABS) {
+ if (tab != CreativeModeTabs.TAB_HOTBAR && tab != CreativeModeTabs.TAB_INVENTORY) {
+ try {
+ for (ItemStack stack : tab.getDisplayItems(features)) {
+ try {
+ items.put(stack.getItem(), EntryStacks.of(stack));
+ } catch (Exception ignore) {
+ }
+ }
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ }
+ }
+ }
+
+ for (Item item : Registry.ITEM) {
+ Collection<EntryStack<ItemStack>> stacks = items.get(item);
+ if (stacks.isEmpty()) {
+ try {
+ registry.addEntry(EntryStacks.of(item.getDefaultInstance()));
+ } catch (Exception ignore) {
+ registry.addEntry(EntryStacks.of(item));
+ }
+ } else {
+ registry.addEntries(stacks);
+ }
+ }
+ }
+
+ @Override
+ @Environment(EnvType.CLIENT)
public List<ItemStack> appendStacksForItem(Item item, Comparator<ItemStack> comparator) {
return List.of(item.getDefaultInstance());
}