mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-15 04:05:50 -07:00
Added new Configuration classes
By: Dinnerbone <dinnerbone@dinnerbone.com>
This commit is contained in:
@@ -2,8 +2,10 @@ package org.bukkit.plugin;
|
||||
|
||||
import com.avaje.ebean.EbeanServer;
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
import org.bukkit.util.config.Configuration;
|
||||
|
||||
@@ -33,6 +35,29 @@ public interface Plugin extends CommandExecutor {
|
||||
* @return The configuration
|
||||
*/
|
||||
public Configuration getConfiguration();
|
||||
|
||||
/**
|
||||
* Gets a {@link FileConfiguration} for this plugin, read through "config.yml"
|
||||
* <p>
|
||||
* If there is a default config.yml embedded in this plugin, it will be provided
|
||||
* as a default for this Configuration.
|
||||
*
|
||||
* @return Plugin configuration
|
||||
*/
|
||||
public FileConfiguration getConfig();
|
||||
|
||||
/**
|
||||
* Gets an embedded resource in this plugin
|
||||
*
|
||||
* @param filename Filename of the resource
|
||||
* @return File if found, otherwise null
|
||||
*/
|
||||
public InputStream getResource(String filename);
|
||||
|
||||
/**
|
||||
* Saves the {@link FileConfiguration} retrievable by {@link #getConfig()}.
|
||||
*/
|
||||
public void saveConfig();
|
||||
|
||||
/**
|
||||
* Gets the associated PluginLoader responsible for this plugin
|
||||
|
@@ -7,17 +7,27 @@ import com.avaje.ebean.config.ServerConfig;
|
||||
import com.avaje.ebeaninternal.api.SpiEbeanServer;
|
||||
import com.avaje.ebeaninternal.server.ddl.DdlGenerator;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.PluginCommand;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginDescriptionFile;
|
||||
import org.bukkit.plugin.PluginLoader;
|
||||
import org.bukkit.util.config.Configuration;
|
||||
import org.yaml.snakeyaml.error.YAMLException;
|
||||
|
||||
/**
|
||||
* Represents a Java plugin
|
||||
@@ -34,6 +44,8 @@ public abstract class JavaPlugin implements Plugin {
|
||||
private Configuration config = null;
|
||||
private boolean naggable = true;
|
||||
private EbeanServer ebean = null;
|
||||
private FileConfiguration newConfig = null;
|
||||
private File configFile = null;
|
||||
|
||||
public JavaPlugin() {}
|
||||
|
||||
@@ -99,10 +111,32 @@ public abstract class JavaPlugin implements Plugin {
|
||||
* the configuration file will have no values.
|
||||
*
|
||||
* @return The configuration.
|
||||
* @deprecated See the new
|
||||
*/
|
||||
@Deprecated
|
||||
public Configuration getConfiguration() {
|
||||
return config;
|
||||
}
|
||||
|
||||
public FileConfiguration getConfig() {
|
||||
return newConfig;
|
||||
}
|
||||
|
||||
public void saveConfig() {
|
||||
try {
|
||||
newConfig.save(configFile);
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(JavaPlugin.class.getName()).log(Level.SEVERE, "Could not save config to " + configFile, ex);
|
||||
}
|
||||
}
|
||||
|
||||
public InputStream getResource(String filename) {
|
||||
if (filename == null) {
|
||||
throw new IllegalArgumentException("Filename cannot be null");
|
||||
}
|
||||
|
||||
return getClassLoader().getResourceAsStream(filename);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the ClassLoader which holds this plugin
|
||||
@@ -153,8 +187,17 @@ public abstract class JavaPlugin implements Plugin {
|
||||
this.description = description;
|
||||
this.dataFolder = dataFolder;
|
||||
this.classLoader = classLoader;
|
||||
this.config = new Configuration(new File(dataFolder, "config.yml"));
|
||||
this.configFile = new File(dataFolder, "config.yml");
|
||||
this.config = new Configuration(configFile);
|
||||
this.config.load();
|
||||
this.newConfig = YamlConfiguration.loadConfiguration(configFile);
|
||||
|
||||
InputStream defConfigStream = getResource("config.yml");
|
||||
if (defConfigStream != null) {
|
||||
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
|
||||
|
||||
newConfig.setDefaults(defConfig);
|
||||
}
|
||||
|
||||
if (description.isDatabaseEnabled()) {
|
||||
ServerConfig db = new ServerConfig();
|
||||
|
@@ -15,6 +15,9 @@ import java.util.jar.JarFile;
|
||||
import java.util.logging.Level;
|
||||
import java.util.regex.Pattern;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||
import org.bukkit.configuration.serialization.ConfigurationSerialization;
|
||||
import org.bukkit.configuration.serialization.SerializableAs;
|
||||
import org.bukkit.event.CustomEventListener;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.Listener;
|
||||
@@ -229,6 +232,20 @@ public class JavaPluginLoader implements PluginLoader {
|
||||
public void setClass(final String name, final Class<?> clazz) {
|
||||
if (!classes.containsKey(name)) {
|
||||
classes.put(name, clazz);
|
||||
|
||||
if (ConfigurationSerializable.class.isAssignableFrom(clazz)) {
|
||||
Class<? extends ConfigurationSerializable> serializable = (Class<? extends ConfigurationSerializable>)clazz;
|
||||
ConfigurationSerialization.registerClass(serializable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void removeClass(String name) {
|
||||
Class<?> clazz = classes.remove(name);
|
||||
|
||||
if (ConfigurationSerializable.class.isAssignableFrom(clazz)) {
|
||||
Class<? extends ConfigurationSerializable> serializable = (Class<? extends ConfigurationSerializable>)clazz;
|
||||
ConfigurationSerialization.unregisterClass(serializable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -973,7 +990,7 @@ public class JavaPluginLoader implements PluginLoader {
|
||||
Set<String> names = loader.getClasses();
|
||||
|
||||
for (String name : names) {
|
||||
classes.remove(name);
|
||||
removeClass(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user