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

remove static class...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092
2015-09-24 18:11:35 +08:00
parent 6b0f5ac789
commit 1cffbc7687
48 changed files with 4273 additions and 5120 deletions

View File

@@ -84,195 +84,183 @@ public class Residence extends JavaPlugin {
public static float bukkitver;
protected static ResidenceManager rmanager;
protected static SelectionManager smanager;
protected static PermissionManager gmanager;
protected static ConfigManager cmanager;
protected static FlagManager fmanager;
protected static TaskManager taskmanager;
protected static ResidenceBlockListener blistener;
protected static ResidencePlayerListener plistener;
protected static ResidenceEntityListener elistener;
protected static ResidencePlayerListener_1_8 plistener1_8;
protected static TransactionManager tmanager;
protected static PermissionListManager pmanager;
protected static LeaseManager leasemanager;
protected static WorldItemManager imanager;
protected static WorldFlagManager wmanager;
protected static RentManager rentmanager;
protected static ChatManager chatmanager;
protected static Server server;
public static HelpEntry helppages;
protected static Language language;
protected static Logger log;
protected static boolean useWorldEdit;
protected static EconomyInterface economy;
public final static int saveVersion = 1;
protected static File dataFolder;
protected static int leaseBukkitId = -1;
protected static int rentBukkitId = -1;
protected static int healBukkitId = -1;
protected static int autosaveBukkitId = -1;
protected static List<String> resadminToggle;
protected static FileConfig config;
private final static String[] validLanguages = { "English", "Chinese" };
public static boolean initsuccess;
protected HandlerMainCommand hdmcnd;
public final static String[] validLanguages = { "English", "Chinese" };
protected ResidenceBlockListener blistener;
protected ChatManager chatmanager;
protected ConfigManager cmanager;
protected FileConfig config;
protected File dataFolder;
protected Map<String, String> deleteConfirm;
protected EconomyInterface economy;
protected ResidenceEntityListener elistener;
protected boolean firstenable = true;
public Map<String, String> deleteConfirm;
protected FlagManager fmanager;
protected PermissionManager gmanager;
protected HandlerMainCommand hdmcnd;
protected HelpEntry helppages;
protected WorldItemManager imanager;
protected boolean init;
protected Language language;
protected LeaseManager leasemanager;
protected Logger log;
protected ResidencePlayerListener plistener;
protected ResidencePlayerListener_1_8 plistener1_8;
protected PermissionListManager pmanager;
protected RentManager rentmanager;
protected List<String> resadminToggle;
protected ResidenceManager rmanager;
protected Server server;
protected SelectionManager smanager;
protected TaskManager taskmanager;
protected TransactionManager tmanager;
protected boolean useWorldEdit;
protected WorldFlagManager wmanager;
public Residence() {
}
public static ResidenceBlockListener getBlockListener() {
public ResidenceBlockListener getBlockListener() {
return blistener;
}
public static ChatManager getChatManager() {
public ChatManager getChatManager() {
return chatmanager;
}
public static ConfigManager getConfigManager() {
return cmanager;
}
public static File getDataLocation() {
return dataFolder;
}
public static EconomyInterface getEconomyManager() {
return economy;
}
public static ResidenceEntityListener getEntityListener() {
return elistener;
}
public static WorldItemManager getItemManager() {
return imanager;
}
public static Language getLanguage() {
if (language == null)
language = new Language();
return language;
}
public static LeaseManager getLeaseManager() {
return leasemanager;
}
public static Logger getLog() {
return log;
}
public static PermissionManager getPermissionManager() {
return gmanager;
}
public static FlagPermissions getPermsByLoc(Location loc) {
ClaimedResidence res = rmanager.getByLoc(loc);
if (res != null)
return res.getPermissions();
else
return wmanager.getPerms(loc.getWorld().getName());
}
public static FlagPermissions getPermsByLocForPlayer(Location loc, Player player) {
ClaimedResidence res = rmanager.getByLoc(loc);
if (res != null)
return res.getPermissions();
else if (player != null)
return wmanager.getPerms(player);
else
return wmanager.getPerms(loc.getWorld().getName());
}
public static ResidencePlayerListener getPlayerListener() {
return plistener;
}
public static RentManager getRentManager() {
return rentmanager;
}
public static ResidenceManager getResidenceManager() {
return rmanager;
}
public static SelectionManager getSelectionManager() {
return smanager;
}
public static Server getServ() {
return server;
}
public static TransactionManager getTransactionManager() {
return tmanager;
}
public static WorldFlagManager getWorldFlags() {
return wmanager;
}
public static boolean is1_8() {
return bukkitver == 1.8;
}
public static boolean isResAdminOn(Player player) {
if (resadminToggle.contains(player.getName()))
return true;
return false;
}
public static boolean isResAdminOn(String player) {
if (resadminToggle.contains(player.toLowerCase()))
return true;
return false;
}
public static boolean isUseWorldEdit() {
return useWorldEdit;
}
public static void turnResAdminOn(Player player) {
resadminToggle.add(player.getName());
}
public static boolean validName(String name) {
if (name.contains(":") || name.contains("."))
return false;
if (cmanager.getResidenceNameRegex() == null)
return true;
else {
String namecheck = name.replaceAll(cmanager.getResidenceNameRegex(), "");
if (!name.equals(namecheck))
return false;
return true;
}
}
public void consoleMessage(String message) {
this.getLogger().info(message);
}
public void consoleMessage(String[] msg) {
for (String s : msg)
consoleMessage(s);
}
@Override
public FileConfiguration getConfig() {
return config;
}
public void loadLang(File langFile) throws FileNotFoundException, IOException, InvalidConfigurationException {
FileConfig langconfig = new FileConfig(this, langFile);
helppages = HelpEntry.parseHelp(langconfig, "CommandHelp");
public ConfigManager getConfigManager() {
return cmanager;
}
public File getDataLocation() {
return dataFolder;
}
public Map<String, String> getDeleteConfirm() {
return deleteConfirm;
}
public EconomyInterface getEconomyManager() {
return economy;
}
public ResidenceEntityListener getEntityListener() {
return elistener;
}
public HelpEntry getHelppages() {
return helppages;
}
public WorldItemManager getItemManager() {
return imanager;
}
public Language getLanguage() {
if (language == null) {
language = new Language();
}
return language;
}
public LeaseManager getLeaseManager() {
return leasemanager;
}
public Logger getLog() {
return log;
}
public PermissionListManager getPermissionListManager() {
return pmanager;
}
public PermissionManager getPermissionManager() {
return gmanager;
}
public FlagPermissions getPermsByLoc(final Location loc) {
final ClaimedResidence res = rmanager.getByLoc(loc);
if (res != null) {
return res.getPermissions();
} else {
return wmanager.getPerms(loc.getWorld().getName());
}
}
public FlagPermissions getPermsByLocForPlayer(final Location loc, final Player player) {
final ClaimedResidence res = rmanager.getByLoc(loc);
if (res != null) {
return res.getPermissions();
} else if (player != null) {
return wmanager.getPerms(player);
} else {
return wmanager.getPerms(loc.getWorld().getName());
}
}
public ResidencePlayerListener getPlayerListener() {
return plistener;
}
public RentManager getRentManager() {
return rentmanager;
}
public ResidenceManager getResidenceManager() {
return rmanager;
}
public SelectionManager getSelectionManager() {
return smanager;
}
public Server getServ() {
return server;
}
public TransactionManager getTransactionManager() {
return tmanager;
}
public WorldFlagManager getWorldFlags() {
return wmanager;
}
public boolean is1_8() {
return bukkitver == 1.8;
}
public boolean isInit() {
return init;
}
public boolean isResAdminOn(final Player player) {
if (resadminToggle.contains(player.getName())) {
return true;
}
return false;
}
public boolean isResAdminOn(final String player) {
if (resadminToggle.contains(player.toLowerCase())) {
return true;
}
return false;
}
public boolean isUseWorldEdit() {
return useWorldEdit;
}
public void loadLang(final File langFile) throws FileNotFoundException, IOException, InvalidConfigurationException {
final FileConfig langconfig = new FileConfig(this, langFile);
helppages = HelpEntry.parseHelp(this, langconfig, "CommandHelp");
HelpEntry.setLinesPerPage(langconfig.getInt("HelpLinesPerPage", 7));
InformationPager.setLinesPerPage(langconfig.getInt("HelpLinesPerPage", 7));
language = Language.parseText(langconfig, "Language");
@@ -280,9 +268,9 @@ public class Residence extends JavaPlugin {
@SuppressWarnings("unchecked")
public boolean loadYml() throws Exception {
File saveFolder = new File(dataFolder, "Save");
final File saveFolder = new File(dataFolder, "Save");
try {
File worldFolder = new File(saveFolder, "Worlds");
final File worldFolder = new File(saveFolder, "Worlds");
if (!saveFolder.isDirectory()) {
this.getLogger().warning("领地数据保存目录不存在...");
this.getLogger().warning("请重新启动服务器生成新的文件...");
@@ -290,9 +278,9 @@ public class Residence extends JavaPlugin {
}
YMLSaveHelper yml;
File loadFile;
long time = System.currentTimeMillis();
HashMap<String, Object> worlds = new HashMap<String, Object>();
for (World world : server.getWorlds()) {
final long time = System.currentTimeMillis();
final HashMap<String, Object> worlds = new HashMap<String, Object>();
for (final World world : server.getWorlds()) {
loadFile = new File(worldFolder, "res_" + world.getName() + ".yml");
if (loadFile.isFile()) {
yml = new YMLSaveHelper(loadFile);
@@ -300,34 +288,34 @@ public class Residence extends JavaPlugin {
worlds.put(world.getName(), yml.getRoot().get("Residences"));
}
}
rmanager = ResidenceManager.load(worlds);
rmanager = ResidenceManager.load(this, 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);
tmanager = TransactionManager.load(this, (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);
leasemanager = LeaseManager.load(this, (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"));
pmanager = PermissionListManager.load(this, (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"));
rentmanager = RentManager.load(this, (Map<String, Object>) yml.getRoot().get("RentSystem"));
}
this.getLogger().info("从配置文件中读取领地数据,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) + " 秒)");
return true;
} catch (Exception ex) {
} catch (final Exception ex) {
this.getLogger().warning("领地数据载入时发生错误,请报告以下内容给作者: ");
this.getLogger().warning("错误: " + ex);
throw ex;
@@ -335,30 +323,27 @@ public class Residence extends JavaPlugin {
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
ResidenceCommandEvent cevent = new ResidenceCommandEvent(command.getName(), args, sender);
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
final ResidenceCommandEvent cevent = new ResidenceCommandEvent(command.getName(), args, sender);
server.getPluginManager().callEvent(cevent);
if (cevent.isCancelled())
if (cevent.isCancelled()) {
return true;
}
return hdmcnd.onCommand(sender, command, label, args);
}
@Override
public void onDisable() {
server.getScheduler().cancelTask(autosaveBukkitId);
server.getScheduler().cancelTask(healBukkitId);
if (cmanager.useLeases())
server.getScheduler().cancelTask(leaseBukkitId);
if (cmanager.enabledRentSystem())
server.getScheduler().cancelTask(rentBukkitId);
if (initsuccess)
taskmanager.cancelall();
if (init) {
try {
saveYml();
DataBackup.run();
} catch (Exception ex) {
DataBackup.run(this);
} catch (final Exception ex) {
this.getLogger().warning("领地数据保存错误,可能造成部分领地丢失,请尝试恢复备份文件!");
this.getLogger().warning("错误: " + ex);
}
}
}
@Override
@@ -366,45 +351,50 @@ public class Residence extends JavaPlugin {
try {
log = this.getLogger();
bukkitver = Float.parseFloat(this.getServer().getBukkitVersion().substring(0, 3));
initsuccess = false;
init = false;
deleteConfirm = new HashMap<String, String>();
resadminToggle = new ArrayList<String>();
server = this.getServer();
dataFolder = this.getDataFolder();
if (!dataFolder.isDirectory())
if (!dataFolder.isDirectory()) {
dataFolder.mkdirs();
cmanager = new ConfigManager(this.getConfig());
String multiworld = cmanager.getMultiworldPlugin();
}
cmanager = new ConfigManager(this);
final String multiworld = cmanager.getMultiworldPlugin();
if (multiworld != null) {
Plugin plugin = server.getPluginManager().getPlugin(multiworld);
if (plugin != null)
final Plugin plugin = server.getPluginManager().getPlugin(multiworld);
if (plugin != null) {
if (!plugin.isEnabled()) {
this.getLogger().info(" - 加载多世界插件: " + multiworld);
server.getPluginManager().enablePlugin(plugin);
}
}
}
gmanager = new PermissionManager(this.getConfig());
gmanager = new PermissionManager(this);
imanager = new WorldItemManager(this.getConfig());
wmanager = new WorldFlagManager(this.getConfig());
wmanager = new WorldFlagManager(this);
chatmanager = new ChatManager();
rentmanager = new RentManager();
for (String lang : validLanguages)
chatmanager = new ChatManager(this);
rentmanager = new RentManager(this);
for (final String lang : validLanguages) {
try {
if (this.checkNewLanguageVersion(lang))
if (this.checkNewLanguageVersion(lang)) {
this.writeDefaultLanguageFile(lang);
} catch (Exception ex) {
}
} catch (final Exception ex) {
this.getLogger().warning("语言文件升级失败: " + lang + ".yml");
helppages = new HelpEntry("");
helppages = new HelpEntry(this, "");
language = new Language();
}
File langFile = new File(new File(dataFolder, "Language"), cmanager.getLanguage() + ".yml");
}
final File langFile = new File(new File(dataFolder, "Language"), cmanager.getLanguage() + ".yml");
try {
if (langFile.isFile())
if (langFile.isFile()) {
loadLang(langFile);
else
} else {
this.getLogger().warning("语言文件不存在...");
} catch (Exception ex) {
}
} catch (final Exception ex) {
this.getLogger().warning("语言文件载入失败: " + cmanager.getLanguage() + ".yml 写入默认语言文件");
this.writeDefaultLanguageFile(cmanager.getLanguage());
loadLang(langFile);
@@ -413,71 +403,82 @@ public class Residence extends JavaPlugin {
if (this.getConfig().getBoolean("Global.EnableEconomy", false)) {
this.getLogger().info("扫描经济系统...");
if (gmanager.getPermissionsPlugin() instanceof ResidenceVaultAdapter) {
ResidenceVaultAdapter vault = (ResidenceVaultAdapter) gmanager.getPermissionsPlugin();
final ResidenceVaultAdapter vault = (ResidenceVaultAdapter) gmanager.getPermissionsPlugin();
if (vault.economyOK()) {
economy = vault;
this.getLogger().info("发现 Vault 使用经济系统: " + vault.getEconomyName());
}
}
if (economy == null)
if (economy == null) {
this.loadVaultEconomy();
if (economy == null)
}
if (economy == null) {
this.loadEssentialsEconomy();
if (economy == null)
}
if (economy == null) {
this.getLogger().warning("未找到经济系统...");
}
}
try {
this.loadYml();
} catch (Exception e) {
} catch (final Exception e) {
this.getLogger().warning("领地数据载入错误,可能造成插件无法启动,请尝试恢复备份文件!");
this.getLogger().warning("错误: " + e);
}
if (rmanager == null)
rmanager = new ResidenceManager();
if (leasemanager == null)
leasemanager = new LeaseManager(rmanager);
if (tmanager == null)
tmanager = new TransactionManager(rmanager, gmanager);
if (pmanager == null)
pmanager = new PermissionListManager();
if (taskmanager == null)
if (rmanager == null) {
rmanager = new ResidenceManager(this);
}
if (leasemanager == null) {
leasemanager = new LeaseManager(this, rmanager);
}
if (tmanager == null) {
tmanager = new TransactionManager(this, rmanager, gmanager);
}
if (pmanager == null) {
pmanager = new PermissionListManager(this);
}
if (taskmanager == null) {
taskmanager = new TaskManager(this);
}
if (firstenable) {
if (!this.isEnabled())
if (!this.isEnabled()) {
return;
}
FlagPermissions.initValidFlags();
Plugin p = server.getPluginManager().getPlugin("WorldEdit");
final Plugin p = server.getPluginManager().getPlugin("WorldEdit");
if (p != null) {
smanager = new WorldEditSelectionManager(server);
smanager = new WorldEditSelectionManager(this);
useWorldEdit = true;
this.getLogger().info("发现 WorldEdit");
} else {
smanager = new SelectionManager(server);
smanager = new SelectionManager(this);
useWorldEdit = false;
this.getLogger().warning("WorldEdit 未找到!");
}
blistener = new ResidenceBlockListener();
plistener = new ResidencePlayerListener();
elistener = new ResidenceEntityListener();
plistener1_8 = new ResidencePlayerListener_1_8();
PluginManager pm = getServer().getPluginManager();
blistener = new ResidenceBlockListener(this);
plistener = new ResidencePlayerListener(this);
elistener = new ResidenceEntityListener(this);
plistener1_8 = new ResidencePlayerListener_1_8(this);
final PluginManager pm = getServer().getPluginManager();
pm.registerEvents(blistener, this);
pm.registerEvents(plistener, this);
if (is1_8())
if (is1_8()) {
pm.registerEvents(plistener1_8, this);
}
pm.registerEvents(elistener, this);
firstenable = false;
} else
} else {
plistener.reload();
}
fmanager = new FlagManager(this);
fmanager.init();
taskmanager.add(server.getScheduler().runTaskTimer(this, new HealTask(), 20, 20));
taskmanager.add(server.getScheduler().runTaskTimer(this, new HealTask(this), 20, 20));
HandlerMainCommand hdmcnd = new HandlerMainCommand(this);
hdmcnd = new HandlerMainCommand(this);
hdmcnd.registerCommand(new CommandRc(this));
hdmcnd.registerCommand(new CommandRes(this));
hdmcnd.registerCommand(new CommandResLoad(this));
@@ -490,20 +491,22 @@ public class Residence extends JavaPlugin {
if (cmanager.useLeases()) {
int leaseInterval = cmanager.getLeaseCheckInterval();
leaseInterval = leaseInterval < 1 ? 1 : leaseInterval * 60 * 20;
taskmanager.add(server.getScheduler().runTaskTimer(this, new LeaseTask(), leaseInterval, leaseInterval));
taskmanager.add(server.getScheduler().runTaskTimer(this, new LeaseTask(this), leaseInterval, leaseInterval));
}
if (cmanager.enabledRentSystem()) {
int rentint = cmanager.getRentCheckInterval();
rentint = rentint < 1 ? 1 : rentint * 60 * 20;
taskmanager.add(server.getScheduler().runTaskTimer(this, new RentTask(), rentint, rentint));
taskmanager.add(server.getScheduler().runTaskTimer(this, new RentTask(this), rentint, rentint));
}
for (Player player : Bukkit.getServer().getOnlinePlayers())
if (Residence.getPermissionManager().isResidenceAdmin(player))
for (final Player player : Bukkit.getServer().getOnlinePlayers()) {
if (this.getPermissionManager().isResidenceAdmin(player)) {
turnResAdminOn(player);
}
}
this.getLogger().info("载入完成! 版本: " + this.getDescription().getVersion() + " 重制 by 喵♂呜");
initsuccess = true;
} catch (Exception ex) {
initsuccess = false;
init = true;
} catch (final Exception ex) {
init = false;
getServer().getPluginManager().disablePlugin(this);
this.getLogger().warning(" - 初始化失败! 卸载插件! 请报告以下错误给作者,谢谢!");
this.getLogger().warning("错误: " + ex);
@@ -519,10 +522,10 @@ public class Residence extends JavaPlugin {
@Override
public void reloadConfig() {
config.reload();
};
}
public void reloadPlugin() {
PluginManager pm = server.getPluginManager();
final PluginManager pm = server.getPluginManager();
pm.disablePlugin(this);
pm.enablePlugin(this);
}
@@ -530,31 +533,33 @@ public class Residence extends JavaPlugin {
@Override
public void saveConfig() {
config.save();
}
};
public void saveYml() throws IOException {
File saveFolder = new File(dataFolder, "Save");
File worldFolder = new File(saveFolder, "Worlds");
final File saveFolder = new File(dataFolder, "Save");
final File worldFolder = new File(saveFolder, "Worlds");
worldFolder.mkdirs();
YMLSaveHelper yml;
long time = System.currentTimeMillis();
Map<String, Object> save = rmanager.save();
for (Entry<String, Object> entry : save.entrySet()) {
File ymlSaveLoc = new File(worldFolder, "res_" + entry.getKey() + ".yml");
File tmpFile = new File(worldFolder, "tmp_res_" + entry.getKey() + ".yml");
final long time = System.currentTimeMillis();
final Map<String, Object> save = rmanager.save();
for (final Entry<String, Object> entry : save.entrySet()) {
final File ymlSaveLoc = new File(worldFolder, "res_" + entry.getKey() + ".yml");
final File tmpFile = new File(worldFolder, "tmp_res_" + entry.getKey() + ".yml");
yml = new YMLSaveHelper(tmpFile);
yml.getRoot().put("Version", saveVersion);
World world = server.getWorld(entry.getKey());
if (world != null)
final World world = server.getWorld(entry.getKey());
if (world != null) {
yml.getRoot().put("Seed", world.getSeed());
}
yml.getRoot().put("Residences", entry.getValue());
yml.save();
if (ymlSaveLoc.isFile()) {
File backupFolder = new File(worldFolder, "Backup");
final File backupFolder = new File(worldFolder, "Backup");
backupFolder.mkdirs();
File backupFile = new File(backupFolder, "res_" + entry.getKey() + ".yml");
if (backupFile.isFile())
final File backupFile = new File(backupFolder, "res_" + entry.getKey() + ".yml");
if (backupFile.isFile()) {
backupFile.delete();
}
ymlSaveLoc.renameTo(backupFile);
}
tmpFile.renameTo(ymlSaveLoc);
@@ -569,11 +574,12 @@ public class Residence extends JavaPlugin {
yml.getRoot().put("Economy", tmanager.save());
yml.save();
if (ymlSaveLoc.isFile()) {
File backupFolder = new File(saveFolder, "Backup");
final File backupFolder = new File(saveFolder, "Backup");
backupFolder.mkdirs();
File backupFile = new File(backupFolder, "forsale.yml");
if (backupFile.isFile())
final File backupFile = new File(backupFolder, "forsale.yml");
if (backupFile.isFile()) {
backupFile.delete();
}
ymlSaveLoc.renameTo(backupFile);
}
tmpFile.renameTo(ymlSaveLoc);
@@ -586,11 +592,12 @@ public class Residence extends JavaPlugin {
yml.getRoot().put("Leases", leasemanager.save());
yml.save();
if (ymlSaveLoc.isFile()) {
File backupFolder = new File(saveFolder, "Backup");
final File backupFolder = new File(saveFolder, "Backup");
backupFolder.mkdirs();
File backupFile = new File(backupFolder, "leases.yml");
if (backupFile.isFile())
final File backupFile = new File(backupFolder, "leases.yml");
if (backupFile.isFile()) {
backupFile.delete();
}
ymlSaveLoc.renameTo(backupFile);
}
tmpFile.renameTo(ymlSaveLoc);
@@ -603,11 +610,12 @@ public class Residence extends JavaPlugin {
yml.getRoot().put("PermissionLists", pmanager.save());
yml.save();
if (ymlSaveLoc.isFile()) {
File backupFolder = new File(saveFolder, "Backup");
final File backupFolder = new File(saveFolder, "Backup");
backupFolder.mkdirs();
File backupFile = new File(backupFolder, "permlists.yml");
if (backupFile.isFile())
final File backupFile = new File(backupFolder, "permlists.yml");
if (backupFile.isFile()) {
backupFile.delete();
}
ymlSaveLoc.renameTo(backupFile);
}
tmpFile.renameTo(ymlSaveLoc);
@@ -620,82 +628,112 @@ public class Residence extends JavaPlugin {
yml.getRoot().put("RentSystem", rentmanager.save());
yml.save();
if (ymlSaveLoc.isFile()) {
File backupFolder = new File(saveFolder, "Backup");
final File backupFolder = new File(saveFolder, "Backup");
backupFolder.mkdirs();
File backupFile = new File(backupFolder, "rent.yml");
if (backupFile.isFile())
final File backupFile = new File(backupFolder, "rent.yml");
if (backupFile.isFile()) {
backupFile.delete();
}
ymlSaveLoc.renameTo(backupFile);
}
tmpFile.renameTo(ymlSaveLoc);
this.getLogger().info("保存领地数据到文件中,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) + " 秒)");
if (cmanager.showIntervalMessages())
if (cmanager.showIntervalMessages()) {
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))
public void turnResAdminOn(final Player player) {
resadminToggle.add(player.getName());
}
public boolean validName(final String name) {
if (name.contains(":") || name.contains(".")) {
return false;
}
if (cmanager.getResidenceNameRegex() == null) {
return true;
} else {
final String namecheck = name.replaceAll(cmanager.getResidenceNameRegex(), "");
if (!name.equals(namecheck)) {
return false;
FileConfig testconfig2 = new FileConfig(this, checkFile);
}
return true;
}
}
private boolean checkNewLanguageVersion(final String lang) throws IOException, FileNotFoundException, InvalidConfigurationException {
final File outFile = new File(new File(this.getDataFolder(), "Language"), lang + ".yml");
final File checkFile = new File(new File(this.getDataFolder(), "Language"), "temp-" + lang + ".yml");
if (outFile.isFile()) {
final FileConfig testconfig = new FileConfig(this, outFile);
final int oldversion = testconfig.getInt("FieldsVersion", 0);
if (!this.writeDefaultFileFromJar(checkFile, "languagefiles/" + lang + ".yml", false)) {
return false;
}
final FileConfig testconfig2 = new FileConfig(this, checkFile);
testconfig2.load(checkFile);
int newversion = testconfig2.getInt("FieldsVersion", oldversion);
if (checkFile.isFile())
final int newversion = testconfig2.getInt("FieldsVersion", oldversion);
if (checkFile.isFile()) {
checkFile.delete();
if (newversion > oldversion)
}
if (newversion > oldversion) {
return true;
}
return false;
}
return true;
}
private void loadEssentialsEconomy() {
Plugin p = getServer().getPluginManager().getPlugin("Essentials");
final Plugin p = getServer().getPluginManager().getPlugin("Essentials");
if (p != null) {
economy = new EssentialsEcoAdapter((Essentials) p);
this.getLogger().info("成功关联Essentials Economy!");
} else
} else {
this.getLogger().info("Essentials Economy 未找到!");
}
}
private void loadVaultEconomy() {
Plugin p = getServer().getPluginManager().getPlugin("Vault");
final Plugin p = getServer().getPluginManager().getPlugin("Vault");
if (p != null) {
ResidenceVaultAdapter vault = new ResidenceVaultAdapter(getServer());
final ResidenceVaultAdapter vault = new ResidenceVaultAdapter(getServer());
if (vault.economyOK()) {
this.getLogger().info("发现 Vault 使用经济系统: " + vault.getEconomyName());
economy = vault;
} else
} else {
this.getLogger().info("发现 Vault, 但是 Vault 未找到经济系统...");
} else
}
} else {
this.getLogger().info("Vault 未找到!");
}
}
@SuppressWarnings("resource")
private boolean writeDefaultFileFromJar(File writeName, String jarPath, boolean backupOld) {
private boolean writeDefaultFileFromJar(final File writeName, final String jarPath, final boolean backupOld) {
try {
File fileBackup = new File(this.getDataFolder(), "backup-" + writeName);
File jarloc = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).getCanonicalFile();
final File fileBackup = new File(this.getDataFolder(), "backup-" + writeName);
final File jarloc = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).getCanonicalFile();
if (jarloc.isFile()) {
JarFile jar = new JarFile(jarloc);
JarEntry entry = jar.getJarEntry(jarPath);
final JarFile jar = new JarFile(jarloc);
final JarEntry entry = jar.getJarEntry(jarPath);
if (entry != null && !entry.isDirectory()) {
InputStream in = jar.getInputStream(entry);
InputStreamReader isr = new InputStreamReader(in, "UTF8");
if (writeName.isFile())
final InputStream in = jar.getInputStream(entry);
final InputStreamReader isr = new InputStreamReader(in, "UTF8");
if (writeName.isFile()) {
if (backupOld) {
if (fileBackup.isFile())
if (fileBackup.isFile()) {
fileBackup.delete();
}
writeName.renameTo(fileBackup);
} else
} else {
writeName.delete();
FileOutputStream out = new FileOutputStream(writeName);
OutputStreamWriter osw = new OutputStreamWriter(out, "UTF8");
char[] tempbytes = new char[512];
}
}
final FileOutputStream out = new FileOutputStream(writeName);
final OutputStreamWriter osw = new OutputStreamWriter(out, "UTF8");
final char[] tempbytes = new char[512];
int readbytes = isr.read(tempbytes, 0, 512);
while (readbytes > -1) {
osw.write(tempbytes, 0, readbytes);
@@ -707,16 +745,17 @@ public class Residence extends JavaPlugin {
}
}
return false;
} catch (Exception ex) {
} catch (final Exception ex) {
this.getLogger().warning("文件写入失败: " + writeName);
return false;
}
}
private void writeDefaultLanguageFile(String lang) {
File outFile = new File(new File(this.getDataFolder(), "Language"), lang + ".yml");
private void writeDefaultLanguageFile(final String lang) {
final File outFile = new File(new File(this.getDataFolder(), "Language"), lang + ".yml");
outFile.getParentFile().mkdirs();
if (this.writeDefaultFileFromJar(outFile, "languagefiles/" + lang + ".yml", true))
if (this.writeDefaultFileFromJar(outFile, "languagefiles/" + lang + ".yml", true)) {
this.getLogger().info("保存默认 " + lang + " 语言文件...");
}
}
}