diff --git a/pom.xml b/pom.xml
index fcfbf76..f92b1b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,6 +6,7 @@
2.7.0.1-SNAPSHOT
Residence
+ ${project.name}
src
diff --git a/src/com/bekvon/bukkit/residence/Residence.java b/src/com/bekvon/bukkit/residence/Residence.java
index 0662742..71a6b75 100644
--- a/src/com/bekvon/bukkit/residence/Residence.java
+++ b/src/com/bekvon/bukkit/residence/Residence.java
@@ -58,76 +58,208 @@ import com.bekvon.bukkit.residence.text.Language;
import com.bekvon.bukkit.residence.text.help.HelpEntry;
import com.bekvon.bukkit.residence.text.help.InformationPager;
import com.bekvon.bukkit.residence.vaultinterface.ResidenceVaultAdapter;
+import com.bekvon.bukkit.residence.vaultinterface.ZipLibrary;
import com.earth2me.essentials.Essentials;
-import com.residence.mcstats.Metrics;
-import com.residence.zip.ZipLibrary;
/**
- *
+ *
* @author Gary Smoak - bekvon
- *
+ *
*/
public class Residence extends JavaPlugin {
- public static String bukkitver;
- protected static ResidenceManager rmanager;
- protected static SelectionManager smanager;
- protected static PermissionManager gmanager;
- protected static ConfigManager cmanager;
- protected static ResidenceBlockListener blistener;
- protected static ResidencePlayerListener plistener;
- protected static ResidenceEntityListener elistener;
- protected static TransactionManager tmanager;
- protected static PermissionListManager pmanager;
- protected static LeaseManager leasemanager;
- protected static WorldItemManager imanager;
- protected static WorldFlagManager wmanager;
- protected static RentManager rentmanager;
- protected static ChatManager chatmanager;
- protected static Server server;
- protected static HelpEntry helppages;
- protected static Language language;
- protected boolean firstenable = true;
- protected static EconomyInterface economy;
- public final static int saveVersion = 1;
- protected static File dataFolder;
- protected static int leaseBukkitId = -1;
- protected static int rentBukkitId = -1;
- protected static int healBukkitId = -1;
- protected static int autosaveBukkitId = -1;
- protected static boolean initsuccess = false;
- protected Map deleteConfirm;
- protected static List resadminToggle;
- private final static String[] validLanguages = { "English", "Chinese" };
- private Runnable doHeals = new Runnable() {
+ public static String bukkitver;
+ protected static ResidenceManager rmanager;
+ protected static SelectionManager smanager;
+ protected static PermissionManager gmanager;
+ protected static ConfigManager cmanager;
+ protected static ResidenceBlockListener blistener;
+ protected static ResidencePlayerListener plistener;
+ protected static ResidenceEntityListener elistener;
+ protected static TransactionManager tmanager;
+ protected static PermissionListManager pmanager;
+ protected static LeaseManager leasemanager;
+ protected static WorldItemManager imanager;
+ protected static WorldFlagManager wmanager;
+ protected static RentManager rentmanager;
+ protected static ChatManager chatmanager;
+ protected static Server server;
+ protected static HelpEntry helppages;
+ protected static Language language;
+ protected static EconomyInterface economy;
+ public final static int saveVersion = 1;
+ protected static File dataFolder;
+ protected static int leaseBukkitId = -1;
+ protected static int rentBukkitId = -1;
+ protected static int healBukkitId = -1;
+ protected static int autosaveBukkitId = -1;
+ protected static boolean initsuccess = false;
+ protected static List resadminToggle;
+ private final static String[] validLanguages = { "English", "Chinese" };
+
+ public static ResidenceBlockListener getBlockListener() {
+ return blistener;
+ }
+
+ public static ChatManager getChatManager() {
+ return chatmanager;
+ }
+
+ public static ConfigManager getConfigManager() {
+ return cmanager;
+ }
+
+ public static File getDataLocation() {
+ return dataFolder;
+ }
+
+ public static EconomyInterface getEconomyManager() {
+ return economy;
+ }
+
+ public static ResidenceEntityListener getEntityListener() {
+ return elistener;
+ }
+
+ public static WorldItemManager getItemManager() {
+ return imanager;
+ }
+
+ public static Language getLanguage() {
+ if (language == null) {
+ language = new Language();
+ }
+ return language;
+ }
+
+ public static LeaseManager getLeaseManager() {
+ return leasemanager;
+ }
+
+ public static PermissionManager getPermissionManager() {
+ return gmanager;
+ }
+
+ public static FlagPermissions getPermsByLoc(Location loc) {
+ ClaimedResidence res = rmanager.getByLoc(loc);
+ if (res != null)
+ return res.getPermissions();
+ else
+ return wmanager.getPerms(loc.getWorld().getName());
+ }
+
+ public static FlagPermissions getPermsByLocForPlayer(Location loc, Player player) {
+ ClaimedResidence res = rmanager.getByLoc(loc);
+ if (res != null)
+ return res.getPermissions();
+ else {
+ if (player != null)
+ return wmanager.getPerms(player);
+ else
+ return wmanager.getPerms(loc.getWorld().getName());
+ }
+ }
+
+ public static ResidencePlayerListener getPlayerListener() {
+ return plistener;
+ }
+
+ public static RentManager getRentManager() {
+ return rentmanager;
+ }
+
+ public static ResidenceManager getResidenceManager() {
+ return rmanager;
+ }
+
+ public static SelectionManager getSelectionManager() {
+ return smanager;
+ }
+
+ public static Server getServ() {
+ return server;
+ }
+
+ public static TransactionManager getTransactionManager() {
+ return tmanager;
+ }
+
+ public static WorldFlagManager getWorldFlags() {
+ return wmanager;
+ }
+
+ public static boolean isResAdminOn(Player player) {
+ if (resadminToggle.contains(player.getName()))
+ return true;
+ return false;
+ }
+
+ public static boolean isResAdminOn(String player) {
+ if (resadminToggle.contains(player.toLowerCase()))
+ return true;
+ return false;
+ }
+
+ public static void turnResAdminOn(Player player) {
+ resadminToggle.add(player.getName());
+ }
+
+ public static boolean validName(String name) {
+ if (name.contains(":") || name.contains("."))
+ return false;
+ if (cmanager.getResidenceNameRegex() == null)
+ return true;
+ else {
+ String namecheck = name.replaceAll(cmanager.getResidenceNameRegex(), "");
+ if (!name.equals(namecheck))
+ return false;
+ return true;
+ }
+ }
+
+ protected boolean firstenable = true;
+
+ protected Map deleteConfirm;
+
+ private Runnable doHeals = new Runnable() {
+ @Override
public void run() {
plistener.doHeals();
}
};
- private Runnable rentExpire = new Runnable() {
+
+ private Runnable rentExpire = new Runnable() {
+ @Override
public void run() {
rentmanager.checkCurrentRents();
if (cmanager.showIntervalMessages()) {
- System.out.println("[Residence] - Rent Expirations checked!");
+ System.out
+ .println("[Residence] - Rent Expirations checked!");
}
}
};
- private Runnable leaseExpire = new Runnable() {
+
+ private Runnable leaseExpire = new Runnable() {
+ @Override
public void run() {
leasemanager.doExpirations();
if (cmanager.showIntervalMessages()) {
- System.out.println("[Residence] - Lease Expirations checked!");
+ System.out
+ .println("[Residence] - Lease Expirations checked!");
}
}
};
- private Runnable autoSave = new Runnable() {
+
+ private Runnable autoSave = new Runnable() {
+ @Override
public void run() {
try {
if (initsuccess) {
saveYml();
}
} catch (Exception ex) {
- Logger.getLogger("Minecraft").log(Level.SEVERE,
+ Logger.getLogger("Minecraft").log(
+ Level.SEVERE,
"[Residence] 插件数据 保存 错误", ex);
}
}
@@ -136,11 +268,33 @@ public class Residence extends JavaPlugin {
public Residence() {
}
- public void reloadPlugin() {
- this.onDisable();
- this.reloadConfig();
- this.onEnable();
+ private boolean checkNewLanguageVersion(String lang) throws IOException, FileNotFoundException,
+ InvalidConfigurationException {
+ File outFile = new File(new File(this.getDataFolder(), "Language"), lang + ".yml");
+ File checkFile = new File(new File(this.getDataFolder(), "Language"), "temp-" + lang
+ + ".yml");
+ if (outFile.isFile()) {
+ FileConfig testconfig = new FileConfig();
+ testconfig.load(outFile);
+ int oldversion = testconfig.getInt("FieldsVersion", 0);
+ if (!this.writeDefaultFileFromJar(checkFile, "languagefiles/" + lang + ".yml", false))
+ return false;
+ FileConfig testconfig2 = new FileConfig();
+ testconfig2.load(checkFile);
+ int newversion = testconfig2.getInt("FieldsVersion", oldversion);
+ if (checkFile.isFile()) {
+ checkFile.delete();
+ }
+ if (newversion > oldversion)
+ return true;
+ return false;
+ }
+ return true;
+ }
+ public void consoleMessage(String message) {
+ ConsoleCommandSender console = Bukkit.getConsoleSender();
+ console.sendMessage("[Residence] " + message);
}
@Override
@@ -151,14 +305,89 @@ public class Residence extends JavaPlugin {
return Config.getInstance();
}
- @Override
- public void saveConfig() {
- Config.save();
+ private void loadEssentialsEconomy() {
+ Plugin p = getServer().getPluginManager().getPlugin("Essentials");
+ if (p != null) {
+ economy = new EssentialsEcoAdapter((Essentials) p);
+ Logger.getLogger("Minecraft").log(Level.INFO, "[Residence] 成功关联Essentials Economy!");
+ } else {
+ Logger.getLogger("Minecraft").log(Level.INFO, "[Residence] Essentials Economy 未找到!");
+ }
}
- @Override
- public void reloadConfig() {
- Config.load(this);
+ private void loadVaultEconomy() {
+ Plugin p = getServer().getPluginManager().getPlugin("Vault");
+ if (p != null) {
+ ResidenceVaultAdapter vault = new ResidenceVaultAdapter(getServer());
+ if (vault.economyOK()) {
+ Logger.getLogger("Minecraft").log(Level.INFO,
+ "[Residence] 发现 Vault 使用经济系统: " + vault.getEconomyName());
+ economy = vault;
+ } else {
+ Logger.getLogger("Minecraft").log(Level.INFO,
+ "[Residence] 发现 Vault, 但是 Vault 未找到经济系统...");
+ }
+ } else {
+ Logger.getLogger("Minecraft").log(Level.INFO, "[Residence] Vault 未找到!");
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ protected boolean loadYml() throws Exception {
+ File saveFolder = new File(dataFolder, "Save");
+ try {
+ File worldFolder = new File(saveFolder, "Worlds");
+ if (!saveFolder.isDirectory()) {
+ this.getLogger().warning("保存目录不存在...");
+ this.getLogger().warning("请重新启动服务器");
+ return true;
+ }
+ YMLSaveHelper yml;
+ File loadFile;
+ HashMap worlds = new HashMap();
+ for (World world : server.getWorlds()) {
+ loadFile = new File(worldFolder, "res_" + world.getName() + ".yml");
+ if (loadFile.isFile()) {
+ yml = new YMLSaveHelper(loadFile);
+ yml.load();
+ worlds.put(world.getName(), yml.getRoot().get("Residences"));
+ }
+ }
+ rmanager = ResidenceManager.load(worlds);
+ loadFile = new File(saveFolder, "forsale.yml");
+ if (loadFile.isFile()) {
+ yml = new YMLSaveHelper(loadFile);
+ yml.load();
+ tmanager = TransactionManager.load((Map, ?>) yml.getRoot().get("Economy"),
+ gmanager, rmanager);
+ }
+ loadFile = new File(saveFolder, "leases.yml");
+ if (loadFile.isFile()) {
+ yml = new YMLSaveHelper(loadFile);
+ yml.load();
+ leasemanager = LeaseManager.load((Map) yml.getRoot().get("Leases"),
+ rmanager);
+ }
+ loadFile = new File(saveFolder, "permlists.yml");
+ if (loadFile.isFile()) {
+ yml = new YMLSaveHelper(loadFile);
+ yml.load();
+ pmanager = PermissionListManager.load((Map) yml.getRoot().get(
+ "PermissionLists"));
+ }
+ loadFile = new File(saveFolder, "rent.yml");
+ if (loadFile.isFile()) {
+ yml = new YMLSaveHelper(loadFile);
+ yml.load();
+ rentmanager = RentManager.load((Map) yml.getRoot()
+ .get("RentSystem"));
+ }
+ // System.out.print("[Residence] Loaded...");
+ return true;
+ } catch (Exception ex) {
+ Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
+ throw ex;
+ }
}
@Override
@@ -176,11 +405,9 @@ public class Residence extends JavaPlugin {
saveYml();
ZipLibrary.backup();
} catch (Exception ex) {
- Logger.getLogger("Minecraft").log(Level.SEVERE,
- "[Residence] 插件数据保存失败", ex);
+ Logger.getLogger("Minecraft").log(Level.SEVERE, "[Residence] 插件数据保存失败", ex);
}
- Logger.getLogger("Minecraft").log(Level.INFO,
- "[Residence] Disabled!");
+ Logger.getLogger("Minecraft").log(Level.INFO, "[Residence] Disabled!");
}
}
@@ -211,8 +438,7 @@ public class Residence extends JavaPlugin {
Plugin plugin = server.getPluginManager().getPlugin(multiworld);
if (plugin != null) {
if (!plugin.isEnabled()) {
- System.out.println("[Residence] - 加载多世界插件: "
- + multiworld);
+ System.out.println("[Residence] - 加载多世界插件: " + multiworld);
server.getPluginManager().enablePlugin(plugin);
}
}
@@ -228,33 +454,28 @@ public class Residence extends JavaPlugin {
this.writeDefaultLanguageFile(lang);
}
} catch (Exception ex) {
- System.out
- .println("[Residence] 语言文件升级失败: " + lang + ".yml");
+ System.out.println("[Residence] 语言文件升级失败: " + lang + ".yml");
helppages = new HelpEntry("");
language = new Language();
}
}
try {
- File langFile = new File(new File(dataFolder, "Language"),
- cmanager.getLanguage() + ".yml");
+ File langFile = new File(new File(dataFolder, "Language"), cmanager.getLanguage()
+ + ".yml");
if (langFile.isFile()) {
FileConfig langconfig = new FileConfig();
langconfig.load(langFile);
helppages = HelpEntry.parseHelp(langconfig, "CommandHelp");
- HelpEntry.setLinesPerPage(langconfig.getInt(
- "HelpLinesPerPage", 7));
- InformationPager.setLinesPerPage(langconfig.getInt(
- "HelpLinesPerPage", 7));
+ HelpEntry.setLinesPerPage(langconfig.getInt("HelpLinesPerPage", 7));
+ InformationPager.setLinesPerPage(langconfig.getInt("HelpLinesPerPage", 7));
language = Language.parseText(langconfig, "Language");
} else {
System.out.println("[Residence] 语言文件不存在...");
}
} catch (Exception ex) {
- System.out.println("[Residence] 语言文件载入失败: "
- + cmanager.getLanguage() + ".yml, 错误: "
+ System.out.println("[Residence] 语言文件载入失败: " + cmanager.getLanguage() + ".yml, 错误: "
+ ex.getMessage());
- Logger.getLogger(Residence.class.getName()).log(Level.SEVERE,
- null, ex);
+ Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
helppages = new HelpEntry("");
language = new Language();
}
@@ -266,8 +487,8 @@ public class Residence extends JavaPlugin {
.getPermissionsPlugin();
if (vault.economyOK()) {
economy = vault;
- System.out.println("[Residence] 发现 Vault 使用经济系统: "
- + vault.getEconomyName());
+ System.out
+ .println("[Residence] 发现 Vault 使用经济系统: " + vault.getEconomyName());
}
}
if (economy == null) {
@@ -299,19 +520,16 @@ public class Residence extends JavaPlugin {
pmanager = new PermissionListManager();
}
if (firstenable) {
- if (!this.isEnabled()) {
+ if (!this.isEnabled())
return;
- }
FlagPermissions.initValidFlags();
Plugin p = server.getPluginManager().getPlugin("WorldEdit");
if (p != null) {
smanager = new WorldEditSelectionManager(server);
- Logger.getLogger("Minecraft").log(Level.INFO,
- "[Residence] 发现 WorldEdit");
+ Logger.getLogger("Minecraft").log(Level.INFO, "[Residence] 发现 WorldEdit");
} else {
smanager = new SelectionManager(server);
- Logger.getLogger("Minecraft").log(Level.INFO,
- "[Residence] WorldEdit 未找到!");
+ Logger.getLogger("Minecraft").log(Level.INFO, "[Residence] WorldEdit 未找到!");
}
blistener = new ResidenceBlockListener();
@@ -331,19 +549,17 @@ public class Residence extends JavaPlugin {
autosaveInt = 1;
}
autosaveInt = autosaveInt * 60 * 20;
- autosaveBukkitId = server.getScheduler().scheduleSyncRepeatingTask(
- this, autoSave, autosaveInt, autosaveInt);
- healBukkitId = server.getScheduler().scheduleSyncRepeatingTask(
- this, doHeals, 20, 20);
+ autosaveBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, autoSave,
+ autosaveInt, autosaveInt);
+ healBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, doHeals, 20, 20);
if (cmanager.useLeases()) {
int leaseInterval = cmanager.getLeaseCheckInterval();
if (leaseInterval < 1) {
leaseInterval = 1;
}
leaseInterval = leaseInterval * 60 * 20;
- leaseBukkitId = server.getScheduler()
- .scheduleSyncRepeatingTask(this, leaseExpire,
- leaseInterval, leaseInterval);
+ leaseBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, leaseExpire,
+ leaseInterval, leaseInterval);
}
if (cmanager.enabledRentSystem()) {
int rentint = cmanager.getRentCheckInterval();
@@ -351,197 +567,40 @@ public class Residence extends JavaPlugin {
rentint = 1;
}
rentint = rentint * 60 * 20;
- rentBukkitId = server.getScheduler().scheduleSyncRepeatingTask(
- this, rentExpire, rentint, rentint);
+ rentBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, rentExpire,
+ rentint, rentint);
}
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
if (Residence.getPermissionManager().isResidenceAdmin(player)) {
turnResAdminOn(player);
}
}
- try {
- Metrics metrics = new Metrics(this);
- metrics.start();
- } catch (IOException e) {
- // Failed to submit the stats :-(
- }
- Logger.getLogger("Minecraft")
- .log(Level.INFO,
- "[Residence] 载入完成! 版本: "
- + this.getDescription().getVersion()
- + " 重制 by 喵♂呜");
+ Logger.getLogger("Minecraft").log(Level.INFO,
+ "[Residence] 载入完成! 版本: " + this.getDescription().getVersion() + " 重制 by 喵♂呜");
initsuccess = true;
} catch (Exception ex) {
initsuccess = false;
getServer().getPluginManager().disablePlugin(this);
System.out.println("[Residence] - 初始化失败! 卸载插件! 错误:");
- Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null,
- ex);
+ Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
}
}
- public void consoleMessage(String message) {
- ConsoleCommandSender console = Bukkit.getConsoleSender();
- console.sendMessage("[Residence] " + message);
+ @Override
+ public void reloadConfig() {
+ Config.load(this);
}
- public static boolean validName(String name) {
- if (name.contains(":") || name.contains(".")) {
- return false;
- }
- if (cmanager.getResidenceNameRegex() == null) {
- return true;
- } else {
- String namecheck = name.replaceAll(
- cmanager.getResidenceNameRegex(), "");
- if (!name.equals(namecheck)) {
- return false;
- }
- return true;
- }
+ public void reloadPlugin() {
+ this.onDisable();
+ this.reloadConfig();
+ this.onEnable();
+
}
- public static File getDataLocation() {
- return dataFolder;
- }
-
- public static ResidenceManager getResidenceManager() {
- return rmanager;
- }
-
- public static SelectionManager getSelectionManager() {
- return smanager;
- }
-
- public static PermissionManager getPermissionManager() {
- return gmanager;
- }
-
- public static EconomyInterface getEconomyManager() {
- return economy;
- }
-
- public static Server getServ() {
- return server;
- }
-
- public static LeaseManager getLeaseManager() {
- return leasemanager;
- }
-
- public static ConfigManager getConfigManager() {
- return cmanager;
- }
-
- public static TransactionManager getTransactionManager() {
- return tmanager;
- }
-
- public static WorldItemManager getItemManager() {
- return imanager;
- }
-
- public static WorldFlagManager getWorldFlags() {
- return wmanager;
- }
-
- public static RentManager getRentManager() {
- return rentmanager;
- }
-
- public static ResidencePlayerListener getPlayerListener() {
- return plistener;
- }
-
- public static ResidenceBlockListener getBlockListener() {
- return blistener;
- }
-
- public static ResidenceEntityListener getEntityListener() {
- return elistener;
- }
-
- public static ChatManager getChatManager() {
- return chatmanager;
- }
-
- public static Language getLanguage() {
- if (language == null) {
- language = new Language();
- }
- return language;
- }
-
- public static FlagPermissions getPermsByLoc(Location loc) {
- ClaimedResidence res = rmanager.getByLoc(loc);
- if (res != null) {
- return res.getPermissions();
- } else {
- return wmanager.getPerms(loc.getWorld().getName());
- }
- }
-
- public static FlagPermissions getPermsByLocForPlayer(Location loc,
- Player player) {
- ClaimedResidence res = rmanager.getByLoc(loc);
- if (res != null) {
- return res.getPermissions();
- } else {
- if (player != null)
- return wmanager.getPerms(player);
- else
- return wmanager.getPerms(loc.getWorld().getName());
- }
- }
-
- private void loadEssentialsEconomy() {
- Plugin p = getServer().getPluginManager().getPlugin("Essentials");
- if (p != null) {
- economy = new EssentialsEcoAdapter((Essentials) p);
- Logger.getLogger("Minecraft").log(Level.INFO,
- "[Residence] 成功关联Essentials Economy!");
- } else {
- Logger.getLogger("Minecraft").log(Level.INFO,
- "[Residence] Essentials Economy 未找到!");
- }
- }
-
- private void loadVaultEconomy() {
- Plugin p = getServer().getPluginManager().getPlugin("Vault");
- if (p != null) {
- ResidenceVaultAdapter vault = new ResidenceVaultAdapter(getServer());
- if (vault.economyOK()) {
- Logger.getLogger("Minecraft").log(
- Level.INFO,
- "[Residence] 发现 Vault 使用经济系统: "
- + vault.getEconomyName());
- economy = vault;
- } else {
- Logger.getLogger("Minecraft").log(Level.INFO,
- "[Residence] 发现 Vault, 但是 Vault 未找到经济系统...");
- }
- } else {
- Logger.getLogger("Minecraft").log(Level.INFO,
- "[Residence] Vault 未找到!");
- }
- }
-
- public static boolean isResAdminOn(Player player) {
- if (resadminToggle.contains(player.getName())) {
- return true;
- }
- return false;
- }
-
- public static void turnResAdminOn(Player player) {
- resadminToggle.add(player.getName());
- }
-
- public static boolean isResAdminOn(String player) {
- if (resadminToggle.contains(player.toLowerCase())) {
- return true;
- }
- return false;
+ @Override
+ public void saveConfig() {
+ Config.save();
}
private void saveYml() throws IOException {
@@ -551,22 +610,20 @@ public class Residence extends JavaPlugin {
YMLSaveHelper yml;
Map save = rmanager.save();
for (Entry entry : save.entrySet()) {
- File ymlSaveLoc = new File(worldFolder, "res_" + entry.getKey()
- + ".yml");
- File tmpFile = new File(worldFolder, "tmp_res_" + entry.getKey()
- + ".yml");
+ File ymlSaveLoc = new File(worldFolder, "res_" + entry.getKey() + ".yml");
+ File tmpFile = new File(worldFolder, "tmp_res_" + entry.getKey() + ".yml");
yml = new YMLSaveHelper(tmpFile);
yml.getRoot().put("Version", saveVersion);
World world = server.getWorld(entry.getKey());
- if (world != null)
+ if (world != null) {
yml.getRoot().put("Seed", world.getSeed());
- yml.getRoot().put("Residences", (Map, ?>) entry.getValue());
+ }
+ yml.getRoot().put("Residences", entry.getValue());
yml.save();
if (ymlSaveLoc.isFile()) {
File backupFolder = new File(worldFolder, "Backup");
backupFolder.mkdirs();
- File backupFile = new File(backupFolder, "res_"
- + entry.getKey() + ".yml");
+ File backupFile = new File(backupFolder, "res_" + entry.getKey() + ".yml");
if (backupFile.isFile()) {
backupFile.delete();
}
@@ -653,119 +710,19 @@ public class Residence extends JavaPlugin {
}
}
- @SuppressWarnings("unchecked")
- protected boolean loadYml() throws Exception {
- File saveFolder = new File(dataFolder, "Save");
- try {
- File worldFolder = new File(saveFolder, "Worlds");
- if (!saveFolder.isDirectory()) {
- this.getLogger().warning("保存目录不存在...");
- this.getLogger().warning("请重新启动服务器");
- return true;
- }
- YMLSaveHelper yml;
- File loadFile;
- HashMap worlds = new HashMap();
- for (World world : server.getWorlds()) {
- loadFile = new File(worldFolder, "res_" + world.getName()
- + ".yml");
- if (loadFile.isFile()) {
- yml = new YMLSaveHelper(loadFile);
- yml.load();
- worlds.put(world.getName(), yml.getRoot().get("Residences"));
- }
- }
- rmanager = ResidenceManager.load(worlds);
- loadFile = new File(saveFolder, "forsale.yml");
- if (loadFile.isFile()) {
- yml = new YMLSaveHelper(loadFile);
- yml.load();
- tmanager = TransactionManager.load((Map, ?>) yml.getRoot()
- .get("Economy"), gmanager, rmanager);
- }
- loadFile = new File(saveFolder, "leases.yml");
- if (loadFile.isFile()) {
- yml = new YMLSaveHelper(loadFile);
- yml.load();
- leasemanager = LeaseManager.load((Map) yml
- .getRoot().get("Leases"), rmanager);
- }
- loadFile = new File(saveFolder, "permlists.yml");
- if (loadFile.isFile()) {
- yml = new YMLSaveHelper(loadFile);
- yml.load();
- pmanager = PermissionListManager.load((Map) yml
- .getRoot().get("PermissionLists"));
- }
- loadFile = new File(saveFolder, "rent.yml");
- if (loadFile.isFile()) {
- yml = new YMLSaveHelper(loadFile);
- yml.load();
- rentmanager = RentManager.load((Map) yml
- .getRoot().get("RentSystem"));
- }
- // System.out.print("[Residence] Loaded...");
- return true;
- } catch (Exception ex) {
- Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null,
- ex);
- throw ex;
- }
- }
-
private void writeDefaultConfigFromJar() {
- if (this.writeDefaultFileFromJar(new File(this.getDataFolder(),
- "config.yml"), "config.yml", true)) {
+ if (this.writeDefaultFileFromJar(new File(this.getDataFolder(), "config.yml"),
+ "config.yml", true)) {
System.out.println("[Residence] 保存默认配置文件...");
}
}
- private void writeDefaultLanguageFile(String lang) {
- File outFile = new File(new File(this.getDataFolder(), "Language"),
- lang + ".yml");
- outFile.getParentFile().mkdirs();
- if (this.writeDefaultFileFromJar(outFile, "languagefiles/" + lang
- + ".yml", true)) {
- System.out.println("[Residence] 保存默认 " + lang + " 语言文件...");
- }
- }
-
- private boolean checkNewLanguageVersion(String lang) throws IOException,
- FileNotFoundException, InvalidConfigurationException {
- File outFile = new File(new File(this.getDataFolder(), "Language"),
- lang + ".yml");
- File checkFile = new File(new File(this.getDataFolder(), "Language"),
- "temp-" + lang + ".yml");
- if (outFile.isFile()) {
- FileConfig testconfig = new FileConfig();
- testconfig.load(outFile);
- int oldversion = testconfig.getInt("FieldsVersion", 0);
- if (!this.writeDefaultFileFromJar(checkFile, "languagefiles/"
- + lang + ".yml", false)) {
- return false;
- }
- FileConfig testconfig2 = new FileConfig();
- testconfig2.load(checkFile);
- int newversion = testconfig2.getInt("FieldsVersion", oldversion);
- if (checkFile.isFile()) {
- checkFile.delete();
- }
- if (newversion > oldversion) {
- return true;
- }
- return false;
- }
- return true;
- }
-
@SuppressWarnings("resource")
- private boolean writeDefaultFileFromJar(File writeName, String jarPath,
- boolean backupOld) {
+ private boolean writeDefaultFileFromJar(File writeName, String jarPath, boolean backupOld) {
try {
- File fileBackup = new File(this.getDataFolder(), "backup-"
- + writeName);
- File jarloc = new File(getClass().getProtectionDomain()
- .getCodeSource().getLocation().toURI()).getCanonicalFile();
+ File fileBackup = new File(this.getDataFolder(), "backup-" + writeName);
+ File jarloc = new File(getClass().getProtectionDomain().getCodeSource().getLocation()
+ .toURI()).getCanonicalFile();
if (jarloc.isFile()) {
JarFile jar = new JarFile(jarloc);
JarEntry entry = jar.getJarEntry(jarPath);
@@ -801,4 +758,12 @@ public class Residence extends JavaPlugin {
return false;
}
}
+
+ private void writeDefaultLanguageFile(String lang) {
+ File outFile = new File(new File(this.getDataFolder(), "Language"), lang + ".yml");
+ outFile.getParentFile().mkdirs();
+ if (this.writeDefaultFileFromJar(outFile, "languagefiles/" + lang + ".yml", true)) {
+ System.out.println("[Residence] 保存默认 " + lang + " 语言文件...");
+ }
+ }
}
diff --git a/src/com/bekvon/bukkit/residence/ResidenceCommandListener.java b/src/com/bekvon/bukkit/residence/ResidenceCommandListener.java
index 5ec614b..9996c8b 100644
--- a/src/com/bekvon/bukkit/residence/ResidenceCommandListener.java
+++ b/src/com/bekvon/bukkit/residence/ResidenceCommandListener.java
@@ -1,1800 +1,1751 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-package com.bekvon.bukkit.residence;
-
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandSender;
-import org.bukkit.command.ConsoleCommandSender;
-import org.bukkit.entity.Player;
-
-import com.bekvon.bukkit.residence.chat.ChatChannel;
-import com.bekvon.bukkit.residence.event.ResidenceCommandEvent;
-import com.bekvon.bukkit.residence.permissions.PermissionGroup;
-import com.bekvon.bukkit.residence.protection.ClaimedResidence;
-import com.bekvon.bukkit.residence.protection.CuboidArea;
-import com.bekvon.bukkit.residence.protection.FlagPermissions;
-import com.sk89q.worldedit.bukkit.WorldEditPlugin;
-
-public class ResidenceCommandListener extends Residence {
-
- 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);
- }
-
- @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("?")) {
- return commandHelp(args, resadmin, sender);
- }
- int page = 1;
- try {
- if (args.length > 0) {
- page = Integer.parseInt(args[args.length - 1]);
- }
- } catch (Exception ex) {
- }
- Player player = null;
- PermissionGroup group = null;
- String pname = null;
- if (sender instanceof Player) {
- player = (Player) sender;
- group = Residence.getPermissionManager().getGroup(player);
- pname = player.getName();
- } else {
- resadmin = true;
- }
- if (cmanager.allowAdminsOnly()) {
- if (!resadmin) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("AdminOnly"));
- return true;
- }
- }
- if (args.length == 0) {
- return false;
- }
- if (args.length == 0) {
- args = new String[1];
- args[0] = "?";
- }
- String cmd = args[0].toLowerCase();
- if (cmd.equals("remove") || cmd.equals("delete")) {
- return commandResRemove(args, resadmin, sender, page);
- }
- if (cmd.equals("confirm")) {
- return commandResConfirm(args, resadmin, sender, page);
- }
- if (cmd.equals("version")) {
- sender.sendMessage(ChatColor.GRAY
- + "------------------------------------");
- sender.sendMessage(ChatColor.RED + "This server running "
- + ChatColor.GOLD + "Residence" + ChatColor.RED
- + " version: " + ChatColor.BLUE
- + this.getDescription().getVersion());
- sender.sendMessage(ChatColor.GREEN + "Created by: "
- + ChatColor.YELLOW + "bekvon");
- sender.sendMessage(ChatColor.GREEN + "Updated to 1.8 by: "
- + ChatColor.YELLOW + "DartCZ");
- sender.sendMessage(ChatColor.RED + "Updated to 2.7.0.0 by: "
- + ChatColor.YELLOW + "喵♂呜");
- String names = null;
- List authlist = this.getDescription().getAuthors();
- for (String auth : authlist) {
- if (names == null)
- names = auth;
- else
- names = names + ", " + auth;
- }
- sender.sendMessage(ChatColor.GREEN + "Authors: " + ChatColor.YELLOW
- + names);
- sender.sendMessage(ChatColor.DARK_AQUA
- + "For a command list, and help, see the wiki:");
- sender.sendMessage(ChatColor.GREEN
- + "http://residencebukkitmod.wikispaces.com/");
- sender.sendMessage(ChatColor.AQUA
- + "Visit the Spigot Resource page at:");
- sender.sendMessage(ChatColor.BLUE
- + "http://www.spigotmc.org/resources/residence-reloaded-1-8.2697/");
- sender.sendMessage(ChatColor.GRAY
- + "------------------------------------");
- return true;
- }
- if (cmd.equals("setowner") && args.length == 3) {
- if (!resadmin) {
- sender.sendMessage(ChatColor.RED
- + language.getPhrase("NoPermission"));
- return true;
- }
- ClaimedResidence area = rmanager.getByName(args[1]);
- if (area != null) {
- area.getPermissions().setOwner(args[2], true);
- 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 {
- sender.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- }
- if (player == null) {
- return true;
- }
- 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")));
- 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")));
- return true;
- }
- }
- 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")) {
- return commandResCreate(args, resadmin, player, page);
- }
- if (cmd.equals("subzone") || cmd.equals("sz")) {
- return commandResSubzone(args, resadmin, player, page);
- }
- if (cmd.equals("sublist")) {
- return commandResSublist(args, resadmin, player, page);
- }
- if (cmd.equals("removeall")) {
- if (args.length != 2) {
- 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.RED
- + language.getPhrase("NoPermission"));
- }
- return true;
- }
- if (cmd.equals("compass")) {
- return commandResCompass(args, resadmin, player, page);
- }
- if (cmd.equals("area")) {
- return commandResArea(args, resadmin, player, page);
- }
- if (cmd.equals("lists")) {
- return commandResList(args, resadmin, player, page);
- }
- if (cmd.equals("default")) {
- if (args.length == 2) {
- ClaimedResidence res = rmanager.getByName(args[1]);
- res.getPermissions().applyDefaultFlags(player, resadmin);
- return true;
- }
- return false;
- }
- if (cmd.equals("limits")) {
- if (args.length == 1) {
- gmanager.getGroup(player).printLimits(player);
- return true;
- }
- return false;
- }
- if (cmd.equals("info")) {
- if (args.length == 1) {
- String area = rmanager.getNameByLoc(player.getLocation());
- if (area != null) {
- rmanager.printAreaInfo(area, player);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- } else if (args.length == 2) {
- rmanager.printAreaInfo(args[1], player);
- return true;
- }
- return false;
- }
- if (cmd.equals("check")) {
- if (args.length == 3 || 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")));
- }
- return true;
- }
- return false;
- }
- if (cmd.equals("current")) {
- if (args.length != 1) {
- return false;
- }
- String res = rmanager.getNameByLoc(player.getLocation());
- if (res == null) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("NotInResidence"));
- } else {
- player.sendMessage(ChatColor.GREEN
- + language.getPhrase("InResidence", ChatColor.YELLOW
- + res + ChatColor.GREEN));
- }
- return true;
- }
- if (cmd.equals("set")) {
- return commandResSet(args, resadmin, player, page);
- }
- if (cmd.equals("pset")) {
- return commandResPset(args, resadmin, player, page);
- }
- if (cmd.equals("gset")) {
- return commandResGset(args, resadmin, player, page);
- }
- if (cmd.equals("lset")) {
- return commandResLset(args, resadmin, player, page);
- }
- if (cmd.equals("list")) {
- if (args.length == 1) {
- rmanager.listResidences(player);
- return true;
- } else if (args.length == 2) {
- try {
- Integer.parseInt(args[1]);
- rmanager.listResidences(player, page);
- } catch (Exception ex) {
- rmanager.listResidences(player, args[1]);
- }
- return true;
- } else if (args.length == 3) {
- rmanager.listResidences(player, args[1], page);
- return true;
- }
- return false;
- }
- if (cmd.equals("listhidden")) {
- if (!resadmin) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("NoPermission"));
- return true;
- }
- if (args.length == 1) {
- rmanager.listResidences(player, 1, true);
- return true;
- } else if (args.length == 2) {
- try {
- Integer.parseInt(args[1]);
- rmanager.listResidences(player, page, true);
- } catch (Exception ex) {
- rmanager.listResidences(player, args[1], 1, true);
- }
- return true;
- } else if (args.length == 3) {
- rmanager.listResidences(player, args[1], page, true);
- return true;
- }
- return false;
- }
- if (cmd.equals("rename")) {
- if (args.length == 3) {
- rmanager.renameResidence(player, args[1], args[2], resadmin);
- return true;
- }
- return false;
- }
- if (cmd.equals("renamearea")) {
- if (args.length == 4) {
- ClaimedResidence res = rmanager.getByName(args[1]);
- if (res == null) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- return true;
- }
- res.renameArea(player, args[2], args[3], resadmin);
- return true;
- }
- return false;
- }
- if (cmd.equals("unstuck")) {
- if (args.length != 1) {
- return false;
- }
- group = gmanager.getGroup(player);
- if (!group.hasUnstuckAccess()) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("NoPermission"));
- return true;
- }
- ClaimedResidence res = rmanager.getByLoc(player.getLocation());
- if (res == null) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("NotInResidence"));
- } else {
- player.sendMessage(ChatColor.YELLOW
- + language.getPhrase("Moved") + "...");
- player.teleport(res.getOutsideFreeLoc(player.getLocation()));
- }
- return true;
- }
- if (cmd.equals("kick")) {
- if (args.length != 2) {
- return false;
- }
- Player targetplayer = Bukkit.getPlayer(args[1]);
- if (targetplayer == null) {
-
- }
- 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.getPlayersInResidence().contains(targetplayer)) {
- targetplayer.teleport(res.getOutsideFreeLoc(player
- .getLocation()));
- targetplayer.sendMessage(ChatColor.RED
- + language.getPhrase("Kicked") + "!");
- }
- }
-
- }
- if (cmd.equals("mirror")) {
- if (args.length != 3) {
- return false;
- }
- rmanager.mirrorPerms(player, args[2], args[1], resadmin);
- return true;
- }
- if (cmd.equals("listall")) {
- if (args.length == 1) {
- rmanager.listAllResidences(player, 1);
- } else if (args.length == 2) {
- try {
- rmanager.listAllResidences(player, page);
- } catch (Exception ex) {
- }
- } else {
- return false;
- }
- return true;
- }
- if (cmd.equals("listallhidden")) {
- if (!resadmin) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("NoPermission"));
- return true;
- }
- if (args.length == 1) {
- rmanager.listAllResidences(player, 1, true);
- } else if (args.length == 2) {
- try {
- rmanager.listAllResidences(player, page, true);
- } catch (Exception ex) {
- }
- } else {
- return false;
- }
- return true;
- }
- if (cmd.equals("material")) {
- 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));
- } catch (Exception ex) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidMaterial"));
- }
- return true;
- }
- if (cmd.equals("tpset")) {
- ClaimedResidence res = rmanager.getByLoc(player.getLocation());
- if (res != null) {
- res.setTpLoc(player, resadmin);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- }
- if (cmd.equals("tp")) {
- if (args.length != 2) {
- return false;
- }
- ClaimedResidence res = rmanager.getByName(args[1]);
- if (res == null) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- return true;
- }
- res.tpToResidence(player, player, resadmin);
- return true;
- }
- if (cmd.equals("lease")) {
- return commandResLease(args, resadmin, player, page);
- }
- if (cmd.equals("bank")) {
- return commandResBank(args, resadmin, player, page);
- }
- if (cmd.equals("market")) {
- return commandResMarket(args, resadmin, player, page);
- }
- if (cmd.equals("message")) {
- return commandResMessage(args, resadmin, player, page);
- }
- if (cmd.equals("give") && args.length == 3) {
- rmanager.giveResidence(player, args[2], args[1], resadmin);
- return true;
- }
- if (cmd.equals("server")) {
- if (!resadmin) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("NoPermission"));
- return true;
- }
- if (args.length == 2) {
- ClaimedResidence res = rmanager.getByName(args[1]);
- if (res == null) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- 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));
- return true;
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- return true;
- }
- }
- if (cmd.equals("clearflags")) {
- if (!resadmin) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("NoPermission"));
- return true;
- }
- ClaimedResidence area = rmanager.getByName(args[1]);
- if (area != null) {
- area.getPermissions().clearFlags();
- player.sendMessage(ChatColor.GREEN
- + language.getPhrase("FlagsCleared"));
- } 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()));
- return true;
- }
- return false;
- }
-
- private boolean commandHelp(String[] args, boolean resadmin,
- CommandSender sender) {
- if (helppages != null) {
- String helppath = "res";
- for (int i = 0; i < args.length; i++) {
- if (args[i].equalsIgnoreCase("?")) {
- break;
- }
- helppath = helppath + "." + args[i];
- }
- int page = 1;
- 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;
- }
- }
- return false;
- }
-
- private boolean commandResSelect(String[] args, boolean resadmin,
- Player player, int page) {
- PermissionGroup group = Residence.getPermissionManager().getGroup(
- player);
- if (!group.selectCommandAccess() && !resadmin) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("SelectDiabled"));
- return true;
- }
- if (!group.canCreateResidences() && group.getMaxSubzoneDepth() <= 0
- && !resadmin) {
- 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) {
- 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())) {
- try {
- smanager.showSelectionInfo(player);
- return true;
- } catch (Exception ex) {
- Logger.getLogger(Residence.class.getName()).log(
- Level.SEVERE, null, ex);
- return true;
- }
- } else if (smanager.worldEdit(player)) {
- try {
- smanager.showSelectionInfo(player);
- return true;
- } catch (Exception ex) {
- Logger.getLogger(Residence.class.getName()).log(
- Level.SEVERE, null, ex);
- return true;
- }
- }
- } else if (args[1].equals("vert")) {
- smanager.vert(player, resadmin);
- return true;
- } else if (args[1].equals("sky")) {
- smanager.sky(player, resadmin);
- return true;
- } else if (args[1].equals("bedrock")) {
- smanager.bedrock(player, resadmin);
- 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() + ")");
- }
- 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() + ")");
- }
- 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"));
- }
- return true;
- }
- } else if (args.length == 3) {
- if (args[1].equals("expand")) {
- int amount;
- try {
- amount = Integer.parseInt(args[2]);
- } catch (Exception ex) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidAmount"));
- return true;
- }
- smanager.modify(player, false, amount);
- return true;
- } else if (args[1].equals("shift")) {
- int amount;
- try {
- amount = Integer.parseInt(args[2]);
- } catch (Exception ex) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidAmount"));
- return true;
- }
- 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) {
- res = rmanager.getByName(args[2]);
- } else {
- res = rmanager.getByLoc(player.getLocation());
- }
- if (res == null) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- return true;
- }
- resName = res.getName();
- CuboidArea area = null;
- if (args.length > 3) {
- area = res.getArea(args[3]);
- areaName = args[3];
- } else {
- areaName = res.getAreaIDbyLoc(player.getLocation());
- area = res.getArea(areaName);
- }
- 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.RED
- + language.getPhrase("AreaNonExist"));
- }
- return true;
- } else {
- try {
- 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 commandResCreate(String[] args, boolean resadmin,
- Player player, int page) {
- 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) {
- smanager.worldEdit(player);
- }
- }
- if (smanager.hasPlacedBoth(player.getName())) {
- rmanager.addResidence(player, args[1],
- smanager.getPlayerLoc1(player.getName()),
- smanager.getPlayerLoc2(player.getName()), resadmin);
- return true;
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("SelectPoints"));
- return true;
- }
- }
-
- private boolean commandResSubzone(String[] args, boolean resadmin,
- Player player, int page) {
- if (args.length != 2 && args.length != 3) {
- return false;
- }
- String zname;
- String parent;
- if (args.length == 2) {
- parent = rmanager.getNameByLoc(player.getLocation());
- zname = args[1];
- } else {
- parent = args[1];
- zname = args[2];
- }
- 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(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);
- return true;
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("SelectPoints"));
- return true;
- }
- }
-
- private boolean commandResArea(String[] args, boolean resadmin,
- Player player, int page) {
- if (args.length == 4) {
- if (args[1].equals("remove")) {
- ClaimedResidence res = rmanager.getByName(args[2]);
- if (res != null) {
- res.removeArea(player, args[3], resadmin);
- } 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) {
- 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 {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- } 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) {
- 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 {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- } 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) {
- res.printAreaList(player, page);
- } 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) {
- res.printAdvancedAreaList(player, page);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- }
- return false;
- }
-
- private boolean commandResRemove(String[] args, boolean resadmin,
- CommandSender sender, int page) {
- Player player = null;
- if (sender instanceof Player) {
- player = (Player) sender;
- if (args.length == 1) {
- String area = rmanager.getNameByLoc(player.getLocation());
- if (area != null) {
- ClaimedResidence res = rmanager.getByName(area);
- 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));
- deleteConfirm.put(player.getName(), area);
- } 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));
- deleteConfirm.put(player.getName(), area);
- } else {
- rmanager.removeResidence(player, area, resadmin);
- }
- return true;
- }
- }
- return false;
- }
- }
- if (args.length != 2) {
- return false;
- }
- if (player != null) {
- 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]);
- if (res.getParent() != null) {
- String[] split = args[1].split("\\.");
- 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));
- }
- deleteConfirm.put(player.getName(), args[1]);
- } 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];
- }
- }
- 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;
- }
-
- private boolean commandResConfirm(String[] args, boolean resadmin,
- CommandSender sender, int page) {
- Player player = null;
- String name = "Console";
- if (sender instanceof Player) {
- player = (Player) sender;
- name = player.getName();
- }
- if (args.length == 1) {
- String area = deleteConfirm.get(name);
- if (area == null) {
- sender.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- } 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));
- }
- }
- }
- 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 {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- } else if (args.length == 4) {
- ClaimedResidence area = rmanager.getByName(args[1]);
- if (area != null) {
- area.getPermissions().setFlag(player, args[2], args[3],
- resadmin);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- }
- return false;
- }
-
- 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) {
- area.getPermissions().removeAllPlayerFlags(player, args[1],
- resadmin);
- } 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) {
- area.getPermissions().removeAllPlayerFlags(player, args[2],
- resadmin);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- } else if (args.length == 4) {
- ClaimedResidence area = rmanager.getByLoc(player.getLocation());
- if (area != null) {
- area.getPermissions().setPlayerFlag(player, args[1], args[2],
- args[3], resadmin);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- } else if (args.length == 5) {
- ClaimedResidence area = rmanager.getByName(args[1]);
- if (area != null) {
- area.getPermissions().setPlayerFlag(player, args[2], args[3],
- args[4], resadmin);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- }
- return false;
- }
-
- private boolean commandResGset(String[] args, boolean resadmin,
- Player player, int page) {
- if (args.length == 4) {
- ClaimedResidence area = rmanager.getByLoc(player.getLocation());
- if (area != null) {
- area.getPermissions().setGroupFlag(player, args[1], args[2],
- args[3], resadmin);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidArea"));
- }
- return true;
- } else if (args.length == 5) {
- ClaimedResidence area = rmanager.getByName(args[1]);
- if (area != null) {
- area.getPermissions().setGroupFlag(player, args[2], args[3],
- args[4], resadmin);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- }
- return false;
- }
-
- private boolean commandResLset(String[] args, boolean resadmin,
- Player player, int page) {
- ClaimedResidence res = null;
- Material mat = null;
- String listtype = null;
- boolean showinfo = false;
- if (args.length == 2 && args[1].equals("info")) {
- res = rmanager.getByLoc(player.getLocation());
- showinfo = true;
- } else if (args.length == 3 && args[2].equals("info")) {
- res = rmanager.getByName(args[1]);
- showinfo = true;
- }
- if (showinfo) {
- if (res == null) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- return true;
- }
- player.sendMessage(ChatColor.RED + "Blacklist:");
- res.getItemBlacklist().printList(player);
- player.sendMessage(ChatColor.GREEN + "Ignorelist:");
- res.getItemIgnoreList().printList(player);
- return true;
- } else if (args.length == 4) {
- res = rmanager.getByName(args[1]);
- listtype = args[2];
- try {
- mat = Material.valueOf(args[3].toUpperCase());
- } catch (Exception ex) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidMaterial"));
- return true;
- }
- } else if (args.length == 3) {
- res = rmanager.getByLoc(player.getLocation());
- listtype = args[1];
- try {
- mat = Material.valueOf(args[2].toUpperCase());
- } catch (Exception ex) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidMaterial"));
- return true;
- }
- }
- if (res != null) {
- if (listtype.equalsIgnoreCase("blacklist")) {
- res.getItemBlacklist().playerListChange(player, mat, resadmin);
- } else if (listtype.equalsIgnoreCase("ignorelist")) {
- res.getItemIgnoreList().playerListChange(player, mat, resadmin);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidList"));
- }
- return true;
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- return true;
- }
- }
-
- 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()));
- if (res == null) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("NotInResidence"));
- return true;
- }
- int amount = 0;
- try {
- amount = Integer.parseInt(args[2]);
- } catch (Exception ex) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidAmount"));
- return true;
- }
- if (args[1].equals("deposit")) {
- res.getBank().deposit(player, amount, resadmin);
- } else if (args[1].equals("withdraw")) {
- res.getBank().withdraw(player, amount, resadmin);
- } else {
- return false;
- }
- return true;
- }
-
- 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) {
- leasemanager.renewArea(args[2], player);
- } else {
- leasemanager
- .renewArea(
- rmanager.getNameByLoc(player.getLocation()),
- player);
- }
- return true;
- } 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.RED
- + language.getPhrase("LeaseNotExpire"));
- }
- return true;
- } else {
- String area = rmanager.getNameByLoc(player.getLocation());
- ClaimedResidence res = rmanager.getByName(area);
- if (area == null || res == null) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidArea"));
- return true;
- }
- 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.RED
- + language.getPhrase("LeaseNotExpire"));
- }
- return true;
- }
- }
- } else if (args.length == 4) {
- if (args[1].equals("set")) {
- if (!resadmin) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("NoPermission"));
- return true;
- }
- if (args[3].equals("infinite")) {
- if (leasemanager.leaseExpires(args[2])) {
- leasemanager.removeExpireTime(args[2]);
- player.sendMessage(ChatColor.GREEN
- + language.getPhrase("LeaseInfinite"));
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("LeaseNotExpire"));
- }
- return true;
- } else {
- int days;
- try {
- days = Integer.parseInt(args[3]);
- } catch (Exception ex) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidDays"));
- return true;
- }
- leasemanager.setExpireTime(player, args[2], days);
- return true;
- }
- }
- }
- return false;
- }
-
- private boolean commandResMarket(String[] args, boolean resadmin,
- Player player, int page) {
- if (args.length == 1) {
- return false;
- }
- String command = args[1].toLowerCase();
- if (command.equals("list")) {
- return commandResMarketList(args, resadmin, player, page);
- }
- if (command.equals("autorenew")) {
- return commandResMarketAutorenew(args, resadmin, player, page);
- }
- if (command.equals("rentable")) {
- return commandResMarketRentable(args, resadmin, player, page);
- }
- if (command.equals("rent")) {
- return commandResMarketRent(args, resadmin, player, page);
- }
- if (command.equals("release")) {
- if (args.length != 3) {
- return false;
- }
- if (rentmanager.isRented(args[2])) {
- rentmanager.removeFromForRent(player, args[2], resadmin);
- } 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)) {
- rentmanager.printRentInfo(player, areaname);
- }
- } else if (args.length == 3) {
- tmanager.viewSaleInfo(args[2], player);
- if (cmanager.enabledRentSystem()
- && rentmanager.isForRent(args[2])) {
- rentmanager.printRentInfo(player, args[2]);
- }
- } else {
- return false;
- }
- return true;
- }
- if (command.equals("buy")) {
- if (args.length != 3) {
- return false;
- }
- tmanager.buyPlot(args[2], player, resadmin);
- return true;
- }
- if (command.equals("unsell")) {
- if (args.length != 3) {
- return false;
- }
- tmanager.removeFromSale(player, args[2], resadmin);
- return true;
- }
- if (command.equals("sell")) {
- if (args.length != 4) {
- return false;
- }
- int amount;
- try {
- amount = Integer.parseInt(args[3]);
- } catch (Exception ex) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidAmount"));
- return true;
- }
- tmanager.putForSale(args[2], player, amount, resadmin);
- return true;
- }
- return false;
- }
-
- private boolean commandResMarketRent(String[] args, boolean resadmin,
- Player player, int page) {
- 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")) {
- repeat = true;
- } 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;
- }
-
- private boolean commandResMarketRentable(String[] args, boolean resadmin,
- Player player, int page) {
- if (args.length < 5 || args.length > 6) {
- return false;
- }
- if (!cmanager.enabledRentSystem()) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("RentDisabled"));
- return true;
- }
- int days;
- int cost;
- try {
- cost = Integer.parseInt(args[3]);
- } catch (Exception ex) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidCost"));
- return true;
- }
- try {
- days = Integer.parseInt(args[4]);
- } catch (Exception ex) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidDays"));
- return true;
- }
- boolean repeat = false;
- 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")) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidBoolean"));
- return true;
- }
- }
- rentmanager.setForRent(player, args[2], cost, days, repeat, resadmin);
- return true;
- }
-
- private boolean commandResMarketAutorenew(String[] args, boolean resadmin,
- Player player, int page) {
- if (!cmanager.enableEconomy()) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("MarketDisabled"));
- return true;
- }
- if (args.length != 4) {
- return false;
- }
- boolean value;
- if (args[3].equalsIgnoreCase("true") || args[3].equalsIgnoreCase("t")) {
- value = true;
- } else if (args[3].equalsIgnoreCase("false")
- || args[3].equalsIgnoreCase("f")) {
- value = false;
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidBoolean"));
- return true;
- }
- 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])) {
- rentmanager.setRentRepeatable(player, args[2], value, resadmin);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("RentReleaseInvalid", ChatColor.YELLOW
- + args[2] + ChatColor.RED));
- }
- return true;
- }
-
- private boolean commandResMarketList(String[] args, boolean resadmin,
- Player player, int page) {
- if (!cmanager.enableEconomy()) {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("MarketDisabled"));
- return true;
- }
- player.sendMessage(ChatColor.BLUE + "---"
- + language.getPhrase("MarketList") + "---");
- tmanager.printForSaleResidences(player);
- if (cmanager.enabledRentSystem()) {
- rentmanager.printRentableResidences(player);
- }
- return true;
- }
-
- private boolean commandResMessage(String[] args, boolean resadmin,
- Player player, int page) {
- ClaimedResidence res = null;
- int start = 0;
- boolean enter = false;
- if (args.length < 2) {
- return false;
- }
- if (args[1].equals("enter")) {
- enter = true;
- res = rmanager.getByLoc(player.getLocation());
- start = 2;
- } else if (args[1].equals("leave")) {
- res = rmanager.getByLoc(player.getLocation());
- start = 2;
- } else if (args[1].equals("remove")) {
- if (args.length > 2 && args[2].equals("enter")) {
- res = rmanager.getByLoc(player.getLocation());
- if (res != null) {
- res.setEnterLeaveMessage(player, null, true, resadmin);
- } 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) {
- res.setEnterLeaveMessage(player, null, false, resadmin);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- }
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidMessageType"));
- return true;
- } else if (args.length > 2 && args[2].equals("enter")) {
- enter = true;
- res = rmanager.getByName(args[1]);
- start = 3;
- } else if (args.length > 2 && args[2].equals("leave")) {
- res = rmanager.getByName(args[1]);
- start = 3;
- } else if (args.length > 2 && args[2].equals("remove")) {
- res = rmanager.getByName(args[1]);
- if (args.length != 4) {
- return false;
- }
- if (args[3].equals("enter")) {
- if (res != null) {
- res.setEnterLeaveMessage(player, null, true, resadmin);
- }
- return true;
- } else if (args[3].equals("leave")) {
- if (res != null) {
- res.setEnterLeaveMessage(player, null, false, resadmin);
- }
- return true;
- }
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidMessageType"));
- return true;
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidMessageType"));
- return true;
- }
- if (start == 0) {
- return false;
- }
- String message = "";
- for (int i = start; i < args.length; i++) {
- message = message + args[i] + " ";
- }
- if (res != null) {
- res.setEnterLeaveMessage(player, message, enter, resadmin);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- }
-
- 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) {
- res = rmanager.getByLoc(player.getLocation());
- } else {
- res = rmanager.getByName(args[1]);
- }
- if (res != null) {
- res.printSubzoneList(player, page);
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- }
- return false;
- }
-
- private boolean commandResCompass(String[] args, boolean resadmin,
- Player player, int page) {
- if (args.length != 2) {
- player.setCompassTarget(player.getWorld().getSpawnLocation());
- player.sendMessage(ChatColor.GREEN
- + language.getPhrase("CompassTargetReset"));
- return true;
- }
- if (rmanager.getByName(args[1]) != null) {
- 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);
- player.setCompassTarget(mid);
- player.sendMessage(ChatColor.GREEN
- + language.getPhrase("CompassTargetSet",
- ChatColor.YELLOW + args[1] + ChatColor.GREEN));
- }
- } else {
- player.sendMessage(ChatColor.RED
- + language.getPhrase("InvalidResidence"));
- }
- return true;
- }
-
- private boolean commandResList(String[] args, boolean resadmin,
- Player player, int page) {
- if (args.length == 2) {
- if (args[1].equals("list")) {
- pmanager.printLists(player);
- return true;
- }
- } else if (args.length == 3) {
- if (args[1].equals("view")) {
- pmanager.printList(player, args[2]);
- return true;
- } else if (args[1].equals("remove")) {
- pmanager.removeList(player, args[2]);
- return true;
- } else if (args[1].equals("add")) {
- pmanager.makeList(player, args[2]);
- return true;
- }
- } else if (args.length == 4) {
- if (args[1].equals("apply")) {
- pmanager.applyListToResidence(player, args[2], args[3],
- resadmin);
- return true;
- }
- } else if (args.length == 5) {
- if (args[1].equals("set")) {
- 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) {
- if (args[1].equals("gset")) {
- 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]));
- player.sendMessage(ChatColor.GREEN
- + language.getPhrase("FlagSet"));
- return true;
- }
- }
- return false;
- }
-}
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.bekvon.bukkit.residence;
+
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.ConsoleCommandSender;
+import org.bukkit.entity.Player;
+
+import com.bekvon.bukkit.residence.chat.ChatChannel;
+import com.bekvon.bukkit.residence.event.ResidenceCommandEvent;
+import com.bekvon.bukkit.residence.permissions.PermissionGroup;
+import com.bekvon.bukkit.residence.protection.ClaimedResidence;
+import com.bekvon.bukkit.residence.protection.CuboidArea;
+import com.bekvon.bukkit.residence.protection.FlagPermissions;
+import com.sk89q.worldedit.bukkit.WorldEditPlugin;
+
+public class ResidenceCommandListener extends Residence {
+
+ private boolean commandHelp(String[] args, boolean resadmin,
+ CommandSender sender) {
+ if (helppages != null) {
+ String helppath = "res";
+ for (String arg : args) {
+ if (arg.equalsIgnoreCase("?")) {
+ break;
+ }
+ helppath = helppath + "." + arg;
+ }
+ int page = 1;
+ 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;
+ }
+ }
+ return false;
+ }
+
+ @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("?"))
+ return commandHelp(args, resadmin, sender);
+ int page = 1;
+ try {
+ if (args.length > 0) {
+ page = Integer.parseInt(args[args.length - 1]);
+ }
+ } catch (Exception ex) {
+ }
+ Player player = null;
+ PermissionGroup group = null;
+ String pname = null;
+ if (sender instanceof Player) {
+ player = (Player) sender;
+ group = Residence.getPermissionManager().getGroup(player);
+ pname = player.getName();
+ } else {
+ resadmin = true;
+ }
+ if (cmanager.allowAdminsOnly()) {
+ if (!resadmin) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("AdminOnly"));
+ return true;
+ }
+ }
+ if (args.length == 0)
+ return false;
+ if (args.length == 0) {
+ args = new String[1];
+ args[0] = "?";
+ }
+ String cmd = args[0].toLowerCase();
+ if (cmd.equals("remove") || cmd.equals("delete"))
+ return commandResRemove(args, resadmin, sender, page);
+ if (cmd.equals("confirm"))
+ return commandResConfirm(args, resadmin, sender, page);
+ if (cmd.equals("version")) {
+ sender.sendMessage(ChatColor.GRAY
+ + "------------------------------------");
+ sender.sendMessage(ChatColor.RED + "This server running "
+ + ChatColor.GOLD + "Residence" + ChatColor.RED
+ + " version: " + ChatColor.BLUE
+ + this.getDescription().getVersion());
+ sender.sendMessage(ChatColor.GREEN + "Created by: "
+ + ChatColor.YELLOW + "bekvon");
+ sender.sendMessage(ChatColor.GREEN + "Updated to 1.8 by: "
+ + ChatColor.YELLOW + "DartCZ");
+ sender.sendMessage(ChatColor.RED + "Updated to 2.7.0.0 by: "
+ + ChatColor.YELLOW + "喵♂呜");
+ String names = null;
+ List authlist = this.getDescription().getAuthors();
+ for (String auth : authlist) {
+ if (names == null) {
+ names = auth;
+ } else {
+ names = names + ", " + auth;
+ }
+ }
+ sender.sendMessage(ChatColor.GREEN + "Authors: " + ChatColor.YELLOW
+ + names);
+ sender.sendMessage(ChatColor.DARK_AQUA
+ + "For a command list, and help, see the wiki:");
+ sender.sendMessage(ChatColor.GREEN
+ + "http://residencebukkitmod.wikispaces.com/");
+ sender.sendMessage(ChatColor.AQUA
+ + "Visit the Spigot Resource page at:");
+ sender.sendMessage(ChatColor.BLUE
+ + "http://www.spigotmc.org/resources/residence-reloaded-1-8.2697/");
+ sender.sendMessage(ChatColor.GRAY
+ + "------------------------------------");
+ return true;
+ }
+ if (cmd.equals("setowner") && args.length == 3) {
+ if (!resadmin) {
+ sender.sendMessage(ChatColor.RED
+ + language.getPhrase("NoPermission"));
+ return true;
+ }
+ ClaimedResidence area = rmanager.getByName(args[1]);
+ if (area != null) {
+ area.getPermissions().setOwner(args[2], true);
+ 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 {
+ sender.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ }
+ if (player == null)
+ return true;
+ 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")));
+ 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")));
+ return true;
+ }
+ }
+ 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"))
+ return commandResCreate(args, resadmin, player, page);
+ if (cmd.equals("subzone") || cmd.equals("sz"))
+ return commandResSubzone(args, resadmin, player, page);
+ if (cmd.equals("sublist"))
+ return commandResSublist(args, resadmin, player, page);
+ if (cmd.equals("removeall")) {
+ if (args.length != 2)
+ 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.RED
+ + language.getPhrase("NoPermission"));
+ }
+ return true;
+ }
+ if (cmd.equals("compass"))
+ return commandResCompass(args, resadmin, player, page);
+ if (cmd.equals("area"))
+ return commandResArea(args, resadmin, player, page);
+ if (cmd.equals("lists"))
+ return commandResList(args, resadmin, player, page);
+ if (cmd.equals("default")) {
+ if (args.length == 2) {
+ ClaimedResidence res = rmanager.getByName(args[1]);
+ res.getPermissions().applyDefaultFlags(player, resadmin);
+ return true;
+ }
+ return false;
+ }
+ if (cmd.equals("limits")) {
+ if (args.length == 1) {
+ gmanager.getGroup(player).printLimits(player);
+ return true;
+ }
+ return false;
+ }
+ if (cmd.equals("info")) {
+ if (args.length == 1) {
+ String area = rmanager.getNameByLoc(player.getLocation());
+ if (area != null) {
+ rmanager.printAreaInfo(area, player);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ } else if (args.length == 2) {
+ rmanager.printAreaInfo(args[1], player);
+ return true;
+ }
+ return false;
+ }
+ if (cmd.equals("check")) {
+ if (args.length == 3 || 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")));
+ }
+ return true;
+ }
+ return false;
+ }
+ if (cmd.equals("current")) {
+ if (args.length != 1)
+ return false;
+ String res = rmanager.getNameByLoc(player.getLocation());
+ if (res == null) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("NotInResidence"));
+ } else {
+ player.sendMessage(ChatColor.GREEN
+ + language.getPhrase("InResidence", ChatColor.YELLOW
+ + res + ChatColor.GREEN));
+ }
+ return true;
+ }
+ if (cmd.equals("set"))
+ return commandResSet(args, resadmin, player, page);
+ if (cmd.equals("pset"))
+ return commandResPset(args, resadmin, player, page);
+ if (cmd.equals("gset"))
+ return commandResGset(args, resadmin, player, page);
+ if (cmd.equals("lset"))
+ return commandResLset(args, resadmin, player, page);
+ if (cmd.equals("list")) {
+ if (args.length == 1) {
+ rmanager.listResidences(player);
+ return true;
+ } else if (args.length == 2) {
+ try {
+ Integer.parseInt(args[1]);
+ rmanager.listResidences(player, page);
+ } catch (Exception ex) {
+ rmanager.listResidences(player, args[1]);
+ }
+ return true;
+ } else if (args.length == 3) {
+ rmanager.listResidences(player, args[1], page);
+ return true;
+ }
+ return false;
+ }
+ if (cmd.equals("listhidden")) {
+ if (!resadmin) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("NoPermission"));
+ return true;
+ }
+ if (args.length == 1) {
+ rmanager.listResidences(player, 1, true);
+ return true;
+ } else if (args.length == 2) {
+ try {
+ Integer.parseInt(args[1]);
+ rmanager.listResidences(player, page, true);
+ } catch (Exception ex) {
+ rmanager.listResidences(player, args[1], 1, true);
+ }
+ return true;
+ } else if (args.length == 3) {
+ rmanager.listResidences(player, args[1], page, true);
+ return true;
+ }
+ return false;
+ }
+ if (cmd.equals("rename")) {
+ if (args.length == 3) {
+ rmanager.renameResidence(player, args[1], args[2], resadmin);
+ return true;
+ }
+ return false;
+ }
+ if (cmd.equals("renamearea")) {
+ if (args.length == 4) {
+ ClaimedResidence res = rmanager.getByName(args[1]);
+ if (res == null) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ return true;
+ }
+ res.renameArea(player, args[2], args[3], resadmin);
+ return true;
+ }
+ return false;
+ }
+ if (cmd.equals("unstuck")) {
+ if (args.length != 1)
+ return false;
+ group = gmanager.getGroup(player);
+ if (!group.hasUnstuckAccess()) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("NoPermission"));
+ return true;
+ }
+ ClaimedResidence res = rmanager.getByLoc(player.getLocation());
+ if (res == null) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("NotInResidence"));
+ } else {
+ player.sendMessage(ChatColor.YELLOW
+ + language.getPhrase("Moved") + "...");
+ player.teleport(res.getOutsideFreeLoc(player.getLocation()));
+ }
+ return true;
+ }
+ if (cmd.equals("kick")) {
+ if (args.length != 2)
+ return false;
+ Player targetplayer = Bukkit.getPlayer(args[1]);
+ if (targetplayer == null) {
+
+ }
+ 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.getPlayersInResidence().contains(targetplayer)) {
+ targetplayer.teleport(res.getOutsideFreeLoc(player
+ .getLocation()));
+ targetplayer.sendMessage(ChatColor.RED
+ + language.getPhrase("Kicked") + "!");
+ }
+ }
+
+ }
+ if (cmd.equals("mirror")) {
+ if (args.length != 3)
+ return false;
+ rmanager.mirrorPerms(player, args[2], args[1], resadmin);
+ return true;
+ }
+ if (cmd.equals("listall")) {
+ if (args.length == 1) {
+ rmanager.listAllResidences(player, 1);
+ } else if (args.length == 2) {
+ try {
+ rmanager.listAllResidences(player, page);
+ } catch (Exception ex) {
+ }
+ } else
+ return false;
+ return true;
+ }
+ if (cmd.equals("listallhidden")) {
+ if (!resadmin) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("NoPermission"));
+ return true;
+ }
+ if (args.length == 1) {
+ rmanager.listAllResidences(player, 1, true);
+ } else if (args.length == 2) {
+ try {
+ rmanager.listAllResidences(player, page, true);
+ } catch (Exception ex) {
+ }
+ } else
+ return false;
+ return true;
+ }
+ if (cmd.equals("material")) {
+ 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));
+ } catch (Exception ex) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidMaterial"));
+ }
+ return true;
+ }
+ if (cmd.equals("tpset")) {
+ ClaimedResidence res = rmanager.getByLoc(player.getLocation());
+ if (res != null) {
+ res.setTpLoc(player, resadmin);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ }
+ if (cmd.equals("tp")) {
+ if (args.length != 2)
+ return false;
+ ClaimedResidence res = rmanager.getByName(args[1]);
+ if (res == null) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ return true;
+ }
+ res.tpToResidence(player, player, resadmin);
+ return true;
+ }
+ if (cmd.equals("lease"))
+ return commandResLease(args, resadmin, player, page);
+ if (cmd.equals("bank"))
+ return commandResBank(args, resadmin, player, page);
+ if (cmd.equals("market"))
+ return commandResMarket(args, resadmin, player, page);
+ if (cmd.equals("message"))
+ return commandResMessage(args, resadmin, player, page);
+ if (cmd.equals("give") && args.length == 3) {
+ rmanager.giveResidence(player, args[2], args[1], resadmin);
+ return true;
+ }
+ if (cmd.equals("server")) {
+ if (!resadmin) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("NoPermission"));
+ return true;
+ }
+ if (args.length == 2) {
+ ClaimedResidence res = rmanager.getByName(args[1]);
+ if (res == null) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ 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));
+ return true;
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ return true;
+ }
+ }
+ if (cmd.equals("clearflags")) {
+ if (!resadmin) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("NoPermission"));
+ return true;
+ }
+ ClaimedResidence area = rmanager.getByName(args[1]);
+ if (area != null) {
+ area.getPermissions().clearFlags();
+ player.sendMessage(ChatColor.GREEN
+ + language.getPhrase("FlagsCleared"));
+ } 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()));
+ return true;
+ }
+ return false;
+ }
+
+ private boolean commandResArea(String[] args, boolean resadmin,
+ Player player, int page) {
+ if (args.length == 4) {
+ if (args[1].equals("remove")) {
+ ClaimedResidence res = rmanager.getByName(args[2]);
+ if (res != null) {
+ res.removeArea(player, args[3], resadmin);
+ } 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) {
+ 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 {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ } 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) {
+ 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 {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ } 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) {
+ res.printAreaList(player, page);
+ } 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) {
+ res.printAdvancedAreaList(player, page);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ }
+ return false;
+ }
+
+ 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()));
+ if (res == null) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("NotInResidence"));
+ return true;
+ }
+ int amount = 0;
+ try {
+ amount = Integer.parseInt(args[2]);
+ } catch (Exception ex) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidAmount"));
+ return true;
+ }
+ if (args[1].equals("deposit")) {
+ res.getBank().deposit(player, amount, resadmin);
+ } else if (args[1].equals("withdraw")) {
+ res.getBank().withdraw(player, amount, resadmin);
+ } else
+ return false;
+ return true;
+ }
+
+ private boolean commandResCompass(String[] args, boolean resadmin,
+ Player player, int page) {
+ if (args.length != 2) {
+ player.setCompassTarget(player.getWorld().getSpawnLocation());
+ player.sendMessage(ChatColor.GREEN
+ + language.getPhrase("CompassTargetReset"));
+ return true;
+ }
+ if (rmanager.getByName(args[1]) != null) {
+ 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);
+ player.setCompassTarget(mid);
+ player.sendMessage(ChatColor.GREEN
+ + language.getPhrase("CompassTargetSet",
+ ChatColor.YELLOW + args[1] + ChatColor.GREEN));
+ }
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ }
+
+ private boolean commandResConfirm(String[] args, boolean resadmin,
+ CommandSender sender, int page) {
+ Player player = null;
+ String name = "Console";
+ if (sender instanceof Player) {
+ player = (Player) sender;
+ name = player.getName();
+ }
+ if (args.length == 1) {
+ String area = deleteConfirm.get(name);
+ if (area == null) {
+ sender.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ } 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));
+ }
+ }
+ }
+ return true;
+ }
+
+ private boolean commandResCreate(String[] args, boolean resadmin,
+ Player player, int page) {
+ 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) {
+ smanager.worldEdit(player);
+ }
+ }
+ if (smanager.hasPlacedBoth(player.getName())) {
+ rmanager.addResidence(player, args[1],
+ smanager.getPlayerLoc1(player.getName()),
+ smanager.getPlayerLoc2(player.getName()), resadmin);
+ return true;
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("SelectPoints"));
+ return true;
+ }
+ }
+
+ private boolean commandResGset(String[] args, boolean resadmin,
+ Player player, int page) {
+ if (args.length == 4) {
+ ClaimedResidence area = rmanager.getByLoc(player.getLocation());
+ if (area != null) {
+ area.getPermissions().setGroupFlag(player, args[1], args[2],
+ args[3], resadmin);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidArea"));
+ }
+ return true;
+ } else if (args.length == 5) {
+ ClaimedResidence area = rmanager.getByName(args[1]);
+ if (area != null) {
+ area.getPermissions().setGroupFlag(player, args[2], args[3],
+ args[4], resadmin);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ }
+ return false;
+ }
+
+ 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) {
+ leasemanager.renewArea(args[2], player);
+ } else {
+ leasemanager
+ .renewArea(
+ rmanager.getNameByLoc(player.getLocation()),
+ player);
+ }
+ return true;
+ } 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.RED
+ + language.getPhrase("LeaseNotExpire"));
+ }
+ return true;
+ } else {
+ String area = rmanager.getNameByLoc(player.getLocation());
+ ClaimedResidence res = rmanager.getByName(area);
+ if (area == null || res == null) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidArea"));
+ return true;
+ }
+ 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.RED
+ + language.getPhrase("LeaseNotExpire"));
+ }
+ return true;
+ }
+ }
+ } else if (args.length == 4) {
+ if (args[1].equals("set")) {
+ if (!resadmin) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("NoPermission"));
+ return true;
+ }
+ if (args[3].equals("infinite")) {
+ if (leasemanager.leaseExpires(args[2])) {
+ leasemanager.removeExpireTime(args[2]);
+ player.sendMessage(ChatColor.GREEN
+ + language.getPhrase("LeaseInfinite"));
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("LeaseNotExpire"));
+ }
+ return true;
+ } else {
+ int days;
+ try {
+ days = Integer.parseInt(args[3]);
+ } catch (Exception ex) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidDays"));
+ return true;
+ }
+ leasemanager.setExpireTime(player, args[2], days);
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean commandResList(String[] args, boolean resadmin,
+ Player player, int page) {
+ if (args.length == 2) {
+ if (args[1].equals("list")) {
+ pmanager.printLists(player);
+ return true;
+ }
+ } else if (args.length == 3) {
+ if (args[1].equals("view")) {
+ pmanager.printList(player, args[2]);
+ return true;
+ } else if (args[1].equals("remove")) {
+ pmanager.removeList(player, args[2]);
+ return true;
+ } else if (args[1].equals("add")) {
+ pmanager.makeList(player, args[2]);
+ return true;
+ }
+ } else if (args.length == 4) {
+ if (args[1].equals("apply")) {
+ pmanager.applyListToResidence(player, args[2], args[3],
+ resadmin);
+ return true;
+ }
+ } else if (args.length == 5) {
+ if (args[1].equals("set")) {
+ 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) {
+ if (args[1].equals("gset")) {
+ 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]));
+ player.sendMessage(ChatColor.GREEN
+ + language.getPhrase("FlagSet"));
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean commandResLset(String[] args, boolean resadmin,
+ Player player, int page) {
+ ClaimedResidence res = null;
+ Material mat = null;
+ String listtype = null;
+ boolean showinfo = false;
+ if (args.length == 2 && args[1].equals("info")) {
+ res = rmanager.getByLoc(player.getLocation());
+ showinfo = true;
+ } else if (args.length == 3 && args[2].equals("info")) {
+ res = rmanager.getByName(args[1]);
+ showinfo = true;
+ }
+ if (showinfo) {
+ if (res == null) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ return true;
+ }
+ player.sendMessage(ChatColor.RED + "Blacklist:");
+ res.getItemBlacklist().printList(player);
+ player.sendMessage(ChatColor.GREEN + "Ignorelist:");
+ res.getItemIgnoreList().printList(player);
+ return true;
+ } else if (args.length == 4) {
+ res = rmanager.getByName(args[1]);
+ listtype = args[2];
+ try {
+ mat = Material.valueOf(args[3].toUpperCase());
+ } catch (Exception ex) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidMaterial"));
+ return true;
+ }
+ } else if (args.length == 3) {
+ res = rmanager.getByLoc(player.getLocation());
+ listtype = args[1];
+ try {
+ mat = Material.valueOf(args[2].toUpperCase());
+ } catch (Exception ex) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidMaterial"));
+ return true;
+ }
+ }
+ if (res != null) {
+ if (listtype.equalsIgnoreCase("blacklist")) {
+ res.getItemBlacklist().playerListChange(player, mat, resadmin);
+ } else if (listtype.equalsIgnoreCase("ignorelist")) {
+ res.getItemIgnoreList().playerListChange(player, mat, resadmin);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidList"));
+ }
+ return true;
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ return true;
+ }
+ }
+
+ private boolean commandResMarket(String[] args, boolean resadmin,
+ Player player, int page) {
+ if (args.length == 1)
+ return false;
+ String command = args[1].toLowerCase();
+ if (command.equals("list"))
+ return commandResMarketList(args, resadmin, player, page);
+ if (command.equals("autorenew"))
+ return commandResMarketAutorenew(args, resadmin, player, page);
+ if (command.equals("rentable"))
+ return commandResMarketRentable(args, resadmin, player, page);
+ if (command.equals("rent"))
+ return commandResMarketRent(args, resadmin, player, page);
+ if (command.equals("release")) {
+ if (args.length != 3)
+ return false;
+ if (rentmanager.isRented(args[2])) {
+ rentmanager.removeFromForRent(player, args[2], resadmin);
+ } 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)) {
+ rentmanager.printRentInfo(player, areaname);
+ }
+ } else if (args.length == 3) {
+ tmanager.viewSaleInfo(args[2], player);
+ if (cmanager.enabledRentSystem()
+ && rentmanager.isForRent(args[2])) {
+ rentmanager.printRentInfo(player, args[2]);
+ }
+ } else
+ return false;
+ return true;
+ }
+ if (command.equals("buy")) {
+ if (args.length != 3)
+ return false;
+ tmanager.buyPlot(args[2], player, resadmin);
+ return true;
+ }
+ if (command.equals("unsell")) {
+ if (args.length != 3)
+ return false;
+ tmanager.removeFromSale(player, args[2], resadmin);
+ return true;
+ }
+ if (command.equals("sell")) {
+ if (args.length != 4)
+ return false;
+ int amount;
+ try {
+ amount = Integer.parseInt(args[3]);
+ } catch (Exception ex) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidAmount"));
+ return true;
+ }
+ tmanager.putForSale(args[2], player, amount, resadmin);
+ return true;
+ }
+ return false;
+ }
+
+ private boolean commandResMarketAutorenew(String[] args, boolean resadmin,
+ Player player, int page) {
+ if (!cmanager.enableEconomy()) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("MarketDisabled"));
+ return true;
+ }
+ if (args.length != 4)
+ return false;
+ boolean value;
+ if (args[3].equalsIgnoreCase("true") || args[3].equalsIgnoreCase("t")) {
+ value = true;
+ } else if (args[3].equalsIgnoreCase("false")
+ || args[3].equalsIgnoreCase("f")) {
+ value = false;
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidBoolean"));
+ return true;
+ }
+ 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])) {
+ rentmanager.setRentRepeatable(player, args[2], value, resadmin);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("RentReleaseInvalid", ChatColor.YELLOW
+ + args[2] + ChatColor.RED));
+ }
+ return true;
+ }
+
+ private boolean commandResMarketList(String[] args, boolean resadmin,
+ Player player, int page) {
+ if (!cmanager.enableEconomy()) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("MarketDisabled"));
+ return true;
+ }
+ player.sendMessage(ChatColor.BLUE + "---"
+ + language.getPhrase("MarketList") + "---");
+ tmanager.printForSaleResidences(player);
+ if (cmanager.enabledRentSystem()) {
+ rentmanager.printRentableResidences(player);
+ }
+ return true;
+ }
+
+ private boolean commandResMarketRent(String[] args, boolean resadmin,
+ Player player, int page) {
+ 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")) {
+ repeat = true;
+ } 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;
+ }
+
+ private boolean commandResMarketRentable(String[] args, boolean resadmin,
+ Player player, int page) {
+ if (args.length < 5 || args.length > 6)
+ return false;
+ if (!cmanager.enabledRentSystem()) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("RentDisabled"));
+ return true;
+ }
+ int days;
+ int cost;
+ try {
+ cost = Integer.parseInt(args[3]);
+ } catch (Exception ex) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidCost"));
+ return true;
+ }
+ try {
+ days = Integer.parseInt(args[4]);
+ } catch (Exception ex) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidDays"));
+ return true;
+ }
+ boolean repeat = false;
+ 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")) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidBoolean"));
+ return true;
+ }
+ }
+ rentmanager.setForRent(player, args[2], cost, days, repeat, resadmin);
+ return true;
+ }
+
+ private boolean commandResMessage(String[] args, boolean resadmin,
+ Player player, int page) {
+ ClaimedResidence res = null;
+ int start = 0;
+ boolean enter = false;
+ if (args.length < 2)
+ return false;
+ if (args[1].equals("enter")) {
+ enter = true;
+ res = rmanager.getByLoc(player.getLocation());
+ start = 2;
+ } else if (args[1].equals("leave")) {
+ res = rmanager.getByLoc(player.getLocation());
+ start = 2;
+ } else if (args[1].equals("remove")) {
+ if (args.length > 2 && args[2].equals("enter")) {
+ res = rmanager.getByLoc(player.getLocation());
+ if (res != null) {
+ res.setEnterLeaveMessage(player, null, true, resadmin);
+ } 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) {
+ res.setEnterLeaveMessage(player, null, false, resadmin);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ }
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidMessageType"));
+ return true;
+ } else if (args.length > 2 && args[2].equals("enter")) {
+ enter = true;
+ res = rmanager.getByName(args[1]);
+ start = 3;
+ } else if (args.length > 2 && args[2].equals("leave")) {
+ res = rmanager.getByName(args[1]);
+ start = 3;
+ } else if (args.length > 2 && args[2].equals("remove")) {
+ res = rmanager.getByName(args[1]);
+ if (args.length != 4)
+ return false;
+ if (args[3].equals("enter")) {
+ if (res != null) {
+ res.setEnterLeaveMessage(player, null, true, resadmin);
+ }
+ return true;
+ } else if (args[3].equals("leave")) {
+ if (res != null) {
+ res.setEnterLeaveMessage(player, null, false, resadmin);
+ }
+ return true;
+ }
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidMessageType"));
+ return true;
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidMessageType"));
+ return true;
+ }
+ if (start == 0)
+ return false;
+ String message = "";
+ for (int i = start; i < args.length; i++) {
+ message = message + args[i] + " ";
+ }
+ if (res != null) {
+ res.setEnterLeaveMessage(player, message, enter, resadmin);
+ } 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) {
+ area.getPermissions().removeAllPlayerFlags(player, args[1],
+ resadmin);
+ } 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) {
+ area.getPermissions().removeAllPlayerFlags(player, args[2],
+ resadmin);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ } else if (args.length == 4) {
+ ClaimedResidence area = rmanager.getByLoc(player.getLocation());
+ if (area != null) {
+ area.getPermissions().setPlayerFlag(player, args[1], args[2],
+ args[3], resadmin);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ } else if (args.length == 5) {
+ ClaimedResidence area = rmanager.getByName(args[1]);
+ if (area != null) {
+ area.getPermissions().setPlayerFlag(player, args[2], args[3],
+ args[4], resadmin);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ }
+ return false;
+ }
+
+ private boolean commandResRemove(String[] args, boolean resadmin,
+ CommandSender sender, int page) {
+ Player player = null;
+ if (sender instanceof Player) {
+ player = (Player) sender;
+ if (args.length == 1) {
+ String area = rmanager.getNameByLoc(player.getLocation());
+ if (area != null) {
+ ClaimedResidence res = rmanager.getByName(area);
+ 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));
+ deleteConfirm.put(player.getName(), area);
+ } 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));
+ deleteConfirm.put(player.getName(), area);
+ } else {
+ rmanager.removeResidence(player, area, resadmin);
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+ if (args.length != 2)
+ return false;
+ if (player != null) {
+ 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]);
+ if (res.getParent() != null) {
+ String[] split = args[1].split("\\.");
+ 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));
+ }
+ deleteConfirm.put(player.getName(), args[1]);
+ } 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];
+ }
+ }
+ 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;
+ }
+
+ private boolean commandResSelect(String[] args, boolean resadmin,
+ Player player, int page) {
+ PermissionGroup group = Residence.getPermissionManager().getGroup(
+ player);
+ if (!group.selectCommandAccess() && !resadmin) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("SelectDiabled"));
+ return true;
+ }
+ if (!group.canCreateResidences() && group.getMaxSubzoneDepth() <= 0
+ && !resadmin) {
+ 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) {
+ 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())) {
+ try {
+ smanager.showSelectionInfo(player);
+ return true;
+ } catch (Exception ex) {
+ Logger.getLogger(Residence.class.getName()).log(
+ Level.SEVERE, null, ex);
+ return true;
+ }
+ } else if (smanager.worldEdit(player)) {
+ try {
+ smanager.showSelectionInfo(player);
+ return true;
+ } catch (Exception ex) {
+ Logger.getLogger(Residence.class.getName()).log(
+ Level.SEVERE, null, ex);
+ return true;
+ }
+ }
+ } else if (args[1].equals("vert")) {
+ smanager.vert(player, resadmin);
+ return true;
+ } else if (args[1].equals("sky")) {
+ smanager.sky(player, resadmin);
+ return true;
+ } else if (args[1].equals("bedrock")) {
+ smanager.bedrock(player, resadmin);
+ 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() + ")");
+ }
+ 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() + ")");
+ }
+ 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"));
+ }
+ return true;
+ }
+ } else if (args.length == 3) {
+ if (args[1].equals("expand")) {
+ int amount;
+ try {
+ amount = Integer.parseInt(args[2]);
+ } catch (Exception ex) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidAmount"));
+ return true;
+ }
+ smanager.modify(player, false, amount);
+ return true;
+ } else if (args[1].equals("shift")) {
+ int amount;
+ try {
+ amount = Integer.parseInt(args[2]);
+ } catch (Exception ex) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidAmount"));
+ return true;
+ }
+ 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) {
+ res = rmanager.getByName(args[2]);
+ } else {
+ res = rmanager.getByLoc(player.getLocation());
+ }
+ if (res == null) {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ return true;
+ }
+ resName = res.getName();
+ CuboidArea area = null;
+ if (args.length > 3) {
+ area = res.getArea(args[3]);
+ areaName = args[3];
+ } else {
+ areaName = res.getAreaIDbyLoc(player.getLocation());
+ area = res.getArea(areaName);
+ }
+ 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.RED
+ + language.getPhrase("AreaNonExist"));
+ }
+ return true;
+ } else {
+ try {
+ 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 {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ } else if (args.length == 4) {
+ ClaimedResidence area = rmanager.getByName(args[1]);
+ if (area != null) {
+ area.getPermissions().setFlag(player, args[2], args[3],
+ resadmin);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ }
+ return false;
+ }
+
+ 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) {
+ res = rmanager.getByLoc(player.getLocation());
+ } else {
+ res = rmanager.getByName(args[1]);
+ }
+ if (res != null) {
+ res.printSubzoneList(player, page);
+ } else {
+ player.sendMessage(ChatColor.RED
+ + language.getPhrase("InvalidResidence"));
+ }
+ return true;
+ }
+ return false;
+ }
+
+ private boolean commandResSubzone(String[] args, boolean resadmin,
+ Player player, int page) {
+ if (args.length != 2 && args.length != 3)
+ return false;
+ String zname;
+ String parent;
+ if (args.length == 2) {
+ parent = rmanager.getNameByLoc(player.getLocation());
+ zname = args[1];
+ } else {
+ parent = args[1];
+ zname = args[2];
+ }
+ 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(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);
+ 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/com/bekvon/bukkit/residence/config/FileConfig.java b/src/com/bekvon/bukkit/residence/config/FileConfig.java
index ada5623..2d7d171 100644
--- a/src/com/bekvon/bukkit/residence/config/FileConfig.java
+++ b/src/com/bekvon/bukkit/residence/config/FileConfig.java
@@ -30,15 +30,9 @@ import com.google.common.io.Files;
*/
public class FileConfig extends YamlConfiguration {
- protected final DumperOptions yamlOptions = new DumperOptions();
- protected final Representer yamlRepresenter = new YamlRepresenter();
- protected final Yaml yaml = new Yaml(new YamlConstructor(),
- yamlRepresenter, yamlOptions);
-
public static FileConfig init(File file) {
return FileConfig.loadConfiguration(file);
}
-
public static FileConfig loadConfiguration(File file) {
Validate.notNull(file, "File cannot be null");
FileConfig config = new FileConfig();
@@ -52,6 +46,34 @@ public class FileConfig extends YamlConfiguration {
}
return config;
}
+ protected final DumperOptions yamlOptions = new DumperOptions();
+
+ protected final Representer yamlRepresenter = new YamlRepresenter();
+
+ protected final Yaml yaml = new Yaml(new YamlConstructor(),
+ yamlRepresenter, yamlOptions);
+
+ @Override
+ public void load(File file) throws FileNotFoundException, IOException,
+ InvalidConfigurationException {
+ Validate.notNull(file, "File cannot be null");
+ final FileInputStream stream = new FileInputStream(file);
+ load(new InputStreamReader(stream, Charsets.UTF_8));
+ }
+
+ @Override
+ public void save(File file) throws IOException {
+ Validate.notNull(file, "File cannot be null");
+ Files.createParentDirs(file);
+ String data = saveToString();
+ Writer writer = new OutputStreamWriter(new FileOutputStream(file),
+ Charsets.UTF_8);
+ try {
+ writer.write(data);
+ } finally {
+ writer.close();
+ }
+ }
@Override
public String saveToString() {
@@ -65,24 +87,4 @@ public class FileConfig extends YamlConfiguration {
}
return header + dump;
}
-
- public void load(File file) throws FileNotFoundException, IOException,
- InvalidConfigurationException {
- Validate.notNull(file, "File cannot be null");
- final FileInputStream stream = new FileInputStream(file);
- load(new InputStreamReader(stream, Charsets.UTF_8));
- }
-
- public void save(File file) throws IOException {
- Validate.notNull(file, "File cannot be null");
- Files.createParentDirs(file);
- String data = saveToString();
- Writer writer = new OutputStreamWriter(new FileOutputStream(file),
- Charsets.UTF_8);
- try {
- writer.write(data);
- } finally {
- writer.close();
- }
- }
}
diff --git a/src/com/bekvon/bukkit/residence/event/CancellableResidenceEvent.java b/src/com/bekvon/bukkit/residence/event/CancellableResidenceEvent.java
index 07da3b1..6cccc8a 100644
--- a/src/com/bekvon/bukkit/residence/event/CancellableResidenceEvent.java
+++ b/src/com/bekvon/bukkit/residence/event/CancellableResidenceEvent.java
@@ -5,28 +5,31 @@
package com.bekvon.bukkit.residence.event;
-import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import org.bukkit.event.Cancellable;
+import com.bekvon.bukkit.residence.protection.ClaimedResidence;
+
/**
*
* @author Administrator
*/
public class CancellableResidenceEvent extends ResidenceEvent implements Cancellable {
- protected boolean cancelled;
+ protected boolean cancelled;
- public CancellableResidenceEvent(String eventName, ClaimedResidence resref)
- {
- super(eventName,resref);
- }
-
- public boolean isCancelled() {
- return cancelled;
- }
+ public CancellableResidenceEvent(String eventName, ClaimedResidence resref)
+ {
+ super(eventName,resref);
+ }
- public void setCancelled(boolean bln) {
- cancelled = bln;
- }
+ @Override
+ public boolean isCancelled() {
+ return cancelled;
+ }
+
+ @Override
+ public void setCancelled(boolean bln) {
+ cancelled = bln;
+ }
}
diff --git a/src/com/bekvon/bukkit/residence/event/CancellableResidencePlayerEvent.java b/src/com/bekvon/bukkit/residence/event/CancellableResidencePlayerEvent.java
index 0c3cd9d..bce7a30 100644
--- a/src/com/bekvon/bukkit/residence/event/CancellableResidencePlayerEvent.java
+++ b/src/com/bekvon/bukkit/residence/event/CancellableResidencePlayerEvent.java
@@ -5,30 +5,33 @@
package com.bekvon.bukkit.residence.event;
-import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
+import com.bekvon.bukkit.residence.protection.ClaimedResidence;
+
/**
*
* @author Administrator
*/
public class CancellableResidencePlayerEvent extends ResidencePlayerEvent implements Cancellable {
- protected boolean cancelled;
+ protected boolean cancelled;
- public CancellableResidencePlayerEvent(String eventName, ClaimedResidence resref, Player player)
- {
- super(eventName, resref, player);
- cancelled = false;
- }
+ public CancellableResidencePlayerEvent(String eventName, ClaimedResidence resref, Player player)
+ {
+ super(eventName, resref, player);
+ cancelled = false;
+ }
- public boolean isCancelled() {
- return cancelled;
- }
+ @Override
+ public boolean isCancelled() {
+ return cancelled;
+ }
- public void setCancelled(boolean bln) {
- cancelled = bln;
- }
+ @Override
+ public void setCancelled(boolean bln) {
+ cancelled = bln;
+ }
}
diff --git a/src/com/bekvon/bukkit/residence/event/CancellableResidencePlayerFlagEvent.java b/src/com/bekvon/bukkit/residence/event/CancellableResidencePlayerFlagEvent.java
index df0cf8f..99da572 100644
--- a/src/com/bekvon/bukkit/residence/event/CancellableResidencePlayerFlagEvent.java
+++ b/src/com/bekvon/bukkit/residence/event/CancellableResidencePlayerFlagEvent.java
@@ -5,29 +5,32 @@
package com.bekvon.bukkit.residence.event;
-import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
+import com.bekvon.bukkit.residence.protection.ClaimedResidence;
+
/**
*
* @author Administrator
*/
public class CancellableResidencePlayerFlagEvent extends ResidencePlayerFlagEvent implements Cancellable {
- protected boolean cancelled;
+ protected boolean cancelled;
- public CancellableResidencePlayerFlagEvent(String eventName, ClaimedResidence resref, Player player, String flag, FlagType type, String target)
- {
- super(eventName, resref, player, flag, type, target);
- }
+ public CancellableResidencePlayerFlagEvent(String eventName, ClaimedResidence resref, Player player, String flag, FlagType type, String target)
+ {
+ super(eventName, resref, player, flag, type, target);
+ }
- public boolean isCancelled() {
- return cancelled;
- }
+ @Override
+ public boolean isCancelled() {
+ return cancelled;
+ }
- public void setCancelled(boolean bln) {
- cancelled = bln;
- }
+ @Override
+ public void setCancelled(boolean bln) {
+ cancelled = bln;
+ }
}
diff --git a/src/com/bekvon/bukkit/residence/event/ResidenceCommandEvent.java b/src/com/bekvon/bukkit/residence/event/ResidenceCommandEvent.java
index 31dd5d4..e36f7c2 100644
--- a/src/com/bekvon/bukkit/residence/event/ResidenceCommandEvent.java
+++ b/src/com/bekvon/bukkit/residence/event/ResidenceCommandEvent.java
@@ -16,51 +16,53 @@ import org.bukkit.event.HandlerList;
*/
public class ResidenceCommandEvent extends Event implements Cancellable {
- private static final HandlerList handlers = new HandlerList();
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
+ private static final HandlerList handlers = new HandlerList();
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
- public static HandlerList getHandlerList() {
- return handlers;
- }
+ protected boolean cancelled;
- protected boolean cancelled;
- protected String cmd;
- protected String arglist[];
- CommandSender commandsender;
+ protected String cmd;
+ protected String arglist[];
+ CommandSender commandsender;
+ public ResidenceCommandEvent(String command, String args[], CommandSender sender)
+ {
+ super();
+ cancelled = false;
+ arglist = args;
+ cmd = command;
+ commandsender = sender;
+ }
- public ResidenceCommandEvent(String command, String args[], CommandSender sender)
- {
- super();
- cancelled = false;
- arglist = args;
- cmd = command;
- commandsender = sender;
- }
+ public String[] getArgs()
+ {
+ return arglist;
+ }
- public boolean isCancelled() {
- return cancelled;
- }
+ public String getCommand()
+ {
+ return cmd;
+ }
- public void setCancelled(boolean bln) {
- cancelled = bln;
- }
+ @Override
+ public HandlerList getHandlers() {
+ return handlers;
+ }
- public String getCommand()
- {
- return cmd;
- }
+ public CommandSender getSender()
+ {
+ return commandsender;
+ }
- public String[] getArgs()
- {
- return arglist;
- }
+ @Override
+ public boolean isCancelled() {
+ return cancelled;
+ }
- public CommandSender getSender()
- {
- return commandsender;
- }
+ @Override
+ public void setCancelled(boolean bln) {
+ cancelled = bln;
+ }
}
diff --git a/src/com/bekvon/bukkit/residence/event/ResidenceEvent.java b/src/com/bekvon/bukkit/residence/event/ResidenceEvent.java
index a2bc64a..c63567e 100644
--- a/src/com/bekvon/bukkit/residence/event/ResidenceEvent.java
+++ b/src/com/bekvon/bukkit/residence/event/ResidenceEvent.java
@@ -5,10 +5,11 @@
package com.bekvon.bukkit.residence.event;
-import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
+import com.bekvon.bukkit.residence.protection.ClaimedResidence;
+
/**
*
* @author Administrator
@@ -16,30 +17,31 @@ import org.bukkit.event.HandlerList;
public class ResidenceEvent extends Event {
private static final HandlerList handlers = new HandlerList();
- private String message;
-
- public HandlerList getHandlers() {
- return handlers;
- }
-
public static HandlerList getHandlerList() {
- return handlers;
+ return handlers;
}
- ClaimedResidence res;
+ private String message;
- public ResidenceEvent(String eventName, ClaimedResidence resref)
- {
- message = eventName;
- res = resref;
- }
-
- public String getMessage() {
- return message;
- }
+ ClaimedResidence res;
- public ClaimedResidence getResidence()
- {
- return res;
- }
+ public ResidenceEvent(String eventName, ClaimedResidence resref)
+ {
+ message = eventName;
+ res = resref;
+ }
+
+ @Override
+ public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public ClaimedResidence getResidence()
+ {
+ return res;
+ }
}
diff --git a/src/com/bekvon/bukkit/residence/event/ResidenceFlagCheckEvent.java b/src/com/bekvon/bukkit/residence/event/ResidenceFlagCheckEvent.java
index a0b00fd..3952420 100644
--- a/src/com/bekvon/bukkit/residence/event/ResidenceFlagCheckEvent.java
+++ b/src/com/bekvon/bukkit/residence/event/ResidenceFlagCheckEvent.java
@@ -5,53 +5,55 @@
package com.bekvon.bukkit.residence.event;
-import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import org.bukkit.event.HandlerList;
+import com.bekvon.bukkit.residence.protection.ClaimedResidence;
+
/**
*
* @author Administrator
*/
public class ResidenceFlagCheckEvent extends ResidenceFlagEvent {
-private static final HandlerList handlers = new HandlerList();
+ private static final HandlerList handlers = new HandlerList();
- public HandlerList getHandlers() {
- return handlers;
- }
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
- public static HandlerList getHandlerList() {
- return handlers;
- }
+ private boolean override;
- private boolean override;
- private boolean overridevalue;
- boolean defaultvalue;
+ private boolean overridevalue;
+ boolean defaultvalue;
+ public ResidenceFlagCheckEvent(ClaimedResidence resref, String flag, FlagType type, String target, boolean defaultValue)
+ {
+ super("RESIDENCE_FLAG_CHECK", resref, flag, type, target);
+ defaultvalue = defaultValue;
+ override = false;
+ }
- public ResidenceFlagCheckEvent(ClaimedResidence resref, String flag, FlagType type, String target, boolean defaultValue)
- {
- super("RESIDENCE_FLAG_CHECK", resref, flag, type, target);
- defaultvalue = defaultValue;
- override = false;
- }
+ public boolean getDefaultValue()
+ {
+ return defaultvalue;
+ }
- public boolean isOverriden()
- {
- return override;
- }
+ @Override
+ public HandlerList getHandlers() {
+ return handlers;
+ }
- public void overrideCheck(boolean flagval)
- {
- overridevalue = flagval;
- override=true;
- }
+ public boolean getOverrideValue()
+ {
+ return overridevalue;
+ }
- public boolean getOverrideValue()
- {
- return overridevalue;
- }
+ public boolean isOverriden()
+ {
+ return override;
+ }
- public boolean getDefaultValue()
- {
- return defaultvalue;
- }
+ public void overrideCheck(boolean flagval)
+ {
+ overridevalue = flagval;
+ override=true;
+ }
}
diff --git a/src/com/bekvon/bukkit/residence/event/ResidencePlayerEvent.java b/src/com/bekvon/bukkit/residence/event/ResidencePlayerEvent.java
index ac38e44..8e6a02c 100644
--- a/src/com/bekvon/bukkit/residence/event/ResidencePlayerEvent.java
+++ b/src/com/bekvon/bukkit/residence/event/ResidencePlayerEvent.java
@@ -5,9 +5,10 @@
package com.bekvon.bukkit.residence.event;
+import org.bukkit.entity.Player;
+
import com.bekvon.bukkit.residence.Residence;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
-import org.bukkit.entity.Player;
/**
*
@@ -15,30 +16,31 @@ import org.bukkit.entity.Player;
*/
public class ResidencePlayerEvent extends ResidenceEvent implements ResidencePlayerEventInterface {
- Player p;
+ Player p;
- public ResidencePlayerEvent(String eventName, ClaimedResidence resref, Player player)
- {
- super(eventName, resref);
- res = resref;
- p = player;
- }
+ public ResidencePlayerEvent(String eventName, ClaimedResidence resref, Player player)
+ {
+ super(eventName, resref);
+ res = resref;
+ p = player;
+ }
- public boolean isPlayer()
- {
- return p!=null;
- }
+ @Override
+ public Player getPlayer()
+ {
+ return p;
+ }
- public boolean isAdmin()
- {
- if(isPlayer())
- {
- return Residence.getPermissionManager().isResidenceAdmin(p);
- }
- return true;
- }
- public Player getPlayer()
- {
- return p;
- }
+ @Override
+ public boolean isAdmin()
+ {
+ if(isPlayer())
+ return Residence.getPermissionManager().isResidenceAdmin(p);
+ return true;
+ }
+ @Override
+ public boolean isPlayer()
+ {
+ return p!=null;
+ }
}
diff --git a/src/com/bekvon/bukkit/residence/event/ResidencePlayerFlagEvent.java b/src/com/bekvon/bukkit/residence/event/ResidencePlayerFlagEvent.java
index 6cf9d6d..ca108f9 100644
--- a/src/com/bekvon/bukkit/residence/event/ResidencePlayerFlagEvent.java
+++ b/src/com/bekvon/bukkit/residence/event/ResidencePlayerFlagEvent.java
@@ -5,38 +5,40 @@
package com.bekvon.bukkit.residence.event;
+import org.bukkit.entity.Player;
+
import com.bekvon.bukkit.residence.Residence;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
-import org.bukkit.entity.Player;
/**
*
* @author Administrator
*/
public class ResidencePlayerFlagEvent extends ResidenceFlagEvent implements ResidencePlayerEventInterface {
- Player p;
+ Player p;
- public ResidencePlayerFlagEvent(String eventName,ClaimedResidence resref, Player player, String flag, FlagType type, String target)
- {
- super(eventName, resref, flag, type, target);
- p = player;
- }
+ public ResidencePlayerFlagEvent(String eventName,ClaimedResidence resref, Player player, String flag, FlagType type, String target)
+ {
+ super(eventName, resref, flag, type, target);
+ p = player;
+ }
- public boolean isPlayer()
- {
- return p!=null;
- }
+ @Override
+ public Player getPlayer() {
+ return p;
+ }
- public boolean isAdmin()
- {
- if(isPlayer())
- {
- return Residence.getPermissionManager().isResidenceAdmin(p);
- }
- return true;
- }
+ @Override
+ public boolean isAdmin()
+ {
+ if(isPlayer())
+ return Residence.getPermissionManager().isResidenceAdmin(p);
+ return true;
+ }
- public Player getPlayer() {
- return p;
- }
+ @Override
+ public boolean isPlayer()
+ {
+ return p!=null;
+ }
}
diff --git a/src/com/bekvon/bukkit/residence/event/ResidenceRenameEvent.java b/src/com/bekvon/bukkit/residence/event/ResidenceRenameEvent.java
index 74df940..f6030ed 100644
--- a/src/com/bekvon/bukkit/residence/event/ResidenceRenameEvent.java
+++ b/src/com/bekvon/bukkit/residence/event/ResidenceRenameEvent.java
@@ -1,24 +1,25 @@
-package com.bekvon.bukkit.residence.event;
-
-import com.bekvon.bukkit.residence.protection.ClaimedResidence;
-
-public class ResidenceRenameEvent extends ResidenceEvent {
- protected String NewResName;
- protected String OldResName;
- protected ClaimedResidence res;
- public ResidenceRenameEvent(ClaimedResidence resref, String NewName, String OldName) {
- super("RESIDENCE_RENAME", resref);
- NewResName = NewName;
- OldResName = OldName;
- res = resref;
- }
- public String getNewResidenceName() {
- return NewResName;
- }
- public String getOldResidenceName() {
- return OldResName;
- }
- public ClaimedResidence getResidence() {
- return res;
- }
-}
+package com.bekvon.bukkit.residence.event;
+
+import com.bekvon.bukkit.residence.protection.ClaimedResidence;
+
+public class ResidenceRenameEvent extends ResidenceEvent {
+ protected String NewResName;
+ protected String OldResName;
+ protected ClaimedResidence res;
+ public ResidenceRenameEvent(ClaimedResidence resref, String NewName, String OldName) {
+ super("RESIDENCE_RENAME", resref);
+ NewResName = NewName;
+ OldResName = OldName;
+ res = resref;
+ }
+ public String getNewResidenceName() {
+ return NewResName;
+ }
+ public String getOldResidenceName() {
+ return OldResName;
+ }
+ @Override
+ public ClaimedResidence getResidence() {
+ return res;
+ }
+}
diff --git a/src/com/bekvon/bukkit/residence/protection/ResidenceManager.java b/src/com/bekvon/bukkit/residence/protection/ResidenceManager.java
index a41e497..1d3c435 100644
--- a/src/com/bekvon/bukkit/residence/protection/ResidenceManager.java
+++ b/src/com/bekvon/bukkit/residence/protection/ResidenceManager.java
@@ -32,695 +32,679 @@ import com.bekvon.bukkit.residence.permissions.PermissionGroup;
import com.bekvon.bukkit.residence.text.help.InformationPager;
/**
- *
+ *
* @author Administrator
*/
public class ResidenceManager {
- protected Map residences;
- protected Map>> chunkResidences;
+ public static final class ChunkRef {
- public ResidenceManager() {
- residences = new HashMap();
- chunkResidences = new HashMap>>();
- }
+ public static int getChunkCoord(final int val) {
+ // For more info, see CraftBukkit.CraftWorld.getChunkAt( Location )
+ return val >> 4;
+ }
+ private final int z;
+ private final int x;
- 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;
- }
- ClaimedResidence subres = res.getSubzoneByLoc(loc);
- if (subres == null) {
- return res;
- }
- return subres;
- }
+ public ChunkRef(int x, int z) {
+ this.x = x;
+ this.z = z;
+ }
+ public ChunkRef(Location loc) {
+ this.x = getChunkCoord(loc.getBlockX());
+ this.z = getChunkCoord(loc.getBlockZ());
+ }
- 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;
- }
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ChunkRef other = (ChunkRef) obj;
+ return this.x == other.x && this.z == other.z;
+ }
- 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;
- }
- name = res.getName();
- if (name == null)
- return null;
- String szname = res.getSubzoneNameByLoc(loc);
- if (szname != null) {
- return name + "." + szname;
- }
- return name;
- }
+ @Override
+ public int hashCode() {
+ return x ^ z;
+ }
- 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;
- }
+ /**
+ * Useful for debug
+ */
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append( "{ x: " ).append(x).append( ", z: " ).append( z ).append( " }" );
+ return sb.toString();
+ }
+ }
+ private static List getChunks(ClaimedResidence res) {
+ List chunks = new ArrayList();
+ for (CuboidArea area : res.getAreaArray()) {
+ chunks.addAll(area.getChunks());
+ }
+ return chunks;
+ }
- 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 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 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, 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, int page, boolean showhidden) {
- this.listResidences(player, player.getName(), page, showhidden);
- }
-
- 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 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 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;
- }
-
- private void getResidenceList(String targetplayer, boolean showhidden, boolean showsubzones, String parentzone, String resname, ClaimedResidence res, ArrayList list, boolean formattedOutput) {
- boolean hidden = res.getPermissions().has("hidden", false);
- if ((showhidden) || (!showhidden && !hidden)) {
- if (targetplayer == null || res.getPermissions().getOwner().equalsIgnoreCase(targetplayer)) {
- if (formattedOutput) {
- list.add(ChatColor.GREEN + parentzone + resname + ChatColor.YELLOW + " - " + Residence.getLanguage().getPhrase("World") + ": " + res.getWorld());
- } else {
- list.add(parentzone + resname);
- }
- }
- if (showsubzones) {
- for (Entry sz : res.subzones.entrySet()) {
- this.getResidenceList(targetplayer, showhidden, showsubzones, parentzone + resname + ".", sz.getKey(), sz.getValue(), list, formattedOutput);
- }
- }
- }
- }
-
- 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 void removeResidence(String name) {
- this.removeResidence(null, name, true);
- }
-
- 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 removeAllByOwner(String owner) {
- this.removeAllByOwner(null, owner, residences);
- }
-
- public void removeAllByOwner(Player player, String owner) {
- this.removeAllByOwner(player, owner, residences);
- }
-
- private void removeAllByOwner(Player player, String owner, Map resholder) {
- Iterator it = resholder.values().iterator();
- while (it.hasNext()) {
- ClaimedResidence res = it.next();
- if (res.getOwner().equalsIgnoreCase(owner)) {
- ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(player, res, player == null ? DeleteCause.OTHER : DeleteCause.PLAYER_DELETE);
- Residence.getServ().getPluginManager().callEvent(resevent);
- if (resevent.isCancelled())
- return;
- removeChunkList(res.getName());
- it.remove();
- } else {
- this.removeAllByOwner(player, owner, res.subzones);
- }
- }
- }
-
- 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 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.getConfigManager().useLeases() && Residence.getLeaseManager().leaseExpires(areaname)) {
- player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("LeaseExpire") + ":" + ChatColor.GREEN + " " + Residence.getLeaseManager().getExpireTime(areaname));
- }
- }
-
- 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 Map save() {
- Map worldmap = new LinkedHashMap();
- for (World world : Residence.getServ().getWorlds()) {
- Map resmap = new LinkedHashMap();
- for (Entry res : residences.entrySet()) {
- if (res.getValue().getWorld().equals(world.getName())) {
- try {
- resmap.put(res.getKey(), res.getValue().save());
- } catch (Exception ex) {
- System.out.println("[Residence] Failed to save residence (" + res.getKey() + ")!");
- Logger.getLogger(ResidenceManager.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- }
- worldmap.put(world.getName(), resmap);
- }
- return worldmap;
- }
-
- @SuppressWarnings("unchecked")
+ @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()) {
+ 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) {
- System.out.println("Error in loading save file for world: " + world.getName());
- if (Residence.getConfigManager().stopOnSaveError())
- throw (ex);
- }
- }
- }
- return resm;
- }
+ if (reslist != null) {
+ try {
+ resm.chunkResidences.put(world.getName(), loadMap(reslist, resm));
+ } catch (Exception ex) {
+ System.out.println("Error in loading save file for world: " + world.getName());
+ if (Residence.getConfigManager().stopOnSaveError())
+ throw (ex);
+ }
+ }
+ }
+ return resm;
+ }
- @SuppressWarnings("unchecked")
+ @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 {
+ 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;
- }
+ 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;
- }
+ protected Map residences;
- public boolean renameResidence(String oldName, String newName) {
- return this.renameResidence(null, oldName, newName, true);
- }
+ protected Map>> chunkResidences;
- 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 ResidenceManager() {
+ residences = new HashMap();
+ chunkResidences = new HashMap>>();
+ }
- 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 boolean addResidence(Player player, String name, Location loc1, Location loc2, boolean resadmin) {
+ return this.addResidence(player, player.getName(), name, loc1, loc2, resadmin);
+ }
- 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 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());
- public int getResidenceCount() {
- return residences.size();
- }
+ 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 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 boolean addResidence(String name, Location loc1, Location loc2) {
+ return this.addResidence(name, "Server Land", loc1, loc2);
+ }
- 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 boolean addResidence(String name, String owner, Location loc1, Location loc2) {
+ return this.addResidence(null, owner, name, loc1, loc2, true);
+ }
- public static final class ChunkRef {
+ 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 static int getChunkCoord(final int val) {
- // For more info, see CraftBukkit.CraftWorld.getChunkAt( Location )
- return val >> 4;
- }
- private final int z;
- private final int x;
+ 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 ChunkRef(Location loc) {
- this.x = getChunkCoord(loc.getBlockX());
- this.z = getChunkCoord(loc.getBlockZ());
- }
- public ChunkRef(int x, int z) {
- this.x = x;
- this.z = z;
- }
+ 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;
+ ClaimedResidence subres = res.getSubzoneByLoc(loc);
+ if (subres == null)
+ return res;
+ return subres;
+ }
- @Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- ChunkRef other = (ChunkRef) obj;
- return this.x == other.x && this.z == other.z;
- }
+ 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 int hashCode() {
- return x ^ z;
- }
-
- /**
- * Useful for debug
- */
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append( "{ x: " ).append(x).append( ", z: " ).append( z ).append( " }" );
- return sb.toString();
- }
- }
+ 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;
+ 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;
+ }
+
+ private void getResidenceList(String targetplayer, boolean showhidden, boolean showsubzones, String parentzone, String resname, ClaimedResidence res, ArrayList list, boolean formattedOutput) {
+ boolean hidden = res.getPermissions().has("hidden", false);
+ if ((showhidden) || (!showhidden && !hidden)) {
+ if (targetplayer == null || res.getPermissions().getOwner().equalsIgnoreCase(targetplayer)) {
+ if (formattedOutput) {
+ list.add(ChatColor.GREEN + parentzone + resname + ChatColor.YELLOW + " - " + Residence.getLanguage().getPhrase("World") + ": " + res.getWorld());
+ } else {
+ list.add(parentzone + resname);
+ }
+ }
+ if (showsubzones) {
+ for (Entry sz : res.subzones.entrySet()) {
+ this.getResidenceList(targetplayer, showhidden, showsubzones, parentzone + resname + ".", sz.getKey(), sz.getValue(), list, formattedOutput);
+ }
+ }
+ }
+ }
+
+ 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.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);
+ }
+
+ private void removeAllByOwner(Player player, String owner, Map resholder) {
+ Iterator it = resholder.values().iterator();
+ while (it.hasNext()) {
+ ClaimedResidence res = it.next();
+ if (res.getOwner().equalsIgnoreCase(owner)) {
+ ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(player, res, player == null ? DeleteCause.OTHER : DeleteCause.PLAYER_DELETE);
+ Residence.getServ().getPluginManager().callEvent(resevent);
+ if (resevent.isCancelled())
+ return;
+ removeChunkList(res.getName());
+ it.remove();
+ } else {
+ this.removeAllByOwner(player, owner, res.subzones);
+ }
+ }
+ }
+
+ 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 worldmap = new LinkedHashMap();
+ for (World world : Residence.getServ().getWorlds()) {
+ Map resmap = new LinkedHashMap();
+ for (Entry res : residences.entrySet()) {
+ if (res.getValue().getWorld().equals(world.getName())) {
+ try {
+ resmap.put(res.getKey(), res.getValue().save());
+ } catch (Exception ex) {
+ System.out.println("[Residence] Failed to save residence (" + res.getKey() + ")!");
+ Logger.getLogger(ResidenceManager.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+ }
+ worldmap.put(world.getName(), resmap);
+ }
+ return worldmap;
+ }
}
diff --git a/src/com/bekvon/bukkit/residence/vaultinterface/ResidenceVaultAdapter.java b/src/com/bekvon/bukkit/residence/vaultinterface/ResidenceVaultAdapter.java
index 7e058ac..163af95 100644
--- a/src/com/bekvon/bukkit/residence/vaultinterface/ResidenceVaultAdapter.java
+++ b/src/com/bekvon/bukkit/residence/vaultinterface/ResidenceVaultAdapter.java
@@ -5,9 +5,6 @@
package com.bekvon.bukkit.residence.vaultinterface;
-import com.bekvon.bukkit.residence.economy.EconomyInterface;
-import com.bekvon.bukkit.residence.permissions.PermissionsInterface;
-
import net.milkbowl.vault.chat.Chat;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.permission.Permission;
@@ -16,32 +13,18 @@ import org.bukkit.Server;
import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
+import com.bekvon.bukkit.residence.economy.EconomyInterface;
+import com.bekvon.bukkit.residence.permissions.PermissionsInterface;
+
/**
- *
+ *
* @author Administrator
*/
-public class ResidenceVaultAdapter implements EconomyInterface,
- PermissionsInterface {
+public class ResidenceVaultAdapter implements EconomyInterface, PermissionsInterface {
- public static Permission permissions = null;
- public static Economy economy = null;
- public static Chat chat = null;
-
- public boolean permissionsOK() {
- if (permissions != null
- && !permissions.getName().equalsIgnoreCase("SuperPerms")) {
- return true;
- }
- return false;
- }
-
- public boolean economyOK() {
- return economy != null;
- }
-
- public boolean chatOK() {
- return chat != null;
- }
+ public static Permission permissions = null;
+ public static Economy economy = null;
+ public static Chat chat = null;
public ResidenceVaultAdapter(Server s) {
this.setupPermissions(s);
@@ -49,58 +32,10 @@ public class ResidenceVaultAdapter implements EconomyInterface,
this.setupChat(s);
}
- private boolean setupPermissions(Server s) {
- RegisteredServiceProvider permissionProvider = s
- .getServicesManager().getRegistration(
- net.milkbowl.vault.permission.Permission.class);
- if (permissionProvider != null) {
- permissions = permissionProvider.getProvider();
- }
- return (permissions != null);
- }
-
- private boolean setupChat(Server s) {
- RegisteredServiceProvider chatProvider = s.getServicesManager()
- .getRegistration(net.milkbowl.vault.chat.Chat.class);
- if (chatProvider != null) {
- chat = chatProvider.getProvider();
- }
- return (chat != null);
- }
-
- private boolean setupEconomy(Server s) {
- RegisteredServiceProvider economyProvider = s
- .getServicesManager().getRegistration(
- net.milkbowl.vault.economy.Economy.class);
- if (economyProvider != null) {
- economy = economyProvider.getProvider();
- }
- return (economy != null);
- }
-
- public String getPlayerGroup(Player player) {
- String group = permissions.getPrimaryGroup(player).toLowerCase();
- if (group == null) {
- return group;
- } else {
- return group.toLowerCase();
- }
- }
-
- @SuppressWarnings("deprecation")
- public String getPlayerGroup(String player, String world) {
- String group = permissions.getPrimaryGroup(world, player);
- if (group == null) {
- return group;
- } else {
- return group.toLowerCase();
- }
- }
-
@SuppressWarnings("deprecation")
@Override
- public double getBalance(String playerName) {
- return economy.getBalance(playerName);
+ public boolean add(String playerName, double amount) {
+ return economy.depositPlayer(playerName, amount).transactionSuccess();
}
@SuppressWarnings("deprecation")
@@ -109,10 +44,93 @@ public class ResidenceVaultAdapter implements EconomyInterface,
return economy.has(playerName, amount);
}
+ public boolean chatOK() {
+ return chat != null;
+ }
+
+ public boolean economyOK() {
+ return economy != null;
+ }
+
@SuppressWarnings("deprecation")
@Override
- public boolean add(String playerName, double amount) {
- return economy.depositPlayer(playerName, amount).transactionSuccess();
+ public double getBalance(String playerName) {
+ return economy.getBalance(playerName);
+ }
+
+ public String getChatName() {
+ if (chat != null)
+ return chat.getName();
+ return "";
+ }
+
+ public String getEconomyName() {
+ if (economy != null)
+ return economy.getName();
+ return "";
+ }
+
+ @Override
+ public String getName() {
+ return "Vault";
+ }
+
+ public String getPermissionsName() {
+ if (permissions != null)
+ return permissions.getName();
+ return "";
+ }
+
+ @Override
+ public String getPlayerGroup(Player player) {
+ String group = permissions.getPrimaryGroup(player).toLowerCase();
+ if (group == null)
+ return group;
+ else
+ return group.toLowerCase();
+ }
+
+ @Override
+ @SuppressWarnings("deprecation")
+ public String getPlayerGroup(String player, String world) {
+ String group = permissions.getPrimaryGroup(world, player);
+ if (group == null)
+ return group;
+ else
+ return group.toLowerCase();
+ }
+
+ public boolean permissionsOK() {
+ if (permissions != null && !permissions.getName().equalsIgnoreCase("SuperPerms"))
+ return true;
+ return false;
+ }
+
+ private boolean setupChat(Server s) {
+ RegisteredServiceProvider chatProvider = s.getServicesManager().getRegistration(
+ net.milkbowl.vault.chat.Chat.class);
+ if (chatProvider != null) {
+ chat = chatProvider.getProvider();
+ }
+ return (chat != null);
+ }
+
+ private boolean setupEconomy(Server s) {
+ RegisteredServiceProvider economyProvider = s.getServicesManager()
+ .getRegistration(net.milkbowl.vault.economy.Economy.class);
+ if (economyProvider != null) {
+ economy = economyProvider.getProvider();
+ }
+ return (economy != null);
+ }
+
+ private boolean setupPermissions(Server s) {
+ RegisteredServiceProvider permissionProvider = s.getServicesManager()
+ .getRegistration(net.milkbowl.vault.permission.Permission.class);
+ if (permissionProvider != null) {
+ permissions = permissionProvider.getProvider();
+ }
+ return (permissions != null);
}
@SuppressWarnings("deprecation")
@@ -125,40 +143,14 @@ public class ResidenceVaultAdapter implements EconomyInterface,
@Override
public boolean transfer(String playerFrom, String playerTo, double amount) {
if (economy.withdrawPlayer(playerFrom, amount).transactionSuccess()) {
- if (economy.depositPlayer(playerTo, amount).transactionSuccess()) {
+ if (economy.depositPlayer(playerTo, amount).transactionSuccess())
return true;
- } else {
+ else {
economy.depositPlayer(playerFrom, amount);
return false;
}
- } else {
+ } else
return false;
- }
- }
-
- public String getEconomyName() {
- if (economy != null) {
- return economy.getName();
- }
- return "";
- }
-
- public String getPermissionsName() {
- if (permissions != null) {
- return permissions.getName();
- }
- return "";
- }
-
- public String getChatName() {
- if (chat != null) {
- return chat.getName();
- }
- return "";
- }
-
- public String getName() {
- return "Vault";
}
}
\ No newline at end of file