forked from public-mirrors/ConfigLib
Add serialization support for Bukkit's ConfigurationSerializable types
parent
f70c44f159
commit
3ea01199db
@ -0,0 +1,31 @@
|
|||||||
|
package de.exlll.configlib;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.file.YamlConstructor;
|
||||||
|
import org.bukkit.configuration.file.YamlRepresenter;
|
||||||
|
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||||
|
import org.yaml.snakeyaml.DumperOptions;
|
||||||
|
import org.yaml.snakeyaml.Yaml;
|
||||||
|
|
||||||
|
final class BukkitConfigurationSerializableSerializer
|
||||||
|
implements Serializer<ConfigurationSerializable, String> {
|
||||||
|
static BukkitConfigurationSerializableSerializer DEFAULT =
|
||||||
|
new BukkitConfigurationSerializableSerializer();
|
||||||
|
private final Yaml yaml;
|
||||||
|
|
||||||
|
BukkitConfigurationSerializableSerializer() {
|
||||||
|
DumperOptions options = new DumperOptions();
|
||||||
|
options.setIndent(2);
|
||||||
|
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
||||||
|
this.yaml = new Yaml(new YamlConstructor(), new YamlRepresenter(), options);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String serialize(ConfigurationSerializable element) {
|
||||||
|
return yaml.dump(element);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ConfigurationSerializable deserialize(String element) {
|
||||||
|
return yaml.load(element);
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +1,31 @@
|
|||||||
package de.exlll.configlib;
|
package de.exlll.configlib;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An empty plugin class that loads this library and its dependencies.
|
* The plugin class that loads this library and its dependencies.
|
||||||
*/
|
*/
|
||||||
public final class ConfigLib extends JavaPlugin {}
|
public final class ConfigLib extends JavaPlugin {
|
||||||
|
/**
|
||||||
|
* A {@code YamlConfigurationProperties} object that provides serializers for several Bukkit
|
||||||
|
* classes like {@link ItemStack} and other {@link ConfigurationSerializable} types.
|
||||||
|
* <p>
|
||||||
|
* You can configure these properties further by creating a new builder using the
|
||||||
|
* {@code toBuilder()} method of this object.
|
||||||
|
*/
|
||||||
|
public static final YamlConfigurationProperties BUKKIT_DEFAULT_PROPERTIES =
|
||||||
|
initializeBukkitDefaultProperties();
|
||||||
|
|
||||||
|
private static YamlConfigurationProperties initializeBukkitDefaultProperties() {
|
||||||
|
return YamlConfigurationProperties
|
||||||
|
.newBuilder()
|
||||||
|
.addSerializerByCondition(
|
||||||
|
type -> type instanceof Class<?> cls &&
|
||||||
|
ConfigurationSerializable.class.isAssignableFrom(cls),
|
||||||
|
BukkitConfigurationSerializableSerializer.DEFAULT
|
||||||
|
)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue