Do a bit more cleanup, and shuffle a few things around

This commit is contained in:
Joshua Popoff
2014-05-06 22:37:48 -07:00
parent faa4a45ba9
commit 2e429ceb21
9 changed files with 71 additions and 57 deletions
@@ -51,7 +51,7 @@ public class PlayerVaults extends JavaPlugin {
private HashMap<String, SignSetInfo> setSign = new HashMap<>(); private HashMap<String, SignSetInfo> setSign = new HashMap<>();
private HashMap<String, VaultViewInfo> inVault = new HashMap<>(); private HashMap<String, VaultViewInfo> inVault = new HashMap<>();
private HashMap<String, Inventory> openInventories = new HashMap<>(); private HashMap<String, Inventory> openInventories = new HashMap<>();
private static Economy econ = null; private Economy economy = null;
private boolean dropOnDeath = false; private boolean dropOnDeath = false;
private boolean useVault = false; private boolean useVault = false;
private int inventoriesToDrop = 0; private int inventoriesToDrop = 0;
@@ -73,7 +73,7 @@ public class PlayerVaults extends JavaPlugin {
getCommand("pvdel").setExecutor(new DeleteCommand()); getCommand("pvdel").setExecutor(new DeleteCommand());
getCommand("pvsign").setExecutor(new SignCommand()); getCommand("pvsign").setExecutor(new SignCommand());
getCommand("workbench").setExecutor(new WorkbenchCommand()); getCommand("workbench").setExecutor(new WorkbenchCommand());
setupEconomy(); useVault = setupEconomy();
startMetrics(); startMetrics();
if (getConfig().getBoolean("drop-on-death.enabled")) { if (getConfig().getBoolean("drop-on-death.enabled")) {
@@ -81,8 +81,6 @@ public class PlayerVaults extends JavaPlugin {
inventoriesToDrop = getConfig().getInt("drop-on-death.inventories"); inventoriesToDrop = getConfig().getInt("drop-on-death.inventories");
} }
new File(getDataFolder() + File.separator + "vaults" + File.separator + "backups").mkdirs();
if (getConfig().getBoolean("cleanup.enable", false)) { if (getConfig().getBoolean("cleanup.enable", false)) {
getServer().getScheduler().runTaskAsynchronously(this, new Cleanup(getConfig().getInt("cleanup.lastEdit", 30))); getServer().getScheduler().runTaskAsynchronously(this, new Cleanup(getConfig().getInt("cleanup.lastEdit", 30)));
} }
@@ -104,20 +102,24 @@ public class PlayerVaults extends JavaPlugin {
@Override @Override
public void onDisable() { public void onDisable() {
for (Player p : Bukkit.getOnlinePlayers()) { for (Player player : Bukkit.getOnlinePlayers()) {
if (getInVault().containsKey(p.getName())) { if (this.inVault.containsKey(player.getName())) {
Inventory inv = p.getOpenInventory().getTopInventory(); Inventory inventory = player.getOpenInventory().getTopInventory();
if (inv.getViewers().size() == 1) { if (inventory.getViewers().size() == 1) {
VaultViewInfo info = getInVault().get(p.getName()); VaultViewInfo info = this.inVault.get(player.getName());
try { try {
UUIDVaultManager.getInstance().saveVault(inv, p.getUniqueId(), info.getNumber()); UUIDVaultManager.getInstance().saveVault(inventory, player.getUniqueId(), info.getNumber());
} catch (IOException e) { } catch (IOException e) {
// ignore
} }
getOpenInventories().remove(info.toString());
this.openInventories.remove(info.toString());
} }
getInVault().remove(p.getName());
this.inVault.remove(player.getName());
} }
p.closeInventory();
player.closeInventory();
} }
} }
@@ -125,7 +127,7 @@ public class PlayerVaults extends JavaPlugin {
if (getConfig().getBoolean("check-update", true)) { if (getConfig().getBoolean("check-update", true)) {
final PlayerVaults plugin = this; final PlayerVaults plugin = this;
final File file = this.getFile(); final File file = this.getFile();
final Updater.UpdateType updateType = (getConfig().getBoolean("download-update", true) ? Updater.UpdateType.DEFAULT : Updater.UpdateType.NO_DOWNLOAD); final Updater.UpdateType updateType = getConfig().getBoolean("download-update", true) ? Updater.UpdateType.DEFAULT : Updater.UpdateType.NO_DOWNLOAD;
getServer().getScheduler().runTaskAsynchronously(this, new Runnable() { getServer().getScheduler().runTaskAsynchronously(this, new Runnable() {
@Override @Override
public void run() { public void run() {
@@ -146,13 +148,15 @@ public class PlayerVaults extends JavaPlugin {
if (getServer().getPluginManager().getPlugin("Vault") == null) { if (getServer().getPluginManager().getPlugin("Vault") == null) {
return false; return false;
} }
RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
if (rsp == null) { RegisteredServiceProvider<Economy> provider = getServer().getServicesManager().getRegistration(Economy.class);
if (provider == null) {
return false; return false;
} }
econ = rsp.getProvider();
useVault = true; economy = provider.getProvider();
return econ != null;
return economy != null;
} }
private void loadConfig() { private void loadConfig() {
@@ -280,12 +284,14 @@ public class PlayerVaults extends JavaPlugin {
} }
} }
} }
YamlConfiguration conf = YamlConfiguration.loadConfiguration(lang); YamlConfiguration conf = YamlConfiguration.loadConfiguration(lang);
for (Lang item : Lang.values()) { for (Lang item : Lang.values()) {
if (conf.getString(item.getPath()) == null) { if (conf.getString(item.getPath()) == null) {
conf.set(item.getPath(), item.getDefault()); conf.set(item.getPath(), item.getDefault());
} }
} }
Lang.setFile(conf); Lang.setFile(conf);
try { try {
conf.save(lang); conf.save(lang);
@@ -321,13 +327,24 @@ public class PlayerVaults extends JavaPlugin {
} }
public Economy getEconomy() { public Economy getEconomy() {
return econ; return this.economy;
}
public boolean isEconomyEnabled() {
return this.getConfig().getBoolean("economy.enabled", false) && this.useVault;
} }
public File getVaultData() { public File getVaultData() {
return new File(this.getDataFolder(), "uuidvaults"); return new File(this.getDataFolder(), "uuidvaults");
} }
public File getBackupsFolder() {
File folder = new File(this.getVaultData(), "backups");
folder.mkdirs();
return folder;
}
public static PlayerVaults getInstance() { public static PlayerVaults getInstance() {
return instance; return instance;
} }
@@ -6,7 +6,6 @@ import org.bukkit.scheduler.BukkitRunnable;
import java.io.File; import java.io.File;
public class Cleanup extends BukkitRunnable { public class Cleanup extends BukkitRunnable {
private long diff; private long diff;
public Cleanup(int diff) { public Cleanup(int diff) {
@@ -15,14 +14,17 @@ public class Cleanup extends BukkitRunnable {
@Override @Override
public void run() { public void run() {
File file = PlayerVaults.getInstance().getVaultData(); File directory = PlayerVaults.getInstance().getVaultData();
if (!file.exists()) return; if (!directory.exists()) {
// folder doesn't exist, don't run
return;
}
long time = System.currentTimeMillis(); long time = System.currentTimeMillis();
for (File f : file.listFiles()) { for (File file : directory.listFiles()) {
if (time - f.lastModified() > diff) { if (time - file.lastModified() > diff) {
f.delete(); PlayerVaults.getInstance().getLogger().info("Deleting vault file (cleanup): " + file.getName());
PlayerVaults.getInstance().getLogger().info("Deleting vault file: " + f.getName()); file.delete();
} }
} }
} }
@@ -8,14 +8,12 @@ import org.bukkit.scheduler.BukkitRunnable;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.UUID;
import java.util.logging.Level; import java.util.logging.Level;
/** /**
* Class to convert vaults by name to vaults by UUID. * Class to convert vaults by name to vaults by UUID.
*/ */
public final class UUIDConversion extends BukkitRunnable { public final class UUIDConversion extends BukkitRunnable {
@Override @Override
public void run() { public void run() {
File newDir = PlayerVaults.getInstance().getVaultData(); File newDir = PlayerVaults.getInstance().getVaultData();
@@ -23,11 +21,12 @@ public final class UUIDConversion extends BukkitRunnable {
PlayerVaults.getInstance().getLogger().log(Level.INFO, "Files already converted to UUID."); PlayerVaults.getInstance().getLogger().log(Level.INFO, "Files already converted to UUID.");
return; return;
} }
newDir.mkdirs(); newDir.mkdirs();
PlayerVaults.getInstance().getLogger().log(Level.INFO, "********** Starting PlayerVault conversion to UUIDs **********"); PlayerVaults.getInstance().getLogger().log(Level.INFO, "********** Starting PlayerVault conversion to UUIDs **********");
PlayerVaults.getInstance().getLogger().log(Level.INFO, "This might take awhile."); PlayerVaults.getInstance().getLogger().log(Level.INFO, "This might take awhile.");
PlayerVaults.getInstance().getLogger().log(Level.INFO, "plugins/PlayerVaults/vaults will still be there as a backup but unused."); PlayerVaults.getInstance().getLogger().log(Level.INFO, "plugins/PlayerVaults/vaults will remain as a backup.");
for (File file : new File(PlayerVaults.getInstance().getDataFolder() + File.separator + "vaults").listFiles()) { for (File file : new File(PlayerVaults.getInstance().getDataFolder() + File.separator + "vaults").listFiles()) {
if (file.isDirectory()) continue; // backups folder. if (file.isDirectory()) continue; // backups folder.
@@ -37,8 +36,7 @@ public final class UUIDConversion extends BukkitRunnable {
break; break;
} }
UUID uuid = player.getUniqueId(); File newFile = new File(PlayerVaults.getInstance().getVaultData(), player.getUniqueId().toString() + ".yml");
File newFile = new File(PlayerVaults.getInstance().getVaultData(), uuid.toString() + ".yml");
file.mkdirs(); file.mkdirs();
try { try {
Files.copy(file, newFile); Files.copy(file, newFile);
@@ -20,26 +20,18 @@ import com.drtshock.playervaults.PlayerVaults;
import com.drtshock.playervaults.util.Lang; import com.drtshock.playervaults.util.Lang;
import net.milkbowl.vault.economy.EconomyResponse; import net.milkbowl.vault.economy.EconomyResponse;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.configuration.InvalidConfigurationException; 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 java.io.File; import java.io.File;
import java.io.IOException;
/** /**
* A class that handles all economy operations. * A class that handles all economy operations.
*/ */
public class EconomyOperations { public class EconomyOperations {
private static PlayerVaults PLUGIN = PlayerVaults.getInstance();
private static YamlConfiguration BUKKIT_CONFIG = new YamlConfiguration(); private static FileConfiguration BUKKIT_CONFIG = PLUGIN.getConfig();
public static PlayerVaults PLUGIN;
public EconomyOperations(PlayerVaults instance) throws IOException, InvalidConfigurationException {
PLUGIN = instance;
File config = new File(PLUGIN.getDataFolder(), "config.yml");
BUKKIT_CONFIG.load(config);
}
/** /**
* Have a player pay to open a vault. * Have a player pay to open a vault.
@@ -50,9 +42,10 @@ public class EconomyOperations {
* @return The transaction success. * @return The transaction success.
*/ */
public static boolean payToOpen(Player player, int number) { public static boolean payToOpen(Player player, int number) {
if (!BUKKIT_CONFIG.getBoolean("economy.enabled") || player.hasPermission("playervaults.free") || PlayerVaults.getInstance().getEconomy() != null) { if (!PLUGIN.isEconomyEnabled() || player.hasPermission("playervaults.free")) {
return true; return true;
} }
if (UUIDVaultManager.getInstance().vaultExists(player.getUniqueId(), number)) { if (UUIDVaultManager.getInstance().vaultExists(player.getUniqueId(), number)) {
return payToCreate(player); return payToCreate(player);
} else { } else {
@@ -63,6 +56,7 @@ public class EconomyOperations {
return true; return true;
} }
} }
return false; return false;
} }
@@ -74,7 +68,7 @@ public class EconomyOperations {
* @return The transaction success * @return The transaction success
*/ */
public static boolean payToCreate(Player player) { public static boolean payToCreate(Player player) {
if (!BUKKIT_CONFIG.getBoolean("economy.enabled") || player.hasPermission("playervaults.free") || PlayerVaults.getInstance().getEconomy() != null) { if (!PLUGIN.isEconomyEnabled() || player.hasPermission("playervaults.free")) {
return true; return true;
} }
@@ -84,6 +78,7 @@ public class EconomyOperations {
player.sendMessage(Lang.TITLE.toString() + Lang.COST_TO_CREATE.toString().replaceAll("%price", "" + cost)); player.sendMessage(Lang.TITLE.toString() + Lang.COST_TO_CREATE.toString().replaceAll("%price", "" + cost));
return true; return true;
} }
return false; return false;
} }
@@ -96,15 +91,14 @@ public class EconomyOperations {
* @return The transaction success. * @return The transaction success.
*/ */
public static boolean refundOnDelete(Player player, int number) { public static boolean refundOnDelete(Player player, int number) {
String directory = "plugins" + File.separator + "PlayerVaults" + File.separator + "vaults"; if (!PLUGIN.isEconomyEnabled() || player.hasPermission("playervaults.free")) {
if (!BUKKIT_CONFIG.getBoolean("economy.enabled") || player.hasPermission("playervaults.free") || PlayerVaults.getInstance().getEconomy() != null) {
return true; return true;
} }
String name = player.getName().toLowerCase();
File file = new File(directory + File.separator + name.toLowerCase() + ".yml"); File playerFile = new File(PLUGIN.getVaultData(), player.getUniqueId().toString() + ".yml");
YamlConfiguration playerFile = YamlConfiguration.loadConfiguration(file); if (playerFile.exists()) {
if (file.exists()) { YamlConfiguration playerData = YamlConfiguration.loadConfiguration(playerFile);
if (playerFile.getString("vault" + number) == null) { if (playerData.getString("vault" + number) == null) {
player.sendMessage(Lang.TITLE.toString() + ChatColor.RED + Lang.VAULT_DOES_NOT_EXIST); player.sendMessage(Lang.TITLE.toString() + ChatColor.RED + Lang.VAULT_DOES_NOT_EXIST);
return false; return false;
} }
@@ -112,12 +106,14 @@ public class EconomyOperations {
player.sendMessage(Lang.TITLE.toString() + ChatColor.RED + Lang.VAULT_DOES_NOT_EXIST); player.sendMessage(Lang.TITLE.toString() + ChatColor.RED + Lang.VAULT_DOES_NOT_EXIST);
return false; return false;
} }
double cost = BUKKIT_CONFIG.getDouble("economy.refund-on-delete"); double cost = BUKKIT_CONFIG.getDouble("economy.refund-on-delete");
EconomyResponse resp = PlayerVaults.getInstance().getEconomy().depositPlayer(player.getName(), cost); EconomyResponse resp = PlayerVaults.getInstance().getEconomy().depositPlayer(player.getName(), cost);
if (resp.transactionSuccess()) { if (resp.transactionSuccess()) {
player.sendMessage(Lang.TITLE.toString() + Lang.REFUND_AMOUNT.toString().replaceAll("%price", String.valueOf(cost))); player.sendMessage(Lang.TITLE.toString() + Lang.REFUND_AMOUNT.toString().replaceAll("%price", String.valueOf(cost)));
return true; return true;
} }
return false; return false;
} }
} }
@@ -134,6 +134,7 @@ public class Serialization {
} }
return serialized; return serialized;
} }
public static Map<String, Object> recreateMap(Map<String, Object> original) { public static Map<String, Object> recreateMap(Map<String, Object> original) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.putAll(original); map.putAll(original);
@@ -241,7 +241,7 @@ public class UUIDVaultManager {
public void saveFile(UUID holder, YamlConfiguration yaml) throws IOException { public void saveFile(UUID holder, YamlConfiguration yaml) throws IOException {
File file = new File(directory, holder.toString() + ".yml"); File file = new File(directory, holder.toString() + ".yml");
if (file.exists()) { if (file.exists()) {
file.renameTo(new File(directory, "backups" + File.separator + holder.toString() + ".yml")); file.renameTo(new File(PlayerVaults.getInstance().getBackupsFolder(), holder.toString() + ".yml"));
} }
yaml.save(file); yaml.save(file);
} }
@@ -261,7 +261,7 @@ public class VaultManager {
public void saveFile(String holder, YamlConfiguration yaml) throws IOException { public void saveFile(String holder, YamlConfiguration yaml) throws IOException {
File file = new File(directory + File.separator + holder.toLowerCase() + ".yml"); File file = new File(directory + File.separator + holder.toLowerCase() + ".yml");
if (file.exists()) { if (file.exists()) {
file.renameTo(new File(directory + File.separator + "backups" + File.separator + holder.toLowerCase() + ".yml")); file.renameTo(new File(PlayerVaults.getInstance().getBackupsFolder(), holder.toLowerCase() + ".yml"));
} }
yaml.save(file); yaml.save(file);
} }
+2 -2
View File
@@ -1,13 +1,13 @@
name: PlayerVaults name: PlayerVaults
main: com.drtshock.playervaults.PlayerVaults main: com.drtshock.playervaults.PlayerVaults
authors: [drtshock, gomeow, Chester] authors: [drtshock, Koalaaaa]
version: ${project.version} version: ${project.version}
website: http://dev.bukkit.org/server-mods/PlayerVaults website: http://dev.bukkit.org/server-mods/PlayerVaults
softdepend: [Vault] softdepend: [Vault]
commands: commands:
pv: pv:
description: Open a vault with /pv <number> description: Open a vault with /pv <number>
aliases: ['vault', 'chest', 'playervaults'] aliases: [vault, chest, playervaults]
pvdel: pvdel:
description: Delete a vault. description: Delete a vault.
aliases: [vaultdel] aliases: [vaultdel]