diff options
author | KHobbits <rob@khobbits.co.uk> | 2011-09-24 21:41:28 +0100 |
---|---|---|
committer | KHobbits <rob@khobbits.co.uk> | 2011-09-24 21:41:28 +0100 |
commit | c681befdf2053ca32e7613c91bb1699a48a905ab (patch) | |
tree | ccb5a0b63844cd2cdf6f5b7cfe4c7a8610434b77 | |
parent | 87dc671a0d4837313b388e7fcce72e7718fb06d2 (diff) | |
parent | 2db256678ec1412a0e76bae88bd07a44f21a8139 (diff) | |
download | Essentials-c681befdf2053ca32e7613c91bb1699a48a905ab.tar Essentials-c681befdf2053ca32e7613c91bb1699a48a905ab.tar.gz Essentials-c681befdf2053ca32e7613c91bb1699a48a905ab.tar.lz Essentials-c681befdf2053ca32e7613c91bb1699a48a905ab.tar.xz Essentials-c681befdf2053ca32e7613c91bb1699a48a905ab.zip |
Merge remote branch 'remotes/ess/groupmanager' into essmaster
4 files changed, 59 insertions, 5 deletions
diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 7e2e65c4d..cded4ceb8 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -18,4 +18,5 @@ v 1.1: - Fixed wasteful updating of perms on a manload.
- manulistp now accepts an additional + to list ALL Superperms effective permissions (/manulistp <name> +).
- manucheckp also outputs superperms results.
- - Removed superperms update on plugins unloading. Unneeded and created undesired lag on shutdown.
\ No newline at end of file + - Removed superperms update on plugins unloading. Unneeded and created undesired lag on shutdown.
+ - Added a BukkitPermsUpdateTask to only update superperms once on a load/reload.
\ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 2b0a493d4..13d99ddc1 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -7,6 +7,7 @@ package org.anjocaido.groupmanager; import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler; import org.anjocaido.groupmanager.permissions.BukkitPermissions; import org.anjocaido.groupmanager.utils.GroupManagerPermissions; +import org.anjocaido.groupmanager.Tasks.BukkitPermsUpdateTask; import org.anjocaido.groupmanager.data.Variables; import org.anjocaido.groupmanager.data.User; import org.anjocaido.groupmanager.data.Group; @@ -62,7 +63,7 @@ public class GroupManager extends JavaPlugin { @Override public void onDisable() { - isLoaded = false; + setLoaded(false); if (worldsHolder != null) { worldsHolder.saveChanges(); @@ -96,11 +97,30 @@ public class GroupManager extends JavaPlugin { BukkitPermissions = new BukkitPermissions(this); enableScheduler(); - isLoaded = true; + + /* + * Schedule a Bukiit Permissions update for 1 tick later. + * All plugins will be loaded by then + */ + + if (getServer().getScheduler().scheduleSyncDelayedTask(this, new BukkitPermsUpdateTask(),1) == -1) + GroupManager.logger.severe("Could not schedule superperms Update."); + else + setLoaded(true); + + //setLoaded(true); System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!"); } - public InputStream getResourceAsStream(String fileName) { + public static boolean isLoaded() { + return isLoaded; + } + + public static void setLoaded(boolean isLoaded) { + GroupManager.isLoaded = isLoaded; + } + + public InputStream getResourceAsStream(String fileName) { return this.getClassLoader().getResourceAsStream(fileName); } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/Tasks/BukkitPermsUpdateTask.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/Tasks/BukkitPermsUpdateTask.java new file mode 100644 index 000000000..27951112d --- /dev/null +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/Tasks/BukkitPermsUpdateTask.java @@ -0,0 +1,27 @@ +package org.anjocaido.groupmanager.Tasks;
+
+import org.anjocaido.groupmanager.GroupManager;
+
+/*
+ *
+ * Created by ElgarL
+ *
+ */
+
+public class BukkitPermsUpdateTask implements Runnable {
+
+ public BukkitPermsUpdateTask() {
+ super();
+ }
+
+ @Override
+ public void run() {
+ // Signal loaded and update BukkitPermissions.
+ GroupManager.setLoaded(true);
+ GroupManager.BukkitPermissions.updateAllPlayers();
+
+ GroupManager.logger.info("Bukkit Permissions Updated!");
+
+ }
+
+}
\ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index 02a1f4d5c..d3fbdbe55 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -107,7 +107,7 @@ public class BukkitPermissions { }
public void updatePermissions(Player player, String world) {
- if (player == null || !GroupManager.isLoaded) {
+ if (player == null || !GroupManager.isLoaded()) {
return;
}
@@ -237,6 +237,9 @@ public class BukkitPermissions { @Override
public void onPlayerQuit(PlayerQuitEvent event) {
+ if (!GroupManager.isLoaded())
+ return;
+
attachments.remove(event.getPlayer());
}
@@ -250,6 +253,9 @@ public class BukkitPermissions { @Override
public void onPluginEnable(PluginEnableEvent event) {
+ if (!GroupManager.isLoaded())
+ return;
+
collectPermissions();
updateAllPlayers();
}
|