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

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>pw.yumc</groupId> <groupId>pw.yumc</groupId>
<artifactId>Residence</artifactId> <artifactId>Residence</artifactId>
<version>2.8.2.0</version> <version>2.8.2.1</version>
<name>Residence</name> <name>Residence</name>
<description>重制版本的领地插件 - 喵♂呜</description> <description>重制版本的领地插件 - 喵♂呜</description>
<build> <build>
@@ -58,8 +58,9 @@
<url>http://ci.yumc.pw/job/${project.artifactId}/</url> <url>http://ci.yumc.pw/job/${project.artifactId}/</url>
</ciManagement> </ciManagement>
<properties> <properties>
<update.description>&amp;6更新预告!!! GUI菜单即将上线...</update.description> <update.description>&amp;6更新预告!!! GUI菜单即将上线(&amp;7菜单再等几天= =&amp;6)...</update.description>
<update.changes> <update.changes>
&amp;b2.8.2.0 - &amp;c修复一个可能被熊孩子利用导致插件奔溃的BUG...;
&amp;b2.8.2.0 - &amp;a修复与部分插件TP有冲突的问题...; &amp;b2.8.2.0 - &amp;a修复与部分插件TP有冲突的问题...;
&amp;b2.8.1.9 - &amp;e修复配置文件载入失败的问题...; &amp;b2.8.1.9 - &amp;e修复配置文件载入失败的问题...;
</update.changes> </update.changes>

View File

@@ -19,13 +19,12 @@ import org.bukkit.plugin.PluginManager;
import com.bekvon.bukkit.residence.event.ResidenceFlagChangeEvent; import com.bekvon.bukkit.residence.event.ResidenceFlagChangeEvent;
import com.bekvon.bukkit.residence.event.ResidenceFlagCheckEvent; import com.bekvon.bukkit.residence.event.ResidenceFlagCheckEvent;
import com.bekvon.bukkit.residence.event.ResidenceFlagEvent.FlagType; import com.bekvon.bukkit.residence.event.ResidenceFlagEvent.FlagType;
import com.bekvon.bukkit.residence.event.ResidenceOwnerChangeEvent;
import pw.yumc.Residence.ResidenceMain; import pw.yumc.Residence.ResidenceMain;
import pw.yumc.Residence.permissions.PermissionGroup; import pw.yumc.Residence.permissions.PermissionGroup;
import pw.yumc.Residence.permissions.PermissionManager; import pw.yumc.Residence.permissions.PermissionManager;
import com.bekvon.bukkit.residence.event.ResidenceOwnerChangeEvent;
/** /**
* *
* @author Administrator * @author Administrator
@@ -38,18 +37,6 @@ public class ResidencePermissions extends FlagPermissions {
protected String world; protected String world;
ResidenceMain plugin; 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 { public static ResidencePermissions load(final ResidenceMain plugin, final ClaimedResidence res, final Map<String, Object> root) throws Exception {
final ResidencePermissions newperms = new ResidencePermissions(plugin, res); final ResidencePermissions newperms = new ResidencePermissions(plugin, res);
newperms.owner = (String) root.get("Owner"); newperms.owner = (String) root.get("Owner");
@@ -81,6 +68,18 @@ public class ResidencePermissions extends FlagPermissions {
return newperms; 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() { public void applyDefaultFlags() {
final PermissionManager gm = plugin.getPermissionManager(); final PermissionManager gm = plugin.getPermissionManager();
final PermissionGroup group = gm.getGroup(owner, world); 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) { 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)) { if (validFlagGroups.containsKey(flag)) {
return this.setFlagGroupOnPlayer(player, targetPlayer, flag, flagstate, resadmin); return this.setFlagGroupOnPlayer(player, targetPlayer, flag, flagstate, resadmin);
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -59,13 +59,13 @@ public class CommandLists extends BaseCommand {
return; return;
case "pset": case "pset":
if (args.length == 5) { 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")); player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet"));
} }
return; return;
case "gset": case "gset":
if (args.length == 5) { 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")); player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet"));
} }
return; return;

View File

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

View File

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

View File

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