This commit is contained in:
Roman Zhuravlev 2023-07-16 20:06:05 +05:00
commit e443249166
29 changed files with 2887 additions and 0 deletions

51
bukkit/pom.xml Normal file
View file

@ -0,0 +1,51 @@
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>parent</artifactId>
<groupId>org.zhdev.varioutil</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>bukkit</artifactId>
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>io</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>common</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.20-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot</artifactId>
<version>1.20-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>minecraft-server</artifactId>
<version>1.20-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,15 @@
package org.zhdev.config;
import org.bukkit.plugin.Plugin;
import java.io.File;
public interface BukkitConfig extends Config {
File load(Plugin plugin, String path) throws ConfigException;
File load(Plugin plugin) throws ConfigException;
File saveIfEmpty(Plugin plugin, String path) throws ConfigException;
File saveIfEmpty(Plugin plugin) throws ConfigException;
}

View file

@ -0,0 +1,77 @@
package org.zhdev.config;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
import org.bukkit.configuration.serialization.ConfigurationSerialization;
import org.bukkit.plugin.Plugin;
import org.yaml.snakeyaml.nodes.Node;
import org.zhdev.util.ResourceUtils;
import java.io.File;
import java.io.InputStream;
import java.util.LinkedHashMap;
import java.util.Map;
public class BukkitYamlConfig extends YamlConfig implements BukkitConfig {
public BukkitYamlConfig(String key) {
super(key);
}
public BukkitYamlConfig() {}
@Override
protected Object constructHandle(Node keyNode, Node valueNode, String key, Object value) {
if (value instanceof Map) {
Map<?, ?> raw = (Map<?, ?>) valueNode;
if (raw.containsKey(ConfigurationSerialization.SERIALIZED_TYPE_KEY)) {
Map<String, Object> map = new LinkedHashMap<>(raw.size());
for (Map.Entry<?, ?> entry : raw.entrySet()) {
map.put(String.valueOf(entry.getKey()), entry.getValue());
}
return ConfigurationSerialization.deserializeObject(map);
}
}
return super.constructHandle(keyNode, valueNode, key, value);
}
@Override
protected Node representHandle(String key, Object value) {
if (value instanceof ConfigurationSerializable) {
ConfigurationSerializable serializable = (ConfigurationSerializable) value;
Map<String, Object> values = new LinkedHashMap<>();
values.put(ConfigurationSerialization.SERIALIZED_TYPE_KEY, ConfigurationSerialization.getAlias(serializable.getClass()));
values.putAll(serializable.serialize());
return REPRESENTER.represent(values);
}
return super.representHandle(key, value);
}
@Override
public File load(Plugin plugin, String path) throws ConfigException {
ClassLoader classLoader = plugin.getClass().getClassLoader();
InputStream stream = ResourceUtils.getResource(path, classLoader);
if (stream != null) {
load(stream);
}
File file = load(plugin.getDataFolder().getPath() + File.separatorChar + path);
if (file.length() == 0) {
ResourceUtils.saveResource(path, file, classLoader);
}
return load(plugin.getDataFolder().getPath() + File.separatorChar + path);
}
@Override
public File load(Plugin plugin) throws ConfigException {
return load(plugin, key);
}
@Override
public File saveIfEmpty(Plugin plugin, String path) throws ConfigException {
return saveIfEmpty(plugin.getDataFolder().getPath() + File.separatorChar + path);
}
@Override
public File saveIfEmpty(Plugin plugin) throws ConfigException {
return saveIfEmpty(plugin, key);
}
}