diff options
author | snowleo <schneeleo@gmail.com> | 2012-04-26 10:42:48 +0200 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2012-04-26 10:42:48 +0200 |
commit | 810d44dbad59f98786370692a9400a8ae34f4e84 (patch) | |
tree | c2d7b3cd35dac49b997566286888c779d57cccba | |
parent | 14a8092f02c3a506ff71edf8eed7ef299bad65f9 (diff) | |
parent | 14b2af7d7b5698480471e587f1af7af7de73e110 (diff) | |
download | Essentials-810d44dbad59f98786370692a9400a8ae34f4e84.tar Essentials-810d44dbad59f98786370692a9400a8ae34f4e84.tar.gz Essentials-810d44dbad59f98786370692a9400a8ae34f4e84.tar.lz Essentials-810d44dbad59f98786370692a9400a8ae34f4e84.tar.xz Essentials-810d44dbad59f98786370692a9400a8ae34f4e84.zip |
Merge branch 'refs/heads/groupmanager'
9 files changed, 69 insertions, 14 deletions
diff --git a/.classpath b/.classpath index 0683da590..db361119a 100644 --- a/.classpath +++ b/.classpath @@ -3,6 +3,5 @@ <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/bukkit-0.0.1-SNAPSHOT.jar"/>
- <classpathentry kind="lib" path="lib/craftbukkit-0.0.1-SNAPSHOT.jar"/>
<classpathentry kind="lib" path="lib/Permissions3.jar"/>
</classpath>
diff --git a/EssentialsGroupBridge/.classpath b/EssentialsGroupBridge/.classpath index 9330eb06e..ebd606dca 100644 --- a/EssentialsGroupBridge/.classpath +++ b/EssentialsGroupBridge/.classpath @@ -3,7 +3,6 @@ <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="../lib/bukkit.jar"/>
- <classpathentry kind="lib" path="../lib/craftbukkit.jar"/>
<classpathentry combineaccessrules="false" kind="src" path="/EssentialsGroupManager"/>
<classpathentry kind="lib" path="../lib/Permissions3.jar"/>
<classpathentry kind="output" path="bin"/>
diff --git a/EssentialsGroupBridge/.project b/EssentialsGroupBridge/.project index 0780b7dbb..2ea0b05e1 100644 --- a/EssentialsGroupBridge/.project +++ b/EssentialsGroupBridge/.project @@ -10,6 +10,16 @@ <arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value><project>/.externalToolBuilders/GroupBridge.launch</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
diff --git a/EssentialsGroupManager/.classpath b/EssentialsGroupManager/.classpath index 61f808b2d..bc8106503 100644 --- a/EssentialsGroupManager/.classpath +++ b/EssentialsGroupManager/.classpath @@ -2,6 +2,6 @@ <classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="lib" path="../lib/craftbukkit.jar"/>
+ <classpathentry kind="lib" path="../lib/bukkit.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index fcdc1ed9d..4a3c232be 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -180,4 +180,7 @@ v 2.0: - Update all code formatting to use tabs for indentation.
- Stop using our own deprecated methods as we tell others to do.
- Finally remove all deprecated methods.
- - Re-initialize the WorldsHolder on a reload, as un-registering and re-registering a new holder means all plugins have to check for the new service on every quiery.
\ No newline at end of file + - Re-initialize the WorldsHolder on a reload, as un-registering and re-registering a new holder means all plugins have to check for the new service on every quiery.
+ - Prevent null perms getting past the GlobalGroups loader.
+ - Fix forgetting sub groups on a manload.
+ - Allow 'manucheckp' to notify when superperms reports false but it is really negated.
\ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java index 647d729e5..04d9e86be 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java @@ -159,12 +159,14 @@ public class GlobalGroups { if (element instanceof List) {
try {
for (String node : (List<String>) element) {
- newGroup.addPermission(node);
+ if ((node != null) && !node.isEmpty())
+ newGroup.addPermission(node);
}
} catch (ClassCastException ex) {
throw new IllegalArgumentException("Invalid permission node for global group: " + groupName, ex);
}
} else if (element instanceof String) {
+ if ((element != null) && !((String)element).isEmpty())
newGroup.addPermission((String) element);
} else
throw new IllegalArgumentException("Unknown type of permission node for global group: " + groupName);
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 3da9666c3..5f357641a 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -103,13 +103,20 @@ public class GroupManager extends JavaPlugin { } } - if (WorldEvents != null) - WorldEvents = null; + // Remove all attachments before clearing if (BukkitPermissions != null) { BukkitPermissions.removeAllAttachments(); + } + + if (!restarting) { + + if (WorldEvents != null) + WorldEvents = null; + BukkitPermissions = null; + } // EXAMPLE: Custom code, here we just output some info so we can check that all is well @@ -130,6 +137,9 @@ public class GroupManager extends JavaPlugin { selectedWorlds = new HashMap<CommandSender, String>(); lastError = ""; + /* + * Setup our logger if we are not restarting. + */ if (!restarting) { GroupManager.logger.setUseParentHandlers(false); ch = new GMLoggerHandler(); @@ -144,11 +154,17 @@ public class GroupManager extends JavaPlugin { // Load the global groups globalGroups = new GlobalGroups(this); + /* + * Configure the worlds holder. + */ if (!restarting) worldsHolder = new WorldsHolder(this); else worldsHolder.resetWorldsHolder(); + /* + * This should NEVER happen. No idea why it's still here. + */ PluginDescriptionFile pdfFile = this.getDescription(); if (worldsHolder == null) { GroupManager.logger.severe("Can't enable " + pdfFile.getName() + " version " + pdfFile.getVersion() + ", bad loading!"); @@ -156,13 +172,30 @@ public class GroupManager extends JavaPlugin { throw new IllegalStateException("An error ocurred while loading GroupManager"); } - // Set a few defaults (reloads) + /* + * Prevent our registered events from triggering + * updates as we are not fully loaded. + */ setLoaded(false); - // Initialize the world listener and bukkit permissions to handle events. - WorldEvents = new GMWorldListener(this); - BukkitPermissions = new BukkitPermissions(this); + /* + * Initialize the world listener and bukkit permissions + * to handle events if this is a fresh start + * + * else + * + * Reset bukkit perms. + */ + if (!restarting) { + WorldEvents = new GMWorldListener(this); + BukkitPermissions = new BukkitPermissions(this); + } else { + BukkitPermissions.reset(); + } + /* + * Start the scheduler for data saving. + */ enableScheduler(); /* @@ -172,6 +205,9 @@ public class GroupManager extends JavaPlugin { if (getServer().getScheduler().scheduleSyncDelayedTask(this, new BukkitPermsUpdateTask(), 1) == -1) { GroupManager.logger.severe("Could not schedule superperms Update."); + /* + * Flag that we are now loaded and should start processing events. + */ setLoaded(true); } @@ -885,7 +921,7 @@ public class GroupManager extends JavaPlugin { // superperms if (targetPlayer != null) { - sender.sendMessage(ChatColor.YELLOW + "SuperPerms reports Node: " + targetPlayer.hasPermission(args[1])); + sender.sendMessage(ChatColor.YELLOW + "SuperPerms reports Node: " + targetPlayer.hasPermission(args[1]) + ((!targetPlayer.hasPermission(args[1]) && targetPlayer.isPermissionSet(args[1])) ? " (Negated)": "")); } return true; diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java index a9ab4befa..27a7d9a59 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java @@ -62,6 +62,7 @@ public class WorldsHolder { public void resetWorldsHolder() { + worldsData = new HashMap<String, OverloadedWorldHolder>(); mirrorsGroup = new HashMap<String, String>(); mirrorsUser = new HashMap<String, String>(); diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index c366b65bf..e8322c391 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -96,12 +96,17 @@ public class BukkitPermissions { public BukkitPermissions(GroupManager plugin) {
this.plugin = plugin;
- this.collectPermissions();
+ this.reset();
this.registerEvents();
- this.updateAllPlayers();
+
GroupManager.logger.info("Superperms support enabled.");
}
+
+ public void reset() {
+ this.collectPermissions();
+ this.updateAllPlayers();
+ }
private void registerEvents() {
|