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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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("[权限]");
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -16,7 +16,7 @@ public class CommandInfo extends BaseCommand {
|
||||
ResidenceMain plugin;
|
||||
|
||||
public CommandInfo(final ResidenceMain plugin) {
|
||||
super("info");
|
||||
super("i");
|
||||
this.plugin = plugin;
|
||||
setOnlyPlayerExecutable();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -14,7 +14,7 @@ public class CommandList extends BaseCommand {
|
||||
ResidenceMain plugin;
|
||||
|
||||
public CommandList(final ResidenceMain plugin) {
|
||||
super("list");
|
||||
super("l");
|
||||
this.plugin = plugin;
|
||||
setOnlyPlayerExecutable();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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/");
|
||||
|
||||
Reference in New Issue
Block a user