mirror of
https://e.coding.net/circlecloud/Residence.git
synced 2025-11-24 21:46:16 +00:00
update pom.xml and rebuild...
This commit is contained in:
1
pom.xml
1
pom.xml
@@ -6,6 +6,7 @@
|
|||||||
<version>2.7.0.1-SNAPSHOT</version>
|
<version>2.7.0.1-SNAPSHOT</version>
|
||||||
<name>Residence</name>
|
<name>Residence</name>
|
||||||
<build>
|
<build>
|
||||||
|
<finalName>${project.name}</finalName>
|
||||||
<sourceDirectory>src</sourceDirectory>
|
<sourceDirectory>src</sourceDirectory>
|
||||||
<resources>
|
<resources>
|
||||||
<resource>
|
<resource>
|
||||||
|
|||||||
@@ -58,9 +58,8 @@ import com.bekvon.bukkit.residence.text.Language;
|
|||||||
import com.bekvon.bukkit.residence.text.help.HelpEntry;
|
import com.bekvon.bukkit.residence.text.help.HelpEntry;
|
||||||
import com.bekvon.bukkit.residence.text.help.InformationPager;
|
import com.bekvon.bukkit.residence.text.help.InformationPager;
|
||||||
import com.bekvon.bukkit.residence.vaultinterface.ResidenceVaultAdapter;
|
import com.bekvon.bukkit.residence.vaultinterface.ResidenceVaultAdapter;
|
||||||
|
import com.bekvon.bukkit.residence.vaultinterface.ZipLibrary;
|
||||||
import com.earth2me.essentials.Essentials;
|
import com.earth2me.essentials.Essentials;
|
||||||
import com.residence.mcstats.Metrics;
|
|
||||||
import com.residence.zip.ZipLibrary;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -87,7 +86,6 @@ public class Residence extends JavaPlugin {
|
|||||||
protected static Server server;
|
protected static Server server;
|
||||||
protected static HelpEntry helppages;
|
protected static HelpEntry helppages;
|
||||||
protected static Language language;
|
protected static Language language;
|
||||||
protected boolean firstenable = true;
|
|
||||||
protected static EconomyInterface economy;
|
protected static EconomyInterface economy;
|
||||||
public final static int saveVersion = 1;
|
public final static int saveVersion = 1;
|
||||||
protected static File dataFolder;
|
protected static File dataFolder;
|
||||||
@@ -96,38 +94,172 @@ public class Residence extends JavaPlugin {
|
|||||||
protected static int healBukkitId = -1;
|
protected static int healBukkitId = -1;
|
||||||
protected static int autosaveBukkitId = -1;
|
protected static int autosaveBukkitId = -1;
|
||||||
protected static boolean initsuccess = false;
|
protected static boolean initsuccess = false;
|
||||||
protected Map<String, String> deleteConfirm;
|
|
||||||
protected static List<String> resadminToggle;
|
protected static List<String> resadminToggle;
|
||||||
private final static String[] validLanguages = { "English", "Chinese" };
|
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<String, String> deleteConfirm;
|
||||||
|
|
||||||
private Runnable doHeals = new Runnable() {
|
private Runnable doHeals = new Runnable() {
|
||||||
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
plistener.doHeals();
|
plistener.doHeals();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private Runnable rentExpire = new Runnable() {
|
private Runnable rentExpire = new Runnable() {
|
||||||
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
rentmanager.checkCurrentRents();
|
rentmanager.checkCurrentRents();
|
||||||
if (cmanager.showIntervalMessages()) {
|
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() {
|
public void run() {
|
||||||
leasemanager.doExpirations();
|
leasemanager.doExpirations();
|
||||||
if (cmanager.showIntervalMessages()) {
|
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() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
if (initsuccess) {
|
if (initsuccess) {
|
||||||
saveYml();
|
saveYml();
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.getLogger("Minecraft").log(Level.SEVERE,
|
Logger.getLogger("Minecraft").log(
|
||||||
|
Level.SEVERE,
|
||||||
"[Residence] 插件数据 保存 错误", ex);
|
"[Residence] 插件数据 保存 错误", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -136,11 +268,33 @@ public class Residence extends JavaPlugin {
|
|||||||
public Residence() {
|
public Residence() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reloadPlugin() {
|
private boolean checkNewLanguageVersion(String lang) throws IOException, FileNotFoundException,
|
||||||
this.onDisable();
|
InvalidConfigurationException {
|
||||||
this.reloadConfig();
|
File outFile = new File(new File(this.getDataFolder(), "Language"), lang + ".yml");
|
||||||
this.onEnable();
|
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
|
@Override
|
||||||
@@ -151,14 +305,89 @@ public class Residence extends JavaPlugin {
|
|||||||
return Config.getInstance();
|
return Config.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void loadEssentialsEconomy() {
|
||||||
public void saveConfig() {
|
Plugin p = getServer().getPluginManager().getPlugin("Essentials");
|
||||||
Config.save();
|
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
|
private void loadVaultEconomy() {
|
||||||
public void reloadConfig() {
|
Plugin p = getServer().getPluginManager().getPlugin("Vault");
|
||||||
Config.load(this);
|
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<String, Object> worlds = new HashMap<String, Object>();
|
||||||
|
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<String, Long>) yml.getRoot().get("Leases"),
|
||||||
|
rmanager);
|
||||||
|
}
|
||||||
|
loadFile = new File(saveFolder, "permlists.yml");
|
||||||
|
if (loadFile.isFile()) {
|
||||||
|
yml = new YMLSaveHelper(loadFile);
|
||||||
|
yml.load();
|
||||||
|
pmanager = PermissionListManager.load((Map<String, Object>) yml.getRoot().get(
|
||||||
|
"PermissionLists"));
|
||||||
|
}
|
||||||
|
loadFile = new File(saveFolder, "rent.yml");
|
||||||
|
if (loadFile.isFile()) {
|
||||||
|
yml = new YMLSaveHelper(loadFile);
|
||||||
|
yml.load();
|
||||||
|
rentmanager = RentManager.load((Map<String, Object>) 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
|
@Override
|
||||||
@@ -176,11 +405,9 @@ public class Residence extends JavaPlugin {
|
|||||||
saveYml();
|
saveYml();
|
||||||
ZipLibrary.backup();
|
ZipLibrary.backup();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.getLogger("Minecraft").log(Level.SEVERE,
|
Logger.getLogger("Minecraft").log(Level.SEVERE, "[Residence] 插件数据保存失败", ex);
|
||||||
"[Residence] 插件数据保存失败", ex);
|
|
||||||
}
|
}
|
||||||
Logger.getLogger("Minecraft").log(Level.INFO,
|
Logger.getLogger("Minecraft").log(Level.INFO, "[Residence] Disabled!");
|
||||||
"[Residence] Disabled!");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,8 +438,7 @@ public class Residence extends JavaPlugin {
|
|||||||
Plugin plugin = server.getPluginManager().getPlugin(multiworld);
|
Plugin plugin = server.getPluginManager().getPlugin(multiworld);
|
||||||
if (plugin != null) {
|
if (plugin != null) {
|
||||||
if (!plugin.isEnabled()) {
|
if (!plugin.isEnabled()) {
|
||||||
System.out.println("[Residence] - 加载多世界插件: "
|
System.out.println("[Residence] - 加载多世界插件: " + multiworld);
|
||||||
+ multiworld);
|
|
||||||
server.getPluginManager().enablePlugin(plugin);
|
server.getPluginManager().enablePlugin(plugin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -228,33 +454,28 @@ public class Residence extends JavaPlugin {
|
|||||||
this.writeDefaultLanguageFile(lang);
|
this.writeDefaultLanguageFile(lang);
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
System.out
|
System.out.println("[Residence] 语言文件升级失败: " + lang + ".yml");
|
||||||
.println("[Residence] 语言文件升级失败: " + lang + ".yml");
|
|
||||||
helppages = new HelpEntry("");
|
helppages = new HelpEntry("");
|
||||||
language = new Language();
|
language = new Language();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
File langFile = new File(new File(dataFolder, "Language"),
|
File langFile = new File(new File(dataFolder, "Language"), cmanager.getLanguage()
|
||||||
cmanager.getLanguage() + ".yml");
|
+ ".yml");
|
||||||
if (langFile.isFile()) {
|
if (langFile.isFile()) {
|
||||||
FileConfig langconfig = new FileConfig();
|
FileConfig langconfig = new FileConfig();
|
||||||
langconfig.load(langFile);
|
langconfig.load(langFile);
|
||||||
helppages = HelpEntry.parseHelp(langconfig, "CommandHelp");
|
helppages = HelpEntry.parseHelp(langconfig, "CommandHelp");
|
||||||
HelpEntry.setLinesPerPage(langconfig.getInt(
|
HelpEntry.setLinesPerPage(langconfig.getInt("HelpLinesPerPage", 7));
|
||||||
"HelpLinesPerPage", 7));
|
InformationPager.setLinesPerPage(langconfig.getInt("HelpLinesPerPage", 7));
|
||||||
InformationPager.setLinesPerPage(langconfig.getInt(
|
|
||||||
"HelpLinesPerPage", 7));
|
|
||||||
language = Language.parseText(langconfig, "Language");
|
language = Language.parseText(langconfig, "Language");
|
||||||
} else {
|
} else {
|
||||||
System.out.println("[Residence] 语言文件不存在...");
|
System.out.println("[Residence] 语言文件不存在...");
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
System.out.println("[Residence] 语言文件载入失败: "
|
System.out.println("[Residence] 语言文件载入失败: " + cmanager.getLanguage() + ".yml, 错误: "
|
||||||
+ cmanager.getLanguage() + ".yml, 错误: "
|
|
||||||
+ ex.getMessage());
|
+ ex.getMessage());
|
||||||
Logger.getLogger(Residence.class.getName()).log(Level.SEVERE,
|
Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
null, ex);
|
|
||||||
helppages = new HelpEntry("");
|
helppages = new HelpEntry("");
|
||||||
language = new Language();
|
language = new Language();
|
||||||
}
|
}
|
||||||
@@ -266,8 +487,8 @@ public class Residence extends JavaPlugin {
|
|||||||
.getPermissionsPlugin();
|
.getPermissionsPlugin();
|
||||||
if (vault.economyOK()) {
|
if (vault.economyOK()) {
|
||||||
economy = vault;
|
economy = vault;
|
||||||
System.out.println("[Residence] 发现 Vault 使用经济系统: "
|
System.out
|
||||||
+ vault.getEconomyName());
|
.println("[Residence] 发现 Vault 使用经济系统: " + vault.getEconomyName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (economy == null) {
|
if (economy == null) {
|
||||||
@@ -299,19 +520,16 @@ public class Residence extends JavaPlugin {
|
|||||||
pmanager = new PermissionListManager();
|
pmanager = new PermissionListManager();
|
||||||
}
|
}
|
||||||
if (firstenable) {
|
if (firstenable) {
|
||||||
if (!this.isEnabled()) {
|
if (!this.isEnabled())
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
FlagPermissions.initValidFlags();
|
FlagPermissions.initValidFlags();
|
||||||
Plugin p = server.getPluginManager().getPlugin("WorldEdit");
|
Plugin p = server.getPluginManager().getPlugin("WorldEdit");
|
||||||
if (p != null) {
|
if (p != null) {
|
||||||
smanager = new WorldEditSelectionManager(server);
|
smanager = new WorldEditSelectionManager(server);
|
||||||
Logger.getLogger("Minecraft").log(Level.INFO,
|
Logger.getLogger("Minecraft").log(Level.INFO, "[Residence] 发现 WorldEdit");
|
||||||
"[Residence] 发现 WorldEdit");
|
|
||||||
} else {
|
} else {
|
||||||
smanager = new SelectionManager(server);
|
smanager = new SelectionManager(server);
|
||||||
Logger.getLogger("Minecraft").log(Level.INFO,
|
Logger.getLogger("Minecraft").log(Level.INFO, "[Residence] WorldEdit 未找到!");
|
||||||
"[Residence] WorldEdit 未找到!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
blistener = new ResidenceBlockListener();
|
blistener = new ResidenceBlockListener();
|
||||||
@@ -331,18 +549,16 @@ public class Residence extends JavaPlugin {
|
|||||||
autosaveInt = 1;
|
autosaveInt = 1;
|
||||||
}
|
}
|
||||||
autosaveInt = autosaveInt * 60 * 20;
|
autosaveInt = autosaveInt * 60 * 20;
|
||||||
autosaveBukkitId = server.getScheduler().scheduleSyncRepeatingTask(
|
autosaveBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, autoSave,
|
||||||
this, autoSave, autosaveInt, autosaveInt);
|
autosaveInt, autosaveInt);
|
||||||
healBukkitId = server.getScheduler().scheduleSyncRepeatingTask(
|
healBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, doHeals, 20, 20);
|
||||||
this, doHeals, 20, 20);
|
|
||||||
if (cmanager.useLeases()) {
|
if (cmanager.useLeases()) {
|
||||||
int leaseInterval = cmanager.getLeaseCheckInterval();
|
int leaseInterval = cmanager.getLeaseCheckInterval();
|
||||||
if (leaseInterval < 1) {
|
if (leaseInterval < 1) {
|
||||||
leaseInterval = 1;
|
leaseInterval = 1;
|
||||||
}
|
}
|
||||||
leaseInterval = leaseInterval * 60 * 20;
|
leaseInterval = leaseInterval * 60 * 20;
|
||||||
leaseBukkitId = server.getScheduler()
|
leaseBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, leaseExpire,
|
||||||
.scheduleSyncRepeatingTask(this, leaseExpire,
|
|
||||||
leaseInterval, leaseInterval);
|
leaseInterval, leaseInterval);
|
||||||
}
|
}
|
||||||
if (cmanager.enabledRentSystem()) {
|
if (cmanager.enabledRentSystem()) {
|
||||||
@@ -351,197 +567,40 @@ public class Residence extends JavaPlugin {
|
|||||||
rentint = 1;
|
rentint = 1;
|
||||||
}
|
}
|
||||||
rentint = rentint * 60 * 20;
|
rentint = rentint * 60 * 20;
|
||||||
rentBukkitId = server.getScheduler().scheduleSyncRepeatingTask(
|
rentBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, rentExpire,
|
||||||
this, rentExpire, rentint, rentint);
|
rentint, rentint);
|
||||||
}
|
}
|
||||||
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
|
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
|
||||||
if (Residence.getPermissionManager().isResidenceAdmin(player)) {
|
if (Residence.getPermissionManager().isResidenceAdmin(player)) {
|
||||||
turnResAdminOn(player);
|
turnResAdminOn(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
Logger.getLogger("Minecraft").log(Level.INFO,
|
||||||
Metrics metrics = new Metrics(this);
|
"[Residence] 载入完成! 版本: " + this.getDescription().getVersion() + " 重制 by 喵♂呜");
|
||||||
metrics.start();
|
|
||||||
} catch (IOException e) {
|
|
||||||
// Failed to submit the stats :-(
|
|
||||||
}
|
|
||||||
Logger.getLogger("Minecraft")
|
|
||||||
.log(Level.INFO,
|
|
||||||
"[Residence] 载入完成! 版本: "
|
|
||||||
+ this.getDescription().getVersion()
|
|
||||||
+ " 重制 by 喵♂呜");
|
|
||||||
initsuccess = true;
|
initsuccess = true;
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
initsuccess = false;
|
initsuccess = false;
|
||||||
getServer().getPluginManager().disablePlugin(this);
|
getServer().getPluginManager().disablePlugin(this);
|
||||||
System.out.println("[Residence] - 初始化失败! 卸载插件! 错误:");
|
System.out.println("[Residence] - 初始化失败! 卸载插件! 错误:");
|
||||||
Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null,
|
Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
ex);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void consoleMessage(String message) {
|
@Override
|
||||||
ConsoleCommandSender console = Bukkit.getConsoleSender();
|
public void reloadConfig() {
|
||||||
console.sendMessage("[Residence] " + message);
|
Config.load(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean validName(String name) {
|
public void reloadPlugin() {
|
||||||
if (name.contains(":") || name.contains(".")) {
|
this.onDisable();
|
||||||
return false;
|
this.reloadConfig();
|
||||||
}
|
this.onEnable();
|
||||||
if (cmanager.getResidenceNameRegex() == null) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
String namecheck = name.replaceAll(
|
|
||||||
cmanager.getResidenceNameRegex(), "");
|
|
||||||
if (!name.equals(namecheck)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static File getDataLocation() {
|
@Override
|
||||||
return dataFolder;
|
public void saveConfig() {
|
||||||
}
|
Config.save();
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveYml() throws IOException {
|
private void saveYml() throws IOException {
|
||||||
@@ -551,22 +610,20 @@ public class Residence extends JavaPlugin {
|
|||||||
YMLSaveHelper yml;
|
YMLSaveHelper yml;
|
||||||
Map<String, Object> save = rmanager.save();
|
Map<String, Object> save = rmanager.save();
|
||||||
for (Entry<String, Object> entry : save.entrySet()) {
|
for (Entry<String, Object> entry : save.entrySet()) {
|
||||||
File ymlSaveLoc = new File(worldFolder, "res_" + entry.getKey()
|
File ymlSaveLoc = new File(worldFolder, "res_" + entry.getKey() + ".yml");
|
||||||
+ ".yml");
|
File tmpFile = new File(worldFolder, "tmp_res_" + entry.getKey() + ".yml");
|
||||||
File tmpFile = new File(worldFolder, "tmp_res_" + entry.getKey()
|
|
||||||
+ ".yml");
|
|
||||||
yml = new YMLSaveHelper(tmpFile);
|
yml = new YMLSaveHelper(tmpFile);
|
||||||
yml.getRoot().put("Version", saveVersion);
|
yml.getRoot().put("Version", saveVersion);
|
||||||
World world = server.getWorld(entry.getKey());
|
World world = server.getWorld(entry.getKey());
|
||||||
if (world != null)
|
if (world != null) {
|
||||||
yml.getRoot().put("Seed", world.getSeed());
|
yml.getRoot().put("Seed", world.getSeed());
|
||||||
yml.getRoot().put("Residences", (Map<?, ?>) entry.getValue());
|
}
|
||||||
|
yml.getRoot().put("Residences", entry.getValue());
|
||||||
yml.save();
|
yml.save();
|
||||||
if (ymlSaveLoc.isFile()) {
|
if (ymlSaveLoc.isFile()) {
|
||||||
File backupFolder = new File(worldFolder, "Backup");
|
File backupFolder = new File(worldFolder, "Backup");
|
||||||
backupFolder.mkdirs();
|
backupFolder.mkdirs();
|
||||||
File backupFile = new File(backupFolder, "res_"
|
File backupFile = new File(backupFolder, "res_" + entry.getKey() + ".yml");
|
||||||
+ entry.getKey() + ".yml");
|
|
||||||
if (backupFile.isFile()) {
|
if (backupFile.isFile()) {
|
||||||
backupFile.delete();
|
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<String, Object> worlds = new HashMap<String, Object>();
|
|
||||||
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<String, Long>) yml
|
|
||||||
.getRoot().get("Leases"), rmanager);
|
|
||||||
}
|
|
||||||
loadFile = new File(saveFolder, "permlists.yml");
|
|
||||||
if (loadFile.isFile()) {
|
|
||||||
yml = new YMLSaveHelper(loadFile);
|
|
||||||
yml.load();
|
|
||||||
pmanager = PermissionListManager.load((Map<String, Object>) yml
|
|
||||||
.getRoot().get("PermissionLists"));
|
|
||||||
}
|
|
||||||
loadFile = new File(saveFolder, "rent.yml");
|
|
||||||
if (loadFile.isFile()) {
|
|
||||||
yml = new YMLSaveHelper(loadFile);
|
|
||||||
yml.load();
|
|
||||||
rentmanager = RentManager.load((Map<String, Object>) 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() {
|
private void writeDefaultConfigFromJar() {
|
||||||
if (this.writeDefaultFileFromJar(new File(this.getDataFolder(),
|
if (this.writeDefaultFileFromJar(new File(this.getDataFolder(), "config.yml"),
|
||||||
"config.yml"), "config.yml", true)) {
|
"config.yml", true)) {
|
||||||
System.out.println("[Residence] 保存默认配置文件...");
|
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")
|
@SuppressWarnings("resource")
|
||||||
private boolean writeDefaultFileFromJar(File writeName, String jarPath,
|
private boolean writeDefaultFileFromJar(File writeName, String jarPath, boolean backupOld) {
|
||||||
boolean backupOld) {
|
|
||||||
try {
|
try {
|
||||||
File fileBackup = new File(this.getDataFolder(), "backup-"
|
File fileBackup = new File(this.getDataFolder(), "backup-" + writeName);
|
||||||
+ writeName);
|
File jarloc = new File(getClass().getProtectionDomain().getCodeSource().getLocation()
|
||||||
File jarloc = new File(getClass().getProtectionDomain()
|
.toURI()).getCanonicalFile();
|
||||||
.getCodeSource().getLocation().toURI()).getCanonicalFile();
|
|
||||||
if (jarloc.isFile()) {
|
if (jarloc.isFile()) {
|
||||||
JarFile jar = new JarFile(jarloc);
|
JarFile jar = new JarFile(jarloc);
|
||||||
JarEntry entry = jar.getJarEntry(jarPath);
|
JarEntry entry = jar.getJarEntry(jarPath);
|
||||||
@@ -801,4 +758,12 @@ public class Residence extends JavaPlugin {
|
|||||||
return false;
|
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 + " 语言文件...");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -30,15 +30,9 @@ import com.google.common.io.Files;
|
|||||||
*/
|
*/
|
||||||
public class FileConfig extends YamlConfiguration {
|
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) {
|
public static FileConfig init(File file) {
|
||||||
return FileConfig.loadConfiguration(file);
|
return FileConfig.loadConfiguration(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static FileConfig loadConfiguration(File file) {
|
public static FileConfig loadConfiguration(File file) {
|
||||||
Validate.notNull(file, "File cannot be null");
|
Validate.notNull(file, "File cannot be null");
|
||||||
FileConfig config = new FileConfig();
|
FileConfig config = new FileConfig();
|
||||||
@@ -52,6 +46,34 @@ public class FileConfig extends YamlConfiguration {
|
|||||||
}
|
}
|
||||||
return config;
|
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
|
@Override
|
||||||
public String saveToString() {
|
public String saveToString() {
|
||||||
@@ -65,24 +87,4 @@ public class FileConfig extends YamlConfiguration {
|
|||||||
}
|
}
|
||||||
return header + dump;
|
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
|
|
||||||
package com.bekvon.bukkit.residence.event;
|
package com.bekvon.bukkit.residence.event;
|
||||||
|
|
||||||
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
|
||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
|
|
||||||
|
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
@@ -21,10 +22,12 @@ public class CancellableResidenceEvent extends ResidenceEvent implements Cancell
|
|||||||
super(eventName,resref);
|
super(eventName,resref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isCancelled() {
|
public boolean isCancelled() {
|
||||||
return cancelled;
|
return cancelled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setCancelled(boolean bln) {
|
public void setCancelled(boolean bln) {
|
||||||
cancelled = bln;
|
cancelled = bln;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,10 +5,11 @@
|
|||||||
|
|
||||||
package com.bekvon.bukkit.residence.event;
|
package com.bekvon.bukkit.residence.event;
|
||||||
|
|
||||||
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
|
|
||||||
|
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
@@ -23,10 +24,12 @@ public class CancellableResidencePlayerEvent extends ResidencePlayerEvent implem
|
|||||||
cancelled = false;
|
cancelled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isCancelled() {
|
public boolean isCancelled() {
|
||||||
return cancelled;
|
return cancelled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setCancelled(boolean bln) {
|
public void setCancelled(boolean bln) {
|
||||||
cancelled = bln;
|
cancelled = bln;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,10 +5,11 @@
|
|||||||
|
|
||||||
package com.bekvon.bukkit.residence.event;
|
package com.bekvon.bukkit.residence.event;
|
||||||
|
|
||||||
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
|
|
||||||
|
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
@@ -22,10 +23,12 @@ public class CancellableResidencePlayerFlagEvent extends ResidencePlayerFlagEven
|
|||||||
super(eventName, resref, player, flag, type, target);
|
super(eventName, resref, player, flag, type, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isCancelled() {
|
public boolean isCancelled() {
|
||||||
return cancelled;
|
return cancelled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setCancelled(boolean bln) {
|
public void setCancelled(boolean bln) {
|
||||||
cancelled = bln;
|
cancelled = bln;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,20 +17,15 @@ import org.bukkit.event.HandlerList;
|
|||||||
public class ResidenceCommandEvent extends Event implements Cancellable {
|
public class ResidenceCommandEvent extends Event implements Cancellable {
|
||||||
|
|
||||||
private static final HandlerList handlers = new HandlerList();
|
private static final HandlerList handlers = new HandlerList();
|
||||||
@Override
|
|
||||||
public HandlerList getHandlers() {
|
|
||||||
return handlers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static HandlerList getHandlerList() {
|
public static HandlerList getHandlerList() {
|
||||||
return handlers;
|
return handlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean cancelled;
|
protected boolean cancelled;
|
||||||
|
|
||||||
protected String cmd;
|
protected String cmd;
|
||||||
protected String arglist[];
|
protected String arglist[];
|
||||||
CommandSender commandsender;
|
CommandSender commandsender;
|
||||||
|
|
||||||
public ResidenceCommandEvent(String command, String args[], CommandSender sender)
|
public ResidenceCommandEvent(String command, String args[], CommandSender sender)
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
@@ -40,12 +35,9 @@ public class ResidenceCommandEvent extends Event implements Cancellable {
|
|||||||
commandsender = sender;
|
commandsender = sender;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isCancelled() {
|
public String[] getArgs()
|
||||||
return cancelled;
|
{
|
||||||
}
|
return arglist;
|
||||||
|
|
||||||
public void setCancelled(boolean bln) {
|
|
||||||
cancelled = bln;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCommand()
|
public String getCommand()
|
||||||
@@ -53,9 +45,9 @@ public class ResidenceCommandEvent extends Event implements Cancellable {
|
|||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String[] getArgs()
|
@Override
|
||||||
{
|
public HandlerList getHandlers() {
|
||||||
return arglist;
|
return handlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommandSender getSender()
|
public CommandSender getSender()
|
||||||
@@ -63,4 +55,14 @@ public class ResidenceCommandEvent extends Event implements Cancellable {
|
|||||||
return commandsender;
|
return commandsender;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean bln) {
|
||||||
|
cancelled = bln;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,10 +5,11 @@
|
|||||||
|
|
||||||
package com.bekvon.bukkit.residence.event;
|
package com.bekvon.bukkit.residence.event;
|
||||||
|
|
||||||
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
@@ -16,16 +17,12 @@ import org.bukkit.event.HandlerList;
|
|||||||
public class ResidenceEvent extends Event {
|
public class ResidenceEvent extends Event {
|
||||||
|
|
||||||
private static final HandlerList handlers = new HandlerList();
|
private static final HandlerList handlers = new HandlerList();
|
||||||
private String message;
|
|
||||||
|
|
||||||
public HandlerList getHandlers() {
|
|
||||||
return handlers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static HandlerList getHandlerList() {
|
public static HandlerList getHandlerList() {
|
||||||
return handlers;
|
return handlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String message;
|
||||||
|
|
||||||
ClaimedResidence res;
|
ClaimedResidence res;
|
||||||
|
|
||||||
public ResidenceEvent(String eventName, ClaimedResidence resref)
|
public ResidenceEvent(String eventName, ClaimedResidence resref)
|
||||||
@@ -34,6 +31,11 @@ public class ResidenceEvent extends Event {
|
|||||||
res = resref;
|
res = resref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,28 +5,25 @@
|
|||||||
|
|
||||||
package com.bekvon.bukkit.residence.event;
|
package com.bekvon.bukkit.residence.event;
|
||||||
|
|
||||||
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
*/
|
*/
|
||||||
public class ResidenceFlagCheckEvent extends ResidenceFlagEvent {
|
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() {
|
public static HandlerList getHandlerList() {
|
||||||
return handlers;
|
return handlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean override;
|
private boolean override;
|
||||||
|
|
||||||
private boolean overridevalue;
|
private boolean overridevalue;
|
||||||
boolean defaultvalue;
|
boolean defaultvalue;
|
||||||
|
|
||||||
public ResidenceFlagCheckEvent(ClaimedResidence resref, String flag, FlagType type, String target, boolean defaultValue)
|
public ResidenceFlagCheckEvent(ClaimedResidence resref, String flag, FlagType type, String target, boolean defaultValue)
|
||||||
{
|
{
|
||||||
super("RESIDENCE_FLAG_CHECK", resref, flag, type, target);
|
super("RESIDENCE_FLAG_CHECK", resref, flag, type, target);
|
||||||
@@ -34,6 +31,21 @@ private static final HandlerList handlers = new HandlerList();
|
|||||||
override = false;
|
override = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getDefaultValue()
|
||||||
|
{
|
||||||
|
return defaultvalue;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getOverrideValue()
|
||||||
|
{
|
||||||
|
return overridevalue;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isOverriden()
|
public boolean isOverriden()
|
||||||
{
|
{
|
||||||
return override;
|
return override;
|
||||||
@@ -44,14 +56,4 @@ private static final HandlerList handlers = new HandlerList();
|
|||||||
overridevalue = flagval;
|
overridevalue = flagval;
|
||||||
override=true;
|
override=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getOverrideValue()
|
|
||||||
{
|
|
||||||
return overridevalue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean getDefaultValue()
|
|
||||||
{
|
|
||||||
return defaultvalue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
|
|
||||||
package com.bekvon.bukkit.residence.event;
|
package com.bekvon.bukkit.residence.event;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.bekvon.bukkit.residence.Residence;
|
import com.bekvon.bukkit.residence.Residence;
|
||||||
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -24,21 +25,22 @@ public class ResidencePlayerEvent extends ResidenceEvent implements ResidencePla
|
|||||||
p = player;
|
p = player;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPlayer()
|
@Override
|
||||||
{
|
|
||||||
return p!=null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAdmin()
|
|
||||||
{
|
|
||||||
if(isPlayer())
|
|
||||||
{
|
|
||||||
return Residence.getPermissionManager().isResidenceAdmin(p);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
public Player getPlayer()
|
public Player getPlayer()
|
||||||
{
|
{
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAdmin()
|
||||||
|
{
|
||||||
|
if(isPlayer())
|
||||||
|
return Residence.getPermissionManager().isResidenceAdmin(p);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public boolean isPlayer()
|
||||||
|
{
|
||||||
|
return p!=null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
|
|
||||||
package com.bekvon.bukkit.residence.event;
|
package com.bekvon.bukkit.residence.event;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.bekvon.bukkit.residence.Residence;
|
import com.bekvon.bukkit.residence.Residence;
|
||||||
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -22,21 +23,22 @@ public class ResidencePlayerFlagEvent extends ResidenceFlagEvent implements Resi
|
|||||||
p = player;
|
p = player;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Player getPlayer() {
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAdmin()
|
||||||
|
{
|
||||||
|
if(isPlayer())
|
||||||
|
return Residence.getPermissionManager().isResidenceAdmin(p);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isPlayer()
|
public boolean isPlayer()
|
||||||
{
|
{
|
||||||
return p!=null;
|
return p!=null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAdmin()
|
|
||||||
{
|
|
||||||
if(isPlayer())
|
|
||||||
{
|
|
||||||
return Residence.getPermissionManager().isResidenceAdmin(p);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Player getPlayer() {
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ public class ResidenceRenameEvent extends ResidenceEvent {
|
|||||||
public String getOldResidenceName() {
|
public String getOldResidenceName() {
|
||||||
return OldResName;
|
return OldResName;
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
public ClaimedResidence getResidence() {
|
public ClaimedResidence getResidence() {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,110 @@ import com.bekvon.bukkit.residence.text.help.InformationPager;
|
|||||||
* @author Administrator
|
* @author Administrator
|
||||||
*/
|
*/
|
||||||
public class ResidenceManager {
|
public class ResidenceManager {
|
||||||
|
public static final class ChunkRef {
|
||||||
|
|
||||||
|
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 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());
|
||||||
|
}
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return x ^ z;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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<ChunkRef> getChunks(ClaimedResidence res) {
|
||||||
|
List<ChunkRef> chunks = new ArrayList<ChunkRef>();
|
||||||
|
for (CuboidArea area : res.getAreaArray()) {
|
||||||
|
chunks.addAll(area.getChunks());
|
||||||
|
}
|
||||||
|
return chunks;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static ResidenceManager load(Map<String, Object> root) throws Exception {
|
||||||
|
ResidenceManager resm = new ResidenceManager();
|
||||||
|
if (root == null)
|
||||||
|
return resm;
|
||||||
|
for (World world : Residence.getServ().getWorlds()) {
|
||||||
|
Map<String, Object> reslist = (Map<String, Object>) 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static Map<ChunkRef, List<String>> loadMap(Map<String, Object> root, ResidenceManager resm) throws Exception {
|
||||||
|
Map<ChunkRef, List<String>> retRes = new HashMap<ChunkRef, List<String>>();
|
||||||
|
if (root != null) {
|
||||||
|
for (Entry<String, Object> res : root.entrySet()) {
|
||||||
|
try {
|
||||||
|
ClaimedResidence residence = ClaimedResidence.load(
|
||||||
|
(Map<String, Object>) res.getValue(), null);
|
||||||
|
for (ChunkRef chunk : getChunks(residence)) {
|
||||||
|
List<String> ress = new ArrayList<String>();
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
protected Map<String, ClaimedResidence> residences;
|
protected Map<String, ClaimedResidence> residences;
|
||||||
|
|
||||||
protected Map<String, Map<ChunkRef, List<String>>> chunkResidences;
|
protected Map<String, Map<ChunkRef, List<String>>> chunkResidences;
|
||||||
|
|
||||||
public ResidenceManager() {
|
public ResidenceManager() {
|
||||||
@@ -44,111 +147,6 @@ public class ResidenceManager {
|
|||||||
chunkResidences = new HashMap<String, Map<ChunkRef, List<String>>>();
|
chunkResidences = new HashMap<String, Map<ChunkRef, List<String>>>();
|
||||||
}
|
}
|
||||||
|
|
||||||
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 ClaimedResidence getByName(String name) {
|
|
||||||
if (name == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
String[] split = name.split("\\.");
|
|
||||||
if (split.length == 1) {
|
|
||||||
return residences.get(name);
|
|
||||||
}
|
|
||||||
ClaimedResidence res = residences.get(split[0]);
|
|
||||||
for (int i = 1; i < split.length; i++) {
|
|
||||||
if (res != null) {
|
|
||||||
res = res.getSubzone(split[i]);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getNameByLoc(Location loc) {
|
|
||||||
if (loc == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
ClaimedResidence res = null;
|
|
||||||
String name = null;
|
|
||||||
boolean found = false;
|
|
||||||
String world = loc.getWorld().getName();
|
|
||||||
ChunkRef chunk = new ChunkRef( loc );
|
|
||||||
if (chunkResidences.get(world) != null) {
|
|
||||||
if (chunkResidences.get(world).get(chunk) != null) {
|
|
||||||
for (String key : chunkResidences.get(world).get(chunk)) {
|
|
||||||
ClaimedResidence entry = residences.get(key);
|
|
||||||
if (entry.containsLoc(loc)) {
|
|
||||||
res = entry;
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!found) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
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<Entry<String, ClaimedResidence>> set = residences.entrySet();
|
|
||||||
for (Entry<String, ClaimedResidence> 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 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) {
|
public boolean addResidence(Player player, String name, Location loc1, Location loc2, boolean resadmin) {
|
||||||
return this.addResidence(player, player.getName(), name, loc1, loc2, resadmin);
|
return this.addResidence(player, player.getName(), name, loc1, loc2, resadmin);
|
||||||
}
|
}
|
||||||
@@ -188,9 +186,8 @@ public class ResidenceManager {
|
|||||||
|
|
||||||
ResidenceCreationEvent resevent = new ResidenceCreationEvent(player, name, newRes, newArea);
|
ResidenceCreationEvent resevent = new ResidenceCreationEvent(player, name, newRes, newArea);
|
||||||
Residence.getServ().getPluginManager().callEvent(resevent);
|
Residence.getServ().getPluginManager().callEvent(resevent);
|
||||||
if (resevent.isCancelled()) {
|
if (resevent.isCancelled())
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
newArea = resevent.getPhysicalArea();
|
newArea = resevent.getPhysicalArea();
|
||||||
name = resevent.getResidenceName();
|
name = resevent.getResidenceName();
|
||||||
if (residences.containsKey(name)) {
|
if (residences.containsKey(name)) {
|
||||||
@@ -223,50 +220,141 @@ public class ResidenceManager {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void listResidences(Player player) {
|
public boolean addResidence(String name, Location loc1, Location loc2) {
|
||||||
this.listResidences(player, player.getName(), 1);
|
return this.addResidence(name, "Server Land", loc1, loc2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void listResidences(Player player, int page) {
|
public boolean addResidence(String name, String owner, Location loc1, Location loc2) {
|
||||||
this.listResidences(player, player.getName(), page);
|
return this.addResidence(null, owner, name, loc1, loc2, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void listResidences(Player player, String targetplayer) {
|
public void calculateChunks(String name) {
|
||||||
this.listResidences(player, targetplayer, 1);
|
ClaimedResidence res = residences.get(name);
|
||||||
|
if (res != null) {
|
||||||
|
String world = res.getWorld();
|
||||||
|
if (chunkResidences.get(world) == null) {
|
||||||
|
chunkResidences.put(world, new HashMap<ChunkRef, List<String>>());
|
||||||
|
}
|
||||||
|
for (ChunkRef chunk : getChunks(res)) {
|
||||||
|
List<String> ress = new ArrayList<String>();
|
||||||
|
if (chunkResidences.get(world).containsKey(chunk)) {
|
||||||
|
ress.addAll(chunkResidences.get(world).get(chunk));
|
||||||
|
}
|
||||||
|
ress.add(name);
|
||||||
|
chunkResidences.get(world).put(chunk, ress);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void listResidences(Player player, String targetplayer, int page) {
|
public String checkAreaCollision(CuboidArea newarea, ClaimedResidence parentResidence) {
|
||||||
this.listResidences(player, targetplayer, page, false);
|
Set<Entry<String, ClaimedResidence>> set = residences.entrySet();
|
||||||
|
for (Entry<String, ClaimedResidence> entry : set) {
|
||||||
|
ClaimedResidence check = entry.getValue();
|
||||||
|
if (check != parentResidence && check.checkCollision(newarea))
|
||||||
|
return entry.getKey();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void listResidences(Player player, int page, boolean showhidden) {
|
public ClaimedResidence getByLoc(Location loc) {
|
||||||
this.listResidences(player, player.getName(), page, showhidden);
|
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 void listResidences(Player player, String targetplayer, int page, boolean showhidden) {
|
public ClaimedResidence getByName(String name) {
|
||||||
this.listResidences(player, targetplayer, page, showhidden, false);
|
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 void listResidences(Player player, String targetplayer, int page, boolean showhidden, boolean showsubzones) {
|
public String getNameByLoc(Location loc) {
|
||||||
if (showhidden && !Residence.isResAdminOn(player) && !player.getName().equals(targetplayer)) {
|
if (loc == null)
|
||||||
showhidden = false;
|
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;
|
||||||
}
|
}
|
||||||
InformationPager.printInfo(player, Residence.getLanguage().getPhrase("Residences") + " - " + targetplayer, this.getResidenceList(targetplayer, showhidden, showsubzones, true), page);
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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 void listAllResidences(Player player, int page) {
|
public String getNameByRes(ClaimedResidence res) {
|
||||||
this.listAllResidences(player, page, false);
|
Set<Entry<String, ClaimedResidence>> set = residences.entrySet();
|
||||||
|
for (Entry<String, ClaimedResidence> 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 void listAllResidences(Player player, int page, boolean showhidden) {
|
public int getOwnedZoneCount(String player) {
|
||||||
this.listAllResidences(player, page, showhidden, false);
|
Collection<ClaimedResidence> set = residences.values();
|
||||||
|
int count = 0;
|
||||||
|
for (ClaimedResidence res : set) {
|
||||||
|
if (res.getPermissions().getOwner().equalsIgnoreCase(player)) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void listAllResidences(Player player, int page, boolean showhidden, boolean showsubzones) {
|
public int getResidenceCount() {
|
||||||
if (showhidden && !Residence.isResAdminOn(player)) {
|
return residences.size();
|
||||||
showhidden = false;
|
|
||||||
}
|
|
||||||
InformationPager.printInfo(player, Residence.getLanguage().getPhrase("Residences"), this.getResidenceList(null, showhidden, showsubzones, true), page);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String[] getResidenceList() {
|
public String[] getResidenceList() {
|
||||||
@@ -307,279 +395,6 @@ public class ResidenceManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String checkAreaCollision(CuboidArea newarea, ClaimedResidence parentResidence) {
|
|
||||||
Set<Entry<String, ClaimedResidence>> set = residences.entrySet();
|
|
||||||
for (Entry<String, ClaimedResidence> 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<String, ClaimedResidence> resholder) {
|
|
||||||
Iterator<ClaimedResidence> 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<ClaimedResidence> 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<String, Object> save() {
|
|
||||||
Map<String, Object> worldmap = new LinkedHashMap<String, Object>();
|
|
||||||
for (World world : Residence.getServ().getWorlds()) {
|
|
||||||
Map<String, Object> resmap = new LinkedHashMap<String, Object>();
|
|
||||||
for (Entry<String, ClaimedResidence> 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")
|
|
||||||
public static ResidenceManager load(Map<String, Object> root) throws Exception {
|
|
||||||
ResidenceManager resm = new ResidenceManager();
|
|
||||||
if (root == null) {
|
|
||||||
return resm;
|
|
||||||
}
|
|
||||||
for (World world : Residence.getServ().getWorlds()) {
|
|
||||||
Map<String, Object> reslist = (Map<String, Object>) 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public static Map<ChunkRef, List<String>> loadMap(Map<String, Object> root, ResidenceManager resm) throws Exception {
|
|
||||||
Map<ChunkRef, List<String>> retRes = new HashMap<ChunkRef, List<String>>();
|
|
||||||
if (root != null) {
|
|
||||||
for (Entry<String, Object> res : root.entrySet()) {
|
|
||||||
try {
|
|
||||||
ClaimedResidence residence = ClaimedResidence.load(
|
|
||||||
(Map<String, Object>) res.getValue(), null);
|
|
||||||
for (ChunkRef chunk : getChunks(residence)) {
|
|
||||||
List<String> ress = new ArrayList<String>();
|
|
||||||
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<ChunkRef> getChunks(ClaimedResidence res) {
|
|
||||||
List<ChunkRef> chunks = new ArrayList<ChunkRef>();
|
|
||||||
for (CuboidArea area : res.getAreaArray()) {
|
|
||||||
chunks.addAll(area.getChunks());
|
|
||||||
}
|
|
||||||
return chunks;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean renameResidence(String oldName, String newName) {
|
|
||||||
return this.renameResidence(null, oldName, newName, 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 void giveResidence(Player reqPlayer, String targPlayer, String residence, boolean resadmin) {
|
public void giveResidence(Player reqPlayer, String targPlayer, String residence, boolean resadmin) {
|
||||||
ClaimedResidence res = getByName(residence);
|
ClaimedResidence res = getByName(residence);
|
||||||
if (res == null) {
|
if (res == null) {
|
||||||
@@ -619,6 +434,128 @@ public class ResidenceManager {
|
|||||||
giveplayer.sendMessage(Residence.getLanguage().getPhrase("ResidenceRecieve", ChatColor.GREEN + residence + ChatColor.YELLOW + "." + ChatColor.GREEN + reqPlayer.getName() + ChatColor.YELLOW));
|
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<String, ClaimedResidence> resholder) {
|
||||||
|
Iterator<ClaimedResidence> 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) {
|
public void removeAllFromWorld(CommandSender sender, String world) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
Iterator<ClaimedResidence> it = residences.values().iterator();
|
Iterator<ClaimedResidence> it = residences.values().iterator();
|
||||||
@@ -638,10 +575,6 @@ public class ResidenceManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getResidenceCount() {
|
|
||||||
return residences.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeChunkList(String name) {
|
public void removeChunkList(String name) {
|
||||||
ClaimedResidence res = residences.get(name);
|
ClaimedResidence res = residences.get(name);
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
@@ -659,68 +592,119 @@ public class ResidenceManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void calculateChunks(String name) {
|
public void removeResidence(Player player, String name, boolean resadmin) {
|
||||||
ClaimedResidence res = residences.get(name);
|
ClaimedResidence res = this.getByName(name);
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
String world = res.getWorld();
|
if (player != null && !resadmin) {
|
||||||
if (chunkResidences.get(world) == null) {
|
if (!res.getPermissions().hasResidencePermission(player, true) && !resadmin) {
|
||||||
chunkResidences.put(world, new HashMap<ChunkRef, List<String>>());
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
for (ChunkRef chunk : getChunks(res)) {
|
|
||||||
List<String> ress = new ArrayList<String>();
|
|
||||||
if (chunkResidences.get(world).containsKey(chunk)) {
|
|
||||||
ress.addAll(chunkResidences.get(world).get(chunk));
|
|
||||||
}
|
}
|
||||||
ress.add(name);
|
ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(player, res, player == null ? DeleteCause.OTHER : DeleteCause.PLAYER_DELETE);
|
||||||
chunkResidences.get(world).put(chunk, ress);
|
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 static final class ChunkRef {
|
public void removeResidence(String name) {
|
||||||
|
this.removeResidence(null, name, true);
|
||||||
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 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public boolean renameResidence(Player player, String oldName, String newName, boolean resadmin) {
|
||||||
public boolean equals(final Object obj) {
|
if (!Residence.validName(newName)) {
|
||||||
if (this == obj) {
|
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;
|
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"));
|
||||||
}
|
}
|
||||||
if (obj == null) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (getClass() != obj.getClass()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
ChunkRef other = (ChunkRef) obj;
|
|
||||||
return this.x == other.x && this.z == other.z;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int hashCode() {
|
public boolean renameResidence(String oldName, String newName) {
|
||||||
return x ^ z;
|
return this.renameResidence(null, oldName, newName, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public Map<String, Object> save() {
|
||||||
* Useful for debug
|
Map<String, Object> worldmap = new LinkedHashMap<String, Object>();
|
||||||
*/
|
for (World world : Residence.getServ().getWorlds()) {
|
||||||
public String toString() {
|
Map<String, Object> resmap = new LinkedHashMap<String, Object>();
|
||||||
StringBuilder sb = new StringBuilder();
|
for (Entry<String, ClaimedResidence> res : residences.entrySet()) {
|
||||||
sb.append( "{ x: " ).append(x).append( ", z: " ).append( z ).append( " }" );
|
if (res.getValue().getWorld().equals(world.getName())) {
|
||||||
return sb.toString();
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,6 @@
|
|||||||
|
|
||||||
package com.bekvon.bukkit.residence.vaultinterface;
|
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.chat.Chat;
|
||||||
import net.milkbowl.vault.economy.Economy;
|
import net.milkbowl.vault.economy.Economy;
|
||||||
import net.milkbowl.vault.permission.Permission;
|
import net.milkbowl.vault.permission.Permission;
|
||||||
@@ -16,91 +13,29 @@ import org.bukkit.Server;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||||
|
|
||||||
|
import com.bekvon.bukkit.residence.economy.EconomyInterface;
|
||||||
|
import com.bekvon.bukkit.residence.permissions.PermissionsInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
*/
|
*/
|
||||||
public class ResidenceVaultAdapter implements EconomyInterface,
|
public class ResidenceVaultAdapter implements EconomyInterface, PermissionsInterface {
|
||||||
PermissionsInterface {
|
|
||||||
|
|
||||||
public static Permission permissions = null;
|
public static Permission permissions = null;
|
||||||
public static Economy economy = null;
|
public static Economy economy = null;
|
||||||
public static Chat chat = 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 ResidenceVaultAdapter(Server s) {
|
public ResidenceVaultAdapter(Server s) {
|
||||||
this.setupPermissions(s);
|
this.setupPermissions(s);
|
||||||
this.setupEconomy(s);
|
this.setupEconomy(s);
|
||||||
this.setupChat(s);
|
this.setupChat(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean setupPermissions(Server s) {
|
|
||||||
RegisteredServiceProvider<Permission> 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<Chat> 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<Economy> 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")
|
@SuppressWarnings("deprecation")
|
||||||
@Override
|
@Override
|
||||||
public double getBalance(String playerName) {
|
public boolean add(String playerName, double amount) {
|
||||||
return economy.getBalance(playerName);
|
return economy.depositPlayer(playerName, amount).transactionSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
@@ -109,10 +44,93 @@ public class ResidenceVaultAdapter implements EconomyInterface,
|
|||||||
return economy.has(playerName, amount);
|
return economy.has(playerName, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean chatOK() {
|
||||||
|
return chat != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean economyOK() {
|
||||||
|
return economy != null;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
@Override
|
@Override
|
||||||
public boolean add(String playerName, double amount) {
|
public double getBalance(String playerName) {
|
||||||
return economy.depositPlayer(playerName, amount).transactionSuccess();
|
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<Chat> 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<Economy> 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<Permission> permissionProvider = s.getServicesManager()
|
||||||
|
.getRegistration(net.milkbowl.vault.permission.Permission.class);
|
||||||
|
if (permissionProvider != null) {
|
||||||
|
permissions = permissionProvider.getProvider();
|
||||||
|
}
|
||||||
|
return (permissions != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
@@ -125,40 +143,14 @@ public class ResidenceVaultAdapter implements EconomyInterface,
|
|||||||
@Override
|
@Override
|
||||||
public boolean transfer(String playerFrom, String playerTo, double amount) {
|
public boolean transfer(String playerFrom, String playerTo, double amount) {
|
||||||
if (economy.withdrawPlayer(playerFrom, amount).transactionSuccess()) {
|
if (economy.withdrawPlayer(playerFrom, amount).transactionSuccess()) {
|
||||||
if (economy.depositPlayer(playerTo, amount).transactionSuccess()) {
|
if (economy.depositPlayer(playerTo, amount).transactionSuccess())
|
||||||
return true;
|
return true;
|
||||||
} else {
|
else {
|
||||||
economy.depositPlayer(playerFrom, amount);
|
economy.depositPlayer(playerFrom, amount);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else
|
||||||
return false;
|
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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user