mirror of
https://github.com/JEFF-Media-GbR/ChestSort.git
synced 2024-08-31 01:49:39 +02:00
Merge pull request #19 from JEFF-Media-GbR/config-updater
Config updater
This commit is contained in:
commit
b8510b36fe
2
pom.xml
2
pom.xml
|
@ -47,7 +47,7 @@
|
|||
<relocations>
|
||||
<relocation>
|
||||
<pattern>org.bstats</pattern>
|
||||
<shadedPattern>de.jeffclan.utils</shadedPattern>
|
||||
<shadedPattern>de.jeffclan.JeffChestSort</shadedPattern>
|
||||
</relocation>
|
||||
</relocations>
|
||||
</configuration>
|
||||
|
|
|
@ -1,10 +1,103 @@
|
|||
package de.jeffclan.JeffChestSort;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
import java.util.Scanner;
|
||||
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
import de.jeffclan.utils.Utils;
|
||||
|
||||
public class JeffChestSortConfigUpdater {
|
||||
|
||||
// Admins hate config updates. Just relax and let ChestSort update to the newest config version
|
||||
JeffChestSortPlugin plugin;
|
||||
|
||||
public JeffChestSortConfigUpdater(JeffChestSortPlugin jeffChestSortPlugin) {
|
||||
this.plugin = jeffChestSortPlugin;
|
||||
}
|
||||
|
||||
// Admins hate config updates. Just relax and let ChestSort update to the newest
|
||||
// config version
|
||||
// Don't worry! Your changes will be kept
|
||||
|
||||
void updateConfig() {
|
||||
|
||||
if(plugin.debug) plugin.getLogger().info("rename config.yml -> config.old.yml");
|
||||
Utils.renameFileInPluginDir(plugin, "config.yml", "config.old.yml");
|
||||
if(plugin.debug) plugin.getLogger().info("saving new config.yml");
|
||||
plugin.saveDefaultConfig();
|
||||
|
||||
File oldConfigFile = new File(plugin.getDataFolder().getAbsolutePath() + File.separator + "config.old.yml");
|
||||
FileConfiguration oldConfig = new YamlConfiguration();
|
||||
|
||||
try {
|
||||
oldConfig.load(oldConfigFile);
|
||||
} catch (IOException | InvalidConfigurationException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Map<String, Object> oldValues = oldConfig.getValues(false);
|
||||
|
||||
// Read default config to keep comments
|
||||
ArrayList<String> linesInDefaultConfig = new ArrayList<String>();
|
||||
try {
|
||||
|
||||
Scanner scanner = new Scanner(
|
||||
new File(plugin.getDataFolder().getAbsolutePath() + File.separator + "config.yml"));
|
||||
while (scanner.hasNextLine()) {
|
||||
linesInDefaultConfig.add(scanner.nextLine() + "");
|
||||
}
|
||||
scanner.close();
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
ArrayList<String> newLines = new ArrayList<String>();
|
||||
for (String line : linesInDefaultConfig) {
|
||||
String newline = line;
|
||||
if (!line.startsWith("config-version:")) { // dont replace config-version
|
||||
for (String node : oldValues.keySet()) {
|
||||
if (line.startsWith(node + ":")) {
|
||||
|
||||
String quotes = "";
|
||||
|
||||
if (node.equalsIgnoreCase("sorting-method")) // needs single quotes
|
||||
quotes = "'";
|
||||
if (node.startsWith("message-")) // needs double quotes
|
||||
quotes = "\"";
|
||||
|
||||
newline = node + ": " + quotes + oldValues.get(node).toString() + quotes;
|
||||
if(plugin.debug) plugin.getLogger().info("Updating config node " + newline);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
newLines.add(newline);
|
||||
}
|
||||
|
||||
FileWriter fw;
|
||||
String[] linesArray = newLines.toArray(new String[linesInDefaultConfig.size()]);
|
||||
try {
|
||||
fw = new FileWriter(plugin.getDataFolder().getAbsolutePath() + File.separator + "config.yml");
|
||||
for (int i = 0; i < linesArray.length; i++) {
|
||||
fw.write(linesArray[i] + "\n");
|
||||
}
|
||||
fw.close();
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// Utils.renameFileInPluginDir(plugin, "config.yml.default", "config.yml");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -104,7 +104,11 @@ public class JeffChestSortPlugin extends JavaPlugin {
|
|||
// use the default values later on
|
||||
} else if (getConfig().getInt("config-version", 0) != currentConfigVersion) {
|
||||
showOldConfigWarning();
|
||||
usingMatchingConfig = false;
|
||||
JeffChestSortConfigUpdater configUpdater = new JeffChestSortConfigUpdater(this);
|
||||
configUpdater.updateConfig();
|
||||
configUpdater = null;
|
||||
usingMatchingConfig = true;
|
||||
//createConfig();
|
||||
}
|
||||
|
||||
createDirectories();
|
||||
|
@ -151,13 +155,16 @@ public class JeffChestSortPlugin extends JavaPlugin {
|
|||
|
||||
private void showOldConfigWarning() {
|
||||
getLogger().warning("========================================================");
|
||||
getLogger().warning("YOU ARE USING AN OLD CONFIG FILE!");
|
||||
getLogger().warning("This is not a problem, as ChestSort will just use the");
|
||||
getLogger().warning("default settings for unset values. However, if you want");
|
||||
getLogger().warning("to configure the new options, please go to");
|
||||
getLogger().warning("https://www.chestsort.de and replace your config.yml");
|
||||
getLogger().warning("with the new one. You can then insert your old changes");
|
||||
getLogger().warning("into the new file.");
|
||||
// getLogger().warning("YOU ARE USING AN OLD CONFIG FILE!");
|
||||
// getLogger().warning("This is not a problem, as ChestSort will just use the");
|
||||
// getLogger().warning("default settings for unset values. However, if you want");
|
||||
// getLogger().warning("to configure the new options, please go to");
|
||||
// getLogger().warning("https://www.chestsort.de and replace your config.yml");
|
||||
// getLogger().warning("with the new one. You can then insert your old changes");
|
||||
// getLogger().warning("into the new file.");
|
||||
getLogger().warning("You were using an old config file. ChestSort has");
|
||||
getLogger().warning("updated the file to the newest version. Your changes");
|
||||
getLogger().warning("have been kept.");
|
||||
getLogger().warning("========================================================");
|
||||
}
|
||||
|
||||
|
@ -314,7 +321,7 @@ public class JeffChestSortPlugin extends JavaPlugin {
|
|||
}
|
||||
|
||||
// Isn't there a smarter way to find all the 9** files in the .jar?
|
||||
String[] defaultCategories = { "900-weapons", "905-tools", "910-valuables", "920-armor", "930-brewing", "940-food",
|
||||
String[] defaultCategories = { "900-weapons", "905-common-tools", "907-other-tools", "909-food", "910-valuables", "920-armor-and-arrows", "930-brewing",
|
||||
"950-redstone", "960-wood", "970-stone", "980-plants", "981-corals","_ReadMe - Category files" };
|
||||
|
||||
// Delete all files starting with 9..
|
||||
|
|
|
@ -2,9 +2,12 @@ package de.jeffclan.utils;
|
|||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import de.jeffclan.JeffChestSort.JeffChestSortPlugin;
|
||||
|
||||
public class Utils {
|
||||
|
||||
// We need this to write the category files inside the .jar to the disk
|
||||
|
@ -32,4 +35,10 @@ public class Utils {
|
|||
public static String shortToStringWithLeadingZeroes(short number) {
|
||||
return String.format("%05d", number);
|
||||
}
|
||||
|
||||
public static void renameFileInPluginDir(JeffChestSortPlugin plugin,String oldName, String newName) {
|
||||
File oldFile = new File(plugin.getDataFolder().getAbsolutePath() + File.separator + oldName);
|
||||
File newFile = new File(plugin.getDataFolder().getAbsolutePath() + File.separator + newName);
|
||||
oldFile.getAbsoluteFile().renameTo(newFile.getAbsoluteFile());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,3 +16,4 @@ sticky=true
|
|||
bow
|
||||
*_sword
|
||||
trident
|
||||
shield
|
19
src/main/resources/categories/905-common-tools.default.txt
Normal file
19
src/main/resources/categories/905-common-tools.default.txt
Normal file
|
@ -0,0 +1,19 @@
|
|||
#
|
||||
# ChestSort Default Category File
|
||||
#
|
||||
# If you want to change this file, rename it.
|
||||
# Please do NOT use file prefixed between 900 and 999 for
|
||||
# your custom files because ChestSort will overwrite them
|
||||
#
|
||||
|
||||
# When sticky is set to true, order the items in this
|
||||
# category exactly as defined in this file.
|
||||
# When set to false, the items are only grouped together
|
||||
# and then sorted according to the other variables
|
||||
# in your sorting-method
|
||||
sticky=true
|
||||
|
||||
*_pickaxe
|
||||
*_axe
|
||||
*_shovel
|
||||
*_hoe
|
|
@ -6,10 +6,13 @@
|
|||
# your custom files because ChestSort will overwrite them
|
||||
#
|
||||
|
||||
*_pickaxe
|
||||
*_shovel
|
||||
*_hoe
|
||||
*_axe
|
||||
# When sticky is set to true, order the items in this
|
||||
# category exactly as defined in this file.
|
||||
# When set to false, the items are only grouped together
|
||||
# and then sorted according to the other variables
|
||||
# in your sorting-method
|
||||
sticky=false
|
||||
|
||||
flint_and_steel
|
||||
fishing_rod
|
||||
compass
|
|
@ -6,6 +6,13 @@
|
|||
# your custom files because ChestSort will overwrite them
|
||||
#
|
||||
|
||||
# When sticky is set to true, order the items in this
|
||||
# category exactly as defined in this file.
|
||||
# When set to false, the items are only grouped together
|
||||
# and then sorted according to the other variables
|
||||
# in your sorting-method
|
||||
sticky=false
|
||||
|
||||
apple
|
||||
baked_potato
|
||||
beef
|
|
@ -6,6 +6,13 @@
|
|||
# your custom files because ChestSort will overwrite them
|
||||
#
|
||||
|
||||
# When sticky is set to true, order the items in this
|
||||
# category exactly as defined in this file.
|
||||
# When set to false, the items are only grouped together
|
||||
# and then sorted according to the other variables
|
||||
# in your sorting-method
|
||||
sticky=false
|
||||
|
||||
diamond
|
||||
emerald
|
||||
diamond_ore
|
||||
|
|
|
@ -6,6 +6,13 @@
|
|||
# your custom files because ChestSort will overwrite them
|
||||
#
|
||||
|
||||
# When sticky is set to true, order the items in this
|
||||
# category exactly as defined in this file.
|
||||
# When set to false, the items are only grouped together
|
||||
# and then sorted according to the other variables
|
||||
# in your sorting-method
|
||||
sticky=false
|
||||
|
||||
turtle_helmet
|
||||
bow
|
||||
arrow
|
||||
|
@ -16,6 +23,5 @@ arrow
|
|||
*_boots
|
||||
spectral_arrow
|
||||
tipped_arrow
|
||||
shield
|
||||
totem_of_undying
|
||||
trident
|
|
@ -6,6 +6,13 @@
|
|||
# your custom files because ChestSort will overwrite them
|
||||
#
|
||||
|
||||
# When sticky is set to true, order the items in this
|
||||
# category exactly as defined in this file.
|
||||
# When set to false, the items are only grouped together
|
||||
# and then sorted according to the other variables
|
||||
# in your sorting-method
|
||||
sticky=false
|
||||
|
||||
ghast_tear
|
||||
potion
|
||||
glass_bottle
|
||||
|
|
|
@ -6,6 +6,13 @@
|
|||
# your custom files because ChestSort will overwrite them
|
||||
#
|
||||
|
||||
# When sticky is set to true, order the items in this
|
||||
# category exactly as defined in this file.
|
||||
# When set to false, the items are only grouped together
|
||||
# and then sorted according to the other variables
|
||||
# in your sorting-method
|
||||
sticky=false
|
||||
|
||||
dispenser
|
||||
note_block
|
||||
sticky_piston
|
||||
|
|
|
@ -6,6 +6,13 @@
|
|||
# your custom files because ChestSort will overwrite them
|
||||
#
|
||||
|
||||
# When sticky is set to true, order the items in this
|
||||
# category exactly as defined in this file.
|
||||
# When set to false, the items are only grouped together
|
||||
# and then sorted according to the other variables
|
||||
# in your sorting-method
|
||||
sticky=false
|
||||
|
||||
*_planks
|
||||
*_sapling
|
||||
*_log
|
||||
|
|
|
@ -6,6 +6,13 @@
|
|||
# your custom files because ChestSort will overwrite them
|
||||
#
|
||||
|
||||
# When sticky is set to true, order the items in this
|
||||
# category exactly as defined in this file.
|
||||
# When set to false, the items are only grouped together
|
||||
# and then sorted according to the other variables
|
||||
# in your sorting-method
|
||||
sticky=false
|
||||
|
||||
stone
|
||||
cobblestone
|
||||
granite
|
||||
|
|
|
@ -6,6 +6,13 @@
|
|||
# your custom files because ChestSort will overwrite them
|
||||
#
|
||||
|
||||
# When sticky is set to true, order the items in this
|
||||
# category exactly as defined in this file.
|
||||
# When set to false, the items are only grouped together
|
||||
# and then sorted according to the other variables
|
||||
# in your sorting-method
|
||||
sticky=false
|
||||
|
||||
grass
|
||||
fern
|
||||
dead_bush
|
||||
|
|
|
@ -6,4 +6,11 @@
|
|||
# your custom files because ChestSort will overwrite them
|
||||
#
|
||||
|
||||
*_coral*
|
||||
# When sticky is set to true, order the items in this
|
||||
# category exactly as defined in this file.
|
||||
# When set to false, the items are only grouped together
|
||||
# and then sorted according to the other variables
|
||||
# in your sorting-method
|
||||
sticky=false
|
||||
|
||||
*_coral* # This should get everything related to corals!
|
Loading…
Reference in New Issue
Block a user