1
0
mirror of https://e.coding.net/circlecloud/Residence.git synced 2025-11-24 21:46:16 +00:00

clean up and update...

This commit is contained in:
502647092
2015-09-23 20:55:27 +08:00
parent b8b86f4de9
commit f0db5f19ee
6 changed files with 1005 additions and 1050 deletions

View File

@@ -24,6 +24,8 @@ import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@@ -32,10 +34,16 @@ import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import com.bekvon.bukkit.residence.chat.ChatManager; import com.bekvon.bukkit.residence.chat.ChatManager;
import com.bekvon.bukkit.residence.commandmain.CommandRc;
import com.bekvon.bukkit.residence.commandmain.CommandRes;
import com.bekvon.bukkit.residence.commandmain.CommandResLoad;
import com.bekvon.bukkit.residence.commandmain.CommandResReload;
import com.bekvon.bukkit.residence.commandmain.CommandResWorld;
import com.bekvon.bukkit.residence.economy.EconomyInterface; import com.bekvon.bukkit.residence.economy.EconomyInterface;
import com.bekvon.bukkit.residence.economy.EssentialsEcoAdapter; import com.bekvon.bukkit.residence.economy.EssentialsEcoAdapter;
import com.bekvon.bukkit.residence.economy.TransactionManager; import com.bekvon.bukkit.residence.economy.TransactionManager;
import com.bekvon.bukkit.residence.economy.rent.RentManager; import com.bekvon.bukkit.residence.economy.rent.RentManager;
import com.bekvon.bukkit.residence.event.ResidenceCommandEvent;
import com.bekvon.bukkit.residence.itemlist.WorldItemManager; import com.bekvon.bukkit.residence.itemlist.WorldItemManager;
import com.bekvon.bukkit.residence.listeners.ResidenceBlockListener; import com.bekvon.bukkit.residence.listeners.ResidenceBlockListener;
import com.bekvon.bukkit.residence.listeners.ResidenceEntityListener; import com.bekvon.bukkit.residence.listeners.ResidenceEntityListener;
@@ -49,6 +57,11 @@ import com.bekvon.bukkit.residence.protection.LeaseManager;
import com.bekvon.bukkit.residence.protection.PermissionListManager; import com.bekvon.bukkit.residence.protection.PermissionListManager;
import com.bekvon.bukkit.residence.protection.ResidenceManager; import com.bekvon.bukkit.residence.protection.ResidenceManager;
import com.bekvon.bukkit.residence.protection.WorldFlagManager; import com.bekvon.bukkit.residence.protection.WorldFlagManager;
import com.bekvon.bukkit.residence.runnable.AutoSaveTask;
import com.bekvon.bukkit.residence.runnable.HealTask;
import com.bekvon.bukkit.residence.runnable.LeaseTask;
import com.bekvon.bukkit.residence.runnable.RentTask;
import com.bekvon.bukkit.residence.runnable.TaskManager;
import com.bekvon.bukkit.residence.selection.SelectionManager; import com.bekvon.bukkit.residence.selection.SelectionManager;
import com.bekvon.bukkit.residence.selection.WorldEditSelectionManager; import com.bekvon.bukkit.residence.selection.WorldEditSelectionManager;
import com.bekvon.bukkit.residence.text.Language; import com.bekvon.bukkit.residence.text.Language;
@@ -58,6 +71,7 @@ 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;
import cn.citycraft.PluginHelper.commands.HandlerMainCommand;
import cn.citycraft.PluginHelper.config.FileConfig; import cn.citycraft.PluginHelper.config.FileConfig;
import cn.citycraft.PluginHelper.utils.VersionChecker; import cn.citycraft.PluginHelper.utils.VersionChecker;
@@ -69,10 +83,13 @@ import cn.citycraft.PluginHelper.utils.VersionChecker;
public class Residence extends JavaPlugin { public class Residence extends JavaPlugin {
public static float bukkitver; public static float bukkitver;
protected static ResidenceManager rmanager; protected static ResidenceManager rmanager;
protected static SelectionManager smanager; protected static SelectionManager smanager;
protected static PermissionManager gmanager; protected static PermissionManager gmanager;
protected static ConfigManager cmanager; protected static ConfigManager cmanager;
protected static FlagManager fmanager;
protected static TaskManager taskmanager;
protected static ResidenceBlockListener blistener; protected static ResidenceBlockListener blistener;
protected static ResidencePlayerListener plistener; protected static ResidencePlayerListener plistener;
protected static ResidenceEntityListener elistener; protected static ResidenceEntityListener elistener;
@@ -85,7 +102,7 @@ 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 HelpEntry helppages; public static HelpEntry helppages;
protected static Language language; protected static Language language;
protected static Logger log; protected static Logger log;
protected static boolean useWorldEdit; protected static boolean useWorldEdit;
@@ -96,37 +113,16 @@ public class Residence extends JavaPlugin {
protected static int rentBukkitId = -1; protected static int rentBukkitId = -1;
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 List<String> resadminToggle; protected static List<String> resadminToggle;
protected static FileConfig config; protected static FileConfig config;
private final static String[] validLanguages = { "English", "Chinese" }; private final static String[] validLanguages = { "English", "Chinese" };
public static boolean initsuccess;
protected HandlerMainCommand hdmcnd;
protected boolean firstenable = true; protected boolean firstenable = true;
protected Map<String, String> deleteConfirm; public Map<String, String> deleteConfirm;
private Runnable doHeals = () -> plistener.doHeals();
private Runnable rentExpire = () -> {
rentmanager.checkCurrentRents();
if (cmanager.showIntervalMessages())
getLog().info(" - Rent Expirations checked!");
};
private Runnable leaseExpire = () -> {
leasemanager.doExpirations();
if (cmanager.showIntervalMessages())
getLog().info(" - Lease Expirations checked!");
};
private Runnable autoSave = () -> {
try {
if (initsuccess)
saveYml();
} catch (Exception ex) {
getLog().warning("领地数据保存错误,可能造成部分领地丢失,请尝试恢复备份文件!");
}
};
public Residence() { public Residence() {
} }
@@ -282,6 +278,71 @@ public class Residence extends JavaPlugin {
language = Language.parseText(langconfig, "Language"); language = Language.parseText(langconfig, "Language");
} }
@SuppressWarnings("unchecked")
public 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;
long time = System.currentTimeMillis();
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"));
}
this.getLogger().info("从配置文件中读取领地数据,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) + " 秒)");
return true;
} catch (Exception ex) {
this.getLogger().warning("领地数据载入时发生错误,请报告以下内容给作者: ");
this.getLogger().warning("错误: " + ex);
throw ex;
}
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
ResidenceCommandEvent cevent = new ResidenceCommandEvent(command.getName(), args, sender);
server.getPluginManager().callEvent(cevent);
if (cevent.isCancelled())
return true;
return hdmcnd.onCommand(sender, command, label, args);
}
@Override @Override
public void onDisable() { public void onDisable() {
server.getScheduler().cancelTask(autosaveBukkitId); server.getScheduler().cancelTask(autosaveBukkitId);
@@ -325,6 +386,7 @@ public class Residence extends JavaPlugin {
gmanager = new PermissionManager(this.getConfig()); gmanager = new PermissionManager(this.getConfig());
imanager = new WorldItemManager(this.getConfig()); imanager = new WorldItemManager(this.getConfig());
wmanager = new WorldFlagManager(this.getConfig()); wmanager = new WorldFlagManager(this.getConfig());
chatmanager = new ChatManager(); chatmanager = new ChatManager();
rentmanager = new RentManager(); rentmanager = new RentManager();
for (String lang : validLanguages) for (String lang : validLanguages)
@@ -378,6 +440,8 @@ public class Residence extends JavaPlugin {
tmanager = new TransactionManager(rmanager, gmanager); tmanager = new TransactionManager(rmanager, gmanager);
if (pmanager == null) if (pmanager == null)
pmanager = new PermissionListManager(); pmanager = new PermissionListManager();
if (taskmanager == null)
taskmanager = new TaskManager(this);
if (firstenable) { if (firstenable) {
if (!this.isEnabled()) if (!this.isEnabled())
return; return;
@@ -403,28 +467,35 @@ public class Residence extends JavaPlugin {
if (is1_8()) if (is1_8())
pm.registerEvents(plistener1_8, this); pm.registerEvents(plistener1_8, this);
pm.registerEvents(elistener, this); pm.registerEvents(elistener, this);
firstenable = false; firstenable = false;
} else } else
plistener.reload(); plistener.reload();
fmanager = new FlagManager(this);
fmanager.init();
taskmanager.add(server.getScheduler().runTaskTimer(this, new HealTask(), 20, 20));
HandlerMainCommand hdmcnd = new HandlerMainCommand(this);
hdmcnd.registerCommand(new CommandRc(this));
hdmcnd.registerCommand(new CommandRes(this));
hdmcnd.registerCommand(new CommandResLoad(this));
hdmcnd.registerCommand(new CommandResReload(this));
hdmcnd.registerCommand(new CommandResWorld(this));
int autosaveInt = cmanager.getAutoSaveInterval(); int autosaveInt = cmanager.getAutoSaveInterval();
if (autosaveInt < 1) autosaveInt = autosaveInt < 1 ? 1 : autosaveInt * 60 * 20;
autosaveInt = 1; taskmanager.add(server.getScheduler().runTaskTimer(this, new AutoSaveTask(this), autosaveInt, autosaveInt));
autosaveInt = autosaveInt * 60 * 20;
autosaveBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, autoSave, autosaveInt, autosaveInt);
healBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, doHeals, 20, 20);
if (cmanager.useLeases()) { if (cmanager.useLeases()) {
int leaseInterval = cmanager.getLeaseCheckInterval(); int leaseInterval = cmanager.getLeaseCheckInterval();
if (leaseInterval < 1) leaseInterval = leaseInterval < 1 ? 1 : leaseInterval * 60 * 20;
leaseInterval = 1; taskmanager.add(server.getScheduler().runTaskTimer(this, new LeaseTask(), leaseInterval, leaseInterval));
leaseInterval = leaseInterval * 60 * 20;
leaseBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, leaseExpire, leaseInterval, leaseInterval);
} }
if (cmanager.enabledRentSystem()) { if (cmanager.enabledRentSystem()) {
int rentint = cmanager.getRentCheckInterval(); int rentint = cmanager.getRentCheckInterval();
if (rentint < 1) rentint = rentint < 1 ? 1 : rentint * 60 * 20;
rentint = 1; taskmanager.add(server.getScheduler().runTaskTimer(this, new RentTask(), rentint, rentint));
rentint = rentint * 60 * 20;
rentBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, rentExpire, rentint, rentint);
} }
for (Player player : Bukkit.getServer().getOnlinePlayers()) for (Player player : Bukkit.getServer().getOnlinePlayers())
if (Residence.getPermissionManager().isResidenceAdmin(player)) if (Residence.getPermissionManager().isResidenceAdmin(player))
@@ -448,12 +519,12 @@ public class Residence extends JavaPlugin {
@Override @Override
public void reloadConfig() { public void reloadConfig() {
config.reload(); config.reload();
} };
public void reloadPlugin() { public void reloadPlugin() {
this.onDisable(); PluginManager pm = server.getPluginManager();
this.reloadConfig(); pm.disablePlugin(this);
this.onEnable(); pm.enablePlugin(this);
} }
@Override @Override
@@ -461,49 +532,7 @@ public class Residence extends JavaPlugin {
config.save(); config.save();
} }
private boolean checkNewLanguageVersion(String lang) throws IOException, FileNotFoundException, InvalidConfigurationException { public void saveYml() throws IOException {
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(this, outFile);
int oldversion = testconfig.getInt("FieldsVersion", 0);
if (!this.writeDefaultFileFromJar(checkFile, "languagefiles/" + lang + ".yml", false))
return false;
FileConfig testconfig2 = new FileConfig(this, checkFile);
testconfig2.load(checkFile);
int newversion = testconfig2.getInt("FieldsVersion", oldversion);
if (checkFile.isFile())
checkFile.delete();
if (newversion > oldversion)
return true;
return false;
}
return true;
};
private void loadEssentialsEconomy() {
Plugin p = getServer().getPluginManager().getPlugin("Essentials");
if (p != null) {
economy = new EssentialsEcoAdapter((Essentials) p);
this.getLogger().info("成功关联Essentials Economy!");
} else
this.getLogger().info("Essentials Economy 未找到!");
}
private void loadVaultEconomy() {
Plugin p = getServer().getPluginManager().getPlugin("Vault");
if (p != null) {
ResidenceVaultAdapter vault = new ResidenceVaultAdapter(getServer());
if (vault.economyOK()) {
this.getLogger().info("发现 Vault 使用经济系统: " + vault.getEconomyName());
economy = vault;
} else
this.getLogger().info("发现 Vault, 但是 Vault 未找到经济系统...");
} else
this.getLogger().info("Vault 未找到!");
}
private void saveYml() throws IOException {
File saveFolder = new File(dataFolder, "Save"); File saveFolder = new File(dataFolder, "Save");
File worldFolder = new File(saveFolder, "Worlds"); File worldFolder = new File(saveFolder, "Worlds");
worldFolder.mkdirs(); worldFolder.mkdirs();
@@ -604,6 +633,48 @@ public class Residence extends JavaPlugin {
this.getLogger().info(" - 保存插件数据..."); this.getLogger().info(" - 保存插件数据...");
} }
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(this, outFile);
int oldversion = testconfig.getInt("FieldsVersion", 0);
if (!this.writeDefaultFileFromJar(checkFile, "languagefiles/" + lang + ".yml", false))
return false;
FileConfig testconfig2 = new FileConfig(this, checkFile);
testconfig2.load(checkFile);
int newversion = testconfig2.getInt("FieldsVersion", oldversion);
if (checkFile.isFile())
checkFile.delete();
if (newversion > oldversion)
return true;
return false;
}
return true;
}
private void loadEssentialsEconomy() {
Plugin p = getServer().getPluginManager().getPlugin("Essentials");
if (p != null) {
economy = new EssentialsEcoAdapter((Essentials) p);
this.getLogger().info("成功关联Essentials Economy!");
} else
this.getLogger().info("Essentials Economy 未找到!");
}
private void loadVaultEconomy() {
Plugin p = getServer().getPluginManager().getPlugin("Vault");
if (p != null) {
ResidenceVaultAdapter vault = new ResidenceVaultAdapter(getServer());
if (vault.economyOK()) {
this.getLogger().info("发现 Vault 使用经济系统: " + vault.getEconomyName());
economy = vault;
} else
this.getLogger().info("发现 Vault, 但是 Vault 未找到经济系统...");
} else
this.getLogger().info("Vault 未找到!");
}
@SuppressWarnings("resource") @SuppressWarnings("resource")
private boolean writeDefaultFileFromJar(File writeName, String jarPath, boolean backupOld) { private boolean writeDefaultFileFromJar(File writeName, String jarPath, boolean backupOld) {
try { try {
@@ -648,61 +719,4 @@ public class Residence extends JavaPlugin {
if (this.writeDefaultFileFromJar(outFile, "languagefiles/" + lang + ".yml", true)) if (this.writeDefaultFileFromJar(outFile, "languagefiles/" + lang + ".yml", true))
this.getLogger().info("保存默认 " + lang + " 语言文件..."); this.getLogger().info("保存默认 " + lang + " 语言文件...");
} }
@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;
long time = System.currentTimeMillis();
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"));
}
this.getLogger().info("从配置文件中读取领地数据,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) + " 秒)");
// System.out.print("[Residence] Loaded...");
return true;
} catch (Exception ex) {
this.getLogger().warning("领地数据载入时发生错误,请报告以下内容给作者: ");
this.getLogger().warning("错误: " + ex);
throw ex;
}
}
} }

