1
0
mirror of https://e.coding.net/circlecloud/Residence.git synced 2025-11-24 21:46:16 +00:00

feat: 添加UUID数据转换

This commit is contained in:
502647092
2016-04-22 01:06:34 +08:00
parent aead6ed983
commit dd9bb32c32
3 changed files with 42 additions and 29 deletions

View File

@@ -27,14 +27,8 @@ import pw.yumc.Residence.ResidenceMain;
*/
public class FlagPermissions {
public static enum FlagState {
FALSE,
INVALID,
NEITHER,
TRUE
}
protected static ResidenceMain plugin;
protected static ArrayList<String> validAreaFlags = new ArrayList<String>();
protected static HashMap<String, ArrayList<String>> validFlagGroups = new HashMap<String, ArrayList<String>>();
protected static ArrayList<String> validFlags = new ArrayList<String>();
@@ -43,15 +37,8 @@ public class FlagPermissions {
protected Map<String, Boolean> cuboidFlags;
protected Map<String, Map<String, Boolean>> groupFlags;
protected FlagPermissions parent;
protected Map<String, Map<String, Boolean>> playerFlags;
public FlagPermissions() {
cuboidFlags = Collections.synchronizedMap(new HashMap<String, Boolean>());
playerFlags = Collections.synchronizedMap(new HashMap<String, Map<String, Boolean>>());
groupFlags = Collections.synchronizedMap(new HashMap<String, Map<String, Boolean>>());
}
public static void addFlag(String flag) {
flag = flag.toLowerCase();
if (!validFlags.contains(flag)) {
@@ -284,12 +271,39 @@ public class FlagPermissions {
@SuppressWarnings("unchecked")
protected static FlagPermissions load(final Map<String, Object> root, final FlagPermissions newperms) throws Exception {
newperms.playerFlags = (Map<String, Map<String, Boolean>>) root.get("PlayerFlags");
if (root.containsKey("LastKnownPlayerNames")) {
final Map<String, String> uuids = (Map<String, String>) root.get("LastKnownPlayerNames");
final Iterator<Entry<String, Map<String, Boolean>>> mpi = ((Map<String, Map<String, Boolean>>) root.get("PlayerFlags")).entrySet().iterator();
final Map<String, Map<String, Boolean>> newperm = new LinkedHashMap<>();
while (mpi.hasNext()) {
final Entry<String, Map<String, Boolean>> pmap = mpi.next();
newperm.put(uuids.get(pmap.getKey()), pmap.getValue());
mpi.remove();
}
newperms.playerFlags = newperm;
} else {
newperms.playerFlags = (Map<String, Map<String, Boolean>>) root.get("PlayerFlags");
}
newperms.groupFlags = (Map<String, Map<String, Boolean>>) root.get("GroupFlags");
newperms.cuboidFlags = (Map<String, Boolean>) root.get("AreaFlags");
if (newperms.playerFlags == null) {
throw new IllegalArgumentException("错误的PlayerFlags数据...");
}
if (newperms.groupFlags == null) {
throw new IllegalArgumentException("错误的GroupFlags数据...");
}
if (newperms.cuboidFlags == null) {
throw new IllegalArgumentException("错误的CuboidFlags数据...");
}
return newperms;
}
public FlagPermissions() {
cuboidFlags = Collections.synchronizedMap(new HashMap<String, Boolean>());
playerFlags = Collections.synchronizedMap(new HashMap<String, Map<String, Boolean>>());
groupFlags = Collections.synchronizedMap(new HashMap<String, Map<String, Boolean>>());
}
public boolean checkValidFlag(final String flag, final boolean globalflag) {
if (validFlags.contains(flag)) {
return true;
@@ -632,4 +646,11 @@ public class FlagPermissions {
}
return def;
}
public static enum FlagState {
FALSE,
INVALID,
NEITHER,
TRUE
}
}

View File

@@ -40,8 +40,9 @@ public class ResidencePermissions extends FlagPermissions {
public static ResidencePermissions load(final ResidenceMain plugin, final ClaimedResidence res, final Map<String, Object> root) throws Exception {
final ResidencePermissions newperms = new ResidencePermissions(plugin, res);
newperms.owner = (String) root.get("Owner");
if (newperms.owner == null) {
if (root.containsKey("OwnerLastKnownName")) {
newperms.owner = (String) root.get("OwnerLastKnownName");
plugin.getLogger().info("自动转换 UUID " + root.get("OwnerUUID") + " => " + newperms.owner);
}
if (newperms.owner == null) {
plugin.getLogger().warning("发现未知所有者的领地,转换为Server Land...");
@@ -55,15 +56,6 @@ public class ResidencePermissions extends FlagPermissions {
if (newperms.world == null) {
throw new IllegalArgumentException("错误的World数据...");
}
if (newperms.playerFlags == null) {
throw new IllegalArgumentException("错误的PlayerFlags数据...");
}
if (newperms.groupFlags == null) {
throw new IllegalArgumentException("错误的GroupFlags数据...");
}
if (newperms.cuboidFlags == null) {
throw new IllegalArgumentException("错误的CuboidFlags数据...");
}
newperms.fixNames();
return newperms;
}