diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-03-28 01:44:38 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-03-28 01:44:38 +0800 |
| commit | c80c345c4fa3def0536bcecbc2223f202af79415 (patch) | |
| tree | 26208cfd201227070b546f5f12d260c9c6db9775 /api/src/main/java/me | |
| parent | b11c3866aada638f0ad758ced4068c71e620ce23 (diff) | |
| download | RoughlyEnoughItems-c80c345c4fa3def0536bcecbc2223f202af79415.tar.gz RoughlyEnoughItems-c80c345c4fa3def0536bcecbc2223f202af79415.tar.bz2 RoughlyEnoughItems-c80c345c4fa3def0536bcecbc2223f202af79415.zip | |
Complete custom favorites
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'api/src/main/java/me')
5 files changed, 21 insertions, 56 deletions
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<FavoriteEntry> supplier, @Nullable Supplier<JsonObject> toJson) { + public static FavoriteEntry delegate(Supplier<FavoriteEntry> supplier, @Nullable Supplier<CompoundTag> 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<T extends FavoriteEntry> { 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<REIClientPlugin> { 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<T> extends TextRepresentable, Renderer { return of(type.getDefinition(), value); } - @ApiStatus.Internal - static EntryStack<?> readFromJson(JsonElement jsonElement) { - try { - JsonObject obj = jsonElement.getAsJsonObject(); - EntryType<Object> type = EntryType.deferred(new ResourceLocation(GsonHelper.getAsString(obj, "type"))); - EntrySerializer<Object> 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<T> 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> viewSearchBuilder = ClientInternals::throwNotSetup; private static Supplier<PluginManager<REIClientPlugin>> clientPluginManager = ClientInternals::throwNotSetup; private static Supplier<EntryRenderer<?>> emptyEntryRenderer = ClientInternals::throwNotSetup; - private static BiFunction<Supplier<FavoriteEntry>, Supplier<JsonObject>, FavoriteEntry> delegateFavoriteEntry = (supplier, toJson) -> throwNotSetup(); - private static Function<JsonObject, FavoriteEntry> favoriteEntryFromJson = (object) -> throwNotSetup(); + private static BiFunction<Supplier<FavoriteEntry>, Supplier<CompoundTag>, FavoriteEntry> delegateFavoriteEntry = (supplier, toJson) -> throwNotSetup(); + private static Function<CompoundTag, FavoriteEntry> favoriteEntryFromJson = (object) -> throwNotSetup(); private static Function<Boolean, ClickArea.Result> clickAreaHandlerResult = (result) -> throwNotSetup(); private static BiFunction<@Nullable Point, Collection<Component>, Tooltip> tooltipProvider = (point, texts) -> throwNotSetup(); private static Supplier<List<String>> jeiCompatMods = ClientInternals::throwNotSetup; @@ -117,12 +117,12 @@ public final class ClientInternals { return tooltipProvider.apply(point, texts); } - public static FavoriteEntry delegateFavoriteEntry(Supplier<FavoriteEntry> supplier, Supplier<JsonObject> toJoin) { + public static FavoriteEntry delegateFavoriteEntry(Supplier<FavoriteEntry> supplier, Supplier<CompoundTag> 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 <T> EntryRenderer<T> getEmptyEntryRenderer() { |
