From 1e869aeac83d1627a6cae32a3b53b7d17bd3d7b8 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Mon, 29 May 2023 23:17:20 +0800 Subject: Fix compile errors --- .../api/client/favorites/FavoriteEntryType.java | 2 +- .../api/client/favorites/FavoriteMenuEntry.java | 2 +- .../favorites/SystemFavoriteEntryProvider.java | 2 +- .../api/client/gui/config/SearchFieldLocation.java | 2 +- .../rei/api/client/gui/widgets/DelegateWidget.java | 2 +- .../rei/api/client/gui/widgets/Tooltip.java | 1 - .../rei/api/client/plugins/REIClientPlugin.java | 2 +- .../registry/entry/CollapsibleEntryRegistry.java | 3 +- .../client/registry/transfer/TransferHandler.java | 32 +++------- .../registry/transfer/TransferHandlerRenderer.java | 1 + .../method/CharacterUnpackingInputMethod.java | 34 ++++++++++- .../rei/api/client/search/method/InputMethod.java | 43 ++++++++++++- .../rei/api/client/subsets/SubsetsRegistry.java | 2 +- .../shedaniel/rei/api/client/util/MatrixUtils.java | 2 +- .../shedaniel/rei/api/common/display/Display.java | 2 +- .../api/common/display/SimpleGridMenuDisplay.java | 4 +- .../rei/api/common/entry/EntryIngredient.java | 6 +- .../shedaniel/rei/api/common/entry/EntryStack.java | 9 +-- .../me/shedaniel/rei/api/common/util/Animator.java | 2 +- .../rei/api/common/util/CollectionUtils.java | 12 ++-- .../rei/api/common/util/EntryIngredients.java | 70 +++++++++++++++------- .../me/shedaniel/rei/impl/ClientInternals.java | 12 +--- 22 files changed, 158 insertions(+), 89 deletions(-) (limited to 'api/src/main/java') diff --git a/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntryType.java b/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntryType.java index 47642d98b..35108e577 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntryType.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntryType.java @@ -89,7 +89,7 @@ public interface FavoriteEntryType { /** * @deprecated {@link FavoriteEntryType.Section#add(boolean, FavoriteEntry...)} */ - @Deprecated(forRemoval = true) + @Deprecated void registerSystemFavorites(SystemFavoriteEntryProvider provider); } diff --git a/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteMenuEntry.java b/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteMenuEntry.java index 71c1ae86d..82a208d7c 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteMenuEntry.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteMenuEntry.java @@ -23,7 +23,7 @@ package me.shedaniel.rei.api.client.favorites; -import dev.architectury.utils.value.BooleanValue; +import me.shedaniel.architectury.utils.BooleanValue; import me.shedaniel.rei.api.client.gui.widgets.Widget; import me.shedaniel.rei.impl.ClientInternals; import net.fabricmc.api.EnvType; diff --git a/api/src/main/java/me/shedaniel/rei/api/client/favorites/SystemFavoriteEntryProvider.java b/api/src/main/java/me/shedaniel/rei/api/client/favorites/SystemFavoriteEntryProvider.java index 86bd2d395..6da4d1ebe 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/favorites/SystemFavoriteEntryProvider.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/favorites/SystemFavoriteEntryProvider.java @@ -29,7 +29,7 @@ import java.util.List; * @deprecated {@link FavoriteEntryType.Section#add(boolean, FavoriteEntry...)} */ @FunctionalInterface -@Deprecated(forRemoval = true) +@Deprecated public interface SystemFavoriteEntryProvider { List provide(); diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/config/SearchFieldLocation.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/config/SearchFieldLocation.java index f80cb4f1b..fe3044c95 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/config/SearchFieldLocation.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/config/SearchFieldLocation.java @@ -37,6 +37,6 @@ public enum SearchFieldLocation { @Override public String toString() { - return I18n.get("config.roughlyenoughitems.layout.searchFieldLocation.%s".formatted(name().toLowerCase(Locale.ROOT))); + return I18n.get(String.format("config.roughlyenoughitems.layout.searchFieldLocation.%s", name().toLowerCase(Locale.ROOT))); } } diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/DelegateWidget.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/DelegateWidget.java index b33f33f0f..4aa0685f2 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/DelegateWidget.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/DelegateWidget.java @@ -55,7 +55,7 @@ public class DelegateWidget extends WidgetWithBounds { @Override public Rectangle getBounds() { - return delegate() instanceof WidgetWithBounds withBounds ? withBounds.getBounds() : EMPTY; + return delegate() instanceof WidgetWithBounds ? ((WidgetWithBounds) delegate()).getBounds() : EMPTY; } @Override diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java index d6f3db95e..9fe7aa2b0 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java @@ -31,7 +31,6 @@ import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.impl.ClientInternals; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; import net.minecraft.network.chat.Component; import org.jetbrains.annotations.Nullable; diff --git a/api/src/main/java/me/shedaniel/rei/api/client/plugins/REIClientPlugin.java b/api/src/main/java/me/shedaniel/rei/api/client/plugins/REIClientPlugin.java index 0ba7c730c..6b3fd490b 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/plugins/REIClientPlugin.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/plugins/REIClientPlugin.java @@ -132,7 +132,7 @@ public interface REIClientPlugin extends REIPlugin { * @param registry the registry */ @ApiStatus.OverrideOnly - @Deprecated(forRemoval = true) + @Deprecated default void registerSubsets(SubsetsRegistry registry) { } diff --git a/api/src/main/java/me/shedaniel/rei/api/client/registry/entry/CollapsibleEntryRegistry.java b/api/src/main/java/me/shedaniel/rei/api/client/registry/entry/CollapsibleEntryRegistry.java index e3102b9de..8087ecf15 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/registry/entry/CollapsibleEntryRegistry.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/registry/entry/CollapsibleEntryRegistry.java @@ -30,7 +30,6 @@ import me.shedaniel.rei.api.common.plugins.PluginManager; import me.shedaniel.rei.api.common.registry.Reloadable; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; import org.jetbrains.annotations.ApiStatus; import java.util.Arrays; @@ -40,7 +39,7 @@ import java.util.function.Predicate; /** * Registry for grouping and collapsing {@link EntryStack}s. *

- * The easiest way to use this is to use the {@link me.shedaniel.rei.api.common.util.EntryIngredients#ofItemTag(TagKey)} + * The easiest way to use this is to use the {@link me.shedaniel.rei.api.common.util.EntryIngredients#ofItemTag(ResourceLocation)} * and collect tags together. */ @ApiStatus.Experimental diff --git a/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java b/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java index 7baa009e0..55d19baaf 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java @@ -29,7 +29,6 @@ import me.shedaniel.rei.api.client.gui.widgets.Tooltip; import me.shedaniel.rei.api.client.registry.display.TransferDisplayCategory; import me.shedaniel.rei.api.common.display.Display; import me.shedaniel.rei.api.common.entry.EntryIngredient; -import me.shedaniel.rei.impl.ClientInternals; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; @@ -37,7 +36,6 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.network.chat.Component; import net.minecraft.world.inventory.AbstractContainerMenu; -import net.minecraft.world.inventory.tooltip.TooltipComponent; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -212,16 +210,6 @@ public interface TransferHandler extends Comparable { */ Result tooltip(Component component); - /** - * Adds a line of tooltip to the result. - * - * @param component the component to add - * @return the result - * @since 8.3 - */ - @ApiStatus.Experimental - Result tooltip(TooltipComponent component); - /** * Adds a tooltip component for the missing items. * @@ -270,7 +258,7 @@ public interface TransferHandler extends Comparable { BiConsumer getTooltipRenderer(); @ApiStatus.Internal - void fillTooltip(List entries); + void fillTooltip(List entries); @FunctionalInterface interface TooltipSink { @@ -318,7 +306,7 @@ public interface TransferHandler extends Comparable { final class ResultImpl implements Result { private boolean successful, applicable, returningToScreen, blocking; private Component error; - private List tooltips = new ArrayList<>(); + private List tooltips = new ArrayList<>(); private Object errorRenderer; private BiConsumer tooltipRenderer; private int color; @@ -381,19 +369,15 @@ public interface TransferHandler extends Comparable { @Override public Result tooltip(Component component) { - this.tooltips.add(Tooltip.entry(component)); - return this; - } - - @Override - public Result tooltip(TooltipComponent component) { - this.tooltips.add(Tooltip.entry(component)); + this.tooltips.add(component); return this; } @Override public Result tooltipMissing(List ingredients) { - return tooltip(ClientInternals.createMissingTooltip(ingredients)); + // TODO: 1.16.5 missing tooltip + // return tooltip(ClientInternals.createMissingTooltip(ingredients)); + return this; } @Override @@ -436,10 +420,10 @@ public interface TransferHandler extends Comparable { } @Override - public void fillTooltip(List entries) { + public void fillTooltip(List entries) { if (isApplicable()) { if (!isSuccessful()) { - entries.add(Tooltip.entry(getError())); + entries.add(getError()); } entries.addAll(tooltips); } diff --git a/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandlerRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandlerRenderer.java index d916c41d0..2261d3fa8 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandlerRenderer.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandlerRenderer.java @@ -31,6 +31,7 @@ import me.shedaniel.rei.api.client.registry.category.CategoryRegistry; import me.shedaniel.rei.api.client.registry.display.DisplayCategory; import me.shedaniel.rei.api.client.registry.display.TransferDisplayCategory; import me.shedaniel.rei.api.common.display.Display; +import org.jetbrains.annotations.ApiStatus; import java.util.List; import java.util.Objects; diff --git a/api/src/main/java/me/shedaniel/rei/api/client/search/method/CharacterUnpackingInputMethod.java b/api/src/main/java/me/shedaniel/rei/api/client/search/method/CharacterUnpackingInputMethod.java index a3a309f8b..da27cf696 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/search/method/CharacterUnpackingInputMethod.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/search/method/CharacterUnpackingInputMethod.java @@ -29,6 +29,7 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; @ApiStatus.Experimental @@ -49,7 +50,7 @@ public interface CharacterUnpackingInputMethod extends InputMethod { if (chars.isEmpty()) return ((char) c) + ""; int i = Mth.floor((System.currentTimeMillis() / 1000L % (double) chars.size())); String result = chars.get(i).phonemes().stream() - .flatMap(integers -> integers.intStream().mapToObj(value -> ((char) value) + "")) + .flatMap(integers -> integers.stream().map(value -> ((char) value.intValue()) + "")) .collect(Collectors.joining()); if (result.codePointCount(0, result.length()) == 1 && result.codePointAt(0) == c) { return result; @@ -58,5 +59,34 @@ public interface CharacterUnpackingInputMethod extends InputMethod { }).collect(Collectors.joining()).trim().replace(" ", " "); } - record ExpendedChar(List phonemes) {} + static final class ExpendedChar { + private final List phonemes; + + public ExpendedChar(List phonemes) { + this.phonemes = phonemes; + } + + public List phonemes() { + return phonemes; + } + + @Override + public boolean equals(Object obj) { + if (obj == this) return true; + if (obj == null || obj.getClass() != this.getClass()) return false; + ExpendedChar that = (ExpendedChar) obj; + return Objects.equals(this.phonemes, that.phonemes); + } + + @Override + public int hashCode() { + return Objects.hash(phonemes); + } + + @Override + public String toString() { + return "ExpendedChar[" + + "phonemes=" + phonemes + ']'; + } + } } diff --git a/api/src/main/java/me/shedaniel/rei/api/client/search/method/InputMethod.java b/api/src/main/java/me/shedaniel/rei/api/client/search/method/InputMethod.java index 9a76edd64..77a0d973f 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/search/method/InputMethod.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/search/method/InputMethod.java @@ -32,7 +32,9 @@ import net.minecraft.network.chat.TextComponent; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; +import java.util.Collections; import java.util.List; +import java.util.Objects; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; @@ -159,10 +161,47 @@ public interface InputMethod { * @return the list of menu entries that will be used as options */ default List getOptionsMenuEntries() { - return List.of(); + return Collections.emptyList(); } - record Locale(String code, Component name) {} + static final class Locale { + private final String code; + private final Component name; + + public Locale(String code, Component name) { + this.code = code; + this.name = name; + } + + public String code() { + return code; + } + + public Component name() { + return name; + } + + @Override + public boolean equals(Object obj) { + if (obj == this) return true; + if (obj == null || obj.getClass() != this.getClass()) return false; + Locale that = (Locale) obj; + return Objects.equals(this.code, that.code) && + Objects.equals(this.name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(code, name); + } + + @Override + public String toString() { + return "Locale[" + + "code=" + code + ", " + + "name=" + name + ']'; + } + } @FunctionalInterface interface ProgressCallback { diff --git a/api/src/main/java/me/shedaniel/rei/api/client/subsets/SubsetsRegistry.java b/api/src/main/java/me/shedaniel/rei/api/client/subsets/SubsetsRegistry.java index 6073d925a..22aebeb56 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/subsets/SubsetsRegistry.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/subsets/SubsetsRegistry.java @@ -37,7 +37,7 @@ import java.util.List; import java.util.Set; @Environment(EnvType.CLIENT) -@Deprecated(forRemoval = true) +@Deprecated public interface SubsetsRegistry extends Reloadable { static SubsetsRegistry getInstance() { return PluginManager.getClientInstance().get(SubsetsRegistry.class); diff --git a/api/src/main/java/me/shedaniel/rei/api/client/util/MatrixUtils.java b/api/src/main/java/me/shedaniel/rei/api/client/util/MatrixUtils.java index ec1518c37..63949f48f 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/util/MatrixUtils.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/util/MatrixUtils.java @@ -35,7 +35,7 @@ public class MatrixUtils { public static Matrix4f inverse(Matrix4f matrix) { Transformation transformation = new Transformation(matrix); Transformation inverse = transformation.inverse(); - if (inverse != null) inverse.getScale(); // This has a side effect + if (inverse != null) inverse.getLeftRotation(); // This has a side effect return inverse == null ? Transformation.identity().getMatrix() : inverse.getMatrix(); } diff --git a/api/src/main/java/me/shedaniel/rei/api/common/display/Display.java b/api/src/main/java/me/shedaniel/rei/api/common/display/Display.java index 9fdda7940..7f1d0982c 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/display/Display.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/display/Display.java @@ -55,7 +55,7 @@ public interface Display extends DisplaySpec { */ List getInputEntries(); - @Deprecated(forRemoval = true) + @Deprecated default List getInputEntries(MenuSerializationContext context, MenuInfo info, boolean fill) { return getInputEntries(); } diff --git a/api/src/main/java/me/shedaniel/rei/api/common/display/SimpleGridMenuDisplay.java b/api/src/main/java/me/shedaniel/rei/api/common/display/SimpleGridMenuDisplay.java index bd7b47688..bdd6b2302 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/display/SimpleGridMenuDisplay.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/display/SimpleGridMenuDisplay.java @@ -50,7 +50,7 @@ public interface SimpleGridMenuDisplay extends Display { * @return the input width of the input entries * @deprecated use {@link #getInputWidth(int, int)} instead */ - @Deprecated(forRemoval = true) + @Deprecated default int getInputWidth() { return getWidth(); } @@ -61,7 +61,7 @@ public interface SimpleGridMenuDisplay extends Display { * @return the input height of the input entries * @deprecated use {@link #getInputHeight(int, int)} instead */ - @Deprecated(forRemoval = true) + @Deprecated default int getInputHeight() { return getHeight(); } diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java index 262d343dc..62c452475 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java @@ -32,6 +32,8 @@ import org.jetbrains.annotations.ApiStatus; import java.util.List; import java.util.function.Predicate; import java.util.function.UnaryOperator; +import java.util.stream.Collector; +import java.util.stream.Collectors; /** * An immutable representation of a list of {@link EntryStack}. @@ -154,7 +156,7 @@ public interface EntryIngredient extends List> { * @see EntryStack#saveStack() * @deprecated use {@link #saveIngredient()} instead */ - @Deprecated(forRemoval = true) + @Deprecated ListTag save(); /** @@ -164,7 +166,7 @@ public interface EntryIngredient extends List> { * @return the casted list of {@link EntryStack} * @deprecated use {@link #castAsList()} instead */ - @Deprecated(forRemoval = true) + @Deprecated default List> cast() { return castAsList(); } diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java index 26b5e6bf1..cc35d1d02 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java @@ -49,10 +49,7 @@ import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import java.util.*; import java.util.function.BiFunction; import java.util.function.Function; @@ -163,7 +160,7 @@ public interface EntryStack extends TextRepresentable, Renderer { * @deprecated use {@link #saveStack()} instead */ @Nullable - @Deprecated(forRemoval = true) + @Deprecated default CompoundTag save() { if (supportSaving()) { CompoundTag tag = getDefinition().getSerializer().save(this, getValue()); @@ -202,7 +199,7 @@ public interface EntryStack extends TextRepresentable, Renderer { */ @Nullable @Environment(EnvType.CLIENT) - @Deprecated(forRemoval = true) + @Deprecated default Tooltip getTooltip(Point mouse, boolean appendModName) { return getTooltip(TooltipContext.of(mouse), appendModName); } diff --git a/api/src/main/java/me/shedaniel/rei/api/common/util/Animator.java b/api/src/main/java/me/shedaniel/rei/api/common/util/Animator.java index 2d7eb56cd..2a4a0dde2 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/util/Animator.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/util/Animator.java @@ -1,6 +1,6 @@ /* * This file is licensed under the MIT License, part of Roughly Enough Items. - * Copyright (c) 2018, 2019, 2020, 2021, 2022 shedaniel + * Copyright (c) 2018, 2019, 2020, 2021, 2022, 2023 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 diff --git a/api/src/main/java/me/shedaniel/rei/api/common/util/CollectionUtils.java b/api/src/main/java/me/shedaniel/rei/api/common/util/CollectionUtils.java index befbb2708..eaf73327e 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/util/CollectionUtils.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/util/CollectionUtils.java @@ -389,7 +389,7 @@ public class CollectionUtils { } public static Iterable> partition(List list, int size) { - return () -> new UnmodifiableIterator<>() { + return () -> new UnmodifiableIterator>() { int i = 0; int partitionSize = Mth.ceil(list.size() / (float) size); @@ -402,7 +402,7 @@ public class CollectionUtils { public List next() { int cursor = i++ * size; int realSize = Math.min(list.size() - cursor, size); - return new AbstractList<>() { + return new AbstractList() { @Override public T get(int index) { if (index < 0 || index >= realSize) @@ -443,7 +443,7 @@ public class CollectionUtils { } public static Iterable> partitionIterator(Iterator iterator, int iteratorSize, int size) { - return partitionCollection(new AbstractCollection<>() { + return partitionCollection(new AbstractCollection() { @Override public Iterator iterator() { @@ -462,7 +462,7 @@ public class CollectionUtils { return Iterables.transform(partition((List) collection, size), List::iterator); } - return () -> new Iterator<>() { + return () -> new Iterator>() { int i = 0; int partitionSize = Mth.ceil(collection.size() / (float) size); int advanced = 0; @@ -490,7 +490,7 @@ public class CollectionUtils { advanced = cursor; } - return new Iterator<>() { + return new Iterator() { @Override public boolean hasNext() { return iterator.hasNext() && advanced < cursor + realSize; @@ -534,7 +534,7 @@ public class CollectionUtils { public E get(int ix) { int localIx = ix; for (List l : lists) { - if (localIx < 0) throw new IndexOutOfBoundsException(ix); + if (localIx < 0) throw new IndexOutOfBoundsException("Index out of range: " + ix); if (localIx < l.size()) return l.get(localIx); localIx -= l.size(); } diff --git a/api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java b/api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java index e9668ed83..bfcd71c9b 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java @@ -25,22 +25,24 @@ package me.shedaniel.rei.api.common.util; import com.google.common.collect.ImmutableList; import me.shedaniel.architectury.fluid.FluidStack; +import me.shedaniel.architectury.hooks.TagHooks; +import me.shedaniel.architectury.mixin.FluidTagsAccessor; import me.shedaniel.architectury.utils.Fraction; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.entry.type.EntryDefinition; import me.shedaniel.rei.api.common.entry.type.EntryType; import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes; -import net.minecraft.core.Holder; -import net.minecraft.core.HolderSet; -import net.minecraft.core.Registry; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; -import net.minecraft.resources.ResourceKey; -import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagCollection; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.Fluid; import java.util.ArrayList; @@ -50,7 +52,8 @@ import java.util.List; import java.util.function.Function; public final class EntryIngredients { - private EntryIngredients() {} + private EntryIngredients() { + } public static EntryIngredient of(ItemLike stack) { return EntryIngredient.of(EntryStacks.of(stack)); @@ -140,12 +143,12 @@ public final class EntryIngredients { return ImmutableList.copyOf(result); } - public static EntryIngredient ofTag(TagKey tagKey, Function, EntryStack> mapper) { - Registry registry = ((Registry>) Registry.REGISTRY).get((ResourceKey>) tagKey.registry()); - HolderSet.Named holders = registry.getTag(tagKey).orElse(null); + public static EntryIngredient ofTag(TagCollection tagCollection, ResourceLocation tagKey, Function> mapper) { + net.minecraft.tags.Tag.Named holders = TagHooks.getOptional(tagKey, () -> tagCollection); if (holders == null) return EntryIngredient.empty(); - EntryIngredient.Builder result = EntryIngredient.builder(holders.size()); - for (Holder holder : holders) { + List values = holders.getValues(); + EntryIngredient.Builder result = EntryIngredient.builder(values.size()); + for (S holder : values) { EntryStack stack = mapper.apply(holder); if (!stack.isEmpty()) { result.add(stack); @@ -154,29 +157,50 @@ public final class EntryIngredients { return result.build(); } - public static List ofTags(Iterable> tagKeys, Function, EntryStack> mapper) { - if (tagKeys instanceof Collection collection && collection.isEmpty()) return Collections.emptyList(); + public static List ofTags(TagCollection tagCollection, Iterable tagKeys, Function> mapper) { + if (tagKeys instanceof Collection && ((Collection) tagKeys).isEmpty()) + return Collections.emptyList(); ImmutableList.Builder ingredients = ImmutableList.builder(); - for (TagKey tagKey : tagKeys) { - ingredients.add(ofTag(tagKey, mapper)); + for (ResourceLocation tagKey : tagKeys) { + ingredients.add(ofTag(tagCollection, tagKey, mapper)); } return ingredients.build(); } - public static EntryIngredient ofItemTag(TagKey tagKey) { - return ofTag(tagKey, holder -> EntryStacks.of(holder.value())); + public static EntryIngredient ofItemTag(ResourceLocation tagKey) { + return ofTag(ItemTags.getAllTags(), tagKey, EntryStacks::of); + } + + public static EntryIngredient ofItemTag(net.minecraft.tags.Tag.Named tagKey) { + return ofItemTag(tagKey.getName()); + } + + public static EntryIngredient ofBlockTag(ResourceLocation tagKey) { + return ofTag(BlockTags.getAllTags(), tagKey, EntryStacks::of); + } + + public static EntryIngredient ofBlockTag(net.minecraft.tags.Tag.Named tagKey) { + return ofBlockTag(tagKey.getName()); + } + + public static EntryIngredient ofFluidTag(ResourceLocation tagKey) { + return ofTag(FluidTagsAccessor.getHelper().getAllTags(), tagKey, EntryStacks::of); + } + + public static EntryIngredient ofFluidTag(net.minecraft.tags.Tag.Named tagKey) { + return ofFluidTag(tagKey.getName()); } - public static EntryIngredient ofFluidTag(TagKey tagKey) { - return ofTag(tagKey, holder -> EntryStacks.of(holder.value())); + public static List ofItemTags(Iterable tagKey) { + return ofTags(ItemTags.getAllTags(), tagKey, EntryStacks::of); } - public static List ofItemTags(Iterable> tagKey) { - return ofTags(tagKey, holder -> EntryStacks.of(holder.value())); + public static List ofBlockTags(Iterable tagKey) { + return ofTags(BlockTags.getAllTags(), tagKey, EntryStacks::of); } - public static List ofFluidTags(Iterable> tagKey) { - return ofTags(tagKey, holder -> EntryStacks.of(holder.value())); + public static List ofFluidTags(Iterable tagKey) { + return ofTags(FluidTagsAccessor.getHelper().getAllTags(), tagKey, EntryStacks::of); } public static boolean testFuzzy(EntryIngredient ingredient, EntryStack stack) { diff --git a/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java b/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java index 7b906c167..2ce018d1e 100644 --- a/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java +++ b/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java @@ -25,7 +25,7 @@ package me.shedaniel.rei.impl; import com.mojang.math.Matrix4f; import com.mojang.serialization.DataResult; -import dev.architectury.utils.value.BooleanValue; +import me.shedaniel.architectury.utils.BooleanValue; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.ClientHelper; @@ -39,17 +39,16 @@ import me.shedaniel.rei.api.client.gui.widgets.*; import me.shedaniel.rei.api.client.plugins.REIClientPlugin; import me.shedaniel.rei.api.client.registry.screen.ClickArea; import me.shedaniel.rei.api.client.view.ViewSearchBuilder; -import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.plugins.PluginManager; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.components.events.GuiEventListener; +import net.minecraft.data.models.blockstates.PropertyDispatch; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.TooltipFlag; -import org.apache.commons.lang3.function.TriFunction; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -74,10 +73,9 @@ public final class ClientInternals { private static Function> favoriteEntryFromJson = (object) -> throwNotSetup(); private static Function clickAreaHandlerResult = (result) -> throwNotSetup(); private static BiFunction<@Nullable Point, Collection, Tooltip> tooltipProvider = (point, texts) -> throwNotSetup(); - private static TriFunction tooltipContextProvider = (point, texts, search) -> throwNotSetup(); + private static PropertyDispatch.TriFunction tooltipContextProvider = (point, texts, search) -> throwNotSetup(); private static Supplier> jeiCompatMods = ClientInternals::throwNotSetup; private static Supplier builtinClientPlugin = ClientInternals::throwNotSetup; - private static Function, TooltipComponent> missingTooltip = (stacks) -> throwNotSetup(); private static T throwNotSetup() { throw new AssertionError("REI Internals have not been initialized!"); @@ -164,10 +162,6 @@ public final class ClientInternals { return clientPluginManager.get(); } - public static TooltipComponent createMissingTooltip(List stacks) { - return missingTooltip.apply(stacks); - } - public static FilteringRuleTypeRegistry getFilteringRuleTypeRegistry() { return filteringRuleTypeRegistry.get(); } -- cgit