diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-10-22 22:57:08 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-10-22 22:57:08 +0800 |
| commit | 91d9941c8271ee7718739f6700047df6229c9b94 (patch) | |
| tree | f89ea89153e083f617e730e7c4e1e01f1865c4d7 | |
| parent | becefcce17a7130bb5642fc4cbf3ad4f7cbdcadf (diff) | |
| download | RoughlyEnoughItems-91d9941c8271ee7718739f6700047df6229c9b94.tar.gz RoughlyEnoughItems-91d9941c8271ee7718739f6700047df6229c9b94.tar.bz2 RoughlyEnoughItems-91d9941c8271ee7718739f6700047df6229c9b94.zip | |
Properly register items on 1.19.3
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()); } |
