aboutsummaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-12-09 02:08:13 +0800
committershedaniel <daniel@shedaniel.me>2022-12-12 21:02:31 +0800
commit640704af10d61dede9a88728b1d51438233e8cdb (patch)
treee92f0207583da13c5ccc21dc47dc831956828ab2 /api
parent47ae69cd83f36aa5acf4bfedf9bbccc0eec34b67 (diff)
downloadRoughlyEnoughItems-640704af10d61dede9a88728b1d51438233e8cdb.tar.gz
RoughlyEnoughItems-640704af10d61dede9a88728b1d51438233e8cdb.tar.bz2
RoughlyEnoughItems-640704af10d61dede9a88728b1d51438233e8cdb.zip
Add Hint Onboarding, Fix #1156, Fix #1256
Diffstat (limited to 'api')
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java3
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteMenuEntry.java15
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/search/method/CharacterUnpackingInputMethod.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/search/method/InputMethod.java10
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java12
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);
}