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;
|
||||
|
||||
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
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