summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2014-05-27 04:50:12 +0100
committerKHobbits <rob@khobbits.co.uk>2014-05-27 04:52:52 +0100
commit4590e7ea26d79bf8e46db302c8da1ea414521cf5 (patch)
treea7257fe2a94b6eae467efa7141d0fdf7407ec3f9
parent2ac1ce4f567d55c7ad2c028cd1cf3961b3c0d150 (diff)
downloadEssentials-4590e7ea26d79bf8e46db302c8da1ea414521cf5.tar
Essentials-4590e7ea26d79bf8e46db302c8da1ea414521cf5.tar.gz
Essentials-4590e7ea26d79bf8e46db302c8da1ea414521cf5.tar.lz
Essentials-4590e7ea26d79bf8e46db302c8da1ea414521cf5.tar.xz
Essentials-4590e7ea26d79bf8e46db302c8da1ea414521cf5.zip
Enforce userdata save on player dispose.
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsConf.java17
-rw-r--r--Essentials/src/com/earth2me/essentials/User.java1
-rw-r--r--Essentials/src/com/earth2me/essentials/UserData.java5
3 files changed, 22 insertions, 1 deletions
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsConf.java b/Essentials/src/com/earth2me/essentials/EssentialsConf.java
index d59ab9e84..ce3d43280 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsConf.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsConf.java
@@ -320,6 +320,10 @@ public class EssentialsConf extends YamlConfiguration
{
try
{
+ if (pendingDiskWrites.get() > 0)
+ {
+ pendingDiskWrites.set(0);
+ }
Future<?> future = delayedSave(configFile);
if (future != null)
{
@@ -336,6 +340,14 @@ public class EssentialsConf extends YamlConfiguration
}
}
+ public synchronized void cleanup()
+ {
+ if (pendingDiskWrites.get() > 0)
+ {
+ forceSave();
+ }
+ }
+
private Future<?> delayedSave(final File file)
{
if (file == null)
@@ -350,7 +362,10 @@ public class EssentialsConf extends YamlConfiguration
return null;
}
- pendingDiskWrites.incrementAndGet();
+ if (pendingDiskWrites.incrementAndGet() < 0)
+ {
+ pendingDiskWrites.set(1);
+ }
Future<?> future = EXECUTOR_SERVICE.submit(new WriteRunner(configFile, data, pendingDiskWrites));
diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java
index 8ca3e18cc..8d35201c1 100644
--- a/Essentials/src/com/earth2me/essentials/User.java
+++ b/Essentials/src/com/earth2me/essentials/User.java
@@ -242,6 +242,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, net.es
{
this.base = new OfflinePlayer(base.getUniqueId(), ess.getServer());
}
+ cleanup();
}
@Override
diff --git a/Essentials/src/com/earth2me/essentials/UserData.java b/Essentials/src/com/earth2me/essentials/UserData.java
index 8678f6f40..a60e2f0dc 100644
--- a/Essentials/src/com/earth2me/essentials/UserData.java
+++ b/Essentials/src/com/earth2me/essentials/UserData.java
@@ -53,6 +53,11 @@ public abstract class UserData extends PlayerExtension implements IConf
ess.getUserMap().removeUser(this.getBase().getName());
}
+ public final void cleanup()
+ {
+ config.cleanup();
+ }
+
@Override
public final void reloadConfig()
{