#1002: Add Player Profile API

Slight changes may occur as this API is stabilized.

This PR is based on work previously done by DerFrZocker in #938.

By: blablubbabc <lukas@wirsindwir.de>
This commit is contained in:
CraftBukkit/Spigot
2022-02-03 09:25:39 +11:00
parent 0190fa68f9
commit 08891a2e2f
11 changed files with 1159 additions and 6 deletions

View File

@@ -0,0 +1,39 @@
package org.bukkit.craftbukkit.configuration;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.UUID;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
/**
* Utilities related to the serialization and deserialization of {@link ConfigurationSerializable}s.
*/
public final class ConfigSerializationUtil {
public static String getString(Map<?, ?> map, String key, boolean nullable) {
return getObject(String.class, map, key, nullable);
}
public static UUID getUuid(Map<?, ?> map, String key, boolean nullable) {
String uuidString = ConfigSerializationUtil.getString(map, key, nullable);
if (uuidString == null) return null;
return UUID.fromString(uuidString);
}
public static <T> T getObject(Class<T> clazz, Map<?, ?> map, String key, boolean nullable) {
final Object object = map.get(key);
if (clazz.isInstance(object)) {
return clazz.cast(object);
}
if (object == null) {
if (!nullable) {
throw new NoSuchElementException(map + " does not contain " + key);
}
return null;
}
throw new IllegalArgumentException(key + "(" + object + ") is not a valid " + clazz);
}
private ConfigSerializationUtil() {
}
}