From dd9bb32c32add64f53261953ba58566fef589f5b Mon Sep 17 00:00:00 2001 From: 502647092 Date: Fri, 22 Apr 2016 01:06:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0UUID=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 +-- .../residence/protection/FlagPermissions.java | 51 +++++++++++++------ .../protection/ResidencePermissions.java | 12 +---- 3 files changed, 42 insertions(+), 29 deletions(-) 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; }