From c80c345c4fa3def0536bcecbc2223f202af79415 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sun, 28 Mar 2021 01:44:38 +0800 Subject: Complete custom favorites Signed-off-by: shedaniel --- .../rei/api/client/favorites/FavoriteEntry.java | 17 ++++++---- .../api/client/favorites/FavoriteEntryType.java | 6 ++-- .../rei/api/client/gui/DisplayRenderer.java | 3 +- .../shedaniel/rei/api/common/entry/EntryStack.java | 39 ---------------------- .../me/shedaniel/rei/impl/ClientInternals.java | 12 +++---- 5 files changed, 21 insertions(+), 56 deletions(-) (limited to 'api/src') diff --git a/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java b/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java index da68b4d39..9ca3b960e 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java @@ -23,10 +23,10 @@ package me.shedaniel.rei.api.client.favorites; -import com.google.gson.JsonObject; import me.shedaniel.rei.api.client.gui.Renderer; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.impl.ClientInternals; +import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.Nullable; @@ -40,12 +40,12 @@ public abstract class FavoriteEntry { public static final String TYPE_KEY = "type"; private final UUID uuid = UUID.randomUUID(); - public static FavoriteEntry delegate(Supplier supplier, @Nullable Supplier toJson) { + public static FavoriteEntry delegate(Supplier supplier, @Nullable Supplier toJson) { return ClientInternals.delegateFavoriteEntry(supplier, toJson); } @Nullable - public static FavoriteEntry fromJson(JsonObject object) { + public static FavoriteEntry read(CompoundTag object) { return ClientInternals.favoriteEntryFromJson(object); } @@ -57,9 +57,9 @@ public abstract class FavoriteEntry { return entry == null || entry.isInvalid(); } - public JsonObject toJson(JsonObject object) { - object.addProperty(TYPE_KEY, getType().toString()); - return Objects.requireNonNull(Objects.requireNonNull(FavoriteEntryType.registry().get(getType())).toJson(this, object)); + public CompoundTag save(CompoundTag tag) { + tag.putString(TYPE_KEY, getType().toString()); + return Objects.requireNonNull(Objects.requireNonNull(FavoriteEntryType.registry().get(getType())).save(this, tag)); } public UUID getUuid() { @@ -94,7 +94,10 @@ public abstract class FavoriteEntry { @Override public int hashCode() { - return hashIgnoreAmount(); + int result = 1; + result = 31 * result + getType().hashCode(); + result = 31 * result + hashIgnoreAmount(); + return result; } public abstract boolean isSame(FavoriteEntry other); 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 c341581a9..b3e79bf4f 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 @@ -23,11 +23,11 @@ package me.shedaniel.rei.api.client.favorites; -import com.google.gson.JsonObject; import me.shedaniel.rei.api.client.plugins.REIClientPlugin; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.plugins.PluginManager; import me.shedaniel.rei.api.common.registry.Reloadable; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.ApiStatus; @@ -45,11 +45,11 @@ public interface FavoriteEntryType { return PluginManager.getClientInstance().get(FavoriteEntryType.Registry.class); } - T fromJson(JsonObject object); + T read(CompoundTag object); T fromArgs(Object... args); - JsonObject toJson(T entry, JsonObject object); + CompoundTag save(T entry, CompoundTag tag); @ApiStatus.NonExtendable interface Registry extends Reloadable { diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/DisplayRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/DisplayRenderer.java index 29d3593bc..adfb9b087 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/DisplayRenderer.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/DisplayRenderer.java @@ -37,7 +37,8 @@ public abstract class DisplayRenderer extends AbstractRenderer { } @Override - public @Nullable Tooltip getTooltip(Point mouse) { + @Nullable + public Tooltip getTooltip(Point mouse) { return null; } } 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 ce7201d51..cd3defe83 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 @@ -23,10 +23,6 @@ package me.shedaniel.rei.api.common.entry; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.mojang.serialization.Dynamic; -import com.mojang.serialization.JsonOps; import me.shedaniel.math.Point; import me.shedaniel.rei.api.client.config.ConfigObject; import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer; @@ -41,11 +37,8 @@ import me.shedaniel.rei.impl.Internals; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.NbtOps; -import net.minecraft.nbt.TagParser; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.GsonHelper; import net.minecraft.util.Unit; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -69,38 +62,6 @@ public interface EntryStack extends TextRepresentable, Renderer { return of(type.getDefinition(), value); } - @ApiStatus.Internal - static EntryStack readFromJson(JsonElement jsonElement) { - try { - JsonObject obj = jsonElement.getAsJsonObject(); - EntryType type = EntryType.deferred(new ResourceLocation(GsonHelper.getAsString(obj, "type"))); - EntrySerializer serializer = type.getDefinition().getSerializer(); - if (serializer != null && serializer.supportReading()) { - Object o = serializer.read(TagParser.parseTag(obj.toString())); - return EntryStack.of(type, o); - } - } catch (Exception e) { - e.printStackTrace(); - } - return EntryStack.empty(); - } - - @ApiStatus.Internal - @Nullable - default JsonElement toJson() { - try { - EntrySerializer serializer = getDefinition().getSerializer(); - if (serializer != null && serializer.supportSaving()) { - JsonObject object = Dynamic.convert(NbtOps.INSTANCE, JsonOps.INSTANCE, serializer.save(this, getValue())).getAsJsonObject(); - object.addProperty("type", getType().getId().toString()); - return object; - } - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - static EntryStack read(CompoundTag tag) { EntryDefinition definition = EntryTypeRegistry.getInstance().get(new ResourceLocation(tag.getString("type"))); EntrySerializer serializer = definition.getSerializer(); 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 1daaa568d..50e512c49 100644 --- a/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java +++ b/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java @@ -23,7 +23,6 @@ package me.shedaniel.rei.impl; -import com.google.gson.JsonObject; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.ClientHelper; @@ -37,6 +36,7 @@ import me.shedaniel.rei.api.client.view.ViewSearchBuilder; import me.shedaniel.rei.api.common.plugins.PluginManager; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; import net.minecraft.resources.ResourceLocation; @@ -57,8 +57,8 @@ public final class ClientInternals { private static Supplier viewSearchBuilder = ClientInternals::throwNotSetup; private static Supplier> clientPluginManager = ClientInternals::throwNotSetup; private static Supplier> emptyEntryRenderer = ClientInternals::throwNotSetup; - private static BiFunction, Supplier, FavoriteEntry> delegateFavoriteEntry = (supplier, toJson) -> throwNotSetup(); - private static Function favoriteEntryFromJson = (object) -> throwNotSetup(); + private static BiFunction, Supplier, FavoriteEntry> delegateFavoriteEntry = (supplier, toJson) -> throwNotSetup(); + 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 Supplier> jeiCompatMods = ClientInternals::throwNotSetup; @@ -117,12 +117,12 @@ public final class ClientInternals { return tooltipProvider.apply(point, texts); } - public static FavoriteEntry delegateFavoriteEntry(Supplier supplier, Supplier toJoin) { + public static FavoriteEntry delegateFavoriteEntry(Supplier supplier, Supplier toJoin) { return delegateFavoriteEntry.apply(supplier, toJoin); } - public static FavoriteEntry favoriteEntryFromJson(JsonObject object) { - return favoriteEntryFromJson.apply(object); + public static FavoriteEntry favoriteEntryFromJson(CompoundTag tag) { + return favoriteEntryFromJson.apply(tag); } public static EntryRenderer getEmptyEntryRenderer() { -- cgit