mirror of
https://e.coding.net/circlecloud/Residence.git
synced 2025-11-25 21:56:06 +00:00
fix WorldFlagManager NullPointerException...
Signed-off-by: j502647092 <jtb1@163.com>
This commit is contained in:
@@ -1,70 +1,48 @@
|
|||||||
/*
|
/*
|
||||||
* To change this template, choose Tools | Templates
|
* To change this template, choose Tools | Templates and open the template in the editor.
|
||||||
* and open the template in the editor.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.bekvon.bukkit.residence.protection;
|
package com.bekvon.bukkit.residence.protection;
|
||||||
|
|
||||||
import com.bekvon.bukkit.residence.Residence;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.bekvon.bukkit.residence.Residence;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
*/
|
*/
|
||||||
public class WorldFlagManager {
|
public class WorldFlagManager {
|
||||||
protected Map<String, Map<String,FlagPermissions>> groupperms;
|
protected Map<String, Map<String, FlagPermissions>> groupperms;
|
||||||
protected Map<String,FlagPermissions> worldperms;
|
protected Map<String, FlagPermissions> worldperms;
|
||||||
protected FlagPermissions globaldefaults;
|
protected FlagPermissions globaldefaults;
|
||||||
|
|
||||||
public WorldFlagManager()
|
public WorldFlagManager() {
|
||||||
{
|
|
||||||
globaldefaults = new FlagPermissions();
|
globaldefaults = new FlagPermissions();
|
||||||
worldperms = new HashMap<String,FlagPermissions>();
|
worldperms = new HashMap<String, FlagPermissions>();
|
||||||
groupperms = new HashMap<String,Map<String,FlagPermissions>>();
|
groupperms = new HashMap<String, Map<String, FlagPermissions>>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public WorldFlagManager(FileConfiguration config)
|
public WorldFlagManager(FileConfiguration config) {
|
||||||
{
|
|
||||||
this();
|
this();
|
||||||
this.parsePerms(config);
|
this.parsePerms(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
public FlagPermissions getPerms(Player player)
|
public FlagPermissions getPerms(Player player) {
|
||||||
{
|
return this.getPerms(player.getWorld().getName(), Residence.getPermissionManager()
|
||||||
return this.getPerms(player.getWorld().getName(), Residence.getPermissionManager().getGroupNameByPlayer(player));
|
.getGroupNameByPlayer(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
public FlagPermissions getPerms(String world, String group)
|
public FlagPermissions getPerms(String world) {
|
||||||
{
|
|
||||||
world = world.toLowerCase();
|
|
||||||
group = group.toLowerCase();
|
|
||||||
Map<String, FlagPermissions> groupworldperms = groupperms.get(group);
|
|
||||||
if (groupworldperms == null) {
|
|
||||||
return this.getPerms(world);
|
|
||||||
}
|
|
||||||
FlagPermissions list = groupworldperms.get(world);
|
|
||||||
if (list == null) {
|
|
||||||
list = groupworldperms.get("global." + world);
|
|
||||||
if (list == null) {
|
|
||||||
list = groupworldperms.get("global");
|
|
||||||
}
|
|
||||||
if (list == null) {
|
|
||||||
return this.getPerms(world);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
public FlagPermissions getPerms(String world)
|
|
||||||
{
|
|
||||||
world = world.toLowerCase();
|
world = world.toLowerCase();
|
||||||
FlagPermissions list = worldperms.get(world);
|
FlagPermissions list = worldperms.get(world);
|
||||||
if (list == null) {
|
if (list == null) {
|
||||||
@@ -76,6 +54,24 @@ public class WorldFlagManager {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FlagPermissions getPerms(String world, String group) {
|
||||||
|
world = world.toLowerCase();
|
||||||
|
group = group.toLowerCase();
|
||||||
|
Map<String, FlagPermissions> groupworldperms = groupperms.get(group);
|
||||||
|
if (groupworldperms == null)
|
||||||
|
return this.getPerms(world);
|
||||||
|
FlagPermissions list = groupworldperms.get(world);
|
||||||
|
if (list == null) {
|
||||||
|
list = groupworldperms.get("global." + world);
|
||||||
|
if (list == null) {
|
||||||
|
list = groupworldperms.get("global");
|
||||||
|
}
|
||||||
|
if (list == null)
|
||||||
|
return this.getPerms(world);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
public void parsePerms(FileConfiguration config) {
|
public void parsePerms(FileConfiguration config) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
@@ -83,9 +79,13 @@ public class WorldFlagManager {
|
|||||||
if (keys != null) {
|
if (keys != null) {
|
||||||
for (String key : keys) {
|
for (String key : keys) {
|
||||||
if (key.equalsIgnoreCase("Global")) {
|
if (key.equalsIgnoreCase("Global")) {
|
||||||
globaldefaults = FlagPermissions.parseFromConfigNode(key, config.getConfigurationSection("Global.Flags"));
|
globaldefaults = FlagPermissions.parseFromConfigNode(key,
|
||||||
|
config.getConfigurationSection("Global.Flags"));
|
||||||
} else {
|
} else {
|
||||||
worldperms.put(key.toLowerCase(), FlagPermissions.parseFromConfigNode(key, config.getConfigurationSection("Global.Flags")));
|
worldperms.put(
|
||||||
|
key.toLowerCase(),
|
||||||
|
FlagPermissions.parseFromConfigNode(key,
|
||||||
|
config.getConfigurationSection("Global.Flags")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -95,24 +95,32 @@ public class WorldFlagManager {
|
|||||||
keys = config.getConfigurationSection("Groups").getKeys(false);
|
keys = config.getConfigurationSection("Groups").getKeys(false);
|
||||||
if (keys != null) {
|
if (keys != null) {
|
||||||
for (String key : keys) {
|
for (String key : keys) {
|
||||||
Set<String> worldkeys = config.getConfigurationSection("Groups." + key + ".Flags.World").getKeys(false);
|
ConfigurationSection worldkeylist = config.getConfigurationSection("Groups."
|
||||||
|
+ key + ".Flags.World");
|
||||||
|
if (worldkeylist != null) {
|
||||||
|
Set<String> worldkeys = config.getConfigurationSection(
|
||||||
|
"Groups." + key + ".Flags.World").getKeys(false);
|
||||||
if (worldkeys != null) {
|
if (worldkeys != null) {
|
||||||
Map<String, FlagPermissions> perms = new HashMap<String, FlagPermissions>();
|
Map<String, FlagPermissions> perms = new HashMap<String, FlagPermissions>();
|
||||||
for (String wkey : worldkeys) {
|
for (String wkey : worldkeys) {
|
||||||
FlagPermissions list = FlagPermissions.parseFromConfigNode(wkey, config.getConfigurationSection("Groups." + key + ".Flags.World"));
|
FlagPermissions list = FlagPermissions.parseFromConfigNode(
|
||||||
if(wkey.equalsIgnoreCase("global"))
|
wkey,
|
||||||
{
|
config.getConfigurationSection("Groups." + key
|
||||||
|
+ ".Flags.World"));
|
||||||
|
if (wkey.equalsIgnoreCase("global")) {
|
||||||
list.setParent(globaldefaults);
|
list.setParent(globaldefaults);
|
||||||
perms.put(wkey.toLowerCase(), list);
|
perms.put(wkey.toLowerCase(), list);
|
||||||
for(Entry<String, FlagPermissions> worldperm : worldperms.entrySet())
|
for (Entry<String, FlagPermissions> worldperm : worldperms
|
||||||
{
|
.entrySet()) {
|
||||||
list = FlagPermissions.parseFromConfigNode(wkey, config.getConfigurationSection("Groups." + key + ".Flags.World"));
|
list = FlagPermissions.parseFromConfigNode(
|
||||||
|
wkey,
|
||||||
|
config.getConfigurationSection("Groups." + key
|
||||||
|
+ ".Flags.World"));
|
||||||
list.setParent(worldperm.getValue());
|
list.setParent(worldperm.getValue());
|
||||||
perms.put("global."+worldperm.getKey().toLowerCase(), list);
|
perms.put("global." + worldperm.getKey().toLowerCase(),
|
||||||
|
list);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
perms.put(wkey.toLowerCase(), list);
|
perms.put(wkey.toLowerCase(), list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -120,12 +128,11 @@ public class WorldFlagManager {
|
|||||||
String wkey = entry.getKey();
|
String wkey = entry.getKey();
|
||||||
FlagPermissions list = entry.getValue();
|
FlagPermissions list = entry.getValue();
|
||||||
if (!wkey.startsWith("global.")) {
|
if (!wkey.startsWith("global.")) {
|
||||||
list.setParent(perms.get("global."+wkey));
|
list.setParent(perms.get("global." + wkey));
|
||||||
if (list.getParent() == null) {
|
if (list.getParent() == null) {
|
||||||
list.setParent(worldperms.get(wkey));
|
list.setParent(worldperms.get(wkey));
|
||||||
}
|
}
|
||||||
if(list.getParent()==null)
|
if (list.getParent() == null) {
|
||||||
{
|
|
||||||
list.setParent(globaldefaults);
|
list.setParent(globaldefaults);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -134,6 +141,7 @@ public class WorldFlagManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.getLogger(WorldFlagManager.class.getName()).log(Level.SEVERE, null, ex);
|
Logger.getLogger(WorldFlagManager.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user