From 0a048d6553da31338a25ec41844ff81bc50fa700 Mon Sep 17 00:00:00 2001 From: Brettflan Date: Fri, 9 Mar 2012 14:44:17 -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 c4b8b569..d0926510 100644 --- a/src/com/massivecraft/factions/P.java +++ b/src/com/massivecraft/factions/P.java @@ -78,7 +78,8 @@ public class P extends MPlugin public void onEnable() { if ( ! preEnable()) return; - + this.loadSuccessful = false; + // Load Conf from disk Conf.load(); FPlayers.i.loadFromDisc(); @@ -112,6 +113,7 @@ public class P extends MPlugin getServer().getPluginManager().registerEvents(serverListener, this); postEnable(); + this.loadSuccessful = true; } @Override @@ -133,8 +135,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 b5254da5..b16c42c7 100644 --- a/src/com/massivecraft/factions/zcore/MPlugin.java +++ b/src/com/massivecraft/factions/zcore/MPlugin.java @@ -34,6 +34,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;} @@ -81,7 +82,8 @@ public abstract class MPlugin extends JavaPlugin { saveTask = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new SaveTask(this), saveTicks, saveTicks); } - + + loadSuccessful = true; return true; } @@ -97,7 +99,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"); }