From d311fc126ff1cadc75c7a5ac5866ab4298ac34e1 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 16 Apr 2011 13:36:09 +0000 Subject: [PATCH] [trunk] New mechanism for upgrading config files. This will be extended in the future. New worth.yml autogenerated from the previous values. git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1215 e251c2fe-e539-e718-e476-b85c1f46cddb --- .../com/earth2me/essentials/Essentials.java | 6 +- .../essentials/EssentialsUpgrade.java | 74 ++++ Essentials/src/worth.yml | 365 ++++++++++-------- 3 files changed, 274 insertions(+), 171 deletions(-) create mode 100644 Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index fc7ab229e..1dba4c403 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -51,7 +51,6 @@ public class Essentials extends JavaPlugin public Essentials() throws IOException { - loadClasses(); } public static void ensureEnabled(Server server) @@ -62,10 +61,6 @@ public class Essentials extends JavaPlugin pm.enablePlugin(ess); } - public static void loadClasses() - { - } - public static Essentials getStatic() { return staticThis; @@ -100,6 +95,7 @@ public class Essentials extends JavaPlugin public void onEnable() { setStatic(); + new EssentialsUpgrade(this.getDescription().getVersion(), this.getDataFolder()); confList = new ArrayList(); settings = new Settings(this.getDataFolder()); confList.add(settings); diff --git a/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java b/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java new file mode 100644 index 000000000..36d83e716 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java @@ -0,0 +1,74 @@ +package com.earth2me.essentials; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +public class EssentialsUpgrade { + private static boolean alreadyRun = false; + private final static Logger logger = Logger.getLogger("Minecraft"); + + EssentialsUpgrade(String version, File dataFolder) { + if (alreadyRun == true) return; + alreadyRun = true; + moveWorthValuesToWorthYml(dataFolder); + } + + private void moveWorthValuesToWorthYml(File dataFolder) { + try { + File configFile = new File(dataFolder, "config.yml"); + EssentialsConf conf = new EssentialsConf(configFile); + conf.load(); + Worth w = new Worth(dataFolder); + for (Material mat : Material.values()) { + int id = mat.getId(); + double value = conf.getDouble("worth-"+id, Double.NaN); + if (!Double.isNaN(value)) { + w.setPrice(new ItemStack(mat, 1, (short)0, (byte)0), value); + } + } + removeLinesFromConfig(configFile,"\\s*#?\\s*worth-[0-9]+.*", "# Worth values have been moved to worth.yml"); + } catch (Throwable e) { + logger.log(Level.WARNING, "Error while upgrading the files", e); + } + } + + private void removeLinesFromConfig(File file, String regex, String info) throws Exception { + boolean needUpdate = false; + BufferedReader br = new BufferedReader(new FileReader(file)); + File tempFile = File.createTempFile("essentialsupgrade", ".yml"); + BufferedWriter bw = new BufferedWriter(new FileWriter(tempFile)); + do { + String line = br.readLine(); + if (line == null) break; + if (line.matches(regex)) { + if (needUpdate == false && info != null) { + bw.write(info, 0, info.length()); + bw.newLine(); + } + needUpdate = true; + } else { + if (line.endsWith("\r\n")) { + bw.write(line, 0, line.length() - 2); + } else if (line.endsWith("\r") || line.endsWith("\n")) { + bw.write(line, 0, line.length() - 1); + } else { + bw.write(line, 0, line.length()); + } + bw.newLine(); + } + } while(true); + br.close(); + bw.close(); + if (needUpdate) { + file.renameTo(new File(file.getParentFile(), file.getName().concat("."+System.currentTimeMillis()+".upgraded"))); + tempFile.renameTo(file); + } + } +} diff --git a/Essentials/src/worth.yml b/Essentials/src/worth.yml index bb38091c1..47194af07 100644 --- a/Essentials/src/worth.yml +++ b/Essentials/src/worth.yml @@ -1,166 +1,199 @@ -worth-1: 2 -worth-2: 1 -worth-3: 1 -worth-4: 1 -worth-5: 1 -worth-6: 2 -worth-7: 1000 -worth-8: 1 -worth-9: 1 -worth-10: 1 -worth-11: 1 -worth-12: 1 -worth-13: 1 -worth-14: 45 -worth-15: 18 -worth-16: 15 -worth-17: 2 -worth-18: 0 -worth-19: 80 -worth-20: 10 -worth-21: 100 -worth-22: 500 -worth-23: 9 -worth-24: 5 -worth-25: 40 -worth-35: 8 -worth-37: 2 -worth-38: 2 -worth-39: 2 -worth-40: 2 -worth-41: 400 -worth-42: 160 -worth-43: 3 -worth-44: 3 -worth-45: 40 -worth-46: 10000 -worth-47: 20 -worth-48: 90 -worth-49: 130 -worth-50: 1 -worth-53: 8 -worth-54: 15 -worth-55: 7 -worth-56: 200 -worth-57: 1500 -worth-58: 20 -worth-60: 3 -worth-61: 10 -worth-65: 10 -worth-66: 40 -worth-67: 22 -worth-68: 1 -worth-69: 7 -worth-70: 10 -worth-71: 15 -worth-72: 10 -worth-73: 30 -worth-74: 30 -worth-76: 10 -worth-77: 7 -worth-81: 10 -worth-82: 3 -worth-83: 15 -worth-85: 10 -worth-86: 50 -worth-91: 60 -worth-256: 40 -worth-257: 80 -worth-258: 60 -worth-260: 10 -worth-261: 75 -worth-262: 10 -worth-263: 3 -worth-264: 230 -worth-265: 20 -worth-266: 50 -worth-267: 60 -worth-268: 10 -worth-269: 10 -worth-270: 10 -worth-271: 10 -worth-272: 40 -worth-273: 40 -worth-274: 40 -worth-275: 40 -worth-276: 700 -worth-277: 350 -worth-278: 1000 -worth-279: 1000 -worth-280: 1 -worth-281: 6 -worth-282: 30 -worth-283: 200 -worth-284: 220 -worth-285: 300 -worth-286: 300 -worth-287: 5 -worth-288: 3 -worth-289: 19 -worth-290: 10 -worth-291: 40 -worth-292: 60 -worth-293: 600 -worth-294: 200 -worth-295: 5 -worth-296: 9 -worth-297: 20 -worth-298: 20 -worth-299: 40 -worth-300: 20 -worth-301: 17 -worth-302: 40 -worth-303: 40 -worth-304: 50 -worth-305: 30 -worth-306: 120 -worth-307: 300 -worth-308: 250 -worth-309: 50 -worth-310: 1500 -worth-311: 3000 -worth-312: 2200 -worth-313: 1500 -worth-314: 300 -worth-315: 600 -worth-316: 400 -worth-317: 250 -worth-320: 6 -worth-321: 50 -worth-322: 500 -worth-323: 10 -worth-324: 30 -worth-325: 10 -worth-326: 10 -worth-327: 30 -worth-328: 20 -worth-329: 100 -worth-330: 35 -worth-331: 1 -worth-332: 1 -worth-333: 5 -worth-334: 10 -worth-335: 15 -worth-336: 10 -worth-337: 8 -worth-338: 10 -worth-339: 30 -worth-340: 35 -worth-341: 50 -worth-342: 35 -worth-343: 30 -worth-344: 1 -worth-345: 50 -worth-346: 25 -worth-347: 100 -worth-348: 11 -worth-349: 5 -worth-350: 20 -worth-351: 10 -worth-352: 10 -worth-353: 5 -worth-354: 100 -worth-355: 25 -worth-356: 10 -worth-2256: 950 -worth-2257: 1000 \ No newline at end of file +worth: + stonebutton: + '0': 7.0 + wood: 1.0 + arrow: 10.0 + diamondpickaxe: 1000.0 + rawfish: 5.0 + minecart: 20.0 + leatherchestplate: 40.0 + storageminecart: 35.0 + leaves: + '0': 0.0 + feather: 3.0 + goldchestplate: 600.0 + mushroomsoup: 30.0 + bread: 20.0 + stationarywater: + '0': 1.0 + workbench: 20.0 + stonehoe: 40.0 + brownmushroom: 2.0 + wool: + '0': 8.0 + mossycobblestone: 90.0 + diamondhoe: 600.0 + woodsword: 10.0 + torch: + '0': 1.0 + grass: 1.0 + poweredminecart: 30.0 + snowball: 1.0 + goldenapple: 500.0 + leatherleggings: 20.0 + log: + '0': 2.0 + diamondaxe: 1000.0 + slimeball: 50.0 + fence: 10.0 + stonespade: 40.0 + claybrick: 10.0 + noteblock: 40.0 + ironaxe: 60.0 + coalore: 15.0 + clayball: 8.0 + fishingrod: 25.0 + ironhoe: 60.0 + goldrecord: 950.0 + ironpickaxe: 80.0 + irondoor: 35.0 + bucket: 10.0 + redrose: 2.0 + grilledpork: 6.0 + gravel: 1.0 + wooddoor: 30.0 + chainmailhelmet: 40.0 + ironchestplate: 300.0 + diamondblock: 1500.0 + diamondhelmet: 1500.0 + goldhelmet: 300.0 + redstonetorchon: + '0': 10.0 + ironspade: 40.0 + furnace: + '0': 10.0 + ironsword: 60.0 + dispenser: + '0': 9.0 + woodaxe: 10.0 + seeds: 5.0 + painting: 50.0 + woodplate: + '0': 10.0 + redstoneore: 30.0 + diamondspade: 350.0 + waterbucket: 10.0 + water: + '0': 1.0 + bedrock: 1000.0 + irondoorblock: + '0': 15.0 + goldhoe: 200.0 + sand: 1.0 + goldsword: 200.0 + stoneaxe: 40.0 + bookshelf: 20.0 + ironblock: 160.0 + jackolantern: + '0': 60.0 + boat: 5.0 + diamondchestplate: 3000.0 + redstonewire: + '0': 7.0 + redmushroom: 2.0 + string: 5.0 + stoneplate: + '0': 10.0 + wallsign: + '0': 1.0 + cactus: + '0': 10.0 + sulphur: 19.0 + rails: + '0': 40.0 + ironore: 18.0 + leatherhelmet: 20.0 + stone: 2.0 + egg: 1.0 + diamondore: 200.0 + woodhoe: 10.0 + goldleggings: 400.0 + chainmailleggings: 50.0 + yellowflower: 2.0 + ironhelmet: 120.0 + obsidian: 130.0 + dirt: 1.0 + leather: 10.0 + leatherboots: 17.0 + lever: + '0': 7.0 + cobblestone: 1.0 + cake: 100.0 + woodstairs: + '0': 8.0 + ironingot: 20.0 + goldore: 45.0 + pumpkin: + '0': 50.0 + bed: 25.0 + watch: 100.0 + ironleggings: 250.0 + sign: 10.0 + doublestep: + '0': 3.0 + woodpickaxe: 10.0 + stonepickaxe: 40.0 + chainmailboots: 30.0 + diamondleggings: 2200.0 + cookedfish: 20.0 + saddle: 100.0 + cobblestonestairs: + '0': 22.0 + tnt: 10000.0 + glowingredstoneore: 30.0 + apple: 10.0 + woodspade: 10.0 + goldingot: 50.0 + diode: 10.0 + soil: + '0': 3.0 + clay: 3.0 + goldblock: 400.0 + stick: 1.0 + paper: 30.0 + brick: 40.0 + stationarylava: + '0': 1.0 + chest: 15.0 + sandstone: 5.0 + goldpickaxe: 300.0 + compass: 50.0 + sugarcane: 10.0 + diamondsword: 700.0 + goldboots: 250.0 + sponge: 80.0 + stonesword: 40.0 + coal: + '0': 3.0 + goldaxe: 300.0 + bone: 10.0 + diamond: 230.0 + glass: 10.0 + goldspade: 220.0 + lapisblock: 500.0 + lavabucket: 30.0 + wheat: 9.0 + ladder: + '0': 10.0 + sugarcaneblock: + '0': 15.0 + bowl: 6.0 + chainmailchestplate: 40.0 + sapling: + '0': 2.0 + diamondboots: 1500.0 + lapisore: 100.0 + lava: + '0': 1.0 + milkbucket: 15.0 + redstone: 1.0 + greenrecord: 1000.0 + inksack: + '0': 10.0 + glowstonedust: 11.0 + book: 35.0 + bow: 75.0 + ironboots: 50.0 + step: + '0': 3.0 + sugar: 5.0