1
0
mirror of https://e.coding.net/circlecloud/Residence.git synced 2025-11-24 21:46:16 +00:00

fix: 修复一个可能被熊孩子利用导致插件奔溃的BUG

This commit is contained in:
502647092
2016-04-20 12:45:49 +08:00
parent feea6e8801
commit b64d05abb5
16 changed files with 43 additions and 37 deletions

View File

@@ -19,13 +19,12 @@ import org.bukkit.plugin.PluginManager;
import com.bekvon.bukkit.residence.event.ResidenceFlagChangeEvent;
import com.bekvon.bukkit.residence.event.ResidenceFlagCheckEvent;
import com.bekvon.bukkit.residence.event.ResidenceFlagEvent.FlagType;
import com.bekvon.bukkit.residence.event.ResidenceOwnerChangeEvent;
import pw.yumc.Residence.ResidenceMain;
import pw.yumc.Residence.permissions.PermissionGroup;
import pw.yumc.Residence.permissions.PermissionManager;
import com.bekvon.bukkit.residence.event.ResidenceOwnerChangeEvent;
/**
*
* @author Administrator
@@ -38,18 +37,6 @@ public class ResidencePermissions extends FlagPermissions {
protected String world;
ResidenceMain plugin;
public ResidencePermissions(final ResidenceMain plugin, final ClaimedResidence res) {
this.plugin = plugin;
this.pm = plugin.getServer().getPluginManager();
residence = res;
}
public ResidencePermissions(final ResidenceMain plugin, final ClaimedResidence res, final String creator, final String inworld) {
this(plugin, res);
owner = creator;
world = inworld;
}
public static ResidencePermissions load(final ResidenceMain plugin, final ClaimedResidence res, final Map<String, Object> root) throws Exception {
final ResidencePermissions newperms = new ResidencePermissions(plugin, res);
newperms.owner = (String) root.get("Owner");
@@ -81,6 +68,18 @@ public class ResidencePermissions extends FlagPermissions {
return newperms;
}
public ResidencePermissions(final ResidenceMain plugin, final ClaimedResidence res) {
this.plugin = plugin;
this.pm = plugin.getServer().getPluginManager();
residence = res;
}
public ResidencePermissions(final ResidenceMain plugin, final ClaimedResidence res, final String creator, final String inworld) {
this(plugin, res);
owner = creator;
world = inworld;
}
public void applyDefaultFlags() {
final PermissionManager gm = plugin.getPermissionManager();
final PermissionGroup group = gm.getGroup(owner, world);
@@ -437,6 +436,10 @@ public class ResidencePermissions extends FlagPermissions {
}
public boolean setPlayerFlag(final Player player, final String targetPlayer, final String flag, final String flagstate, final boolean resadmin) {
if (!plugin.validName(targetPlayer)) {
player.sendMessage(ChatColor.DARK_RED + "非法操作!");
return false;
}
if (validFlagGroups.containsKey(flag)) {
return this.setFlagGroupOnPlayer(player, targetPlayer, flag, flagstate, resadmin);
}

View File

@@ -21,7 +21,7 @@ public class CommandArea extends BaseCommand {
ResidenceMain plugin;
public CommandArea(final ResidenceMain plugin) {
super("area");
super("a");
this.plugin = plugin;
setMinimumArguments(3);
setOnlyPlayerExecutable();

View File

@@ -17,7 +17,7 @@ public class CommandBank extends BaseCommand {
ResidenceMain plugin;
public CommandBank(final ResidenceMain plugin) {
super("bank");
super("b");
this.plugin = plugin;
setMinimumArguments(2);
setOnlyPlayerExecutable();

View File

@@ -17,7 +17,7 @@ public class CommandCheck extends BaseCommand {
ResidenceMain plugin;
public CommandCheck(final ResidenceMain plugin) {
super("check");
super();
this.plugin = plugin;
setMinimumArguments(2);
setOnlyPlayerExecutable();

View File

@@ -14,7 +14,7 @@ public class CommandCheckSelf extends BaseCommand {
ResidenceMain plugin;
public CommandCheckSelf(final ResidenceMain plugin) {
super("checkself");
super("cs");
this.plugin = plugin;
setOnlyPlayerExecutable();
setPossibleArguments("[权限]");

View File

@@ -17,7 +17,7 @@ public class CommandClearFlags extends BaseCommand {
ResidenceMain plugin;
public CommandClearFlags(final ResidenceMain plugin) {
super("clearflags");
super("cf");
this.plugin = plugin;
setMinimumArguments(1);
setOnlyPlayerExecutable();

View File

@@ -18,7 +18,7 @@ public class CommandCreate extends BaseCommand {
ResidenceMain plugin;
public CommandCreate(final ResidenceMain plugin) {
super("create", "new");
super("c", "new");
this.plugin = plugin;
setMinimumArguments(1);
setOnlyPlayerExecutable();

View File

@@ -17,7 +17,7 @@ public class CommandGset extends BaseCommand {
ResidenceMain plugin;
public CommandGset(final ResidenceMain plugin) {
super("gset");
super("gs");
this.plugin = plugin;
setMinimumArguments(3);
setOnlyPlayerExecutable();

View File

@@ -16,7 +16,7 @@ public class CommandInfo extends BaseCommand {
ResidenceMain plugin;
public CommandInfo(final ResidenceMain plugin) {
super("info");
super("i");
this.plugin = plugin;
setOnlyPlayerExecutable();
}

View File

@@ -19,7 +19,7 @@ public class CommandKick extends BaseCommand {
ResidenceMain plugin;
public CommandKick(final ResidenceMain plugin) {
super("kick");
super("k");
this.plugin = plugin;
setMinimumArguments(1);
setOnlyPlayerExecutable();

View File

@@ -14,7 +14,7 @@ public class CommandList extends BaseCommand {
ResidenceMain plugin;
public CommandList(final ResidenceMain plugin) {
super("list");
super("l");
this.plugin = plugin;
setOnlyPlayerExecutable();
}

View File

@@ -59,13 +59,13 @@ public class CommandLists extends BaseCommand {
return;
case "pset":
if (args.length == 5) {
pmanager.getList(player.getName(), listname).setGroupFlag(args[2], args[3], FlagPermissions.stringToFlagState(args[4]));
pmanager.getList(player.getName(), listname).setPlayerFlag(args[2], args[3], FlagPermissions.stringToFlagState(args[4]));
player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet"));
}
return;
case "gset":
if (args.length == 5) {
pmanager.getList(player.getName(), listname).setPlayerFlag(args[2], args[3], FlagPermissions.stringToFlagState(args[4]));
pmanager.getList(player.getName(), listname).setGroupFlag(args[2], args[3], FlagPermissions.stringToFlagState(args[4]));
player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet"));
}
return;

View File

@@ -17,7 +17,7 @@ public class CommandPset extends BaseCommand {
ResidenceMain plugin;
public CommandPset(final ResidenceMain plugin) {
super("pset");
super("ps");
this.plugin = plugin;
setMinimumArguments(2);
setOnlyPlayerExecutable();

View File

@@ -24,7 +24,7 @@ public class CommandSelect extends BaseCommand {
ResidenceMain plugin;
public CommandSelect(final ResidenceMain plugin) {
super("select");
super("s");
this.plugin = plugin;
setMinimumArguments(1);
setOnlyPlayerExecutable();

View File

@@ -13,25 +13,27 @@ import pw.yumc.Residence.ResidenceMain;
public class CommandVersion extends BaseCommand {
ResidenceMain plugin;
public CommandVersion(ResidenceMain plugin) {
super("version");
public CommandVersion(final ResidenceMain plugin) {
super("v");
this.plugin = plugin;
}
@Override
public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException {
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
sender.sendMessage(ChatColor.GRAY + "------------------------------------");
sender.sendMessage(ChatColor.RED + "当前服务器运行的 " + ChatColor.GOLD + "Residence" + ChatColor.RED + " 版本: " + ChatColor.BLUE + plugin.getDescription().getVersion());
sender.sendMessage(ChatColor.GREEN + "创建者: " + ChatColor.YELLOW + "bekvon");
sender.sendMessage(ChatColor.GREEN + "升级到 1.8 by: " + ChatColor.YELLOW + "DartCZ");
sender.sendMessage(ChatColor.RED + "升级到最新无UUID版本 by: " + ChatColor.YELLOW + "喵♂呜");
String names = null;
List<String> authlist = plugin.getDescription().getAuthors();
for (String auth : authlist)
if (names == null)
final List<String> authlist = plugin.getDescription().getAuthors();
for (final String auth : authlist) {
if (names == null) {
names = auth;
else
} else {
names = names + ", " + auth;
}
}
sender.sendMessage(ChatColor.GREEN + "作者: " + ChatColor.YELLOW + names);
sender.sendMessage(ChatColor.DARK_AQUA + "插件命令列表,帮助, 请查看wiki:");
sender.sendMessage(ChatColor.GREEN + "http://residencebukkitmod.wikispaces.com/");