diff --git a/pom.xml b/pom.xml
index 1bee92d..148b7ca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,6 @@
Residence
${project.name}
- src
src/main/resources
@@ -19,8 +18,8 @@
maven-compiler-plugin
3.1
- 1.7
- 1.7
+ 1.8
+ 1.8
@@ -56,6 +55,10 @@
spigot-repo
https://hub.spigotmc.org/nexus/content/groups/public/
+
+ citycraft-repo
+ http://ci.citycraft.cn:8800/jenkins/plugin/repository/everything/
+
diff --git a/src/main/java/com/bekvon/bukkit/residence/Residence.java b/src/main/java/com/bekvon/bukkit/residence/Residence.java
index 223a3d7..55ba5c3 100644
--- a/src/main/java/com/bekvon/bukkit/residence/Residence.java
+++ b/src/main/java/com/bekvon/bukkit/residence/Residence.java
@@ -40,6 +40,7 @@ import com.bekvon.bukkit.residence.itemlist.WorldItemManager;
import com.bekvon.bukkit.residence.listeners.ResidenceBlockListener;
import com.bekvon.bukkit.residence.listeners.ResidenceEntityListener;
import com.bekvon.bukkit.residence.listeners.ResidencePlayerListener;
+import com.bekvon.bukkit.residence.listeners.ResidencePlayerListener_1_8;
import com.bekvon.bukkit.residence.permissions.PermissionManager;
import com.bekvon.bukkit.residence.persistance.YMLSaveHelper;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
@@ -67,7 +68,7 @@ import cn.citycraft.PluginHelper.config.FileConfig;
*/
public class Residence extends JavaPlugin {
- public static String bukkitver;
+ public static float bukkitver;
protected static ResidenceManager rmanager;
protected static SelectionManager smanager;
protected static PermissionManager gmanager;
@@ -75,6 +76,7 @@ public class Residence extends JavaPlugin {
protected static ResidenceBlockListener blistener;
protected static ResidencePlayerListener plistener;
protected static ResidenceEntityListener elistener;
+ protected static ResidencePlayerListener_1_8 plistener1_8;
protected static TransactionManager tmanager;
protected static PermissionListManager pmanager;
protected static LeaseManager leasemanager;
@@ -103,40 +105,26 @@ public class Residence extends JavaPlugin {
protected Map deleteConfirm;
- private Runnable doHeals = new Runnable() {
- @Override
- public void run() {
- plistener.doHeals();
- }
+ private Runnable doHeals = () -> plistener.doHeals();
+
+ private Runnable rentExpire = () -> {
+ rentmanager.checkCurrentRents();
+ if (cmanager.showIntervalMessages())
+ getLog().info(" - Rent Expirations checked!");
};
- private Runnable rentExpire = new Runnable() {
- @Override
- public void run() {
- rentmanager.checkCurrentRents();
- if (cmanager.showIntervalMessages())
- getLog().info(" - Rent Expirations checked!");
- }
+ private Runnable leaseExpire = () -> {
+ leasemanager.doExpirations();
+ if (cmanager.showIntervalMessages())
+ getLog().info(" - Lease Expirations checked!");
};
- private Runnable leaseExpire = new Runnable() {
- @Override
- public void run() {
- leasemanager.doExpirations();
- if (cmanager.showIntervalMessages())
- getLog().info(" - Lease Expirations checked!");
- }
- };
-
- private Runnable autoSave = new Runnable() {
- @Override
- public void run() {
- try {
- if (initsuccess)
- saveYml();
- } catch (Exception ex) {
- getLog().warning("领地数据保存错误,可能造成部分领地丢失,请尝试恢复备份文件!");
- }
+ private Runnable autoSave = () -> {
+ try {
+ if (initsuccess)
+ saveYml();
+ } catch (Exception ex) {
+ getLog().warning("领地数据保存错误,可能造成部分领地丢失,请尝试恢复备份文件!");
}
};
@@ -235,6 +223,10 @@ public class Residence extends JavaPlugin {
return wmanager;
}
+ public static boolean is1_8() {
+ return bukkitver == 1.8;
+ }
+
public static boolean isResAdminOn(Player player) {
if (resadminToggle.contains(player.getName()))
return true;
@@ -312,7 +304,7 @@ public class Residence extends JavaPlugin {
public void onEnable() {
try {
log = this.getLogger();
- bukkitver = this.getServer().getBukkitVersion().substring(0, 5);
+ bukkitver = Float.parseFloat(this.getServer().getBukkitVersion().substring(0, 3));
initsuccess = false;
deleteConfirm = new HashMap();
resadminToggle = new ArrayList();
@@ -412,9 +404,11 @@ public class Residence extends JavaPlugin {
blistener = new ResidenceBlockListener();
plistener = new ResidencePlayerListener();
elistener = new ResidenceEntityListener();
+ plistener1_8 = new ResidencePlayerListener_1_8();
PluginManager pm = getServer().getPluginManager();
pm.registerEvents(blistener, this);
pm.registerEvents(plistener, this);
+ pm.registerEvents(plistener1_8, this);
pm.registerEvents(elistener, this);
firstenable = false;
diff --git a/src/main/java/com/bekvon/bukkit/residence/ResidenceCommandListener.java b/src/main/java/com/bekvon/bukkit/residence/ResidenceCommandListener.java
index bd8e3d2..59c2a32 100644
--- a/src/main/java/com/bekvon/bukkit/residence/ResidenceCommandListener.java
+++ b/src/main/java/com/bekvon/bukkit/residence/ResidenceCommandListener.java
@@ -26,23 +26,101 @@ import com.sk89q.worldedit.bukkit.WorldEditPlugin;
public class ResidenceCommandListener extends Residence {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ ResidenceCommandEvent cevent = new ResidenceCommandEvent(command.getName(), args, sender);
+ server.getPluginManager().callEvent(cevent);
+ if (cevent.isCancelled())
+ return true;
+ if (command.getName().equals("resreload") && args.length == 0) {
+ if (sender instanceof Player) {
+ Player player = (Player) sender;
+ if (Residence.getPermissionManager().isResidenceAdmin(player)) {
+ this.reloadPlugin();
+ sender.sendMessage(ChatColor.GREEN + "[Residence] 重载配置文件.");
+ System.out.println("[Residence] 重载 by " + player.getName() + ".");
+ }
+ } else {
+ this.reloadPlugin();
+ System.out.println("[Residence] 重载 by 控制台.");
+ }
+ return true;
+ }
+ if (command.getName().equals("resload")) {
+ if (!(sender instanceof Player) || sender instanceof Player && gmanager.isResidenceAdmin((Player) sender))
+ try {
+ this.loadYml();
+ sender.sendMessage(ChatColor.GREEN + "[Residence] Reloaded save file...");
+ } catch (Exception ex) {
+ sender.sendMessage(ChatColor.RED + "[Residence] Unable to reload the save file, exception occured!");
+ sender.sendMessage(ChatColor.RED + ex.getMessage());
+ Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return true;
+ } else if (command.getName().equals("resworld")) {
+ if (args.length == 2 && args[0].equalsIgnoreCase("remove"))
+ if (sender instanceof ConsoleCommandSender) {
+ rmanager.removeAllFromWorld(sender, args[1]);
+ return true;
+ } else
+ sender.sendMessage(ChatColor.RED + "MUST be run from console.");
+ return false;
+ } else if (command.getName().equals("rc")) {
+ if (sender instanceof Player) {
+ Player player = (Player) sender;
+ String pname = player.getName();
+ if (cmanager.chatEnabled()) {
+ if (args.length == 0)
+ plistener.tooglePlayerResidenceChat(player);
+ else {
+ String area = plistener.getCurrentResidenceName(pname);
+ if (area != null) {
+ ChatChannel channel = chatmanager.getChannel(area);
+ if (channel != null) {
+ String message = "";
+ for (String arg : args)
+ message = message + " " + arg;
+ channel.chat(pname, message);
+ } else
+ player.sendMessage(ChatColor.RED + language.getPhrase("InvalidChannel"));
+ } else
+ player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence"));
+ }
+ } else
+ player.sendMessage(ChatColor.RED + language.getPhrase("ChatDisabled"));
+ }
+ return true;
+ } else if (command.getName().equals("res") || command.getName().equals("residence") || command.getName().equals("resadmin")) {
+ boolean resadmin = false;
+ if (sender instanceof Player) {
+ if (command.getName().equals("resadmin") && gmanager.isResidenceAdmin((Player) sender))
+ resadmin = true;
+ if (command.getName().equals("resadmin") && !gmanager.isResidenceAdmin((Player) sender)) {
+ ((Player) sender).sendMessage(ChatColor.RED + language.getPhrase("NonAdmin"));
+ return true;
+ }
+ } else
+ resadmin = true;
+ return commandRes(args, resadmin, command, sender);
+ }
+ return super.onCommand(sender, command, label, args);
+ }
+
private boolean commandHelp(String[] args, boolean resadmin, CommandSender sender) {
if (helppages != null) {
String helppath = "res";
for (String arg : args) {
- if (arg.equalsIgnoreCase("?")) {
+ if (arg.equalsIgnoreCase("?"))
break;
- }
helppath = helppath + "." + arg;
}
int page = 1;
- if (!args[args.length - 1].equalsIgnoreCase("?")) {
+ if (!args[args.length - 1].equalsIgnoreCase("?"))
try {
page = Integer.parseInt(args[args.length - 1]);
} catch (Exception ex) {
sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidHelp"));
}
- }
if (helppages.containesEntry(helppath)) {
helppages.printHelp(sender, page, helppath);
return true;
@@ -53,14 +131,12 @@ public class ResidenceCommandListener extends Residence {
@SuppressWarnings("deprecation")
private boolean commandRes(String[] args, boolean resadmin, Command command, CommandSender sender) {
- if (args.length > 0 && args[args.length - 1].equalsIgnoreCase("?") || args.length > 1
- && args[args.length - 2].equals("?"))
+ if (args.length > 0 && args[args.length - 1].equalsIgnoreCase("?") || args.length > 1 && args[args.length - 2].equals("?"))
return commandHelp(args, resadmin, sender);
int page = 1;
try {
- if (args.length > 0) {
+ if (args.length > 0)
page = Integer.parseInt(args[args.length - 1]);
- }
} catch (Exception ex) {
}
Player player = null;
@@ -70,15 +146,13 @@ public class ResidenceCommandListener extends Residence {
player = (Player) sender;
group = Residence.getPermissionManager().getGroup(player);
pname = player.getName();
- } else {
+ } else
resadmin = true;
- }
- if (cmanager.allowAdminsOnly()) {
+ if (cmanager.allowAdminsOnly())
if (!resadmin) {
- player.sendMessage(ChatColor.RED + language.getPhrase("AdminOnly"));
+ sender.sendMessage(ChatColor.RED + language.getPhrase("AdminOnly"));
return true;
}
- }
if (args.length == 0)
return false;
if (args.length == 0) {
@@ -92,20 +166,17 @@ public class ResidenceCommandListener extends Residence {
return commandResConfirm(args, resadmin, sender, page);
if (cmd.equals("version")) {
sender.sendMessage(ChatColor.GRAY + "------------------------------------");
- sender.sendMessage(ChatColor.RED + "当前服务器运行的 " + ChatColor.GOLD + "Residence"
- + ChatColor.RED + " 版本: " + ChatColor.BLUE + this.getDescription().getVersion());
+ sender.sendMessage(ChatColor.RED + "当前服务器运行的 " + ChatColor.GOLD + "Residence" + ChatColor.RED + " 版本: " + ChatColor.BLUE + this.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 authlist = this.getDescription().getAuthors();
- for (String auth : authlist) {
- if (names == null) {
+ for (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/");
@@ -122,43 +193,31 @@ public class ResidenceCommandListener extends Residence {
ClaimedResidence area = rmanager.getByName(args[1]);
if (area != null) {
area.getPermissions().setOwner(args[2], true);
- if (area.getParent() == null) {
+ if (area.getParent() == null)
sender.sendMessage(ChatColor.GREEN
- + language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + " "
- + args[1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW
- + args[2] + ChatColor.GREEN));
- } else {
- sender.sendMessage(ChatColor.GREEN
- + language.getPhrase("SubzoneOwnerChange", ChatColor.YELLOW + " "
- + args[1].split("\\.")[args[1].split("\\.").length - 1] + " "
- + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2]
- + ChatColor.GREEN));
- }
- } else {
+ + language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + " " + args[1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2] + ChatColor.GREEN));
+ else
+ sender.sendMessage(ChatColor.GREEN + language.getPhrase("SubzoneOwnerChange",
+ ChatColor.YELLOW + " " + args[1].split("\\.")[args[1].split("\\.").length - 1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2] + ChatColor.GREEN));
+ } else
sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
}
if (player == null)
return true;
- if (command.getName().equals("resadmin")) {
+ if (command.getName().equals("resadmin"))
if (args.length == 1 && args[0].equals("on")) {
resadminToggle.add(player.getName());
- player.sendMessage(ChatColor.YELLOW
- + language.getPhrase("AdminToggle", language.getPhrase("TurnOn")));
+ player.sendMessage(ChatColor.YELLOW + language.getPhrase("AdminToggle", language.getPhrase("TurnOn")));
return true;
} else if (args.length == 1 && args[0].equals("off")) {
resadminToggle.remove(player.getName());
- player.sendMessage(ChatColor.YELLOW
- + language.getPhrase("AdminToggle", language.getPhrase("TurnOff")));
+ player.sendMessage(ChatColor.YELLOW + language.getPhrase("AdminToggle", language.getPhrase("TurnOff")));
return true;
}
- }
- if (!resadmin && resadminToggle.contains(player.getName())) {
- if (!gmanager.isResidenceAdmin(player)) {
+ if (!resadmin && resadminToggle.contains(player.getName()))
+ if (!gmanager.isResidenceAdmin(player))
resadminToggle.remove(player.getName());
- }
- }
if (cmd.equals("select"))
return commandResSelect(args, resadmin, player, page);
if (cmd.equals("create"))
@@ -172,12 +231,9 @@ public class ResidenceCommandListener extends Residence {
return false;
if (resadmin || args[1].endsWith(pname)) {
rmanager.removeAllByOwner(player, args[1]);
- player.sendMessage(ChatColor.GREEN
- + language.getPhrase("RemovePlayersResidences", ChatColor.YELLOW + args[1]
- + ChatColor.GREEN));
- } else {
+ player.sendMessage(ChatColor.GREEN + language.getPhrase("RemovePlayersResidences", ChatColor.YELLOW + args[1] + ChatColor.GREEN));
+ } else
player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
- }
return true;
}
if (cmd.equals("compass"))
@@ -204,11 +260,10 @@ public class ResidenceCommandListener extends Residence {
if (cmd.equals("info")) {
if (args.length == 1) {
String area = rmanager.getNameByLoc(player.getLocation());
- if (area != null) {
+ if (area != null)
rmanager.printAreaInfo(area, player);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
} else if (args.length == 2) {
rmanager.printAreaInfo(args[1], player);
@@ -218,40 +273,20 @@ public class ResidenceCommandListener extends Residence {
}
if (cmd.equals("check")) {
if (args.length == 3 || args.length == 4) {
- if (args.length == 4) {
+ if (args.length == 4)
pname = args[3];
- }
ClaimedResidence res = rmanager.getByName(args[1]);
if (res == null) {
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
return true;
}
- if (!res.getPermissions().hasApplicableFlag(pname, args[2])) {
- player.sendMessage(language.getPhrase("FlagCheckFalse", ChatColor.YELLOW
- + args[2] + ChatColor.RED + "." + ChatColor.YELLOW + pname
- + ChatColor.RED + "." + ChatColor.YELLOW + args[1] + ChatColor.RED));
- } else {
- player.sendMessage(language
- .getPhrase(
- "FlagCheckTrue",
- ChatColor.GREEN
- + args[2]
- + ChatColor.YELLOW
- + "."
- + ChatColor.GREEN
- + pname
- + ChatColor.YELLOW
- + "."
- + ChatColor.YELLOW
- + args[1]
- + ChatColor.RED
- + "."
- + (res.getPermissions()
- .playerHas(pname,
- res.getPermissions().getWorld(),
- args[2], false) ? ChatColor.GREEN
- + "TRUE" : ChatColor.RED + "FALSE")));
- }
+ if (!res.getPermissions().hasApplicableFlag(pname, args[2]))
+ player.sendMessage(language.getPhrase("FlagCheckFalse",
+ ChatColor.YELLOW + args[2] + ChatColor.RED + "." + ChatColor.YELLOW + pname + ChatColor.RED + "." + ChatColor.YELLOW + args[1] + ChatColor.RED));
+ else
+ player.sendMessage(language.getPhrase("FlagCheckTrue",
+ ChatColor.GREEN + args[2] + ChatColor.YELLOW + "." + ChatColor.GREEN + pname + ChatColor.YELLOW + "." + ChatColor.YELLOW + args[1] + ChatColor.RED + "."
+ + (res.getPermissions().playerHas(pname, res.getPermissions().getWorld(), args[2], false) ? ChatColor.GREEN + "TRUE" : ChatColor.RED + "FALSE")));
return true;
}
return false;
@@ -260,13 +295,10 @@ public class ResidenceCommandListener extends Residence {
if (args.length != 1)
return false;
String res = rmanager.getNameByLoc(player.getLocation());
- if (res == null) {
+ if (res == null)
player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence"));
- } else {
- player.sendMessage(ChatColor.GREEN
- + language.getPhrase("InResidence", ChatColor.YELLOW + res
- + ChatColor.GREEN));
- }
+ else
+ player.sendMessage(ChatColor.GREEN + language.getPhrase("InResidence", ChatColor.YELLOW + res + ChatColor.GREEN));
return true;
}
if (cmd.equals("set"))
@@ -345,9 +377,9 @@ public class ResidenceCommandListener extends Residence {
return true;
}
ClaimedResidence res = rmanager.getByLoc(player.getLocation());
- if (res == null) {
+ if (res == null)
player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence"));
- } else {
+ else {
player.sendMessage(ChatColor.YELLOW + language.getPhrase("Moved") + "...");
player.teleport(res.getOutsideFreeLoc(player.getLocation()));
}
@@ -357,21 +389,19 @@ public class ResidenceCommandListener extends Residence {
if (args.length != 2)
return false;
Player targetplayer = Bukkit.getPlayer(args[1]);
- if (targetplayer == null) {
-
- }
+ if (targetplayer == null)
+ return false;
group = gmanager.getGroup(player);
if (!group.hasKickAccess()) {
player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
return true;
}
ClaimedResidence res = rmanager.getByLoc(targetplayer.getLocation());
- if (res.getOwner().equals(player.getName())) {
+ if (res.getOwner().equals(player.getName()))
if (res.getPlayersInResidence().contains(targetplayer)) {
targetplayer.teleport(res.getOutsideFreeLoc(player.getLocation()));
targetplayer.sendMessage(ChatColor.RED + language.getPhrase("Kicked") + "!");
}
- }
}
if (cmd.equals("mirror")) {
@@ -381,14 +411,14 @@ public class ResidenceCommandListener extends Residence {
return true;
}
if (cmd.equals("listall")) {
- if (args.length == 1) {
+ if (args.length == 1)
rmanager.listAllResidences(player, 1);
- } else if (args.length == 2) {
+ else if (args.length == 2)
try {
rmanager.listAllResidences(player, page);
} catch (Exception ex) {
}
- } else
+ else
return false;
return true;
}
@@ -397,14 +427,14 @@ public class ResidenceCommandListener extends Residence {
player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
return true;
}
- if (args.length == 1) {
+ if (args.length == 1)
rmanager.listAllResidences(player, 1, true);
- } else if (args.length == 2) {
+ else if (args.length == 2)
try {
rmanager.listAllResidences(player, page, true);
} catch (Exception ex) {
}
- } else
+ else
return false;
return true;
}
@@ -412,11 +442,8 @@ public class ResidenceCommandListener extends Residence {
if (args.length != 2)
return false;
try {
- player.sendMessage(ChatColor.GREEN
- + language.getPhrase("MaterialGet",
- ChatColor.GOLD + args[1] + ChatColor.GREEN + "." + ChatColor.RED
- + Material.getMaterial(Integer.parseInt(args[1])).name()
- + ChatColor.GREEN));
+ player.sendMessage(ChatColor.GREEN + language.getPhrase("MaterialGet",
+ ChatColor.GOLD + args[1] + ChatColor.GREEN + "." + ChatColor.RED + Material.getMaterial(Integer.parseInt(args[1])).name() + ChatColor.GREEN));
} catch (Exception ex) {
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMaterial"));
}
@@ -424,11 +451,10 @@ public class ResidenceCommandListener extends Residence {
}
if (cmd.equals("tpset")) {
ClaimedResidence res = rmanager.getByLoc(player.getLocation());
- if (res != null) {
+ if (res != null)
res.setTpLoc(player, resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
}
if (cmd.equals("tp")) {
@@ -466,10 +492,8 @@ public class ResidenceCommandListener extends Residence {
return true;
}
res.getPermissions().setOwner("Server Land", false);
- player.sendMessage(ChatColor.GREEN
- + language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + args[1]
- + ChatColor.GREEN + "." + ChatColor.YELLOW + "Server Land"
- + ChatColor.GREEN));
+ player.sendMessage(
+ ChatColor.GREEN + language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + args[1] + ChatColor.GREEN + "." + ChatColor.YELLOW + "Server Land" + ChatColor.GREEN));
return true;
} else {
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
@@ -485,92 +509,69 @@ public class ResidenceCommandListener extends Residence {
if (area != null) {
area.getPermissions().clearFlags();
player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagsCleared"));
- } else {
+ } else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
}
if (cmd.equals("tool")) {
- player.sendMessage(ChatColor.YELLOW + language.getPhrase("SelectionTool") + ":"
- + ChatColor.GREEN + Material.getMaterial(cmanager.getSelectionTooldID()));
- player.sendMessage(ChatColor.YELLOW + language.getPhrase("InfoTool") + ": "
- + ChatColor.GREEN + Material.getMaterial(cmanager.getInfoToolID()));
+ player.sendMessage(ChatColor.YELLOW + language.getPhrase("SelectionTool") + ":" + ChatColor.GREEN + Material.getMaterial(cmanager.getSelectionTooldID()));
+ player.sendMessage(ChatColor.YELLOW + language.getPhrase("InfoTool") + ": " + ChatColor.GREEN + Material.getMaterial(cmanager.getInfoToolID()));
return true;
}
return false;
}
private boolean commandResArea(String[] args, boolean resadmin, Player player, int page) {
- if (args.length == 4) {
+ if (args.length == 4)
if (args[1].equals("remove")) {
ClaimedResidence res = rmanager.getByName(args[2]);
- if (res != null) {
+ if (res != null)
res.removeArea(player, args[3], resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
} else if (args[1].equals("add")) {
- WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin(
- "WorldEdit");
- if (wep != null) {
- if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId) {
+ WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit");
+ if (wep != null)
+ if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId)
smanager.worldEdit(player);
- }
- }
if (smanager.hasPlacedBoth(player.getName())) {
ClaimedResidence res = rmanager.getByName(args[2]);
- if (res != null) {
- res.addArea(
- player,
- new CuboidArea(smanager.getPlayerLoc1(player.getName()), smanager
- .getPlayerLoc2(player.getName())), args[3], resadmin);
- } else {
+ if (res != null)
+ res.addArea(player, new CuboidArea(smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName())), args[3], resadmin);
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
- } else {
+ } else
player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints"));
- }
return true;
} else if (args[1].equals("replace")) {
- WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin(
- "WorldEdit");
- if (wep != null) {
- if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId) {
+ WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit");
+ if (wep != null)
+ if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId)
smanager.worldEdit(player);
- }
- }
if (smanager.hasPlacedBoth(player.getName())) {
ClaimedResidence res = rmanager.getByName(args[2]);
- if (res != null) {
- res.replaceArea(
- player,
- new CuboidArea(smanager.getPlayerLoc1(player.getName()), smanager
- .getPlayerLoc2(player.getName())), args[3], resadmin);
- } else {
+ if (res != null)
+ res.replaceArea(player, new CuboidArea(smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName())), args[3], resadmin);
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
- } else {
+ } else
player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints"));
- }
return true;
}
- }
if ((args.length == 3 || args.length == 4) && args[1].equals("list")) {
ClaimedResidence res = rmanager.getByName(args[2]);
- if (res != null) {
+ if (res != null)
res.printAreaList(player, page);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
} else if ((args.length == 3 || args.length == 4) && args[1].equals("listall")) {
ClaimedResidence res = rmanager.getByName(args[2]);
- if (res != null) {
+ if (res != null)
res.printAdvancedAreaList(player, page);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
}
return false;
@@ -579,8 +580,7 @@ public class ResidenceCommandListener extends Residence {
private boolean commandResBank(String[] args, boolean resadmin, Player player, int page) {
if (args.length != 3)
return false;
- ClaimedResidence res = rmanager.getByName(plistener.getCurrentResidenceName(player
- .getName()));
+ ClaimedResidence res = rmanager.getByName(plistener.getCurrentResidenceName(player.getName()));
if (res == null) {
player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence"));
return true;
@@ -592,11 +592,11 @@ public class ResidenceCommandListener extends Residence {
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount"));
return true;
}
- if (args[1].equals("deposit")) {
+ if (args[1].equals("deposit"))
res.getBank().deposit(player, amount, resadmin);
- } else if (args[1].equals("withdraw")) {
+ else if (args[1].equals("withdraw"))
res.getBank().withdraw(player, amount, resadmin);
- } else
+ else
return false;
return true;
}
@@ -608,22 +608,15 @@ public class ResidenceCommandListener extends Residence {
return true;
}
if (rmanager.getByName(args[1]) != null) {
- if (rmanager.getByName(args[1]).getWorld()
- .equalsIgnoreCase(player.getWorld().getName())) {
+ if (rmanager.getByName(args[1]).getWorld().equalsIgnoreCase(player.getWorld().getName())) {
Location low = rmanager.getByName(args[1]).getArea("main").getLowLoc();
Location high = rmanager.getByName(args[1]).getArea("main").getHighLoc();
- Location mid = new Location(low.getWorld(),
- (low.getBlockX() + high.getBlockX()) / 2,
- (low.getBlockY() + high.getBlockY()) / 2,
- (low.getBlockZ() + high.getBlockZ()) / 2);
+ Location mid = new Location(low.getWorld(), (low.getBlockX() + high.getBlockX()) / 2, (low.getBlockY() + high.getBlockY()) / 2, (low.getBlockZ() + high.getBlockZ()) / 2);
player.setCompassTarget(mid);
- player.sendMessage(ChatColor.GREEN
- + language.getPhrase("CompassTargetSet", ChatColor.YELLOW + args[1]
- + ChatColor.GREEN));
+ player.sendMessage(ChatColor.GREEN + language.getPhrase("CompassTargetSet", ChatColor.YELLOW + args[1] + ChatColor.GREEN));
}
- } else {
+ } else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
}
@@ -636,16 +629,13 @@ public class ResidenceCommandListener extends Residence {
}
if (args.length == 1) {
String area = deleteConfirm.get(name);
- if (area == null) {
+ if (area == null)
sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- } else {
+ else {
rmanager.removeResidence(player, area, resadmin);
deleteConfirm.remove(name);
- if (player == null) {
- sender.sendMessage(ChatColor.GREEN
- + Residence.getLanguage().getPhrase("ResidenceRemove",
- ChatColor.YELLOW + name + ChatColor.GREEN));
- }
+ if (player == null)
+ sender.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceRemove", ChatColor.YELLOW + name + ChatColor.GREEN));
}
}
return true;
@@ -655,14 +645,11 @@ public class ResidenceCommandListener extends Residence {
if (args.length != 2)
return false;
WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit");
- if (wep != null) {
- if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId) {
+ if (wep != null)
+ if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId)
smanager.worldEdit(player);
- }
- }
if (smanager.hasPlacedBoth(player.getName())) {
- rmanager.addResidence(player, args[1], smanager.getPlayerLoc1(player.getName()),
- smanager.getPlayerLoc2(player.getName()), resadmin);
+ rmanager.addResidence(player, args[1], smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName()), resadmin);
return true;
} else {
player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints"));
@@ -673,19 +660,17 @@ public class ResidenceCommandListener extends Residence {
private boolean commandResGset(String[] args, boolean resadmin, Player player, int page) {
if (args.length == 4) {
ClaimedResidence area = rmanager.getByLoc(player.getLocation());
- if (area != null) {
+ if (area != null)
area.getPermissions().setGroupFlag(player, args[1], args[2], args[3], resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidArea"));
- }
return true;
} else if (args.length == 5) {
ClaimedResidence area = rmanager.getByName(args[1]);
- if (area != null) {
+ if (area != null)
area.getPermissions().setGroupFlag(player, args[2], args[3], args[4], resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
}
return false;
@@ -694,24 +679,19 @@ public class ResidenceCommandListener extends Residence {
private boolean commandResLease(String[] args, boolean resadmin, Player player, int page) {
if (args.length == 2 || args.length == 3) {
if (args[1].equals("renew")) {
- if (args.length == 3) {
+ if (args.length == 3)
leasemanager.renewArea(args[2], player);
- } else {
+ else
leasemanager.renewArea(rmanager.getNameByLoc(player.getLocation()), player);
- }
return true;
- } else if (args[1].equals("cost")) {
+ } else if (args[1].equals("cost"))
if (args.length == 3) {
ClaimedResidence res = Residence.getResidenceManager().getByName(args[2]);
if (res == null || leasemanager.leaseExpires(args[2])) {
int cost = leasemanager.getRenewCost(res);
- player.sendMessage(ChatColor.YELLOW
- + language.getPhrase("LeaseRenewalCost", ChatColor.RED + args[2]
- + ChatColor.YELLOW + "." + ChatColor.RED + cost
- + ChatColor.YELLOW));
- } else {
+ player.sendMessage(ChatColor.YELLOW + language.getPhrase("LeaseRenewalCost", ChatColor.RED + args[2] + ChatColor.YELLOW + "." + ChatColor.RED + cost + ChatColor.YELLOW));
+ } else
player.sendMessage(ChatColor.RED + language.getPhrase("LeaseNotExpire"));
- }
return true;
} else {
String area = rmanager.getNameByLoc(player.getLocation());
@@ -722,17 +702,12 @@ public class ResidenceCommandListener extends Residence {
}
if (leasemanager.leaseExpires(area)) {
int cost = leasemanager.getRenewCost(res);
- player.sendMessage(ChatColor.YELLOW
- + language.getPhrase("LeaseRenewalCost", ChatColor.RED + area
- + ChatColor.YELLOW + "." + ChatColor.RED + cost
- + ChatColor.YELLOW));
- } else {
+ player.sendMessage(ChatColor.YELLOW + language.getPhrase("LeaseRenewalCost", ChatColor.RED + area + ChatColor.YELLOW + "." + ChatColor.RED + cost + ChatColor.YELLOW));
+ } else
player.sendMessage(ChatColor.RED + language.getPhrase("LeaseNotExpire"));
- }
return true;
}
- }
- } else if (args.length == 4) {
+ } else if (args.length == 4)
if (args[1].equals("set")) {
if (!resadmin) {
player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
@@ -742,9 +717,8 @@ public class ResidenceCommandListener extends Residence {
if (leasemanager.leaseExpires(args[2])) {
leasemanager.removeExpireTime(args[2]);
player.sendMessage(ChatColor.GREEN + language.getPhrase("LeaseInfinite"));
- } else {
+ } else
player.sendMessage(ChatColor.RED + language.getPhrase("LeaseNotExpire"));
- }
return true;
} else {
int days;
@@ -758,7 +732,6 @@ public class ResidenceCommandListener extends Residence {
return true;
}
}
- }
return false;
}
@@ -786,24 +759,20 @@ public class ResidenceCommandListener extends Residence {
}
} else if (args.length == 5) {
if (args[1].equals("set")) {
- pmanager.getList(player.getName(), args[2]).setFlag(args[3],
- FlagPermissions.stringToFlagState(args[4]));
+ pmanager.getList(player.getName(), args[2]).setFlag(args[3], FlagPermissions.stringToFlagState(args[4]));
player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet"));
return true;
}
- } else if (args.length == 6) {
+ } else if (args.length == 6)
if (args[1].equals("gset")) {
- pmanager.getList(player.getName(), args[2]).setGroupFlag(args[3], args[4],
- FlagPermissions.stringToFlagState(args[5]));
+ pmanager.getList(player.getName(), args[2]).setGroupFlag(args[3], args[4], FlagPermissions.stringToFlagState(args[5]));
player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet"));
return true;
} else if (args[1].equals("pset")) {
- pmanager.getList(player.getName(), args[2]).setPlayerFlag(args[3], args[4],
- FlagPermissions.stringToFlagState(args[5]));
+ pmanager.getList(player.getName(), args[2]).setPlayerFlag(args[3], args[4], FlagPermissions.stringToFlagState(args[5]));
player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet"));
return true;
}
- }
return false;
}
@@ -848,14 +817,13 @@ public class ResidenceCommandListener extends Residence {
return true;
}
}
- if (res != null) {
- if (listtype.equalsIgnoreCase("blacklist")) {
+ if (res != null && listtype != null) {
+ if (listtype.equalsIgnoreCase("blacklist"))
res.getItemBlacklist().playerListChange(player, mat, resadmin);
- } else if (listtype.equalsIgnoreCase("ignorelist")) {
+ else if (listtype.equalsIgnoreCase("ignorelist"))
res.getItemIgnoreList().playerListChange(player, mat, resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidList"));
- }
return true;
} else {
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
@@ -878,25 +846,22 @@ public class ResidenceCommandListener extends Residence {
if (command.equals("release")) {
if (args.length != 3)
return false;
- if (rentmanager.isRented(args[2])) {
+ if (rentmanager.isRented(args[2]))
rentmanager.removeFromForRent(player, args[2], resadmin);
- } else {
+ else
rentmanager.unrent(player, args[2], resadmin);
- }
return true;
}
if (command.equals("info")) {
if (args.length == 2) {
String areaname = rmanager.getNameByLoc(player.getLocation());
tmanager.viewSaleInfo(areaname, player);
- if (cmanager.enabledRentSystem() && rentmanager.isForRent(areaname)) {
+ if (cmanager.enabledRentSystem() && rentmanager.isForRent(areaname))
rentmanager.printRentInfo(player, areaname);
- }
} else if (args.length == 3) {
tmanager.viewSaleInfo(args[2], player);
- if (cmanager.enabledRentSystem() && rentmanager.isForRent(args[2])) {
+ if (cmanager.enabledRentSystem() && rentmanager.isForRent(args[2]))
rentmanager.printRentInfo(player, args[2]);
- }
} else
return false;
return true;
@@ -937,24 +902,20 @@ public class ResidenceCommandListener extends Residence {
if (args.length != 4)
return false;
boolean value;
- if (args[3].equalsIgnoreCase("true") || args[3].equalsIgnoreCase("t")) {
+ if (args[3].equalsIgnoreCase("true") || args[3].equalsIgnoreCase("t"))
value = true;
- } else if (args[3].equalsIgnoreCase("false") || args[3].equalsIgnoreCase("f")) {
+ else if (args[3].equalsIgnoreCase("false") || args[3].equalsIgnoreCase("f"))
value = false;
- } else {
+ else {
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidBoolean"));
return true;
}
- if (rentmanager.isRented(args[2])
- && rentmanager.getRentingPlayer(args[2]).equalsIgnoreCase(player.getName())) {
+ if (rentmanager.isRented(args[2]) && rentmanager.getRentingPlayer(args[2]).equalsIgnoreCase(player.getName()))
rentmanager.setRentedRepeatable(player, args[2], value, resadmin);
- } else if (rentmanager.isForRent(args[2])) {
+ else if (rentmanager.isForRent(args[2]))
rentmanager.setRentRepeatable(player, args[2], value, resadmin);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("RentReleaseInvalid", ChatColor.YELLOW + args[2]
- + ChatColor.RED));
- }
+ else
+ player.sendMessage(ChatColor.RED + language.getPhrase("RentReleaseInvalid", ChatColor.YELLOW + args[2] + ChatColor.RED));
return true;
}
@@ -965,9 +926,8 @@ public class ResidenceCommandListener extends Residence {
}
player.sendMessage(ChatColor.BLUE + "---" + language.getPhrase("MarketList") + "---");
tmanager.printForSaleResidences(player);
- if (cmanager.enabledRentSystem()) {
+ if (cmanager.enabledRentSystem())
rentmanager.printRentableResidences(player);
- }
return true;
}
@@ -975,14 +935,13 @@ public class ResidenceCommandListener extends Residence {
if (args.length < 3 || args.length > 4)
return false;
boolean repeat = false;
- if (args.length == 4) {
- if (args[3].equalsIgnoreCase("t") || args[3].equalsIgnoreCase("true")) {
+ if (args.length == 4)
+ if (args[3].equalsIgnoreCase("t") || args[3].equalsIgnoreCase("true"))
repeat = true;
- } else if (!args[3].equalsIgnoreCase("f") && !args[3].equalsIgnoreCase("false")) {
+ else if (!args[3].equalsIgnoreCase("f") && !args[3].equalsIgnoreCase("false")) {
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidBoolean"));
return true;
}
- }
rentmanager.rent(player, args[2], repeat, resadmin);
return true;
}
@@ -1009,14 +968,13 @@ public class ResidenceCommandListener extends Residence {
return true;
}
boolean repeat = false;
- if (args.length == 6) {
- if (args[5].equalsIgnoreCase("t") || args[5].equalsIgnoreCase("true")) {
+ if (args.length == 6)
+ if (args[5].equalsIgnoreCase("t") || args[5].equalsIgnoreCase("true"))
repeat = true;
- } else if (!args[5].equalsIgnoreCase("f") && !args[5].equalsIgnoreCase("false")) {
+ else if (!args[5].equalsIgnoreCase("f") && !args[5].equalsIgnoreCase("false")) {
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidBoolean"));
return true;
}
- }
rentmanager.setForRent(player, args[2], cost, days, repeat, resadmin);
return true;
}
@@ -1037,19 +995,17 @@ public class ResidenceCommandListener extends Residence {
} else if (args[1].equals("remove")) {
if (args.length > 2 && args[2].equals("enter")) {
res = rmanager.getByLoc(player.getLocation());
- if (res != null) {
+ if (res != null)
res.setEnterLeaveMessage(player, null, true, resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
} else if (args.length > 2 && args[2].equals("leave")) {
res = rmanager.getByLoc(player.getLocation());
- if (res != null) {
+ if (res != null)
res.setEnterLeaveMessage(player, null, false, resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
}
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMessageType"));
@@ -1066,14 +1022,12 @@ public class ResidenceCommandListener extends Residence {
if (args.length != 4)
return false;
if (args[3].equals("enter")) {
- if (res != null) {
+ if (res != null)
res.setEnterLeaveMessage(player, null, true, resadmin);
- }
return true;
} else if (args[3].equals("leave")) {
- if (res != null) {
+ if (res != null)
res.setEnterLeaveMessage(player, null, false, resadmin);
- }
return true;
}
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMessageType"));
@@ -1085,49 +1039,43 @@ public class ResidenceCommandListener extends Residence {
if (start == 0)
return false;
String message = "";
- for (int i = start; i < args.length; i++) {
+ for (int i = start; i < args.length; i++)
message = message + args[i] + " ";
- }
- if (res != null) {
+ if (res != null)
res.setEnterLeaveMessage(player, message, enter, resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
}
private boolean commandResPset(String[] args, boolean resadmin, Player player, int page) {
if (args.length == 3 && args[2].equalsIgnoreCase("removeall")) {
ClaimedResidence area = rmanager.getByLoc(player.getLocation());
- if (area != null) {
+ if (area != null)
area.getPermissions().removeAllPlayerFlags(player, args[1], resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
} else if (args.length == 4 && args[3].equalsIgnoreCase("removeall")) {
ClaimedResidence area = rmanager.getByName(args[1]);
- if (area != null) {
+ if (area != null)
area.getPermissions().removeAllPlayerFlags(player, args[2], resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
} else if (args.length == 4) {
ClaimedResidence area = rmanager.getByLoc(player.getLocation());
- if (area != null) {
+ if (area != null)
area.getPermissions().setPlayerFlag(player, args[1], args[2], args[3], resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
} else if (args.length == 5) {
ClaimedResidence area = rmanager.getByName(args[1]);
- if (area != null) {
+ if (area != null)
area.getPermissions().setPlayerFlag(player, args[2], args[3], args[4], resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
}
return false;
@@ -1144,26 +1092,18 @@ public class ResidenceCommandListener extends Residence {
if (res.getParent() != null) {
String[] split = area.split("\\.");
String words = split[split.length - 1];
- if (!deleteConfirm.containsKey(player.getName())
- || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW
- + words + ChatColor.RED));
+ if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) {
+ player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED));
deleteConfirm.put(player.getName(), area);
- } else {
+ } else
rmanager.removeResidence(player, area, resadmin);
- }
return true;
} else {
- if (!deleteConfirm.containsKey(player.getName())
- || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + area
- + ChatColor.RED));
+ if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) {
+ player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + area + ChatColor.RED));
deleteConfirm.put(player.getName(), area);
- } else {
+ } else
rmanager.removeResidence(player, area, resadmin);
- }
return true;
}
}
@@ -1173,8 +1113,7 @@ public class ResidenceCommandListener extends Residence {
if (args.length != 2)
return false;
if (player != null) {
- if (!deleteConfirm.containsKey(player.getName())
- || !args[1].equalsIgnoreCase(deleteConfirm.get(player.getName()))) {
+ if (!deleteConfirm.containsKey(player.getName()) || !args[1].equalsIgnoreCase(deleteConfirm.get(player.getName()))) {
String words = "";
if (rmanager.getByName(args[1]) != null) {
ClaimedResidence res = rmanager.getByName(args[1]);
@@ -1183,46 +1122,29 @@ public class ResidenceCommandListener extends Residence {
words = split[split.length - 1];
}
}
- if (words == "") {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1]
- + ChatColor.RED));
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words
- + ChatColor.RED));
- }
+ if (words == "")
+ player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1] + ChatColor.RED));
+ else
+ player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED));
deleteConfirm.put(player.getName(), args[1]);
- } else {
+ } else
rmanager.removeResidence(player, args[1], resadmin);
- }
- } else {
- if (!deleteConfirm.containsKey("Console")
- || !args[1].equalsIgnoreCase(deleteConfirm.get("Console"))) {
- String words = "";
- if (rmanager.getByName(args[1]) != null) {
- ClaimedResidence res = rmanager.getByName(args[1]);
- if (res.getParent() != null) {
- String[] split = args[1].split("\\.");
- words = split[split.length - 1];
- }
+ } else if (!deleteConfirm.containsKey("Console") || !args[1].equalsIgnoreCase(deleteConfirm.get("Console"))) {
+ String words = "";
+ if (rmanager.getByName(args[1]) != null) {
+ ClaimedResidence res = rmanager.getByName(args[1]);
+ if (res.getParent() != null) {
+ String[] split = args[1].split("\\.");
+ words = split[split.length - 1];
}
- if (words == "") {
- server.getConsoleSender().sendMessage(
- ChatColor.RED
- + language.getPhrase("DeleteConfirm", ChatColor.YELLOW
- + args[1] + ChatColor.RED));
- } else {
- server.getConsoleSender().sendMessage(
- ChatColor.RED
- + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW
- + words + ChatColor.RED));
- }
- deleteConfirm.put("Console", args[1]);
- } else {
- rmanager.removeResidence(args[1]);
}
- }
+ if (words == "")
+ server.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1] + ChatColor.RED));
+ else
+ server.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED));
+ deleteConfirm.put("Console", args[1]);
+ } else
+ rmanager.removeResidence(args[1]);
return true;
}
@@ -1236,16 +1158,14 @@ public class ResidenceCommandListener extends Residence {
player.sendMessage(ChatColor.RED + language.getPhrase("SelectDiabled"));
return true;
}
- if ((!player.hasPermission("residence.create")
- && player.isPermissionSet("residence.create")
- && !player.hasPermission("residence.select") && player
- .isPermissionSet("residence.select")) && !resadmin) {
+ if ((!player.hasPermission("residence.create") && player.isPermissionSet("residence.create") && !player.hasPermission("residence.select") && player.isPermissionSet("residence.select"))
+ && !resadmin) {
player.sendMessage(ChatColor.RED + language.getPhrase("SelectDiabled"));
return true;
}
if (args.length == 2) {
if (args[1].equals("size") || args[1].equals("cost")) {
- if (smanager.hasPlacedBoth(player.getName())) {
+ if (smanager.hasPlacedBoth(player.getName()))
try {
smanager.showSelectionInfo(player);
return true;
@@ -1253,7 +1173,7 @@ public class ResidenceCommandListener extends Residence {
Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
return true;
}
- } else if (smanager.worldEdit(player)) {
+ else if (smanager.worldEdit(player))
try {
smanager.showSelectionInfo(player);
return true;
@@ -1261,7 +1181,6 @@ public class ResidenceCommandListener extends Residence {
Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
return true;
}
- }
} else if (args[1].equals("vert")) {
smanager.vert(player, resadmin);
return true;
@@ -1273,29 +1192,23 @@ public class ResidenceCommandListener extends Residence {
return true;
} else if (args[1].equals("coords")) {
Location playerLoc1 = smanager.getPlayerLoc1(player.getName());
- if (playerLoc1 != null) {
- player.sendMessage(ChatColor.GREEN + language.getPhrase("Primary.Selection")
- + ":" + ChatColor.AQUA + " (" + playerLoc1.getBlockX() + ", "
- + playerLoc1.getBlockY() + ", " + playerLoc1.getBlockZ() + ")");
- }
+ if (playerLoc1 != null)
+ player.sendMessage(ChatColor.GREEN + language.getPhrase("Primary.Selection") + ":" + ChatColor.AQUA + " (" + playerLoc1.getBlockX() + ", " + playerLoc1.getBlockY() + ", "
+ + playerLoc1.getBlockZ() + ")");
Location playerLoc2 = smanager.getPlayerLoc2(player.getName());
- if (playerLoc2 != null) {
- player.sendMessage(ChatColor.GREEN + language.getPhrase("Secondary.Selection")
- + ":" + ChatColor.AQUA + " (" + playerLoc2.getBlockX() + ", "
- + playerLoc2.getBlockY() + ", " + playerLoc2.getBlockZ() + ")");
- }
+ if (playerLoc2 != null)
+ player.sendMessage(ChatColor.GREEN + language.getPhrase("Secondary.Selection") + ":" + ChatColor.AQUA + " (" + playerLoc2.getBlockX() + ", " + playerLoc2.getBlockY() + ", "
+ + playerLoc2.getBlockZ() + ")");
return true;
} else if (args[1].equals("chunk")) {
smanager.selectChunk(player);
return true;
} else if (args[1].equals("worldedit")) {
- if (smanager.worldEdit(player)) {
- player.sendMessage(ChatColor.GREEN
- + Residence.getLanguage().getPhrase("SelectionSuccess"));
- }
+ if (smanager.worldEdit(player))
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SelectionSuccess"));
return true;
}
- } else if (args.length == 3) {
+ } else if (args.length == 3)
if (args[1].equals("expand")) {
int amount;
try {
@@ -1317,16 +1230,14 @@ public class ResidenceCommandListener extends Residence {
smanager.modify(player, true, amount);
return true;
}
- }
if (args.length > 1 && args[1].equals("residence")) {
String resName;
String areaName;
ClaimedResidence res = null;
- if (args.length > 2) {
+ if (args.length > 2)
res = rmanager.getByName(args[2]);
- } else {
+ else
res = rmanager.getByLoc(player.getLocation());
- }
if (res == null) {
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
return true;
@@ -1343,43 +1254,34 @@ public class ResidenceCommandListener extends Residence {
if (area != null) {
smanager.placeLoc1(player, area.getHighLoc());
smanager.placeLoc2(player, area.getLowLoc());
- player.sendMessage(ChatColor.GREEN
- + language.getPhrase("SelectionArea", ChatColor.GOLD + areaName
- + ChatColor.GREEN + "." + ChatColor.GOLD + resName
- + ChatColor.GREEN));
- } else {
+ player.sendMessage(ChatColor.GREEN + language.getPhrase("SelectionArea", ChatColor.GOLD + areaName + ChatColor.GREEN + "." + ChatColor.GOLD + resName + ChatColor.GREEN));
+ } else
player.sendMessage(ChatColor.RED + language.getPhrase("AreaNonExist"));
- }
return true;
- } else {
+ } else
try {
- smanager.selectBySize(player, Integer.parseInt(args[1]), Integer.parseInt(args[2]),
- Integer.parseInt(args[3]));
+ smanager.selectBySize(player, Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]));
return true;
} catch (Exception ex) {
player.sendMessage(ChatColor.RED + language.getPhrase("SelectionFail"));
return true;
}
- }
}
private boolean commandResSet(String[] args, boolean resadmin, Player player, int page) {
if (args.length == 3) {
String area = rmanager.getNameByLoc(player.getLocation());
- if (area != null) {
- rmanager.getByName(area).getPermissions()
- .setFlag(player, args[1], args[2], resadmin);
- } else {
+ if (area != null)
+ rmanager.getByName(area).getPermissions().setFlag(player, args[1], args[2], resadmin);
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
} else if (args.length == 4) {
ClaimedResidence area = rmanager.getByName(args[1]);
- if (area != null) {
+ if (area != null)
area.getPermissions().setFlag(player, args[2], args[3], resadmin);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
}
return false;
@@ -1388,16 +1290,14 @@ public class ResidenceCommandListener extends Residence {
private boolean commandResSublist(String[] args, boolean resadmin, Player player, int page) {
if (args.length == 1 || args.length == 2 || args.length == 3) {
ClaimedResidence res;
- if (args.length == 1) {
+ if (args.length == 1)
res = rmanager.getByLoc(player.getLocation());
- } else {
+ else
res = rmanager.getByName(args[1]);
- }
- if (res != null) {
+ if (res != null)
res.printSubzoneList(player, page);
- } else {
+ else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
- }
return true;
}
return false;
@@ -1416,118 +1316,20 @@ public class ResidenceCommandListener extends Residence {
zname = args[2];
}
WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit");
- if (wep != null) {
- if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId) {
+ if (wep != null)
+ if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId)
smanager.worldEdit(player);
- }
- }
if (smanager.hasPlacedBoth(player.getName())) {
ClaimedResidence res = rmanager.getByName(parent);
if (res == null) {
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
return true;
}
- res.addSubzone(player, smanager.getPlayerLoc1(player.getName()),
- smanager.getPlayerLoc2(player.getName()), zname, resadmin);
+ res.addSubzone(player, smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName()), zname, resadmin);
return true;
} else {
player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints"));
return true;
}
}
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- ResidenceCommandEvent cevent = new ResidenceCommandEvent(command.getName(), args, sender);
- server.getPluginManager().callEvent(cevent);
- if (cevent.isCancelled())
- return true;
- if (command.getName().equals("resreload") && args.length == 0) {
- if (sender instanceof Player) {
- Player player = (Player) sender;
- if (Residence.getPermissionManager().isResidenceAdmin(player)) {
- this.reloadPlugin();
- sender.sendMessage(ChatColor.GREEN + "[Residence] 重载配置文件.");
- System.out.println("[Residence] 重载 by " + player.getName() + ".");
- }
- } else {
- this.reloadPlugin();
- System.out.println("[Residence] 重载 by 控制台.");
- }
- return true;
- }
- if (command.getName().equals("resload")) {
- if (!(sender instanceof Player) || sender instanceof Player
- && gmanager.isResidenceAdmin((Player) sender)) {
- try {
- this.loadYml();
- sender.sendMessage(ChatColor.GREEN + "[Residence] Reloaded save file...");
- } catch (Exception ex) {
- sender.sendMessage(ChatColor.RED
- + "[Residence] Unable to reload the save file, exception occured!");
- sender.sendMessage(ChatColor.RED + ex.getMessage());
- Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- return true;
- } else if (command.getName().equals("resworld")) {
- if (args.length == 2 && args[0].equalsIgnoreCase("remove")) {
- if (sender instanceof ConsoleCommandSender) {
- rmanager.removeAllFromWorld(sender, args[1]);
- return true;
- } else {
- sender.sendMessage(ChatColor.RED + "MUST be run from console.");
- }
- }
- return false;
- } else if (command.getName().equals("rc")) {
- if (sender instanceof Player) {
- Player player = (Player) sender;
- String pname = player.getName();
- if (cmanager.chatEnabled()) {
- if (args.length == 0) {
- plistener.tooglePlayerResidenceChat(player);
- } else {
- String area = plistener.getCurrentResidenceName(pname);
- if (area != null) {
- ChatChannel channel = chatmanager.getChannel(area);
- if (channel != null) {
- String message = "";
- for (String arg : args) {
- message = message + " " + arg;
- }
- channel.chat(pname, message);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidChannel"));
- }
- } else {
- player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence"));
- }
- }
- } else {
- player.sendMessage(ChatColor.RED + language.getPhrase("ChatDisabled"));
- }
- }
- return true;
- } else if (command.getName().equals("res") || command.getName().equals("residence")
- || command.getName().equals("resadmin")) {
- boolean resadmin = false;
- if (sender instanceof Player) {
- if (command.getName().equals("resadmin")
- && gmanager.isResidenceAdmin((Player) sender)) {
- resadmin = true;
- }
- if (command.getName().equals("resadmin")
- && !gmanager.isResidenceAdmin((Player) sender)) {
- ((Player) sender).sendMessage(ChatColor.RED + language.getPhrase("NonAdmin"));
- return true;
- }
- } else {
- resadmin = true;
- }
- return commandRes(args, resadmin, command, sender);
- }
- return super.onCommand(sender, command, label, args);
- }
}
diff --git a/src/main/java/com/bekvon/bukkit/residence/economy/rent/RentManager.java b/src/main/java/com/bekvon/bukkit/residence/economy/rent/RentManager.java
index 472a8df..c58c589 100644
--- a/src/main/java/com/bekvon/bukkit/residence/economy/rent/RentManager.java
+++ b/src/main/java/com/bekvon/bukkit/residence/economy/rent/RentManager.java
@@ -4,14 +4,6 @@
*/
package com.bekvon.bukkit.residence.economy.rent;
-import org.bukkit.ChatColor;
-
-import com.bekvon.bukkit.residence.Residence;
-import com.bekvon.bukkit.residence.event.ResidenceRentEvent;
-import com.bekvon.bukkit.residence.event.ResidenceRentEvent.RentEventType;
-import com.bekvon.bukkit.residence.permissions.PermissionGroup;
-import com.bekvon.bukkit.residence.protection.ClaimedResidence;
-import com.bekvon.bukkit.residence.protection.FlagPermissions.FlagState;
import java.util.Date;
import java.util.HashMap;
@@ -20,480 +12,389 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
+import com.bekvon.bukkit.residence.Residence;
+import com.bekvon.bukkit.residence.event.ResidenceRentEvent;
+import com.bekvon.bukkit.residence.event.ResidenceRentEvent.RentEventType;
+import com.bekvon.bukkit.residence.permissions.PermissionGroup;
+import com.bekvon.bukkit.residence.protection.ClaimedResidence;
+import com.bekvon.bukkit.residence.protection.FlagPermissions.FlagState;
+
/**
*
* @author Administrator
*/
public class RentManager {
- protected Map rentedLand;
- protected Map rentableLand;
+ protected Map rentedLand;
+ protected Map rentableLand;
- public RentManager()
- {
- rentedLand = new HashMap();
- rentableLand = new HashMap();
- }
+ public RentManager() {
+ rentedLand = new HashMap();
+ rentableLand = new HashMap();
+ }
- public void setForRent(Player player, String landName, int amount, int days, boolean repeatable, boolean resadmin)
- {
- if(!Residence.getConfigManager().enabledRentSystem())
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("MarketDisabled"));
- return;
- }
- if(Residence.getTransactionManager().isForSale(landName))
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("SellRentFail"));
- return;
- }
- ClaimedResidence res = Residence.getResidenceManager().getByName(landName);
- if(res == null)
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("InvalidResidence"));
- return;
- }
- if(!resadmin)
- {
- if(!res.getPermissions().hasResidencePermission(player, true))
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("NoPermission"));
- return;
- }
- PermissionGroup group = Residence.getPermissionManager().getGroup(player);
- if(this.getRentableCount(player.getName()) >= group.getMaxRentables())
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("ResidenceMaxRent"));
- return;
- }
- }
- if(!rentableLand.containsKey(landName))
- {
- ResidenceRentEvent revent = new ResidenceRentEvent(res,player,RentEventType.RENTABLE);
- Residence.getServ().getPluginManager().callEvent(revent);
- if(revent.isCancelled())
- return;
- RentableLand newrent = new RentableLand();
- newrent.days = days;
- newrent.cost = amount;
- newrent.repeatable = repeatable;
- rentableLand.put(landName,newrent);
- String[] split = landName.split("\\.");
- if(split.length!=0)
- player.sendMessage(ChatColor.GREEN+Residence.getLanguage().getPhrase("ResidenceForRentSuccess",ChatColor.YELLOW+split[split.length-1] + ChatColor.GREEN+"."+ChatColor.YELLOW+amount+ChatColor.GREEN+"."+ChatColor.YELLOW+days+ChatColor.GREEN));
- }
- else
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("ResidenceAlreadyRent"));
- }
- }
+ @SuppressWarnings("unchecked")
+ public static RentManager load(Map root) {
+ RentManager rentManager = new RentManager();
+ if (root != null) {
+ Map rentables = (Map) root.get("Rentables");
+ for (Entry rent : rentables.entrySet())
+ rentManager.rentableLand.put(rent.getKey(), RentableLand.load((Map) rent.getValue()));
+ Map rented = (Map) root.get("Rented");
+ for (Entry rent : rented.entrySet())
+ rentManager.rentedLand.put(rent.getKey(), RentedLand.load((Map) rent.getValue()));
+ }
+ return rentManager;
+ }
- public void rent(Player player, String landName, boolean repeat, boolean resadmin)
- {
- if(!Residence.getConfigManager().enabledRentSystem())
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("RentDisabled"));
- return;
- }
- ClaimedResidence res = Residence.getResidenceManager().getByName(landName);
- if(res!=null)
- {
- if(res.getPermissions().getOwner().equalsIgnoreCase(player.getName()))
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("OwnerRentFail"));
- return;
- }
- }
- else
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("InvalidResidence"));
- return;
- }
- PermissionGroup group = Residence.getPermissionManager().getGroup(player);
- if(!resadmin && this.getRentCount(player.getName()) >= group.getMaxRents())
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("ResidenceMaxRent"));
- return;
- }
- if(!this.isForRent(landName))
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("ResidenceNotForRent"));
- return;
- }
- if(this.isRented(landName))
- {
- String[] split = landName.split("\\.");
- if(split.length!=0)
- player.sendMessage(Residence.getLanguage().getPhrase("ResidenceAlreadyRented",ChatColor.YELLOW+split[split.length-1] + ChatColor.RED+"."+ChatColor.YELLOW + this.getRentingPlayer(landName)));
- return;
- }
- RentableLand land = rentableLand.get(landName);
- if(Residence.getEconomyManager().canAfford(player.getName(), land.cost))
- {
- ResidenceRentEvent revent = new ResidenceRentEvent(res,player,RentEventType.RENT);
- Residence.getServ().getPluginManager().callEvent(revent);
- if(revent.isCancelled())
- return;
- if(Residence.getEconomyManager().transfer(player.getName(), res.getPermissions().getOwner(), land.cost))
- {
- RentedLand newrent = new RentedLand();
- newrent.player = player.getName();
- newrent.startTime = System.currentTimeMillis();
- newrent.endTime = System.currentTimeMillis() + daysToMs(land.days);
- newrent.autoRefresh = repeat;
- rentedLand.put(landName, newrent);
- res.getPermissions().copyUserPermissions(res.getPermissions().getOwner(), player.getName());
- res.getPermissions().clearPlayersFlags(res.getPermissions().getOwner());
- res.getPermissions().setPlayerFlag(player.getName(), "admin", FlagState.TRUE);
- String[] split = landName.split("\\.");
- if(split.length!=0)
- player.sendMessage(ChatColor.GREEN+Residence.getLanguage().getPhrase("ResidenceRentSuccess",ChatColor.YELLOW + split[split.length-1] + ChatColor.GREEN+"."+ChatColor.YELLOW + land.days + ChatColor.GREEN));
- }
- else
- {
- player.sendMessage(ChatColor.RED+"Error, unable to transfer money...");
- }
- }
- else
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("NotEnoughMoney"));
- }
- }
+ public void checkCurrentRents() {
+ Iterator> it = rentedLand.entrySet().iterator();
+ while (it.hasNext()) {
+ Entry next = it.next();
+ RentedLand land = next.getValue();
+ if (land.endTime <= System.currentTimeMillis()) {
+ ClaimedResidence res = Residence.getResidenceManager().getByName(next.getKey());
+ if (Residence.getConfigManager().debugEnabled())
+ System.out.println("Rent Check: " + next.getKey());
+ if (res != null) {
+ ResidenceRentEvent revent = new ResidenceRentEvent(res, null, RentEventType.RENT_EXPIRE);
+ Residence.getServ().getPluginManager().callEvent(revent);
+ if (!revent.isCancelled()) {
+ RentableLand rentable = rentableLand.get(next.getKey());
+ if (!rentable.repeatable) {
+ rentableLand.remove(next.getKey());
+ it.remove();
+ res.getPermissions().applyDefaultFlags();
+ } else if (land.autoRefresh) {
+ if (!Residence.getEconomyManager().canAfford(land.player, rentable.cost)) {
+ it.remove();
+ res.getPermissions().applyDefaultFlags();
+ } else if (!Residence.getEconomyManager().transfer(land.player, res.getPermissions().getOwner(), rentable.cost)) {
+ it.remove();
+ res.getPermissions().applyDefaultFlags();
+ } else
+ land.endTime = System.currentTimeMillis() + this.daysToMs(rentable.days);
+ } else {
+ res.getPermissions().applyDefaultFlags();
+ it.remove();
+ }
+ }
+ } else {
+ rentableLand.remove(next.getKey());
+ it.remove();
+ }
+ }
+ }
+ }
- public void removeFromForRent(Player player, String landName, boolean resadmin)
- {
- RentedLand rent = rentedLand.get(landName);
- if(rent == null)
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("ResidenceNotRented"));
- return;
- }
- if(resadmin || rent.player.equalsIgnoreCase(player.getName()))
- {
- ResidenceRentEvent revent = new ResidenceRentEvent(Residence.getResidenceManager().getByName(landName),player,RentEventType.UNRENTABLE);
- Residence.getServ().getPluginManager().callEvent(revent);
- if(revent.isCancelled())
- return;
- rentedLand.remove(landName);
- if(!rentableLand.get(landName).repeatable)
- {
- rentableLand.remove(landName);
- }
- ClaimedResidence res = Residence.getResidenceManager().getByName(landName);
- if(res!=null)
- res.getPermissions().applyDefaultFlags();
- player.sendMessage(ChatColor.GREEN+Residence.getLanguage().getPhrase("ResidenceUnrent",ChatColor.YELLOW+landName + ChatColor.GREEN));
- }
- else
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("NoPermission"));
- }
- }
+ public int getCostOfRent(String landName) {
+ return rentableLand.containsKey(landName) ? rentableLand.get(landName).cost : 0;
+ }
- private long daysToMs(int days)
- {
- return (((long)days) * 24L * 60L * 60L * 1000L);
- }
+ public int getRentableCount(String player) {
+ Set set = rentableLand.keySet();
+ int count = 0;
+ for (String land : set) {
+ ClaimedResidence res = Residence.getResidenceManager().getByName(land);
+ if (res != null)
+ if (res.getPermissions().getOwner().equalsIgnoreCase(player))
+ count++;
+ }
+ return count;
+ }
- @SuppressWarnings("unused")
- private int msToDays(long ms)
- {
- return (int) Math.ceil(((((double)ms/1000D)/60D)/60D)/24D);
- }
+ public boolean getRentableRepeatable(String landName) {
+ return rentableLand.containsKey(landName) ? rentableLand.get(landName).repeatable : false;
+ }
- public void unrent(Player player, String landName, boolean resadmin)
- {
- String[] split = landName.split("\\.");
- ClaimedResidence res = Residence.getResidenceManager().getByName(landName);
- if(res == null)
- {
- player.sendMessage(ChatColor.YELLOW+Residence.getLanguage().getPhrase("InvalidResidence"));
- return;
- }
- if(!res.getPermissions().hasResidencePermission(player, true) && !resadmin)
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("NoPermission"));
- return;
- }
- if(rentedLand.containsKey(landName) && !resadmin)
- {
- if(split.length!=0)
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("ResidenceAlreadyRented",ChatColor.YELLOW+split[split.length-1] + ChatColor.RED+"."+ChatColor.YELLOW + rentedLand.get(landName).player)+ChatColor.YELLOW);
- return;
- }
- if(rentableLand.containsKey(landName))
- {
- ResidenceRentEvent revent = new ResidenceRentEvent(res,player,RentEventType.UNRENT);
- Residence.getServ().getPluginManager().callEvent(revent);
- if(revent.isCancelled())
- return;
- rentableLand.remove(landName);
- if(rentedLand.containsKey(landName))
- {
- rentedLand.remove(landName);
- if(res!=null)
- res.getPermissions().applyDefaultFlags();
- }
- if(split.length!=0)
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("ResidenceRemoveRentable",ChatColor.YELLOW+split[split.length-1] + ChatColor.RED));
+ public int getRentCount(String player) {
+ Set> set = rentedLand.entrySet();
+ int count = 0;
+ for (Entry land : set)
+ if (land.getValue().player.equalsIgnoreCase(player))
+ count++;
+ return count;
+ }
- }
- else
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("ResidenceNotForRent"));
- }
- }
+ public int getRentDays(String landName) {
+ return rentableLand.containsKey(landName) ? rentableLand.get(landName).days : 0;
+ }
- public void removeFromRent(String landName)
- {
- rentedLand.remove(landName);
- }
+ public boolean getRentedAutoRepeats(String landName) {
+ return getRentableRepeatable(landName) ? (rentedLand.containsKey(landName) ? rentedLand.get(landName).autoRefresh : false) : false;
+ }
- public void removeRentable(String landName)
- {
- removeFromRent(landName);
- rentableLand.remove(landName);
- }
+ public String getRentingPlayer(String landName) {
+ return rentedLand.containsKey(landName) ? rentedLand.get(landName).player : null;
+ }
- public boolean isForRent(String landName)
- {
- return rentableLand.containsKey(landName);
- }
+ public boolean isForRent(String landName) {
+ return rentableLand.containsKey(landName);
+ }
- public boolean isRented(String landName)
- {
- return rentedLand.containsKey(landName);
- }
+ public boolean isRented(String landName) {
+ return rentedLand.containsKey(landName);
+ }
- public String getRentingPlayer(String landName)
- {
- return rentedLand.containsKey(landName) ? rentedLand.get(landName).player : null;
- }
+ public void printRentableResidences(Player player) {
+ Set> set = rentableLand.entrySet();
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("RentableLand") + ":");
+ StringBuilder sbuild = new StringBuilder();
+ sbuild.append(ChatColor.GREEN);
+ boolean firstadd = true;
+ for (Entry land : set)
+ if (!this.isRented(land.getKey())) {
+ if (!firstadd)
+ sbuild.append(", ");
+ else
+ firstadd = false;
+ sbuild.append(land.getKey());
+ }
+ player.sendMessage(sbuild.toString());
+ }
- public int getCostOfRent(String landName)
- {
- return rentableLand.containsKey(landName) ? rentableLand.get(landName).cost : 0;
- }
+ public void printRentInfo(Player player, String landName) {
+ RentableLand rentable = rentableLand.get(landName);
+ RentedLand rented = rentedLand.get(landName);
+ if (rentable != null) {
+ player.sendMessage(ChatColor.GOLD + Residence.getLanguage().getPhrase("Land") + ":" + ChatColor.DARK_GREEN + landName);
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Cost") + ": " + ChatColor.DARK_AQUA + rentable.cost + " per " + rentable.days + " days");
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("RentableAutoRenew") + ":" + ChatColor.DARK_AQUA + rentable.repeatable);
+ if (rented != null) {
+ player.sendMessage(ChatColor.GOLD + Residence.getLanguage().getPhrase("Status") + ":" + ChatColor.YELLOW + " "
+ + Residence.getLanguage().getPhrase("ResidenceRentedBy", ChatColor.RED + rented.player + ChatColor.YELLOW));
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("RentExpire") + ":" + ChatColor.GREEN + new Date(rented.endTime));
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("RentAutoRenew") + ":" + ChatColor.DARK_AQUA + rented.autoRefresh);
+ } else
+ player.sendMessage(ChatColor.GOLD + Residence.getLanguage().getPhrase("Status") + ":" + ChatColor.GREEN + " " + Residence.getLanguage().getPhrase("Available"));
+ } else
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceNotForRent"));
+ }
- public boolean getRentableRepeatable(String landName)
- {
- return rentableLand.containsKey(landName) ? rentableLand.get(landName).repeatable : false;
- }
+ public void removeFromForRent(Player player, String landName, boolean resadmin) {
+ RentedLand rent = rentedLand.get(landName);
+ if (rent == null) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceNotRented"));
+ return;
+ }
+ if (resadmin || rent.player.equalsIgnoreCase(player.getName())) {
+ ResidenceRentEvent revent = new ResidenceRentEvent(Residence.getResidenceManager().getByName(landName), player, RentEventType.UNRENTABLE);
+ Residence.getServ().getPluginManager().callEvent(revent);
+ if (revent.isCancelled())
+ return;
+ rentedLand.remove(landName);
+ if (!rentableLand.get(landName).repeatable)
+ rentableLand.remove(landName);
+ ClaimedResidence res = Residence.getResidenceManager().getByName(landName);
+ if (res != null)
+ res.getPermissions().applyDefaultFlags();
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceUnrent", ChatColor.YELLOW + landName + ChatColor.GREEN));
+ } else
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
+ }
- public boolean getRentedAutoRepeats(String landName)
- {
- return getRentableRepeatable(landName) ? (rentedLand.containsKey(landName) ? rentedLand.get(landName).autoRefresh : false) : false;
- }
+ public void removeFromRent(String landName) {
+ rentedLand.remove(landName);
+ }
- public int getRentDays(String landName)
- {
- return rentableLand.containsKey(landName) ? rentableLand.get(landName).days : 0;
- }
+ public void removeRentable(String landName) {
+ removeFromRent(landName);
+ rentableLand.remove(landName);
+ }
- public void checkCurrentRents()
- {
- Iterator> it = rentedLand.entrySet().iterator();
- while(it.hasNext())
- {
- Entry next = it.next();
- RentedLand land = next.getValue();
- if(land.endTime<=System.currentTimeMillis())
- {
- ClaimedResidence res = Residence.getResidenceManager().getByName(next.getKey());
- if(Residence.getConfigManager().debugEnabled())
- System.out.println("Rent Check: "+next.getKey());
- if (res != null) {
- ResidenceRentEvent revent = new ResidenceRentEvent(res, null, RentEventType.RENT_EXPIRE);
- Residence.getServ().getPluginManager().callEvent(revent);
- if (!revent.isCancelled()) {
- RentableLand rentable = rentableLand.get(next.getKey());
- if (!rentable.repeatable) {
- rentableLand.remove(next.getKey());
- it.remove();
- res.getPermissions().applyDefaultFlags();
- } else if (land.autoRefresh) {
- if (!Residence.getEconomyManager().canAfford(land.player, rentable.cost)) {
- it.remove();
- res.getPermissions().applyDefaultFlags();
- } else {
- if (!Residence.getEconomyManager().transfer(land.player, res.getPermissions().getOwner(), rentable.cost)) {
- it.remove();
- res.getPermissions().applyDefaultFlags();
- }
- else
- {
- land.endTime = System.currentTimeMillis() + this.daysToMs(rentable.days);
- }
- }
- } else {
- res.getPermissions().applyDefaultFlags();
- it.remove();
- }
- }
- }
- else
- {
- rentableLand.remove(next.getKey());
- it.remove();
- }
- }
- }
- }
+ public void rent(Player player, String landName, boolean repeat, boolean resadmin) {
+ if (!Residence.getConfigManager().enabledRentSystem()) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentDisabled"));
+ return;
+ }
+ ClaimedResidence res = Residence.getResidenceManager().getByName(landName);
+ if (res != null) {
+ if (res.getPermissions().getOwner().equalsIgnoreCase(player.getName())) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("OwnerRentFail"));
+ return;
+ }
+ } else {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence"));
+ return;
+ }
+ PermissionGroup group = Residence.getPermissionManager().getGroup(player);
+ if (!resadmin && this.getRentCount(player.getName()) >= group.getMaxRents()) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceMaxRent"));
+ return;
+ }
+ if (!this.isForRent(landName)) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceNotForRent"));
+ return;
+ }
+ if (this.isRented(landName)) {
+ String[] split = landName.split("\\.");
+ if (split.length != 0)
+ player.sendMessage(Residence.getLanguage().getPhrase("ResidenceAlreadyRented",
+ ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED + "." + ChatColor.YELLOW + this.getRentingPlayer(landName)));
+ return;
+ }
+ RentableLand land = rentableLand.get(landName);
+ if (Residence.getEconomyManager().canAfford(player.getName(), land.cost)) {
+ ResidenceRentEvent revent = new ResidenceRentEvent(res, player, RentEventType.RENT);
+ Residence.getServ().getPluginManager().callEvent(revent);
+ if (revent.isCancelled())
+ return;
+ if (Residence.getEconomyManager().transfer(player.getName(), res.getPermissions().getOwner(), land.cost)) {
+ RentedLand newrent = new RentedLand();
+ newrent.player = player.getName();
+ newrent.startTime = System.currentTimeMillis();
+ newrent.endTime = System.currentTimeMillis() + daysToMs(land.days);
+ newrent.autoRefresh = repeat;
+ rentedLand.put(landName, newrent);
+ res.getPermissions().copyUserPermissions(res.getPermissions().getOwner(), player.getName());
+ res.getPermissions().clearPlayersFlags(res.getPermissions().getOwner());
+ res.getPermissions().setPlayerFlag(player.getName(), "admin", FlagState.TRUE);
+ String[] split = landName.split("\\.");
+ if (split.length != 0)
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceRentSuccess",
+ ChatColor.YELLOW + split[split.length - 1] + ChatColor.GREEN + "." + ChatColor.YELLOW + land.days + ChatColor.GREEN));
+ } else
+ player.sendMessage(ChatColor.RED + "Error, unable to transfer money...");
+ } else
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NotEnoughMoney"));
+ }
- public void setRentRepeatable(Player player, String landName, boolean value, boolean resadmin)
- {
- String[] split = landName.split("\\.");
- RentableLand land = rentableLand.get(landName);
- ClaimedResidence res = Residence.getResidenceManager().getByName(landName);
- if(land!=null && res!=null && (res.getPermissions().getOwner().equalsIgnoreCase(player.getName()) || resadmin))
- {
- land.repeatable = value;
- if(!value && this.isRented(landName))
- rentedLand.get(landName).autoRefresh = false;
- if(value && split.length!=0)
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("RentableEnableRenew",ChatColor.YELLOW+split[split.length-1] + ChatColor.RED));
- else if(split.length!=0)
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("RentableDisableRenew",ChatColor.YELLOW+split[split.length-1] + ChatColor.RED));
- }
- }
+ public Map save() {
+ Map root = new HashMap();
+ Map rentables = new HashMap();
+ for (Entry rent : rentableLand.entrySet())
+ rentables.put(rent.getKey(), rent.getValue().save());
+ Map rented = new HashMap();
+ for (Entry rent : rentedLand.entrySet())
+ rented.put(rent.getKey(), rent.getValue().save());
+ root.put("Rentables", rentables);
+ root.put("Rented", rented);
+ return root;
+ }
- public void setRentedRepeatable(Player player, String landName, boolean value, boolean resadmin)
- {
- String[] split = landName.split("\\.");
- RentedLand land = rentedLand.get(landName);
- if(land!=null && (land.player.equals(player.getName()) || resadmin))
- {
- land.autoRefresh = value;
- if(value && split.length!=0)
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("RentEnableRenew",ChatColor.YELLOW+split[split.length-1] + ChatColor.RED));
- else if(split.length!=0)
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("RentDisableRenew",ChatColor.YELLOW+split[split.length-1] + ChatColor.RED));
- }
- }
+ public void setForRent(Player player, String landName, int amount, int days, boolean repeatable, boolean resadmin) {
+ if (!Residence.getConfigManager().enabledRentSystem()) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("MarketDisabled"));
+ return;
+ }
+ if (Residence.getTransactionManager().isForSale(landName)) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SellRentFail"));
+ return;
+ }
+ ClaimedResidence res = Residence.getResidenceManager().getByName(landName);
+ if (res == null) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence"));
+ return;
+ }
+ if (!resadmin) {
+ if (!res.getPermissions().hasResidencePermission(player, true)) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
+ return;
+ }
+ PermissionGroup group = Residence.getPermissionManager().getGroup(player);
+ if (this.getRentableCount(player.getName()) >= group.getMaxRentables()) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceMaxRent"));
+ return;
+ }
+ }
+ if (!rentableLand.containsKey(landName)) {
+ ResidenceRentEvent revent = new ResidenceRentEvent(res, player, RentEventType.RENTABLE);
+ Residence.getServ().getPluginManager().callEvent(revent);
+ if (revent.isCancelled())
+ return;
+ RentableLand newrent = new RentableLand();
+ newrent.days = days;
+ newrent.cost = amount;
+ newrent.repeatable = repeatable;
+ rentableLand.put(landName, newrent);
+ String[] split = landName.split("\\.");
+ if (split.length != 0)
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceForRentSuccess",
+ ChatColor.YELLOW + split[split.length - 1] + ChatColor.GREEN + "." + ChatColor.YELLOW + amount + ChatColor.GREEN + "." + ChatColor.YELLOW + days + ChatColor.GREEN));
+ } else
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceAlreadyRent"));
+ }
- public void printRentInfo(Player player, String landName)
- {
- RentableLand rentable = rentableLand.get(landName);
- RentedLand rented = rentedLand.get(landName);
- if(rentable!=null)
- {
- player.sendMessage(ChatColor.GOLD+Residence.getLanguage().getPhrase("Land")+":"+ChatColor.DARK_GREEN + landName);
- player.sendMessage(ChatColor.YELLOW+Residence.getLanguage().getPhrase("Cost")+": "+ChatColor.DARK_AQUA + rentable.cost + " per " + rentable.days + " days");
- player.sendMessage(ChatColor.GREEN+Residence.getLanguage().getPhrase("RentableAutoRenew")+":"+ChatColor.DARK_AQUA + rentable.repeatable);
- if(rented!=null)
- {
- player.sendMessage(ChatColor.GOLD+Residence.getLanguage().getPhrase("Status")+":"+ChatColor.YELLOW+" "+Residence.getLanguage().getPhrase("ResidenceRentedBy",ChatColor.RED + rented.player+ChatColor.YELLOW));
- player.sendMessage(ChatColor.YELLOW+Residence.getLanguage().getPhrase("RentExpire")+":"+ChatColor.GREEN + new Date(rented.endTime));
- player.sendMessage(ChatColor.GREEN+Residence.getLanguage().getPhrase("RentAutoRenew")+":"+ChatColor.DARK_AQUA + rented.autoRefresh);
- }
- else
- {
- player.sendMessage(ChatColor.GOLD+Residence.getLanguage().getPhrase("Status")+":"+ChatColor.GREEN+" "+Residence.getLanguage().getPhrase("Available"));
- }
- }
- else
- {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("ResidenceNotForRent"));
- }
- }
+ public void setRentedRepeatable(Player player, String landName, boolean value, boolean resadmin) {
+ String[] split = landName.split("\\.");
+ RentedLand land = rentedLand.get(landName);
+ if (land != null && (land.player.equals(player.getName()) || resadmin)) {
+ land.autoRefresh = value;
+ if (value && split.length != 0)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentEnableRenew", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED));
+ else if (split.length != 0)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentDisableRenew", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED));
+ }
+ }
- @SuppressWarnings("unchecked")
- public static RentManager load(Map root)
- {
- RentManager rentManager = new RentManager();
- if(root!=null)
- {
- Map rentables = (Map) root.get("Rentables");
- for(Entry rent : rentables.entrySet())
- {
- rentManager.rentableLand.put(rent.getKey(), RentableLand.load((Map) rent.getValue()));
- }
- Map rented = (Map) root.get("Rented");
- for(Entry rent : rented.entrySet())
- {
- rentManager.rentedLand.put(rent.getKey(), RentedLand.load((Map) rent.getValue()));
- }
- }
- return rentManager;
- }
+ public void setRentRepeatable(Player player, String landName, boolean value, boolean resadmin) {
+ String[] split = landName.split("\\.");
+ RentableLand land = rentableLand.get(landName);
+ ClaimedResidence res = Residence.getResidenceManager().getByName(landName);
+ if (land != null && res != null && (res.getPermissions().getOwner().equalsIgnoreCase(player.getName()) || resadmin)) {
+ land.repeatable = value;
+ if (!value && this.isRented(landName))
+ rentedLand.get(landName).autoRefresh = false;
+ if (value && split.length != 0)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentableEnableRenew", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED));
+ else if (split.length != 0)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentableDisableRenew", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED));
+ }
+ }
- public Map save()
- {
- Map root = new HashMap();
- Map rentables = new HashMap();
- for(Entry rent : rentableLand.entrySet())
- {
- rentables.put(rent.getKey(), rent.getValue().save());
- }
- Map rented = new HashMap();
- for(Entry rent : rentedLand.entrySet())
- {
- rented.put(rent.getKey(), rent.getValue().save());
- }
- root.put("Rentables", rentables);
- root.put("Rented", rented);
- return root;
- }
+ public void unrent(Player player, String landName, boolean resadmin) {
+ String[] split = landName.split("\\.");
+ ClaimedResidence res = Residence.getResidenceManager().getByName(landName);
+ if (res == null) {
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("InvalidResidence"));
+ return;
+ }
+ if (!res.getPermissions().hasResidencePermission(player, true) && !resadmin) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
+ return;
+ }
+ if (rentedLand.containsKey(landName) && !resadmin) {
+ if (split.length != 0)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceAlreadyRented",
+ ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED + "." + ChatColor.YELLOW + rentedLand.get(landName).player) + ChatColor.YELLOW);
+ return;
+ }
+ if (rentableLand.containsKey(landName)) {
+ ResidenceRentEvent revent = new ResidenceRentEvent(res, player, RentEventType.UNRENT);
+ Residence.getServ().getPluginManager().callEvent(revent);
+ if (revent.isCancelled())
+ return;
+ rentableLand.remove(landName);
+ if (rentedLand.containsKey(landName)) {
+ rentedLand.remove(landName);
+ res.getPermissions().applyDefaultFlags();
+ }
+ if (split.length != 0)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceRemoveRentable", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED));
- public void updateRentableName(String oldName, String newName)
- {
- if(rentableLand.containsKey(oldName))
- {
- rentableLand.put(newName, rentableLand.get(oldName));
- rentableLand.remove(oldName);
- }
- if(rentedLand.containsKey(oldName))
- {
- rentedLand.put(newName, rentedLand.get(oldName));
- rentedLand.remove(oldName);
- }
- }
+ } else
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceNotForRent"));
+ }
- public void printRentableResidences(Player player)
- {
- Set> set = rentableLand.entrySet();
- player.sendMessage(ChatColor.YELLOW+Residence.getLanguage().getPhrase("RentableLand")+":");
- StringBuilder sbuild = new StringBuilder();
- sbuild.append(ChatColor.GREEN);
- boolean firstadd = true;
- for(Entry land : set)
- {
- if(!this.isRented(land.getKey()))
- {
- if(!firstadd)
- sbuild.append(", ");
- else
- firstadd = false;
- sbuild.append(land.getKey());
- }
- }
- player.sendMessage(sbuild.toString());
- }
+ public void updateRentableName(String oldName, String newName) {
+ if (rentableLand.containsKey(oldName)) {
+ rentableLand.put(newName, rentableLand.get(oldName));
+ rentableLand.remove(oldName);
+ }
+ if (rentedLand.containsKey(oldName)) {
+ rentedLand.put(newName, rentedLand.get(oldName));
+ rentedLand.remove(oldName);
+ }
+ }
- public int getRentCount(String player)
- {
- Set> set = rentedLand.entrySet();
- int count = 0;
- for(Entry land : set)
- {
- if(land.getValue().player.equalsIgnoreCase(player))
- count++;
- }
- return count;
- }
+ private long daysToMs(int days) {
+ return ((days) * 24L * 60L * 60L * 1000L);
+ }
- public int getRentableCount(String player)
- {
- Set set = rentableLand.keySet();
- int count = 0;
- for(String land : set)
- {
- ClaimedResidence res = Residence.getResidenceManager().getByName(land);
- if(res!=null)
- if(res.getPermissions().getOwner().equalsIgnoreCase(player))
- count++;
- }
- return count;
- }
+ @SuppressWarnings("unused")
+ private int msToDays(long ms) {
+ return (int) Math.ceil((((ms / 1000D) / 60D) / 60D) / 24D);
+ }
}
diff --git a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceEntityListener.java b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceEntityListener.java
index 96fb154..945459a 100644
--- a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceEntityListener.java
+++ b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceEntityListener.java
@@ -5,19 +5,40 @@
package com.bekvon.bukkit.residence.listeners;
-import org.bukkit.ChatColor;
-import org.bukkit.Location;
-
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import com.bekvon.bukkit.residence.protection.FlagPermissions;
-
+import org.bukkit.ChatColor;
+import org.bukkit.Location;
+import org.bukkit.Material;
import org.bukkit.block.Block;
+import org.bukkit.entity.Arrow;
+import org.bukkit.entity.Bat;
+import org.bukkit.entity.Chicken;
+import org.bukkit.entity.Cow;
+import org.bukkit.entity.Creeper;
import org.bukkit.entity.Entity;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Ghast;
+import org.bukkit.entity.Horse;
+import org.bukkit.entity.IronGolem;
import org.bukkit.entity.LivingEntity;
+import org.bukkit.entity.Monster;
+import org.bukkit.entity.Ocelot;
+import org.bukkit.entity.Pig;
import org.bukkit.entity.Player;
+import org.bukkit.entity.Projectile;
+import org.bukkit.entity.Rabbit;
+import org.bukkit.entity.Sheep;
+import org.bukkit.entity.Slime;
+import org.bukkit.entity.Snowman;
+import org.bukkit.entity.Squid;
+import org.bukkit.entity.Villager;
+import org.bukkit.entity.Wolf;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.Listener;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.entity.EntityCombustEvent;
@@ -25,130 +46,48 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityInteractEvent;
-import org.bukkit.event.entity.PotionSplashEvent;
-
-import com.bekvon.bukkit.residence.Residence;
-import com.bekvon.bukkit.residence.protection.ClaimedResidence;
-
-import org.bukkit.Material;
-import org.bukkit.entity.Arrow;
-import org.bukkit.entity.Bat;
-import org.bukkit.entity.Chicken;
-import org.bukkit.entity.Cow;
-import org.bukkit.entity.Creeper;
-import org.bukkit.entity.EntityType;
-import org.bukkit.entity.Horse;
-import org.bukkit.entity.IronGolem;
-import org.bukkit.entity.Monster;
-import org.bukkit.entity.Ocelot;
-import org.bukkit.entity.Pig;
-import org.bukkit.entity.Projectile;
-import org.bukkit.entity.Rabbit;
-import org.bukkit.entity.Sheep;
-import org.bukkit.entity.Snowman;
-import org.bukkit.entity.Squid;
-import org.bukkit.entity.Villager;
-import org.bukkit.entity.Wolf;
-import org.bukkit.entity.Slime;
-import org.bukkit.entity.Ghast;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.EventPriority;
-import org.bukkit.event.Listener;
import org.bukkit.event.entity.ExplosionPrimeEvent;
+import org.bukkit.event.entity.PotionSplashEvent;
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.hanging.HangingBreakEvent;
import org.bukkit.event.hanging.HangingPlaceEvent;
+import com.bekvon.bukkit.residence.Residence;
+import com.bekvon.bukkit.residence.protection.ClaimedResidence;
+import com.bekvon.bukkit.residence.protection.FlagPermissions;
+
/**
*
* @author Administrator
*/
public class ResidenceEntityListener implements Listener {
- @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
- public void onEndermanChangeBlock(EntityChangeBlockEvent event) {
- if (event.getEntityType() != EntityType.ENDERMAN
- && event.getEntityType() != EntityType.WITHER) {
- return;
- }
- FlagPermissions perms = Residence.getPermsByLoc(event.getBlock()
- .getLocation());
- FlagPermissions world = Residence.getWorldFlags().getPerms(
- event.getBlock().getWorld().getName());
- if (event.getEntityType() == EntityType.WITHER) {
- if (!perms.has(
- "wither",
- perms.has("explode",
- world.has("wither", world.has("explode", true))))) {
- event.setCancelled(true);
- }
- } else if (!perms.has("build", true)) {
- event.setCancelled(true);
- }
- }
-
- @EventHandler(priority = EventPriority.LOWEST)
- public void onEntityInteract(EntityInteractEvent event) {
- Block block = event.getBlock();
- Material mat = block.getType();
- Entity entity = event.getEntity();
- FlagPermissions perms = Residence.getPermsByLoc(block.getLocation());
- boolean hastrample = perms.has("trample", perms.has("hasbuild", true));
- if (!hastrample && !(entity.getType() == EntityType.FALLING_BLOCK)
- && (mat == Material.SOIL || mat == Material.SOUL_SAND)) {
- event.setCancelled(true);
- }
- }
-
- private boolean isMonster(Entity ent) {
- return (ent instanceof Monster || ent instanceof Slime || ent instanceof Ghast);
- }
-
- private boolean isAnimal(Entity ent) {
- return (ent instanceof Horse || ent instanceof Bat
- || ent instanceof Snowman || ent instanceof IronGolem
- || ent instanceof Ocelot || ent instanceof Pig
- || ent instanceof Sheep || ent instanceof Chicken
- || ent instanceof Wolf || ent instanceof Cow
- || ent instanceof Squid || ent instanceof Villager || ent instanceof Rabbit);
- }
-
@EventHandler(priority = EventPriority.LOWEST)
public void AnimalKilling(EntityDamageByEntityEvent event) {
Entity damager = event.getDamager();
- if ((!(damager instanceof Arrow)) && (!(damager instanceof Player))) {
+ if ((!(damager instanceof Arrow)) && (!(damager instanceof Player)))
return;
- }
Player cause;
- if ((damager instanceof Arrow)
- && (!(((Arrow) damager).getShooter() instanceof Player))) {
+ if ((damager instanceof Arrow) && (!(((Arrow) damager).getShooter() instanceof Player)))
return;
-
- } else if (damager instanceof Player) {
+ else if (damager instanceof Player)
cause = (Player) damager;
- } else {
+ else
cause = (Player) ((Arrow) damager).getShooter();
- }
- if (Residence.isResAdminOn(cause)) {
+ if (Residence.isResAdminOn(cause))
return;
- }
Entity entity = event.getEntity();
- ClaimedResidence res = Residence.getResidenceManager().getByLoc(
- entity.getLocation());
+ ClaimedResidence res = Residence.getResidenceManager().getByLoc(entity.getLocation());
- if (res != null
- && !res.getPermissions().playerHas(cause.getName(),
- "animalkilling", true)) {
+ if (res != null && !res.getPermissions().playerHas(cause.getName(), "animalkilling", true))
if (isAnimal(entity)) {
- cause.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("NoPermission"));
+ cause.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
event.setCancelled(true);
}
- }
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
@@ -156,100 +95,126 @@ public class ResidenceEntityListener implements Listener {
FlagPermissions perms = Residence.getPermsByLoc(event.getLocation());
Entity ent = event.getEntity();
if (isAnimal(ent)) {
- if (!perms.has("animals", true)) {
+ if (!perms.has("animals", true))
event.setCancelled(true);
- }
- } else {
- if (!perms.has("monsters", true) && isMonster(ent)) {
- event.setCancelled(true);
- }
- }
- }
-
- @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
- public void onHangingPlace(HangingPlaceEvent event) {
- Player player = event.getPlayer();
- if (Residence.isResAdminOn(player)) {
- return;
- }
- FlagPermissions perms = Residence.getPermsByLocForPlayer(event
- .getEntity().getLocation(), player);
- String pname = player.getName();
- String world = player.getWorld().getName();
- if (!perms.playerHas(pname, world, "place",
- perms.playerHas(pname, world, "build", true))) {
+ } else if (!perms.has("monsters", true) && isMonster(ent))
event.setCancelled(true);
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("NoPermission"));
- }
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
- public void onHangingBreak(HangingBreakEvent event) {
- if (event instanceof HangingBreakByEntityEvent) {
- HangingBreakByEntityEvent evt = (HangingBreakByEntityEvent) event;
- if (evt.getRemover() instanceof Player) {
- Player player = (Player) evt.getRemover();
- if (Residence.isResAdminOn(player)) {
- return;
- }
- String pname = player.getName();
- FlagPermissions perms = Residence.getPermsByLocForPlayer(event
- .getEntity().getLocation(), player);
- String world = event.getEntity().getWorld().getName();
- if (!perms.playerHas(pname, world, "destroy",
- perms.playerHas(pname, world, "build", true))) {
- event.setCancelled(true);
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("NoPermission"));
- }
- }
- }
+ public void onEndermanChangeBlock(EntityChangeBlockEvent event) {
+ if (event.getEntityType() != EntityType.ENDERMAN && event.getEntityType() != EntityType.WITHER)
+ return;
+ FlagPermissions perms = Residence.getPermsByLoc(event.getBlock().getLocation());
+ FlagPermissions world = Residence.getWorldFlags().getPerms(event.getBlock().getWorld().getName());
+ if (event.getEntityType() == EntityType.WITHER) {
+ if (!perms.has("wither", perms.has("explode", world.has("wither", world.has("explode", true)))))
+ event.setCancelled(true);
+ } else if (!perms.has("build", true))
+ event.setCancelled(true);
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onEntityCombust(EntityCombustEvent event) {
- FlagPermissions perms = Residence.getPermsByLoc(event.getEntity()
- .getLocation());
- if (!perms.has("burn", true)) {
+ FlagPermissions perms = Residence.getPermsByLoc(event.getEntity().getLocation());
+ if (!perms.has("burn", true))
event.setCancelled(true);
- }
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
- public void onExplosionPrime(ExplosionPrimeEvent event) {
- EntityType entity = event.getEntityType();
- FlagPermissions perms = Residence.getPermsByLoc(event.getEntity()
- .getLocation());
- if (entity == EntityType.CREEPER) {
- if (!perms.has("creeper", perms.has("explode", true))) {
- event.setCancelled(true);
- event.getEntity().remove();
- }
+ public void onEntityDamage(EntityDamageEvent event) {
+ Entity ent = event.getEntity();
+ if (ent.hasMetadata("NPC"))
+ return;
+ boolean tamedWolf = ent instanceof Wolf ? ((Wolf) ent).isTamed() : false;
+ ClaimedResidence area = Residence.getResidenceManager().getByLoc(ent.getLocation());
+ /* Living Entities */
+ if (event instanceof EntityDamageByEntityEvent) {
+ EntityDamageByEntityEvent attackevent = (EntityDamageByEntityEvent) event;
+ Entity damager = attackevent.getDamager();
+ ClaimedResidence srcarea = null;
+ if (damager != null)
+ srcarea = Residence.getResidenceManager().getByLoc(damager.getLocation());
+ boolean srcpvp = true;
+ if (srcarea != null)
+ srcpvp = srcarea.getPermissions().has("pvp", true);
+ ent = attackevent.getEntity();
+ if ((ent instanceof Player || tamedWolf) && (damager instanceof Player || (damager instanceof Arrow && (((Arrow) damager).getShooter() instanceof Player)))) {
+ Player attacker = null;
+ if (damager instanceof Player)
+ attacker = (Player) damager;
+ else if (damager instanceof Arrow)
+ attacker = (Player) ((Arrow) damager).getShooter();
+ if (!srcpvp) {
+ if (attacker != null)
+ attacker.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPVPZone"));
+ event.setCancelled(true);
+ return;
+ }
+ /* Check for Player vs Player */
+ if (area == null) {
+ /* World PvP */
+ if (damager != null)
+ if (!Residence.getWorldFlags().getPerms(damager.getWorld().getName()).has("pvp", true)) {
+ if (attacker != null)
+ attacker.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("WorldPVPDisabled"));
+ event.setCancelled(true);
+ }
+ } else /* Normal PvP */
+ if (!area.getPermissions().has("pvp", true)) {
+ if (attacker != null)
+ attacker.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPVPZone"));
+ event.setCancelled(true);
+ }
+ return;
+ } else if ((ent instanceof Player || tamedWolf) && (damager instanceof Creeper))
+ if (area == null) {
+ if (!Residence.getWorldFlags().getPerms(damager.getWorld().getName()).has("creeper", true))
+ event.setCancelled(true);
+ } else if (!area.getPermissions().has("creeper", true))
+ event.setCancelled(true);
}
- if (entity == EntityType.PRIMED_TNT
- || entity == EntityType.MINECART_TNT) {
- if (!perms.has("tnt", perms.has("explode", true))) {
+ if (area == null) {
+ if (!Residence.getWorldFlags().getPerms(ent.getWorld().getName()).has("damage", true) && (ent instanceof Player || tamedWolf))
event.setCancelled(true);
- event.getEntity().remove();
- }
- }
- if (entity == EntityType.FIREBALL) {
- if (!perms.has("fireball", perms.has("explode", true))) {
- event.setCancelled(true);
- event.getEntity().remove();
- }
- }
- if (entity == EntityType.SMALL_FIREBALL) {
- if (!perms.has("fireball", perms.has("explode", true))) {
- event.setCancelled(true);
- event.getEntity().remove();
- }
- }
- if (entity == EntityType.WITHER_SKULL) {
- if (!perms.has("witherdamage", perms.has("damage", true))) {
- event.setCancelled(true);
- event.getEntity().remove();
+ } else if (!area.getPermissions().has("damage", true) && (ent instanceof Player || tamedWolf))
+ event.setCancelled(true);
+ if (event.isCancelled())
+ /* Put out a fire on a player */
+ if ((ent instanceof Player || tamedWolf) && (event.getCause() == EntityDamageEvent.DamageCause.FIRE || event.getCause() == EntityDamageEvent.DamageCause.FIRE_TICK))
+ ent.setFireTicks(0);
+ }
+
+ @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
+ public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) {
+ if (event.getEntityType() == EntityType.ITEM_FRAME || (Residence.is1_8() && event.getEntityType() == EntityType.ARMOR_STAND)) {
+ Entity dmgr = event.getDamager();
+ Player player;
+ if (dmgr instanceof Player)
+ player = (Player) event.getDamager();
+ else if (dmgr instanceof Projectile && ((Projectile) dmgr).getShooter() instanceof Player)
+ player = (Player) ((Projectile) dmgr).getShooter();
+ else
+ return;
+
+ if (Residence.isResAdminOn(player))
+ return;
+
+ // Note: Location of entity, not player; otherwise player could
+ // stand outside of res and still damage
+ Location loc = event.getEntity().getLocation();
+ ClaimedResidence res = Residence.getResidenceManager().getByLoc(loc);
+ if (res != null) {
+ if (!res.getPermissions().has("container", false))
+ if (isMonster(dmgr)) {
+ event.setCancelled(true);
+ return;
+ }
+
+ if (!res.getPermissions().playerHas(player.getName(), "container", false)) {
+ event.setCancelled(true);
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "container"));
+ }
}
}
}
@@ -260,63 +225,113 @@ public class ResidenceEntityListener implements Listener {
return;
Boolean cancel = false;
EntityType entity = event.getEntityType();
- FlagPermissions perms = Residence.getPermsByLoc(event.getEntity()
- .getLocation());
- FlagPermissions world = Residence.getWorldFlags().getPerms(
- event.getEntity().getWorld().getName());
- if (entity == EntityType.CREEPER) {
- if (!perms.has("creeper", perms.has("explode", true))) {
+ FlagPermissions perms = Residence.getPermsByLoc(event.getEntity().getLocation());
+ FlagPermissions world = Residence.getWorldFlags().getPerms(event.getEntity().getWorld().getName());
+ if (entity == EntityType.CREEPER)
+ if (!perms.has("creeper", perms.has("explode", true)))
cancel = true;
- }
- }
- if (entity == EntityType.PRIMED_TNT
- || entity == EntityType.MINECART_TNT) {
- if (!perms.has("tnt", perms.has("explode", true))) {
+ if (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT)
+ if (!perms.has("tnt", perms.has("explode", true)))
cancel = true;
- }
- }
- if (entity == EntityType.FIREBALL) {
- if (!perms.has("fireball", perms.has("explode", true))) {
+ if (entity == EntityType.FIREBALL)
+ if (!perms.has("fireball", perms.has("explode", true)))
cancel = true;
- }
- }
- if (entity == EntityType.SMALL_FIREBALL) {
- if (!perms.has("fireball", perms.has("explode", true))) {
+ if (entity == EntityType.SMALL_FIREBALL)
+ if (!perms.has("fireball", perms.has("explode", true)))
cancel = true;
- }
- }
- if (entity == EntityType.WITHER_SKULL || entity == EntityType.WITHER) {
- if (!perms.has(
- "wither",
- perms.has("explode",
- world.has("wither", world.has("explode", true))))) {
+ if (entity == EntityType.WITHER_SKULL || entity == EntityType.WITHER)
+ if (!perms.has("wither", perms.has("explode", world.has("wither", world.has("explode", true)))))
cancel = true;
- }
- }
if (cancel) {
event.setCancelled(true);
event.getEntity().remove();
} else {
List preserve = new ArrayList();
for (Block block : event.blockList()) {
- FlagPermissions blockperms = Residence.getPermsByLoc(block
- .getLocation());
- if ((!blockperms.has("wither", blockperms.has("explode",
- world.has("wither", world.has("explode", true))))
- && (entity == EntityType.WITHER || entity == EntityType.WITHER_SKULL)
- || (!blockperms.has("fireball",
- blockperms.has("explode", true)) && (entity == EntityType.FIREBALL || entity == EntityType.SMALL_FIREBALL))
- || (!blockperms.has("tnt",
- blockperms.has("explode", true)) && (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT)) || (!blockperms
- .has("creeper", blockperms.has("explode", true)) && entity == EntityType.CREEPER))) {
- if (block != null) {
- preserve.add(block);
- }
+ FlagPermissions blockperms = Residence.getPermsByLoc(block.getLocation());
+ if ((!blockperms.has("wither", blockperms.has("explode", world.has("wither", world.has("explode", true)))) && (entity == EntityType.WITHER || entity == EntityType.WITHER_SKULL)
+ || (!blockperms.has("fireball", blockperms.has("explode", true)) && (entity == EntityType.FIREBALL || entity == EntityType.SMALL_FIREBALL))
+ || (!blockperms.has("tnt", blockperms.has("explode", true)) && (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT))
+ || (!blockperms.has("creeper", blockperms.has("explode", true)) && entity == EntityType.CREEPER)))
+ preserve.add(block);
+ }
+ for (Block block : preserve)
+ event.blockList().remove(block);
+ }
+ }
+
+ @EventHandler(priority = EventPriority.LOWEST)
+ public void onEntityInteract(EntityInteractEvent event) {
+ Block block = event.getBlock();
+ Material mat = block.getType();
+ Entity entity = event.getEntity();
+ FlagPermissions perms = Residence.getPermsByLoc(block.getLocation());
+ boolean hastrample = perms.has("trample", perms.has("hasbuild", true));
+ if (!hastrample && !(entity.getType() == EntityType.FALLING_BLOCK) && (mat == Material.SOIL || mat == Material.SOUL_SAND))
+ event.setCancelled(true);
+ }
+
+ @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
+ public void onExplosionPrime(ExplosionPrimeEvent event) {
+ EntityType entity = event.getEntityType();
+ FlagPermissions perms = Residence.getPermsByLoc(event.getEntity().getLocation());
+ if (entity == EntityType.CREEPER)
+ if (!perms.has("creeper", perms.has("explode", true))) {
+ event.setCancelled(true);
+ event.getEntity().remove();
+ }
+ if (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT)
+ if (!perms.has("tnt", perms.has("explode", true))) {
+ event.setCancelled(true);
+ event.getEntity().remove();
+ }
+ if (entity == EntityType.FIREBALL)
+ if (!perms.has("fireball", perms.has("explode", true))) {
+ event.setCancelled(true);
+ event.getEntity().remove();
+ }
+ if (entity == EntityType.SMALL_FIREBALL)
+ if (!perms.has("fireball", perms.has("explode", true))) {
+ event.setCancelled(true);
+ event.getEntity().remove();
+ }
+ if (entity == EntityType.WITHER_SKULL)
+ if (!perms.has("witherdamage", perms.has("damage", true))) {
+ event.setCancelled(true);
+ event.getEntity().remove();
+ }
+ }
+
+ @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
+ public void onHangingBreak(HangingBreakEvent event) {
+ if (event instanceof HangingBreakByEntityEvent) {
+ HangingBreakByEntityEvent evt = (HangingBreakByEntityEvent) event;
+ if (evt.getRemover() instanceof Player) {
+ Player player = (Player) evt.getRemover();
+ if (Residence.isResAdminOn(player))
+ return;
+ String pname = player.getName();
+ FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getEntity().getLocation(), player);
+ String world = event.getEntity().getWorld().getName();
+ if (!perms.playerHas(pname, world, "destroy", perms.playerHas(pname, world, "build", true))) {
+ event.setCancelled(true);
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
}
}
- for (Block block : preserve) {
- event.blockList().remove(block);
- }
+ }
+ }
+
+ @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
+ public void onHangingPlace(HangingPlaceEvent event) {
+ Player player = event.getPlayer();
+ if (Residence.isResAdminOn(player))
+ return;
+ FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getEntity().getLocation(), player);
+ String pname = player.getName();
+ String world = player.getWorld().getName();
+ if (!perms.playerHas(pname, world, "place", perms.playerHas(pname, world, "build", true))) {
+ event.setCancelled(true);
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
}
}
@@ -325,158 +340,24 @@ public class ResidenceEntityListener implements Listener {
if (event.isCancelled())
return;
Entity ent = event.getEntity();
- boolean srcpvp = Residence.getPermsByLoc(ent.getLocation()).has("pvp",
- true);
+ boolean srcpvp = Residence.getPermsByLoc(ent.getLocation()).has("pvp", true);
Iterator it = event.getAffectedEntities().iterator();
while (it.hasNext()) {
LivingEntity target = it.next();
if (target.getType() == EntityType.PLAYER) {
- Boolean tgtpvp = Residence.getPermsByLoc(target.getLocation())
- .has("pvp", true);
- if (!srcpvp || !tgtpvp) {
+ Boolean tgtpvp = Residence.getPermsByLoc(target.getLocation()).has("pvp", true);
+ if (!srcpvp || !tgtpvp)
event.setIntensity(target, 0);
- }
}
}
}
- @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
- public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) {
- if (event.getEntityType() == EntityType.ITEM_FRAME
- || event.getEntityType() == EntityType.ARMOR_STAND) {
- Entity dmgr = event.getDamager();
- Player player;
- if (dmgr instanceof Player) {
- player = (Player) event.getDamager();
- } else {
- if (dmgr instanceof Projectile
- && ((Projectile) dmgr).getShooter() instanceof Player) {
- player = (Player) ((Projectile) dmgr).getShooter();
- } else
- return;
- }
-
- if (Residence.isResAdminOn(player))
- return;
-
- // Note: Location of entity, not player; otherwise player could
- // stand outside of res and still damage
- Location loc = event.getEntity().getLocation();
- ClaimedResidence res = Residence.getResidenceManager()
- .getByLoc(loc);
- if (res != null) {
- if (!res.getPermissions().has("container", false)) {
- if (isMonster(dmgr)) {
- event.setCancelled(true);
- return;
- }
- }
-
- if (!res.getPermissions().playerHas(player.getName(),
- "container", false)) {
- event.setCancelled(true);
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("FlagDeny",
- "container"));
- }
- }
- }
+ private boolean isAnimal(Entity ent) {
+ return (ent instanceof Horse || ent instanceof Bat || ent instanceof Snowman || ent instanceof IronGolem || ent instanceof Ocelot || ent instanceof Pig || ent instanceof Sheep
+ || ent instanceof Chicken || ent instanceof Wolf || ent instanceof Cow || ent instanceof Squid || ent instanceof Villager || (Residence.is1_8() && ent instanceof Rabbit));
}
- @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
- public void onEntityDamage(EntityDamageEvent event) {
- Entity ent = event.getEntity();
- if (ent.hasMetadata("NPC")) {
- return;
- }
- boolean tamedWolf = ent instanceof Wolf ? ((Wolf) ent).isTamed()
- : false;
- ClaimedResidence area = Residence.getResidenceManager().getByLoc(
- ent.getLocation());
- /* Living Entities */
- if (event instanceof EntityDamageByEntityEvent) {
- EntityDamageByEntityEvent attackevent = (EntityDamageByEntityEvent) event;
- Entity damager = attackevent.getDamager();
- ClaimedResidence srcarea = null;
- if (damager != null) {
- srcarea = Residence.getResidenceManager().getByLoc(
- damager.getLocation());
- }
- boolean srcpvp = true;
- if (srcarea != null) {
- srcpvp = srcarea.getPermissions().has("pvp", true);
- }
- ent = attackevent.getEntity();
- if ((ent instanceof Player || tamedWolf)
- && (damager instanceof Player || (damager instanceof Arrow && (((Arrow) damager)
- .getShooter() instanceof Player)))) {
- Player attacker = null;
- if (damager instanceof Player) {
- attacker = (Player) damager;
- } else if (damager instanceof Arrow) {
- attacker = (Player) ((Arrow) damager).getShooter();
- }
- if (!srcpvp) {
- attacker.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("NoPVPZone"));
- event.setCancelled(true);
- return;
- }
- /* Check for Player vs Player */
- if (area == null) {
- /* World PvP */
- if (!Residence.getWorldFlags()
- .getPerms(damager.getWorld().getName())
- .has("pvp", true)) {
- attacker.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase(
- "WorldPVPDisabled"));
- event.setCancelled(true);
- }
- } else {
- /* Normal PvP */
- if (!area.getPermissions().has("pvp", true)) {
- attacker.sendMessage(ChatColor.RED
- + Residence.getLanguage()
- .getPhrase("NoPVPZone"));
- event.setCancelled(true);
- }
- }
- return;
- } else if ((ent instanceof Player || tamedWolf)
- && (damager instanceof Creeper)) {
- if (area == null) {
- if (!Residence.getWorldFlags()
- .getPerms(damager.getWorld().getName())
- .has("creeper", true)) {
- event.setCancelled(true);
- }
- } else {
- if (!area.getPermissions().has("creeper", true)) {
- event.setCancelled(true);
- }
- }
- }
- }
- if (area == null) {
- if (!Residence.getWorldFlags().getPerms(ent.getWorld().getName())
- .has("damage", true)
- && (ent instanceof Player || tamedWolf)) {
- event.setCancelled(true);
- }
- } else {
- if (!area.getPermissions().has("damage", true)
- && (ent instanceof Player || tamedWolf)) {
- event.setCancelled(true);
- }
- }
- if (event.isCancelled()) {
- /* Put out a fire on a player */
- if ((ent instanceof Player || tamedWolf)
- && (event.getCause() == EntityDamageEvent.DamageCause.FIRE || event
- .getCause() == EntityDamageEvent.DamageCause.FIRE_TICK)) {
- ent.setFireTicks(0);
- }
- }
+ private boolean isMonster(Entity ent) {
+ return (ent instanceof Monster || ent instanceof Slime || ent instanceof Ghast);
}
}
diff --git a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener.java b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener.java
index 95f2dbf..c0a61c4 100644
--- a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener.java
+++ b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener.java
@@ -28,7 +28,6 @@ import org.bukkit.event.block.Action;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerBucketEmptyEvent;
import org.bukkit.event.player.PlayerBucketFillEvent;
-import org.bukkit.event.player.PlayerInteractAtEntityEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
@@ -69,9 +68,8 @@ public class ResidencePlayerListener implements Listener {
playerToggleChat = new ArrayList();
minUpdateTime = Residence.getConfigManager().getMinMoveUpdateInterval();
chatenabled = Residence.getConfigManager().chatEnabled();
- for (Player player : Bukkit.getServer().getOnlinePlayers()) {
+ for (Player player : Bukkit.getServer().getOnlinePlayers())
lastUpdate.put(player.getName(), System.currentTimeMillis());
- }
}
public void doHeals() {
@@ -79,15 +77,13 @@ public class ResidencePlayerListener implements Listener {
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
String resname = Residence.getPlayerListener().getCurrentResidenceName(player.getName());
ClaimedResidence res = null;
- if (resname != null) {
+ if (resname != null)
res = Residence.getResidenceManager().getByName(resname);
- }
if (res != null && res.getPermissions().has("healing", false)) {
Damageable damage = player;
double health = damage.getHealth();
- if (health < 20 && !player.isDead()) {
+ if (health < 20 && !player.isDead())
player.setHealth(health + 1);
- }
}
}
} catch (Exception ex) {
@@ -116,9 +112,8 @@ public class ResidencePlayerListener implements Listener {
ClaimedResidence ResOld = null;
if (currentRes.containsKey(pname)) {
ResOld = Residence.getResidenceManager().getByName(currentRes.get(pname));
- if (ResOld == null) {
+ if (ResOld == null)
currentRes.remove(pname);
- }
}
if (res == null) {
lastOutsideLoc.put(pname, loc);
@@ -129,40 +124,31 @@ public class ResidencePlayerListener implements Listener {
ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(ResOld, null, player);
Residence.getServ().getPluginManager().callEvent(chgEvent);
- if (leave != null && !leave.equals("")) {
- if (Residence.getConfigManager().useActionBar()) {
- ActionBar.send(player,
- (new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, ResOld.getName(), ResOld, leave))
- .toString());
- } else {
+ if (leave != null && !leave.equals(""))
+ if (Residence.getConfigManager().useActionBar())
+ ActionBar.send(player, (new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, ResOld.getName(), ResOld, leave)).toString());
+ else
player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, ResOld.getName(), ResOld, leave));
- }
- }
currentRes.remove(pname);
Residence.getChatManager().removeFromChannel(pname);
}
return;
}
- if (move) {
- if (!res.getPermissions().playerHas(pname, "move", true) && !Residence.isResAdminOn(player)
- && !player.hasPermission("residence.admin.move")) {
+ if (move)
+ if (!res.getPermissions().playerHas(pname, "move", true) && !Residence.isResAdminOn(player) && !player.hasPermission("residence.admin.move")) {
Location lastLoc = lastOutsideLoc.get(pname);
- if (lastLoc != null) {
+ if (lastLoc != null)
player.teleport(lastLoc);
- } else {
+ else
player.teleport(res.getOutsideFreeLoc(loc));
- }
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("ResidenceMoveDeny", res.getName().split("\\.")[res.getName().split("\\.").length - 1]));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceMoveDeny", res.getName().split("\\.")[res.getName().split("\\.").length - 1]));
return;
}
- }
lastOutsideLoc.put(pname, loc);
if (!currentRes.containsKey(pname) || ResOld != res) {
currentRes.put(pname, areaname);
- if (subzone == null) {
+ if (subzone == null)
chatchange = true;
- }
// "from" residence for ResidenceChangedEvent
ClaimedResidence chgFrom = null;
@@ -170,15 +156,11 @@ public class ResidencePlayerListener implements Listener {
String leave = ResOld.getLeaveMessage();
chgFrom = ResOld;
- if (leave != null && !leave.equals("") && ResOld != res.getParent()) {
- if (Residence.getConfigManager().useActionBar()) {
- ActionBar.send(player,
- (new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, ResOld.getName(), ResOld, leave))
- .toString());
- } else {
+ if (leave != null && !leave.equals("") && ResOld != res.getParent())
+ if (Residence.getConfigManager().useActionBar())
+ ActionBar.send(player, (new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, ResOld.getName(), ResOld, leave)).toString());
+ else
player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, ResOld.getName(), ResOld, leave));
- }
- }
}
String enterMessage = res.getEnterMessage();
@@ -186,18 +168,14 @@ public class ResidencePlayerListener implements Listener {
ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(chgFrom, res, player);
Residence.getServ().getPluginManager().callEvent(chgEvent);
- if (enterMessage != null && !enterMessage.equals("") && !(ResOld != null && res == ResOld.getParent())) {
- if (Residence.getConfigManager().useActionBar()) {
- ActionBar.send(player, (new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, areaname, res, enterMessage))
- .toString());
- } else {
+ if (enterMessage != null && !enterMessage.equals("") && !(ResOld != null && res == ResOld.getParent()))
+ if (Residence.getConfigManager().useActionBar())
+ ActionBar.send(player, (new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, areaname, res, enterMessage)).toString());
+ else
player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, areaname, res, enterMessage));
- }
- }
}
- if (chatchange && chatenabled) {
+ if (chatchange && chatenabled)
Residence.getChatManager().setChannel(pname, areaname);
- }
}
public String insertMessages(Player player, String areaname, ClaimedResidence res, String message) {
@@ -211,32 +189,6 @@ public class ResidencePlayerListener implements Listener {
return message;
}
- private boolean isCanUseEntity(Material mat, Block block) {
- return isCanUseEntity_BothClick(mat, block) || isCanUseEntity_RClickOnly(mat, block);
- }
-
- private boolean isCanUseEntity_BothClick(Material mat, Block block) {
- return mat == Material.LEVER || mat == Material.STONE_BUTTON || mat == Material.WOOD_BUTTON || mat == Material.WOODEN_DOOR
- || mat == Material.SPRUCE_DOOR || mat == Material.BIRCH_DOOR || mat == Material.JUNGLE_DOOR || mat == Material.ACACIA_DOOR
- || mat == Material.DARK_OAK_DOOR || mat == Material.SPRUCE_FENCE_GATE || mat == Material.BIRCH_FENCE_GATE
- || mat == Material.JUNGLE_FENCE_GATE || mat == Material.ACACIA_FENCE_GATE || mat == Material.DARK_OAK_FENCE_GATE
- || mat == Material.TRAP_DOOR || mat == Material.FENCE_GATE || mat == Material.PISTON_BASE || mat == Material.PISTON_STICKY_BASE
- || mat == Material.DRAGON_EGG || Residence.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId()));
- }
-
- private boolean isCanUseEntity_RClickOnly(Material mat, Block block) {
- return mat == Material.ITEM_FRAME || mat == Material.BEACON || mat == Material.FLOWER_POT || mat == Material.COMMAND || mat == Material.ANVIL
- || mat == Material.CAKE_BLOCK || mat == Material.NOTE_BLOCK || mat == Material.DIODE || mat == Material.DIODE_BLOCK_OFF
- || mat == Material.DIODE_BLOCK_ON || mat == Material.BED_BLOCK || mat == Material.WORKBENCH || mat == Material.BREWING_STAND
- || mat == Material.ENCHANTMENT_TABLE
- || Residence.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId()));
- }
-
- private boolean isContainer(Material mat, Block block) {
- return FlagPermissions.getMaterialUseFlagList().containsKey(mat) && FlagPermissions.getMaterialUseFlagList().get(mat).equals("container")
- || Residence.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId()));
- }
-
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) {
Player player = event.getPlayer();
@@ -244,15 +196,13 @@ public class ResidencePlayerListener implements Listener {
return;
String pname = player.getName();
ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getBlockClicked().getLocation());
- if (res != null) {
- if (Residence.getConfigManager().preventRentModify() && Residence.getConfigManager().enabledRentSystem()) {
+ if (res != null)
+ if (Residence.getConfigManager().preventRentModify() && Residence.getConfigManager().enabledRentSystem())
if (Residence.getRentManager().isRented(res.getName())) {
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentedModifyDeny"));
event.setCancelled(true);
return;
}
- }
- }
FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlockClicked().getLocation(), player);
if (!perms.playerHas(pname, player.getWorld().getName(), "bucket", perms.playerHas(pname, player.getWorld().getName(), "build", true))) {
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "bucket"));
@@ -267,18 +217,15 @@ public class ResidencePlayerListener implements Listener {
if (Residence.isResAdminOn(player))
return;
ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getBlockClicked().getLocation());
- if (res != null) {
- if (Residence.getConfigManager().preventRentModify() && Residence.getConfigManager().enabledRentSystem()) {
+ if (res != null)
+ if (Residence.getConfigManager().preventRentModify() && Residence.getConfigManager().enabledRentSystem())
if (Residence.getRentManager().isRented(res.getName())) {
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentedModifyDeny"));
event.setCancelled(true);
return;
}
- }
- }
FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlockClicked().getLocation(), player);
- boolean hasbucket = perms.playerHas(pname, player.getWorld().getName(), "bucket",
- perms.playerHas(pname, player.getWorld().getName(), "build", true));
+ boolean hasbucket = perms.playerHas(pname, player.getWorld().getName(), "bucket", perms.playerHas(pname, player.getWorld().getName(), "build", true));
if (!hasbucket) {
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "bucket"));
event.setCancelled(true);
@@ -292,9 +239,8 @@ public class ResidencePlayerListener implements Listener {
String area = currentRes.get(pname);
if (area != null) {
ChatChannel channel = Residence.getChatManager().getChannel(area);
- if (channel != null) {
+ if (channel != null)
channel.chat(pname, event.getMessage());
- }
event.setCancelled(true);
}
}
@@ -308,11 +254,10 @@ public class ResidencePlayerListener implements Listener {
if (block == null)
return;
Material mat = block.getType();
- if (!((isContainer(mat, block) || isCanUseEntity_RClickOnly(mat, block)) && event.getAction() == Action.RIGHT_CLICK_BLOCK
- || isCanUseEntity_BothClick(mat, block) || event.getAction() == Action.PHYSICAL)) {
+ if (!((isContainer(mat, block) || isCanUseEntity_RClickOnly(mat, block)) && event.getAction() == Action.RIGHT_CLICK_BLOCK || isCanUseEntity_BothClick(mat, block)
+ || event.getAction() == Action.PHYSICAL)) {
int typeId = player.getItemInHand().getTypeId();
- if (typeId != Residence.getConfigManager().getSelectionTooldID() && typeId != Residence.getConfigManager().getInfoToolID()
- && typeId != 351 && typeId != 416)
+ if (typeId != Residence.getConfigManager().getSelectionTooldID() && typeId != Residence.getConfigManager().getInfoToolID() && typeId != 351 && typeId != 416)
return;
}
FlagPermissions perms = Residence.getPermsByLocForPlayer(block.getLocation(), player);
@@ -328,8 +273,7 @@ public class ResidencePlayerListener implements Listener {
return;
}
}
- if (!perms.playerHas(player.getName(), world, "trample", perms.playerHas(player.getName(), world, "build", true))
- && (mat == Material.SOIL || mat == Material.SOUL_SAND)) {
+ if (!perms.playerHas(player.getName(), world, "trample", perms.playerHas(player.getName(), world, "build", true)) && (mat == Material.SOIL || mat == Material.SOUL_SAND)) {
event.setCancelled(true);
return;
}
@@ -343,31 +287,27 @@ public class ResidencePlayerListener implements Listener {
if (event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
if (player.getItemInHand().getTypeId() == Residence.getConfigManager().getSelectionTooldID()) {
Plugin wep = Bukkit.getPluginManager().getPlugin("WorldEdit");
- if (wep != null) {
+ if (wep != null)
if (((WorldEditPlugin) wep).getConfig().getInt("wand-item") == Residence.getConfigManager().getSelectionTooldID())
return;
- }
PermissionGroup group = Residence.getPermissionManager().getGroup(player);
- if (player.hasPermission("residence.select") || player.hasPermission("residence.create")
- && !player.isPermissionSet("residence.select") || group.canCreateResidences() && !player.isPermissionSet("residence.create")
- && !player.isPermissionSet("residence.select") || resadmin) {
+ if (player.hasPermission("residence.select") || player.hasPermission("residence.create") && !player.isPermissionSet("residence.select")
+ || group.canCreateResidences() && !player.isPermissionSet("residence.create") && !player.isPermissionSet("residence.select") || resadmin) {
if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
Location loc = block.getLocation();
Residence.getSelectionManager().placeLoc1(player, loc);
- player.sendMessage(ChatColor.GREEN
- + Residence.getLanguage().getPhrase("SelectPoint", Residence.getLanguage().getPhrase("Primary")) + ChatColor.RED
- + "(" + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SelectPoint", Residence.getLanguage().getPhrase("Primary")) + ChatColor.RED + "(" + loc.getBlockX()
+ + "," + loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
} else if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
Location loc = block.getLocation();
Residence.getSelectionManager().placeLoc2(player, loc);
- player.sendMessage(ChatColor.GREEN
- + Residence.getLanguage().getPhrase("SelectPoint", Residence.getLanguage().getPhrase("Secondary")) + ChatColor.RED
- + "(" + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SelectPoint", Residence.getLanguage().getPhrase("Secondary")) + ChatColor.RED + "(" + loc.getBlockX()
+ + "," + loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
}
event.setCancelled(true);
}
}
- if (player.getItemInHand().getTypeId() == Residence.getConfigManager().getInfoToolID()) {
+ if (player.getItemInHand().getTypeId() == Residence.getConfigManager().getInfoToolID())
if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
Location loc = block.getLocation();
String res = Residence.getResidenceManager().getNameByLoc(loc);
@@ -380,13 +320,11 @@ public class ResidencePlayerListener implements Listener {
player.sendMessage(Residence.getLanguage().getPhrase("NoResHere"));
}
}
- }
if (!resadmin) {
- if (heldItem != null) {
+ if (heldItem != null)
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
- if (player.getItemInHand().getTypeId() == 351) {
- if (player.getItemInHand().getData().getData() == 15 && block.getType() == Material.GRASS
- || player.getItemInHand().getData().getData() == 3 && block.getTypeId() == 17
+ if (player.getItemInHand().getTypeId() == 351)
+ if (player.getItemInHand().getData().getData() == 15 && block.getType() == Material.GRASS || player.getItemInHand().getData().getData() == 3 && block.getTypeId() == 17
&& (block.getData() == 3 || block.getData() == 7 || block.getData() == 11 || block.getData() == 15)) {
perms = Residence.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player);
if (!perms.playerHas(player.getName(), world, "build", true)) {
@@ -394,22 +332,21 @@ public class ResidencePlayerListener implements Listener {
return;
}
}
- }
- if (heldItem == Material.ARMOR_STAND) {
- perms = Residence.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player);
- if (!perms.playerHas(player.getName(), world, "build", true)) {
- player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
- event.setCancelled(true);
- return;
+ if (Residence.is1_8())
+ if (heldItem == Material.ARMOR_STAND) {
+ perms = Residence.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player);
+ if (!perms.playerHas(player.getName(), world, "build", true)) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
+ event.setCancelled(true);
+ return;
+ }
}
- }
}
- }
if (isContainer(mat, block) || isCanUseEntity(mat, block)) {
boolean hasuse = perms.playerHas(player.getName(), world, "use", true);
- for (Entry checkMat : FlagPermissions.getMaterialUseFlagList().entrySet()) {
- if (mat == checkMat.getKey()) {
- if (!perms.playerHas(player.getName(), world, checkMat.getValue(), hasuse)) {
+ for (Entry checkMat : FlagPermissions.getMaterialUseFlagList().entrySet())
+ if (mat == checkMat.getKey())
+ if (!perms.playerHas(player.getName(), world, checkMat.getValue(), hasuse))
if (hasuse || checkMat.getValue().equals("container")) {
event.setCancelled(true);
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", checkMat.getValue()));
@@ -419,56 +356,30 @@ public class ResidencePlayerListener implements Listener {
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "use"));
return;
}
- }
- }
- }
- if (Residence.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId()))) {
+ if (Residence.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId())))
if (!perms.playerHas(player.getName(), world, "container", hasuse)) {
event.setCancelled(true);
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "container"));
return;
}
- }
- if (Residence.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId()))) {
+ if (Residence.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId())))
if (!hasuse) {
event.setCancelled(true);
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "use"));
return;
}
- }
- if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
- if (Residence.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId()))) {
+ if (event.getAction() == Action.RIGHT_CLICK_BLOCK)
+ if (Residence.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId())))
if (!hasuse) {
event.setCancelled(true);
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "use"));
return;
}
- }
- }
}
}
}
}
- @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
- public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event) {
- Player player = event.getPlayer();
- if (Residence.isResAdminOn(player))
- return;
-
- Entity ent = event.getRightClicked();
- if (ent.getType() != EntityType.ARMOR_STAND)
- return;
-
- FlagPermissions perms = Residence.getPermsByLocForPlayer(ent.getLocation(), player);
- String world = player.getWorld().getName();
-
- if (!perms.playerHas(player.getName(), world, "container", perms.playerHas(player.getName(), world, "use", true))) {
- event.setCancelled(true);
- player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "container"));
- }
- }
-
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
Player player = event.getPlayer();
@@ -510,9 +421,8 @@ public class ResidencePlayerListener implements Listener {
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
lastUpdate.put(player.getName(), 0L);
- if (Residence.getPermissionManager().isResidenceAdmin(player)) {
+ if (Residence.getPermissionManager().isResidenceAdmin(player))
Residence.turnResAdminOn(player);
- }
handleNewLocation(player, player.getLocation(), false);
}
@@ -530,10 +440,9 @@ public class ResidencePlayerListener implements Listener {
if (now - last < Residence.getConfigManager().getMinMoveUpdateInterval())
return;
lastUpdate.put(player.getName(), now);
- if (event.getFrom().getWorld() == event.getTo().getWorld()) {
+ if (event.getFrom().getWorld() == event.getTo().getWorld())
if (event.getFrom().distance(event.getTo()) == 0)
return;
- }
handleNewLocation(player, event.getTo(), true);
}
@@ -556,15 +465,12 @@ public class ResidencePlayerListener implements Listener {
return;
if (res.getPermissions().playerHas(player.getName(), "move", true))
return;
- if (bed) {
+ if (bed)
loc = player.getWorld().getSpawnLocation();
- }
res = Residence.getResidenceManager().getByLoc(loc);
- if (res != null) {
- if (!res.getPermissions().playerHas(player.getName(), "move", true)) {
+ if (res != null)
+ if (!res.getPermissions().playerHas(player.getName(), "move", true))
loc = res.getOutsideFreeLoc(loc);
- }
- }
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoSpawn"));
event.setRespawnLocation(loc);
}
@@ -580,8 +486,7 @@ public class ResidencePlayerListener implements Listener {
}
ClaimedResidence res = Residence.getResidenceManager().getByLoc(loc);
- if (event.getCause() == TeleportCause.ENDER_PEARL || event.getCause() == TeleportCause.COMMAND
- || event.getCause() == TeleportCause.NETHER_PORTAL) {
+ if (event.getCause() == TeleportCause.ENDER_PEARL || event.getCause() == TeleportCause.COMMAND || event.getCause() == TeleportCause.NETHER_PORTAL)
if (res != null) {
String areaname = Residence.getResidenceManager().getNameByLoc(loc);
if (!res.getPermissions().playerHas(player.getName(), "move", true)) {
@@ -590,8 +495,7 @@ public class ResidencePlayerListener implements Listener {
return;
}
}
- }
- if (event.getCause() == TeleportCause.PLUGIN) {
+ if (event.getCause() == TeleportCause.PLUGIN)
if (res != null) {
String areaname = Residence.getResidenceManager().getNameByLoc(loc);
if (!res.getPermissions().playerHas(player.getName(), "tp", true) && !player.hasPermission("residence.admin.tp")) {
@@ -600,7 +504,6 @@ public class ResidencePlayerListener implements Listener {
return;
}
}
- }
handleNewLocation(player, loc, false);
}
@@ -611,9 +514,8 @@ public class ResidencePlayerListener implements Listener {
playerToggleChat = new ArrayList();
minUpdateTime = Residence.getConfigManager().getMinMoveUpdateInterval();
chatenabled = Residence.getConfigManager().chatEnabled();
- for (Player player : Bukkit.getServer().getOnlinePlayers()) {
+ for (Player player : Bukkit.getServer().getOnlinePlayers())
lastUpdate.put(player.getName(), System.currentTimeMillis());
- }
}
public void tooglePlayerResidenceChat(Player player) {
@@ -626,4 +528,28 @@ public class ResidencePlayerListener implements Listener {
player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("ResidenceChat", ChatColor.RED + "ON" + ChatColor.YELLOW + "!"));
}
}
+
+ private boolean isCanUseEntity(Material mat, Block block) {
+ return isCanUseEntity_BothClick(mat, block) || isCanUseEntity_RClickOnly(mat, block);
+ }
+
+ private boolean isCanUseEntity_BothClick(Material mat, Block block) {
+ return mat == Material.LEVER || mat == Material.STONE_BUTTON || mat == Material.WOOD_BUTTON || mat == Material.WOODEN_DOOR
+ || (Residence.is1_8() && (mat == Material.SPRUCE_DOOR || mat == Material.BIRCH_DOOR || mat == Material.JUNGLE_DOOR || mat == Material.ACACIA_DOOR || mat == Material.DARK_OAK_DOOR
+ || mat == Material.SPRUCE_FENCE_GATE || mat == Material.BIRCH_FENCE_GATE || mat == Material.JUNGLE_FENCE_GATE || mat == Material.ACACIA_FENCE_GATE
+ || mat == Material.DARK_OAK_FENCE_GATE))
+ || mat == Material.TRAP_DOOR || mat == Material.FENCE_GATE || mat == Material.PISTON_BASE || mat == Material.PISTON_STICKY_BASE || mat == Material.DRAGON_EGG
+ || Residence.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId()));
+ }
+
+ private boolean isCanUseEntity_RClickOnly(Material mat, Block block) {
+ return mat == Material.ITEM_FRAME || mat == Material.BEACON || mat == Material.FLOWER_POT || mat == Material.COMMAND || mat == Material.ANVIL || mat == Material.CAKE_BLOCK
+ || mat == Material.NOTE_BLOCK || mat == Material.DIODE || mat == Material.DIODE_BLOCK_OFF || mat == Material.DIODE_BLOCK_ON || mat == Material.BED_BLOCK || mat == Material.WORKBENCH
+ || mat == Material.BREWING_STAND || mat == Material.ENCHANTMENT_TABLE || Residence.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId()));
+ }
+
+ private boolean isContainer(Material mat, Block block) {
+ return FlagPermissions.getMaterialUseFlagList().containsKey(mat) && FlagPermissions.getMaterialUseFlagList().get(mat).equals("container")
+ || Residence.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId()));
+ }
}
diff --git a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener_1_8.java b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener_1_8.java
new file mode 100644
index 0000000..19ec1a5
--- /dev/null
+++ b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener_1_8.java
@@ -0,0 +1,45 @@
+/*
+ * To change this template, choose Tools | Templates and open the template in
+ * the editor.
+ */
+
+package com.bekvon.bukkit.residence.listeners;
+
+import org.bukkit.ChatColor;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerInteractAtEntityEvent;
+
+import com.bekvon.bukkit.residence.Residence;
+import com.bekvon.bukkit.residence.protection.FlagPermissions;
+
+/**
+ *
+ * @author Administrator
+ */
+public class ResidencePlayerListener_1_8 implements Listener {
+
+ @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
+ public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event) {
+ Player player = event.getPlayer();
+ if (Residence.isResAdminOn(player))
+ return;
+
+ Entity ent = event.getRightClicked();
+ if (ent.getType() != EntityType.ARMOR_STAND)
+ return;
+
+ FlagPermissions perms = Residence.getPermsByLocForPlayer(ent.getLocation(), player);
+ String world = player.getWorld().getName();
+
+ if (!perms.playerHas(player.getName(), world, "container", perms.playerHas(player.getName(), world, "use", true))) {
+ event.setCancelled(true);
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "container"));
+ }
+ }
+
+}
diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/ClaimedResidence.java b/src/main/java/com/bekvon/bukkit/residence/protection/ClaimedResidence.java
index d6d864a..3b0c21b 100644
--- a/src/main/java/com/bekvon/bukkit/residence/protection/ClaimedResidence.java
+++ b/src/main/java/com/bekvon/bukkit/residence/protection/ClaimedResidence.java
@@ -32,52 +32,8 @@ import com.bekvon.bukkit.residence.text.help.InformationPager;
*/
public class ClaimedResidence {
- @SuppressWarnings({ "unchecked", "rawtypes" })
- public static ClaimedResidence load(Map root, ClaimedResidence parent) throws Exception {
- ClaimedResidence res = new ClaimedResidence();
- if (root == null)
- throw new Exception("Null residence!");
- res.enterMessage = (String) root.get("EnterMessage");
- res.leaveMessage = (String) root.get("LeaveMessage");
- if (root.containsKey("StoredMoney")) {
- res.bank.setStoredMoney((Integer) root.get("StoredMoney"));
- }
- if (root.containsKey("BlackList")) {
- res.blacklist = ResidenceItemList
- .load(res, (Map) root.get("BlackList"));
- }
- if (root.containsKey("IgnoreList")) {
- res.ignorelist = ResidenceItemList.load(res,
- (Map) root.get("IgnoreList"));
- }
- Map areamap = (Map) root.get("Areas");
- res.perms = ResidencePermissions.load(res, (Map) root.get("Permissions"));
- World world = Residence.getServ().getWorld(res.perms.getWorld());
- if (world == null)
- throw new Exception("Cant Find World: " + res.perms.getWorld());
- for (Entry map : areamap.entrySet()) {
- res.areas.put(map.getKey(),
- CuboidArea.load((Map) map.getValue(), world));
- }
- Map subzonemap = (Map) root.get("Subzones");
- for (Entry map : subzonemap.entrySet()) {
- ClaimedResidence subres = ClaimedResidence.load((Map) map.getValue(),
- res);
- if (Residence.getConfigManager().flagsInherit()) {
- subres.getPermissions().setParent(res.getPermissions());
- }
- res.subzones.put(map.getKey(), subres);
- }
- res.parent = parent;
- Map tploc = (Map) root.get("TPLoc");
- if (tploc != null) {
- res.tpLoc = new Location(world, (Integer) tploc.get("X"), (Integer) tploc.get("Y"),
- (Integer) tploc.get("Z"));
- }
- return res;
- }
-
protected ClaimedResidence parent;
+
protected Map areas;
protected Map subzones;
protected ResidencePermissions perms;
@@ -86,17 +42,8 @@ public class ClaimedResidence {
protected String enterMessage;
protected String leaveMessage;
protected ResidenceItemList ignorelist;
-
protected ResidenceItemList blacklist;
- private ClaimedResidence() {
- subzones = new HashMap();
- areas = new HashMap();
- bank = new ResidenceBank(this);
- blacklist = new ResidenceItemList(this, ListType.BLACKLIST);
- ignorelist = new ResidenceItemList(this, ListType.IGNORELIST);
- }
-
public ClaimedResidence(String creationWorld) {
this("Server Land", creationWorld);
}
@@ -111,114 +58,129 @@ public class ClaimedResidence {
parent = parentResidence;
}
+ private ClaimedResidence() {
+ subzones = new HashMap();
+ areas = new HashMap();
+ bank = new ResidenceBank(this);
+ blacklist = new ResidenceItemList(this, ListType.BLACKLIST);
+ ignorelist = new ResidenceItemList(this, ListType.IGNORELIST);
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public static ClaimedResidence load(Map root, ClaimedResidence parent) throws Exception {
+ ClaimedResidence res = new ClaimedResidence();
+ if (root == null)
+ throw new Exception("Null residence!");
+ res.enterMessage = (String) root.get("EnterMessage");
+ res.leaveMessage = (String) root.get("LeaveMessage");
+ if (root.containsKey("StoredMoney"))
+ res.bank.setStoredMoney((Integer) root.get("StoredMoney"));
+ if (root.containsKey("BlackList"))
+ res.blacklist = ResidenceItemList.load(res, (Map) root.get("BlackList"));
+ if (root.containsKey("IgnoreList"))
+ res.ignorelist = ResidenceItemList.load(res, (Map) root.get("IgnoreList"));
+ Map areamap = (Map) root.get("Areas");
+ res.perms = ResidencePermissions.load(res, (Map) root.get("Permissions"));
+ World world = Residence.getServ().getWorld(res.perms.getWorld());
+ if (world == null)
+ throw new Exception("Cant Find World: " + res.perms.getWorld());
+ for (Entry map : areamap.entrySet())
+ res.areas.put(map.getKey(), CuboidArea.load((Map) map.getValue(), world));
+ Map subzonemap = (Map) root.get("Subzones");
+ for (Entry map : subzonemap.entrySet()) {
+ ClaimedResidence subres = ClaimedResidence.load((Map) map.getValue(), res);
+ if (Residence.getConfigManager().flagsInherit())
+ subres.getPermissions().setParent(res.getPermissions());
+ res.subzones.put(map.getKey(), subres);
+ }
+ res.parent = parent;
+ Map tploc = (Map) root.get("TPLoc");
+ if (tploc != null)
+ res.tpLoc = new Location(world, (Integer) tploc.get("X"), (Integer) tploc.get("Y"), (Integer) tploc.get("Z"));
+ return res;
+ }
+
public boolean addArea(CuboidArea area, String name) {
return addArea(null, area, name, true);
}
public boolean addArea(Player player, CuboidArea area, String name, boolean resadmin) {
if (!Residence.validName(name)) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("InvalidNameCharacters"));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidNameCharacters"));
return false;
}
if (areas.containsKey(name)) {
- if (player != null) {
+ if (player != null)
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaExists"));
- }
return false;
}
- if (!resadmin && Residence.getConfigManager().getEnforceAreaInsideArea()
- && this.getParent() == null) {
+ if (!resadmin && Residence.getConfigManager().getEnforceAreaInsideArea() && this.getParent() == null) {
boolean inside = false;
- for (CuboidArea are : areas.values()) {
- if (are.isAreaWithinArea(area)) {
+ for (CuboidArea are : areas.values())
+ if (are.isAreaWithinArea(area))
inside = true;
- }
- }
if (!inside)
return false;
}
if (!area.getWorld().getName().equalsIgnoreCase(perms.getWorld())) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaDiffWorld"));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaDiffWorld"));
return false;
}
if (parent == null) {
- String collideResidence = Residence.getResidenceManager()
- .checkAreaCollision(area, this);
+ String collideResidence = Residence.getResidenceManager().checkAreaCollision(area, this);
if (collideResidence != null) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaCollision",
- ChatColor.YELLOW + collideResidence));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaCollision", ChatColor.YELLOW + collideResidence));
return false;
}
} else {
String[] szs = parent.listSubzones();
for (String sz : szs) {
ClaimedResidence res = parent.getSubzone(sz);
- if (res != null && res != this) {
+ if (res != null && res != this)
if (res.checkCollision(area)) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaSubzoneCollision",
- ChatColor.YELLOW + sz));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaSubzoneCollision", ChatColor.YELLOW + sz));
return false;
}
- }
}
}
if (!resadmin && player != null) {
if (!this.perms.hasResidencePermission(player, true)) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("NoPermission"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
return false;
}
if (parent != null) {
if (!parent.containsLoc(area.getHighLoc()) || !parent.containsLoc(area.getLowLoc())) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaNotWithinParent"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaNotWithinParent"));
return false;
}
- if (!parent.getPermissions().hasResidencePermission(player, true)
- && !parent.getPermissions().playerHas(player.getName(), "subzone", true)) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("ParentNoPermission"));
+ if (!parent.getPermissions().hasResidencePermission(player, true) && !parent.getPermissions().playerHas(player.getName(), "subzone", true)) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ParentNoPermission"));
return false;
}
}
PermissionGroup group = Residence.getPermissionManager().getGroup(player);
if (!group.canCreateResidences() && !player.hasPermission("residence.create")) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("NoPermission"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
return false;
}
if (areas.size() >= group.getMaxPhysicalPerResidence()) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaMaxPhysical"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaMaxPhysical"));
return false;
}
if (!group.inLimits(area)) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaSizeLimit"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaSizeLimit"));
return false;
}
if (group.getMinHeight() > area.getLowLoc().getBlockY()) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaLowLimit",
- ChatColor.YELLOW + String.format("%d", group.getMinHeight())));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaLowLimit", ChatColor.YELLOW + String.format("%d", group.getMinHeight())));
return false;
}
if (group.getMaxHeight() < area.getHighLoc().getBlockY()) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaHighLimit",
- ChatColor.YELLOW + String.format("%d", group.getMaxHeight())));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaHighLimit", ChatColor.YELLOW + String.format("%d", group.getMaxHeight())));
return false;
}
if (parent == null && Residence.getConfigManager().enableEconomy()) {
@@ -230,10 +192,8 @@ public class ClaimedResidence {
Residence.getResidenceManager().removeChunkList(getName());
areas.put(name, area);
Residence.getResidenceManager().calculateChunks(getName());
- if (player != null) {
- player.sendMessage(ChatColor.GREEN
- + Residence.getLanguage().getPhrase("AreaCreate", ChatColor.YELLOW + name));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("AreaCreate", ChatColor.YELLOW + name));
return true;
}
@@ -246,40 +206,29 @@ public class ClaimedResidence {
public boolean addSubzone(Player player, String owner, Location loc1, Location loc2, String name, boolean resadmin) {
if (!Residence.validName(name)) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("InvalidNameCharacters"));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidNameCharacters"));
return false;
}
if (!(this.containsLoc(loc1) && this.containsLoc(loc2))) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("SubzoneSelectInside"));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SubzoneSelectInside"));
return false;
}
if (subzones.containsKey(name)) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("SubzoneExists",
- ChatColor.YELLOW + name));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SubzoneExists", ChatColor.YELLOW + name));
return false;
}
if (!resadmin && player != null) {
- if (!this.perms.hasResidencePermission(player, true)) {
- if (!this.perms.playerHas(player.getName(), "subzone",
- this.perms.playerHas(player.getName(), "admin", false))) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("NoPermission"));
+ if (!this.perms.hasResidencePermission(player, true))
+ if (!this.perms.playerHas(player.getName(), "subzone", this.perms.playerHas(player.getName(), "admin", false))) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
return false;
}
- }
PermissionGroup group = Residence.getPermissionManager().getGroup(player);
if (this.getZoneDepth() >= group.getMaxSubzoneDepth()) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("SubzoneMaxDepth"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SubzoneMaxDepth"));
return false;
}
}
@@ -288,11 +237,8 @@ public class ClaimedResidence {
for (Entry resEntry : set) {
ClaimedResidence res = resEntry.getValue();
if (res.checkCollision(newArea)) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("SubzoneCollide",
- ChatColor.YELLOW + resEntry.getKey()));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SubzoneCollide", ChatColor.YELLOW + resEntry.getKey()));
return false;
}
}
@@ -311,22 +257,15 @@ public class ClaimedResidence {
newres.setEnterMessage(group.getDefaultEnterMessage());
newres.setLeaveMessage(group.getDefaultLeaveMessage());
}
- if (Residence.getConfigManager().flagsInherit()) {
+ if (Residence.getConfigManager().flagsInherit())
newres.getPermissions().setParent(perms);
- }
subzones.put(name, newres);
- if (player != null) {
- player.sendMessage(ChatColor.GREEN
- + Residence.getLanguage().getPhrase("SubzoneCreate",
- ChatColor.YELLOW + name));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SubzoneCreate", ChatColor.YELLOW + name));
return true;
} else {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("SubzoneCreateFail",
- ChatColor.YELLOW + name));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SubzoneCreateFail", ChatColor.YELLOW + name));
return false;
}
}
@@ -339,23 +278,21 @@ public class ClaimedResidence {
Set set = areas.keySet();
for (String key : set) {
CuboidArea checkarea = areas.get(key);
- if (checkarea != null) {
+ if (checkarea != null)
if (checkarea.checkCollision(area))
return true;
- }
}
return false;
}
public boolean containsLoc(Location loc) {
Collection keys = areas.values();
- for (CuboidArea key : keys) {
+ for (CuboidArea key : keys)
if (key.containsLoc(loc)) {
if (parent != null)
return parent.containsLoc(loc);
return true;
}
- }
return false;
}
@@ -374,10 +311,9 @@ public class ClaimedResidence {
}
public CuboidArea getAreaByLoc(Location loc) {
- for (CuboidArea thisarea : areas.values()) {
+ for (CuboidArea thisarea : areas.values())
if (thisarea.containsLoc(loc))
return thisarea;
- }
return null;
}
@@ -386,10 +322,9 @@ public class ClaimedResidence {
}
public String getAreaIDbyLoc(Location loc) {
- for (Entry area : areas.entrySet()) {
+ for (Entry area : areas.entrySet())
if (area.getValue().containsLoc(loc))
return area.getKey();
- }
return null;
}
@@ -434,8 +369,7 @@ public class ClaimedResidence {
if (area == null)
return insideLoc;
Location highLoc = area.getHighLoc();
- Location newLoc = new Location(highLoc.getWorld(), highLoc.getBlockX(),
- highLoc.getBlockY(), highLoc.getBlockZ());
+ Location newLoc = new Location(highLoc.getWorld(), highLoc.getBlockX(), highLoc.getBlockY(), highLoc.getBlockZ());
boolean found = false;
int it = 0;
while (!found && it < maxIt) {
@@ -445,14 +379,12 @@ public class ClaimedResidence {
newLoc.setZ(newLoc.getBlockZ() + 1);
lowLoc = new Location(newLoc.getWorld(), newLoc.getBlockX(), 254, newLoc.getBlockZ());
newLoc.setY(255);
- while ((newLoc.getBlock().getTypeId() != 0 || lowLoc.getBlock().getTypeId() == 0)
- && lowLoc.getBlockY() > -126) {
+ while ((newLoc.getBlock().getTypeId() != 0 || lowLoc.getBlock().getTypeId() == 0) && lowLoc.getBlockY() > -126) {
newLoc.setY(newLoc.getY() - 1);
lowLoc.setY(lowLoc.getY() - 1);
}
- if (newLoc.getBlock().getTypeId() == 0 && lowLoc.getBlock().getTypeId() != 0) {
+ if (newLoc.getBlock().getTypeId() == 0 && lowLoc.getBlock().getTypeId() != 0)
found = true;
- }
}
if (found)
return newLoc;
@@ -478,11 +410,9 @@ public class ClaimedResidence {
public ArrayList getPlayersInResidence() {
ArrayList within = new ArrayList();
- for (Player player : Bukkit.getServer().getOnlinePlayers()) {
- if (this.containsLoc(player.getLocation())) {
+ for (Player player : Bukkit.getServer().getOnlinePlayers())
+ if (this.containsLoc(player.getLocation()))
within.add(player);
- }
- }
return within;
}
@@ -512,6 +442,8 @@ public class ClaimedResidence {
}
if (!found)
return null;
+ if (res == null)
+ return null;
ClaimedResidence subrez = res.getSubzoneByLoc(loc);
if (subrez == null)
return res;
@@ -521,11 +453,9 @@ public class ClaimedResidence {
public String[] getSubzoneList() {
ArrayList zones = new ArrayList();
Set set = subzones.keySet();
- for (String key : set) {
- if (key != null) {
+ for (String key : set)
+ if (key != null)
zones.add(key);
- }
- }
return zones.toArray(new String[zones.size()]);
}
@@ -542,6 +472,8 @@ public class ClaimedResidence {
}
if (key == null)
return null;
+ if (res == null)
+ return null;
String subname = res.getSubzoneNameByLoc(loc);
if (subname != null)
return key + "." + subname;
@@ -569,9 +501,8 @@ public class ClaimedResidence {
public long getTotalSize() {
Collection set = areas.values();
long size = 0;
- for (CuboidArea entry : set) {
+ for (CuboidArea entry : set)
size = size + entry.getSize();
- }
return size;
}
@@ -605,34 +536,25 @@ public class ClaimedResidence {
CuboidArea a = entry.getValue();
Location h = a.getHighLoc();
Location l = a.getLowLoc();
- temp.add(ChatColor.GREEN + "{" + ChatColor.YELLOW + "ID:" + ChatColor.RED
- + entry.getKey() + " " + ChatColor.YELLOW + "P1:" + ChatColor.RED + "("
- + h.getBlockX() + "," + h.getBlockY() + "," + h.getBlockZ() + ") "
- + ChatColor.YELLOW + "P2:" + ChatColor.RED + "(" + l.getBlockX() + ","
- + l.getBlockY() + "," + l.getBlockZ() + ") " + ChatColor.YELLOW + "(Size:"
+ temp.add(ChatColor.GREEN + "{" + ChatColor.YELLOW + "ID:" + ChatColor.RED + entry.getKey() + " " + ChatColor.YELLOW + "P1:" + ChatColor.RED + "(" + h.getBlockX() + "," + h.getBlockY()
+ + "," + h.getBlockZ() + ") " + ChatColor.YELLOW + "P2:" + ChatColor.RED + "(" + l.getBlockX() + "," + l.getBlockY() + "," + l.getBlockZ() + ") " + ChatColor.YELLOW + "(Size:"
+ ChatColor.RED + a.getSize() + ChatColor.YELLOW + ")" + ChatColor.GREEN + "} ");
}
- InformationPager.printInfo(player, Residence.getLanguage().getPhrase("PhysicalAreas"),
- temp, page);
+ InformationPager.printInfo(player, Residence.getLanguage().getPhrase("PhysicalAreas"), temp, page);
}
public void printAreaList(Player player, int page) {
ArrayList temp = new ArrayList();
- for (String area : areas.keySet()) {
+ for (String area : areas.keySet())
temp.add(area);
- }
- InformationPager.printInfo(player, Residence.getLanguage().getPhrase("PhysicalAreas"),
- temp, page);
+ InformationPager.printInfo(player, Residence.getLanguage().getPhrase("PhysicalAreas"), temp, page);
}
public void printSubzoneList(Player player, int page) {
ArrayList temp = new ArrayList();
- for (Entry sz : subzones.entrySet()) {
- temp.add(ChatColor.GREEN + sz.getKey() + ChatColor.YELLOW + " - "
- + Residence.getLanguage().getPhrase("Owner") + ": " + sz.getValue().getOwner());
- }
- InformationPager.printInfo(player, Residence.getLanguage().getPhrase("Subzones"), temp,
- page);
+ for (Entry sz : subzones.entrySet())
+ temp.add(ChatColor.GREEN + sz.getKey() + ChatColor.YELLOW + " - " + Residence.getLanguage().getPhrase("Owner") + ": " + sz.getValue().getOwner());
+ InformationPager.printInfo(player, Residence.getLanguage().getPhrase("Subzones"), temp, page);
}
public void remove() {
@@ -647,20 +569,17 @@ public class ClaimedResidence {
if (this.getPermissions().hasResidencePermission(player, true) || resadmin) {
if (!areas.containsKey(id)) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaNonExist"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaNonExist"));
return;
}
if (areas.size() == 1 && !Residence.getConfigManager().allowEmptyResidences()) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaRemoveLast"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaRemoveLast"));
return;
}
removeArea(id);
player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("AreaRemove"));
- } else {
+ } else
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
- }
}
public void removeArea(String id) {
@@ -676,11 +595,8 @@ public class ClaimedResidence {
return false;
}
subzones.remove(name);
- if (player != null) {
- player.sendMessage(ChatColor.GREEN
- + Residence.getLanguage().getPhrase("SubzoneRemove",
- ChatColor.YELLOW + name + ChatColor.GREEN));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SubzoneRemove", ChatColor.YELLOW + name + ChatColor.GREEN));
return true;
}
@@ -690,38 +606,28 @@ public class ClaimedResidence {
public boolean renameArea(Player player, String oldName, String newName, boolean resadmin) {
if (!Residence.validName(newName)) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("InvalidNameCharacters"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidNameCharacters"));
return false;
}
if (player == null || perms.hasResidencePermission(player, true) || resadmin) {
if (areas.containsKey(newName)) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaExists"));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaExists"));
return false;
}
CuboidArea area = areas.get(oldName);
if (area == null) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaInvalidName"));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaInvalidName"));
return false;
}
areas.put(newName, area);
areas.remove(oldName);
- if (player != null) {
- player.sendMessage(ChatColor.GREEN
- + Residence.getLanguage().getPhrase("AreaRename", oldName + "." + newName));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("AreaRename", oldName + "." + newName));
return true;
} else {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("NoPermission"));
- }
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
return false;
}
}
@@ -732,40 +638,28 @@ public class ClaimedResidence {
public boolean renameSubzone(Player player, String oldName, String newName, boolean resadmin) {
if (!Residence.validName(newName)) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("InvalidNameCharacters"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidNameCharacters"));
return false;
}
ClaimedResidence res = subzones.get(oldName);
if (res == null) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("InvalidSubzone"));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidSubzone"));
return false;
}
- if (player != null && !res.getPermissions().hasResidencePermission(player, true)
- && !resadmin) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("NoPermission"));
- }
+ if (player != null && !res.getPermissions().hasResidencePermission(player, true) && !resadmin) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
return false;
}
if (subzones.containsKey(newName)) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("SubzoneExists",
- ChatColor.YELLOW + newName));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SubzoneExists", ChatColor.YELLOW + newName));
return false;
}
subzones.put(newName, res);
subzones.remove(oldName);
- if (player != null) {
- player.sendMessage(ChatColor.GREEN
- + Residence.getLanguage().getPhrase("SubzoneRename", oldName + "." + newName));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SubzoneRename", oldName + "." + newName));
return true;
}
@@ -779,45 +673,33 @@ public class ClaimedResidence {
public boolean replaceArea(Player player, CuboidArea newarea, String name, boolean resadmin) {
if (!areas.containsKey(name)) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaNonExist"));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaNonExist"));
return false;
}
CuboidArea oldarea = areas.get(name);
if (!newarea.getWorld().getName().equalsIgnoreCase(perms.getWorld())) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaDiffWorld"));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaDiffWorld"));
return false;
}
if (parent == null) {
- String collideResidence = Residence.getResidenceManager().checkAreaCollision(newarea,
- this);
+ String collideResidence = Residence.getResidenceManager().checkAreaCollision(newarea, this);
if (collideResidence != null) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaCollision",
- ChatColor.YELLOW + collideResidence));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaCollision", ChatColor.YELLOW + collideResidence));
return false;
}
} else {
String[] szs = parent.listSubzones();
for (String sz : szs) {
ClaimedResidence res = parent.getSubzone(sz);
- if (res != null && res != this) {
+ if (res != null && res != this)
if (res.checkCollision(newarea)) {
- if (player != null) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaSubzoneCollision",
- ChatColor.YELLOW + sz));
- }
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaSubzoneCollision", ChatColor.YELLOW + sz));
return false;
}
- }
}
}
// Remove subzones that are not in the area anymore
@@ -826,74 +708,56 @@ public class ClaimedResidence {
ClaimedResidence res = getSubzone(sz);
if (res != null && res != this) {
String[] areas = res.getAreaList();
- for (String area : areas) {
+ for (String area : areas)
if (!newarea.isAreaWithinArea(res.getArea(area))) {
boolean good = false;
- for (CuboidArea arae : getAreaArray()) {
- if (arae != oldarea && arae.isAreaWithinArea(res.getArea(area))) {
+ for (CuboidArea arae : getAreaArray())
+ if (arae != oldarea && arae.isAreaWithinArea(res.getArea(area)))
good = true;
- }
- }
- if (!good) {
+ if (!good)
res.removeArea(area);
- }
}
- }
- if (res.getAreaArray().length == 0) {
+ if (res.getAreaArray().length == 0)
removeSubzone(sz);
- }
}
}
if (!resadmin && player != null) {
if (!this.perms.hasResidencePermission(player, true)) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("NoPermission"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
return false;
}
if (parent != null) {
- if (!parent.containsLoc(newarea.getHighLoc())
- || !parent.containsLoc(newarea.getLowLoc())) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaNotWithinParent"));
+ if (!parent.containsLoc(newarea.getHighLoc()) || !parent.containsLoc(newarea.getLowLoc())) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaNotWithinParent"));
return false;
}
- if (!parent.getPermissions().hasResidencePermission(player, true)
- && !parent.getPermissions().playerHas(player.getName(), "subzone", true)) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("ParentNoPermission"));
+ if (!parent.getPermissions().hasResidencePermission(player, true) && !parent.getPermissions().playerHas(player.getName(), "subzone", true)) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ParentNoPermission"));
return false;
}
}
PermissionGroup group = Residence.getPermissionManager().getGroup(player);
if (!group.canCreateResidences() && !player.hasPermission("residence.create")) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("NoPermission"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
return false;
}
if (!group.inLimits(newarea)) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaSizeLimit"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaSizeLimit"));
return false;
}
if (group.getMinHeight() > newarea.getLowLoc().getBlockY()) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaLowLimit",
- ChatColor.YELLOW + String.format("%d", group.getMinHeight())));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaLowLimit", ChatColor.YELLOW + String.format("%d", group.getMinHeight())));
return false;
}
if (group.getMaxHeight() < newarea.getHighLoc().getBlockY()) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("AreaHighLimit",
- ChatColor.YELLOW + String.format("%d", group.getMaxHeight())));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaHighLimit", ChatColor.YELLOW + String.format("%d", group.getMaxHeight())));
return false;
}
if (parent == null && Residence.getConfigManager().enableEconomy()) {
- int chargeamount = (int) Math.ceil((newarea.getSize() - oldarea.getSize())
- * group.getCostPerBlock());
- if (chargeamount > 0) {
+ int chargeamount = (int) Math.ceil((newarea.getSize() - oldarea.getSize()) * group.getCostPerBlock());
+ if (chargeamount > 0)
if (!TransactionManager.chargeEconomyMoney(player, chargeamount))
return false;
- }
}
}
@@ -913,14 +777,12 @@ public class ClaimedResidence {
root.put("StoredMoney", bank.getStoredMoney());
root.put("BlackList", blacklist.save());
root.put("IgnoreList", ignorelist.save());
- for (Entry entry : areas.entrySet()) {
+ for (Entry entry : areas.entrySet())
areamap.put(entry.getKey(), entry.getValue().save());
- }
root.put("Areas", areamap);
Map subzonemap = new HashMap();
- for (Entry sz : subzones.entrySet()) {
+ for (Entry sz : subzones.entrySet())
subzonemap.put(sz.getKey(), sz.getValue().save());
- }
root.put("Subzones", subzonemap);
root.put("Permissions", perms.save());
if (tpLoc != null) {
@@ -940,27 +802,22 @@ public class ClaimedResidence {
// player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("InvalidCharacters"));
// return;
// }
- if (message != null) {
- if (message.equals("")) {
+ if (message != null)
+ if (message.equals(""))
message = null;
- }
- }
- PermissionGroup group = Residence.getPermissionManager().getGroup(perms.getOwner(),
- perms.getWorld());
+ PermissionGroup group = Residence.getPermissionManager().getGroup(perms.getOwner(), perms.getWorld());
if (!group.canSetEnterLeaveMessages() && !resadmin) {
- player.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("OwnerNoPermission"));
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("OwnerNoPermission"));
return;
}
if (!perms.hasResidencePermission(player, false) && !resadmin) {
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
return;
}
- if (enter) {
+ if (enter)
this.setEnterMessage(message);
- } else {
+ else
this.setLeaveMessage(message);
- }
player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("MessageChange"));
}
@@ -982,26 +839,22 @@ public class ClaimedResidence {
return;
}
tpLoc = player.getLocation();
- player.sendMessage(ChatColor.GREEN
- + Residence.getLanguage().getPhrase("SetTeleportLocation"));
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SetTeleportLocation"));
}
public void tpToResidence(Player reqPlayer, Player targetPlayer, boolean resadmin) {
if (!resadmin) {
PermissionGroup group = Residence.getPermissionManager().getGroup(reqPlayer);
if (!group.hasTpAccess()) {
- reqPlayer.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("TeleportDeny"));
+ reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("TeleportDeny"));
return;
}
if (!reqPlayer.equals(targetPlayer)) {
- reqPlayer.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("NoPermission"));
+ reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
return;
}
if (!this.perms.playerHas(reqPlayer.getName(), "tp", true)) {
- reqPlayer.sendMessage(ChatColor.RED
- + Residence.getLanguage().getPhrase("TeleportNoFlag"));
+ reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("TeleportNoFlag"));
return;
}
}
@@ -1010,8 +863,7 @@ public class ClaimedResidence {
Residence.getServ().getPluginManager().callEvent(tpevent);
if (!tpevent.isCancelled()) {
targetPlayer.teleport(tpLoc);
- targetPlayer.sendMessage(ChatColor.GREEN
- + Residence.getLanguage().getPhrase("TeleportSuccess"));
+ targetPlayer.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("TeleportSuccess"));
}
} else {
CuboidArea area = areas.values().iterator().next();
@@ -1024,8 +876,7 @@ public class ClaimedResidence {
Residence.getServ().getPluginManager().callEvent(tpevent);
if (!tpevent.isCancelled()) {
targetPlayer.teleport(targloc);
- targetPlayer.sendMessage(ChatColor.YELLOW
- + Residence.getLanguage().getPhrase("TeleportNear"));
+ targetPlayer.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("TeleportNear"));
}
}
}
diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java b/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java
index 2d6ed32..386c07b 100644
--- a/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java
+++ b/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java
@@ -22,7 +22,7 @@ import org.bukkit.entity.Player;
import com.bekvon.bukkit.residence.Residence;
/**
- *
+ *
* @author Administrator
*/
public class FlagPermissions {
@@ -30,83 +30,65 @@ public class FlagPermissions {
protected static ArrayList validFlags = new ArrayList();
protected static ArrayList validPlayerFlags = new ArrayList();
protected static ArrayList validAreaFlags = new ArrayList();
- final static Map matUseFlagList = new EnumMap(
- Material.class);
+ final static Map matUseFlagList = new EnumMap(Material.class);
+ protected static HashMap> validFlagGroups = new HashMap>();
protected Map> playerFlags;
protected Map> groupFlags;
protected Map cuboidFlags;
+
protected FlagPermissions parent;
- public static void addMaterialToUseFlag(Material mat, String flag) {
- matUseFlagList.put(mat, flag);
- }
-
- public static void removeMaterialFromUseFlag(Material mat) {
- matUseFlagList.remove(mat);
- }
-
- public static EnumMap getMaterialUseFlagList() {
- return (EnumMap) matUseFlagList;
+ public FlagPermissions() {
+ cuboidFlags = Collections.synchronizedMap(new HashMap());
+ playerFlags = Collections.synchronizedMap(new HashMap>());
+ groupFlags = Collections.synchronizedMap(new HashMap>());
}
public static void addFlag(String flag) {
flag = flag.toLowerCase();
- if (!validFlags.contains(flag)) {
+ if (!validFlags.contains(flag))
validFlags.add(flag);
- }
- if (validFlagGroups.containsKey(flag)) {
+ if (validFlagGroups.containsKey(flag))
validFlagGroups.remove(flag);
- }
}
- public static void addPlayerOrGroupOnlyFlag(String flag) {
- flag = flag.toLowerCase();
- if (!validPlayerFlags.contains(flag)) {
- validPlayerFlags.add(flag);
- }
- if (validFlagGroups.containsKey(flag)) {
- validFlagGroups.remove(flag);
- }
- }
-
- public static void addResidenceOnlyFlag(String flag) {
- flag = flag.toLowerCase();
- if (!validAreaFlags.contains(flag)) {
- validAreaFlags.add(flag);
- }
- if (validFlagGroups.containsKey(flag)) {
- validFlagGroups.remove(flag);
- }
- }
-
- protected static HashMap> validFlagGroups = new HashMap>();
-
public static void addFlagToFlagGroup(String group, String flag) {
- if (!FlagPermissions.validFlags.contains(group)
- && !FlagPermissions.validAreaFlags.contains(group)
- && !FlagPermissions.validPlayerFlags.contains(group)) {
- if (!validFlagGroups.containsKey(group)) {
+ if (!FlagPermissions.validFlags.contains(group) && !FlagPermissions.validAreaFlags.contains(group) && !FlagPermissions.validPlayerFlags.contains(group)) {
+ if (!validFlagGroups.containsKey(group))
validFlagGroups.put(group, new ArrayList());
- }
ArrayList flags = validFlagGroups.get(group);
flags.add(flag);
}
}
- public static void removeFlagFromFlagGroup(String group, String flag) {
- if (validFlagGroups.containsKey(group)) {
- ArrayList flags = validFlagGroups.get(group);
- flags.remove(flag);
- if (flags.isEmpty()) {
- validFlagGroups.remove(group);
- }
- }
+ public static void addMaterialToUseFlag(Material mat, String flag) {
+ matUseFlagList.put(mat, flag);
+ }
+
+ public static void addPlayerOrGroupOnlyFlag(String flag) {
+ flag = flag.toLowerCase();
+ if (!validPlayerFlags.contains(flag))
+ validPlayerFlags.add(flag);
+ if (validFlagGroups.containsKey(flag))
+ validFlagGroups.remove(flag);
+ }
+
+ public static void addResidenceOnlyFlag(String flag) {
+ flag = flag.toLowerCase();
+ if (!validAreaFlags.contains(flag))
+ validAreaFlags.add(flag);
+ if (validFlagGroups.containsKey(flag))
+ validFlagGroups.remove(flag);
}
public static boolean flagGroupExists(String group) {
return validFlagGroups.containsKey(group);
}
+ public static EnumMap getMaterialUseFlagList() {
+ return (EnumMap) matUseFlagList;
+ }
+
public static void initValidFlags() {
validAreaFlags.clear();
validPlayerFlags.clear();
@@ -187,20 +169,22 @@ public class FlagPermissions {
addMaterialToUseFlag(Material.DIODE_BLOCK_ON, "diode");
addMaterialToUseFlag(Material.WORKBENCH, "table");
addMaterialToUseFlag(Material.WOODEN_DOOR, "door");
-
- /* 1.8 Doors */
- addMaterialToUseFlag(Material.SPRUCE_DOOR, "door");
- addMaterialToUseFlag(Material.BIRCH_DOOR, "door");
- addMaterialToUseFlag(Material.JUNGLE_DOOR, "door");
- addMaterialToUseFlag(Material.ACACIA_DOOR, "door");
- addMaterialToUseFlag(Material.DARK_OAK_DOOR, "door");
- /* 1.8 Fence Gates */
- addMaterialToUseFlag(Material.SPRUCE_FENCE_GATE, "door");
- addMaterialToUseFlag(Material.BIRCH_FENCE_GATE, "door");
- addMaterialToUseFlag(Material.JUNGLE_FENCE_GATE, "door");
- addMaterialToUseFlag(Material.ACACIA_FENCE_GATE, "door");
- addMaterialToUseFlag(Material.DARK_OAK_FENCE_GATE, "door");
+ if (Residence.is1_8()) {
+ /* 1.8 Doors */
+ addMaterialToUseFlag(Material.SPRUCE_DOOR, "door");
+ addMaterialToUseFlag(Material.BIRCH_DOOR, "door");
+ addMaterialToUseFlag(Material.JUNGLE_DOOR, "door");
+ addMaterialToUseFlag(Material.ACACIA_DOOR, "door");
+ addMaterialToUseFlag(Material.DARK_OAK_DOOR, "door");
+
+ /* 1.8 Fence Gates */
+ addMaterialToUseFlag(Material.SPRUCE_FENCE_GATE, "door");
+ addMaterialToUseFlag(Material.BIRCH_FENCE_GATE, "door");
+ addMaterialToUseFlag(Material.JUNGLE_FENCE_GATE, "door");
+ addMaterialToUseFlag(Material.ACACIA_FENCE_GATE, "door");
+ addMaterialToUseFlag(Material.DARK_OAK_FENCE_GATE, "door");
+ }
addMaterialToUseFlag(Material.FENCE_GATE, "door");
addMaterialToUseFlag(Material.NETHER_FENCE, "door");
@@ -229,259 +213,151 @@ public class FlagPermissions {
addMaterialToUseFlag(Material.CAKE_BLOCK, "cake");
}
- public static FlagPermissions parseFromConfigNode(String name,
- ConfigurationSection node) {
+ public static FlagPermissions load(Map root) throws Exception {
+ FlagPermissions newperms = new FlagPermissions();
+ return FlagPermissions.load(root, newperms);
+ }
+
+ public static FlagPermissions parseFromConfigNode(String name, ConfigurationSection node) {
FlagPermissions list = new FlagPermissions();
Set keys = node.getConfigurationSection(name).getKeys(false);
- if (keys != null) {
+ if (keys != null)
for (String key : keys) {
boolean state = node.getBoolean(name + "." + key, false);
key = key.toLowerCase();
- if (state) {
+ if (state)
list.setFlag(key, FlagState.TRUE);
- } else {
+ else
list.setFlag(key, FlagState.FALSE);
- }
}
- }
return list;
}
- public FlagPermissions() {
- cuboidFlags = Collections
- .synchronizedMap(new HashMap());
- playerFlags = Collections
- .synchronizedMap(new HashMap>());
- groupFlags = Collections
- .synchronizedMap(new HashMap>());
+ public static void removeFlagFromFlagGroup(String group, String flag) {
+ if (validFlagGroups.containsKey(group)) {
+ ArrayList flags = validFlagGroups.get(group);
+ flags.remove(flag);
+ if (flags.isEmpty())
+ validFlagGroups.remove(group);
+ }
}
- public boolean setPlayerFlag(String player, String flag, FlagState state) {
- player = player.toLowerCase();
- if (!playerFlags.containsKey(player)) {
- playerFlags
- .put(player, Collections
- .synchronizedMap(new HashMap()));
- }
- Map map = playerFlags.get(player);
- if (state == FlagState.FALSE) {
- map.put(flag, false);
- } else if (state == FlagState.TRUE) {
- map.put(flag, true);
- } else if (state == FlagState.NEITHER) {
- if (map.containsKey(flag)) {
- map.remove(flag);
- }
- }
- if (map.isEmpty()) {
- playerFlags.remove(player);
- }
- return true;
- }
-
- public void removeAllPlayerFlags(String player) {
- playerFlags.remove(player);
- }
-
- public void removeAllGroupFlags(String group) {
- groupFlags.remove(group);
- }
-
- public boolean setGroupFlag(String group, String flag, FlagState state) {
- group = group.toLowerCase();
- if (!groupFlags.containsKey(group)) {
- groupFlags
- .put(group, Collections
- .synchronizedMap(new HashMap()));
- }
- Map map = groupFlags.get(group);
- if (state == FlagState.FALSE) {
- map.put(flag, false);
- } else if (state == FlagState.TRUE) {
- map.put(flag, true);
- } else if (state == FlagState.NEITHER) {
- if (map.containsKey(flag)) {
- map.remove(flag);
- }
- }
- if (map.isEmpty()) {
- groupFlags.remove(group);
- }
- return true;
- }
-
- public boolean setFlag(String flag, FlagState state) {
- if (state == FlagState.FALSE) {
- cuboidFlags.put(flag, false);
- } else if (state == FlagState.TRUE) {
- cuboidFlags.put(flag, true);
- } else if (state == FlagState.NEITHER) {
- if (cuboidFlags.containsKey(flag)) {
- cuboidFlags.remove(flag);
- }
- }
- return true;
- }
-
- public static enum FlagState {
-
- TRUE, FALSE, NEITHER, INVALID
+ public static void removeMaterialFromUseFlag(Material mat) {
+ matUseFlagList.remove(mat);
}
public static FlagState stringToFlagState(String flagstate) {
- if (flagstate.equalsIgnoreCase("true")
- || flagstate.equalsIgnoreCase("t")) {
+ if (flagstate.equalsIgnoreCase("true") || flagstate.equalsIgnoreCase("t"))
return FlagState.TRUE;
- } else if (flagstate.equalsIgnoreCase("false")
- || flagstate.equalsIgnoreCase("f")) {
+ else if (flagstate.equalsIgnoreCase("false") || flagstate.equalsIgnoreCase("f"))
return FlagState.FALSE;
- } else if (flagstate.equalsIgnoreCase("remove")
- || flagstate.equalsIgnoreCase("r")) {
+ else if (flagstate.equalsIgnoreCase("remove") || flagstate.equalsIgnoreCase("r"))
return FlagState.NEITHER;
- } else {
+ else
return FlagState.INVALID;
+ }
+
+ @SuppressWarnings("unchecked")
+ protected static FlagPermissions load(Map root, FlagPermissions newperms) throws Exception {
+ newperms.playerFlags = (Map>) root.get("PlayerFlags");
+ newperms.groupFlags = (Map>) root.get("GroupFlags");
+ newperms.cuboidFlags = (Map) root.get("AreaFlags");
+ return newperms;
+ }
+
+ public boolean checkValidFlag(String flag, boolean globalflag) {
+ if (validFlags.contains(flag))
+ return true;
+ if (globalflag) {
+ if (validAreaFlags.contains(flag))
+ return true;
+ } else if (validPlayerFlags.contains(flag))
+ return true;
+ return false;
+ }
+
+ public void clearFlags() {
+ groupFlags.clear();
+ playerFlags.clear();
+ cuboidFlags.clear();
+ }
+
+ public void clearPlayersFlags(String user) {
+ if (playerFlags.containsKey(user))
+ playerFlags.remove(user);
+ }
+
+ public void copyUserPermissions(String fromUser, String toUser) {
+ fromUser = fromUser.toLowerCase();
+ toUser = toUser.toLowerCase();
+ Map get = playerFlags.get(fromUser);
+ if (get != null) {
+ Map targ = playerFlags.get(toUser);
+ if (targ == null) {
+ targ = new HashMap();
+ playerFlags.put(toUser, targ);
+ }
+ for (Entry entry : get.entrySet())
+ targ.put(entry.getKey(), entry.getValue());
}
}
- public boolean playerHas(String player, String world, String flag,
- boolean def) {
- String group = Residence.getPermissionManager().getGroupNameByPlayer(
- player, world);
- return this.playerCheck(player, flag,
- this.groupCheck(group, flag, this.has(flag, def)));
+ public FlagPermissions getParent() {
+ return parent;
}
public boolean groupHas(String group, String flag, boolean def) {
return this.groupCheck(group, flag, this.has(flag, def));
}
- private boolean playerCheck(String player, String flag, boolean def) {
- player = player.toLowerCase();
- if (playerFlags.containsKey(player)) {
- Map pmap = playerFlags.get(player);
- if (pmap.containsKey(flag)) {
- return pmap.get(flag);
- }
- }
- if (parent != null) {
- return parent.playerCheck(player, flag, def);
- }
- return def;
- }
-
- private boolean groupCheck(String group, String flag, boolean def) {
- if (groupFlags.containsKey(group)) {
- Map gmap = groupFlags.get(group);
- if (gmap.containsKey(flag)) {
- return gmap.get(flag);
- }
- }
- if (parent != null) {
- return parent.groupCheck(group, flag, def);
- }
- return def;
- }
-
public boolean has(String flag, boolean def) {
- if (cuboidFlags.containsKey(flag)) {
+ if (cuboidFlags.containsKey(flag))
return cuboidFlags.get(flag);
- }
- if (parent != null) {
+ if (parent != null)
return parent.has(flag, def);
- }
return def;
}
- public boolean isPlayerSet(String player, String flag) {
- player = player.toLowerCase();
- Map flags = playerFlags.get(player);
- if (flags == null) {
- return false;
- }
- return flags.containsKey(flag);
- }
-
- public boolean inheritanceIsPlayerSet(String player, String flag) {
- player = player.toLowerCase();
- Map flags = playerFlags.get(player);
- if (flags == null) {
- return parent == null ? false : parent.inheritanceIsPlayerSet(
- player, flag);
- }
- return flags.containsKey(flag) ? true : parent == null ? false : parent
- .inheritanceIsPlayerSet(player, flag);
- }
-
- public boolean isGroupSet(String group, String flag) {
- group = group.toLowerCase();
- Map flags = groupFlags.get(group);
- if (flags == null) {
- return false;
- }
- return flags.containsKey(flag);
- }
-
public boolean inheritanceIsGroupSet(String group, String flag) {
group = group.toLowerCase();
Map flags = groupFlags.get(group);
- if (flags == null) {
- return parent == null ? false : parent.inheritanceIsGroupSet(group,
- flag);
- }
- return flags.containsKey(flag) ? true : parent == null ? false : parent
- .inheritanceIsGroupSet(group, flag);
+ if (flags == null)
+ return parent == null ? false : parent.inheritanceIsGroupSet(group, flag);
+ return flags.containsKey(flag) ? true : parent == null ? false : parent.inheritanceIsGroupSet(group, flag);
+ }
+
+ public boolean inheritanceIsPlayerSet(String player, String flag) {
+ player = player.toLowerCase();
+ Map flags = playerFlags.get(player);
+ if (flags == null)
+ return parent == null ? false : parent.inheritanceIsPlayerSet(player, flag);
+ return flags.containsKey(flag) ? true : parent == null ? false : parent.inheritanceIsPlayerSet(player, flag);
+ }
+
+ public boolean inheritanceIsSet(String flag) {
+ return cuboidFlags.containsKey(flag) ? true : parent == null ? false : parent.inheritanceIsSet(flag);
+ }
+
+ public boolean isGroupSet(String group, String flag) {
+ group = group.toLowerCase();
+ Map flags = groupFlags.get(group);
+ if (flags == null)
+ return false;
+ return flags.containsKey(flag);
+ }
+
+ public boolean isPlayerSet(String player, String flag) {
+ player = player.toLowerCase();
+ Map flags = playerFlags.get(player);
+ if (flags == null)
+ return false;
+ return flags.containsKey(flag);
}
public boolean isSet(String flag) {
return cuboidFlags.containsKey(flag);
}
- public boolean inheritanceIsSet(String flag) {
- return cuboidFlags.containsKey(flag) ? true : parent == null ? false
- : parent.inheritanceIsSet(flag);
- }
-
- public boolean checkValidFlag(String flag, boolean globalflag) {
- if (validFlags.contains(flag)) {
- return true;
- }
- if (globalflag) {
- if (validAreaFlags.contains(flag)) {
- return true;
- }
- } else {
- if (validPlayerFlags.contains(flag)) {
- return true;
- }
- }
- return false;
- }
-
- public Map save() {
- Map root = new LinkedHashMap();
- root.put("PlayerFlags", playerFlags);
- root.put("GroupFlags", groupFlags);
- root.put("AreaFlags", cuboidFlags);
- return root;
- }
-
- public static FlagPermissions load(Map root)
- throws Exception {
- FlagPermissions newperms = new FlagPermissions();
- return FlagPermissions.load(root, newperms);
- }
-
- @SuppressWarnings("unchecked")
- protected static FlagPermissions load(Map root,
- FlagPermissions newperms) throws Exception {
- newperms.playerFlags = (Map>) root
- .get("PlayerFlags");
- newperms.groupFlags = (Map>) root
- .get("GroupFlags");
- newperms.cuboidFlags = (Map) root.get("AreaFlags");
- return newperms;
- }
-
public String listFlags() {
StringBuilder sbuild = new StringBuilder();
Set> set = cuboidFlags.entrySet();
@@ -491,73 +367,17 @@ public class FlagPermissions {
Entry next = it.next();
if (next.getValue()) {
sbuild.append("+").append(next.getKey());
- if (it.hasNext()) {
+ if (it.hasNext())
sbuild.append(" ");
- }
} else {
sbuild.append("-").append(next.getKey());
- if (it.hasNext()) {
+ if (it.hasNext())
sbuild.append(" ");
- }
}
}
}
- if (sbuild.length() == 0) {
+ if (sbuild.length() == 0)
sbuild.append("none");
- }
- return sbuild.toString();
- }
-
- public String listPlayerFlags(String player) {
- player = player.toLowerCase();
- if (playerFlags.containsKey(player)) {
- StringBuilder sbuild = new StringBuilder();
- Map get = playerFlags.get(player);
- Set> set = get.entrySet();
- synchronized (get) {
- Iterator> it = set.iterator();
- while (it.hasNext()) {
- Entry next = it.next();
- if (next.getValue()) {
- sbuild.append("+").append(next.getKey());
- if (it.hasNext()) {
- sbuild.append(" ");
- }
- } else {
- sbuild.append("-").append(next.getKey());
- if (it.hasNext()) {
- sbuild.append(" ");
- }
- }
- }
- }
- if (sbuild.length() == 0) {
- playerFlags.remove(player);
- sbuild.append("none");
- }
- return sbuild.toString();
- } else {
- return "none";
- }
- }
-
- public String listOtherPlayersFlags(String player) {
- player = player.toLowerCase();
- StringBuilder sbuild = new StringBuilder();
- Set set = playerFlags.keySet();
- synchronized (playerFlags) {
- Iterator it = set.iterator();
- while (it.hasNext()) {
- String next = it.next();
- if (!next.equals(player)) {
- String perms = listPlayerFlags(next);
- if (!perms.equals("none")) {
- sbuild.append(next).append("[" + ChatColor.DARK_AQUA)
- .append(perms).append(ChatColor.RED + "] ");
- }
- }
- }
- }
return sbuild.toString();
}
@@ -569,10 +389,8 @@ public class FlagPermissions {
while (it.hasNext()) {
String next = it.next();
String perms = listGroupFlags(next);
- if (!perms.equals("none")) {
- sbuild.append(next).append("[" + ChatColor.DARK_AQUA)
- .append(perms).append(ChatColor.RED + "] ");
- }
+ if (!perms.equals("none"))
+ sbuild.append(next).append("[" + ChatColor.DARK_AQUA).append(perms).append(ChatColor.RED + "] ");
}
}
return sbuild.toString();
@@ -590,14 +408,12 @@ public class FlagPermissions {
Entry next = it.next();
if (next.getValue()) {
sbuild.append("+").append(next.getKey());
- if (it.hasNext()) {
+ if (it.hasNext())
sbuild.append(" ");
- }
} else {
sbuild.append("-").append(next.getKey());
- if (it.hasNext()) {
+ if (it.hasNext())
sbuild.append(" ");
- }
}
}
}
@@ -606,59 +422,163 @@ public class FlagPermissions {
sbuild.append("none");
}
return sbuild.toString();
- } else {
+ } else
return "none";
- }
}
- public void clearFlags() {
- groupFlags.clear();
- playerFlags.clear();
- cuboidFlags.clear();
+ public String listOtherPlayersFlags(String player) {
+ player = player.toLowerCase();
+ StringBuilder sbuild = new StringBuilder();
+ Set set = playerFlags.keySet();
+ synchronized (playerFlags) {
+ Iterator it = set.iterator();
+ while (it.hasNext()) {
+ String next = it.next();
+ if (!next.equals(player)) {
+ String perms = listPlayerFlags(next);
+ if (!perms.equals("none"))
+ sbuild.append(next).append("[" + ChatColor.DARK_AQUA).append(perms).append(ChatColor.RED + "] ");
+ }
+ }
+ }
+ return sbuild.toString();
+ }
+
+ public String listPlayerFlags(String player) {
+ player = player.toLowerCase();
+ if (playerFlags.containsKey(player)) {
+ StringBuilder sbuild = new StringBuilder();
+ Map get = playerFlags.get(player);
+ Set> set = get.entrySet();
+ synchronized (get) {
+ Iterator> it = set.iterator();
+ while (it.hasNext()) {
+ Entry next = it.next();
+ if (next.getValue()) {
+ sbuild.append("+").append(next.getKey());
+ if (it.hasNext())
+ sbuild.append(" ");
+ } else {
+ sbuild.append("-").append(next.getKey());
+ if (it.hasNext())
+ sbuild.append(" ");
+ }
+ }
+ }
+ if (sbuild.length() == 0) {
+ playerFlags.remove(player);
+ sbuild.append("none");
+ }
+ return sbuild.toString();
+ } else
+ return "none";
+ }
+
+ public boolean playerHas(String player, String world, String flag, boolean def) {
+ String group = Residence.getPermissionManager().getGroupNameByPlayer(player, world);
+ return this.playerCheck(player, flag, this.groupCheck(group, flag, this.has(flag, def)));
}
public void printFlags(Player player) {
- player.sendMessage(ChatColor.YELLOW
- + Residence.getLanguage().getPhrase("Flags") + ":"
- + ChatColor.BLUE + " " + listFlags());
- player.sendMessage(ChatColor.YELLOW
- + Residence.getLanguage().getPhrase("Your.Flags") + ":"
- + ChatColor.GREEN + " " + listPlayerFlags(player.getName()));
- player.sendMessage(ChatColor.YELLOW
- + Residence.getLanguage().getPhrase("Group.Flags") + ":"
- + ChatColor.RED + " " + listGroupFlags());
- player.sendMessage(ChatColor.YELLOW
- + Residence.getLanguage().getPhrase("Others.Flags") + ":"
- + ChatColor.RED + " " + listOtherPlayersFlags(player.getName()));
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Flags") + ":" + ChatColor.BLUE + " " + listFlags());
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Your.Flags") + ":" + ChatColor.GREEN + " " + listPlayerFlags(player.getName()));
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Group.Flags") + ":" + ChatColor.RED + " " + listGroupFlags());
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Others.Flags") + ":" + ChatColor.RED + " " + listOtherPlayersFlags(player.getName()));
}
- public void copyUserPermissions(String fromUser, String toUser) {
- fromUser = fromUser.toLowerCase();
- toUser = toUser.toLowerCase();
- Map get = playerFlags.get(fromUser);
- if (get != null) {
- Map targ = playerFlags.get(toUser);
- if (targ == null) {
- targ = new HashMap();
- playerFlags.put(toUser, targ);
- }
- for (Entry entry : get.entrySet()) {
- targ.put(entry.getKey(), entry.getValue());
- }
- }
+ public void removeAllGroupFlags(String group) {
+ groupFlags.remove(group);
}
- public void clearPlayersFlags(String user) {
- if (playerFlags.containsKey(user)) {
- playerFlags.remove(user);
- }
+ public void removeAllPlayerFlags(String player) {
+ playerFlags.remove(player);
+ }
+
+ public Map save() {
+ Map root = new LinkedHashMap();
+ root.put("PlayerFlags", playerFlags);
+ root.put("GroupFlags", groupFlags);
+ root.put("AreaFlags", cuboidFlags);
+ return root;
+ }
+
+ public boolean setFlag(String flag, FlagState state) {
+ if (state == FlagState.FALSE)
+ cuboidFlags.put(flag, false);
+ else if (state == FlagState.TRUE)
+ cuboidFlags.put(flag, true);
+ else if (state == FlagState.NEITHER)
+ if (cuboidFlags.containsKey(flag))
+ cuboidFlags.remove(flag);
+ return true;
+ }
+
+ public boolean setGroupFlag(String group, String flag, FlagState state) {
+ group = group.toLowerCase();
+ if (!groupFlags.containsKey(group))
+ groupFlags.put(group, Collections.synchronizedMap(new HashMap()));
+ Map map = groupFlags.get(group);
+ if (state == FlagState.FALSE)
+ map.put(flag, false);
+ else if (state == FlagState.TRUE)
+ map.put(flag, true);
+ else if (state == FlagState.NEITHER)
+ if (map.containsKey(flag))
+ map.remove(flag);
+ if (map.isEmpty())
+ groupFlags.remove(group);
+ return true;
}
public void setParent(FlagPermissions p) {
parent = p;
}
- public FlagPermissions getParent() {
- return parent;
+ public boolean setPlayerFlag(String player, String flag, FlagState state) {
+ player = player.toLowerCase();
+ if (!playerFlags.containsKey(player))
+ playerFlags.put(player, Collections.synchronizedMap(new HashMap()));
+ Map map = playerFlags.get(player);
+ if (state == FlagState.FALSE)
+ map.put(flag, false);
+ else if (state == FlagState.TRUE)
+ map.put(flag, true);
+ else if (state == FlagState.NEITHER)
+ if (map.containsKey(flag))
+ map.remove(flag);
+ if (map.isEmpty())
+ playerFlags.remove(player);
+ return true;
+ }
+
+ private boolean groupCheck(String group, String flag, boolean def) {
+ if (groupFlags.containsKey(group)) {
+ Map gmap = groupFlags.get(group);
+ if (gmap.containsKey(flag))
+ return gmap.get(flag);
+ }
+ if (parent != null)
+ return parent.groupCheck(group, flag, def);
+ return def;
+ }
+
+ private boolean playerCheck(String player, String flag, boolean def) {
+ player = player.toLowerCase();
+ if (playerFlags.containsKey(player)) {
+ Map pmap = playerFlags.get(player);
+ if (pmap.containsKey(flag))
+ return pmap.get(flag);
+ }
+ if (parent != null)
+ return parent.playerCheck(player, flag, def);
+ return def;
+ }
+
+ public static enum FlagState {
+
+ TRUE,
+ FALSE,
+ NEITHER,
+ INVALID
}
}
diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/ResidenceManager.java b/src/main/java/com/bekvon/bukkit/residence/protection/ResidenceManager.java
index e9f928b..04b9b40 100644
--- a/src/main/java/com/bekvon/bukkit/residence/protection/ResidenceManager.java
+++ b/src/main/java/com/bekvon/bukkit/residence/protection/ResidenceManager.java
@@ -36,14 +36,596 @@ import com.bekvon.bukkit.residence.text.help.InformationPager;
* @author Administrator
*/
public class ResidenceManager {
+ protected Map residences;
+
+ protected Map>> chunkResidences;
+
+ public ResidenceManager() {
+ residences = new HashMap();
+ chunkResidences = new HashMap>>();
+ }
+
+ @SuppressWarnings("unchecked")
+ public static ResidenceManager load(Map root) throws Exception {
+ ResidenceManager resm = new ResidenceManager();
+ if (root == null)
+ return resm;
+ for (World world : Residence.getServ().getWorlds()) {
+ Map reslist = (Map) root.get(world.getName());
+ if (reslist != null)
+ try {
+ resm.chunkResidences.put(world.getName(), loadMap(reslist, resm));
+ } catch (Exception ex) {
+ Residence.getLog().warning("载入世界: " + world.getName() + "的领地数据时发生错误!");
+ if (Residence.getConfigManager().stopOnSaveError())
+ throw (ex);
+ }
+ }
+ return resm;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static Map> loadMap(Map root, ResidenceManager resm) throws Exception {
+ Map> retRes = new HashMap>();
+ if (root != null)
+ for (Entry res : root.entrySet())
+ try {
+ ClaimedResidence residence = ClaimedResidence.load((Map) res.getValue(), null);
+ for (ChunkRef chunk : getChunks(residence)) {
+ List ress = new ArrayList();
+ if (retRes.containsKey(chunk))
+ ress.addAll(retRes.get(chunk));
+ ress.add(res.getKey());
+ retRes.put(chunk, ress);
+ }
+ resm.residences.put(res.getKey(), residence);
+ } catch (Exception ex) {
+ System.out.print("[Residence] Failed to load residence (" + res.getKey() + ")! Reason:" + ex.getMessage() + " Error Log:");
+ Logger.getLogger(ResidenceManager.class.getName()).log(Level.SEVERE, null, ex);
+ if (Residence.getConfigManager().stopOnSaveError())
+ throw (ex);
+ }
+ return retRes;
+ }
+
+ private static List getChunks(ClaimedResidence res) {
+ List chunks = new ArrayList();
+ for (CuboidArea area : res.getAreaArray())
+ chunks.addAll(area.getChunks());
+ return chunks;
+ }
+
+ public boolean addResidence(Player player, String name, Location loc1, Location loc2, boolean resadmin) {
+ return this.addResidence(player, player.getName(), name, loc1, loc2, resadmin);
+ }
+
+ public boolean addResidence(Player player, String owner, String name, Location loc1, Location loc2, boolean resadmin) {
+ if (!Residence.validName(name)) {
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidNameCharacters"));
+ return false;
+ }
+ if (loc1 == null || loc2 == null || !loc1.getWorld().getName().equals(loc2.getWorld().getName())) {
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SelectPoints"));
+ return false;
+ }
+ PermissionGroup group = Residence.getPermissionManager().getGroup(owner, loc1.getWorld().getName());
+ boolean createpermission = group.canCreateResidences() || (player == null ? true : player.hasPermission("residence.create"));
+ if (!createpermission && !resadmin) {
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
+ return false;
+ }
+ if (player != null)
+ if (getOwnedZoneCount(player.getName()) >= group.getMaxZones() && !resadmin) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceTooMany"));
+ return false;
+ }
+ CuboidArea newArea = new CuboidArea(loc1, loc2);
+ ClaimedResidence newRes = new ClaimedResidence(owner, loc1.getWorld().getName());
+ newRes.getPermissions().applyDefaultFlags();
+ newRes.setEnterMessage(group.getDefaultEnterMessage());
+ newRes.setLeaveMessage(group.getDefaultLeaveMessage());
+
+ ResidenceCreationEvent resevent = new ResidenceCreationEvent(player, name, newRes, newArea);
+ Residence.getServ().getPluginManager().callEvent(resevent);
+ if (resevent.isCancelled())
+ return false;
+ newArea = resevent.getPhysicalArea();
+ name = resevent.getResidenceName();
+ if (residences.containsKey(name)) {
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceAlreadyExists", ChatColor.YELLOW + name + ChatColor.RED));
+ return false;
+ }
+ if (player != null)
+ newRes.addArea(player, newArea, "main", resadmin);
+ else
+ newRes.addArea(newArea, "main");
+ if (newRes.getAreaCount() != 0) {
+ residences.put(name, newRes);
+ calculateChunks(name);
+ Residence.getLeaseManager().removeExpireTime(name);
+ if (player != null)
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceCreate", ChatColor.YELLOW + name + ChatColor.GREEN));
+ if (Residence.getConfigManager().useLeases())
+ if (player != null)
+ Residence.getLeaseManager().setExpireTime(player, name, group.getLeaseGiveTime());
+ else
+ Residence.getLeaseManager().setExpireTime(name, group.getLeaseGiveTime());
+ return true;
+ }
+ return false;
+ }
+
+ public boolean addResidence(String name, Location loc1, Location loc2) {
+ return this.addResidence(name, "Server Land", loc1, loc2);
+ }
+
+ public boolean addResidence(String name, String owner, Location loc1, Location loc2) {
+ return this.addResidence(null, owner, name, loc1, loc2, true);
+ }
+
+ public void calculateChunks(String name) {
+ ClaimedResidence res = residences.get(name);
+ if (res != null) {
+ String world = res.getWorld();
+ if (chunkResidences.get(world) == null)
+ chunkResidences.put(world, new HashMap>());
+ for (ChunkRef chunk : getChunks(res)) {
+ List ress = new ArrayList();
+ if (chunkResidences.get(world).containsKey(chunk))
+ ress.addAll(chunkResidences.get(world).get(chunk));
+ ress.add(name);
+ chunkResidences.get(world).put(chunk, ress);
+ }
+ }
+ }
+
+ public String checkAreaCollision(CuboidArea newarea, ClaimedResidence parentResidence) {
+ Set> set = residences.entrySet();
+ for (Entry entry : set) {
+ ClaimedResidence check = entry.getValue();
+ if (check != parentResidence && check.checkCollision(newarea))
+ return entry.getKey();
+ }
+ return null;
+ }
+
+ public ClaimedResidence getByLoc(Location loc) {
+ if (loc == null)
+ return null;
+ ClaimedResidence res = null;
+ boolean found = false;
+ String world = loc.getWorld().getName();
+ ChunkRef chunk = new ChunkRef(loc);
+ if (chunkResidences.get(world) != null)
+ if (chunkResidences.get(world).get(chunk) != null)
+ for (String key : chunkResidences.get(world).get(chunk)) {
+ ClaimedResidence entry = residences.get(key);
+ if (entry.containsLoc(loc)) {
+ res = entry;
+ found = true;
+ break;
+ }
+ }
+ if (!found)
+ return null;
+ if (res == null)
+ return null;
+ ClaimedResidence subres = res.getSubzoneByLoc(loc);
+ if (subres == null)
+ return res;
+ return subres;
+ }
+
+ public ClaimedResidence getByName(String name) {
+ if (name == null)
+ return null;
+ String[] split = name.split("\\.");
+ if (split.length == 1)
+ return residences.get(name);
+ ClaimedResidence res = residences.get(split[0]);
+ for (int i = 1; i < split.length; i++)
+ if (res != null)
+ res = res.getSubzone(split[i]);
+ else
+ return null;
+ return res;
+ }
+
+ public String getNameByLoc(Location loc) {
+ if (loc == null)
+ return null;
+ ClaimedResidence res = null;
+ String name = null;
+ boolean found = false;
+ String world = loc.getWorld().getName();
+ ChunkRef chunk = new ChunkRef(loc);
+ if (chunkResidences.get(world) != null)
+ if (chunkResidences.get(world).get(chunk) != null)
+ for (String key : chunkResidences.get(world).get(chunk)) {
+ ClaimedResidence entry = residences.get(key);
+ if (entry.containsLoc(loc)) {
+ res = entry;
+ found = true;
+ break;
+ }
+ }
+ if (!found)
+ return null;
+ if (res == null)
+ return null;
+ name = res.getName();
+ if (name == null)
+ return null;
+ String szname = res.getSubzoneNameByLoc(loc);
+ if (szname != null)
+ return name + "." + szname;
+ return name;
+ }
+
+ public String getNameByRes(ClaimedResidence res) {
+ Set> set = residences.entrySet();
+ for (Entry check : set) {
+ if (check.getValue() == res)
+ return check.getKey();
+ String n = check.getValue().getSubzoneNameByRes(res);
+ if (n != null)
+ return check.getKey() + "." + n;
+ }
+ return null;
+ }
+
+ public int getOwnedZoneCount(String player) {
+ Collection set = residences.values();
+ int count = 0;
+ for (ClaimedResidence res : set)
+ if (res.getPermissions().getOwner().equalsIgnoreCase(player))
+ count++;
+ return count;
+ }
+
+ public int getResidenceCount() {
+ return residences.size();
+ }
+
+ public String[] getResidenceList() {
+ return this.getResidenceList(true, true).toArray(new String[0]);
+ }
+
+ public ArrayList getResidenceList(boolean showhidden, boolean showsubzones) {
+ return this.getResidenceList(null, showhidden, showsubzones, false);
+ }
+
+ public ArrayList getResidenceList(String targetplayer, boolean showhidden, boolean showsubzones) {
+ return this.getResidenceList(targetplayer, showhidden, showsubzones, false);
+ }
+
+ public ArrayList getResidenceList(String targetplayer, boolean showhidden, boolean showsubzones, boolean formattedOutput) {
+ ArrayList list = new ArrayList();
+ for (Entry res : residences.entrySet())
+ this.getResidenceList(targetplayer, showhidden, showsubzones, "", res.getKey(), res.getValue(), list, formattedOutput);
+ return list;
+ }
+
+ public void giveResidence(Player reqPlayer, String targPlayer, String residence, boolean resadmin) {
+ ClaimedResidence res = getByName(residence);
+ if (res == null) {
+ reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence"));
+ return;
+ }
+ if (!res.getPermissions().hasResidencePermission(reqPlayer, true) && !resadmin) {
+ reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
+ return;
+ }
+ Player giveplayer = Residence.getServ().getPlayer(targPlayer);
+ if (giveplayer == null || !giveplayer.isOnline()) {
+ reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NotOnline"));
+ return;
+ }
+ CuboidArea[] areas = res.getAreaArray();
+ PermissionGroup g = Residence.getPermissionManager().getGroup(giveplayer);
+ if (areas.length > g.getMaxPhysicalPerResidence() && !resadmin) {
+ reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceGiveLimits"));
+ return;
+ }
+ if (getOwnedZoneCount(giveplayer.getName()) >= g.getMaxZones() && !resadmin) {
+ reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceGiveLimits"));
+ return;
+ }
+ if (!resadmin)
+ for (CuboidArea area : areas)
+ if (!g.inLimits(area)) {
+ reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceGiveLimits"));
+ return;
+ }
+ res.getPermissions().setOwner(giveplayer.getName(), true);
+ // Fix phrases here
+ reqPlayer.sendMessage(
+ ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceGive", ChatColor.YELLOW + residence + ChatColor.GREEN + "." + ChatColor.YELLOW + giveplayer.getName() + ChatColor.GREEN));
+ giveplayer.sendMessage(Residence.getLanguage().getPhrase("ResidenceRecieve", ChatColor.GREEN + residence + ChatColor.YELLOW + "." + ChatColor.GREEN + reqPlayer.getName() + ChatColor.YELLOW));
+ }
+
+ public void listAllResidences(Player player, int page) {
+ this.listAllResidences(player, page, false);
+ }
+
+ public void listAllResidences(Player player, int page, boolean showhidden) {
+ this.listAllResidences(player, page, showhidden, false);
+ }
+
+ public void listAllResidences(Player player, int page, boolean showhidden, boolean showsubzones) {
+ if (showhidden && !Residence.isResAdminOn(player))
+ showhidden = false;
+ InformationPager.printInfo(player, Residence.getLanguage().getPhrase("Residences"), this.getResidenceList(null, showhidden, showsubzones, true), page);
+ }
+
+ public void listResidences(Player player) {
+ this.listResidences(player, player.getName(), 1);
+ }
+
+ public void listResidences(Player player, int page) {
+ this.listResidences(player, player.getName(), page);
+ }
+
+ public void listResidences(Player player, int page, boolean showhidden) {
+ this.listResidences(player, player.getName(), page, showhidden);
+ }
+
+ public void listResidences(Player player, String targetplayer) {
+ this.listResidences(player, targetplayer, 1);
+ }
+
+ public void listResidences(Player player, String targetplayer, int page) {
+ this.listResidences(player, targetplayer, page, false);
+ }
+
+ public void listResidences(Player player, String targetplayer, int page, boolean showhidden) {
+ this.listResidences(player, targetplayer, page, showhidden, false);
+ }
+
+ public void listResidences(Player player, String targetplayer, int page, boolean showhidden, boolean showsubzones) {
+ if (showhidden && !Residence.isResAdminOn(player) && !player.getName().equals(targetplayer))
+ showhidden = false;
+ InformationPager.printInfo(player, Residence.getLanguage().getPhrase("Residences") + " - " + targetplayer, this.getResidenceList(targetplayer, showhidden, showsubzones, true), page);
+ }
+
+ public void mirrorPerms(Player reqPlayer, String targetArea, String sourceArea, boolean resadmin) {
+ ClaimedResidence reciever = this.getByName(targetArea);
+ ClaimedResidence source = this.getByName(sourceArea);
+ if (source == null || reciever == null) {
+ reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence"));
+ return;
+ }
+ if (!resadmin)
+ if (!reciever.getPermissions().hasResidencePermission(reqPlayer, true) || !source.getPermissions().hasResidencePermission(reqPlayer, true)) {
+ reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
+ return;
+ }
+ reciever.getPermissions().applyTemplate(reqPlayer, source.getPermissions(), resadmin);
+ }
+
+ public void printAreaInfo(String areaname, Player player) {
+ ClaimedResidence res = this.getByName(areaname);
+ if (res == null) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence"));
+ return;
+ }
+ ResidencePermissions perms = res.getPermissions();
+ if (Residence.getConfigManager().enableEconomy())
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Residence") + ":" + ChatColor.DARK_GREEN + " " + areaname + " " + ChatColor.YELLOW + "Bank: " + ChatColor.GOLD
+ + res.getBank().getStoredMoney());
+ else
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Residence") + ":" + ChatColor.DARK_GREEN + " " + areaname);
+ if (Residence.getConfigManager().enabledRentSystem() && Residence.getRentManager().isRented(areaname))
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Owner") + ":" + ChatColor.RED + " " + perms.getOwner() + ChatColor.YELLOW + " Rented by: " + ChatColor.RED
+ + Residence.getRentManager().getRentingPlayer(areaname));
+ else
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Owner") + ":" + ChatColor.RED + " " + perms.getOwner() + ChatColor.YELLOW + " - "
+ + Residence.getLanguage().getPhrase("World") + ": " + ChatColor.RED + perms.getWorld());
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Flags") + ":" + ChatColor.BLUE + " " + perms.listFlags());
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Your.Flags") + ": " + ChatColor.GREEN + perms.listPlayerFlags(player.getName()));
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Group.Flags") + ":" + ChatColor.RED + " " + perms.listGroupFlags());
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Others.Flags") + ":" + ChatColor.RED + " " + perms.listOtherPlayersFlags(player.getName()));
+ String aid = res.getAreaIDbyLoc(player.getLocation());
+ if (aid != null)
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("CurrentArea") + ": " + ChatColor.GOLD + aid);
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Total.Size") + ":" + ChatColor.LIGHT_PURPLE + " " + res.getTotalSize());
+ if (aid != null) {
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("CoordsT") + ": " + ChatColor.LIGHT_PURPLE
+ + Residence.getLanguage().getPhrase("CoordsTop", res.getAreaByLoc(player.getLocation()).getHighLoc().getBlockX() + "."
+ + res.getAreaByLoc(player.getLocation()).getHighLoc().getBlockY() + "." + res.getAreaByLoc(player.getLocation()).getHighLoc().getBlockZ()));
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("CoordsB") + ": " + ChatColor.LIGHT_PURPLE
+ + Residence.getLanguage().getPhrase("CoordsBottom", res.getAreaByLoc(player.getLocation()).getLowLoc().getBlockX() + "."
+ + res.getAreaByLoc(player.getLocation()).getLowLoc().getBlockY() + "." + res.getAreaByLoc(player.getLocation()).getLowLoc().getBlockZ()));
+ if (Residence.isUseWorldEdit())
+ WECUI.UPDATESELECT(res, player);
+ }
+ if (Residence.getConfigManager().useLeases() && Residence.getLeaseManager().leaseExpires(areaname))
+ player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("LeaseExpire") + ":" + ChatColor.GREEN + " " + Residence.getLeaseManager().getExpireTime(areaname));
+ }
+
+ public void removeAllByOwner(Player player, String owner) {
+ this.removeAllByOwner(player, owner, residences);
+ }
+
+ public void removeAllByOwner(String owner) {
+ this.removeAllByOwner(null, owner, residences);
+ }
+
+ public void removeAllFromWorld(CommandSender sender, String world) {
+ int count = 0;
+ Iterator it = residences.values().iterator();
+ while (it.hasNext()) {
+ ClaimedResidence next = it.next();
+ if (next.getWorld().equals(world)) {
+ it.remove();
+ count++;
+ }
+ }
+ chunkResidences.remove(world);
+ chunkResidences.put(world, new HashMap>());
+ if (count == 0)
+ sender.sendMessage(ChatColor.RED + "No residences found in world: " + ChatColor.YELLOW + world);
+ else
+ sender.sendMessage(ChatColor.RED + "Removed " + ChatColor.YELLOW + count + ChatColor.RED + " residences in world: " + ChatColor.YELLOW + world);
+ }
+
+ public void removeChunkList(String name) {
+ ClaimedResidence res = residences.get(name);
+ if (res != null) {
+ String world = res.getWorld();
+ if (chunkResidences.get(world) != null)
+ for (ChunkRef chunk : getChunks(res)) {
+ List ress = new ArrayList();
+ if (chunkResidences.get(world).containsKey(chunk))
+ ress.addAll(chunkResidences.get(world).get(chunk));
+ ress.remove(name);
+ chunkResidences.get(world).put(chunk, ress);
+ }
+ }
+ }
+
+ public void removeResidence(Player player, String name, boolean resadmin) {
+ ClaimedResidence res = this.getByName(name);
+ if (res != null) {
+ if (player != null && !resadmin)
+ if (!res.getPermissions().hasResidencePermission(player, true) && !resadmin) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
+ return;
+ }
+ ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(player, res, player == null ? DeleteCause.OTHER : DeleteCause.PLAYER_DELETE);
+ Residence.getServ().getPluginManager().callEvent(resevent);
+ if (resevent.isCancelled())
+ return;
+ ClaimedResidence parent = res.getParent();
+ if (parent == null) {
+ removeChunkList(name);
+ residences.remove(name);
+ if (player != null)
+ player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceRemove", ChatColor.YELLOW + name + ChatColor.GREEN));
+ } else {
+ String[] split = name.split("\\.");
+ if (player != null)
+ parent.removeSubzone(player, split[split.length - 1], true);
+ else
+ parent.removeSubzone(split[split.length - 1]);
+ }
+ // Residence.getLeaseManager().removeExpireTime(name); - causing
+ // concurrent modification exception in lease manager... worked
+ // around for now
+ Residence.getRentManager().removeRentable(name);
+
+ } else if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence"));
+ }
+
+ public void removeResidence(String name) {
+ this.removeResidence(null, name, true);
+ }
+
+ public boolean renameResidence(Player player, String oldName, String newName, boolean resadmin) {
+ if (!Residence.validName(newName)) {
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidNameCharacters"));
+ return false;
+ }
+ ClaimedResidence res = this.getByName(oldName);
+ if (res == null) {
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence"));
+ return false;
+ }
+ if (res.getPermissions().hasResidencePermission(player, true) || resadmin) {
+ if (res.getParent() == null) {
+ if (residences.containsKey(newName)) {
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceAlreadyExists", ChatColor.YELLOW + newName + ChatColor.RED));
+ return false;
+ }
+ ResidenceRenameEvent resevent = new ResidenceRenameEvent(res, newName, oldName);
+ Residence.getServ().getPluginManager().callEvent(resevent);
+ removeChunkList(oldName);
+ residences.put(newName, res);
+ residences.remove(oldName);
+ calculateChunks(newName);
+ if (Residence.getConfigManager().useLeases())
+ Residence.getLeaseManager().updateLeaseName(oldName, newName);
+ if (Residence.getConfigManager().enabledRentSystem())
+ Residence.getRentManager().updateRentableName(oldName, newName);
+ if (player != null)
+ player.sendMessage(
+ ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceRename", ChatColor.YELLOW + oldName + ChatColor.GREEN + "." + ChatColor.YELLOW + newName + ChatColor.GREEN));
+ return true;
+ } else {
+ String[] oldname = oldName.split("\\.");
+ ClaimedResidence parent = res.getParent();
+ return parent.renameSubzone(player, oldname[oldname.length - 1], newName, resadmin);
+ }
+ } else {
+ if (player != null)
+ player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
+ return false;
+ }
+ }
+
+ public boolean renameResidence(String oldName, String newName) {
+ return this.renameResidence(null, oldName, newName, true);
+ }
+
+ public Map save() {
+ Map