mirror of
https://github.com/EssentialsX/Essentials.git
synced 2025-02-02 13:31:54 +01:00
Merge branch 'refs/heads/groupmanager'
This commit is contained in:
commit
e683ce5751
@ -72,4 +72,7 @@ v 1.5:
|
||||
- Fix for an error in checkFullUserPermission caused by players disconnecting mid perms update.
|
||||
- Notification of being moved to the default group only happens if it's a demotion/promotion (not on join).
|
||||
- Fixed GM holding files open and causing the time stamp to be incorrect. This caused GM to require a '/mansave force' when it shouldn't be needed.
|
||||
- Fixed a crash on reload due to bukkit not unloading plugins before reloading.
|
||||
- Fixed a crash on reload due to bukkit not unloading plugins before reloading.
|
||||
v 1.6:
|
||||
- Prevent Group.equals tests throwing a NullPointerException for GlobalGroups.
|
||||
- Stop throwing errors on an empty users file.
|
@ -39,8 +39,19 @@ public abstract class DataUnit {
|
||||
public boolean equals(Object o) {
|
||||
if (o instanceof DataUnit) {
|
||||
DataUnit go = (DataUnit) o;
|
||||
if (this.getName().equalsIgnoreCase(go.getName()) && this.dataSource.getName().equalsIgnoreCase(go.getDataSource().getName())) {
|
||||
return true;
|
||||
if (this.getName().equalsIgnoreCase(go.getName())) {
|
||||
// Global Group match.
|
||||
if (this.dataSource == null && go.getDataSource() == null)
|
||||
return true;
|
||||
// This is a global group, the object to test isn't.
|
||||
if (this.dataSource == null && go.getDataSource() != null)
|
||||
return false;
|
||||
// This is not a global group, but the object to test is.
|
||||
if (this.dataSource != null && go.getDataSource() == null)
|
||||
return false;
|
||||
// Match on group name and world name.
|
||||
if (this.dataSource.getName().equalsIgnoreCase(go.getDataSource().getName()))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
@ -711,78 +711,74 @@ public class WorldDataHolder {
|
||||
// PROCESS USERS FILE
|
||||
Map<String, Object> allUsersNode = (Map<String, Object>) usersRootDataNode.get("users");
|
||||
|
||||
// Stop loading if the file is empty
|
||||
if (allUsersNode == null)
|
||||
return ;
|
||||
|
||||
for (String usersKey : allUsersNode.keySet()) {
|
||||
Map<String, Object> thisUserNode = (Map<String, Object>) allUsersNode.get(usersKey);
|
||||
User thisUser = ph.createUser(usersKey);
|
||||
if (thisUser == null) {
|
||||
throw new IllegalArgumentException("I think this user was declared more than once: " + usersKey);
|
||||
}
|
||||
if (thisUserNode.get("permissions") == null) {
|
||||
thisUserNode.put("permissions", new ArrayList<String>());
|
||||
}
|
||||
if (thisUserNode.get("permissions") instanceof List) {
|
||||
for (Object o : ((List) thisUserNode.get("permissions"))) {
|
||||
thisUser.addPermission(o.toString());
|
||||
}
|
||||
} else if (thisUserNode.get("permissions") instanceof String) {
|
||||
thisUser.addPermission(thisUserNode.get("permissions").toString());
|
||||
}
|
||||
|
||||
//SUBGROUPS LOADING
|
||||
if (thisUserNode.get("subgroups") == null) {
|
||||
thisUserNode.put("subgroups", new ArrayList<String>());
|
||||
}
|
||||
if (thisUserNode.get("subgroups") instanceof List) {
|
||||
for (Object o : ((List) thisUserNode.get("subgroups"))) {
|
||||
Group subGrp = ph.getGroup(o.toString());
|
||||
if (subGrp != null) {
|
||||
thisUser.addSubGroup(subGrp);
|
||||
} else {
|
||||
GroupManager.logger.warning("Subgroup " + o.toString() + " not found for user " + thisUser.getName() + ". Ignoring entry.");
|
||||
}
|
||||
}
|
||||
} else if (thisUserNode.get("subgroups") instanceof String) {
|
||||
Group subGrp = ph.getGroup(thisUserNode.get("subgroups").toString());
|
||||
if (subGrp != null) {
|
||||
thisUser.addSubGroup(subGrp);
|
||||
} else {
|
||||
GroupManager.logger.warning("Subgroup " + thisUserNode.get("subgroups").toString() + " not found for user " + thisUser.getName() + ". Ignoring entry.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//USER INFO NODE - BETA
|
||||
|
||||
//INFO NODE
|
||||
Map<String, Object> infoNode = (Map<String, Object>) thisUserNode.get("info");
|
||||
if (infoNode != null) {
|
||||
thisUser.setVariables(infoNode);
|
||||
}
|
||||
//END INFO NODE - BETA
|
||||
|
||||
if (thisUserNode.get("group") != null) {
|
||||
Group hisGroup = ph.getGroup(thisUserNode.get("group").toString());
|
||||
if (hisGroup == null) {
|
||||
GroupManager.logger.warning("There is no group " + thisUserNode.get("group").toString() + ", as stated for player " + thisUser.getName() + ": Set to '" + ph.getDefaultGroup().getName() + "'.");
|
||||
hisGroup = ph.defaultGroup;
|
||||
//throw new IllegalArgumentException("There is no group " + thisUserNode.get("group").toString() + ", as stated for player " + thisUser.getName());
|
||||
}
|
||||
thisUser.setGroup(hisGroup);
|
||||
} else {
|
||||
thisUser.setGroup(ph.defaultGroup);
|
||||
}
|
||||
}
|
||||
// Load users if the file is NOT empty
|
||||
if (allUsersNode != null)
|
||||
for (String usersKey : allUsersNode.keySet()) {
|
||||
Map<String, Object> thisUserNode = (Map<String, Object>) allUsersNode.get(usersKey);
|
||||
User thisUser = ph.createUser(usersKey);
|
||||
if (thisUser == null) {
|
||||
throw new IllegalArgumentException("I think this user was declared more than once: " + usersKey);
|
||||
}
|
||||
if (thisUserNode.get("permissions") == null) {
|
||||
thisUserNode.put("permissions", new ArrayList<String>());
|
||||
}
|
||||
if (thisUserNode.get("permissions") instanceof List) {
|
||||
for (Object o : ((List) thisUserNode.get("permissions"))) {
|
||||
thisUser.addPermission(o.toString());
|
||||
}
|
||||
} else if (thisUserNode.get("permissions") instanceof String) {
|
||||
thisUser.addPermission(thisUserNode.get("permissions").toString());
|
||||
}
|
||||
|
||||
//SUBGROUPS LOADING
|
||||
if (thisUserNode.get("subgroups") == null) {
|
||||
thisUserNode.put("subgroups", new ArrayList<String>());
|
||||
}
|
||||
if (thisUserNode.get("subgroups") instanceof List) {
|
||||
for (Object o : ((List) thisUserNode.get("subgroups"))) {
|
||||
Group subGrp = ph.getGroup(o.toString());
|
||||
if (subGrp != null) {
|
||||
thisUser.addSubGroup(subGrp);
|
||||
} else {
|
||||
GroupManager.logger.warning("Subgroup " + o.toString() + " not found for user " + thisUser.getName() + ". Ignoring entry.");
|
||||
}
|
||||
}
|
||||
} else if (thisUserNode.get("subgroups") instanceof String) {
|
||||
Group subGrp = ph.getGroup(thisUserNode.get("subgroups").toString());
|
||||
if (subGrp != null) {
|
||||
thisUser.addSubGroup(subGrp);
|
||||
} else {
|
||||
GroupManager.logger.warning("Subgroup " + thisUserNode.get("subgroups").toString() + " not found for user " + thisUser.getName() + ". Ignoring entry.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//USER INFO NODE - BETA
|
||||
|
||||
//INFO NODE
|
||||
Map<String, Object> infoNode = (Map<String, Object>) thisUserNode.get("info");
|
||||
if (infoNode != null) {
|
||||
thisUser.setVariables(infoNode);
|
||||
}
|
||||
//END INFO NODE - BETA
|
||||
|
||||
if (thisUserNode.get("group") != null) {
|
||||
Group hisGroup = ph.getGroup(thisUserNode.get("group").toString());
|
||||
if (hisGroup == null) {
|
||||
GroupManager.logger.warning("There is no group " + thisUserNode.get("group").toString() + ", as stated for player " + thisUser.getName() + ": Set to '" + ph.getDefaultGroup().getName() + "'.");
|
||||
hisGroup = ph.defaultGroup;
|
||||
//throw new IllegalArgumentException("There is no group " + thisUserNode.get("group").toString() + ", as stated for player " + thisUser.getName());
|
||||
}
|
||||
thisUser.setGroup(hisGroup);
|
||||
} else {
|
||||
thisUser.setGroup(ph.defaultGroup);
|
||||
}
|
||||
}
|
||||
|
||||
ph.removeUsersChangedFlag();
|
||||
// Update the LastModified time.
|
||||
ph.usersFile = usersFile;
|
||||
ph.setTimeStampUsers(usersFile.lastModified());
|
||||
|
||||
//return ph;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: GroupManager
|
||||
version: "1.5 (Phoenix)"
|
||||
version: "1.6 (Phoenix)"
|
||||
main: org.anjocaido.groupmanager.GroupManager
|
||||
website: http://www.anjocaido.info/
|
||||
description: Provides on-the-fly system for permissions system created by Nijikokun. But all in memory, and with flat-file saving schedule.
|
||||
|
Loading…
Reference in New Issue
Block a user