diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java index 973c8b7..62c6656 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java @@ -161,8 +161,7 @@ public class BukkitPermissionManager extends RestartableThread { Set regionSet = rscp.regionListProvider.getPlayerRegions(player); params.destRegions = regionSet.toArray(new String[regionSet.size()]); - } else - params.destRegions = new String[] {}; + } params.destWorld = player.getLocation().getWorld().getName(); params.expirience = player.getLevel(); final ResolutionResult result = rscp.internalCache.resolvePlayer(params); diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java b/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java index fd8ba28..39ed691 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java @@ -48,7 +48,6 @@ public class InternalCache extends InternalStorage { final ResolutionParams params = new ResolutionParams(); params.applicableIdentifiers = player; - params.destRegions = new String[] {}; return resolvePlayer(params); } public synchronized ResolutionResult resolvePlayer(ResolutionParams params) @@ -56,11 +55,11 @@ public class InternalCache extends InternalStorage params.groupList = new LinkedList<>(); params.finalPerms = new TreeMap<>(); params.instantiator = ""; - params.depth = 0; + params.branchDepth = 0; + if(params.destRegions == null) + params.destRegions = new String[] {}; if(implicit_u != null && implicit_u.permissions != null) - { processPermissions(params, Arrays.asList(implicit_u.permissions)); - } final ArrayList applicableEntities = new ArrayList<>(); final ArrayList applicablePermissions = new ArrayList<>(); final ArrayList applicableInheritance = new ArrayList<>(); @@ -114,9 +113,9 @@ public class InternalCache extends InternalStorage if(implicit_g != null && implicit_g.permissions != null) processPermissions(params, Arrays.asList(implicit_g.permissions)); final RowEntity currentParent = params.parentEntity; - final String instantiator = params.instantiator; + final String instantiator = params.instantiator; final ArrayList intermediateResults = new ArrayList<>(); - params.depth += 1; + params.branchDepth += 1; for(RowInheritance row : params.parentEntity.inheritance) if(isInheritanceApplicable(params, row)) { @@ -126,8 +125,8 @@ public class InternalCache extends InternalStorage : row.instance; intermediateResults.add(resolveParent(params)); } - params.depth -= 1; - params.groupList.add(depthPrefix(params.depth) + currentParent.entity + params.branchDepth -= 1; + params.groupList.add(depthPrefix(params.branchDepth) + currentParent.entity + ("".equals(instantiator) ? "" : Settings.INSTANCE_SEP + instantiator)); // Prefixes and suffixes params.parentEntity = currentParent; diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionParams.java b/src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionParams.java index a71f2b9..84ef8c5 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionParams.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionParams.java @@ -10,9 +10,9 @@ public class ResolutionParams public String[] destRegions; public String destWorld; public int expirience; - protected transient int depth; - protected transient RowEntity parentEntity; - protected transient String instantiator; + protected transient int branchDepth; + protected transient RowEntity parentEntity; + protected transient String instantiator; protected transient Map finalPerms; - protected transient List groupList; + protected transient List groupList; }