diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-12-09 02:08:13 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-12-12 21:02:31 +0800 |
| commit | 640704af10d61dede9a88728b1d51438233e8cdb (patch) | |
| tree | e92f0207583da13c5ccc21dc47dc831956828ab2 /api/src/main/java/me | |
| parent | 47ae69cd83f36aa5acf4bfedf9bbccc0eec34b67 (diff) | |
| download | RoughlyEnoughItems-640704af10d61dede9a88728b1d51438233e8cdb.tar.gz RoughlyEnoughItems-640704af10d61dede9a88728b1d51438233e8cdb.tar.bz2 RoughlyEnoughItems-640704af10d61dede9a88728b1d51438233e8cdb.zip | |
Add Hint Onboarding, Fix #1156, Fix #1256
Diffstat (limited to 'api/src/main/java/me')
5 files changed, 43 insertions, 1 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java b/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java index a932071db..f62e3590a 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java @@ -265,6 +265,9 @@ public interface ConfigObject { boolean doDisplayFavoritesTooltip(); + @ApiStatus.Experimental + boolean doDisplayIMEHints(); + boolean doesFastEntryRendering(); boolean doesCacheEntryRendering(); 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 61655c432..35bc5a10c 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,14 +23,29 @@ package me.shedaniel.rei.api.client.favorites; +import dev.architectury.utils.value.BooleanValue; import me.shedaniel.rei.api.client.gui.widgets.Widget; +import me.shedaniel.rei.impl.ClientInternals; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.network.chat.Component; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; +import java.util.List; + @Environment(EnvType.CLIENT) public abstract class FavoriteMenuEntry extends Widget { + @ApiStatus.Experimental + public static FavoriteMenuEntry createSubMenu(Component text, List<FavoriteMenuEntry> entries) { + return ClientInternals.createSubMenuEntry(text, entries); + } + + @ApiStatus.Experimental + public static FavoriteMenuEntry createToggle(Component text, BooleanValue value) { + return ClientInternals.createToggleEntry(text, value); + } + @Nullable @ApiStatus.Internal public Runnable closeMenu = null; 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 f7f1779f8..c27f25dbd 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 @@ -24,6 +24,7 @@ package me.shedaniel.rei.api.client.search.method; import it.unimi.dsi.fastutil.ints.IntList; +import net.minecraft.util.Mth; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -46,7 +47,8 @@ public interface CharacterUnpackingInputMethod extends InputMethod<IntList> { return str.codePoints().mapToObj(c -> { List<ExpendedChar> chars = expendSourceChar(c); if (chars.isEmpty()) return ((char) c) + ""; - String result = chars.get(0).phonemes().stream() + 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) + "")) .collect(Collectors.joining()); if (result.codePointCount(0, result.length()) == 1 && result.codePointAt(0) == c) { 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 fc81acd33..6a19e5ecb 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 @@ -24,6 +24,7 @@ package me.shedaniel.rei.api.client.search.method; import me.shedaniel.rei.api.client.config.ConfigObject; +import me.shedaniel.rei.api.client.favorites.FavoriteMenuEntry; import me.shedaniel.rei.api.common.util.CollectionUtils; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; @@ -151,6 +152,15 @@ public interface InputMethod<T> { */ Component getDescription(); + /** + * Returns the list of menu entries that will be used as options. + * + * @return the list of menu entries that will be used as options + */ + default List<FavoriteMenuEntry> getOptionsMenuEntries() { + return List.of(); + } + record Locale(String code, Component name) {} @FunctionalInterface 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 2f4a8f45c..3b6e62019 100644 --- a/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java +++ b/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java @@ -25,12 +25,14 @@ package me.shedaniel.rei.impl; import com.mojang.math.Matrix4f; import com.mojang.serialization.DataResult; +import dev.architectury.utils.value.BooleanValue; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.ClientHelper; import me.shedaniel.rei.api.client.entry.filtering.FilteringRuleTypeRegistry; import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer; import me.shedaniel.rei.api.client.favorites.FavoriteEntry; +import me.shedaniel.rei.api.client.favorites.FavoriteMenuEntry; import me.shedaniel.rei.api.client.gui.DrawableConsumer; import me.shedaniel.rei.api.client.gui.Renderer; import me.shedaniel.rei.api.client.gui.widgets.*; @@ -70,6 +72,8 @@ public final class ClientInternals { private static Supplier<EntryRenderer<?>> emptyEntryRenderer = ClientInternals::throwNotSetup; private static Supplier<FilteringRuleTypeRegistry> filteringRuleTypeRegistry = ClientInternals::throwNotSetup; private static BiFunction<Supplier<DataResult<FavoriteEntry>>, Supplier<CompoundTag>, FavoriteEntry> delegateFavoriteEntry = (supplier, toJson) -> throwNotSetup(); + private static BiFunction<Component, List<FavoriteMenuEntry>, FavoriteMenuEntry> subMenuEntry = (supplier, toJson) -> throwNotSetup(); + private static BiFunction<Component, BooleanValue, FavoriteMenuEntry> toggleEntry = (supplier, toJson) -> throwNotSetup(); private static Function<CompoundTag, DataResult<FavoriteEntry>> favoriteEntryFromJson = (object) -> throwNotSetup(); private static Function<Boolean, ClickArea.Result> clickAreaHandlerResult = (result) -> throwNotSetup(); private static BiConsumer<List<ClientTooltipComponent>, TooltipComponent> clientTooltipComponentProvider = (tooltip, result) -> throwNotSetup(); @@ -149,6 +153,14 @@ public final class ClientInternals { return delegateFavoriteEntry.apply(supplier, toJoin); } + public static FavoriteMenuEntry createSubMenuEntry(Component name, List<FavoriteMenuEntry> entries) { + return subMenuEntry.apply(name, entries); + } + + public static FavoriteMenuEntry createToggleEntry(Component name, BooleanValue value) { + return toggleEntry.apply(name, value); + } + public static DataResult<FavoriteEntry> favoriteEntryFromJson(CompoundTag tag) { return favoriteEntryFromJson.apply(tag); } |
