diff --git a/pom.xml b/pom.xml
index 5797436..e25f67e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
pw.yumc
Residence
- 2.8.2.1
+ 2.8.2.2
Residence
重制版本的领地插件 - 喵♂呜
@@ -60,9 +60,9 @@
&6更新预告!!! GUI菜单即将上线(&7菜单再等几天= =&6)...
- &b2.8.2.0 - &c修复一个可能被熊孩子利用导致插件奔溃的BUG...;
- &b2.8.2.0 - &a修复与部分插件TP有冲突的问题...;
- &b2.8.1.9 - &e修复配置文件载入失败的问题...;
+ &b2.8.2.2 - &e自动转换UUID版本Residence的数据(部分版本)...;
+ &c修复上个版本命令失效的问题(库文件忘了更新了);
+ &b2.8.2.1 - &c修复一个可能被熊孩子利用导致插件奔溃的BUG...;
Debug
UTF-8
diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java b/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java
index 2262f2a..a05ca9a 100644
--- a/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java
+++ b/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java
@@ -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 validAreaFlags = new ArrayList();
protected static HashMap> validFlagGroups = new HashMap>();
protected static ArrayList validFlags = new ArrayList();
@@ -43,15 +37,8 @@ public class FlagPermissions {
protected Map cuboidFlags;
protected Map> groupFlags;
protected FlagPermissions parent;
-
protected Map> playerFlags;
- public FlagPermissions() {
- cuboidFlags = Collections.synchronizedMap(new HashMap());
- playerFlags = Collections.synchronizedMap(new HashMap>());
- groupFlags = Collections.synchronizedMap(new HashMap>());
- }
-
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 root, final FlagPermissions newperms) throws Exception {
- newperms.playerFlags = (Map>) root.get("PlayerFlags");
+ if (root.containsKey("LastKnownPlayerNames")) {
+ final Map uuids = (Map) root.get("LastKnownPlayerNames");
+ final Iterator>> mpi = ((Map>) root.get("PlayerFlags")).entrySet().iterator();
+ final Map> newperm = new LinkedHashMap<>();
+ while (mpi.hasNext()) {
+ final Entry> pmap = mpi.next();
+ newperm.put(uuids.get(pmap.getKey()), pmap.getValue());
+ mpi.remove();
+ }
+ newperms.playerFlags = newperm;
+ } else {
+ newperms.playerFlags = (Map>) root.get("PlayerFlags");
+ }
newperms.groupFlags = (Map>) root.get("GroupFlags");
newperms.cuboidFlags = (Map) 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());
+ playerFlags = Collections.synchronizedMap(new HashMap>());
+ groupFlags = Collections.synchronizedMap(new HashMap>());
+ }
+
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
+ }
}
diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/ResidencePermissions.java b/src/main/java/com/bekvon/bukkit/residence/protection/ResidencePermissions.java
index 66c2995..8549838 100644
--- a/src/main/java/com/bekvon/bukkit/residence/protection/ResidencePermissions.java
+++ b/src/main/java/com/bekvon/bukkit/residence/protection/ResidencePermissions.java
@@ -40,8 +40,9 @@ public class ResidencePermissions extends FlagPermissions {
public static ResidencePermissions load(final ResidenceMain plugin, final ClaimedResidence res, final Map 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;
}