From 3aba996e97bd5bb90e65ed3166f3666d9122a729 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Thu, 29 Dec 2011 14:52:42 +0000 Subject: Changed the way events are raised to prevent variable corruption. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../org/anjocaido/groupmanager/GroupManager.java | 19 ------------------- .../groupmanager/events/GroupManagerEvent.java | 22 +++++++++++++++++++++- .../events/GroupManagerEventHandler.java | 8 +++----- 4 files changed, 26 insertions(+), 26 deletions(-) (limited to 'EssentialsGroupManager/src') diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index dc661f7c3..3929b9d22 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -92,4 +92,5 @@ v 1.8: - Fixed 'manucheckp' returning a null for the searched node when it's a group/subgroup. - manpromote and mandemote now correctly send the notification to the console if the command was issued there. - Expanded GlobalGroups.yml and Groups.yml to include Towny permissions. - - Delayed GroupManager events so Superperms will be fully updated before plugins receive the events. \ No newline at end of file + - Delayed GroupManager events so Superperms will be fully updated before plugins receive the events. + - Changed the way events are raised to prevent variable corruption. \ 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 5ced1fb47..c0e9ef2f8 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -1837,25 +1837,6 @@ public class GroupManager extends JavaPlugin { return match; } - - /** - * Triggers all GroupManager events for other plugins to see. - * Schedules events for 1 tick later to allow GM to finish populating super perms. - * - * @param event - */ - public static void callEvent(final GroupManagerEvent event) { - - if (Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Bukkit.getPluginManager().getPlugin("GroupManager"), new Runnable() { - - @Override - public void run() { - Bukkit.getServer().getPluginManager().callEvent(event); - } - }) == -1) - GroupManager.logger.warning("Could not schedule GM Event."); - - } /** * @return the config diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GroupManagerEvent.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GroupManagerEvent.java index 856abbc28..0834b3ada 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GroupManagerEvent.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GroupManagerEvent.java @@ -1,6 +1,8 @@ package org.anjocaido.groupmanager.events; +import org.anjocaido.groupmanager.GroupManager; +import org.bukkit.Bukkit; import org.bukkit.event.Event; /** @@ -13,10 +15,28 @@ public abstract class GroupManagerEvent extends Event { * */ private static final long serialVersionUID = 8790362185329926951L; - + protected GroupManagerEvent(String name) { super(name); } + /** + * Triggers all GroupManager events for other plugins to see. + * Schedules events for 1 tick later to allow GM to finish populating super perms. + * + * @param event + */ + public void schedule(final GroupManagerEvent event) { + + if (Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Bukkit.getPluginManager().getPlugin("GroupManager"), new Runnable() { + + @Override + public void run() { + Bukkit.getServer().getPluginManager().callEvent(event); + } + }, 1) == -1) + GroupManager.logger.warning("Could not schedule GM Event."); + } + } \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GroupManagerEventHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GroupManagerEventHandler.java index 83cac393d..3c077b6c6 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GroupManagerEventHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GroupManagerEventHandler.java @@ -1,11 +1,9 @@ package org.anjocaido.groupmanager.events; -import org.anjocaido.groupmanager.GroupManager; import org.anjocaido.groupmanager.data.Group; import org.anjocaido.groupmanager.data.User; - /** * @author ElgarL * @@ -13,13 +11,13 @@ import org.anjocaido.groupmanager.data.User; public class GroupManagerEventHandler { protected static void callEvent(GMGroupEvent event) { - GroupManager.callEvent(event); + event.schedule(event); } protected static void callEvent(GMUserEvent event) { - GroupManager.callEvent(event); + event.schedule(event); } protected static void callEvent(GMSystemEvent event) { - GroupManager.callEvent(event); + event.schedule(event); } public static void callEvent(Group group, GMGroupEvent.Action action) { -- cgit v1.2.3