【发布时间】:2015-12-22 15:03:56
【问题描述】:
我还没有使用过字符串权限插件,但在使用它时遇到了一些麻烦:
public class MainPermission {
public static void givePlayerPermission(MainPlayer player){
ServerRank rank = player.getServerRank();
if(rank.equals(ServerRank.STONE)){
setPermission("ADD", player, DataFiles.PermissionConf.getStringList("STONE"));
}else if(rank.equals(ServerRank.COAL)){
setPermission("ADD", player, DataFiles.PermissionConf.getStringList("COAL"));
}else if(rank.equals(ServerRank.IRON)){
setPermission("ADD", player, DataFiles.PermissionConf.getStringList("IRON"));
}else if(rank.equals(ServerRank.GOLD)){
setPermission("ADD", player, DataFiles.PermissionConf.getStringList("GOLD"));
}else if(rank.equals(ServerRank.REDSTONE)){
setPermission("ADD", player, DataFiles.PermissionConf.getStringList("REDSTONE"));
}else if(rank.equals(ServerRank.EMERALD)){
setPermission("ADD", player, DataFiles.PermissionConf.getStringList("EMERALD"));
}else if(rank.equals(ServerRank.DIAMOND)){
setPermission("ADD", player, DataFiles.PermissionConf.getString("DIAMOND"));
}
}
public static void removePlayerPermission(MainPlayer player){
setPermission("REMOVE", player, "*");
}
private static boolean setPermission(String type, MainPlayer player, String permission){
if(type.equalsIgnoreCase("ADD")){
PermissionAttachment attachment = player.getPlayer().addAttachment(MainClass.getInstance());
attachment.setPermission(permission, true);
//player.getPlayer().sendMessage(ChatColor.DARK_GREEN + "Permission " + permission + " given");
return true;
}else if(type.equalsIgnoreCase("REMOVE")){
PermissionAttachment attachment = player.getPlayer().addAttachment(MainClass.getInstance());
attachment.setPermission(permission, false);
//player.getPlayer().sendMessage(ChatColor.DARK_GREEN + "Permission " + permission + " removed");
return true;
}
return false;
}
private static boolean setPermission(String type, MainPlayer player, List<String> permission){
for(String s : permission){
setPermission(type, player, s);
}
return true;
}
public static void initFile(){
if(!DataFiles.PermissionsFile.exists()){
try {
DataFiles.PermissionsFile.createNewFile();
ArrayList<String> STONE = new ArrayList<>();
STONE.add("bukkit.command.version");
STONE.add("bukkit.command.plugins");
STONE.add("bukkit.command.help");
STONE.add("bukkit.command.tell");
ArrayList<String> COAL = new ArrayList<>();
COAL.add("bukkit.command.version");
COAL.add("bukkit.command.plugins");
COAL.add("bukkit.command.help");
COAL.add("bukkit.command.tell");
COAL.add("bukkit.command.list");
ArrayList<String> IRON = new ArrayList<>();
IRON.add("bukkit.command.version");
IRON.add("bukkit.command.plugins");
IRON.add("bukkit.command.help");
IRON.add("bukkit.command.tell");
IRON.add("bukkit.command.list");
ArrayList<String> GOLD = new ArrayList<>();
GOLD.add("bukkit.command.version");
GOLD.add("bukkit.command.plugins");
GOLD.add("bukkit.command.help");
GOLD.add("bukkit.command.tell");
GOLD.add("bukkit.command.list");
ArrayList<String> REDSTONE = new ArrayList<>();
REDSTONE.add("bukkit.command.version");
REDSTONE.add("bukkit.command.plugins");
REDSTONE.add("bukkit.command.help");
REDSTONE.add("bukkit.command.tell");
REDSTONE.add("bukkit.command.list");
REDSTONE.add("bukkit.command.banlist");
REDSTONE.add("bukkit.command.kick");
REDSTONE.add("bukkit.command.kill");
REDSTONE.add("bukkit.command.me");
REDSTONE.add("bukkit.command.says");
REDSTONE.add("bukkit.command.seed");
REDSTONE.add("bukkit.command.tellraw");
REDSTONE.add("bukkit.command.tp");
REDSTONE.add("MainPlugin.command.entity");
REDSTONE.add("MainPlugin.command.permission");
ArrayList<String> EMERALD = new ArrayList<>();
EMERALD.add("bukkit.command.version");
EMERALD.add("bukkit.command.plugins");
EMERALD.add("bukkit.command.help");
EMERALD.add("bukkit.command.tell");
EMERALD.add("bukkit.command.list");
EMERALD.add("bukkit.command.banlist");
EMERALD.add("bukkit.command.kick");
EMERALD.add("bukkit.command.kill");
EMERALD.add("bukkit.command.me");
EMERALD.add("bukkit.command.say");
EMERALD.add("bukkit.command.seed");
EMERALD.add("bukkit.command.tellraw");
EMERALD.add("bukkit.command.tp");
EMERALD.add("bukkit.command.achievement");
EMERALD.add("bukkit.command.ban");
EMERALD.add("bukkit.command.ban-ip");
EMERALD.add("bukkit.command.clear");
EMERALD.add("bukkit.command.debug");
EMERALD.add("bukkit.command.difficulty");
EMERALD.add("bukkit.command.effect");
EMERALD.add("bukkit.command.enchant");
EMERALD.add("bukkit.command.gamemode");
EMERALD.add("bukkit.command.give");
EMERALD.add("bukkit.command.pardon");
EMERALD.add("bukkit.command.pardon-ip");
EMERALD.add("bukkit.command.playsound");
EMERALD.add("bukkit.command.scoreboard");
EMERALD.add("bukkit.command.setblock");
EMERALD.add("bukkit.command.setidletimeout");
EMERALD.add("bukkit.command.summon");
EMERALD.add("bukkit.command.testfor");
EMERALD.add("bukkit.command.testforblock");
EMERALD.add("bukkit.command.time");
EMERALD.add("bukkit.command.toggledownfall");
EMERALD.add("bukkit.command.weather");
EMERALD.add("bukkit.command.xp");
EMERALD.add("MainPlugin.command.entity");
EMERALD.add("MainPlugin.command.permission");
DataFiles.PermissionConf.set("STONE", STONE);
DataFiles.PermissionConf.set("COAL", COAL);
DataFiles.PermissionConf.set("IRON", IRON);
DataFiles.PermissionConf.set("GOLD", GOLD);
DataFiles.PermissionConf.set("REDSTONE", REDSTONE);
DataFiles.PermissionConf.set("EMERALD", EMERALD);
DataFiles.PermissionConf.set("DIAMOND", "*");
DataFiles.PermissionConf.save(DataFiles.PermissionsFile);
} catch (IOException e) {
e.printStackTrace();
}
}
}
一切正常,权限已授予玩家(在调试时看到),但每当我询问玩家是否有特定权限时,它总是返回 true,即使排名不授予您权限。
每个玩家加入时都会加载权限,MainPlayer是一个自己的类,用于从不同方面控制玩家,问题不是来自这个类。
【问题讨论】:
-
这可能与权限插件或您使用它的方式有关,在这种情况下,我会在该插件的 Bukkit 开发页面上询问或指定插件。
-
这是我自己写的插件,可惜没人问
-
我发现了问题,我忘了自己de-op。感谢您的每一个帮助!
标签: java plugins permissions bukkit