minecraft-src/com/mojang/realmsclient/util/JsonUtils.java
2025-07-04 02:00:41 +03:00

98 lines
3.2 KiB
Java

package com.mojang.realmsclient.util;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.mojang.util.UndashedUuid;
import java.util.Date;
import java.util.UUID;
import java.util.function.Function;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import org.jetbrains.annotations.Nullable;
@Environment(EnvType.CLIENT)
public class JsonUtils {
public static <T> T getRequired(String key, JsonObject json, Function<JsonObject, T> output) {
JsonElement jsonElement = json.get(key);
if (jsonElement == null || jsonElement.isJsonNull()) {
throw new IllegalStateException("Missing required property: " + key);
} else if (!jsonElement.isJsonObject()) {
throw new IllegalStateException("Required property " + key + " was not a JsonObject as espected");
} else {
return (T)output.apply(jsonElement.getAsJsonObject());
}
}
@Nullable
public static <T> T getOptional(String key, JsonObject json, Function<JsonObject, T> output) {
JsonElement jsonElement = json.get(key);
if (jsonElement == null || jsonElement.isJsonNull()) {
return null;
} else if (!jsonElement.isJsonObject()) {
throw new IllegalStateException("Required property " + key + " was not a JsonObject as espected");
} else {
return (T)output.apply(jsonElement.getAsJsonObject());
}
}
public static String getRequiredString(String key, JsonObject json) {
String string = getStringOr(key, json, null);
if (string == null) {
throw new IllegalStateException("Missing required property: " + key);
} else {
return string;
}
}
public static String getRequiredStringOr(String key, JsonObject json, String defaultValue) {
return getStringOr(key, json, defaultValue);
}
@Nullable
public static String getStringOr(String key, JsonObject json, @Nullable String defaultValue) {
JsonElement jsonElement = json.get(key);
if (jsonElement != null) {
return jsonElement.isJsonNull() ? defaultValue : jsonElement.getAsString();
} else {
return defaultValue;
}
}
@Nullable
public static UUID getUuidOr(String key, JsonObject json, @Nullable UUID defaultValue) {
String string = getStringOr(key, json, null);
return string == null ? defaultValue : UndashedUuid.fromStringLenient(string);
}
public static int getIntOr(String key, JsonObject json, int defaultValue) {
JsonElement jsonElement = json.get(key);
if (jsonElement != null) {
return jsonElement.isJsonNull() ? defaultValue : jsonElement.getAsInt();
} else {
return defaultValue;
}
}
public static long getLongOr(String key, JsonObject json, long defaultValue) {
JsonElement jsonElement = json.get(key);
if (jsonElement != null) {
return jsonElement.isJsonNull() ? defaultValue : jsonElement.getAsLong();
} else {
return defaultValue;
}
}
public static boolean getBooleanOr(String key, JsonObject json, boolean defaultValue) {
JsonElement jsonElement = json.get(key);
if (jsonElement != null) {
return jsonElement.isJsonNull() ? defaultValue : jsonElement.getAsBoolean();
} else {
return defaultValue;
}
}
public static Date getDateOr(String key, JsonObject json) {
JsonElement jsonElement = json.get(key);
return jsonElement != null ? new Date(Long.parseLong(jsonElement.getAsString())) : new Date();
}
}