mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-10-06 03:27:50 +02:00
Fixed Group/User reloading
Fixed Group.clone(dataholder)
This commit is contained in:
parent
1c7e0e5b9f
commit
cf9ef46182
@ -76,8 +76,13 @@ public class Group extends DataUnit implements Cloneable {
|
|||||||
if (dataSource.groupExists(this.getName())) {
|
if (dataSource.groupExists(this.getName())) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Group clone = getDataSource().createGroup(this.getName());
|
|
||||||
|
Group clone = dataSource.createGroup(this.getName());
|
||||||
|
|
||||||
|
// Don't add inheritance for GlobalGroups
|
||||||
|
if (getDataSource() != null) {
|
||||||
clone.inherits = new ArrayList<String>(this.getInherits());
|
clone.inherits = new ArrayList<String>(this.getInherits());
|
||||||
|
}
|
||||||
for (String perm : this.getPermissionList()) {
|
for (String perm : this.getPermissionList()) {
|
||||||
clone.addPermission(perm);
|
clone.addPermission(perm);
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ public class User extends DataUnit implements Cloneable {
|
|||||||
if (dataSource.getGroup(group) == null) {
|
if (dataSource.getGroup(group) == null) {
|
||||||
clone.setGroup(dataSource.getDefaultGroup());
|
clone.setGroup(dataSource.getDefaultGroup());
|
||||||
} else {
|
} else {
|
||||||
clone.setGroup(this.getGroupName());
|
clone.setGroup(dataSource.getGroup(this.getGroupName()));
|
||||||
}
|
}
|
||||||
for (String perm : this.getPermissionList()) {
|
for (String perm : this.getPermissionList()) {
|
||||||
clone.addPermission(perm);
|
clone.addPermission(perm);
|
||||||
|
@ -38,7 +38,7 @@ import org.yaml.snakeyaml.reader.UnicodeReader;
|
|||||||
public class WorldDataHolder {
|
public class WorldDataHolder {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* World name
|
||||||
*/
|
*/
|
||||||
protected String name;
|
protected String name;
|
||||||
/**
|
/**
|
||||||
@ -321,32 +321,54 @@ public class WorldDataHolder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh Group data from file
|
||||||
|
*/
|
||||||
public void reloadGroups() {
|
public void reloadGroups() {
|
||||||
GroupManager.setLoaded(false);
|
GroupManager.setLoaded(false);
|
||||||
try {
|
try {
|
||||||
// temporary holder in case the load fails.
|
// temporary holder in case the load fails.
|
||||||
WorldDataHolder ph = new WorldDataHolder(this.getName());
|
WorldDataHolder ph = new WorldDataHolder(this.getName());
|
||||||
|
|
||||||
loadGroups(ph, getGroupsFile());
|
loadGroups(ph, getGroupsFile());
|
||||||
this.groups = ph.getGroups();
|
// transfer new data
|
||||||
|
resetGroups();
|
||||||
|
for (Group tempGroup : ph.getGroupList()) {
|
||||||
|
if (tempGroup.getDataSource() != null) tempGroup.clone(this);
|
||||||
|
}
|
||||||
|
this.setDefaultGroup(this.getGroup(ph.getDefaultGroup().getName()));
|
||||||
this.removeGroupsChangedFlag();
|
this.removeGroupsChangedFlag();
|
||||||
this.timeStampGroups = ph.getTimeStampGroups();
|
this.timeStampGroups = ph.getTimeStampGroups();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.getLogger(WorldDataHolder.class.getName()).log(Level.SEVERE, null, ex);
|
Logger.getLogger(WorldDataHolder.class.getName()).log(Level.WARNING, null, ex);
|
||||||
}
|
}
|
||||||
GroupManager.setLoaded(true);
|
GroupManager.setLoaded(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh Users data from file
|
||||||
|
*/
|
||||||
public void reloadUsers() {
|
public void reloadUsers() {
|
||||||
GroupManager.setLoaded(false);
|
GroupManager.setLoaded(false);
|
||||||
try {
|
try {
|
||||||
// temporary holder in case the load fails.
|
// temporary holder in case the load fails.
|
||||||
WorldDataHolder ph = new WorldDataHolder(this.getName());
|
WorldDataHolder ph = new WorldDataHolder(this.getName());
|
||||||
|
// copy groups for reference
|
||||||
|
for (Group tempGroup : this.getGroupList()) {
|
||||||
|
if (tempGroup.getDataSource() != null) tempGroup.clone(ph);
|
||||||
|
}
|
||||||
|
// setup the default group before loading user data.
|
||||||
|
ph.setDefaultGroup(ph.getGroup(this.getDefaultGroup().getName()));
|
||||||
loadUsers(ph, getUsersFile());
|
loadUsers(ph, getUsersFile());
|
||||||
this.users = ph.getUsers();
|
// transfer new data
|
||||||
|
resetUsers();
|
||||||
|
for (User tempUser : ph.getUserList()) {
|
||||||
|
tempUser.clone(this);
|
||||||
|
}
|
||||||
this.removeUsersChangedFlag();
|
this.removeUsersChangedFlag();
|
||||||
this.timeStampUsers = ph.getTimeStampUsers();
|
this.timeStampUsers = ph.getTimeStampUsers();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.getLogger(WorldDataHolder.class.getName()).log(Level.SEVERE, null, ex);
|
Logger.getLogger(WorldDataHolder.class.getName()).log(Level.WARNING, null, ex);
|
||||||
}
|
}
|
||||||
GroupManager.setLoaded(true);
|
GroupManager.setLoaded(true);
|
||||||
}
|
}
|
||||||
@ -576,7 +598,7 @@ public class WorldDataHolder {
|
|||||||
}
|
}
|
||||||
if ((Boolean.parseBoolean(thisGroupNode.get("default").toString()))) {
|
if ((Boolean.parseBoolean(thisGroupNode.get("default").toString()))) {
|
||||||
if (ph.getDefaultGroup() != null) {
|
if (ph.getDefaultGroup() != null) {
|
||||||
GroupManager.logger.warning("The group " + thisGrp.getName() + " is declaring be default where" + ph.getDefaultGroup().getName() + " already was.");
|
GroupManager.logger.warning("The group " + thisGrp.getName() + " is claiming to be default where" + ph.getDefaultGroup().getName() + " already was.");
|
||||||
GroupManager.logger.warning("Overriding first request.");
|
GroupManager.logger.warning("Overriding first request.");
|
||||||
}
|
}
|
||||||
ph.setDefaultGroup(thisGrp);
|
ph.setDefaultGroup(thisGrp);
|
||||||
|
Loading…
Reference in New Issue
Block a user