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:
5
pom.xml
5
pom.xml
@@ -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>&6更新预告!!! GUI菜单即将上线...</update.description>
|
<update.description>&6更新预告!!! GUI菜单即将上线(&7菜单再等几天= =&6)...</update.description>
|
||||||
<update.changes>
|
<update.changes>
|
||||||
|
&b2.8.2.0 - &c修复一个可能被熊孩子利用导致插件奔溃的BUG...;
|
||||||
&b2.8.2.0 - &a修复与部分插件TP有冲突的问题...;
|
&b2.8.2.0 - &a修复与部分插件TP有冲突的问题...;
|
||||||
&b2.8.1.9 - &e修复配置文件载入失败的问题...;
|
&b2.8.1.9 - &e修复配置文件载入失败的问题...;
|
||||||
</update.changes>
|
</update.changes>
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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("[权限]");
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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/");
|
||||||
|
|||||||
Reference in New Issue
Block a user