mirror of
https://e.coding.net/circlecloud/Residence.git
synced 2025-11-24 21:46:16 +00:00
Updata VersionChecker and rewrite DataBackup...
Signed-off-by: j502647092 <jtb1@163.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* To change this template, choose Tools | Templates and open the template in the editor.
|
* To change this template, choose Tools | Templates and open the template in
|
||||||
|
* the editor.
|
||||||
*/
|
*/
|
||||||
package com.bekvon.bukkit.residence;
|
package com.bekvon.bukkit.residence;
|
||||||
|
|
||||||
@@ -55,7 +56,7 @@ 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.utils.VersionChecker;
|
import com.bekvon.bukkit.residence.utils.VersionChecker;
|
||||||
import com.bekvon.bukkit.residence.utils.ZipLibrary;
|
import com.bekvon.bukkit.residence.utils.DataBackup;
|
||||||
import com.bekvon.bukkit.residence.vaultinterface.ResidenceVaultAdapter;
|
import com.bekvon.bukkit.residence.vaultinterface.ResidenceVaultAdapter;
|
||||||
import com.earth2me.essentials.Essentials;
|
import com.earth2me.essentials.Essentials;
|
||||||
|
|
||||||
@@ -82,7 +83,6 @@ public class Residence extends JavaPlugin {
|
|||||||
protected static RentManager rentmanager;
|
protected static RentManager rentmanager;
|
||||||
protected static ChatManager chatmanager;
|
protected static ChatManager chatmanager;
|
||||||
protected static Server server;
|
protected static Server server;
|
||||||
protected static VersionChecker versionChecker;
|
|
||||||
protected static HelpEntry helppages;
|
protected static HelpEntry helppages;
|
||||||
protected static Language language;
|
protected static Language language;
|
||||||
protected static Logger log;
|
protected static Logger log;
|
||||||
@@ -96,7 +96,10 @@ public class Residence extends JavaPlugin {
|
|||||||
protected static int autosaveBukkitId = -1;
|
protected static int autosaveBukkitId = -1;
|
||||||
protected static boolean initsuccess = false;
|
protected static boolean initsuccess = false;
|
||||||
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() {
|
public static ResidenceBlockListener getBlockListener() {
|
||||||
return blistener;
|
return blistener;
|
||||||
@@ -189,10 +192,6 @@ public class Residence extends JavaPlugin {
|
|||||||
return tmanager;
|
return tmanager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static VersionChecker getVersionChecker() {
|
|
||||||
return versionChecker;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static WorldFlagManager getWorldFlags() {
|
public static WorldFlagManager getWorldFlags() {
|
||||||
return wmanager;
|
return wmanager;
|
||||||
}
|
}
|
||||||
@@ -279,8 +278,7 @@ public class Residence extends JavaPlugin {
|
|||||||
|
|
||||||
private boolean checkNewLanguageVersion(String lang) throws IOException, FileNotFoundException, InvalidConfigurationException {
|
private boolean checkNewLanguageVersion(String lang) throws IOException, FileNotFoundException, InvalidConfigurationException {
|
||||||
File outFile = new File(new File(this.getDataFolder(), "Language"), lang + ".yml");
|
File outFile = new File(new File(this.getDataFolder(), "Language"), lang + ".yml");
|
||||||
File checkFile = new File(new File(this.getDataFolder(), "Language"), "temp-" + lang
|
File checkFile = new File(new File(this.getDataFolder(), "Language"), "temp-" + lang + ".yml");
|
||||||
+ ".yml");
|
|
||||||
if (outFile.isFile()) {
|
if (outFile.isFile()) {
|
||||||
FileConfig testconfig = new FileConfig();
|
FileConfig testconfig = new FileConfig();
|
||||||
testconfig.load(outFile);
|
testconfig.load(outFile);
|
||||||
@@ -379,33 +377,27 @@ public class Residence extends JavaPlugin {
|
|||||||
if (loadFile.isFile()) {
|
if (loadFile.isFile()) {
|
||||||
yml = new YMLSaveHelper(loadFile);
|
yml = new YMLSaveHelper(loadFile);
|
||||||
yml.load();
|
yml.load();
|
||||||
tmanager = TransactionManager.load((Map<?, ?>) yml.getRoot().get("Economy"),
|
tmanager = TransactionManager.load((Map<?, ?>) yml.getRoot().get("Economy"), gmanager, rmanager);
|
||||||
gmanager, rmanager);
|
|
||||||
}
|
}
|
||||||
loadFile = new File(saveFolder, "leases.yml");
|
loadFile = new File(saveFolder, "leases.yml");
|
||||||
if (loadFile.isFile()) {
|
if (loadFile.isFile()) {
|
||||||
yml = new YMLSaveHelper(loadFile);
|
yml = new YMLSaveHelper(loadFile);
|
||||||
yml.load();
|
yml.load();
|
||||||
leasemanager = LeaseManager.load((Map<String, Long>) yml.getRoot().get("Leases"),
|
leasemanager = LeaseManager.load((Map<String, Long>) yml.getRoot().get("Leases"), rmanager);
|
||||||
rmanager);
|
|
||||||
}
|
}
|
||||||
loadFile = new File(saveFolder, "permlists.yml");
|
loadFile = new File(saveFolder, "permlists.yml");
|
||||||
if (loadFile.isFile()) {
|
if (loadFile.isFile()) {
|
||||||
yml = new YMLSaveHelper(loadFile);
|
yml = new YMLSaveHelper(loadFile);
|
||||||
yml.load();
|
yml.load();
|
||||||
pmanager = PermissionListManager.load((Map<String, Object>) yml.getRoot().get(
|
pmanager = PermissionListManager.load((Map<String, Object>) yml.getRoot().get("PermissionLists"));
|
||||||
"PermissionLists"));
|
|
||||||
}
|
}
|
||||||
loadFile = new File(saveFolder, "rent.yml");
|
loadFile = new File(saveFolder, "rent.yml");
|
||||||
if (loadFile.isFile()) {
|
if (loadFile.isFile()) {
|
||||||
yml = new YMLSaveHelper(loadFile);
|
yml = new YMLSaveHelper(loadFile);
|
||||||
yml.load();
|
yml.load();
|
||||||
rentmanager = RentManager.load((Map<String, Object>) yml.getRoot()
|
rentmanager = RentManager.load((Map<String, Object>) yml.getRoot().get("RentSystem"));
|
||||||
.get("RentSystem"));
|
|
||||||
}
|
}
|
||||||
this.getLogger().info(
|
this.getLogger().info("从配置文件中读取领地数据,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) + " 秒)");
|
||||||
"从配置文件中读取领地数据,耗时" + ((float) (System.currentTimeMillis() - time) / 1000)
|
|
||||||
+ " 秒)");
|
|
||||||
// System.out.print("[Residence] Loaded...");
|
// System.out.print("[Residence] Loaded...");
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
@@ -428,7 +420,7 @@ public class Residence extends JavaPlugin {
|
|||||||
if (initsuccess) {
|
if (initsuccess) {
|
||||||
try {
|
try {
|
||||||
saveYml();
|
saveYml();
|
||||||
ZipLibrary.backup();
|
DataBackup.run();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
this.getLogger().warning("领地数据保存错误,可能造成部分领地丢失,请尝试恢复备份文件!");
|
this.getLogger().warning("领地数据保存错误,可能造成部分领地丢失,请尝试恢复备份文件!");
|
||||||
this.getLogger().warning("错误: " + ex);
|
this.getLogger().warning("错误: " + ex);
|
||||||
@@ -485,8 +477,7 @@ public class Residence extends JavaPlugin {
|
|||||||
language = new Language();
|
language = new Language();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File langFile = new File(new File(dataFolder, "Language"), cmanager.getLanguage()
|
File langFile = new File(new File(dataFolder, "Language"), cmanager.getLanguage() + ".yml");
|
||||||
+ ".yml");
|
|
||||||
try {
|
try {
|
||||||
if (langFile.isFile()) {
|
if (langFile.isFile()) {
|
||||||
loadLang(langFile);
|
loadLang(langFile);
|
||||||
@@ -502,8 +493,7 @@ public class Residence extends JavaPlugin {
|
|||||||
if (this.getConfig().getBoolean("Global.EnableEconomy", false)) {
|
if (this.getConfig().getBoolean("Global.EnableEconomy", false)) {
|
||||||
this.getLogger().info("扫描经济系统...");
|
this.getLogger().info("扫描经济系统...");
|
||||||
if (gmanager.getPermissionsPlugin() instanceof ResidenceVaultAdapter) {
|
if (gmanager.getPermissionsPlugin() instanceof ResidenceVaultAdapter) {
|
||||||
ResidenceVaultAdapter vault = (ResidenceVaultAdapter) gmanager
|
ResidenceVaultAdapter vault = (ResidenceVaultAdapter) gmanager.getPermissionsPlugin();
|
||||||
.getPermissionsPlugin();
|
|
||||||
if (vault.economyOK()) {
|
if (vault.economyOK()) {
|
||||||
economy = vault;
|
economy = vault;
|
||||||
this.getLogger().info("发现 Vault 使用经济系统: " + vault.getEconomyName());
|
this.getLogger().info("发现 Vault 使用经济系统: " + vault.getEconomyName());
|
||||||
@@ -569,8 +559,7 @@ public class Residence extends JavaPlugin {
|
|||||||
autosaveInt = 1;
|
autosaveInt = 1;
|
||||||
}
|
}
|
||||||
autosaveInt = autosaveInt * 60 * 20;
|
autosaveInt = autosaveInt * 60 * 20;
|
||||||
autosaveBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, autoSave,
|
autosaveBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, autoSave, autosaveInt, autosaveInt);
|
||||||
autosaveInt, autosaveInt);
|
|
||||||
healBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, doHeals, 20, 20);
|
healBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, doHeals, 20, 20);
|
||||||
if (cmanager.useLeases()) {
|
if (cmanager.useLeases()) {
|
||||||
int leaseInterval = cmanager.getLeaseCheckInterval();
|
int leaseInterval = cmanager.getLeaseCheckInterval();
|
||||||
@@ -578,8 +567,7 @@ public class Residence extends JavaPlugin {
|
|||||||
leaseInterval = 1;
|
leaseInterval = 1;
|
||||||
}
|
}
|
||||||
leaseInterval = leaseInterval * 60 * 20;
|
leaseInterval = leaseInterval * 60 * 20;
|
||||||
leaseBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, leaseExpire,
|
leaseBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, leaseExpire, leaseInterval, leaseInterval);
|
||||||
leaseInterval, leaseInterval);
|
|
||||||
}
|
}
|
||||||
if (cmanager.enabledRentSystem()) {
|
if (cmanager.enabledRentSystem()) {
|
||||||
int rentint = cmanager.getRentCheckInterval();
|
int rentint = cmanager.getRentCheckInterval();
|
||||||
@@ -587,8 +575,7 @@ public class Residence extends JavaPlugin {
|
|||||||
rentint = 1;
|
rentint = 1;
|
||||||
}
|
}
|
||||||
rentint = rentint * 60 * 20;
|
rentint = rentint * 60 * 20;
|
||||||
rentBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, rentExpire,
|
rentBukkitId = server.getScheduler().scheduleSyncRepeatingTask(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)) {
|
||||||
@@ -603,8 +590,7 @@ public class Residence extends JavaPlugin {
|
|||||||
this.getLogger().warning(" - 初始化失败! 卸载插件! 请报告以下错误给作者,谢谢!");
|
this.getLogger().warning(" - 初始化失败! 卸载插件! 请报告以下错误给作者,谢谢!");
|
||||||
this.getLogger().warning("错误: " + ex);
|
this.getLogger().warning("错误: " + ex);
|
||||||
}
|
}
|
||||||
versionChecker = new VersionChecker(this);
|
new VersionChecker(this);
|
||||||
versionChecker.VersionCheck(null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -726,16 +712,14 @@ public class Residence extends JavaPlugin {
|
|||||||
ymlSaveLoc.renameTo(backupFile);
|
ymlSaveLoc.renameTo(backupFile);
|
||||||
}
|
}
|
||||||
tmpFile.renameTo(ymlSaveLoc);
|
tmpFile.renameTo(ymlSaveLoc);
|
||||||
this.getLogger().info(
|
this.getLogger().info("保存领地数据到文件中,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) + " 秒)");
|
||||||
"保存领地数据到文件中,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) + " 秒)");
|
|
||||||
if (cmanager.showIntervalMessages()) {
|
if (cmanager.showIntervalMessages()) {
|
||||||
this.getLogger().info(" - 保存插件数据...");
|
this.getLogger().info(" - 保存插件数据...");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeDefaultConfigFromJar() {
|
private void writeDefaultConfigFromJar() {
|
||||||
if (this.writeDefaultFileFromJar(new File(this.getDataFolder(), "config.yml"),
|
if (this.writeDefaultFileFromJar(new File(this.getDataFolder(), "config.yml"), "config.yml", true)) {
|
||||||
"config.yml", true)) {
|
|
||||||
this.getLogger().info("保存默认配置文件...");
|
this.getLogger().info("保存默认配置文件...");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -744,8 +728,7 @@ public class Residence extends JavaPlugin {
|
|||||||
private boolean writeDefaultFileFromJar(File writeName, String jarPath, boolean backupOld) {
|
private boolean writeDefaultFileFromJar(File writeName, String jarPath, boolean backupOld) {
|
||||||
try {
|
try {
|
||||||
File fileBackup = new File(this.getDataFolder(), "backup-" + writeName);
|
File fileBackup = new File(this.getDataFolder(), "backup-" + writeName);
|
||||||
File jarloc = new File(getClass().getProtectionDomain().getCodeSource().getLocation()
|
File jarloc = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).getCanonicalFile();
|
||||||
.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);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* To change this template, choose Tools | Templates and open the template in the editor.
|
* To change this template, choose Tools | Templates and open the template in
|
||||||
|
* the editor.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.bekvon.bukkit.residence.listeners;
|
package com.bekvon.bukkit.residence.listeners;
|
||||||
@@ -76,8 +77,7 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
public void doHeals() {
|
public void doHeals() {
|
||||||
try {
|
try {
|
||||||
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
|
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
|
||||||
String resname = Residence.getPlayerListener().getCurrentResidenceName(
|
String resname = Residence.getPlayerListener().getCurrentResidenceName(player.getName());
|
||||||
player.getName());
|
|
||||||
ClaimedResidence res = null;
|
ClaimedResidence res = null;
|
||||||
if (resname != null) {
|
if (resname != null) {
|
||||||
res = Residence.getResidenceManager().getByName(resname);
|
res = Residence.getResidenceManager().getByName(resname);
|
||||||
@@ -131,12 +131,11 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
|
|
||||||
if (leave != null && !leave.equals("")) {
|
if (leave != null && !leave.equals("")) {
|
||||||
if (Residence.getConfigManager().useActionBar()) {
|
if (Residence.getConfigManager().useActionBar()) {
|
||||||
ActionBar.send(player, (new StringBuilder()).append(ChatColor.YELLOW)
|
ActionBar.send(player,
|
||||||
.append(insertMessages(player, ResOld.getName(), ResOld, leave))
|
(new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, ResOld.getName(), ResOld, leave))
|
||||||
.toString());
|
.toString());
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(ChatColor.YELLOW
|
player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, ResOld.getName(), ResOld, leave));
|
||||||
+ this.insertMessages(player, ResOld.getName(), ResOld, leave));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
currentRes.remove(pname);
|
currentRes.remove(pname);
|
||||||
@@ -145,8 +144,7 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (move) {
|
if (move) {
|
||||||
if (!res.getPermissions().playerHas(pname, "move", true)
|
if (!res.getPermissions().playerHas(pname, "move", true) && !Residence.isResAdminOn(player)
|
||||||
&& !Residence.isResAdminOn(player)
|
|
||||||
&& !player.hasPermission("residence.admin.move")) {
|
&& !player.hasPermission("residence.admin.move")) {
|
||||||
Location lastLoc = lastOutsideLoc.get(pname);
|
Location lastLoc = lastOutsideLoc.get(pname);
|
||||||
if (lastLoc != null) {
|
if (lastLoc != null) {
|
||||||
@@ -155,8 +153,7 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
player.teleport(res.getOutsideFreeLoc(loc));
|
player.teleport(res.getOutsideFreeLoc(loc));
|
||||||
}
|
}
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED
|
||||||
+ Residence.getLanguage().getPhrase("ResidenceMoveDeny",
|
+ Residence.getLanguage().getPhrase("ResidenceMoveDeny", res.getName().split("\\.")[res.getName().split("\\.").length - 1]));
|
||||||
res.getName().split("\\.")[res.getName().split("\\.").length - 1]));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -175,12 +172,11 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
|
|
||||||
if (leave != null && !leave.equals("") && ResOld != res.getParent()) {
|
if (leave != null && !leave.equals("") && ResOld != res.getParent()) {
|
||||||
if (Residence.getConfigManager().useActionBar()) {
|
if (Residence.getConfigManager().useActionBar()) {
|
||||||
ActionBar.send(player, (new StringBuilder()).append(ChatColor.YELLOW)
|
ActionBar.send(player,
|
||||||
.append(insertMessages(player, ResOld.getName(), ResOld, leave))
|
(new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, ResOld.getName(), ResOld, leave))
|
||||||
.toString());
|
.toString());
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(ChatColor.YELLOW
|
player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, ResOld.getName(), ResOld, leave));
|
||||||
+ this.insertMessages(player, ResOld.getName(), ResOld, leave));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -190,17 +186,12 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(chgFrom, res, player);
|
ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(chgFrom, res, player);
|
||||||
Residence.getServ().getPluginManager().callEvent(chgEvent);
|
Residence.getServ().getPluginManager().callEvent(chgEvent);
|
||||||
|
|
||||||
if (enterMessage != null && !enterMessage.equals("")
|
if (enterMessage != null && !enterMessage.equals("") && !(ResOld != null && res == ResOld.getParent())) {
|
||||||
&& !(ResOld != null && res == ResOld.getParent())) {
|
|
||||||
if (Residence.getConfigManager().useActionBar()) {
|
if (Residence.getConfigManager().useActionBar()) {
|
||||||
ActionBar.send(
|
ActionBar.send(player, (new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, areaname, res, enterMessage))
|
||||||
player,
|
|
||||||
(new StringBuilder()).append(ChatColor.YELLOW)
|
|
||||||
.append(insertMessages(player, areaname, res, enterMessage))
|
|
||||||
.toString());
|
.toString());
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(ChatColor.YELLOW
|
player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, areaname, res, enterMessage));
|
||||||
+ this.insertMessages(player, areaname, res, enterMessage));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -225,53 +216,25 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isCanUseEntity_BothClick(Material mat, Block block) {
|
private boolean isCanUseEntity_BothClick(Material mat, Block block) {
|
||||||
return mat == Material.LEVER
|
return mat == Material.LEVER || mat == Material.STONE_BUTTON || mat == Material.WOOD_BUTTON || mat == Material.WOODEN_DOOR
|
||||||
|| mat == Material.STONE_BUTTON
|
|| mat == Material.SPRUCE_DOOR || mat == Material.BIRCH_DOOR || mat == Material.JUNGLE_DOOR || mat == Material.ACACIA_DOOR
|
||||||
|| mat == Material.WOOD_BUTTON
|
|| mat == Material.DARK_OAK_DOOR || mat == Material.SPRUCE_FENCE_GATE || mat == Material.BIRCH_FENCE_GATE
|
||||||
|| mat == Material.WOODEN_DOOR
|
|| mat == Material.JUNGLE_FENCE_GATE || mat == Material.ACACIA_FENCE_GATE || mat == Material.DARK_OAK_FENCE_GATE
|
||||||
|| mat == Material.SPRUCE_DOOR
|
|| mat == Material.TRAP_DOOR || mat == Material.FENCE_GATE || mat == Material.PISTON_BASE || mat == Material.PISTON_STICKY_BASE
|
||||||
|| mat == Material.BIRCH_DOOR
|
|| mat == Material.DRAGON_EGG || Residence.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId()));
|
||||||
|| mat == Material.JUNGLE_DOOR
|
|
||||||
|| mat == Material.ACACIA_DOOR
|
|
||||||
|| mat == Material.DARK_OAK_DOOR
|
|
||||||
|| mat == Material.SPRUCE_FENCE_GATE
|
|
||||||
|| mat == Material.BIRCH_FENCE_GATE
|
|
||||||
|| mat == Material.JUNGLE_FENCE_GATE
|
|
||||||
|| mat == Material.ACACIA_FENCE_GATE
|
|
||||||
|| mat == Material.DARK_OAK_FENCE_GATE
|
|
||||||
|| mat == Material.TRAP_DOOR
|
|
||||||
|| mat == Material.FENCE_GATE
|
|
||||||
|| mat == Material.PISTON_BASE
|
|
||||||
|| mat == Material.PISTON_STICKY_BASE
|
|
||||||
|| mat == Material.DRAGON_EGG
|
|
||||||
|| Residence.getConfigManager().getCustomBothClick()
|
|
||||||
.contains(Integer.valueOf(block.getTypeId()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isCanUseEntity_RClickOnly(Material mat, Block block) {
|
private boolean isCanUseEntity_RClickOnly(Material mat, Block block) {
|
||||||
return mat == Material.ITEM_FRAME
|
return mat == Material.ITEM_FRAME || mat == Material.BEACON || mat == Material.FLOWER_POT || mat == Material.COMMAND || mat == Material.ANVIL
|
||||||
|| mat == Material.BEACON
|
|| mat == Material.CAKE_BLOCK || mat == Material.NOTE_BLOCK || mat == Material.DIODE || mat == Material.DIODE_BLOCK_OFF
|
||||||
|| mat == Material.FLOWER_POT
|
|| mat == Material.DIODE_BLOCK_ON || mat == Material.BED_BLOCK || mat == Material.WORKBENCH || mat == Material.BREWING_STAND
|
||||||
|| mat == Material.COMMAND
|
|
||||||
|| mat == Material.ANVIL
|
|
||||||
|| mat == Material.CAKE_BLOCK
|
|
||||||
|| mat == Material.NOTE_BLOCK
|
|
||||||
|| mat == Material.DIODE
|
|
||||||
|| mat == Material.DIODE_BLOCK_OFF
|
|
||||||
|| mat == Material.DIODE_BLOCK_ON
|
|
||||||
|| mat == Material.BED_BLOCK
|
|
||||||
|| mat == Material.WORKBENCH
|
|
||||||
|| mat == Material.BREWING_STAND
|
|
||||||
|| mat == Material.ENCHANTMENT_TABLE
|
|| mat == Material.ENCHANTMENT_TABLE
|
||||||
|| Residence.getConfigManager().getCustomRightClick()
|
|| Residence.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId()));
|
||||||
.contains(Integer.valueOf(block.getTypeId()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isContainer(Material mat, Block block) {
|
private boolean isContainer(Material mat, Block block) {
|
||||||
return FlagPermissions.getMaterialUseFlagList().containsKey(mat)
|
return FlagPermissions.getMaterialUseFlagList().containsKey(mat) && FlagPermissions.getMaterialUseFlagList().get(mat).equals("container")
|
||||||
&& FlagPermissions.getMaterialUseFlagList().get(mat).equals("container")
|
|| Residence.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId()));
|
||||||
|| Residence.getConfigManager().getCustomContainers()
|
|
||||||
.contains(Integer.valueOf(block.getTypeId()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||||
@@ -280,25 +243,19 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
if (Residence.isResAdminOn(player))
|
if (Residence.isResAdminOn(player))
|
||||||
return;
|
return;
|
||||||
String pname = player.getName();
|
String pname = player.getName();
|
||||||
ClaimedResidence res = Residence.getResidenceManager().getByLoc(
|
ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getBlockClicked().getLocation());
|
||||||
event.getBlockClicked().getLocation());
|
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
if (Residence.getConfigManager().preventRentModify()
|
if (Residence.getConfigManager().preventRentModify() && Residence.getConfigManager().enabledRentSystem()) {
|
||||||
&& Residence.getConfigManager().enabledRentSystem()) {
|
|
||||||
if (Residence.getRentManager().isRented(res.getName())) {
|
if (Residence.getRentManager().isRented(res.getName())) {
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentedModifyDeny"));
|
||||||
+ Residence.getLanguage().getPhrase("RentedModifyDeny"));
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlockClicked()
|
FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlockClicked().getLocation(), player);
|
||||||
.getLocation(), player);
|
if (!perms.playerHas(pname, player.getWorld().getName(), "bucket", perms.playerHas(pname, player.getWorld().getName(), "build", true))) {
|
||||||
if (!perms.playerHas(pname, player.getWorld().getName(), "bucket",
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "bucket"));
|
||||||
perms.playerHas(pname, player.getWorld().getName(), "build", true))) {
|
|
||||||
player.sendMessage(ChatColor.RED
|
|
||||||
+ Residence.getLanguage().getPhrase("FlagDeny", "bucket"));
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -309,26 +266,21 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
String pname = player.getName();
|
String pname = player.getName();
|
||||||
if (Residence.isResAdminOn(player))
|
if (Residence.isResAdminOn(player))
|
||||||
return;
|
return;
|
||||||
ClaimedResidence res = Residence.getResidenceManager().getByLoc(
|
ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getBlockClicked().getLocation());
|
||||||
event.getBlockClicked().getLocation());
|
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
if (Residence.getConfigManager().preventRentModify()
|
if (Residence.getConfigManager().preventRentModify() && Residence.getConfigManager().enabledRentSystem()) {
|
||||||
&& Residence.getConfigManager().enabledRentSystem()) {
|
|
||||||
if (Residence.getRentManager().isRented(res.getName())) {
|
if (Residence.getRentManager().isRented(res.getName())) {
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentedModifyDeny"));
|
||||||
+ Residence.getLanguage().getPhrase("RentedModifyDeny"));
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlockClicked()
|
FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlockClicked().getLocation(), player);
|
||||||
.getLocation(), player);
|
|
||||||
boolean hasbucket = perms.playerHas(pname, player.getWorld().getName(), "bucket",
|
boolean hasbucket = perms.playerHas(pname, player.getWorld().getName(), "bucket",
|
||||||
perms.playerHas(pname, player.getWorld().getName(), "build", true));
|
perms.playerHas(pname, player.getWorld().getName(), "build", true));
|
||||||
if (!hasbucket) {
|
if (!hasbucket) {
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "bucket"));
|
||||||
+ Residence.getLanguage().getPhrase("FlagDeny", "bucket"));
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -356,13 +308,11 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
if (block == null)
|
if (block == null)
|
||||||
return;
|
return;
|
||||||
Material mat = block.getType();
|
Material mat = block.getType();
|
||||||
if (!((isContainer(mat, block) || isCanUseEntity_RClickOnly(mat, block))
|
if (!((isContainer(mat, block) || isCanUseEntity_RClickOnly(mat, block)) && event.getAction() == Action.RIGHT_CLICK_BLOCK
|
||||||
&& event.getAction() == Action.RIGHT_CLICK_BLOCK
|
|
||||||
|| isCanUseEntity_BothClick(mat, block) || event.getAction() == Action.PHYSICAL)) {
|
|| isCanUseEntity_BothClick(mat, block) || event.getAction() == Action.PHYSICAL)) {
|
||||||
int typeId = player.getItemInHand().getTypeId();
|
int typeId = player.getItemInHand().getTypeId();
|
||||||
if (typeId != Residence.getConfigManager().getSelectionTooldID()
|
if (typeId != Residence.getConfigManager().getSelectionTooldID() && typeId != Residence.getConfigManager().getInfoToolID()
|
||||||
&& typeId != Residence.getConfigManager().getInfoToolID() && typeId != 351
|
&& typeId != 351 && typeId != 416)
|
||||||
&& typeId != 416)
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
FlagPermissions perms = Residence.getPermsByLocForPlayer(block.getLocation(), player);
|
FlagPermissions perms = Residence.getPermsByLocForPlayer(block.getLocation(), player);
|
||||||
@@ -373,14 +323,12 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
if (!resadmin) {
|
if (!resadmin) {
|
||||||
boolean hasuse = perms.playerHas(player.getName(), world, "use", true);
|
boolean hasuse = perms.playerHas(player.getName(), world, "use", true);
|
||||||
boolean haspressure = perms.playerHas(player.getName(), world, "pressure", hasuse);
|
boolean haspressure = perms.playerHas(player.getName(), world, "pressure", hasuse);
|
||||||
if ((!hasuse && !haspressure || !haspressure)
|
if ((!hasuse && !haspressure || !haspressure) && (mat == Material.STONE_PLATE || mat == Material.WOOD_PLATE)) {
|
||||||
&& (mat == Material.STONE_PLATE || mat == Material.WOOD_PLATE)) {
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!perms.playerHas(player.getName(), world, "trample",
|
if (!perms.playerHas(player.getName(), world, "trample", perms.playerHas(player.getName(), world, "build", true))
|
||||||
perms.playerHas(player.getName(), world, "build", true))
|
|
||||||
&& (mat == Material.SOIL || mat == Material.SOUL_SAND)) {
|
&& (mat == Material.SOIL || mat == Material.SOUL_SAND)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
@@ -392,39 +340,29 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (event.getAction() == Action.LEFT_CLICK_BLOCK
|
if (event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||||
|| event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
if (player.getItemInHand().getTypeId() == Residence.getConfigManager().getSelectionTooldID()) {
|
||||||
if (player.getItemInHand().getTypeId() == Residence.getConfigManager()
|
|
||||||
.getSelectionTooldID()) {
|
|
||||||
Plugin wep = Bukkit.getPluginManager().getPlugin("WorldEdit");
|
Plugin wep = Bukkit.getPluginManager().getPlugin("WorldEdit");
|
||||||
if (wep != null) {
|
if (wep != null) {
|
||||||
if (((WorldEditPlugin) wep).getConfig().getInt("wand-item") == Residence
|
if (((WorldEditPlugin) wep).getConfig().getInt("wand-item") == Residence.getConfigManager().getSelectionTooldID())
|
||||||
.getConfigManager().getSelectionTooldID())
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PermissionGroup group = Residence.getPermissionManager().getGroup(player);
|
PermissionGroup group = Residence.getPermissionManager().getGroup(player);
|
||||||
if (player.hasPermission("residence.select")
|
if (player.hasPermission("residence.select") || player.hasPermission("residence.create")
|
||||||
|| player.hasPermission("residence.create")
|
&& !player.isPermissionSet("residence.select") || group.canCreateResidences() && !player.isPermissionSet("residence.create")
|
||||||
&& !player.isPermissionSet("residence.select")
|
|
||||||
|| group.canCreateResidences()
|
|
||||||
&& !player.isPermissionSet("residence.create")
|
|
||||||
&& !player.isPermissionSet("residence.select") || resadmin) {
|
&& !player.isPermissionSet("residence.select") || resadmin) {
|
||||||
if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
|
if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
|
||||||
Location loc = block.getLocation();
|
Location loc = block.getLocation();
|
||||||
Residence.getSelectionManager().placeLoc1(player, loc);
|
Residence.getSelectionManager().placeLoc1(player, loc);
|
||||||
player.sendMessage(ChatColor.GREEN
|
player.sendMessage(ChatColor.GREEN
|
||||||
+ Residence.getLanguage().getPhrase("SelectPoint",
|
+ Residence.getLanguage().getPhrase("SelectPoint", Residence.getLanguage().getPhrase("Primary")) + ChatColor.RED
|
||||||
Residence.getLanguage().getPhrase("Primary"))
|
+ "(" + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
|
||||||
+ ChatColor.RED + "(" + loc.getBlockX() + "," + loc.getBlockY()
|
|
||||||
+ "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
|
|
||||||
} else if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
} else if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||||
Location loc = block.getLocation();
|
Location loc = block.getLocation();
|
||||||
Residence.getSelectionManager().placeLoc2(player, loc);
|
Residence.getSelectionManager().placeLoc2(player, loc);
|
||||||
player.sendMessage(ChatColor.GREEN
|
player.sendMessage(ChatColor.GREEN
|
||||||
+ Residence.getLanguage().getPhrase("SelectPoint",
|
+ Residence.getLanguage().getPhrase("SelectPoint", Residence.getLanguage().getPhrase("Secondary")) + ChatColor.RED
|
||||||
Residence.getLanguage().getPhrase("Secondary"))
|
+ "(" + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
|
||||||
+ ChatColor.RED + "(" + loc.getBlockX() + "," + loc.getBlockY()
|
|
||||||
+ "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
|
|
||||||
}
|
}
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
@@ -447,15 +385,10 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
if (heldItem != null) {
|
if (heldItem != null) {
|
||||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||||
if (player.getItemInHand().getTypeId() == 351) {
|
if (player.getItemInHand().getTypeId() == 351) {
|
||||||
if (player.getItemInHand().getData().getData() == 15
|
if (player.getItemInHand().getData().getData() == 15 && block.getType() == Material.GRASS
|
||||||
&& block.getType() == Material.GRASS
|
|| player.getItemInHand().getData().getData() == 3 && block.getTypeId() == 17
|
||||||
|| player.getItemInHand().getData().getData() == 3
|
&& (block.getData() == 3 || block.getData() == 7 || block.getData() == 11 || block.getData() == 15)) {
|
||||||
&& block.getTypeId() == 17
|
perms = Residence.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player);
|
||||||
&& (block.getData() == 3 || block.getData() == 7
|
|
||||||
|| block.getData() == 11 || block.getData() == 15)) {
|
|
||||||
perms = Residence.getPermsByLocForPlayer(
|
|
||||||
block.getRelative(event.getBlockFace()).getLocation(),
|
|
||||||
player);
|
|
||||||
if (!perms.playerHas(player.getName(), world, "build", true)) {
|
if (!perms.playerHas(player.getName(), world, "build", true)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
@@ -463,11 +396,9 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (heldItem == Material.ARMOR_STAND) {
|
if (heldItem == Material.ARMOR_STAND) {
|
||||||
perms = Residence.getPermsByLocForPlayer(
|
perms = Residence.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player);
|
||||||
block.getRelative(event.getBlockFace()).getLocation(), player);
|
|
||||||
if (!perms.playerHas(player.getName(), world, "build", true)) {
|
if (!perms.playerHas(player.getName(), world, "build", true)) {
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
|
||||||
+ Residence.getLanguage().getPhrase("NoPermission"));
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -476,51 +407,40 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
if (isContainer(mat, block) || isCanUseEntity(mat, block)) {
|
if (isContainer(mat, block) || isCanUseEntity(mat, block)) {
|
||||||
boolean hasuse = perms.playerHas(player.getName(), world, "use", true);
|
boolean hasuse = perms.playerHas(player.getName(), world, "use", true);
|
||||||
for (Entry<Material, String> checkMat : FlagPermissions
|
for (Entry<Material, String> checkMat : FlagPermissions.getMaterialUseFlagList().entrySet()) {
|
||||||
.getMaterialUseFlagList().entrySet()) {
|
|
||||||
if (mat == checkMat.getKey()) {
|
if (mat == checkMat.getKey()) {
|
||||||
if (!perms.playerHas(player.getName(), world, checkMat.getValue(),
|
if (!perms.playerHas(player.getName(), world, checkMat.getValue(), hasuse)) {
|
||||||
hasuse)) {
|
|
||||||
if (hasuse || checkMat.getValue().equals("container")) {
|
if (hasuse || checkMat.getValue().equals("container")) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", checkMat.getValue()));
|
||||||
+ Residence.getLanguage().getPhrase("FlagDeny",
|
|
||||||
checkMat.getValue()));
|
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "use"));
|
||||||
+ Residence.getLanguage().getPhrase("FlagDeny", "use"));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Residence.getConfigManager().getCustomContainers()
|
if (Residence.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId()))) {
|
||||||
.contains(Integer.valueOf(block.getTypeId()))) {
|
|
||||||
if (!perms.playerHas(player.getName(), world, "container", hasuse)) {
|
if (!perms.playerHas(player.getName(), world, "container", hasuse)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "container"));
|
||||||
+ Residence.getLanguage().getPhrase("FlagDeny", "container"));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Residence.getConfigManager().getCustomBothClick()
|
if (Residence.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId()))) {
|
||||||
.contains(Integer.valueOf(block.getTypeId()))) {
|
|
||||||
if (!hasuse) {
|
if (!hasuse) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "use"));
|
||||||
+ Residence.getLanguage().getPhrase("FlagDeny", "use"));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||||
if (Residence.getConfigManager().getCustomRightClick()
|
if (Residence.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId()))) {
|
||||||
.contains(Integer.valueOf(block.getTypeId()))) {
|
|
||||||
if (!hasuse) {
|
if (!hasuse) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "use"));
|
||||||
+ Residence.getLanguage().getPhrase("FlagDeny", "use"));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -543,11 +463,9 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
FlagPermissions perms = Residence.getPermsByLocForPlayer(ent.getLocation(), player);
|
FlagPermissions perms = Residence.getPermsByLocForPlayer(ent.getLocation(), player);
|
||||||
String world = player.getWorld().getName();
|
String world = player.getWorld().getName();
|
||||||
|
|
||||||
if (!perms.playerHas(player.getName(), world, "container",
|
if (!perms.playerHas(player.getName(), world, "container", perms.playerHas(player.getName(), world, "use", true))) {
|
||||||
perms.playerHas(player.getName(), world, "use", true))) {
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "container"));
|
||||||
+ Residence.getLanguage().getPhrase("FlagDeny", "container"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -559,12 +477,10 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
Entity ent = event.getRightClicked();
|
Entity ent = event.getRightClicked();
|
||||||
/* Trade */
|
/* Trade */
|
||||||
if (ent.getType() == EntityType.VILLAGER) {
|
if (ent.getType() == EntityType.VILLAGER) {
|
||||||
ClaimedResidence res = Residence.getResidenceManager().getByLoc(
|
ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getPlayer().getLocation());
|
||||||
event.getPlayer().getLocation());
|
|
||||||
|
|
||||||
if (res != null && !res.getPermissions().playerHas(player.getName(), "trade", true)) {
|
if (res != null && !res.getPermissions().playerHas(player.getName(), "trade", true)) {
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission"));
|
||||||
+ Residence.getLanguage().getPhrase("NoPermission"));
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -584,11 +500,9 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!perms.playerHas(player.getName(), world, "container",
|
if (!perms.playerHas(player.getName(), world, "container", perms.playerHas(player.getName(), world, "use", true))) {
|
||||||
perms.playerHas(player.getName(), world, "use", true))) {
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "container"));
|
||||||
+ Residence.getLanguage().getPhrase("FlagDeny", "container"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -600,9 +514,6 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
Residence.turnResAdminOn(player);
|
Residence.turnResAdminOn(player);
|
||||||
}
|
}
|
||||||
handleNewLocation(player, player.getLocation(), false);
|
handleNewLocation(player, player.getLocation(), false);
|
||||||
if (player.isOp() || player.hasPermission("residence.versioncheck")) {
|
|
||||||
Residence.getVersionChecker().VersionCheck(player);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||||
@@ -669,15 +580,13 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ClaimedResidence res = Residence.getResidenceManager().getByLoc(loc);
|
ClaimedResidence res = Residence.getResidenceManager().getByLoc(loc);
|
||||||
if (event.getCause() == TeleportCause.ENDER_PEARL
|
if (event.getCause() == TeleportCause.ENDER_PEARL || event.getCause() == TeleportCause.COMMAND
|
||||||
|| event.getCause() == TeleportCause.COMMAND
|
|
||||||
|| event.getCause() == TeleportCause.NETHER_PORTAL) {
|
|| event.getCause() == TeleportCause.NETHER_PORTAL) {
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
String areaname = Residence.getResidenceManager().getNameByLoc(loc);
|
String areaname = Residence.getResidenceManager().getNameByLoc(loc);
|
||||||
if (!res.getPermissions().playerHas(player.getName(), "move", true)) {
|
if (!res.getPermissions().playerHas(player.getName(), "move", true)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceMoveDeny", areaname));
|
||||||
+ Residence.getLanguage().getPhrase("ResidenceMoveDeny", areaname));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -685,11 +594,9 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
if (event.getCause() == TeleportCause.PLUGIN) {
|
if (event.getCause() == TeleportCause.PLUGIN) {
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
String areaname = Residence.getResidenceManager().getNameByLoc(loc);
|
String areaname = Residence.getResidenceManager().getNameByLoc(loc);
|
||||||
if (!res.getPermissions().playerHas(player.getName(), "tp", true)
|
if (!res.getPermissions().playerHas(player.getName(), "tp", true) && !player.hasPermission("residence.admin.tp")) {
|
||||||
&& !player.hasPermission("residence.admin.tp")) {
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED
|
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("TeleportDeny", areaname));
|
||||||
+ Residence.getLanguage().getPhrase("TeleportDeny", areaname));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -713,14 +620,10 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
String pname = player.getName();
|
String pname = player.getName();
|
||||||
if (playerToggleChat.contains(pname)) {
|
if (playerToggleChat.contains(pname)) {
|
||||||
playerToggleChat.remove(pname);
|
playerToggleChat.remove(pname);
|
||||||
player.sendMessage(ChatColor.YELLOW
|
player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("ResidenceChat", ChatColor.RED + "OFF" + ChatColor.YELLOW + "!"));
|
||||||
+ Residence.getLanguage().getPhrase("ResidenceChat",
|
|
||||||
ChatColor.RED + "OFF" + ChatColor.YELLOW + "!"));
|
|
||||||
} else {
|
} else {
|
||||||
playerToggleChat.add(pname);
|
playerToggleChat.add(pname);
|
||||||
player.sendMessage(ChatColor.YELLOW
|
player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("ResidenceChat", ChatColor.RED + "ON" + ChatColor.YELLOW + "!"));
|
||||||
+ Residence.getLanguage().getPhrase("ResidenceChat",
|
|
||||||
ChatColor.RED + "ON" + ChatColor.YELLOW + "!"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
115
src/com/bekvon/bukkit/residence/utils/DataBackup.java
Normal file
115
src/com/bekvon/bukkit/residence/utils/DataBackup.java
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
package com.bekvon.bukkit.residence.utils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.zip.Deflater;
|
||||||
|
import java.util.zip.ZipEntry;
|
||||||
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
|
import org.bukkit.World;
|
||||||
|
|
||||||
|
import com.bekvon.bukkit.residence.Residence;
|
||||||
|
|
||||||
|
public class DataBackup {
|
||||||
|
private File BackupDir = new File(Residence.getDataLocation(), "Backup");
|
||||||
|
|
||||||
|
public static void run() throws IOException {
|
||||||
|
DataBackup backup = new DataBackup();
|
||||||
|
backup.backup();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void backup() throws IOException {
|
||||||
|
try {
|
||||||
|
BackupDir.mkdir();
|
||||||
|
Date date = new Date();
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
|
||||||
|
File fileZip = new File(BackupDir, dateFormat.format(date) + ".zip");
|
||||||
|
|
||||||
|
// Create the Source List, and add directories/etc to the file.
|
||||||
|
List<File> sources = new ArrayList<File>();
|
||||||
|
|
||||||
|
File saveFolder = new File(Residence.getDataLocation(), "Save");
|
||||||
|
File worldFolder = new File(saveFolder, "Worlds");
|
||||||
|
if (!saveFolder.isDirectory()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
File saveFile;
|
||||||
|
for (World world : Residence.getServ().getWorlds()) {
|
||||||
|
saveFile = new File(worldFolder, "res_" + world.getName() + ".yml");
|
||||||
|
if (saveFile.isFile()) {
|
||||||
|
sources.add(saveFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
packZip(fileZip, sources);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void packZip(File output, List<File> sources) throws IOException {
|
||||||
|
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(output));
|
||||||
|
zipOut.setLevel(Deflater.DEFAULT_COMPRESSION);
|
||||||
|
|
||||||
|
for (File source : sources) {
|
||||||
|
if (source.isDirectory()) {
|
||||||
|
zipDir(zipOut, "", source);
|
||||||
|
} else {
|
||||||
|
zipFile(zipOut, "", source);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
zipOut.flush();
|
||||||
|
zipOut.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildPath(String path, String file) {
|
||||||
|
if (path == null || path.isEmpty()) {
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
return path + File.separator + file;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void zipDir(ZipOutputStream zos, String path, File dir) throws IOException {
|
||||||
|
if (!dir.canRead()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
File[] files = dir.listFiles();
|
||||||
|
path = buildPath(path, dir.getName());
|
||||||
|
|
||||||
|
for (File source : files) {
|
||||||
|
if (source.isDirectory()) {
|
||||||
|
zipDir(zos, path, source);
|
||||||
|
} else {
|
||||||
|
zipFile(zos, path, source);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void zipFile(ZipOutputStream zos, String path, File file) throws IOException {
|
||||||
|
if (!file.canRead()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
zos.putNextEntry(new ZipEntry(buildPath(path, file.getName())));
|
||||||
|
|
||||||
|
FileInputStream fis = new FileInputStream(file);
|
||||||
|
byte[] buffer = new byte[4092];
|
||||||
|
int byteCount = 0;
|
||||||
|
|
||||||
|
while ((byteCount = fis.read(buffer)) != -1) {
|
||||||
|
zos.write(buffer, 0, byteCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
fis.close();
|
||||||
|
zos.closeEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,45 +10,66 @@ import org.bukkit.ChatColor;
|
|||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
import com.bekvon.bukkit.residence.Residence;
|
|
||||||
import com.google.common.base.Charsets;
|
import com.google.common.base.Charsets;
|
||||||
|
|
||||||
public class VersionChecker {
|
public class VersionChecker implements Listener {
|
||||||
Residence plugin;
|
Plugin plugin;
|
||||||
|
String checkurl = "https://coding.net/u/502647092/p/{0}/git/raw/{1}/src/plugin.yml";
|
||||||
|
String branch = "master";
|
||||||
|
|
||||||
public VersionChecker(Residence plugin) {
|
public VersionChecker(Plugin plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
|
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||||
|
this.VersionCheck(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://coding.net/u/502647092/p/SimpleEssential/git/raw/master/src/plugin.yml
|
||||||
|
public VersionChecker(Plugin plugin, String branch) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||||
|
this.checkurl = branch;
|
||||||
|
this.VersionCheck(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCheckUrl(String pluginName, String branch) {
|
||||||
|
return String.format(checkurl, pluginName, branch);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerJoin(PlayerJoinEvent e) {
|
||||||
|
if (e.getPlayer().isOp()) {
|
||||||
|
this.VersionCheck(e.getPlayer());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void VersionCheck(final Player player) {
|
public void VersionCheck(final Player player) {
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
String readURL = "http://ci.citycraft.cn:8800/jenkins/job/Residence-Fix/lastSuccessfulBuild/artifact/src/plugin.yml";
|
String readURL = getCheckUrl(plugin.getName(), branch);
|
||||||
FileConfiguration config;
|
FileConfiguration config;
|
||||||
String currentVersion = plugin.getDescription().getVersion();
|
String currentVersion = plugin.getDescription().getVersion();
|
||||||
try {
|
try {
|
||||||
URL url = new URL(readURL);
|
URL url = new URL(readURL);
|
||||||
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),
|
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), Charsets.UTF_8));
|
||||||
Charsets.UTF_8));
|
|
||||||
config = YamlConfiguration.loadConfiguration(br);
|
config = YamlConfiguration.loadConfiguration(br);
|
||||||
String newVersion = config.getString("version");
|
String newVersion = config.getString("version");
|
||||||
br.close();
|
br.close();
|
||||||
if (!newVersion.equals(currentVersion)) {
|
if (!newVersion.equals(currentVersion)) {
|
||||||
String[] msg = new String[] {
|
String[] msg = new String[] {
|
||||||
ChatColor.GREEN + "领地插件最新版本 v" + newVersion,
|
ChatColor.GREEN + plugin.getName() + " 插件最新版本 v" + newVersion,
|
||||||
ChatColor.RED + "服务器运行版本: v" + currentVersion,
|
ChatColor.RED + "服务器运行版本: v" + currentVersion,
|
||||||
ChatColor.GOLD + "插件更新网站: " + ChatColor.BLUE
|
ChatColor.GOLD + "插件更新网站: " + ChatColor.BLUE + plugin.getDescription().getWebsite()
|
||||||
+ plugin.getDescription().getWebsite(),
|
};
|
||||||
ChatColor.YELLOW
|
|
||||||
+ "查看最新修改: "
|
|
||||||
+ ChatColor.BLUE
|
|
||||||
+ "http://ci.citycraft.cn:8800/jenkins/job/Residence-Fix/changes" };
|
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
player.sendMessage(msg);
|
player.sendMessage(msg);
|
||||||
} else {
|
} else {
|
||||||
plugin.consoleMessage(msg);
|
plugin.getServer().getConsoleSender().sendMessage(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|||||||
@@ -1,118 +0,0 @@
|
|||||||
package com.bekvon.bukkit.residence.utils;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.zip.Deflater;
|
|
||||||
import java.util.zip.ZipEntry;
|
|
||||||
import java.util.zip.ZipOutputStream;
|
|
||||||
|
|
||||||
import org.bukkit.World;
|
|
||||||
|
|
||||||
import com.bekvon.bukkit.residence.Residence;
|
|
||||||
|
|
||||||
public class ZipLibrary {
|
|
||||||
private static File BackupDir = new File(Residence.getDataLocation(), "Backup");
|
|
||||||
|
|
||||||
public static void backup() throws IOException {
|
|
||||||
try {
|
|
||||||
BackupDir.mkdir();
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generate the proper date for the backup filename
|
|
||||||
Date date = new Date();
|
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
|
|
||||||
File fileZip = new File(BackupDir, dateFormat.format(date) + ".zip");
|
|
||||||
|
|
||||||
// Create the Source List, and add directories/etc to the file.
|
|
||||||
List<File> sources = new ArrayList<File>();
|
|
||||||
|
|
||||||
File saveFolder = new File(Residence.getDataLocation(), "Save");
|
|
||||||
File worldFolder = new File(saveFolder, "Worlds");
|
|
||||||
if (!saveFolder.isDirectory()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
File saveFile;
|
|
||||||
for (World world : Residence.getServ().getWorlds()) {
|
|
||||||
saveFile = new File(worldFolder, "res_" + world.getName() + ".yml");
|
|
||||||
if (saveFile.isFile()) {
|
|
||||||
sources.add(saveFile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
packZip(fileZip, sources);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void packZip(File output, List<File> sources) throws IOException {
|
|
||||||
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(output));
|
|
||||||
zipOut.setLevel(Deflater.DEFAULT_COMPRESSION);
|
|
||||||
|
|
||||||
for (File source : sources) {
|
|
||||||
if (source.isDirectory()) {
|
|
||||||
zipDir(zipOut, "", source);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
zipFile(zipOut, "", source);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
zipOut.flush();
|
|
||||||
zipOut.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String buildPath(String path, String file) {
|
|
||||||
if (path == null || path.isEmpty()) {
|
|
||||||
return file;
|
|
||||||
}
|
|
||||||
|
|
||||||
return path + File.separator + file;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void zipDir(ZipOutputStream zos, String path, File dir) throws IOException {
|
|
||||||
if (!dir.canRead()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
File[] files = dir.listFiles();
|
|
||||||
path = buildPath(path, dir.getName());
|
|
||||||
|
|
||||||
for (File source : files) {
|
|
||||||
if (source.isDirectory()) {
|
|
||||||
zipDir(zos, path, source);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
zipFile(zos, path, source);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void zipFile(ZipOutputStream zos, String path, File file) throws IOException {
|
|
||||||
if (!file.canRead()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
zos.putNextEntry(new ZipEntry(buildPath(path, file.getName())));
|
|
||||||
|
|
||||||
FileInputStream fis = new FileInputStream(file);
|
|
||||||
byte[] buffer = new byte[4092];
|
|
||||||
int byteCount = 0;
|
|
||||||
|
|
||||||
while ((byteCount = fis.read(buffer)) != -1) {
|
|
||||||
zos.write(buffer, 0, byteCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
fis.close();
|
|
||||||
zos.closeEntry();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user