From 2aca034c8c8787fef1dac41dfd7a2c4f57b502d2 Mon Sep 17 00:00:00 2001 From: Brettflan Date: Fri, 9 Mar 2012 14:44:18 -0600 Subject: [PATCH] If plugin failed to load correctly for various reasons, it could end up wiping the board or faction list. This should now be prevented. An example: if you loaded 1.6.6 (not 1.6.6b) on CB 1.1-R6 or newer, it would trigger an exception at startup and cause this problem. --- src/com/massivecraft/factions/P.java | 12 +++++++++--- src/com/massivecraft/factions/zcore/MPlugin.java | 8 ++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/com/massivecraft/factions/P.java b/src/com/massivecraft/factions/P.java index 7754bd3c..0a71305f 100644 --- a/src/com/massivecraft/factions/P.java +++ b/src/com/massivecraft/factions/P.java @@ -73,7 +73,8 @@ public class P extends MPlugin public void onEnable() { if ( ! preEnable()) return; - + this.loadSuccessful = false; + // Load Conf from disk Conf.load(); FPlayers.i.loadFromDisc(); @@ -107,6 +108,7 @@ public class P extends MPlugin getServer().getPluginManager().registerEvents(serverListener, this); postEnable(); + this.loadSuccessful = true; } @Override @@ -125,8 +127,12 @@ public class P extends MPlugin @Override public void onDisable() { - Board.save(); - Conf.save(); + // only save data if plugin actually completely loaded successfully + if (this.loadSuccessful) + { + Board.save(); + Conf.save(); + } EssentialsFeatures.unhookChat(); if (AutoLeaveTask != null) { diff --git a/src/com/massivecraft/factions/zcore/MPlugin.java b/src/com/massivecraft/factions/zcore/MPlugin.java index 5e246a7a..6595ad9c 100644 --- a/src/com/massivecraft/factions/zcore/MPlugin.java +++ b/src/com/massivecraft/factions/zcore/MPlugin.java @@ -37,6 +37,7 @@ public abstract class MPlugin extends JavaPlugin public Gson gson; private Integer saveTask = null; private boolean autoSave = true; + protected boolean loadSuccessful = false; public boolean getAutoSave() {return this.autoSave;} public void setAutoSave(boolean val) {this.autoSave = val;} @@ -84,7 +85,8 @@ public abstract class MPlugin extends JavaPlugin { saveTask = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new SaveTask(this), saveTicks, saveTicks); } - + + loadSuccessful = true; return true; } @@ -100,7 +102,9 @@ public abstract class MPlugin extends JavaPlugin this.getServer().getScheduler().cancelTask(saveTask); saveTask = null; } - EM.saveAllToDisc(); + // only save data if plugin actually loaded successfully + if (loadSuccessful) + EM.saveAllToDisc(); log("Disabled"); }