View File

@@ -3,7 +3,6 @@
*/ */
package com.bekvon.bukkit.residence; package com.bekvon.bukkit.residence;
import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -13,11 +12,8 @@ import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.bekvon.bukkit.residence.chat.ChatChannel;
import com.bekvon.bukkit.residence.event.ResidenceCommandEvent;
import com.bekvon.bukkit.residence.permissions.PermissionGroup; import com.bekvon.bukkit.residence.permissions.PermissionGroup;
import com.bekvon.bukkit.residence.protection.ClaimedResidence; import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import com.bekvon.bukkit.residence.protection.CuboidArea; import com.bekvon.bukkit.residence.protection.CuboidArea;
@@ -26,183 +22,82 @@ import com.sk89q.worldedit.bukkit.WorldEditPlugin;
public class ResidenceCommandListener extends Residence { public class ResidenceCommandListener extends Residence {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
ResidenceCommandEvent cevent = new ResidenceCommandEvent(command.getName(), args, sender);
server.getPluginManager().callEvent(cevent);
if (cevent.isCancelled())
return true;
if (command.getName().equals("resreload") && args.length == 0) {
if (sender instanceof Player) {
Player player = (Player) sender;
if (Residence.getPermissionManager().isResidenceAdmin(player)) {
this.reloadPlugin();
sender.sendMessage(ChatColor.GREEN + "[Residence] 重载配置文件.");
System.out.println("[Residence] 重载 by " + player.getName() + ".");
}
} else {
this.reloadPlugin();
System.out.println("[Residence] 重载 by 控制台.");
}
return true;
}
if (command.getName().equals("resload")) {
if (!(sender instanceof Player) || sender instanceof Player && gmanager.isResidenceAdmin((Player) sender))
try {
this.loadYml();
sender.sendMessage(ChatColor.GREEN + "[Residence] 从配置保存文件重新载入数据...");
} catch (Exception ex) {
sender.sendMessage(ChatColor.RED + "[Residence] 无法从配置保存文件重新载入数据, 请查看控制台异常信息!");
sender.sendMessage(ChatColor.RED + "[Residence] 异常: " + ex.getMessage());
Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
}
return true;
} else if (command.getName().equals("resworld")) {
if (args.length == 2 && args[0].equalsIgnoreCase("remove"))
if (sender instanceof ConsoleCommandSender) {
rmanager.removeAllFromWorld(sender, args[1]);
return true;
} else
sender.sendMessage(ChatColor.RED + "当前命令必须从控制台执行.");
return false;
} else if (command.getName().equals("rc")) {
if (sender instanceof Player) {
Player player = (Player) sender;
String pname = player.getName();
if (cmanager.chatEnabled()) {
if (args.length == 0)
plistener.tooglePlayerResidenceChat(player);
else {
String area = plistener.getCurrentResidenceName(pname);
if (area != null) {
ChatChannel channel = chatmanager.getChannel(area);
if (channel != null) {
String message = "";
for (String arg : args)
message = message + " " + arg;
channel.chat(pname, message);
} else
player.sendMessage(ChatColor.RED + language.getPhrase("InvalidChannel"));
} else
player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence"));
}
} else
player.sendMessage(ChatColor.RED + language.getPhrase("ChatDisabled"));
}
return true;
} else if (command.getName().equals("res") || command.getName().equals("residence") || command.getName().equals("resadmin")) {
boolean resadmin = false;
if (sender instanceof Player) {
if (command.getName().equals("resadmin") && gmanager.isResidenceAdmin((Player) sender))
resadmin = true;
if (command.getName().equals("resadmin") && !gmanager.isResidenceAdmin((Player) sender)) {
((Player) sender).sendMessage(ChatColor.RED + language.getPhrase("NonAdmin"));
return true;
}
} else
resadmin = true;
return commandRes(args, resadmin, command, sender);
}
return super.onCommand(sender, command, label, args);
}
private boolean commandHelp(String[] args, boolean resadmin, CommandSender sender) {
if (helppages != null) {
String helppath = "res";
for (String arg : args) {
if (arg.equalsIgnoreCase("?"))
break;
helppath = helppath + "." + arg;
}
int page = 1;
if (!args[args.length - 1].equalsIgnoreCase("?"))
try {
page = Integer.parseInt(args[args.length - 1]);
} catch (Exception ex) {
sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidHelp"));
}
if (helppages.containesEntry(helppath)) {
helppages.printHelp(sender, page, helppath);
return true;
}
}
return false;
}
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
private boolean commandRes(String[] args, boolean resadmin, Command command, CommandSender sender) { public boolean commandRes(String[] args, boolean resadmin, Command command, CommandSender sender) {
if (args.length > 0 && args[args.length - 1].equalsIgnoreCase("?") || args.length > 1 && args[args.length - 2].equals("?")) // if (args.length > 0 && args[args.length - 1].equalsIgnoreCase("?") || args.length > 1 && args[args.length - 2].equals("?"))
return commandHelp(args, resadmin, sender); // return commandHelp(args, resadmin, sender);
int page = 1; int page = 1;
try { // try {
if (args.length > 0) // if (args.length > 0)
page = Integer.parseInt(args[args.length - 1]); // page = Integer.parseInt(args[args.length - 1]);
} catch (Exception ex) { // } catch (Exception ex) {
} // }
Player player = null; Player player = (Player) sender;
PermissionGroup group = null; PermissionGroup group = null;
String pname = null; String pname = null;
if (sender instanceof Player) { // if (sender instanceof Player) {
player = (Player) sender; // player = (Player) sender;
group = Residence.getPermissionManager().getGroup(player); // group = Residence.getPermissionManager().getGroup(player);
pname = player.getName(); // pname = player.getName();
} else // } else
resadmin = true; // resadmin = true;
if (cmanager.allowAdminsOnly()) // if (cmanager.allowAdminsOnly())
if (!resadmin) { // if (!resadmin) {
sender.sendMessage(ChatColor.RED + language.getPhrase("AdminOnly")); // sender.sendMessage(ChatColor.RED + language.getPhrase("AdminOnly"));
return true; // return true;
} // }
if (args.length == 0) // if (args.length == 0)
return false; // return false;
if (args.length == 0) { // if (args.length == 0) {
args = new String[1]; // args = new String[1];
args[0] = "?"; // args[0] = "?";
} // }
String cmd = args[0].toLowerCase(); String cmd = args[0].toLowerCase();
if (cmd.equals("remove") || cmd.equals("delete"))
return commandResRemove(args, resadmin, sender, page); // if (cmd.equals("remove") || cmd.equals("delete"))
if (cmd.equals("confirm")) // return commandResRemove(args, resadmin, sender, page);
return commandResConfirm(args, resadmin, sender, page); // if (cmd.equals("confirm"))
if (cmd.equals("version")) { // return commandResConfirm(args, resadmin, sender, page);
sender.sendMessage(ChatColor.GRAY + "------------------------------------"); // if (cmd.equals("version")) {
sender.sendMessage(ChatColor.RED + "当前服务器运行的 " + ChatColor.GOLD + "Residence" + ChatColor.RED + " 版本: " + ChatColor.BLUE + this.getDescription().getVersion()); // sender.sendMessage(ChatColor.GRAY + "------------------------------------");
sender.sendMessage(ChatColor.GREEN + "创建者: " + ChatColor.YELLOW + "bekvon"); // sender.sendMessage(ChatColor.RED + "当前服务器运行的 " + ChatColor.GOLD + "Residence" + ChatColor.RED + " 版本: " + ChatColor.BLUE + this.getDescription().getVersion());
sender.sendMessage(ChatColor.GREEN + "升级到 1.8 by: " + ChatColor.YELLOW + "DartCZ"); // sender.sendMessage(ChatColor.GREEN + "创建者: " + ChatColor.YELLOW + "bekvon");
sender.sendMessage(ChatColor.RED + "升级到最新无UUID版本 by: " + ChatColor.YELLOW + "喵♂呜"); // sender.sendMessage(ChatColor.GREEN + "升级到 1.8 by: " + ChatColor.YELLOW + "DartCZ");
String names = null; // sender.sendMessage(ChatColor.RED + "升级到最新无UUID版本 by: " + ChatColor.YELLOW + "喵♂呜");
List<String> authlist = this.getDescription().getAuthors(); // String names = null;
for (String auth : authlist) // List<String> authlist = this.getDescription().getAuthors();
if (names == null) // for (String auth : authlist)
names = auth; // if (names == null)
else // names = auth;
names = names + ", " + auth; // else
sender.sendMessage(ChatColor.GREEN + "作者: " + ChatColor.YELLOW + names); // names = names + ", " + auth;
sender.sendMessage(ChatColor.DARK_AQUA + "插件命令列表,帮助, 请查看wiki:"); // sender.sendMessage(ChatColor.GREEN + "作者: " + ChatColor.YELLOW + names);
sender.sendMessage(ChatColor.GREEN + "http://residencebukkitmod.wikispaces.com/"); // sender.sendMessage(ChatColor.DARK_AQUA + "插件命令列表,帮助, 请查看wiki:");
sender.sendMessage(ChatColor.AQUA + "重制版本请查看Jenkins:"); // sender.sendMessage(ChatColor.GREEN + "http://residencebukkitmod.wikispaces.com/");
sender.sendMessage(ChatColor.BLUE + this.getDescription().getWebsite()); // sender.sendMessage(ChatColor.AQUA + "重制版本请查看Jenkins:");
sender.sendMessage(ChatColor.GRAY + "------------------------------------"); // sender.sendMessage(ChatColor.BLUE + this.getDescription().getWebsite());
return true; // sender.sendMessage(ChatColor.GRAY + "------------------------------------");
} // return true;
if (cmd.equals("setowner") && args.length == 3) { // }
if (!resadmin) { // if (cmd.equals("setowner") && args.length == 3) {
sender.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); // if (!resadmin) {
return true; // sender.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
} // return true;
ClaimedResidence area = rmanager.getByName(args[1]); // }
if (area != null) { // ClaimedResidence area = rmanager.getByName(args[1]);
area.getPermissions().setOwner(args[2], true); // if (area != null) {
if (area.getParent() == null) // area.getPermissions().setOwner(args[2], true);
sender.sendMessage(ChatColor.GREEN // if (area.getParent() == null)
+ language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + " " + args[1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2] + ChatColor.GREEN)); // sender.sendMessage(ChatColor.GREEN
else // + language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + " " + args[1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2] + ChatColor.GREEN));
sender.sendMessage(ChatColor.GREEN + language.getPhrase("SubzoneOwnerChange", // else
ChatColor.YELLOW + " " + args[1].split("\\.")[args[1].split("\\.").length - 1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2] + ChatColor.GREEN)); // sender.sendMessage(ChatColor.GREEN + language.getPhrase("SubzoneOwnerChange",
} else // ChatColor.YELLOW + " " + args[1].split("\\.")[args[1].split("\\.").length - 1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2] + ChatColor.GREEN));
sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); // } else
return true; // sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
} // return true;
// }
if (player == null) if (player == null)
return true; return true;
if (command.getName().equals("resadmin")) if (command.getName().equals("resadmin"))
@@ -218,6 +113,9 @@ public class ResidenceCommandListener extends Residence {
if (!resadmin && resadminToggle.contains(player.getName())) if (!resadmin && resadminToggle.contains(player.getName()))
if (!gmanager.isResidenceAdmin(player)) if (!gmanager.isResidenceAdmin(player))
resadminToggle.remove(player.getName()); resadminToggle.remove(player.getName());
// 此处开始的命令必须Player执行
if (cmd.equals("select")) if (cmd.equals("select"))
return commandResSelect(args, resadmin, player, page); return commandResSelect(args, resadmin, player, page);
if (cmd.equals("create")) if (cmd.equals("create"))
@@ -521,6 +419,110 @@ public class ResidenceCommandListener extends Residence {
return false; return false;
} }
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
return true;
// ResidenceCommandEvent cevent = new ResidenceCommandEvent(command.getName(), args, sender);
// server.getPluginManager().callEvent(cevent);
// if (cevent.isCancelled())
// return true;
// if (command.getName().equals("resreload") && args.length == 0) {
// if (sender instanceof Player) {
// Player player = (Player) sender;
// if (Residence.getPermissionManager().isResidenceAdmin(player)) {
// this.reloadPlugin();
// sender.sendMessage(ChatColor.GREEN + "[Residence] 重载配置文件.");
// System.out.println("[Residence] 重载 by " + player.getName() + ".");
// }
// } else {
// this.reloadPlugin();
// System.out.println("[Residence] 重载 by 控制台.");
// }
// return true;
// }
// if (command.getName().equals("resload")) {
// if (!(sender instanceof Player) || sender instanceof Player && gmanager.isResidenceAdmin((Player) sender))
// try {
// this.loadYml();
// sender.sendMessage(ChatColor.GREEN + "[Residence] 从配置保存文件重新载入数据...");
// } catch (Exception ex) {
// sender.sendMessage(ChatColor.RED + "[Residence] 无法从配置保存文件重新载入数据, 请查看控制台异常信息!");
// sender.sendMessage(ChatColor.RED + "[Residence] 异常: " + ex.getMessage());
// Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
// }
// return true;
// } else if (command.getName().equals("resworld")) {
// if (args.length == 2 && args[0].equalsIgnoreCase("remove"))
// if (sender instanceof ConsoleCommandSender) {
// rmanager.removeAllFromWorld(sender, args[1]);
// return true;
// } else
// sender.sendMessage(ChatColor.RED + "当前命令必须从控制台执行.");
// return false;
// } else if (command.getName().equals("rc")) {
// if (sender instanceof Player) {
// Player player = (Player) sender;
// String pname = player.getName();
// if (cmanager.chatEnabled()) {
// if (args.length == 0)
// plistener.tooglePlayerResidenceChat(player);
// else {
// String area = plistener.getCurrentResidenceName(pname);
// if (area != null) {
// ChatChannel channel = chatmanager.getChannel(area);
// if (channel != null) {
// String message = "";
// for (String arg : args)
// message = message + " " + arg;
// channel.chat(pname, message);
// } else
// player.sendMessage(ChatColor.RED + language.getPhrase("InvalidChannel"));
// } else
// player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence"));
// }
// } else
// player.sendMessage(ChatColor.RED + language.getPhrase("ChatDisabled"));
// }
// return true;
// } else if (command.getName().equals("res") || command.getName().equals("residence") || command.getName().equals("resadmin")) {
// boolean resadmin = false;
// if (sender instanceof Player) {
// if (command.getName().equals("resadmin") && gmanager.isResidenceAdmin((Player) sender))
// resadmin = true;
// if (command.getName().equals("resadmin") && !gmanager.isResidenceAdmin((Player) sender)) {
// ((Player) sender).sendMessage(ChatColor.RED + language.getPhrase("NonAdmin"));
// return true;
// }
// } else
// resadmin = true;
// return commandRes(args, resadmin, command, sender);
// }
// return super.onCommand(sender, command, label, args);
}
// private boolean commandHelp(String[] args, boolean resadmin, CommandSender sender) {
// if (helppages != null) {
// String helppath = "res";
// for (String arg : args) {
// if (arg.equalsIgnoreCase("?"))
// break;
// helppath = helppath + "." + arg;
// }
// int page = 1;
// if (!args[args.length - 1].equalsIgnoreCase("?"))
// try {
// page = Integer.parseInt(args[args.length - 1]);
// } catch (Exception ex) {
// sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidHelp"));
// }
// if (helppages.containesEntry(helppath)) {
// helppages.printHelp(sender, page, helppath);
// return true;
// }
// }
// return false;
// }
private boolean commandResArea(String[] args, boolean resadmin, Player player, int page) { private boolean commandResArea(String[] args, boolean resadmin, Player player, int page) {
if (args.length == 4) if (args.length == 4)
if (args[1].equals("remove")) { if (args[1].equals("remove")) {
@@ -620,26 +622,26 @@ public class ResidenceCommandListener extends Residence {
return true; return true;
} }
private boolean commandResConfirm(String[] args, boolean resadmin, CommandSender sender, int page) { // private boolean commandResConfirm(String[] args, boolean resadmin, CommandSender sender, int page) {
Player player = null; // Player player = null;
String name = "Console"; // String name = "Console";
if (sender instanceof Player) { // if (sender instanceof Player) {
player = (Player) sender; // player = (Player) sender;
name = player.getName(); // name = player.getName();
} // }
if (args.length == 1) { // if (args.length == 1) {
String area = deleteConfirm.get(name); // String area = deleteConfirm.get(name);
if (area == null) // if (area == null)
sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); // sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
else { // else {
rmanager.removeResidence(player, area, resadmin); // rmanager.removeResidence(player, area, resadmin);
deleteConfirm.remove(name); // deleteConfirm.remove(name);
if (player == null) // if (player == null)
sender.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceRemove", ChatColor.YELLOW + name + ChatColor.GREEN)); // sender.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceRemove", ChatColor.YELLOW + name + ChatColor.GREEN));
} // }
} // }
return true; // return true;
} // }
private boolean commandResCreate(String[] args, boolean resadmin, Player player, int page) { private boolean commandResCreate(String[] args, boolean resadmin, Player player, int page) {
if (args.length != 2) if (args.length != 2)
@@ -1081,72 +1083,72 @@ public class ResidenceCommandListener extends Residence {
return false; return false;
} }
private boolean commandResRemove(String[] args, boolean resadmin, CommandSender sender, int page) { // private boolean commandResRemove(String[] args, boolean resadmin, CommandSender sender, int page) {
Player player = null; // Player player = null;
if (sender instanceof Player) { // if (sender instanceof Player) {
player = (Player) sender; // player = (Player) sender;
if (args.length == 1) { // if (args.length == 1) {
String area = rmanager.getNameByLoc(player.getLocation()); // String area = rmanager.getNameByLoc(player.getLocation());
if (area != null) { // if (area != null) {
ClaimedResidence res = rmanager.getByName(area); // ClaimedResidence res = rmanager.getByName(area);
if (res.getParent() != null) { // if (res.getParent() != null) {
String[] split = area.split("\\."); // String[] split = area.split("\\.");
String words = split[split.length - 1]; // String words = split[split.length - 1];
if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) { // if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) {
player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED)); // player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED));
deleteConfirm.put(player.getName(), area); // deleteConfirm.put(player.getName(), area);
} else // } else
rmanager.removeResidence(player, area, resadmin); // rmanager.removeResidence(player, area, resadmin);
return true; // return true;
} else { // } else {
if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) { // if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) {
player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + area + ChatColor.RED)); // player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + area + ChatColor.RED));
deleteConfirm.put(player.getName(), area); // deleteConfirm.put(player.getName(), area);
} else // } else
rmanager.removeResidence(player, area, resadmin); // rmanager.removeResidence(player, area, resadmin);
return true; // return true;
} // }
} // }
return false; // return false;
} // }
} // }
if (args.length != 2) // if (args.length != 2)
return false; // return false;
if (player != null) { // if (player != null) {
if (!deleteConfirm.containsKey(player.getName()) || !args[1].equalsIgnoreCase(deleteConfirm.get(player.getName()))) { // if (!deleteConfirm.containsKey(player.getName()) || !args[1].equalsIgnoreCase(deleteConfirm.get(player.getName()))) {
String words = null; // String words = null;
if (rmanager.getByName(args[1]) != null) { // if (rmanager.getByName(args[1]) != null) {
ClaimedResidence res = rmanager.getByName(args[1]); // ClaimedResidence res = rmanager.getByName(args[1]);
if (res.getParent() != null) { // if (res.getParent() != null) {
String[] split = args[1].split("\\."); // String[] split = args[1].split("\\.");
words = split[split.length - 1]; // words = split[split.length - 1];
} // }
} // }
if (words == null) // if (words == null)
player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1] + ChatColor.RED)); // player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1] + ChatColor.RED));
else // else
player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED)); // player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED));
deleteConfirm.put(player.getName(), args[1]); // deleteConfirm.put(player.getName(), args[1]);
} else // } else
rmanager.removeResidence(player, args[1], resadmin); // rmanager.removeResidence(player, args[1], resadmin);
} else if (!deleteConfirm.containsKey("Console") || !args[1].equalsIgnoreCase(deleteConfirm.get("Console"))) { // } else if (!deleteConfirm.containsKey("Console") || !args[1].equalsIgnoreCase(deleteConfirm.get("Console"))) {
String words = null; // String words = null;
if (rmanager.getByName(args[1]) != null) { // if (rmanager.getByName(args[1]) != null) {
ClaimedResidence res = rmanager.getByName(args[1]); // ClaimedResidence res = rmanager.getByName(args[1]);
if (res.getParent() != null) { // if (res.getParent() != null) {
String[] split = args[1].split("\\."); // String[] split = args[1].split("\\.");
words = split[split.length - 1]; // words = split[split.length - 1];
} // }
} // }
if (words == null) // if (words == null)
server.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1] + ChatColor.RED)); // server.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1] + ChatColor.RED));
else // else
server.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED)); // server.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED));
deleteConfirm.put("Console", args[1]); // deleteConfirm.put("Console", args[1]);
} else // } else
rmanager.removeResidence(args[1]); // rmanager.removeResidence(args[1]);
return true; // return true;
} // }
private boolean commandResSelect(String[] args, boolean resadmin, Player player, int page) { private boolean commandResSelect(String[] args, boolean resadmin, Player player, int page) {
PermissionGroup group = Residence.getPermissionManager().getGroup(player); PermissionGroup group = Residence.getPermissionManager().getGroup(player);

View File

@@ -16,7 +16,6 @@ import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Damageable;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Hanging; import org.bukkit.entity.Hanging;
@@ -73,24 +72,6 @@ public class ResidencePlayerListener implements Listener {
lastUpdate.put(player.getName(), System.currentTimeMillis()); lastUpdate.put(player.getName(), System.currentTimeMillis());
} }
public void doHeals() {
try {
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
String resname = Residence.getPlayerListener().getCurrentResidenceName(player.getName());
ClaimedResidence res = null;
if (resname != null)
res = Residence.getResidenceManager().getByName(resname);
if (res != null && res.getPermissions().has("healing", false)) {
Damageable damage = player;
double health = damage.getHealth();
if (health < 20 && !player.isDead())
player.setHealth(health + 1);
}
}
} catch (Exception ex) {
}
}
public String getCurrentResidenceName(String player) { public String getCurrentResidenceName(String player) {
return currentRes.get(player); return currentRes.get(player);
} }
@@ -533,12 +514,12 @@ 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 || mat == Material.STONE_BUTTON || mat == Material.WOOD_BUTTON || mat == Material.WOODEN_DOOR return mat == Material.LEVER || mat == Material.STONE_BUTTON || mat == Material.WOOD_BUTTON || mat == Material.WOODEN_DOOR || 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()))
|| (Residence.is1_8() && (mat == Material.SPRUCE_DOOR || mat == Material.BIRCH_DOOR || mat == Material.JUNGLE_DOOR || mat == Material.ACACIA_DOOR || mat == Material.DARK_OAK_DOOR || (Residence.is1_8() && (mat == Material.SPRUCE_DOOR || mat == Material.BIRCH_DOOR || mat == Material.JUNGLE_DOOR || mat == Material.ACACIA_DOOR || mat == Material.DARK_OAK_DOOR
|| mat == Material.SPRUCE_FENCE_GATE || mat == Material.BIRCH_FENCE_GATE || mat == Material.JUNGLE_FENCE_GATE || mat == Material.ACACIA_FENCE_GATE || mat == Material.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.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) {

View File

@@ -147,7 +147,9 @@ public class FlagPermissions {
addResidenceOnlyFlag("spread"); addResidenceOnlyFlag("spread");
addResidenceOnlyFlag("hidden"); addResidenceOnlyFlag("hidden");
addResidenceOnlyFlag("witherdamage"); addResidenceOnlyFlag("witherdamage");
addPlayerOrGroupOnlyFlag("admin"); addPlayerOrGroupOnlyFlag("admin");
addFlagToFlagGroup("redstone", "note"); addFlagToFlagGroup("redstone", "note");
addFlagToFlagGroup("redstone", "pressure"); addFlagToFlagGroup("redstone", "pressure");
addFlagToFlagGroup("redstone", "lever"); addFlagToFlagGroup("redstone", "lever");
@@ -164,6 +166,7 @@ public class FlagPermissions {
addFlagToFlagGroup("trusted", "move"); addFlagToFlagGroup("trusted", "move");
addFlagToFlagGroup("fire", "ignite"); addFlagToFlagGroup("fire", "ignite");
addFlagToFlagGroup("fire", "firespread"); addFlagToFlagGroup("fire", "firespread");
addMaterialToUseFlag(Material.DIODE, "diode"); addMaterialToUseFlag(Material.DIODE, "diode");
addMaterialToUseFlag(Material.DIODE_BLOCK_OFF, "diode"); addMaterialToUseFlag(Material.DIODE_BLOCK_OFF, "diode");
addMaterialToUseFlag(Material.DIODE_BLOCK_ON, "diode"); addMaterialToUseFlag(Material.DIODE_BLOCK_ON, "diode");

File diff suppressed because it is too large Load Diff

View File

@@ -7,15 +7,14 @@ authors: [bekvon,nate302,t00thpick1,喵♂呜]
contributors: [lemon42,smbarbour,inorixu,Shayana_fr] contributors: [lemon42,smbarbour,inorixu,Shayana_fr]
softdepend: [Vault,Essentials,RealPlugin,BOSEconomy,iConomy,bPermissions,PermissionsBukkit,Permissions,WorldEdit] softdepend: [Vault,Essentials,RealPlugin,BOSEconomy,iConomy,bPermissions,PermissionsBukkit,Permissions,WorldEdit]
commands: commands:
res:
description: Manage Residences
usage: §c使用/res ? 获取更多帮助.
residence: residence:
description: Manage Residences description: 管理领地.
usage: §c使用/residence ? 获取更多帮助. aliese: [res]
usage: §c使用/res ? 或 /residence ? 或 /resadmin ? 获取更多帮助.
resadmin: resadmin:
description: Residence admin functions. description: 管理员命令 管理领地.
usage: §c使用/res ? or /resadmin ? 获取更多帮助. permission: residence.admin
usage: §c使用/res ? 或 /residence ? 或 /resadmin ? 获取更多帮助.
resreload: resreload:
description: 重载领地插件. description: 重载领地插件.
usage: §c使用/resreload usage: §c使用/resreload
@@ -30,7 +29,7 @@ commands:
usage: §c使用/resworld remove [world] 移除世界所有领地. usage: §c使用/resworld remove [world] 移除世界所有领地.
permissions: permissions:
residence.admin: residence.admin:
description: Gives you access to /resadmin description: 允许使用 /resadmin.
default: op default: op
residence.admin.tp: residence.admin.tp:
description: Allows to override tp flag description: Allows to override tp flag