From 9ac712d208b613a79cb12499842bfc1eb4429184 Mon Sep 17 00:00:00 2001 From: j502647092 Date: Tue, 11 Aug 2015 16:06:25 +0800 Subject: [PATCH] first commit... Signed-off-by: j502647092 --- .gitignore | 39 +++++++ .project | 23 ++++ pom.xml | 47 ++++++++ .../SimpleEssential/SimpleEssential.java | 32 ++++++ .../command/SimpleEssentialCommand.java | 33 ++++++ .../SimpleEssential/config/Config.java | 55 +++++++++ .../SimpleEssential/config/ConfigLoader.java | 102 +++++++++++++++++ .../SimpleEssential/config/FileConfig.java | 108 ++++++++++++++++++ 8 files changed, 439 insertions(+) create mode 100644 .gitignore create mode 100644 .project create mode 100644 pom.xml create mode 100644 src/cn/citycraft/SimpleEssential/SimpleEssential.java create mode 100644 src/cn/citycraft/SimpleEssential/command/SimpleEssentialCommand.java create mode 100644 src/cn/citycraft/SimpleEssential/config/Config.java create mode 100644 src/cn/citycraft/SimpleEssential/config/ConfigLoader.java create mode 100644 src/cn/citycraft/SimpleEssential/config/FileConfig.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e6df42b --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +# Eclipse stuff +/.classpath +/.settings + +# netbeans +/nbproject + +# we use maven! +/build.xml + +# maven +/target +/repo + +# vim +.*.sw[a-p] + +# various other potential build files +/build +/bin +/dist +/manifest.mf + +/world + +# Mac filesystem dust +*.DS_Store + +# intellij +*.iml +*.ipr +*.iws +.idea/ + +# Project Stuff +/src/main/resources/Soulbound + +# Atlassian Stuff +/atlassian-ide-plugin.xml \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..5f37931 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + SimpleEssential + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jdt.core.javanature + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..b6161f8 --- /dev/null +++ b/pom.xml @@ -0,0 +1,47 @@ + + 4.0.0 + cn.CityCraft + SimpleEssential + 0.0.1-SNAPSHOT + SimpleEssential + + ${project.name} + src + + + src + + **/*.java + + + + + + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/groups/public/ + + + + + org.spigotmc + spigot-api + jar + 1.8.3-R0.1-SNAPSHOT + + + + UTF-8 + + \ No newline at end of file diff --git a/src/cn/citycraft/SimpleEssential/SimpleEssential.java b/src/cn/citycraft/SimpleEssential/SimpleEssential.java new file mode 100644 index 0000000..bbc64ba --- /dev/null +++ b/src/cn/citycraft/SimpleEssential/SimpleEssential.java @@ -0,0 +1,32 @@ +/** + * + */ +package cn.citycraft.SimpleEssential; + +import org.bukkit.plugin.java.JavaPlugin; + +import cn.citycraft.SimpleEssential.config.Config; + +/** + * @author 蒋天蓓 + * 2015年8月11日下午3:29:32 + * TODO + */ +public class SimpleEssential extends JavaPlugin { + + @Override + public void onLoad() { + Config.load(this, "1.0"); + } + + @Override + public void onDisable() { + this.getLogger().info(""); + } + + @Override + public void onEnable() { + this.getLogger().info(""); + } + +} diff --git a/src/cn/citycraft/SimpleEssential/command/SimpleEssentialCommand.java b/src/cn/citycraft/SimpleEssential/command/SimpleEssentialCommand.java new file mode 100644 index 0000000..4ea871a --- /dev/null +++ b/src/cn/citycraft/SimpleEssential/command/SimpleEssentialCommand.java @@ -0,0 +1,33 @@ +/** + * + */ +package cn.citycraft.SimpleEssential.command; + +import java.util.List; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; + +import cn.citycraft.SimpleEssential.SimpleEssential; + +/** + * @author 蒋天蓓 + * 2015年8月11日下午4:00:35 + * TODO + */ +public class SimpleEssentialCommand extends SimpleEssential { + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + // TODO 自动生成的方法存根 + return super.onCommand(sender, command, label, args); + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, + String[] args) { + // TODO 自动生成的方法存根 + return super.onTabComplete(sender, command, alias, args); + } + +} diff --git a/src/cn/citycraft/SimpleEssential/config/Config.java b/src/cn/citycraft/SimpleEssential/config/Config.java new file mode 100644 index 0000000..aec8e3e --- /dev/null +++ b/src/cn/citycraft/SimpleEssential/config/Config.java @@ -0,0 +1,55 @@ +package cn.citycraft.SimpleEssential.config; + +import java.io.File; +import java.io.IOException; + +import org.bukkit.plugin.Plugin; + +public class Config extends ConfigLoader { + private static String CONFIG_NAME = "config.yml"; + private static FileConfig instance; + private static File file; + + public Config(Plugin p) { + super(p, CONFIG_NAME); + file = new File(p.getDataFolder(), CONFIG_NAME); + instance = super.getInstance(); + } + + public Config(Plugin p, String ver) { + super(p, CONFIG_NAME, ver); + instance = super.getInstance(); + } + + public static void load(Plugin p) { + new Config(p); + } + + public static void load(Plugin p, String ver) { + new Config(p, ver); + } + + public static FileConfig getInstance() { + return instance; + } + + public static String getMessage(String path) { + String message = instance.getString(path); + if (message != null) + message = message.replaceAll("&", "§"); + return message; + } + + public static String[] getStringArray(String path) { + return instance.getStringList(path).toArray(new String[0]); + } + + public static void save(){ + try { + instance.save(file); + } catch (IOException e) { + saveError(file); + e.printStackTrace(); + } + } +} diff --git a/src/cn/citycraft/SimpleEssential/config/ConfigLoader.java b/src/cn/citycraft/SimpleEssential/config/ConfigLoader.java new file mode 100644 index 0000000..d85fce3 --- /dev/null +++ b/src/cn/citycraft/SimpleEssential/config/ConfigLoader.java @@ -0,0 +1,102 @@ +package cn.citycraft.SimpleEssential.config; + +import java.io.File; +import java.io.IOException; + +import org.bukkit.plugin.Plugin; + +public class ConfigLoader extends FileConfig { + protected static FileConfig config; + protected static boolean tip = true; + protected static Plugin plugin; + + public ConfigLoader(Plugin p, File file) { + ConfigLoader.plugin = p; + config = loadConfig(p, file, null, true); + } + + public ConfigLoader(Plugin p, File file, boolean res) { + ConfigLoader.plugin = p; + config = loadConfig(p, file, null, res); + } + + public ConfigLoader(Plugin p, File file, String ver) { + ConfigLoader.plugin = p; + config = loadConfig(p, file, ver, true); + } + + public ConfigLoader(Plugin p, File file, String ver, boolean res) { + ConfigLoader.plugin = p; + config = loadConfig(p, file, ver, res); + } + + public ConfigLoader(Plugin p, String filename) { + ConfigLoader.plugin = p; + config = loadConfig(p, new File(p.getDataFolder(), filename), null, + true); + } + + public ConfigLoader(Plugin p, String filename, boolean res) { + ConfigLoader.plugin = p; + config = loadConfig(p, new File(p.getDataFolder(), filename), null, res); + } + + public ConfigLoader(Plugin p, String filename, String ver) { + ConfigLoader.plugin = p; + config = loadConfig(p, new File(p.getDataFolder(), filename), ver, true); + } + + public ConfigLoader(Plugin p, String filename, String ver, boolean res) { + ConfigLoader.plugin = p; + config = loadConfig(p, new File(p.getDataFolder(), filename), ver, true); + } + + public static FileConfig getInstance() { + return config; + } + + public FileConfig loadConfig(Plugin p, File file, String ver, boolean res) { + tip = res ; + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + p.getLogger().info("创建新的文件夹" + file.getParentFile().getAbsolutePath() + "..."); + } + if (!file.exists()) { + fileCreate(p, file, res); + } else { + if (ver != null) { + FileConfig configcheck = init(file); + String version = configcheck.getString("version"); + if (version == null || !version.equals(ver)) { + p.saveResource(file.getName(), true); + p.getLogger().warning( + "配置文件: " + file.getName() + " 版本过低 正在升级..."); + } + } + } + if (tip) + p.getLogger().info( + "载入配置文件: " + file.getName() + + (ver != null ? " 版本: " + ver : "")); + return init(file); + } + + private void fileCreate(Plugin p, File file, boolean res) { + if (res) { + p.saveResource(file.getName(), false); + } else { + try { + p.getLogger().info("创建新的配置文件" + file.getAbsolutePath() + "..."); + file.createNewFile(); + } catch (IOException e) { + p.getLogger().info("配置文件" + file.getName() + "创建失败..."); + e.printStackTrace(); + } + } + } + + public static void saveError(File file) { + plugin.getLogger().info("配置文件" + file.getName() + "保存错误..."); + } + +} diff --git a/src/cn/citycraft/SimpleEssential/config/FileConfig.java b/src/cn/citycraft/SimpleEssential/config/FileConfig.java new file mode 100644 index 0000000..a9a9f96 --- /dev/null +++ b/src/cn/citycraft/SimpleEssential/config/FileConfig.java @@ -0,0 +1,108 @@ +package cn.citycraft.SimpleEssential.config; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.Reader; +import java.io.Writer; +import java.util.logging.Level; + +import org.apache.commons.lang.Validate; +import org.bukkit.Bukkit; +import org.bukkit.configuration.Configuration; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.configuration.file.YamlConstructor; +import org.bukkit.configuration.file.YamlRepresenter; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.representer.Representer; + +import com.google.common.base.Charsets; +import com.google.common.io.Files; + +/** + * An implementation of {@link Configuration} which saves all files in Yaml. Note that this + * implementation is not synchronized. + */ +public class FileConfig extends YamlConfiguration { + + public static FileConfig init(File file) { + return FileConfig.loadConfiguration(file); + } + + public static FileConfig loadConfiguration(File file) { + Validate.notNull(file, "File cannot be null"); + FileConfig config = new FileConfig(); + try { + config.load(file); + } catch (FileNotFoundException ex) { + } catch (IOException ex) { + Bukkit.getLogger().log(Level.SEVERE, "Cannot load " + file, ex); + } catch (InvalidConfigurationException ex) { + Bukkit.getLogger().log(Level.SEVERE, "Cannot load " + file, ex); + } + return config; + } + + protected final DumperOptions yamlOptions = new DumperOptions(); + + protected final Representer yamlRepresenter = new YamlRepresenter(); + + protected final Yaml yaml = new Yaml(new YamlConstructor(), yamlRepresenter, yamlOptions); + + @Override + public void load(File file) throws FileNotFoundException, IOException, InvalidConfigurationException { + Validate.notNull(file, "File cannot be null"); + final FileInputStream stream = new FileInputStream(file); + load(new InputStreamReader(stream, Charsets.UTF_8)); + } + + @Override + public void load(Reader reader) throws IOException, InvalidConfigurationException { + BufferedReader input = (reader instanceof BufferedReader) ? (BufferedReader) reader + : new BufferedReader(reader); + StringBuilder builder = new StringBuilder(); + try { + String line; + while ((line = input.readLine()) != null) { + builder.append(line); + builder.append('\n'); + } + } finally { + input.close(); + } + loadFromString(builder.toString()); + } + + @Override + public void save(File file) throws IOException { + Validate.notNull(file, "File cannot be null"); + Files.createParentDirs(file); + String data = saveToString(); + Writer writer = new OutputStreamWriter(new FileOutputStream(file), Charsets.UTF_8); + try { + writer.write(data); + } finally { + writer.close(); + } + } + + @Override + public String saveToString() { + yamlOptions.setIndent(options().indent()); + yamlOptions.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + yamlRepresenter.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + String header = buildHeader(); + String dump = yaml.dump(getValues(false)); + if (dump.equals(BLANK_CONFIG)) { + dump = ""; + } + return header + dump; + } +}