From 4620d2f5e2c31f15a79020d94a0e1e5c36ca905f Mon Sep 17 00:00:00 2001 From: Daniel Murray Date: Fri, 16 Jan 2015 00:25:17 +0000 Subject: [PATCH 01/40] 0.8.1b updated. POM updated for spigot 1.8 and vault 1.5 Disabled caching Removed Bukkit updater (Will replace) Fixed console messages --- config.yml | 2 - plugin.yml | 2 +- pom.xml | 14 +-- src/org/melonbrew/fe/API.java | 3 +- src/org/melonbrew/fe/Fe.java | 91 +++---------------- src/org/melonbrew/fe/Metrics.java | 2 +- src/org/melonbrew/fe/Phrase.java | 1 - src/org/melonbrew/fe/UpdateCheck.java | 57 ------------ .../fe/listeners/FePlayerListener.java | 11 --- 9 files changed, 25 insertions(+), 158 deletions(-) delete mode 100644 src/org/melonbrew/fe/UpdateCheck.java diff --git a/config.yml b/config.yml index d81fd4d..5203e0e 100644 --- a/config.yml +++ b/config.yml @@ -19,6 +19,4 @@ currency: type: sqlite -updatecheck: true - cacheaccounts: true \ No newline at end of file diff --git a/plugin.yml b/plugin.yml index a3e29ce..fe6bb77 100644 --- a/plugin.yml +++ b/plugin.yml @@ -2,7 +2,7 @@ name: Fe main: org.melonbrew.fe.Fe -version: ${project.version}-b${BUILD_NUMBER} +version: 0.8.1b load: startup diff --git a/pom.xml b/pom.xml index 38f3e79..0227d11 100644 --- a/pom.xml +++ b/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.niccholaspage.Fe Fe - 0.8-SNAPSHOT + 0.8.1b Fe - bukkit-repo - http://repo.bukkit.org/content/groups/public/ + spigot-repo + https://hub.spigotmc.org/nexus/content/groups/public/ vault-repo @@ -19,14 +19,14 @@ - org.bukkit - bukkit - 1.7.9-R0.1-SNAPSHOT + org.spigotmc + spigot-api + 1.8-R0.1-SNAPSHOT net.milkbowl.vault VaultAPI - 1.4 + 1.5 jar compile diff --git a/src/org/melonbrew/fe/API.java b/src/org/melonbrew/fe/API.java index 51b79f4..7f1c04d 100644 --- a/src/org/melonbrew/fe/API.java +++ b/src/org/melonbrew/fe/API.java @@ -64,7 +64,8 @@ public String getCurrencyMinorMultiple() { } public boolean getCacheAccounts() { - return plugin.getConfig().getBoolean("cacheaccounts"); +// return plugin.getConfig().getBoolean("cacheaccounts"); + return false; } public Account createAccount(String name, String uuid) { diff --git a/src/org/melonbrew/fe/Fe.java b/src/org/melonbrew/fe/Fe.java index 48858c7..34e1e99 100644 --- a/src/org/melonbrew/fe/Fe.java +++ b/src/org/melonbrew/fe/Fe.java @@ -25,11 +25,6 @@ public class Fe extends JavaPlugin { private final Set databases; private API api; private Database database; - private double currentVersion; - - private double latestVersion; - - private String latestVersionString; public Fe() { databases = new HashSet(); @@ -62,13 +57,11 @@ public void onEnable() { getConfig().options().copyDefaults(true); - getConfig().options().header("Fe Config - okicore.com\n" + + getConfig().options().header("Fe Config - loyloy.io\n" + "holdings - The amount of money that players will start out with\n" + "prefix - The message prefix\n" + "currency - The single and multiple names for the currency\n" + - "type - The type of database used (sqlite, mysql, or mongo)\n" + - "updatecheck - Checks if there is an update to Fe" + - "cacheaccounts - Caches players' balances when logged on to the server"); + "type - The type of database used (sqlite, mysql, or mongo)"); saveConfig(); @@ -78,14 +71,6 @@ public void onEnable() { return; } - String currentVersionString = getDescription().getVersion(); - - currentVersion = versionToDouble(currentVersionString); - - setLatestVersion(currentVersion); - - setLatestVersionString(currentVersionString); - getCommand("fe").setExecutor(new FeCommand(this)); new FePlayerListener(this); @@ -94,69 +79,11 @@ public void onEnable() { loadMetrics(); - if (getConfig().getBoolean("updatecheck")) { - getServer().getScheduler().runTaskAsynchronously(this, new UpdateCheck(this)); - } + reloadConfig(); } public void log(String message) { - getLogger().info("[Fe] " + message); - } - - public double versionToDouble(String version) { - boolean isSnapshot = version.contains("-SNAPSHOT"); - - version = version.substring(0, version.indexOf("-SNAPSHOT")); - - String fixed = ""; - - boolean doneFirst = false; - - for (int i = 0; i < version.length(); i++) { - char c = version.charAt(i); - - if (c == '.') { - if (doneFirst) { - continue; - } else { - doneFirst = true; - } - } - - fixed += c; - } - - try { - double ret = Double.parseDouble(fixed); - - if (isSnapshot) { - ret -= 0.001; - } - - return ret; - } catch (NumberFormatException e) { - return -1; - } - } - - public double getLatestVersion() { - return latestVersion; - } - - protected void setLatestVersion(double latestVersion) { - this.latestVersion = latestVersion; - } - - public String getLatestVersionString() { - return latestVersionString; - } - - protected void setLatestVersionString(String latestVersionString) { - this.latestVersionString = latestVersionString; - } - - public boolean isUpdated() { - return currentVersion >= latestVersion; + getLogger().info( message ); } public void onDisable() { @@ -260,6 +187,16 @@ public void reloadConfig() { getConfig().set("currency.multiple", null); } + // Temporarily remove cache and updates. + if( getConfig().isSet( "cacheaccounts" ) ) + { + getConfig().set( "cacheaccounts", null ); + } + if( getConfig().getBoolean( "updatecheck" ) ) + { + getConfig().set( "updatecheck", null ); + } + setupPhrases(); saveConfig(); diff --git a/src/org/melonbrew/fe/Metrics.java b/src/org/melonbrew/fe/Metrics.java index 3d3a72d..3271515 100644 --- a/src/org/melonbrew/fe/Metrics.java +++ b/src/org/melonbrew/fe/Metrics.java @@ -436,7 +436,7 @@ private void postPlugin(final boolean isPing) throws IOException { boolean onlineMode = Bukkit.getServer().getOnlineMode(); // TRUE if online mode is enabled String pluginVersion = description.getVersion(); String serverVersion = Bukkit.getVersion(); - int playersOnline = Bukkit.getServer().getOnlinePlayers().length; + int playersOnline = Bukkit.getServer().getOnlinePlayers().size(); // END server software specific section -- all code below does not use any code outside of this class / Java diff --git a/src/org/melonbrew/fe/Phrase.java b/src/org/melonbrew/fe/Phrase.java index 8de9137..f39fe4d 100644 --- a/src/org/melonbrew/fe/Phrase.java +++ b/src/org/melonbrew/fe/Phrase.java @@ -37,7 +37,6 @@ public enum Phrase { NAME_TOO_LONG("Sorry that name is too long."), ACCOUNT_CLEANED("All accounts with the default balance have been removed."), TRY_COMMAND("Try $1"), - FE_OUTDATED("Fe is outdated! The latest version is $1."), PRIMARY_COLOR(ChatColor.GOLD.toString()), SECONDARY_COLOR(ChatColor.GRAY.toString()), TERTIARY_COLOR(ChatColor.DARK_GRAY.toString()), diff --git a/src/org/melonbrew/fe/UpdateCheck.java b/src/org/melonbrew/fe/UpdateCheck.java deleted file mode 100644 index 8adb763..0000000 --- a/src/org/melonbrew/fe/UpdateCheck.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.melonbrew.fe; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import javax.xml.parsers.DocumentBuilderFactory; -import java.net.URL; - -public class UpdateCheck implements Runnable { - private final Fe plugin; - - public UpdateCheck(Fe plugin) { - this.plugin = plugin; - } - - public void run() { - String pluginUrlString = "http://dev.bukkit.org/server-mods/fe-economy/files.rss"; - - try { - URL url = new URL(pluginUrlString); - - Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(url.openConnection().getInputStream()); - - doc.getDocumentElement().normalize(); - - NodeList nodes = doc.getElementsByTagName("item"); - - Node firstNode = nodes.item(0); - - if (firstNode.getNodeType() == 1) { - Element firstElement = (Element) firstNode; - - NodeList firstElementTagName = firstElement.getElementsByTagName("title"); - - Element firstNameElement = (Element) firstElementTagName.item(0); - - NodeList firstNodes = firstNameElement.getChildNodes(); - - String version = firstNodes.item(0).getNodeValue().trim(); - - double latestVersion = plugin.versionToDouble(version); - - plugin.setLatestVersion(latestVersion); - - plugin.setLatestVersionString(version); - - if (!plugin.isUpdated()) { - plugin.log(Phrase.FE_OUTDATED, version); - } - } - } catch (Exception e) { - - } - } -} diff --git a/src/org/melonbrew/fe/listeners/FePlayerListener.java b/src/org/melonbrew/fe/listeners/FePlayerListener.java index 71eaedd..2dfcb8e 100644 --- a/src/org/melonbrew/fe/listeners/FePlayerListener.java +++ b/src/org/melonbrew/fe/listeners/FePlayerListener.java @@ -4,11 +4,9 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.melonbrew.fe.Fe; -import org.melonbrew.fe.Phrase; import org.melonbrew.fe.database.Account; import org.melonbrew.fe.database.Database; @@ -28,15 +26,6 @@ public void onPlayerLogin(PlayerLoginEvent event) { plugin.getAPI().createAccount(player.getName(), player.getUniqueId().toString()); } - @EventHandler - public void onPlayerJoin(PlayerJoinEvent event) { - Player player = event.getPlayer(); - - if (!plugin.isUpdated() && player.hasPermission("fe.notify")) { - Phrase.FE_OUTDATED.sendWithPrefix(player, plugin.getLatestVersionString()); - } - } - @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { Database database = plugin.getFeDatabase(); From 41c97000f2912be66a649a549432475c00ef7551 Mon Sep 17 00:00:00 2001 From: Daniel Murray Date: Thu, 5 Feb 2015 18:28:54 +0000 Subject: [PATCH 02/40] Names now update. Added auto cleaning --- config.yml | 2 + plugin.yml | 2 +- pom.xml | 4 +- src/org/melonbrew/fe/API.java | 16 +- src/org/melonbrew/fe/Fe.java | 16 +- src/org/melonbrew/fe/VaultHandler.java | 2 +- .../fe/command/commands/CreateCommand.java | 2 +- src/org/melonbrew/fe/database/Account.java | 103 ++++-- src/org/melonbrew/fe/database/Database.java | 240 ++++++++----- .../fe/database/databases/MongoDB.java | 14 +- .../fe/database/databases/SQLDB.java | 328 +++++++++++------- .../fe/listeners/FePlayerListener.java | 28 +- 12 files changed, 496 insertions(+), 261 deletions(-) diff --git a/config.yml b/config.yml index 5203e0e..689ff7a 100644 --- a/config.yml +++ b/config.yml @@ -19,4 +19,6 @@ currency: type: sqlite +autoclean: true + cacheaccounts: true \ No newline at end of file diff --git a/plugin.yml b/plugin.yml index fe6bb77..66ba31f 100644 --- a/plugin.yml +++ b/plugin.yml @@ -2,7 +2,7 @@ name: Fe main: org.melonbrew.fe.Fe -version: 0.8.1b +version: ${project.version} load: startup diff --git a/pom.xml b/pom.xml index 0227d11..3d04552 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.niccholaspage.Fe Fe - 0.8.1b + 0.8.2 Fe @@ -33,7 +33,7 @@ org.mongodb mongo-java-driver - 2.10.1 + 2.13.0 diff --git a/src/org/melonbrew/fe/API.java b/src/org/melonbrew/fe/API.java index 7f1c04d..443b3a9 100644 --- a/src/org/melonbrew/fe/API.java +++ b/src/org/melonbrew/fe/API.java @@ -39,6 +39,11 @@ public String getCurrencyPrefix() { return plugin.getConfig().getString("currency.prefix"); } + public boolean isAutoClean() + { + return plugin.getConfig().getBoolean( "autoclean" ); + } + public boolean isCurrencyNegative() { return plugin.getConfig().getBoolean("currency.negative"); } @@ -68,8 +73,15 @@ public boolean getCacheAccounts() { return false; } - public Account createAccount(String name, String uuid) { - return plugin.getFeDatabase().createAccount(name, uuid); + public Account updateAccount( String name, String uuid ) + { + return plugin.getFeDatabase().updateAccount( name, uuid ); + } + + @Deprecated + public Account createAccount( String name, String uuid ) + { + return updateAccount( name, uuid ); } public void removeAccount(String name, String uuid) { diff --git a/src/org/melonbrew/fe/Fe.java b/src/org/melonbrew/fe/Fe.java index 34e1e99..e4efc57 100644 --- a/src/org/melonbrew/fe/Fe.java +++ b/src/org/melonbrew/fe/Fe.java @@ -5,6 +5,7 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.java.JavaPlugin; import org.melonbrew.fe.Metrics.Graph; @@ -73,13 +74,21 @@ public void onEnable() { getCommand("fe").setExecutor(new FeCommand(this)); - new FePlayerListener(this); + PluginManager pm = getServer().getPluginManager(); + pm.registerEvents( new FePlayerListener( this ), this ); setupVault(); loadMetrics(); reloadConfig(); + + // Auto Clean On Startup + if( api.isAutoClean() ) + { + api.clean(); + log( Phrase.ACCOUNT_CLEANED ); + } } public void log(String message) { @@ -187,6 +196,11 @@ public void reloadConfig() { getConfig().set("currency.multiple", null); } + if( ! getConfig().isSet( "autoclean" ) ) + { + getConfig().set( "autoclean", true ); + } + // Temporarily remove cache and updates. if( getConfig().isSet( "cacheaccounts" ) ) { diff --git a/src/org/melonbrew/fe/VaultHandler.java b/src/org/melonbrew/fe/VaultHandler.java index 6c35a6b..2371140 100644 --- a/src/org/melonbrew/fe/VaultHandler.java +++ b/src/org/melonbrew/fe/VaultHandler.java @@ -230,7 +230,7 @@ private boolean createAccount(String playerName, String uuid) { return false; } - plugin.getAPI().createAccount(playerName, uuid); + plugin.getAPI().updateAccount( playerName, uuid ); return true; } diff --git a/src/org/melonbrew/fe/command/commands/CreateCommand.java b/src/org/melonbrew/fe/command/commands/CreateCommand.java index bc27c3b..a44a64f 100644 --- a/src/org/melonbrew/fe/command/commands/CreateCommand.java +++ b/src/org/melonbrew/fe/command/commands/CreateCommand.java @@ -36,7 +36,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, return true; } - Account account = plugin.getAPI().createAccount(name, null); + Account account = plugin.getAPI().updateAccount( name, null ); Phrase.ACCOUNT_CREATED.sendWithPrefix(sender, Phrase.PRIMARY_COLOR.parse() + account.getName() + Phrase.SECONDARY_COLOR.parse()); diff --git a/src/org/melonbrew/fe/database/Account.java b/src/org/melonbrew/fe/database/Account.java index 2ca4759..ab76e16 100644 --- a/src/org/melonbrew/fe/database/Account.java +++ b/src/org/melonbrew/fe/database/Account.java @@ -3,10 +3,11 @@ import org.melonbrew.fe.API; import org.melonbrew.fe.Fe; -public class Account { +public class Account +{ private final Fe plugin; - private final String name; + private String name; private final String uuid; @@ -16,7 +17,8 @@ public class Account { private Double money; - public Account(Fe plugin, String name, String uuid, Database database) { + public Account( Fe plugin, String name, String uuid, Database database ) + { this.plugin = plugin; this.name = name; @@ -30,81 +32,122 @@ public Account(Fe plugin, String name, String uuid, Database database) { this.money = null; } - public String getName() { + public String getName() + { return name; } - public String getUUID() { + public void setName( String name ) + { + this.name = name; + + if( money == null ) + { + this.money = getMoney(); + } + + database.saveAccount( name, uuid, money ); + } + + public String getUUID() + { return uuid; } - public Double getMoney() { - if (money != null) { + public Double getMoney() + { + if( money != null ) + { return money; } - Double money = database.loadAccountMoney(name, uuid); + String money_string = database.loadAccountData( name, uuid ).get( "money" ); + Double money; - if (database.cacheAccounts()) { + try + { + money = Double.parseDouble( money_string ); + } + catch( Exception e ) + { + return 0D; + } + + if( database.cacheAccounts() ) + { this.money = money; } return money; } - public void setMoney(double money) { + public void setMoney( double money ) + { Double currentMoney = getMoney(); - if (currentMoney != null && currentMoney == money) { + if( currentMoney != null && currentMoney == money ) + { return; } - if (money < 0 && !api.isCurrencyNegative()) { + if( money < 0 && !api.isCurrencyNegative() ) + { money = 0; } - currentMoney = api.getMoneyRounded(money); + currentMoney = api.getMoneyRounded( money ); - if (api.getMaxHoldings() > 0 && currentMoney > api.getMaxHoldings()) { - currentMoney = api.getMoneyRounded(api.getMaxHoldings()); + if( api.getMaxHoldings() > 0 && currentMoney > api.getMaxHoldings() ) + { + currentMoney = api.getMoneyRounded( api.getMaxHoldings() ); } - if (!database.cacheAccounts() || plugin.getServer().getPlayerExact(getName()) == null) { - save(currentMoney); - } else { + if( !database.cacheAccounts() || plugin.getServer().getPlayerExact( getName() ) == null ) + { + save( currentMoney ); + } + else + { this.money = currentMoney; } } - public void withdraw(double amount) { - setMoney(getMoney() - amount); + public void withdraw( double amount ) + { + setMoney( getMoney() - amount ); } - public void deposit(double amount) { - setMoney(getMoney() + amount); + public void deposit( double amount ) + { + setMoney( getMoney() + amount ); } - public boolean canReceive(double amount) { + public boolean canReceive( double amount ) + { return api.getMaxHoldings() == -1 || amount + getMoney() < api.getMaxHoldings(); } - public boolean has(double amount) { + public boolean has( double amount ) + { return getMoney() >= amount; } - public void save(double money) { - database.saveAccount(name, uuid, money); + public void save( double money ) + { + database.saveAccount( name, uuid, money ); } @Override - public boolean equals(Object object) { - if (!(object instanceof Account)) { + public boolean equals( Object object ) + { + if( !( object instanceof Account ) ) + { return false; } - Account account = (Account) object; + Account account = ( Account ) object; - return account.getName().equals(getName()); + return account.getName().equals( getName() ); } } diff --git a/src/org/melonbrew/fe/database/Database.java b/src/org/melonbrew/fe/database/Database.java index 43aa1d3..d5fdd37 100644 --- a/src/org/melonbrew/fe/database/Database.java +++ b/src/org/melonbrew/fe/database/Database.java @@ -8,150 +8,179 @@ import java.util.*; -public abstract class Database { +public abstract class Database +{ private final Fe plugin; private final Set cachedAccounts; protected boolean cacheAccounts; - public Database(Fe plugin) { + public Database( Fe plugin ) + { this.plugin = plugin; this.cachedAccounts = new HashSet(); } - public boolean init() { + public boolean init() + { this.cacheAccounts = plugin.getAPI().getCacheAccounts(); return false; } - public List getTopAccounts(int size) { - List topAccounts = loadTopAccounts(size * 2); + public List getTopAccounts( int size ) + { + List topAccounts = loadTopAccounts( size * 2 ); - if (!cachedAccounts.isEmpty()) { - for (Account account : cachedAccounts) { - topAccounts.remove(account); + if( !cachedAccounts.isEmpty() ) + { + for( Account account : cachedAccounts ) + { + topAccounts.remove( account ); } - List cachedTopAccounts = new ArrayList(cachedAccounts); + List cachedTopAccounts = new ArrayList( cachedAccounts ); - Collections.sort(cachedTopAccounts, new Comparator() { - public int compare(Account account1, Account account2) { - return (int) (account2.getMoney() - account1.getMoney()); + Collections.sort( cachedTopAccounts, new Comparator() + { + public int compare( Account account1, Account account2 ) + { + return ( int ) ( account2.getMoney() - account1.getMoney() ); } - }); + } ); - if (cachedAccounts.size() > size) { - cachedTopAccounts = cachedTopAccounts.subList(0, size); + if( cachedAccounts.size() > size ) + { + cachedTopAccounts = cachedTopAccounts.subList( 0, size ); } - topAccounts.addAll(cachedTopAccounts); + topAccounts.addAll( cachedTopAccounts ); } - Collections.sort(topAccounts, new Comparator() { - public int compare(Account account1, Account account2) { - return (int) (account2.getMoney() - account1.getMoney()); + Collections.sort( topAccounts, new Comparator() + { + public int compare( Account account1, Account account2 ) + { + return ( int ) ( account2.getMoney() - account1.getMoney() ); } - }); + } ); - if (topAccounts.size() > size) { - topAccounts = topAccounts.subList(0, size); + if( topAccounts.size() > size ) + { + topAccounts = topAccounts.subList( 0, size ); } return topAccounts; } - public abstract List loadTopAccounts(int size); + public abstract List loadTopAccounts( int size ); public abstract List getAccounts(); - public abstract Double loadAccountMoney(String name, String uuid); + public abstract HashMap loadAccountData( String name, String uuid ); - protected abstract void saveAccount(String name, String uuid, double money); + protected abstract void saveAccount( String name, String uuid, double money ); - public void removeAccount(String name, String uuid) { - Account account = getCachedAccount(name, uuid); + public void removeAccount( String name, String uuid ) + { + Account account = getCachedAccount( name, uuid ); - if (account != null) { - removeCachedAccount(account); + if( account != null ) + { + removeCachedAccount( account ); } } - public abstract void getConfigDefaults(ConfigurationSection section); + public abstract void getConfigDefaults( ConfigurationSection section ); public abstract void clean(); - public void removeAllAccounts() { - for (Account account : new HashSet(cachedAccounts)) { - cachedAccounts.remove(account); + public void removeAllAccounts() + { + for( Account account : new HashSet( cachedAccounts ) ) + { + cachedAccounts.remove( account ); } } - protected boolean convertToUUID() { - if (!plugin.getServer().getOnlineMode()) { + protected boolean convertToUUID() + { + if( !plugin.getServer().getOnlineMode() ) + { //Disable plugin? } - plugin.log(Phrase.STARTING_UUID_CONVERSION); + plugin.log( Phrase.STARTING_UUID_CONVERSION ); List accounts = getAccounts(); Map accountMonies = new HashMap(); - for (Account account : accounts) { - accountMonies.put(account.getName(), account.getMoney()); + for( Account account : accounts ) + { + accountMonies.put( account.getName(), account.getMoney() ); } List names = new ArrayList(); - for (Account account : accounts) { - names.add(account.getName()); + for( Account account : accounts ) + { + names.add( account.getName() ); } - UUIDFetcher fetcher = new UUIDFetcher(names); + UUIDFetcher fetcher = new UUIDFetcher( names ); Map response; - try { + try + { response = fetcher.call(); removeAllAccounts(); - for (String name : response.keySet()) { - for (String accountName : new HashMap(accountMonies).keySet()) { - if (accountName.equalsIgnoreCase(name)) { - saveAccount(name, response.get(name).toString(), accountMonies.get(accountName)); + for( String name : response.keySet() ) + { + for( String accountName : new HashMap( accountMonies ).keySet() ) + { + if( accountName.equalsIgnoreCase( name ) ) + { + saveAccount( name, response.get( name ).toString(), accountMonies.get( accountName ) ); - accountMonies.remove(accountName); + accountMonies.remove( accountName ); } } } - for (String accountName : accountMonies.keySet()) { - saveAccount(accountName, null, accountMonies.get(accountName)); + for( String accountName : accountMonies.keySet() ) + { + saveAccount( accountName, null, accountMonies.get( accountName ) ); } - } catch (Exception e) { + } + catch( Exception e ) + { e.printStackTrace(); - plugin.log(Phrase.UUID_CONVERSION_FAILED); + plugin.log( Phrase.UUID_CONVERSION_FAILED ); - plugin.getServer().getPluginManager().disablePlugin(plugin); + plugin.getServer().getPluginManager().disablePlugin( plugin ); return false; } - plugin.log(Phrase.UUID_CONVERSION_SUCCEEDED); + plugin.log( Phrase.UUID_CONVERSION_SUCCEEDED ); return true; } - public void close() { + public void close() + { Iterator iterator = cachedAccounts.iterator(); - while (iterator.hasNext()) { + while( iterator.hasNext() ) + { Account account = iterator.next(); - account.save(account.getMoney()); + account.save( account.getMoney() ); iterator.remove(); } @@ -159,67 +188,103 @@ public void close() { public abstract String getName(); - public String getConfigName() { - return getName().toLowerCase().replace(" ", ""); + public String getConfigName() + { + return getName().toLowerCase().replace( " ", "" ); } - public ConfigurationSection getConfigSection() { - return plugin.getConfig().getConfigurationSection(getConfigName()); + public ConfigurationSection getConfigSection() + { + return plugin.getConfig().getConfigurationSection( getConfigName() ); } - public Account getAccount(String name, String uuid) { - Account account = getCachedAccount(name, uuid); + public Account getAccount( String name, String uuid ) + { + Account account = getCachedAccount( name, uuid ); - if (account != null) { + if( account != null ) + { return account; } - Double money = loadAccountMoney(name, uuid); + HashMap data = loadAccountData( name, uuid ); + + String money_string = data.get( "money" ); + Double data_money; + + try + { + data_money = Double.parseDouble( money_string ); + } + catch( Exception e ) + { + data_money = null; + } - if (money == null) { + String data_name = data.get( "name" ); + + if( data_money == null ) + { return null; - } else { - return createAndAddAccount(name, uuid, money); + } + else + { + return createAndAddAccount( data_name, uuid, data_money ); } } - public Account createAccount(String name, String uuid) { - Account account = getAccount(name, uuid); + public Account updateAccount( String name, String uuid ) + { + Account account = getAccount( name, uuid ); + + if( account == null ) + { + account = createAndAddAccount( name, uuid, plugin.getAPI().getDefaultHoldings() ); + } - if (account == null) { - account = createAndAddAccount(name, uuid, plugin.getAPI().getDefaultHoldings()); + if( ! account.getName().equals( name ) ) + { + account.setName( name ); } return account; } - private Account createAndAddAccount(String name, String uuid, double money) { - Account account = new Account(plugin, name, uuid, this); + private Account createAndAddAccount( String name, String uuid, double money ) + { + Account account = new Account( plugin, name, uuid, this ); - account.setMoney(money); + account.setMoney( money ); - if (cacheAccounts()) { - Player player = plugin.getServer().getPlayerExact(name); + if( cacheAccounts() ) + { + Player player = plugin.getServer().getPlayerExact( name ); - if (player != null) { - cachedAccounts.add(account); + if( player != null ) + { + cachedAccounts.add( account ); } } return account; } - public boolean accountExists(String name, String uuid) { - return getAccount(name, uuid) != null; + public boolean accountExists( String name, String uuid ) + { + return getAccount( name, uuid ) != null; } - public boolean cacheAccounts() { + public boolean cacheAccounts() + { return cacheAccounts; } - public Account getCachedAccount(String name, String uuid) { - for (Account account : cachedAccounts) { - if (account.getName().equals(name)) { + public Account getCachedAccount( String name, String uuid ) + { + for( Account account : cachedAccounts ) + { + if( account.getName().equals( name ) ) + { return account; } } @@ -227,11 +292,12 @@ public Account getCachedAccount(String name, String uuid) { return null; } - public boolean removeCachedAccount(Account account) { - return cachedAccounts.remove(account); + public boolean removeCachedAccount( Account account ) + { + return cachedAccounts.remove( account ); } public abstract int getVersion(); - public abstract void setVersion(int version); + public abstract void setVersion( int version ); } diff --git a/src/org/melonbrew/fe/database/databases/MongoDB.java b/src/org/melonbrew/fe/database/databases/MongoDB.java index 1415920..8dd4c51 100644 --- a/src/org/melonbrew/fe/database/databases/MongoDB.java +++ b/src/org/melonbrew/fe/database/databases/MongoDB.java @@ -8,6 +8,7 @@ import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class MongoDB extends Database { @@ -56,14 +57,19 @@ private DB getDatabase() { } @SuppressWarnings("deprecation") - public Double loadAccountMoney(String name, String uuid) { + public HashMap loadAccountData(String name, String uuid) { DBObject userObject = getDatabase().getCollection(ACCOUNTS_COLLECTION).findOne(new BasicDBObject(uuid != null ? "uuid" : "name", uuid != null ? uuid : name)); if (userObject == null) { return null; } - return ((BasicDBObject) userObject).getDouble("money"); + HashMap data = new HashMap(); + + data.put( "money", ((BasicDBObject) userObject).getString( "money" ) ); + data.put( "name", ((BasicDBObject) userObject).getString( "name" ) ); + + return data; } public void removeAccount(String name, String uuid) { @@ -113,9 +119,9 @@ public String getName() { public int getVersion() { DBCollection collection = getDatabase().getCollection(VERSION_COLLECTION); - BasicDBObject query = (BasicDBObject) collection.findOne(new BasicDBObject()); + BasicDBObject query = (BasicDBObject) collection.findOne(); - return query.getInt("version", 0); + return query.getInt( "version", 0 ); } @Override diff --git a/src/org/melonbrew/fe/database/databases/SQLDB.java b/src/org/melonbrew/fe/database/databases/SQLDB.java index 08cf263..5dc76b2 100644 --- a/src/org/melonbrew/fe/database/databases/SQLDB.java +++ b/src/org/melonbrew/fe/database/databases/SQLDB.java @@ -9,9 +9,11 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; -public abstract class SQLDB extends Database { +public abstract class SQLDB extends Database +{ private final Fe plugin; private final boolean supportsModification; @@ -28,8 +30,9 @@ public abstract class SQLDB extends Database { private String accountsColumnUUID; - public SQLDB(Fe plugin, boolean supportsModification) { - super(plugin); + public SQLDB( Fe plugin, boolean supportsModification ) + { + super( plugin ); this.plugin = plugin; @@ -45,93 +48,120 @@ public SQLDB(Fe plugin, boolean supportsModification) { accountsColumnUUID = "uuid"; - plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, new Runnable() { + plugin.getServer().getScheduler().runTaskTimerAsynchronously( plugin, new Runnable() + { @Override - public void run() { - try { - if (connection != null && !connection.isClosed()) { - connection.createStatement().execute("/* ping */ SELECT 1"); + public void run() + { + try + { + if( connection != null && !connection.isClosed() ) + { + connection.createStatement().execute( "/* ping */ SELECT 1" ); } - } catch (SQLException e) { + } + catch( SQLException e ) + { connection = getNewConnection(); } } - }, 60 * 20, 60 * 20); + }, 60 * 20, 60 * 20 ); } - public void setAccountTable(String accountsName) { + public void setAccountTable( String accountsName ) + { this.accountsName = accountsName; } - public void setVersionTable(String versionName) { + public void setVersionTable( String versionName ) + { this.versionName = versionName; } - public void setAccountsColumnUser(String accountsColumnUser) { + public void setAccountsColumnUser( String accountsColumnUser ) + { this.accountsColumnUser = accountsColumnUser; } - public void setAccountsColumnMoney(String accountsColumnMoney) { + public void setAccountsColumnMoney( String accountsColumnMoney ) + { this.accountsColumnMoney = accountsColumnMoney; } - public void setAccountsColumnUUID(String accountsColumnUUID) { + public void setAccountsColumnUUID( String accountsColumnUUID ) + { this.accountsColumnUUID = accountsColumnUUID; } - public boolean init() { + public boolean init() + { super.init(); return checkConnection(); } - public boolean checkConnection() { - try { - if (connection == null || connection.isClosed()) { + public boolean checkConnection() + { + try + { + if( connection == null || connection.isClosed() ) + { connection = getNewConnection(); - if (connection == null || connection.isClosed()) { + if( connection == null || connection.isClosed() ) + { return false; } - ResultSet set = connection.prepareStatement(supportsModification ? ("SHOW TABLES LIKE '" + accountsName + "'") : "SELECT name FROM sqlite_master WHERE type='table' AND name='" + accountsName + "'").executeQuery(); + ResultSet set = connection.prepareStatement( supportsModification ? ( "SHOW TABLES LIKE '" + accountsName + "'" ) : "SELECT name FROM sqlite_master WHERE type='table' AND name='" + accountsName + "'" ).executeQuery(); boolean newDatabase = set.next(); set.close(); - query("CREATE TABLE IF NOT EXISTS " + accountsName + " (" + accountsColumnUser + " varchar(64) NOT NULL, " + accountsColumnUUID + " varchar(36), " + accountsColumnMoney + " double NOT NULL)"); + query( "CREATE TABLE IF NOT EXISTS " + accountsName + " (" + accountsColumnUser + " varchar(64) NOT NULL, " + accountsColumnUUID + " varchar(36), " + accountsColumnMoney + " double NOT NULL)" ); - query("CREATE TABLE IF NOT EXISTS " + versionName + " (version int NOT NULL)"); + query( "CREATE TABLE IF NOT EXISTS " + versionName + " (version int NOT NULL)" ); - if (newDatabase) { + if( newDatabase ) + { int version = getVersion(); - if (version == 0) { - if (supportsModification) { - query("ALTER TABLE " + accountsName + " MODIFY " + accountsColumnUser + " varchar(64) NOT NULL"); + if( version == 0 ) + { + if( supportsModification ) + { + query( "ALTER TABLE " + accountsName + " MODIFY " + accountsColumnUser + " varchar(64) NOT NULL" ); - query("ALTER TABLE " + accountsName + " MODIFY " + accountsColumnMoney + " double NOT NULL"); + query( "ALTER TABLE " + accountsName + " MODIFY " + accountsColumnMoney + " double NOT NULL" ); } - try { - query("ALTER TABLE " + accountsName + " ADD " + accountsColumnUUID + " varchar(36);"); - } catch (Exception e) { + try + { + query( "ALTER TABLE " + accountsName + " ADD " + accountsColumnUUID + " varchar(36);" ); + } + catch( Exception e ) + { } - if (!convertToUUID()) { + if( !convertToUUID() ) + { return false; } - setVersion(1); + setVersion( 1 ); } - } else { - setVersion(1); + } + else + { + setVersion( 1 ); } } - } catch (SQLException e) { + } + catch( SQLException e ) + { e.printStackTrace(); return false; @@ -142,229 +172,287 @@ public boolean checkConnection() { protected abstract Connection getNewConnection(); - public boolean query(String sql) throws SQLException { - return connection.createStatement().execute(sql); + public boolean query( String sql ) throws SQLException + { + return connection.createStatement().execute( sql ); } - public void close() { + public void close() + { super.close(); - try { - if (connection != null) + try + { + if( connection != null ) + { connection.close(); - } catch (SQLException e) { + } + } + catch( SQLException e ) + { e.printStackTrace(); } } - public int getVersion() { + public int getVersion() + { checkConnection(); int version = 0; - try { - ResultSet set = connection.prepareStatement("SELECT * from " + versionName).executeQuery(); + try + { + ResultSet set = connection.prepareStatement( "SELECT * from " + versionName ).executeQuery(); - if (set.next()) { - version = set.getInt("version"); + if( set.next() ) + { + version = set.getInt( "version" ); } set.close(); return version; - } catch (Exception e) { + } + catch( Exception e ) + { e.printStackTrace(); return version; } } - public void setVersion(int version) { + public void setVersion( int version ) + { checkConnection(); - try { - connection.prepareStatement("DELETE FROM " + versionName).executeUpdate(); + try + { + connection.prepareStatement( "DELETE FROM " + versionName ).executeUpdate(); - connection.prepareStatement("INSERT INTO " + versionName + " (version) VALUES (" + version + ")").executeUpdate(); - } catch (SQLException e) { + connection.prepareStatement( "INSERT INTO " + versionName + " (version) VALUES (" + version + ")" ).executeUpdate(); + } + catch( SQLException e ) + { e.printStackTrace(); } } - public List loadTopAccounts(int size) { + public List loadTopAccounts( int size ) + { checkConnection(); String sql = "SELECT * FROM " + accountsName + " ORDER BY money DESC limit " + size; List topAccounts = new ArrayList(); - try { - ResultSet set = connection.createStatement().executeQuery(sql); + try + { + ResultSet set = connection.createStatement().executeQuery( sql ); - while (set.next()) { - Account account = new Account(plugin, set.getString(accountsColumnUser), set.getString(accountsColumnUUID), this); + while( set.next() ) + { + Account account = new Account( plugin, set.getString( accountsColumnUser ), set.getString( accountsColumnUUID ), this ); - account.setMoney(set.getDouble(accountsColumnMoney)); + account.setMoney( set.getDouble( accountsColumnMoney ) ); - topAccounts.add(account); + topAccounts.add( account ); } - } catch (SQLException e) { + } + catch( SQLException e ) + { e.printStackTrace(); } return topAccounts; } - public List getAccounts() { + public List getAccounts() + { checkConnection(); List accounts = new ArrayList(); - try { - ResultSet set = connection.createStatement().executeQuery("SELECT * from " + accountsName); + try + { + ResultSet set = connection.createStatement().executeQuery( "SELECT * from " + accountsName ); - while (set.next()) { - Account account = new Account(plugin, set.getString(accountsColumnUser), set.getString(accountsColumnUUID), this); + while( set.next() ) + { + Account account = new Account( plugin, set.getString( accountsColumnUser ), set.getString( accountsColumnUUID ), this ); - account.setMoney(set.getDouble(accountsColumnMoney)); + account.setMoney( set.getDouble( accountsColumnMoney ) ); - accounts.add(account); + accounts.add( account ); } - } catch (SQLException e) { + } + catch( SQLException e ) + { e.printStackTrace(); } return accounts; } - @SuppressWarnings("deprecation") - public Double loadAccountMoney(String name, String uuid) { + @SuppressWarnings( "deprecation" ) + public HashMap loadAccountData( String name, String uuid ) + { checkConnection(); - try { - PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + accountsName + " WHERE UPPER(" + (uuid != null ? accountsColumnUUID : accountsColumnUser) + ") LIKE UPPER(?)"); + try + { + PreparedStatement statement = connection.prepareStatement( "SELECT * FROM " + accountsName + " WHERE UPPER(" + ( uuid != null ? accountsColumnUUID : accountsColumnUser ) + ") LIKE UPPER(?)" ); - statement.setString(1, uuid != null ? uuid : name); + statement.setString( 1, uuid != null ? uuid : name ); ResultSet set = statement.executeQuery(); - Double money = null; + HashMap data = new HashMap(); - while (set.next()) { - money = set.getDouble(accountsColumnMoney); + while( set.next() ) + { + data.put( "money", set.getString( accountsColumnMoney ) ); + data.put( "name", set.getString( accountsColumnUser ) ); } set.close(); - return money; - } catch (SQLException e) { + return data; + } + catch( SQLException e ) + { e.printStackTrace(); return null; } } - public void removeAccount(String name, String uuid) { - super.removeAccount(name, uuid); + public void removeAccount( String name, String uuid ) + { + super.removeAccount( name, uuid ); checkConnection(); PreparedStatement statement; - try { - statement = connection.prepareStatement("DELETE FROM " + accountsName + " WHERE UPPER(" + (uuid != null ? accountsColumnUUID : accountsColumnUser) + ") LIKE UPPER(?)"); + try + { + statement = connection.prepareStatement( "DELETE FROM " + accountsName + " WHERE UPPER(" + ( uuid != null ? accountsColumnUUID : accountsColumnUser ) + ") LIKE UPPER(?)" ); - statement.setString(1, uuid != null ? uuid : name); + statement.setString( 1, uuid != null ? uuid : name ); statement.execute(); - } catch (SQLException e) { + } + catch( SQLException e ) + { e.printStackTrace(); } } - @SuppressWarnings("deprecation") - protected void saveAccount(String name, String uuid, double money) { + @SuppressWarnings( "deprecation" ) + protected void saveAccount( String name, String uuid, double money ) + { checkConnection(); - try { + try + { String sql = "UPDATE " + accountsName + " SET " + accountsColumnMoney + "=?, " + accountsColumnUser + "=? WHERE UPPER("; - if (uuid != null) { + if( uuid != null ) + { sql += accountsColumnUUID; - } else { + } + else + { sql += accountsColumnUser; } - PreparedStatement statement = connection.prepareStatement(sql + ") LIKE UPPER(?)"); + PreparedStatement statement = connection.prepareStatement( sql + ") LIKE UPPER(?)" ); - statement.setDouble(1, money); + statement.setDouble( 1, money ); - statement.setString(2, name); + statement.setString( 2, name ); - if (uuid != null) { - statement.setString(3, uuid); - } else { - statement.setString(3, name); + if( uuid != null ) + { + statement.setString( 3, uuid ); + } + else + { + statement.setString( 3, name ); } - if (statement.executeUpdate() == 0) { - statement = connection.prepareStatement("INSERT INTO " + accountsName + " (" + accountsColumnUser + ", " + accountsColumnUUID + ", " + accountsColumnMoney + ") VALUES (?, ?, ?)"); + if( statement.executeUpdate() == 0 ) + { + statement = connection.prepareStatement( "INSERT INTO " + accountsName + " (" + accountsColumnUser + ", " + accountsColumnUUID + ", " + accountsColumnMoney + ") VALUES (?, ?, ?)" ); - statement.setString(1, name); + statement.setString( 1, name ); - statement.setString(2, uuid); + statement.setString( 2, uuid ); - statement.setDouble(3, money); + statement.setDouble( 3, money ); statement.execute(); } - } catch (SQLException e) { + } + catch( SQLException e ) + { e.printStackTrace(); } } - @SuppressWarnings("deprecation") - public void clean() { + @SuppressWarnings( "deprecation" ) + public void clean() + { checkConnection(); - try { - ResultSet set = connection.prepareStatement("SELECT * from " + accountsName + " WHERE " + accountsColumnMoney + "=" + plugin.getAPI().getDefaultHoldings()).executeQuery(); + try + { + ResultSet set = connection.prepareStatement( "SELECT * from " + accountsName + " WHERE " + accountsColumnMoney + "=" + plugin.getAPI().getDefaultHoldings() ).executeQuery(); boolean executeQuery = false; - StringBuilder builder = new StringBuilder("DELETE FROM " + accountsName + " WHERE " + accountsColumnUser + " IN ("); + StringBuilder builder = new StringBuilder( "DELETE FROM " + accountsName + " WHERE " + accountsColumnUser + " IN (" ); - while (set.next()) { - String name = set.getString(accountsColumnUser); + while( set.next() ) + { + String name = set.getString( accountsColumnUser ); - if (plugin.getServer().getPlayerExact(name) != null) { + if( plugin.getServer().getPlayerExact( name ) != null ) + { continue; } executeQuery = true; - builder.append("'").append(name).append("', "); + builder.append( "'" ).append( name ).append( "', " ); } set.close(); - builder.delete(builder.length() - 2, builder.length()).append(")"); + builder.delete( builder.length() - 2, builder.length() ).append( ")" ); - if (executeQuery) { - query(builder.toString()); + if( executeQuery ) + { + query( builder.toString() ); } - } catch (SQLException e) { + } + catch( SQLException e ) + { e.printStackTrace(); } } - public void removeAllAccounts() { + public void removeAllAccounts() + { super.removeAllAccounts(); checkConnection(); - try { - connection.prepareStatement("DELETE FROM " + accountsName).executeUpdate(); - } catch (SQLException e) { + try + { + connection.prepareStatement( "DELETE FROM " + accountsName ).executeUpdate(); + } + catch( SQLException e ) + { e.printStackTrace(); } } diff --git a/src/org/melonbrew/fe/listeners/FePlayerListener.java b/src/org/melonbrew/fe/listeners/FePlayerListener.java index 2dfcb8e..231793c 100644 --- a/src/org/melonbrew/fe/listeners/FePlayerListener.java +++ b/src/org/melonbrew/fe/listeners/FePlayerListener.java @@ -10,34 +10,38 @@ import org.melonbrew.fe.database.Account; import org.melonbrew.fe.database.Database; -public class FePlayerListener implements Listener { +public class FePlayerListener implements Listener +{ private final Fe plugin; - public FePlayerListener(Fe plugin) { + public FePlayerListener( Fe plugin ) + { this.plugin = plugin; - plugin.getServer().getPluginManager().registerEvents(this, plugin); + plugin.getServer().getPluginManager().registerEvents( this, plugin ); } - @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerLogin(PlayerLoginEvent event) { + @EventHandler( priority = EventPriority.LOWEST ) + public void onPlayerLogin( PlayerLoginEvent event ) + { Player player = event.getPlayer(); - - plugin.getAPI().createAccount(player.getName(), player.getUniqueId().toString()); + plugin.getAPI().updateAccount( player.getName(), player.getUniqueId().toString() ); } @EventHandler - public void onPlayerQuit(PlayerQuitEvent event) { + public void onPlayerQuit( PlayerQuitEvent event ) + { Database database = plugin.getFeDatabase(); Player player = event.getPlayer(); - Account account = database.getCachedAccount(player.getName(), player.getUniqueId().toString()); + Account account = database.getCachedAccount( player.getName(), player.getUniqueId().toString() ); - if (account != null) { - account.save(account.getMoney()); + if( account != null ) + { + account.save( account.getMoney() ); - database.removeCachedAccount(account); + database.removeCachedAccount( account ); } } } From 28f6713141a34232a12ef802b00e40c9cf02486f Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 9 Mar 2015 17:54:32 +0600 Subject: [PATCH 03/40] Code update Added @Override annotations where they are needed. Metrics code removed from source and added as a dependency. Other minor updates. --- .gitattributes | 20 +- .gitignore | 3 +- pom.xml | 24 +- src/org/melonbrew/fe/Fe.java | 11 +- src/org/melonbrew/fe/FeCommand.java | 1 + src/org/melonbrew/fe/Metrics.java | 748 ------------------ src/org/melonbrew/fe/UUIDFetcher.java | 1 + src/org/melonbrew/fe/UpdateCheck.java | 1 + .../fe/command/commands/BalanceCommand.java | 1 + .../fe/command/commands/CleanCommand.java | 1 + .../fe/command/commands/CreateCommand.java | 1 + .../fe/command/commands/DeductCommand.java | 3 +- .../fe/command/commands/GrantCommand.java | 3 +- .../fe/command/commands/HelpCommand.java | 1 + .../fe/command/commands/ReloadCommand.java | 1 + .../fe/command/commands/RemoveCommand.java | 1 + .../fe/command/commands/SendCommand.java | 1 + .../fe/command/commands/SetCommand.java | 1 + .../fe/command/commands/TopCommand.java | 1 + src/org/melonbrew/fe/database/Database.java | 2 + .../fe/database/databases/MongoDB.java | 4 + .../fe/database/databases/MySQLDB.java | 3 + .../fe/database/databases/SQLDB.java | 11 + .../fe/database/databases/SQLiteDB.java | 3 + 24 files changed, 78 insertions(+), 769 deletions(-) delete mode 100644 src/org/melonbrew/fe/Metrics.java diff --git a/.gitattributes b/.gitattributes index 412eeda..c98f97b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -10,13 +10,13 @@ *.dbproj merge=union # Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore index b49a76e..9a222c4 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ # Netbeans /nbproject +nb-configuration.xml # We use maven! /build.xml @@ -31,4 +32,4 @@ dependency-reduced-pom.xml *.iml *.ipr *.iws -.idea/ \ No newline at end of file +.idea/ diff --git a/pom.xml b/pom.xml index 38f3e79..749d3e9 100644 --- a/pom.xml +++ b/pom.xml @@ -15,27 +15,38 @@ vault-repo http://nexus.theyeticave.net/content/repositories/pub_releases + + metrics-repo + http://repo.mcstats.org/content/repositories/public/ + org.bukkit bukkit - 1.7.9-R0.1-SNAPSHOT + 1.8-R0.1-SNAPSHOT net.milkbowl.vault VaultAPI - 1.4 + 1.5 jar compile + + org.mcstats.bukkit + metrics + R8-SNAPSHOT + compile + org.mongodb mongo-java-driver - 2.10.1 + 2.13.0 + clean package install ${project.name} @@ -53,7 +64,7 @@ maven-compiler-plugin - 2.3.2 + 3.2 1.6 1.6 @@ -67,7 +78,7 @@ org.apache.maven.plugins maven-shade-plugin - 2.1 + 2.3 package @@ -78,6 +89,7 @@ true + org.mcstats.bukkit:metrics org.mongodb:mongo-java-driver @@ -87,4 +99,4 @@ - \ No newline at end of file + diff --git a/src/org/melonbrew/fe/Fe.java b/src/org/melonbrew/fe/Fe.java index 48858c7..32a8481 100644 --- a/src/org/melonbrew/fe/Fe.java +++ b/src/org/melonbrew/fe/Fe.java @@ -7,8 +7,9 @@ import org.bukkit.plugin.Plugin; import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.java.JavaPlugin; -import org.melonbrew.fe.Metrics.Graph; -import org.melonbrew.fe.Metrics.Plotter; +import org.mcstats.Metrics; +import org.mcstats.Metrics.Graph; +import org.mcstats.Metrics.Plotter; import org.melonbrew.fe.database.Account; import org.melonbrew.fe.database.Database; import org.melonbrew.fe.database.databases.MongoDB; @@ -35,6 +36,7 @@ public Fe() { databases = new HashSet(); } + @Override public void onEnable() { getDataFolder().mkdirs(); @@ -159,6 +161,7 @@ public boolean isUpdated() { return currentVersion >= latestVersion; } + @Override public void onDisable() { getServer().getScheduler().cancelTasks(this); @@ -241,6 +244,7 @@ private void setupPhrases() { } } + @Override public void reloadConfig() { super.reloadConfig(); @@ -317,6 +321,7 @@ private void loadMetrics() { Graph databaseGraph = metrics.createGraph("Database Engine"); databaseGraph.addPlotter(new Plotter(getFeDatabase().getName()) { + @Override public int getValue() { return 1; } @@ -325,6 +330,7 @@ public int getValue() { Graph defaultHoldings = metrics.createGraph("Default Holdings"); defaultHoldings.addPlotter(new Plotter(getAPI().getDefaultHoldings() + "") { + @Override public int getValue() { return 1; } @@ -339,6 +345,7 @@ public int getValue() { } maxHoldings.addPlotter(new Plotter(maxHolding) { + @Override public int getValue() { return 1; } diff --git a/src/org/melonbrew/fe/FeCommand.java b/src/org/melonbrew/fe/FeCommand.java index 3bd15e6..3285319 100644 --- a/src/org/melonbrew/fe/FeCommand.java +++ b/src/org/melonbrew/fe/FeCommand.java @@ -78,6 +78,7 @@ private void sendDefaultCommand(CommandSender sender, Command cmd, String comman onCommand(sender, cmd, commandLabel, merge(new String[]{command}, args)); } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 1) { sendDefaultCommand(sender, cmd, commandLabel, args); diff --git a/src/org/melonbrew/fe/Metrics.java b/src/org/melonbrew/fe/Metrics.java deleted file mode 100644 index 3d3a72d..0000000 --- a/src/org/melonbrew/fe/Metrics.java +++ /dev/null @@ -1,748 +0,0 @@ -/* - * Copyright 2011-2013 Tyler Blair. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and contributors and should not be interpreted as representing official policies, - * either expressed or implied, of anybody else. - */ -package org.melonbrew.fe; - -import org.bukkit.Bukkit; -import org.bukkit.configuration.InvalidConfigurationException; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.PluginDescriptionFile; -import org.bukkit.scheduler.BukkitTask; - -import java.io.*; -import java.net.Proxy; -import java.net.URL; -import java.net.URLConnection; -import java.net.URLEncoder; -import java.util.*; -import java.util.logging.Level; -import java.util.zip.GZIPOutputStream; - -public class Metrics { - - /** - * The current revision number - */ - private final static int REVISION = 7; - - /** - * The base url of the metrics domain - */ - private static final String BASE_URL = "http://report.mcstats.org"; - - /** - * The url used to report a server's status - */ - private static final String REPORT_URL = "/plugin/%s"; - - /** - * Interval of time to ping (in minutes) - */ - private static final int PING_INTERVAL = 15; - - /** - * The plugin this metrics submits for - */ - private final Plugin plugin; - - /** - * All of the custom graphs to submit to metrics - */ - private final Set graphs = Collections.synchronizedSet(new HashSet()); - - /** - * The plugin configuration file - */ - private final YamlConfiguration configuration; - - /** - * The plugin configuration file - */ - private final File configurationFile; - - /** - * Unique server id - */ - private final String guid; - - /** - * Debug mode - */ - private final boolean debug; - - /** - * Lock for synchronization - */ - private final Object optOutLock = new Object(); - - /** - * The scheduled task - */ - private volatile BukkitTask task = null; - - public Metrics(final Plugin plugin) throws IOException { - if (plugin == null) { - throw new IllegalArgumentException("Plugin cannot be null"); - } - - this.plugin = plugin; - - // load the config - configurationFile = getConfigFile(); - configuration = YamlConfiguration.loadConfiguration(configurationFile); - - // add some defaults - configuration.addDefault("opt-out", false); - configuration.addDefault("guid", UUID.randomUUID().toString()); - configuration.addDefault("debug", false); - - // Do we need to create the file? - if (configuration.get("guid", null) == null) { - configuration.options().header("http://mcstats.org").copyDefaults(true); - configuration.save(configurationFile); - } - - // Load the guid then - guid = configuration.getString("guid"); - debug = configuration.getBoolean("debug", false); - } - - /** - * GZip compress a string of bytes - * - * @param input - * @return - */ - public static byte[] gzip(String input) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - GZIPOutputStream gzos = null; - - try { - gzos = new GZIPOutputStream(baos); - gzos.write(input.getBytes("UTF-8")); - } catch (IOException e) { - e.printStackTrace(); - } finally { - if (gzos != null) try { - gzos.close(); - } catch (IOException ignore) { - } - } - - return baos.toByteArray(); - } - - /** - * Appends a json encoded key/value pair to the given string builder. - * - * @param json - * @param key - * @param value - * @throws UnsupportedEncodingException - */ - private static void appendJSONPair(StringBuilder json, String key, String value) throws UnsupportedEncodingException { - boolean isValueNumeric = false; - - try { - if (value.equals("0") || !value.endsWith("0")) { - Double.parseDouble(value); - isValueNumeric = true; - } - } catch (NumberFormatException e) { - isValueNumeric = false; - } - - if (json.charAt(json.length() - 1) != '{') { - json.append(','); - } - - json.append(escapeJSON(key)); - json.append(':'); - - if (isValueNumeric) { - json.append(value); - } else { - json.append(escapeJSON(value)); - } - } - - /** - * Escape a string to create a valid JSON string - * - * @param text - * @return - */ - private static String escapeJSON(String text) { - StringBuilder builder = new StringBuilder(); - - builder.append('"'); - for (int index = 0; index < text.length(); index++) { - char chr = text.charAt(index); - - switch (chr) { - case '"': - case '\\': - builder.append('\\'); - builder.append(chr); - break; - case '\b': - builder.append("\\b"); - break; - case '\t': - builder.append("\\t"); - break; - case '\n': - builder.append("\\n"); - break; - case '\r': - builder.append("\\r"); - break; - default: - if (chr < ' ') { - String t = "000" + Integer.toHexString(chr); - builder.append("\\u" + t.substring(t.length() - 4)); - } else { - builder.append(chr); - } - break; - } - } - builder.append('"'); - - return builder.toString(); - } - - /** - * Encode text as UTF-8 - * - * @param text the text to encode - * @return the encoded text, as UTF-8 - */ - private static String urlEncode(final String text) throws UnsupportedEncodingException { - return URLEncoder.encode(text, "UTF-8"); - } - - /** - * Construct and create a Graph that can be used to separate specific plotters to their own graphs on the metrics - * website. Plotters can be added to the graph object returned. - * - * @param name The name of the graph - * @return Graph object created. Will never return NULL under normal circumstances unless bad parameters are given - */ - public Graph createGraph(final String name) { - if (name == null) { - throw new IllegalArgumentException("Graph name cannot be null"); - } - - // Construct the graph object - final Graph graph = new Graph(name); - - // Now we can add our graph - graphs.add(graph); - - // and return back - return graph; - } - - /** - * Add a Graph object to BukkitMetrics that represents data for the plugin that should be sent to the backend - * - * @param graph The name of the graph - */ - public void addGraph(final Graph graph) { - if (graph == null) { - throw new IllegalArgumentException("Graph cannot be null"); - } - - graphs.add(graph); - } - - /** - * Start measuring statistics. This will immediately create an async repeating task as the plugin and send the - * initial data to the metrics backend, and then after that it will post in increments of PING_INTERVAL * 1200 - * ticks. - * - * @return True if statistics measuring is running, otherwise false. - */ - public boolean start() { - synchronized (optOutLock) { - // Did we opt out? - if (isOptOut()) { - return false; - } - - // Is metrics already running? - if (task != null) { - return true; - } - - // Begin hitting the server with glorious data - task = plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, new Runnable() { - - private boolean firstPost = true; - - public void run() { - try { - // This has to be synchronized or it can collide with the disable method. - synchronized (optOutLock) { - // Disable Task, if it is running and the server owner decided to opt-out - if (isOptOut() && task != null) { - task.cancel(); - task = null; - // Tell all plotters to stop gathering information. - for (Graph graph : graphs) { - graph.onOptOut(); - } - } - } - - // We use the inverse of firstPost because if it is the first time we are posting, - // it is not a interval ping, so it evaluates to FALSE - // Each time thereafter it will evaluate to TRUE, i.e PING! - postPlugin(!firstPost); - - // After the first post we set firstPost to false - // Each post thereafter will be a ping - firstPost = false; - } catch (IOException e) { - if (debug) { - Bukkit.getLogger().log(Level.INFO, "[Metrics] " + e.getMessage()); - } - } - } - }, 0, PING_INTERVAL * 1200); - - return true; - } - } - - /** - * Has the server owner denied plugin metrics? - * - * @return true if metrics should be opted out of it - */ - public boolean isOptOut() { - synchronized (optOutLock) { - try { - // Reload the metrics file - configuration.load(getConfigFile()); - } catch (IOException ex) { - if (debug) { - Bukkit.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage()); - } - return true; - } catch (InvalidConfigurationException ex) { - if (debug) { - Bukkit.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage()); - } - return true; - } - return configuration.getBoolean("opt-out", false); - } - } - - /** - * Enables metrics for the server by setting "opt-out" to false in the config file and starting the metrics task. - * - * @throws java.io.IOException - */ - public void enable() throws IOException { - // This has to be synchronized or it can collide with the check in the task. - synchronized (optOutLock) { - // Check if the server owner has already set opt-out, if not, set it. - if (isOptOut()) { - configuration.set("opt-out", false); - configuration.save(configurationFile); - } - - // Enable Task, if it is not running - if (task == null) { - start(); - } - } - } - - /** - * Disables metrics for the server by setting "opt-out" to true in the config file and canceling the metrics task. - * - * @throws java.io.IOException - */ - public void disable() throws IOException { - // This has to be synchronized or it can collide with the check in the task. - synchronized (optOutLock) { - // Check if the server owner has already set opt-out, if not, set it. - if (!isOptOut()) { - configuration.set("opt-out", true); - configuration.save(configurationFile); - } - - // Disable Task, if it is running - if (task != null) { - task.cancel(); - task = null; - } - } - } - - /** - * Gets the File object of the config file that should be used to store data such as the GUID and opt-out status - * - * @return the File object for the config file - */ - public File getConfigFile() { - // I believe the easiest way to get the base folder (e.g craftbukkit set via -P) for plugins to use - // is to abuse the plugin object we already have - // plugin.getDataFolder() => base/plugins/PluginA/ - // pluginsFolder => base/plugins/ - // The base is not necessarily relative to the startup directory. - File pluginsFolder = plugin.getDataFolder().getParentFile(); - - // return => base/plugins/PluginMetrics/config.yml - return new File(new File(pluginsFolder, "PluginMetrics"), "config.yml"); - } - - /** - * Generic method that posts a plugin to the metrics website - */ - private void postPlugin(final boolean isPing) throws IOException { - // Server software specific section - PluginDescriptionFile description = plugin.getDescription(); - String pluginName = description.getName(); - boolean onlineMode = Bukkit.getServer().getOnlineMode(); // TRUE if online mode is enabled - String pluginVersion = description.getVersion(); - String serverVersion = Bukkit.getVersion(); - int playersOnline = Bukkit.getServer().getOnlinePlayers().length; - - // END server software specific section -- all code below does not use any code outside of this class / Java - - // Construct the post data - StringBuilder json = new StringBuilder(1024); - json.append('{'); - - // The plugin's description file containg all of the plugin data such as name, version, author, etc - appendJSONPair(json, "guid", guid); - appendJSONPair(json, "plugin_version", pluginVersion); - appendJSONPair(json, "server_version", serverVersion); - appendJSONPair(json, "players_online", Integer.toString(playersOnline)); - - // New data as of R6 - String osname = System.getProperty("os.name"); - String osarch = System.getProperty("os.arch"); - String osversion = System.getProperty("os.version"); - String java_version = System.getProperty("java.version"); - int coreCount = Runtime.getRuntime().availableProcessors(); - - // normalize os arch .. amd64 -> x86_64 - if (osarch.equals("amd64")) { - osarch = "x86_64"; - } - - appendJSONPair(json, "osname", osname); - appendJSONPair(json, "osarch", osarch); - appendJSONPair(json, "osversion", osversion); - appendJSONPair(json, "cores", Integer.toString(coreCount)); - appendJSONPair(json, "auth_mode", onlineMode ? "1" : "0"); - appendJSONPair(json, "java_version", java_version); - - // If we're pinging, append it - if (isPing) { - appendJSONPair(json, "ping", "1"); - } - - if (graphs.size() > 0) { - synchronized (graphs) { - json.append(','); - json.append('"'); - json.append("graphs"); - json.append('"'); - json.append(':'); - json.append('{'); - - boolean firstGraph = true; - - final Iterator iter = graphs.iterator(); - - while (iter.hasNext()) { - Graph graph = iter.next(); - - StringBuilder graphJson = new StringBuilder(); - graphJson.append('{'); - - for (Plotter plotter : graph.getPlotters()) { - appendJSONPair(graphJson, plotter.getColumnName(), Integer.toString(plotter.getValue())); - } - - graphJson.append('}'); - - if (!firstGraph) { - json.append(','); - } - - json.append(escapeJSON(graph.getName())); - json.append(':'); - json.append(graphJson); - - firstGraph = false; - } - - json.append('}'); - } - } - - // close json - json.append('}'); - - // Create the url - URL url = new URL(BASE_URL + String.format(REPORT_URL, urlEncode(pluginName))); - - // Connect to the website - URLConnection connection; - - // Mineshafter creates a socks proxy, so we can safely bypass it - // It does not reroute POST requests so we need to go around it - if (isMineshafterPresent()) { - connection = url.openConnection(Proxy.NO_PROXY); - } else { - connection = url.openConnection(); - } - - - byte[] uncompressed = json.toString().getBytes(); - byte[] compressed = gzip(json.toString()); - - // Headers - connection.addRequestProperty("User-Agent", "MCStats/" + REVISION); - connection.addRequestProperty("Content-Type", "application/json"); - connection.addRequestProperty("Content-Encoding", "gzip"); - connection.addRequestProperty("Content-Length", Integer.toString(compressed.length)); - connection.addRequestProperty("Accept", "application/json"); - connection.addRequestProperty("Connection", "close"); - - connection.setDoOutput(true); - - if (debug) { - System.out.println("[Metrics] Prepared request for " + pluginName + " uncompressed=" + uncompressed.length + " compressed=" + compressed.length); - } - - // Write the data - OutputStream os = connection.getOutputStream(); - os.write(compressed); - os.flush(); - - // Now read the response - final BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); - String response = reader.readLine(); - - // close resources - os.close(); - reader.close(); - - if (response == null || response.startsWith("ERR") || response.startsWith("7")) { - if (response == null) { - response = "null"; - } else if (response.startsWith("7")) { - response = response.substring(response.startsWith("7,") ? 2 : 1); - } - - throw new IOException(response); - } else { - // Is this the first update this hour? - if (response.equals("1") || response.contains("This is your first update this hour")) { - synchronized (graphs) { - final Iterator iter = graphs.iterator(); - - while (iter.hasNext()) { - final Graph graph = iter.next(); - - for (Plotter plotter : graph.getPlotters()) { - plotter.reset(); - } - } - } - } - } - } - - /** - * Check if mineshafter is present. If it is, we need to bypass it to send POST requests - * - * @return true if mineshafter is installed on the server - */ - private boolean isMineshafterPresent() { - try { - Class.forName("mineshafter.MineServer"); - return true; - } catch (Exception e) { - return false; - } - } - - /** - * Represents a custom graph on the website - */ - public static class Graph { - - /** - * The graph's name, alphanumeric and spaces only :) If it does not comply to the above when submitted, it is - * rejected - */ - private final String name; - - /** - * The set of plotters that are contained within this graph - */ - private final Set plotters = new LinkedHashSet(); - - private Graph(final String name) { - this.name = name; - } - - /** - * Gets the graph's name - * - * @return the Graph's name - */ - public String getName() { - return name; - } - - /** - * Add a plotter to the graph, which will be used to plot entries - * - * @param plotter the plotter to add to the graph - */ - public void addPlotter(final Plotter plotter) { - plotters.add(plotter); - } - - /** - * Remove a plotter from the graph - * - * @param plotter the plotter to remove from the graph - */ - public void removePlotter(final Plotter plotter) { - plotters.remove(plotter); - } - - /** - * Gets an unmodifiable set of the plotter objects in the graph - * - * @return an unmodifiable {@link java.util.Set} of the plotter objects - */ - public Set getPlotters() { - return Collections.unmodifiableSet(plotters); - } - - @Override - public int hashCode() { - return name.hashCode(); - } - - @Override - public boolean equals(final Object object) { - if (!(object instanceof Graph)) { - return false; - } - - final Graph graph = (Graph) object; - return graph.name.equals(name); - } - - /** - * Called when the server owner decides to opt-out of BukkitMetrics while the server is running. - */ - protected void onOptOut() { - } - } - - /** - * Interface used to collect custom data for a plugin - */ - public static abstract class Plotter { - - /** - * The plot's name - */ - private final String name; - - /** - * Construct a plotter with the default plot name - */ - public Plotter() { - this("Default"); - } - - /** - * Construct a plotter with a specific plot name - * - * @param name the name of the plotter to use, which will show up on the website - */ - public Plotter(final String name) { - this.name = name; - } - - /** - * Get the current value for the plotted point. Since this function defers to an external function it may or may - * not return immediately thus cannot be guaranteed to be thread friendly or safe. This function can be called - * from any thread so care should be taken when accessing resources that need to be synchronized. - * - * @return the current value for the point to be plotted. - */ - public abstract int getValue(); - - /** - * Get the column name for the plotted point - * - * @return the plotted point's column name - */ - public String getColumnName() { - return name; - } - - /** - * Called after the website graphs have been updated - */ - public void reset() { - } - - @Override - public int hashCode() { - return getColumnName().hashCode(); - } - - @Override - public boolean equals(final Object object) { - if (!(object instanceof Plotter)) { - return false; - } - - final Plotter plotter = (Plotter) object; - return plotter.name.equals(name) && plotter.getValue() == getValue(); - } - } -} \ No newline at end of file diff --git a/src/org/melonbrew/fe/UUIDFetcher.java b/src/org/melonbrew/fe/UUIDFetcher.java index 0b78769..b8ce77c 100644 --- a/src/org/melonbrew/fe/UUIDFetcher.java +++ b/src/org/melonbrew/fe/UUIDFetcher.java @@ -29,6 +29,7 @@ public UUIDFetcher(List names) { this(names, true); } + @Override public Map call() throws Exception { Map uuidMap = new HashMap(); int requests = (int) Math.ceil(names.size() / PROFILES_PER_REQUEST); diff --git a/src/org/melonbrew/fe/UpdateCheck.java b/src/org/melonbrew/fe/UpdateCheck.java index 8adb763..34085f4 100644 --- a/src/org/melonbrew/fe/UpdateCheck.java +++ b/src/org/melonbrew/fe/UpdateCheck.java @@ -15,6 +15,7 @@ public UpdateCheck(Fe plugin) { this.plugin = plugin; } + @Override public void run() { String pluginUrlString = "http://dev.bukkit.org/server-mods/fe-economy/files.rss"; diff --git a/src/org/melonbrew/fe/command/commands/BalanceCommand.java b/src/org/melonbrew/fe/command/commands/BalanceCommand.java index 68175b7..46131fe 100644 --- a/src/org/melonbrew/fe/command/commands/BalanceCommand.java +++ b/src/org/melonbrew/fe/command/commands/BalanceCommand.java @@ -18,6 +18,7 @@ public BalanceCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { Account account; diff --git a/src/org/melonbrew/fe/command/commands/CleanCommand.java b/src/org/melonbrew/fe/command/commands/CleanCommand.java index d7f7af1..7216f58 100644 --- a/src/org/melonbrew/fe/command/commands/CleanCommand.java +++ b/src/org/melonbrew/fe/command/commands/CleanCommand.java @@ -16,6 +16,7 @@ public CleanCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { plugin.getAPI().clean(); diff --git a/src/org/melonbrew/fe/command/commands/CreateCommand.java b/src/org/melonbrew/fe/command/commands/CreateCommand.java index bc27c3b..e04191b 100644 --- a/src/org/melonbrew/fe/command/commands/CreateCommand.java +++ b/src/org/melonbrew/fe/command/commands/CreateCommand.java @@ -17,6 +17,7 @@ public CreateCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 1) { return false; diff --git a/src/org/melonbrew/fe/command/commands/DeductCommand.java b/src/org/melonbrew/fe/command/commands/DeductCommand.java index a83d96f..42c4932 100644 --- a/src/org/melonbrew/fe/command/commands/DeductCommand.java +++ b/src/org/melonbrew/fe/command/commands/DeductCommand.java @@ -19,6 +19,7 @@ public DeductCommand(Fe plugin) { } @SuppressWarnings("deprecation") + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 2) { return false; @@ -53,4 +54,4 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, return true; } -} +} diff --git a/src/org/melonbrew/fe/command/commands/GrantCommand.java b/src/org/melonbrew/fe/command/commands/GrantCommand.java index 4bafd08..f30c6f5 100644 --- a/src/org/melonbrew/fe/command/commands/GrantCommand.java +++ b/src/org/melonbrew/fe/command/commands/GrantCommand.java @@ -19,6 +19,7 @@ public GrantCommand(Fe plugin) { } @SuppressWarnings("deprecation") + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 2) { return false; @@ -58,4 +59,4 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, return true; } -} +} diff --git a/src/org/melonbrew/fe/command/commands/HelpCommand.java b/src/org/melonbrew/fe/command/commands/HelpCommand.java index 2ba0340..5b7c562 100644 --- a/src/org/melonbrew/fe/command/commands/HelpCommand.java +++ b/src/org/melonbrew/fe/command/commands/HelpCommand.java @@ -22,6 +22,7 @@ public HelpCommand(Fe plugin, FeCommand command) { this.command = command; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { sender.sendMessage(plugin.getEqualMessage(Phrase.HELP.parse(), 10)); diff --git a/src/org/melonbrew/fe/command/commands/ReloadCommand.java b/src/org/melonbrew/fe/command/commands/ReloadCommand.java index a636a66..4c13d64 100644 --- a/src/org/melonbrew/fe/command/commands/ReloadCommand.java +++ b/src/org/melonbrew/fe/command/commands/ReloadCommand.java @@ -16,6 +16,7 @@ public ReloadCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { plugin.reloadConfig(); diff --git a/src/org/melonbrew/fe/command/commands/RemoveCommand.java b/src/org/melonbrew/fe/command/commands/RemoveCommand.java index 16643f1..368fb9c 100644 --- a/src/org/melonbrew/fe/command/commands/RemoveCommand.java +++ b/src/org/melonbrew/fe/command/commands/RemoveCommand.java @@ -16,6 +16,7 @@ public RemoveCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 1) { return false; diff --git a/src/org/melonbrew/fe/command/commands/SendCommand.java b/src/org/melonbrew/fe/command/commands/SendCommand.java index 7fddfb9..caa0893 100644 --- a/src/org/melonbrew/fe/command/commands/SendCommand.java +++ b/src/org/melonbrew/fe/command/commands/SendCommand.java @@ -19,6 +19,7 @@ public SendCommand(Fe plugin) { } @SuppressWarnings("deprecation") + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 2) { return false; diff --git a/src/org/melonbrew/fe/command/commands/SetCommand.java b/src/org/melonbrew/fe/command/commands/SetCommand.java index a0e91b8..54294e3 100644 --- a/src/org/melonbrew/fe/command/commands/SetCommand.java +++ b/src/org/melonbrew/fe/command/commands/SetCommand.java @@ -17,6 +17,7 @@ public SetCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 2) { return false; diff --git a/src/org/melonbrew/fe/command/commands/TopCommand.java b/src/org/melonbrew/fe/command/commands/TopCommand.java index 165566b..443acde 100644 --- a/src/org/melonbrew/fe/command/commands/TopCommand.java +++ b/src/org/melonbrew/fe/command/commands/TopCommand.java @@ -19,6 +19,7 @@ public TopCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { List topAccounts = plugin.getAPI().getTopAccounts(); diff --git a/src/org/melonbrew/fe/database/Database.java b/src/org/melonbrew/fe/database/Database.java index 43aa1d3..1bf099c 100644 --- a/src/org/melonbrew/fe/database/Database.java +++ b/src/org/melonbrew/fe/database/Database.java @@ -36,6 +36,7 @@ public List getTopAccounts(int size) { List cachedTopAccounts = new ArrayList(cachedAccounts); Collections.sort(cachedTopAccounts, new Comparator() { + @Override public int compare(Account account1, Account account2) { return (int) (account2.getMoney() - account1.getMoney()); } @@ -49,6 +50,7 @@ public int compare(Account account1, Account account2) { } Collections.sort(topAccounts, new Comparator() { + @Override public int compare(Account account1, Account account2) { return (int) (account2.getMoney() - account1.getMoney()); } diff --git a/src/org/melonbrew/fe/database/databases/MongoDB.java b/src/org/melonbrew/fe/database/databases/MongoDB.java index 1415920..ad4e25c 100644 --- a/src/org/melonbrew/fe/database/databases/MongoDB.java +++ b/src/org/melonbrew/fe/database/databases/MongoDB.java @@ -56,6 +56,7 @@ private DB getDatabase() { } @SuppressWarnings("deprecation") + @Override public Double loadAccountMoney(String name, String uuid) { DBObject userObject = getDatabase().getCollection(ACCOUNTS_COLLECTION).findOne(new BasicDBObject(uuid != null ? "uuid" : "name", uuid != null ? uuid : name)); @@ -66,6 +67,7 @@ public Double loadAccountMoney(String name, String uuid) { return ((BasicDBObject) userObject).getDouble("money"); } + @Override public void removeAccount(String name, String uuid) { super.removeAccount(name, uuid); @@ -79,6 +81,7 @@ public void removeAccount(String name, String uuid) { } @SuppressWarnings("deprecation") + @Override public void saveAccount(String name, String uuid, double money) { DBCollection collection = getDatabase().getCollection(ACCOUNTS_COLLECTION); @@ -163,6 +166,7 @@ public List getAccounts() { return accounts; } + @Override public void clean() { DBCursor cursor = getDatabase().getCollection(ACCOUNTS_COLLECTION).find((new BasicDBObject("money", plugin.getAPI().getDefaultHoldings()))); diff --git a/src/org/melonbrew/fe/database/databases/MySQLDB.java b/src/org/melonbrew/fe/database/databases/MySQLDB.java index 1fe36af..faeeb32 100644 --- a/src/org/melonbrew/fe/database/databases/MySQLDB.java +++ b/src/org/melonbrew/fe/database/databases/MySQLDB.java @@ -11,6 +11,7 @@ public MySQLDB(Fe plugin) { super(plugin, true); } + @Override protected Connection getNewConnection() { ConfigurationSection config = getConfigSection(); @@ -43,6 +44,7 @@ private ConfigurationSection getSection(ConfigurationSection parent, String chil return child; } + @Override public void getConfigDefaults(ConfigurationSection section) { section.addDefault("host", "localhost"); @@ -69,6 +71,7 @@ public void getConfigDefaults(ConfigurationSection section) { columnsAccounts.addDefault("uuid", "uuid"); } + @Override public String getName() { return "MySQL"; } diff --git a/src/org/melonbrew/fe/database/databases/SQLDB.java b/src/org/melonbrew/fe/database/databases/SQLDB.java index 08cf263..4910594 100644 --- a/src/org/melonbrew/fe/database/databases/SQLDB.java +++ b/src/org/melonbrew/fe/database/databases/SQLDB.java @@ -79,6 +79,7 @@ public void setAccountsColumnUUID(String accountsColumnUUID) { this.accountsColumnUUID = accountsColumnUUID; } + @Override public boolean init() { super.init(); @@ -146,6 +147,7 @@ public boolean query(String sql) throws SQLException { return connection.createStatement().execute(sql); } + @Override public void close() { super.close(); @@ -157,6 +159,7 @@ public void close() { } } + @Override public int getVersion() { checkConnection(); @@ -179,6 +182,7 @@ public int getVersion() { } } + @Override public void setVersion(int version) { checkConnection(); @@ -191,6 +195,7 @@ public void setVersion(int version) { } } + @Override public List loadTopAccounts(int size) { checkConnection(); @@ -215,6 +220,7 @@ public List loadTopAccounts(int size) { return topAccounts; } + @Override public List getAccounts() { checkConnection(); @@ -238,6 +244,7 @@ public List getAccounts() { } @SuppressWarnings("deprecation") + @Override public Double loadAccountMoney(String name, String uuid) { checkConnection(); @@ -264,6 +271,7 @@ public Double loadAccountMoney(String name, String uuid) { } } + @Override public void removeAccount(String name, String uuid) { super.removeAccount(name, uuid); @@ -282,6 +290,7 @@ public void removeAccount(String name, String uuid) { } @SuppressWarnings("deprecation") + @Override protected void saveAccount(String name, String uuid, double money) { checkConnection(); @@ -323,6 +332,7 @@ protected void saveAccount(String name, String uuid, double money) { } @SuppressWarnings("deprecation") + @Override public void clean() { checkConnection(); @@ -357,6 +367,7 @@ public void clean() { } } + @Override public void removeAllAccounts() { super.removeAllAccounts(); diff --git a/src/org/melonbrew/fe/database/databases/SQLiteDB.java b/src/org/melonbrew/fe/database/databases/SQLiteDB.java index ea93094..ce1c696 100644 --- a/src/org/melonbrew/fe/database/databases/SQLiteDB.java +++ b/src/org/melonbrew/fe/database/databases/SQLiteDB.java @@ -16,6 +16,7 @@ public SQLiteDB(Fe plugin) { this.plugin = plugin; } + @Override public Connection getNewConnection() { try { Class.forName("org.sqlite.JDBC"); @@ -26,10 +27,12 @@ public Connection getNewConnection() { } } + @Override public void getConfigDefaults(ConfigurationSection section) { } + @Override public String getName() { return "SQLite"; } From 8c803af51bd694a4973638f1134fddc067647566 Mon Sep 17 00:00:00 2001 From: Stanislav Usenkov Date: Wed, 25 Mar 2015 18:15:42 +0600 Subject: [PATCH 04/40] Code update --- pom.xml | 18 +++++++++++++++--- src/org/melonbrew/fe/Fe.java | 16 ++++++++-------- src/org/melonbrew/fe/FeCommand.java | 2 +- src/org/melonbrew/fe/UUIDFetcher.java | 2 +- src/org/melonbrew/fe/VaultHandler.java | 2 +- src/org/melonbrew/fe/database/Database.java | 12 ++++++------ .../fe/database/databases/MongoDB.java | 4 ++-- .../melonbrew/fe/database/databases/SQLDB.java | 4 ++-- 8 files changed, 36 insertions(+), 24 deletions(-) diff --git a/pom.xml b/pom.xml index 749d3e9..52456ee 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.niccholaspage.Fe Fe - 0.8-SNAPSHOT + 0.8.3-SNAPSHOT Fe @@ -66,8 +66,9 @@ maven-compiler-plugin 3.2 - 1.6 - 1.6 + 1.7 + 1.7 + ${project.build.sourceEncoding} @@ -97,6 +98,17 @@ + + org.apache.maven.plugins + maven-resources-plugin + 2.4.3 + + ${project.build.sourceEncoding} + + + + UTF-8 + diff --git a/src/org/melonbrew/fe/Fe.java b/src/org/melonbrew/fe/Fe.java index 32a8481..bd9013e 100644 --- a/src/org/melonbrew/fe/Fe.java +++ b/src/org/melonbrew/fe/Fe.java @@ -33,7 +33,7 @@ public class Fe extends JavaPlugin { private String latestVersionString; public Fe() { - databases = new HashSet(); + databases = new HashSet<>(); } @Override @@ -46,8 +46,8 @@ public void onEnable() { databases.add(new SQLiteDB(this)); databases.add(new MongoDB(this)); - for (Database database : databases) { - String name = database.getConfigName(); + for (Database db : databases) { + String name = db.getConfigName(); ConfigurationSection section = getConfig().getConfigurationSection(name); @@ -55,7 +55,7 @@ public void onEnable() { section = getConfig().createSection(name); } - database.getConfigDefaults(section); + db.getConfigDefaults(section); if (section.getKeys(false).isEmpty()) { getConfig().set(name, null); @@ -181,7 +181,7 @@ public boolean addDatabase(Database database) { } public Set getDatabases() { - return new HashSet(databases); + return new HashSet<>(databases); } public API getAPI() { @@ -193,9 +193,9 @@ private boolean setupDatabase() { database = null; - for (Database database : databases) { - if (type.equalsIgnoreCase(database.getConfigName())) { - this.database = database; + for (Database db : databases) { + if (type.equalsIgnoreCase(db.getConfigName())) { + this.database = db; break; } diff --git a/src/org/melonbrew/fe/FeCommand.java b/src/org/melonbrew/fe/FeCommand.java index 3285319..beaa5ed 100644 --- a/src/org/melonbrew/fe/FeCommand.java +++ b/src/org/melonbrew/fe/FeCommand.java @@ -15,7 +15,7 @@ public class FeCommand implements CommandExecutor { private final List commands; public FeCommand(Fe plugin) { - commands = new ArrayList(); + commands = new ArrayList<>(); commands.add(new BalanceCommand(plugin)); commands.add(new SendCommand(plugin)); diff --git a/src/org/melonbrew/fe/UUIDFetcher.java b/src/org/melonbrew/fe/UUIDFetcher.java index b8ce77c..7ee1313 100644 --- a/src/org/melonbrew/fe/UUIDFetcher.java +++ b/src/org/melonbrew/fe/UUIDFetcher.java @@ -31,7 +31,7 @@ public UUIDFetcher(List names) { @Override public Map call() throws Exception { - Map uuidMap = new HashMap(); + Map uuidMap = new HashMap<>(); int requests = (int) Math.ceil(names.size() / PROFILES_PER_REQUEST); for (int i = 0; i < requests; i++) { HttpURLConnection connection = createConnection(); diff --git a/src/org/melonbrew/fe/VaultHandler.java b/src/org/melonbrew/fe/VaultHandler.java index 6c35a6b..24f34a3 100644 --- a/src/org/melonbrew/fe/VaultHandler.java +++ b/src/org/melonbrew/fe/VaultHandler.java @@ -197,7 +197,7 @@ public EconomyResponse bankBalance(String name) { @Override public List getBanks() { - return new ArrayList(); + return new ArrayList<>(); } @Override diff --git a/src/org/melonbrew/fe/database/Database.java b/src/org/melonbrew/fe/database/Database.java index 1bf099c..2f58dcf 100644 --- a/src/org/melonbrew/fe/database/Database.java +++ b/src/org/melonbrew/fe/database/Database.java @@ -16,7 +16,7 @@ public abstract class Database { public Database(Fe plugin) { this.plugin = plugin; - this.cachedAccounts = new HashSet(); + this.cachedAccounts = new HashSet<>(); } public boolean init() { @@ -33,7 +33,7 @@ public List getTopAccounts(int size) { topAccounts.remove(account); } - List cachedTopAccounts = new ArrayList(cachedAccounts); + List cachedTopAccounts = new ArrayList<>(cachedAccounts); Collections.sort(cachedTopAccounts, new Comparator() { @Override @@ -84,7 +84,7 @@ public void removeAccount(String name, String uuid) { public abstract void clean(); public void removeAllAccounts() { - for (Account account : new HashSet(cachedAccounts)) { + for (Account account : new HashSet<>(cachedAccounts)) { cachedAccounts.remove(account); } } @@ -98,13 +98,13 @@ protected boolean convertToUUID() { List accounts = getAccounts(); - Map accountMonies = new HashMap(); + Map accountMonies = new HashMap<>(); for (Account account : accounts) { accountMonies.put(account.getName(), account.getMoney()); } - List names = new ArrayList(); + List names = new ArrayList<>(); for (Account account : accounts) { names.add(account.getName()); @@ -120,7 +120,7 @@ protected boolean convertToUUID() { removeAllAccounts(); for (String name : response.keySet()) { - for (String accountName : new HashMap(accountMonies).keySet()) { + for (String accountName : new HashMap<>(accountMonies).keySet()) { if (accountName.equalsIgnoreCase(name)) { saveAccount(name, response.get(name).toString(), accountMonies.get(accountName)); diff --git a/src/org/melonbrew/fe/database/databases/MongoDB.java b/src/org/melonbrew/fe/database/databases/MongoDB.java index ad4e25c..f5115c5 100644 --- a/src/org/melonbrew/fe/database/databases/MongoDB.java +++ b/src/org/melonbrew/fe/database/databases/MongoDB.java @@ -132,7 +132,7 @@ public void setVersion(int version) { public List loadTopAccounts(int size) { DBCursor cursor = getDatabase().getCollection(ACCOUNTS_COLLECTION).find().sort(new BasicDBObject("money", -1)).limit(size); - List topAccounts = new ArrayList(); + List topAccounts = new ArrayList<>(); for (DBObject aCursor : cursor) { BasicDBObject topAccountObject = (BasicDBObject) aCursor; @@ -151,7 +151,7 @@ public List loadTopAccounts(int size) { public List getAccounts() { DBCursor cursor = getDatabase().getCollection(ACCOUNTS_COLLECTION).find().sort(new BasicDBObject("money", -1)); - List accounts = new ArrayList(); + List accounts = new ArrayList<>(); for (DBObject aCursor : cursor) { BasicDBObject accountObject = (BasicDBObject) aCursor; diff --git a/src/org/melonbrew/fe/database/databases/SQLDB.java b/src/org/melonbrew/fe/database/databases/SQLDB.java index 4910594..f1b1211 100644 --- a/src/org/melonbrew/fe/database/databases/SQLDB.java +++ b/src/org/melonbrew/fe/database/databases/SQLDB.java @@ -201,7 +201,7 @@ public List loadTopAccounts(int size) { String sql = "SELECT * FROM " + accountsName + " ORDER BY money DESC limit " + size; - List topAccounts = new ArrayList(); + List topAccounts = new ArrayList<>(); try { ResultSet set = connection.createStatement().executeQuery(sql); @@ -224,7 +224,7 @@ public List loadTopAccounts(int size) { public List getAccounts() { checkConnection(); - List accounts = new ArrayList(); + List accounts = new ArrayList<>(); try { ResultSet set = connection.createStatement().executeQuery("SELECT * from " + accountsName); From 85b1efc34e4a8448a7087bfbe49ecbf0f7d731bb Mon Sep 17 00:00:00 2001 From: SimSonic Date: Wed, 25 Mar 2015 19:03:55 +0600 Subject: [PATCH 05/40] Resolve merge errors --- src/{ => main/java}/org/melonbrew/fe/API.java | 0 src/{ => main/java}/org/melonbrew/fe/Fe.java | 27 +- .../java}/org/melonbrew/fe/FeCommand.java | 3 +- .../java}/org/melonbrew/fe/Phrase.java | 0 .../java}/org/melonbrew/fe/UUIDFetcher.java | 3 +- .../java}/org/melonbrew/fe/VaultHandler.java | 2 +- .../org/melonbrew/fe/command/CommandType.java | 0 .../org/melonbrew/fe/command/SubCommand.java | 0 .../fe/command/commands/BalanceCommand.java | 1 + .../fe/command/commands/CleanCommand.java | 1 + .../fe/command/commands/CreateCommand.java | 1 + .../fe/command/commands/DeductCommand.java | 3 +- .../fe/command/commands/GrantCommand.java | 3 +- .../fe/command/commands/HelpCommand.java | 1 + .../fe/command/commands/ReloadCommand.java | 1 + .../fe/command/commands/RemoveCommand.java | 1 + .../fe/command/commands/SendCommand.java | 1 + .../fe/command/commands/SetCommand.java | 1 + .../fe/command/commands/TopCommand.java | 1 + .../org/melonbrew/fe/database/Account.java | 0 .../org/melonbrew/fe/database/Database.java | 48 +- .../fe/database/databases/MongoDB.java | 202 +++++++++ .../fe/database/databases/MySQLDB.java | 3 + .../fe/database/databases/SQLDB.java | 429 ++++++++++++++++++ .../fe/database/databases/SQLiteDB.java | 3 + .../fe/listeners/FePlayerListener.java | 0 26 files changed, 691 insertions(+), 44 deletions(-) rename src/{ => main/java}/org/melonbrew/fe/API.java (100%) rename src/{ => main/java}/org/melonbrew/fe/Fe.java (93%) rename src/{ => main/java}/org/melonbrew/fe/FeCommand.java (99%) rename src/{ => main/java}/org/melonbrew/fe/Phrase.java (100%) rename src/{ => main/java}/org/melonbrew/fe/UUIDFetcher.java (98%) rename src/{ => main/java}/org/melonbrew/fe/VaultHandler.java (99%) rename src/{ => main/java}/org/melonbrew/fe/command/CommandType.java (100%) rename src/{ => main/java}/org/melonbrew/fe/command/SubCommand.java (100%) rename src/{ => main/java}/org/melonbrew/fe/command/commands/BalanceCommand.java (99%) rename src/{ => main/java}/org/melonbrew/fe/command/commands/CleanCommand.java (98%) rename src/{ => main/java}/org/melonbrew/fe/command/commands/CreateCommand.java (98%) rename src/{ => main/java}/org/melonbrew/fe/command/commands/DeductCommand.java (98%) rename src/{ => main/java}/org/melonbrew/fe/command/commands/GrantCommand.java (98%) rename src/{ => main/java}/org/melonbrew/fe/command/commands/HelpCommand.java (99%) rename src/{ => main/java}/org/melonbrew/fe/command/commands/ReloadCommand.java (98%) rename src/{ => main/java}/org/melonbrew/fe/command/commands/RemoveCommand.java (98%) rename src/{ => main/java}/org/melonbrew/fe/command/commands/SendCommand.java (99%) rename src/{ => main/java}/org/melonbrew/fe/command/commands/SetCommand.java (99%) rename src/{ => main/java}/org/melonbrew/fe/command/commands/TopCommand.java (98%) rename src/{ => main/java}/org/melonbrew/fe/database/Account.java (100%) rename src/{ => main/java}/org/melonbrew/fe/database/Database.java (82%) create mode 100644 src/main/java/org/melonbrew/fe/database/databases/MongoDB.java rename src/{ => main/java}/org/melonbrew/fe/database/databases/MySQLDB.java (98%) create mode 100644 src/main/java/org/melonbrew/fe/database/databases/SQLDB.java rename src/{ => main/java}/org/melonbrew/fe/database/databases/SQLiteDB.java (95%) rename src/{ => main/java}/org/melonbrew/fe/listeners/FePlayerListener.java (100%) diff --git a/src/org/melonbrew/fe/API.java b/src/main/java/org/melonbrew/fe/API.java similarity index 100% rename from src/org/melonbrew/fe/API.java rename to src/main/java/org/melonbrew/fe/API.java diff --git a/src/org/melonbrew/fe/Fe.java b/src/main/java/org/melonbrew/fe/Fe.java similarity index 93% rename from src/org/melonbrew/fe/Fe.java rename to src/main/java/org/melonbrew/fe/Fe.java index e4efc57..c5f2fa0 100644 --- a/src/org/melonbrew/fe/Fe.java +++ b/src/main/java/org/melonbrew/fe/Fe.java @@ -8,8 +8,9 @@ import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.java.JavaPlugin; -import org.melonbrew.fe.Metrics.Graph; -import org.melonbrew.fe.Metrics.Plotter; +import org.mcstats.Metrics; +import org.mcstats.Metrics.Graph; +import org.mcstats.Metrics.Plotter; import org.melonbrew.fe.database.Account; import org.melonbrew.fe.database.Database; import org.melonbrew.fe.database.databases.MongoDB; @@ -28,9 +29,10 @@ public class Fe extends JavaPlugin { private Database database; public Fe() { - databases = new HashSet(); + databases = new HashSet<>(); } + @Override public void onEnable() { getDataFolder().mkdirs(); @@ -40,8 +42,8 @@ public void onEnable() { databases.add(new SQLiteDB(this)); databases.add(new MongoDB(this)); - for (Database database : databases) { - String name = database.getConfigName(); + for (Database db : databases) { + String name = db.getConfigName(); ConfigurationSection section = getConfig().getConfigurationSection(name); @@ -49,7 +51,7 @@ public void onEnable() { section = getConfig().createSection(name); } - database.getConfigDefaults(section); + db.getConfigDefaults(section); if (section.getKeys(false).isEmpty()) { getConfig().set(name, null); @@ -95,6 +97,7 @@ public void log(String message) { getLogger().info( message ); } + @Override public void onDisable() { getServer().getScheduler().cancelTasks(this); @@ -114,7 +117,7 @@ public boolean addDatabase(Database database) { } public Set getDatabases() { - return new HashSet(databases); + return new HashSet<>(databases); } public API getAPI() { @@ -126,9 +129,9 @@ private boolean setupDatabase() { database = null; - for (Database database : databases) { - if (type.equalsIgnoreCase(database.getConfigName())) { - this.database = database; + for (Database db : databases) { + if (type.equalsIgnoreCase(db.getConfigName())) { + this.database = db; break; } @@ -177,6 +180,7 @@ private void setupPhrases() { } } + @Override public void reloadConfig() { super.reloadConfig(); @@ -268,6 +272,7 @@ private void loadMetrics() { Graph databaseGraph = metrics.createGraph("Database Engine"); databaseGraph.addPlotter(new Plotter(getFeDatabase().getName()) { + @Override public int getValue() { return 1; } @@ -276,6 +281,7 @@ public int getValue() { Graph defaultHoldings = metrics.createGraph("Default Holdings"); defaultHoldings.addPlotter(new Plotter(getAPI().getDefaultHoldings() + "") { + @Override public int getValue() { return 1; } @@ -290,6 +296,7 @@ public int getValue() { } maxHoldings.addPlotter(new Plotter(maxHolding) { + @Override public int getValue() { return 1; } diff --git a/src/org/melonbrew/fe/FeCommand.java b/src/main/java/org/melonbrew/fe/FeCommand.java similarity index 99% rename from src/org/melonbrew/fe/FeCommand.java rename to src/main/java/org/melonbrew/fe/FeCommand.java index 3bd15e6..beaa5ed 100644 --- a/src/org/melonbrew/fe/FeCommand.java +++ b/src/main/java/org/melonbrew/fe/FeCommand.java @@ -15,7 +15,7 @@ public class FeCommand implements CommandExecutor { private final List commands; public FeCommand(Fe plugin) { - commands = new ArrayList(); + commands = new ArrayList<>(); commands.add(new BalanceCommand(plugin)); commands.add(new SendCommand(plugin)); @@ -78,6 +78,7 @@ private void sendDefaultCommand(CommandSender sender, Command cmd, String comman onCommand(sender, cmd, commandLabel, merge(new String[]{command}, args)); } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 1) { sendDefaultCommand(sender, cmd, commandLabel, args); diff --git a/src/org/melonbrew/fe/Phrase.java b/src/main/java/org/melonbrew/fe/Phrase.java similarity index 100% rename from src/org/melonbrew/fe/Phrase.java rename to src/main/java/org/melonbrew/fe/Phrase.java diff --git a/src/org/melonbrew/fe/UUIDFetcher.java b/src/main/java/org/melonbrew/fe/UUIDFetcher.java similarity index 98% rename from src/org/melonbrew/fe/UUIDFetcher.java rename to src/main/java/org/melonbrew/fe/UUIDFetcher.java index 0b78769..7ee1313 100644 --- a/src/org/melonbrew/fe/UUIDFetcher.java +++ b/src/main/java/org/melonbrew/fe/UUIDFetcher.java @@ -29,8 +29,9 @@ public UUIDFetcher(List names) { this(names, true); } + @Override public Map call() throws Exception { - Map uuidMap = new HashMap(); + Map uuidMap = new HashMap<>(); int requests = (int) Math.ceil(names.size() / PROFILES_PER_REQUEST); for (int i = 0; i < requests; i++) { HttpURLConnection connection = createConnection(); diff --git a/src/org/melonbrew/fe/VaultHandler.java b/src/main/java/org/melonbrew/fe/VaultHandler.java similarity index 99% rename from src/org/melonbrew/fe/VaultHandler.java rename to src/main/java/org/melonbrew/fe/VaultHandler.java index 2371140..337d3b4 100644 --- a/src/org/melonbrew/fe/VaultHandler.java +++ b/src/main/java/org/melonbrew/fe/VaultHandler.java @@ -197,7 +197,7 @@ public EconomyResponse bankBalance(String name) { @Override public List getBanks() { - return new ArrayList(); + return new ArrayList<>(); } @Override diff --git a/src/org/melonbrew/fe/command/CommandType.java b/src/main/java/org/melonbrew/fe/command/CommandType.java similarity index 100% rename from src/org/melonbrew/fe/command/CommandType.java rename to src/main/java/org/melonbrew/fe/command/CommandType.java diff --git a/src/org/melonbrew/fe/command/SubCommand.java b/src/main/java/org/melonbrew/fe/command/SubCommand.java similarity index 100% rename from src/org/melonbrew/fe/command/SubCommand.java rename to src/main/java/org/melonbrew/fe/command/SubCommand.java diff --git a/src/org/melonbrew/fe/command/commands/BalanceCommand.java b/src/main/java/org/melonbrew/fe/command/commands/BalanceCommand.java similarity index 99% rename from src/org/melonbrew/fe/command/commands/BalanceCommand.java rename to src/main/java/org/melonbrew/fe/command/commands/BalanceCommand.java index 68175b7..46131fe 100644 --- a/src/org/melonbrew/fe/command/commands/BalanceCommand.java +++ b/src/main/java/org/melonbrew/fe/command/commands/BalanceCommand.java @@ -18,6 +18,7 @@ public BalanceCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { Account account; diff --git a/src/org/melonbrew/fe/command/commands/CleanCommand.java b/src/main/java/org/melonbrew/fe/command/commands/CleanCommand.java similarity index 98% rename from src/org/melonbrew/fe/command/commands/CleanCommand.java rename to src/main/java/org/melonbrew/fe/command/commands/CleanCommand.java index d7f7af1..7216f58 100644 --- a/src/org/melonbrew/fe/command/commands/CleanCommand.java +++ b/src/main/java/org/melonbrew/fe/command/commands/CleanCommand.java @@ -16,6 +16,7 @@ public CleanCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { plugin.getAPI().clean(); diff --git a/src/org/melonbrew/fe/command/commands/CreateCommand.java b/src/main/java/org/melonbrew/fe/command/commands/CreateCommand.java similarity index 98% rename from src/org/melonbrew/fe/command/commands/CreateCommand.java rename to src/main/java/org/melonbrew/fe/command/commands/CreateCommand.java index a44a64f..9ffdf54 100644 --- a/src/org/melonbrew/fe/command/commands/CreateCommand.java +++ b/src/main/java/org/melonbrew/fe/command/commands/CreateCommand.java @@ -17,6 +17,7 @@ public CreateCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 1) { return false; diff --git a/src/org/melonbrew/fe/command/commands/DeductCommand.java b/src/main/java/org/melonbrew/fe/command/commands/DeductCommand.java similarity index 98% rename from src/org/melonbrew/fe/command/commands/DeductCommand.java rename to src/main/java/org/melonbrew/fe/command/commands/DeductCommand.java index a83d96f..42c4932 100644 --- a/src/org/melonbrew/fe/command/commands/DeductCommand.java +++ b/src/main/java/org/melonbrew/fe/command/commands/DeductCommand.java @@ -19,6 +19,7 @@ public DeductCommand(Fe plugin) { } @SuppressWarnings("deprecation") + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 2) { return false; @@ -53,4 +54,4 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, return true; } -} +} diff --git a/src/org/melonbrew/fe/command/commands/GrantCommand.java b/src/main/java/org/melonbrew/fe/command/commands/GrantCommand.java similarity index 98% rename from src/org/melonbrew/fe/command/commands/GrantCommand.java rename to src/main/java/org/melonbrew/fe/command/commands/GrantCommand.java index 4bafd08..f30c6f5 100644 --- a/src/org/melonbrew/fe/command/commands/GrantCommand.java +++ b/src/main/java/org/melonbrew/fe/command/commands/GrantCommand.java @@ -19,6 +19,7 @@ public GrantCommand(Fe plugin) { } @SuppressWarnings("deprecation") + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 2) { return false; @@ -58,4 +59,4 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, return true; } -} +} diff --git a/src/org/melonbrew/fe/command/commands/HelpCommand.java b/src/main/java/org/melonbrew/fe/command/commands/HelpCommand.java similarity index 99% rename from src/org/melonbrew/fe/command/commands/HelpCommand.java rename to src/main/java/org/melonbrew/fe/command/commands/HelpCommand.java index 2ba0340..5b7c562 100644 --- a/src/org/melonbrew/fe/command/commands/HelpCommand.java +++ b/src/main/java/org/melonbrew/fe/command/commands/HelpCommand.java @@ -22,6 +22,7 @@ public HelpCommand(Fe plugin, FeCommand command) { this.command = command; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { sender.sendMessage(plugin.getEqualMessage(Phrase.HELP.parse(), 10)); diff --git a/src/org/melonbrew/fe/command/commands/ReloadCommand.java b/src/main/java/org/melonbrew/fe/command/commands/ReloadCommand.java similarity index 98% rename from src/org/melonbrew/fe/command/commands/ReloadCommand.java rename to src/main/java/org/melonbrew/fe/command/commands/ReloadCommand.java index a636a66..4c13d64 100644 --- a/src/org/melonbrew/fe/command/commands/ReloadCommand.java +++ b/src/main/java/org/melonbrew/fe/command/commands/ReloadCommand.java @@ -16,6 +16,7 @@ public ReloadCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { plugin.reloadConfig(); diff --git a/src/org/melonbrew/fe/command/commands/RemoveCommand.java b/src/main/java/org/melonbrew/fe/command/commands/RemoveCommand.java similarity index 98% rename from src/org/melonbrew/fe/command/commands/RemoveCommand.java rename to src/main/java/org/melonbrew/fe/command/commands/RemoveCommand.java index 16643f1..368fb9c 100644 --- a/src/org/melonbrew/fe/command/commands/RemoveCommand.java +++ b/src/main/java/org/melonbrew/fe/command/commands/RemoveCommand.java @@ -16,6 +16,7 @@ public RemoveCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 1) { return false; diff --git a/src/org/melonbrew/fe/command/commands/SendCommand.java b/src/main/java/org/melonbrew/fe/command/commands/SendCommand.java similarity index 99% rename from src/org/melonbrew/fe/command/commands/SendCommand.java rename to src/main/java/org/melonbrew/fe/command/commands/SendCommand.java index 7fddfb9..caa0893 100644 --- a/src/org/melonbrew/fe/command/commands/SendCommand.java +++ b/src/main/java/org/melonbrew/fe/command/commands/SendCommand.java @@ -19,6 +19,7 @@ public SendCommand(Fe plugin) { } @SuppressWarnings("deprecation") + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 2) { return false; diff --git a/src/org/melonbrew/fe/command/commands/SetCommand.java b/src/main/java/org/melonbrew/fe/command/commands/SetCommand.java similarity index 99% rename from src/org/melonbrew/fe/command/commands/SetCommand.java rename to src/main/java/org/melonbrew/fe/command/commands/SetCommand.java index a0e91b8..54294e3 100644 --- a/src/org/melonbrew/fe/command/commands/SetCommand.java +++ b/src/main/java/org/melonbrew/fe/command/commands/SetCommand.java @@ -17,6 +17,7 @@ public SetCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length < 2) { return false; diff --git a/src/org/melonbrew/fe/command/commands/TopCommand.java b/src/main/java/org/melonbrew/fe/command/commands/TopCommand.java similarity index 98% rename from src/org/melonbrew/fe/command/commands/TopCommand.java rename to src/main/java/org/melonbrew/fe/command/commands/TopCommand.java index 165566b..443acde 100644 --- a/src/org/melonbrew/fe/command/commands/TopCommand.java +++ b/src/main/java/org/melonbrew/fe/command/commands/TopCommand.java @@ -19,6 +19,7 @@ public TopCommand(Fe plugin) { this.plugin = plugin; } + @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { List topAccounts = plugin.getAPI().getTopAccounts(); diff --git a/src/org/melonbrew/fe/database/Account.java b/src/main/java/org/melonbrew/fe/database/Account.java similarity index 100% rename from src/org/melonbrew/fe/database/Account.java rename to src/main/java/org/melonbrew/fe/database/Account.java diff --git a/src/org/melonbrew/fe/database/Database.java b/src/main/java/org/melonbrew/fe/database/Database.java similarity index 82% rename from src/org/melonbrew/fe/database/Database.java rename to src/main/java/org/melonbrew/fe/database/Database.java index d5fdd37..4198da5 100644 --- a/src/org/melonbrew/fe/database/Database.java +++ b/src/main/java/org/melonbrew/fe/database/Database.java @@ -18,7 +18,7 @@ public Database( Fe plugin ) { this.plugin = plugin; - this.cachedAccounts = new HashSet(); + this.cachedAccounts = new HashSet<>(); } public boolean init() @@ -39,13 +39,11 @@ public List getTopAccounts( int size ) topAccounts.remove( account ); } - List cachedTopAccounts = new ArrayList( cachedAccounts ); - - Collections.sort( cachedTopAccounts, new Comparator() - { - public int compare( Account account1, Account account2 ) - { - return ( int ) ( account2.getMoney() - account1.getMoney() ); + List cachedTopAccounts = new ArrayList<>(cachedAccounts); + Collections.sort(cachedTopAccounts, new Comparator() { + @Override + public int compare(Account account1, Account account2) { + return (int) (account2.getMoney() - account1.getMoney()); } } ); @@ -56,12 +54,10 @@ public int compare( Account account1, Account account2 ) topAccounts.addAll( cachedTopAccounts ); } - - Collections.sort( topAccounts, new Comparator() - { - public int compare( Account account1, Account account2 ) - { - return ( int ) ( account2.getMoney() - account1.getMoney() ); + Collections.sort(topAccounts, new Comparator() { + @Override + public int compare(Account account1, Account account2) { + return (int) (account2.getMoney() - account1.getMoney()); } } ); @@ -95,11 +91,9 @@ public void removeAccount( String name, String uuid ) public abstract void clean(); - public void removeAllAccounts() - { - for( Account account : new HashSet( cachedAccounts ) ) - { - cachedAccounts.remove( account ); + public void removeAllAccounts() { + for (Account account : new HashSet<>(cachedAccounts)) { + cachedAccounts.remove(account); } } @@ -114,14 +108,14 @@ protected boolean convertToUUID() List accounts = getAccounts(); - Map accountMonies = new HashMap(); + Map accountMonies = new HashMap<>(); for( Account account : accounts ) { accountMonies.put( account.getName(), account.getMoney() ); } - List names = new ArrayList(); + List names = new ArrayList<>(); for( Account account : accounts ) { @@ -138,14 +132,10 @@ protected boolean convertToUUID() removeAllAccounts(); - for( String name : response.keySet() ) - { - for( String accountName : new HashMap( accountMonies ).keySet() ) - { - if( accountName.equalsIgnoreCase( name ) ) - { - saveAccount( name, response.get( name ).toString(), accountMonies.get( accountName ) ); - + for (String name : response.keySet()) { + for (String accountName : new HashMap<>(accountMonies).keySet()) { + if (accountName.equalsIgnoreCase(name)) { + saveAccount(name, response.get(name).toString(), accountMonies.get(accountName)); accountMonies.remove( accountName ); } } diff --git a/src/main/java/org/melonbrew/fe/database/databases/MongoDB.java b/src/main/java/org/melonbrew/fe/database/databases/MongoDB.java new file mode 100644 index 0000000..45c3ab6 --- /dev/null +++ b/src/main/java/org/melonbrew/fe/database/databases/MongoDB.java @@ -0,0 +1,202 @@ +package org.melonbrew.fe.database.databases; + +import com.mongodb.*; +import org.bukkit.configuration.ConfigurationSection; +import org.melonbrew.fe.Fe; +import org.melonbrew.fe.database.Account; +import org.melonbrew.fe.database.Database; + +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class MongoDB extends Database +{ + private static final String ACCOUNTS_COLLECTION = "accounts"; + private static final String VERSION_COLLECTION = "version"; + private final Fe plugin; + private MongoClient mongoClient; + + public MongoDB(Fe plugin) + { + super(plugin); + + this.plugin = plugin; + } + + @Override + public boolean init() + { + super.init(); + + try + { + mongoClient = new MongoClient(getConfigSection().getString("host"), getConfigSection().getInt("port")); + } catch(UnknownHostException e) + { + return false; + } + + if(getDatabase() == null || ! getDatabase().isAuthenticated()) + return false; + + if(getVersion() == 0) + { + if( ! convertToUUID()) + return false; + + setVersion(1); + } + + return true; + } + + private DB getDatabase() + { + DB database = mongoClient.getDB(getConfigSection().getString("database")); + + database.authenticate(getConfigSection().getString("user"), getConfigSection().getString("password").toCharArray()); + + return database; + } + + @SuppressWarnings("deprecation") + @Override + public HashMap loadAccountData(String name, String uuid) + { + DBObject userObject = getDatabase().getCollection(ACCOUNTS_COLLECTION).findOne(new BasicDBObject(uuid != null ? "uuid" : "name", uuid != null ? uuid : name)); + + if(userObject == null) + return null; + + HashMap data = new HashMap<>(); + + data.put("money", ((BasicDBObject)userObject).getString("money")); + data.put("name", ((BasicDBObject)userObject).getString("name")); + + return data; + } + + @Override + public void removeAccount(String name, String uuid) + { + super.removeAccount(name, uuid); + + DBCollection collection = getDatabase().getCollection(ACCOUNTS_COLLECTION); + + DBObject oldUserObject = collection.findOne(new BasicDBObject(uuid != null ? "uuid" : "name", uuid != null ? uuid : name)); + + if(oldUserObject != null) + collection.remove(oldUserObject); + } + + @SuppressWarnings("deprecation") + @Override + public void saveAccount(String name, String uuid, double money) + { + DBCollection collection = getDatabase().getCollection(ACCOUNTS_COLLECTION); + + DBObject query = collection.findOne(new BasicDBObject(uuid != null ? "uuid" : "name", uuid != null ? uuid : name)); + + if(query != null) + collection.remove(query); + + collection.insert(new BasicDBObject("name", name).append("uuid", uuid).append("money", money)); + } + + @Override + public void getConfigDefaults(ConfigurationSection section) + { + section.addDefault("host", "localhost"); + + section.addDefault("port", 27017); + + section.addDefault("user", "root"); + + section.addDefault("password", "minecraft"); + + section.addDefault("database", "Fe"); + } + + @Override + public String getName() + { + return "Mongo"; + } + + @Override + public int getVersion() + { + DBCollection collection = getDatabase().getCollection(VERSION_COLLECTION); + + BasicDBObject query = (BasicDBObject)collection.findOne(); + + return query.getInt("version", 0); + } + + @Override + public void setVersion(int version) + { + DBCollection collection = getDatabase().getCollection(VERSION_COLLECTION); + + collection.findAndRemove(new BasicDBObject()); + } + + @Override + public List loadTopAccounts(int size) + { + DBCursor cursor = getDatabase().getCollection(ACCOUNTS_COLLECTION).find().sort(new BasicDBObject("money", -1)).limit(size); + + List topAccounts = new ArrayList<>(); + + for(DBObject aCursor : cursor) + { + BasicDBObject topAccountObject = (BasicDBObject)aCursor; + + Account account = new Account(plugin, topAccountObject.getString("name"), topAccountObject.getString("uuid"), this); + + account.setMoney(topAccountObject.getDouble("money")); + + topAccounts.add(account); + } + + return topAccounts; + } + + @Override + public List getAccounts() + { + DBCursor cursor = getDatabase().getCollection(ACCOUNTS_COLLECTION).find().sort(new BasicDBObject("money", -1)); + + List accounts = new ArrayList<>(); + + for(DBObject aCursor : cursor) + { + BasicDBObject accountObject = (BasicDBObject)aCursor; + + Account account = new Account(plugin, accountObject.getString("name"), accountObject.getString("uuid"), this); + + account.setMoney(accountObject.getDouble("money")); + + accounts.add(account); + } + + return accounts; + } + + @Override + public void clean() + { + DBCursor cursor = getDatabase().getCollection(ACCOUNTS_COLLECTION).find((new BasicDBObject("money", plugin.getAPI().getDefaultHoldings()))); + + for(DBObject aCursor : cursor) + getDatabase().getCollection(ACCOUNTS_COLLECTION).remove(aCursor); + } + + @Override + public void removeAllAccounts() + { + getDatabase().getCollection(VERSION_COLLECTION).findAndRemove(new BasicDBObject()); + } +} diff --git a/src/org/melonbrew/fe/database/databases/MySQLDB.java b/src/main/java/org/melonbrew/fe/database/databases/MySQLDB.java similarity index 98% rename from src/org/melonbrew/fe/database/databases/MySQLDB.java rename to src/main/java/org/melonbrew/fe/database/databases/MySQLDB.java index 1fe36af..faeeb32 100644 --- a/src/org/melonbrew/fe/database/databases/MySQLDB.java +++ b/src/main/java/org/melonbrew/fe/database/databases/MySQLDB.java @@ -11,6 +11,7 @@ public MySQLDB(Fe plugin) { super(plugin, true); } + @Override protected Connection getNewConnection() { ConfigurationSection config = getConfigSection(); @@ -43,6 +44,7 @@ private ConfigurationSection getSection(ConfigurationSection parent, String chil return child; } + @Override public void getConfigDefaults(ConfigurationSection section) { section.addDefault("host", "localhost"); @@ -69,6 +71,7 @@ public void getConfigDefaults(ConfigurationSection section) { columnsAccounts.addDefault("uuid", "uuid"); } + @Override public String getName() { return "MySQL"; } diff --git a/src/main/java/org/melonbrew/fe/database/databases/SQLDB.java b/src/main/java/org/melonbrew/fe/database/databases/SQLDB.java new file mode 100644 index 0000000..3a1afe5 --- /dev/null +++ b/src/main/java/org/melonbrew/fe/database/databases/SQLDB.java @@ -0,0 +1,429 @@ +package org.melonbrew.fe.database.databases; + +import org.melonbrew.fe.Fe; +import org.melonbrew.fe.database.Account; +import org.melonbrew.fe.database.Database; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public abstract class SQLDB extends Database +{ + private final Fe plugin; + + private final boolean supportsModification; + + private Connection connection; + + private String accountsName; + + private String versionName; + + private String accountsColumnUser; + + private String accountsColumnMoney; + + private String accountsColumnUUID; + + public SQLDB(Fe plugin, boolean supportsModification) + { + super(plugin); + + this.plugin = plugin; + + this.supportsModification = supportsModification; + + accountsName = "fe_accounts"; + + versionName = "fe_version"; + + accountsColumnUser = "name"; + + accountsColumnMoney = "money"; + + accountsColumnUUID = "uuid"; + + plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, new Runnable() + { + @Override + public void run() + { + try + { + if(connection != null && ! connection.isClosed()) + connection.createStatement().execute("/* ping */ SELECT 1"); + } catch(SQLException e) + { + connection = getNewConnection(); + } + } + }, 60 * 20, 60 * 20); + } + + public void setAccountTable(String accountsName) + { + this.accountsName = accountsName; + } + + public void setVersionTable(String versionName) + { + this.versionName = versionName; + } + + public void setAccountsColumnUser(String accountsColumnUser) + { + this.accountsColumnUser = accountsColumnUser; + } + + public void setAccountsColumnMoney(String accountsColumnMoney) + { + this.accountsColumnMoney = accountsColumnMoney; + } + + public void setAccountsColumnUUID(String accountsColumnUUID) + { + this.accountsColumnUUID = accountsColumnUUID; + } + @Override + public boolean init() + { + super.init(); + + return checkConnection(); + + } + + public boolean checkConnection() + { + try + { + if(connection == null || connection.isClosed()) + { + connection = getNewConnection(); + + if(connection == null || connection.isClosed()) + return false; + + ResultSet set = connection.prepareStatement(supportsModification ? ("SHOW TABLES LIKE '" + accountsName + "'") : "SELECT name FROM sqlite_master WHERE type='table' AND name='" + accountsName + "'").executeQuery(); + + boolean newDatabase = set.next(); + + set.close(); + + query("CREATE TABLE IF NOT EXISTS " + accountsName + " (" + accountsColumnUser + " varchar(64) NOT NULL, " + accountsColumnUUID + " varchar(36), " + accountsColumnMoney + " double NOT NULL)"); + + query("CREATE TABLE IF NOT EXISTS " + versionName + " (version int NOT NULL)"); + + if(newDatabase) + { + int version = getVersion(); + + if(version == 0) + { + if(supportsModification) + { + query("ALTER TABLE " + accountsName + " MODIFY " + accountsColumnUser + " varchar(64) NOT NULL"); + + query("ALTER TABLE " + accountsName + " MODIFY " + accountsColumnMoney + " double NOT NULL"); + } + + try + { + query("ALTER TABLE " + accountsName + " ADD " + accountsColumnUUID + " varchar(36);"); + } catch(Exception e) + { + + } + + if( ! convertToUUID()) + return false; + + setVersion(1); + } + } else + setVersion(1); + } + } catch(SQLException e) + { + e.printStackTrace(); + + return false; + } + + return true; + } + + protected abstract Connection getNewConnection(); + + public boolean query(String sql) throws SQLException + { + return connection.createStatement().execute(sql); + } + @Override + public void close() + { + super.close(); + + try + { + if(connection != null) + connection.close(); + } catch(SQLException e) + { + e.printStackTrace(); + } + } + + @Override + public int getVersion() + { + checkConnection(); + + int version = 0; + + try + { + ResultSet set = connection.prepareStatement("SELECT * from " + versionName).executeQuery(); + + if(set.next()) + version = set.getInt("version"); + + set.close(); + + return version; + } catch(Exception e) + { + e.printStackTrace(); + + return version; + } + } + + @Override + public void setVersion(int version) + { + checkConnection(); + + try + { + connection.prepareStatement("DELETE FROM " + versionName).executeUpdate(); + + connection.prepareStatement("INSERT INTO " + versionName + " (version) VALUES (" + version + ")").executeUpdate(); + } catch(SQLException e) + { + e.printStackTrace(); + } + } + + @Override + public List loadTopAccounts(int size) + { + checkConnection(); + + String sql = "SELECT * FROM " + accountsName + " ORDER BY money DESC limit " + size; + + List topAccounts = new ArrayList<>(); + + try + { + ResultSet set = connection.createStatement().executeQuery(sql); + + while(set.next()) + { + Account account = new Account(plugin, set.getString(accountsColumnUser), set.getString(accountsColumnUUID), this); + + account.setMoney(set.getDouble(accountsColumnMoney)); + + topAccounts.add(account); + } + } catch(SQLException e) + { + e.printStackTrace(); + } + + return topAccounts; + } + + @Override + public List getAccounts() + { + checkConnection(); + + List accounts = new ArrayList<>(); + + try + { + ResultSet set = connection.createStatement().executeQuery("SELECT * from " + accountsName); + + while(set.next()) + { + Account account = new Account(plugin, set.getString(accountsColumnUser), set.getString(accountsColumnUUID), this); + + account.setMoney(set.getDouble(accountsColumnMoney)); + + accounts.add(account); + } + } catch(SQLException e) + { + e.printStackTrace(); + } + + return accounts; + } + + @SuppressWarnings("deprecation") + @Override + public HashMap loadAccountData(String name, String uuid) + { + checkConnection(); + + try + { + PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + accountsName + " WHERE UPPER(" + (uuid != null ? accountsColumnUUID : accountsColumnUser) + ") LIKE UPPER(?)"); + + statement.setString(1, uuid != null ? uuid : name); + + ResultSet set = statement.executeQuery(); + + HashMap data = new HashMap(); + + while(set.next()) + { + data.put("money", set.getString(accountsColumnMoney)); + data.put("name", set.getString(accountsColumnUser)); + } + + set.close(); + + return data; + } catch(SQLException e) + { + e.printStackTrace(); + + return null; + } + } + + @Override + public void removeAccount(String name, String uuid) + { + super.removeAccount(name, uuid); + + checkConnection(); + + PreparedStatement statement; + try + { + statement = connection.prepareStatement("DELETE FROM " + accountsName + " WHERE UPPER(" + (uuid != null ? accountsColumnUUID : accountsColumnUser) + ") LIKE UPPER(?)"); + + statement.setString(1, uuid != null ? uuid : name); + + statement.execute(); + } catch(SQLException e) + { + e.printStackTrace(); + } + } + + @SuppressWarnings("deprecation") + @Override + protected void saveAccount(String name, String uuid, double money) + { + checkConnection(); + + try + { + String sql = "UPDATE " + accountsName + " SET " + accountsColumnMoney + "=?, " + accountsColumnUser + "=? WHERE UPPER("; + + if(uuid != null) + sql += accountsColumnUUID; + else + sql += accountsColumnUser; + + PreparedStatement statement = connection.prepareStatement(sql + ") LIKE UPPER(?)"); + + statement.setDouble(1, money); + + statement.setString(2, name); + + if(uuid != null) + statement.setString(3, uuid); + else + statement.setString(3, name); + + if(statement.executeUpdate() == 0) + { + statement = connection.prepareStatement("INSERT INTO " + accountsName + " (" + accountsColumnUser + ", " + accountsColumnUUID + ", " + accountsColumnMoney + ") VALUES (?, ?, ?)"); + + statement.setString(1, name); + + statement.setString(2, uuid); + + statement.setDouble(3, money); + + statement.execute(); + } + } catch(SQLException e) + { + e.printStackTrace(); + } + } + + @SuppressWarnings("deprecation") + @Override + public void clean() + { + checkConnection(); + + try + { + ResultSet set = connection.prepareStatement("SELECT * from " + accountsName + " WHERE " + accountsColumnMoney + "=" + plugin.getAPI().getDefaultHoldings()).executeQuery(); + + boolean executeQuery = false; + + StringBuilder builder = new StringBuilder("DELETE FROM " + accountsName + " WHERE " + accountsColumnUser + " IN ("); + + while(set.next()) + { + String name = set.getString(accountsColumnUser); + + if(plugin.getServer().getPlayerExact(name) != null) + continue; + + executeQuery = true; + + builder.append("'").append(name).append("', "); + } + + set.close(); + + builder.delete(builder.length() - 2, builder.length()).append(")"); + + if(executeQuery) + query(builder.toString()); + } catch(SQLException e) + { + e.printStackTrace(); + } + } + @Override + public void removeAllAccounts() + { + super.removeAllAccounts(); + + checkConnection(); + + try + { + connection.prepareStatement("DELETE FROM " + accountsName).executeUpdate(); + } catch(SQLException e) + { + e.printStackTrace(); + } + } +} diff --git a/src/org/melonbrew/fe/database/databases/SQLiteDB.java b/src/main/java/org/melonbrew/fe/database/databases/SQLiteDB.java similarity index 95% rename from src/org/melonbrew/fe/database/databases/SQLiteDB.java rename to src/main/java/org/melonbrew/fe/database/databases/SQLiteDB.java index ea93094..ce1c696 100644 --- a/src/org/melonbrew/fe/database/databases/SQLiteDB.java +++ b/src/main/java/org/melonbrew/fe/database/databases/SQLiteDB.java @@ -16,6 +16,7 @@ public SQLiteDB(Fe plugin) { this.plugin = plugin; } + @Override public Connection getNewConnection() { try { Class.forName("org.sqlite.JDBC"); @@ -26,10 +27,12 @@ public Connection getNewConnection() { } } + @Override public void getConfigDefaults(ConfigurationSection section) { } + @Override public String getName() { return "SQLite"; } diff --git a/src/org/melonbrew/fe/listeners/FePlayerListener.java b/src/main/java/org/melonbrew/fe/listeners/FePlayerListener.java similarity index 100% rename from src/org/melonbrew/fe/listeners/FePlayerListener.java rename to src/main/java/org/melonbrew/fe/listeners/FePlayerListener.java From 4da6fbad1911c16c0d830025c44fbbad2a2616ae Mon Sep 17 00:00:00 2001 From: SimSonic Date: Wed, 25 Mar 2015 19:08:30 +0600 Subject: [PATCH 06/40] Move resources. --- pom.xml | 213 ++++++++++---------- config.yml => src/main/resources/config.yml | 0 plugin.yml => src/main/resources/plugin.yml | 0 3 files changed, 106 insertions(+), 107 deletions(-) rename config.yml => src/main/resources/config.yml (100%) rename plugin.yml => src/main/resources/plugin.yml (100%) diff --git a/pom.xml b/pom.xml index 62ec213..ccdfc40 100644 --- a/pom.xml +++ b/pom.xml @@ -1,113 +1,112 @@ - 4.0.0 - com.niccholaspage.Fe - Fe - 0.8.3 - Fe + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.niccholaspage.Fe + Fe + 0.8.3 + Fe - - UTF-8 - + + UTF-8 + - - - spigot-repo - https://hub.spigotmc.org/nexus/content/groups/public/ - - - vault-repo - http://nexus.theyeticave.net/content/repositories/pub_releases - - - metrics-repo - http://repo.mcstats.org/content/repositories/public/ - - + + + spigot-repo + https://hub.spigotmc.org/nexus/content/groups/public/ + + + vault-repo + http://nexus.theyeticave.net/content/repositories/pub_releases + + + metrics-repo + http://repo.mcstats.org/content/repositories/public/ + + - - - org.spigotmc - spigot-api - 1.8-R0.1-SNAPSHOT - - - net.milkbowl.vault - VaultAPI - 1.5 - jar - compile - - - org.mcstats.bukkit - metrics - R8-SNAPSHOT - compile - - - org.mongodb - mongo-java-driver - 2.13.0 - - + + + org.spigotmc + spigot-api + 1.8-R0.1-SNAPSHOT + + + net.milkbowl.vault + VaultAPI + 1.5 + jar + compile + + + org.mcstats.bukkit + metrics + R8-SNAPSHOT + compile + + + org.mongodb + mongo-java-driver + 2.13.0 + + - - ${project.name}_v{project.version} - - - maven-compiler-plugin - 3.2 - - 1.7 - 1.7 - ${project.build.sourceEncoding} - - - - org.apache.maven.plugins - maven-jar-plugin - 2.6 - - - org.apache.maven.plugins - maven-shade-plugin - 2.3 - - - package - - shade - - - true - - - org.mcstats.bukkit:metrics - org.mongodb:mongo-java-driver - - - - - - - - org.apache.maven.plugins - maven-resources-plugin - 2.7 - - ${project.build.sourceEncoding} - - - - - - . - true - ${basedir} - - *.yml - - - - + + ${project.name}_v${project.version} + + + maven-compiler-plugin + 3.2 + + 1.7 + 1.7 + ${project.build.sourceEncoding} + + + + org.apache.maven.plugins + maven-jar-plugin + 2.6 + + + org.apache.maven.plugins + maven-shade-plugin + 2.3 + + + package + + shade + + + true + + + org.mcstats.bukkit:metrics + org.mongodb:mongo-java-driver + + + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.7 + + ${project.build.sourceEncoding} + + + + + + src/main/resources + true + + *.yml + + + + diff --git a/config.yml b/src/main/resources/config.yml similarity index 100% rename from config.yml rename to src/main/resources/config.yml diff --git a/plugin.yml b/src/main/resources/plugin.yml similarity index 100% rename from plugin.yml rename to src/main/resources/plugin.yml From f239294e1c19e37a2a0c15cf378c0edba1a0a15b Mon Sep 17 00:00:00 2001 From: SimSonic Date: Thu, 26 Mar 2015 17:52:33 +0600 Subject: [PATCH 07/40] Package renamed. --- pom.xml | 2 +- .../melonbrew/fe => com/niccholaspage/Fe}/API.java | 4 ++-- .../melonbrew/fe => com/niccholaspage/Fe}/Fe.java | 14 +++++++------- .../fe => com/niccholaspage/Fe}/FeCommand.java | 8 ++++---- .../fe => com/niccholaspage/Fe}/Phrase.java | 2 +- .../fe => com/niccholaspage/Fe}/UUIDFetcher.java | 2 +- .../fe => com/niccholaspage/Fe}/VaultHandler.java | 4 ++-- .../niccholaspage/Fe}/command/CommandType.java | 2 +- .../niccholaspage/Fe}/command/SubCommand.java | 4 ++-- .../Fe}/command/commands/BalanceCommand.java | 12 ++++++------ .../Fe}/command/commands/CleanCommand.java | 10 +++++----- .../Fe}/command/commands/CreateCommand.java | 12 ++++++------ .../Fe}/command/commands/DeductCommand.java | 12 ++++++------ .../Fe}/command/commands/GrantCommand.java | 12 ++++++------ .../Fe}/command/commands/HelpCommand.java | 12 ++++++------ .../Fe}/command/commands/ReloadCommand.java | 10 +++++----- .../Fe}/command/commands/RemoveCommand.java | 10 +++++----- .../Fe}/command/commands/SendCommand.java | 12 ++++++------ .../Fe}/command/commands/SetCommand.java | 12 ++++++------ .../Fe}/command/commands/TopCommand.java | 12 ++++++------ .../niccholaspage/Fe}/database/Account.java | 6 +++--- .../niccholaspage/Fe}/database/Database.java | 8 ++++---- .../Fe}/database/databases/MongoDB.java | 8 ++++---- .../Fe}/database/databases/MySQLDB.java | 4 ++-- .../Fe}/database/databases/SQLDB.java | 8 ++++---- .../Fe}/database/databases/SQLiteDB.java | 4 ++-- .../Fe}/listeners/FePlayerListener.java | 10 +++++----- src/main/resources/plugin.yml | 9 +++------ 28 files changed, 111 insertions(+), 114 deletions(-) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/API.java (98%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/Fe.java (95%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/FeCommand.java (96%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/Phrase.java (99%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/UUIDFetcher.java (99%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/VaultHandler.java (99%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/CommandType.java (68%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/SubCommand.java (93%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/commands/BalanceCommand.java (84%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/commands/CleanCommand.java (72%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/commands/CreateCommand.java (80%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/commands/DeductCommand.java (84%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/commands/GrantCommand.java (85%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/commands/HelpCommand.java (85%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/commands/ReloadCommand.java (72%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/commands/RemoveCommand.java (81%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/commands/SendCommand.java (87%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/commands/SetCommand.java (82%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/command/commands/TopCommand.java (81%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/database/Account.java (96%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/database/Database.java (97%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/database/databases/MongoDB.java (96%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/database/databases/MySQLDB.java (96%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/database/databases/SQLDB.java (98%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/database/databases/SQLiteDB.java (90%) rename src/main/java/{org/melonbrew/fe => com/niccholaspage/Fe}/listeners/FePlayerListener.java (81%) diff --git a/pom.xml b/pom.xml index ccdfc40..39635ce 100644 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,7 @@ 4.0.0 - com.niccholaspage.Fe + com.niccholaspage Fe 0.8.3 Fe diff --git a/src/main/java/org/melonbrew/fe/API.java b/src/main/java/com/niccholaspage/Fe/API.java similarity index 98% rename from src/main/java/org/melonbrew/fe/API.java rename to src/main/java/com/niccholaspage/Fe/API.java index 443b3a9..7701763 100644 --- a/src/main/java/org/melonbrew/fe/API.java +++ b/src/main/java/com/niccholaspage/Fe/API.java @@ -1,7 +1,7 @@ -package org.melonbrew.fe; +package com.niccholaspage.Fe; import org.bukkit.ChatColor; -import org.melonbrew.fe.database.Account; +import com.niccholaspage.Fe.database.Account; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; diff --git a/src/main/java/org/melonbrew/fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java similarity index 95% rename from src/main/java/org/melonbrew/fe/Fe.java rename to src/main/java/com/niccholaspage/Fe/Fe.java index c5f2fa0..98411f5 100644 --- a/src/main/java/org/melonbrew/fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -1,4 +1,4 @@ -package org.melonbrew.fe; +package com.niccholaspage.Fe; import net.milkbowl.vault.economy.Economy; import org.bukkit.configuration.ConfigurationSection; @@ -11,12 +11,12 @@ import org.mcstats.Metrics; import org.mcstats.Metrics.Graph; import org.mcstats.Metrics.Plotter; -import org.melonbrew.fe.database.Account; -import org.melonbrew.fe.database.Database; -import org.melonbrew.fe.database.databases.MongoDB; -import org.melonbrew.fe.database.databases.MySQLDB; -import org.melonbrew.fe.database.databases.SQLiteDB; -import org.melonbrew.fe.listeners.FePlayerListener; +import com.niccholaspage.Fe.database.Account; +import com.niccholaspage.Fe.database.Database; +import com.niccholaspage.Fe.database.databases.MongoDB; +import com.niccholaspage.Fe.database.databases.MySQLDB; +import com.niccholaspage.Fe.database.databases.SQLiteDB; +import com.niccholaspage.Fe.listeners.FePlayerListener; import java.io.File; import java.io.IOException; diff --git a/src/main/java/org/melonbrew/fe/FeCommand.java b/src/main/java/com/niccholaspage/Fe/FeCommand.java similarity index 96% rename from src/main/java/org/melonbrew/fe/FeCommand.java rename to src/main/java/com/niccholaspage/Fe/FeCommand.java index beaa5ed..87a849f 100644 --- a/src/main/java/org/melonbrew/fe/FeCommand.java +++ b/src/main/java/com/niccholaspage/Fe/FeCommand.java @@ -1,12 +1,12 @@ -package org.melonbrew.fe; +package com.niccholaspage.Fe; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.melonbrew.fe.command.CommandType; -import org.melonbrew.fe.command.SubCommand; -import org.melonbrew.fe.command.commands.*; +import com.niccholaspage.Fe.command.CommandType; +import com.niccholaspage.Fe.command.SubCommand; +import com.niccholaspage.Fe.command.commands.*; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/melonbrew/fe/Phrase.java b/src/main/java/com/niccholaspage/Fe/Phrase.java similarity index 99% rename from src/main/java/org/melonbrew/fe/Phrase.java rename to src/main/java/com/niccholaspage/Fe/Phrase.java index f39fe4d..643097e 100644 --- a/src/main/java/org/melonbrew/fe/Phrase.java +++ b/src/main/java/com/niccholaspage/Fe/Phrase.java @@ -1,4 +1,4 @@ -package org.melonbrew.fe; +package com.niccholaspage.Fe; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/org/melonbrew/fe/UUIDFetcher.java b/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java similarity index 99% rename from src/main/java/org/melonbrew/fe/UUIDFetcher.java rename to src/main/java/com/niccholaspage/Fe/UUIDFetcher.java index 7ee1313..4d8a168 100644 --- a/src/main/java/org/melonbrew/fe/UUIDFetcher.java +++ b/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java @@ -1,4 +1,4 @@ -package org.melonbrew.fe; +package com.niccholaspage.Fe; import com.google.common.collect.ImmutableList; import org.json.simple.JSONArray; diff --git a/src/main/java/org/melonbrew/fe/VaultHandler.java b/src/main/java/com/niccholaspage/Fe/VaultHandler.java similarity index 99% rename from src/main/java/org/melonbrew/fe/VaultHandler.java rename to src/main/java/com/niccholaspage/Fe/VaultHandler.java index 337d3b4..ac6d944 100644 --- a/src/main/java/org/melonbrew/fe/VaultHandler.java +++ b/src/main/java/com/niccholaspage/Fe/VaultHandler.java @@ -1,4 +1,4 @@ -package org.melonbrew.fe; +package com.niccholaspage.Fe; import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.EconomyResponse; @@ -11,7 +11,7 @@ import org.bukkit.event.server.PluginDisableEvent; import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.plugin.Plugin; -import org.melonbrew.fe.database.Account; +import com.niccholaspage.Fe.database.Account; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/melonbrew/fe/command/CommandType.java b/src/main/java/com/niccholaspage/Fe/command/CommandType.java similarity index 68% rename from src/main/java/org/melonbrew/fe/command/CommandType.java rename to src/main/java/com/niccholaspage/Fe/command/CommandType.java index 105cce2..e012cf8 100644 --- a/src/main/java/org/melonbrew/fe/command/CommandType.java +++ b/src/main/java/com/niccholaspage/Fe/command/CommandType.java @@ -1,4 +1,4 @@ -package org.melonbrew.fe.command; +package com.niccholaspage.Fe.command; public enum CommandType { CONSOLE, diff --git a/src/main/java/org/melonbrew/fe/command/SubCommand.java b/src/main/java/com/niccholaspage/Fe/command/SubCommand.java similarity index 93% rename from src/main/java/org/melonbrew/fe/command/SubCommand.java rename to src/main/java/com/niccholaspage/Fe/command/SubCommand.java index c5e762b..c2ae8e5 100644 --- a/src/main/java/org/melonbrew/fe/command/SubCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/SubCommand.java @@ -1,8 +1,8 @@ -package org.melonbrew.fe.command; +package com.niccholaspage.Fe.command; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.melonbrew.fe.Phrase; +import com.niccholaspage.Fe.Phrase; public abstract class SubCommand { private final String name; diff --git a/src/main/java/org/melonbrew/fe/command/commands/BalanceCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java similarity index 84% rename from src/main/java/org/melonbrew/fe/command/commands/BalanceCommand.java rename to src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java index 46131fe..99023fb 100644 --- a/src/main/java/org/melonbrew/fe/command/commands/BalanceCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java @@ -1,13 +1,13 @@ -package org.melonbrew.fe.command.commands; +package com.niccholaspage.Fe.command.commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.Phrase; -import org.melonbrew.fe.command.CommandType; -import org.melonbrew.fe.command.SubCommand; -import org.melonbrew.fe.database.Account; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.command.CommandType; +import com.niccholaspage.Fe.command.SubCommand; +import com.niccholaspage.Fe.database.Account; public class BalanceCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/org/melonbrew/fe/command/commands/CleanCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java similarity index 72% rename from src/main/java/org/melonbrew/fe/command/commands/CleanCommand.java rename to src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java index 7216f58..aaadcfa 100644 --- a/src/main/java/org/melonbrew/fe/command/commands/CleanCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java @@ -1,11 +1,11 @@ -package org.melonbrew.fe.command.commands; +package com.niccholaspage.Fe.command.commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.Phrase; -import org.melonbrew.fe.command.CommandType; -import org.melonbrew.fe.command.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.command.CommandType; +import com.niccholaspage.Fe.command.SubCommand; public class CleanCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/org/melonbrew/fe/command/commands/CreateCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java similarity index 80% rename from src/main/java/org/melonbrew/fe/command/commands/CreateCommand.java rename to src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java index 9ffdf54..f17220a 100644 --- a/src/main/java/org/melonbrew/fe/command/commands/CreateCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java @@ -1,12 +1,12 @@ -package org.melonbrew.fe.command.commands; +package com.niccholaspage.Fe.command.commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.Phrase; -import org.melonbrew.fe.command.CommandType; -import org.melonbrew.fe.command.SubCommand; -import org.melonbrew.fe.database.Account; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.command.CommandType; +import com.niccholaspage.Fe.command.SubCommand; +import com.niccholaspage.Fe.database.Account; public class CreateCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/org/melonbrew/fe/command/commands/DeductCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java similarity index 84% rename from src/main/java/org/melonbrew/fe/command/commands/DeductCommand.java rename to src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java index 42c4932..6d98c66 100644 --- a/src/main/java/org/melonbrew/fe/command/commands/DeductCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java @@ -1,13 +1,13 @@ -package org.melonbrew.fe.command.commands; +package com.niccholaspage.Fe.command.commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.Phrase; -import org.melonbrew.fe.command.CommandType; -import org.melonbrew.fe.command.SubCommand; -import org.melonbrew.fe.database.Account; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.command.CommandType; +import com.niccholaspage.Fe.command.SubCommand; +import com.niccholaspage.Fe.database.Account; public class DeductCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/org/melonbrew/fe/command/commands/GrantCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java similarity index 85% rename from src/main/java/org/melonbrew/fe/command/commands/GrantCommand.java rename to src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java index f30c6f5..6404b05 100644 --- a/src/main/java/org/melonbrew/fe/command/commands/GrantCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java @@ -1,13 +1,13 @@ -package org.melonbrew.fe.command.commands; +package com.niccholaspage.Fe.command.commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.Phrase; -import org.melonbrew.fe.command.CommandType; -import org.melonbrew.fe.command.SubCommand; -import org.melonbrew.fe.database.Account; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.command.CommandType; +import com.niccholaspage.Fe.command.SubCommand; +import com.niccholaspage.Fe.database.Account; public class GrantCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/org/melonbrew/fe/command/commands/HelpCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java similarity index 85% rename from src/main/java/org/melonbrew/fe/command/commands/HelpCommand.java rename to src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java index 5b7c562..9975353 100644 --- a/src/main/java/org/melonbrew/fe/command/commands/HelpCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java @@ -1,13 +1,13 @@ -package org.melonbrew.fe.command.commands; +package com.niccholaspage.Fe.command.commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.FeCommand; -import org.melonbrew.fe.Phrase; -import org.melonbrew.fe.command.CommandType; -import org.melonbrew.fe.command.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.FeCommand; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.command.CommandType; +import com.niccholaspage.Fe.command.SubCommand; public class HelpCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/org/melonbrew/fe/command/commands/ReloadCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java similarity index 72% rename from src/main/java/org/melonbrew/fe/command/commands/ReloadCommand.java rename to src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java index 4c13d64..e4b1856 100644 --- a/src/main/java/org/melonbrew/fe/command/commands/ReloadCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java @@ -1,11 +1,11 @@ -package org.melonbrew.fe.command.commands; +package com.niccholaspage.Fe.command.commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.Phrase; -import org.melonbrew.fe.command.CommandType; -import org.melonbrew.fe.command.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.command.CommandType; +import com.niccholaspage.Fe.command.SubCommand; public class ReloadCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/org/melonbrew/fe/command/commands/RemoveCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java similarity index 81% rename from src/main/java/org/melonbrew/fe/command/commands/RemoveCommand.java rename to src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java index 368fb9c..6c4e490 100644 --- a/src/main/java/org/melonbrew/fe/command/commands/RemoveCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java @@ -1,11 +1,11 @@ -package org.melonbrew.fe.command.commands; +package com.niccholaspage.Fe.command.commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.Phrase; -import org.melonbrew.fe.command.CommandType; -import org.melonbrew.fe.command.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.command.CommandType; +import com.niccholaspage.Fe.command.SubCommand; public class RemoveCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/org/melonbrew/fe/command/commands/SendCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java similarity index 87% rename from src/main/java/org/melonbrew/fe/command/commands/SendCommand.java rename to src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java index caa0893..04678e0 100644 --- a/src/main/java/org/melonbrew/fe/command/commands/SendCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java @@ -1,13 +1,13 @@ -package org.melonbrew.fe.command.commands; +package com.niccholaspage.Fe.command.commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.Phrase; -import org.melonbrew.fe.command.CommandType; -import org.melonbrew.fe.command.SubCommand; -import org.melonbrew.fe.database.Account; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.command.CommandType; +import com.niccholaspage.Fe.command.SubCommand; +import com.niccholaspage.Fe.database.Account; public class SendCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/org/melonbrew/fe/command/commands/SetCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java similarity index 82% rename from src/main/java/org/melonbrew/fe/command/commands/SetCommand.java rename to src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java index 54294e3..b0d241e 100644 --- a/src/main/java/org/melonbrew/fe/command/commands/SetCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java @@ -1,12 +1,12 @@ -package org.melonbrew.fe.command.commands; +package com.niccholaspage.Fe.command.commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.Phrase; -import org.melonbrew.fe.command.CommandType; -import org.melonbrew.fe.command.SubCommand; -import org.melonbrew.fe.database.Account; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.command.CommandType; +import com.niccholaspage.Fe.command.SubCommand; +import com.niccholaspage.Fe.database.Account; public class SetCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/org/melonbrew/fe/command/commands/TopCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java similarity index 81% rename from src/main/java/org/melonbrew/fe/command/commands/TopCommand.java rename to src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java index 443acde..9d8a54c 100644 --- a/src/main/java/org/melonbrew/fe/command/commands/TopCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java @@ -1,12 +1,12 @@ -package org.melonbrew.fe.command.commands; +package com.niccholaspage.Fe.command.commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.Phrase; -import org.melonbrew.fe.command.CommandType; -import org.melonbrew.fe.command.SubCommand; -import org.melonbrew.fe.database.Account; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.command.CommandType; +import com.niccholaspage.Fe.command.SubCommand; +import com.niccholaspage.Fe.database.Account; import java.util.List; diff --git a/src/main/java/org/melonbrew/fe/database/Account.java b/src/main/java/com/niccholaspage/Fe/database/Account.java similarity index 96% rename from src/main/java/org/melonbrew/fe/database/Account.java rename to src/main/java/com/niccholaspage/Fe/database/Account.java index ab76e16..2d3f578 100644 --- a/src/main/java/org/melonbrew/fe/database/Account.java +++ b/src/main/java/com/niccholaspage/Fe/database/Account.java @@ -1,7 +1,7 @@ -package org.melonbrew.fe.database; +package com.niccholaspage.Fe.database; -import org.melonbrew.fe.API; -import org.melonbrew.fe.Fe; +import com.niccholaspage.Fe.API; +import com.niccholaspage.Fe.Fe; public class Account { diff --git a/src/main/java/org/melonbrew/fe/database/Database.java b/src/main/java/com/niccholaspage/Fe/database/Database.java similarity index 97% rename from src/main/java/org/melonbrew/fe/database/Database.java rename to src/main/java/com/niccholaspage/Fe/database/Database.java index 4198da5..7040657 100644 --- a/src/main/java/org/melonbrew/fe/database/Database.java +++ b/src/main/java/com/niccholaspage/Fe/database/Database.java @@ -1,10 +1,10 @@ -package org.melonbrew.fe.database; +package com.niccholaspage.Fe.database; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.Phrase; -import org.melonbrew.fe.UUIDFetcher; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.UUIDFetcher; import java.util.*; diff --git a/src/main/java/org/melonbrew/fe/database/databases/MongoDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/MongoDB.java similarity index 96% rename from src/main/java/org/melonbrew/fe/database/databases/MongoDB.java rename to src/main/java/com/niccholaspage/Fe/database/databases/MongoDB.java index 45c3ab6..3259f91 100644 --- a/src/main/java/org/melonbrew/fe/database/databases/MongoDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/MongoDB.java @@ -1,10 +1,10 @@ -package org.melonbrew.fe.database.databases; +package com.niccholaspage.Fe.database.databases; import com.mongodb.*; import org.bukkit.configuration.ConfigurationSection; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.database.Account; -import org.melonbrew.fe.database.Database; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.database.Account; +import com.niccholaspage.Fe.database.Database; import java.net.UnknownHostException; import java.util.ArrayList; diff --git a/src/main/java/org/melonbrew/fe/database/databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java similarity index 96% rename from src/main/java/org/melonbrew/fe/database/databases/MySQLDB.java rename to src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java index faeeb32..f35260e 100644 --- a/src/main/java/org/melonbrew/fe/database/databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java @@ -1,7 +1,7 @@ -package org.melonbrew.fe.database.databases; +package com.niccholaspage.Fe.database.databases; import org.bukkit.configuration.ConfigurationSection; -import org.melonbrew.fe.Fe; +import com.niccholaspage.Fe.Fe; import java.sql.Connection; import java.sql.DriverManager; diff --git a/src/main/java/org/melonbrew/fe/database/databases/SQLDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java similarity index 98% rename from src/main/java/org/melonbrew/fe/database/databases/SQLDB.java rename to src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java index 3a1afe5..2766372 100644 --- a/src/main/java/org/melonbrew/fe/database/databases/SQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java @@ -1,8 +1,8 @@ -package org.melonbrew.fe.database.databases; +package com.niccholaspage.Fe.database.databases; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.database.Account; -import org.melonbrew.fe.database.Database; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.database.Account; +import com.niccholaspage.Fe.database.Database; import java.sql.Connection; import java.sql.PreparedStatement; diff --git a/src/main/java/org/melonbrew/fe/database/databases/SQLiteDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java similarity index 90% rename from src/main/java/org/melonbrew/fe/database/databases/SQLiteDB.java rename to src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java index ce1c696..8528ca2 100644 --- a/src/main/java/org/melonbrew/fe/database/databases/SQLiteDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java @@ -1,7 +1,7 @@ -package org.melonbrew.fe.database.databases; +package com.niccholaspage.Fe.database.databases; import org.bukkit.configuration.ConfigurationSection; -import org.melonbrew.fe.Fe; +import com.niccholaspage.Fe.Fe; import java.io.File; import java.sql.Connection; diff --git a/src/main/java/org/melonbrew/fe/listeners/FePlayerListener.java b/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java similarity index 81% rename from src/main/java/org/melonbrew/fe/listeners/FePlayerListener.java rename to src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java index 231793c..285aabe 100644 --- a/src/main/java/org/melonbrew/fe/listeners/FePlayerListener.java +++ b/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java @@ -1,4 +1,4 @@ -package org.melonbrew.fe.listeners; +package com.niccholaspage.Fe.listeners; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -6,9 +6,9 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; -import org.melonbrew.fe.Fe; -import org.melonbrew.fe.database.Account; -import org.melonbrew.fe.database.Database; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.database.Account; +import com.niccholaspage.Fe.database.Database; public class FePlayerListener implements Listener { @@ -18,7 +18,7 @@ public FePlayerListener( Fe plugin ) { this.plugin = plugin; - plugin.getServer().getPluginManager().registerEvents( this, plugin ); + plugin.getServer().getPluginManager().registerEvents( (Listener)this, plugin ); } @EventHandler( priority = EventPriority.LOWEST ) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 66ba31f..efd4bd7 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,10 +1,7 @@ -name: Fe - -main: org.melonbrew.fe.Fe - +name: ${project.name} +main: ${project.groupId}.${project.artifactId}.${project.name} version: ${project.version} - -load: startup +load: startup commands: fe: From ecc2655ded580acd3da4c6e9024bcd51661ffbbd Mon Sep 17 00:00:00 2001 From: Stanislav Usenkov Date: Fri, 27 Mar 2015 16:21:05 +0600 Subject: [PATCH 08/40] Completely removed MongoDB support Version now is 0.8.4 --- pom.xml | 8 +- src/main/java/com/niccholaspage/Fe/Fe.java | 2 - .../com/niccholaspage/Fe/UUIDFetcher.java | 2 +- .../Fe/database/databases/MongoDB.java | 202 ------------------ src/main/resources/config.yml | 9 +- 5 files changed, 4 insertions(+), 219 deletions(-) delete mode 100644 src/main/java/com/niccholaspage/Fe/database/databases/MongoDB.java diff --git a/pom.xml b/pom.xml index 39635ce..8c94fcb 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.niccholaspage Fe - 0.8.3 + 0.8.4 Fe @@ -44,11 +44,6 @@ R8-SNAPSHOT compile - - org.mongodb - mongo-java-driver - 2.13.0 - @@ -83,7 +78,6 @@ org.mcstats.bukkit:metrics - org.mongodb:mongo-java-driver diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index 98411f5..d1d1ccc 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -13,7 +13,6 @@ import org.mcstats.Metrics.Plotter; import com.niccholaspage.Fe.database.Account; import com.niccholaspage.Fe.database.Database; -import com.niccholaspage.Fe.database.databases.MongoDB; import com.niccholaspage.Fe.database.databases.MySQLDB; import com.niccholaspage.Fe.database.databases.SQLiteDB; import com.niccholaspage.Fe.listeners.FePlayerListener; @@ -40,7 +39,6 @@ public void onEnable() { databases.add(new MySQLDB(this)); databases.add(new SQLiteDB(this)); - databases.add(new MongoDB(this)); for (Database db : databases) { String name = db.getConfigName(); diff --git a/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java b/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java index 4d8a168..414b6e4 100644 --- a/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java +++ b/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java @@ -94,4 +94,4 @@ public static UUID fromBytes(byte[] array) { public static UUID getUUIDOf(String name) throws Exception { return new UUIDFetcher(Arrays.asList(name)).call().get(name); } -} \ No newline at end of file +} diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/MongoDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/MongoDB.java deleted file mode 100644 index 3259f91..0000000 --- a/src/main/java/com/niccholaspage/Fe/database/databases/MongoDB.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.niccholaspage.Fe.database.databases; - -import com.mongodb.*; -import org.bukkit.configuration.ConfigurationSection; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.database.Account; -import com.niccholaspage.Fe.database.Database; - -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public class MongoDB extends Database -{ - private static final String ACCOUNTS_COLLECTION = "accounts"; - private static final String VERSION_COLLECTION = "version"; - private final Fe plugin; - private MongoClient mongoClient; - - public MongoDB(Fe plugin) - { - super(plugin); - - this.plugin = plugin; - } - - @Override - public boolean init() - { - super.init(); - - try - { - mongoClient = new MongoClient(getConfigSection().getString("host"), getConfigSection().getInt("port")); - } catch(UnknownHostException e) - { - return false; - } - - if(getDatabase() == null || ! getDatabase().isAuthenticated()) - return false; - - if(getVersion() == 0) - { - if( ! convertToUUID()) - return false; - - setVersion(1); - } - - return true; - } - - private DB getDatabase() - { - DB database = mongoClient.getDB(getConfigSection().getString("database")); - - database.authenticate(getConfigSection().getString("user"), getConfigSection().getString("password").toCharArray()); - - return database; - } - - @SuppressWarnings("deprecation") - @Override - public HashMap loadAccountData(String name, String uuid) - { - DBObject userObject = getDatabase().getCollection(ACCOUNTS_COLLECTION).findOne(new BasicDBObject(uuid != null ? "uuid" : "name", uuid != null ? uuid : name)); - - if(userObject == null) - return null; - - HashMap data = new HashMap<>(); - - data.put("money", ((BasicDBObject)userObject).getString("money")); - data.put("name", ((BasicDBObject)userObject).getString("name")); - - return data; - } - - @Override - public void removeAccount(String name, String uuid) - { - super.removeAccount(name, uuid); - - DBCollection collection = getDatabase().getCollection(ACCOUNTS_COLLECTION); - - DBObject oldUserObject = collection.findOne(new BasicDBObject(uuid != null ? "uuid" : "name", uuid != null ? uuid : name)); - - if(oldUserObject != null) - collection.remove(oldUserObject); - } - - @SuppressWarnings("deprecation") - @Override - public void saveAccount(String name, String uuid, double money) - { - DBCollection collection = getDatabase().getCollection(ACCOUNTS_COLLECTION); - - DBObject query = collection.findOne(new BasicDBObject(uuid != null ? "uuid" : "name", uuid != null ? uuid : name)); - - if(query != null) - collection.remove(query); - - collection.insert(new BasicDBObject("name", name).append("uuid", uuid).append("money", money)); - } - - @Override - public void getConfigDefaults(ConfigurationSection section) - { - section.addDefault("host", "localhost"); - - section.addDefault("port", 27017); - - section.addDefault("user", "root"); - - section.addDefault("password", "minecraft"); - - section.addDefault("database", "Fe"); - } - - @Override - public String getName() - { - return "Mongo"; - } - - @Override - public int getVersion() - { - DBCollection collection = getDatabase().getCollection(VERSION_COLLECTION); - - BasicDBObject query = (BasicDBObject)collection.findOne(); - - return query.getInt("version", 0); - } - - @Override - public void setVersion(int version) - { - DBCollection collection = getDatabase().getCollection(VERSION_COLLECTION); - - collection.findAndRemove(new BasicDBObject()); - } - - @Override - public List loadTopAccounts(int size) - { - DBCursor cursor = getDatabase().getCollection(ACCOUNTS_COLLECTION).find().sort(new BasicDBObject("money", -1)).limit(size); - - List topAccounts = new ArrayList<>(); - - for(DBObject aCursor : cursor) - { - BasicDBObject topAccountObject = (BasicDBObject)aCursor; - - Account account = new Account(plugin, topAccountObject.getString("name"), topAccountObject.getString("uuid"), this); - - account.setMoney(topAccountObject.getDouble("money")); - - topAccounts.add(account); - } - - return topAccounts; - } - - @Override - public List getAccounts() - { - DBCursor cursor = getDatabase().getCollection(ACCOUNTS_COLLECTION).find().sort(new BasicDBObject("money", -1)); - - List accounts = new ArrayList<>(); - - for(DBObject aCursor : cursor) - { - BasicDBObject accountObject = (BasicDBObject)aCursor; - - Account account = new Account(plugin, accountObject.getString("name"), accountObject.getString("uuid"), this); - - account.setMoney(accountObject.getDouble("money")); - - accounts.add(account); - } - - return accounts; - } - - @Override - public void clean() - { - DBCursor cursor = getDatabase().getCollection(ACCOUNTS_COLLECTION).find((new BasicDBObject("money", plugin.getAPI().getDefaultHoldings()))); - - for(DBObject aCursor : cursor) - getDatabase().getCollection(ACCOUNTS_COLLECTION).remove(aCursor); - } - - @Override - public void removeAllAccounts() - { - getDatabase().getCollection(VERSION_COLLECTION).findAndRemove(new BasicDBObject()); - } -} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 689ff7a..a16b5d5 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,10 +1,7 @@ holdings: 10.00 - maxholdings: -1 - prefix: Fe - -topsize: 5 +topsize: 10 currency: negative: false @@ -18,7 +15,5 @@ currency: prefix: "" type: sqlite - autoclean: true - -cacheaccounts: true \ No newline at end of file +cacheaccounts: true From d015efe40758b52c09e8e5af405a88c8a5cf3fb3 Mon Sep 17 00:00:00 2001 From: Stanislav Usenkov Date: Fri, 27 Mar 2015 17:42:38 +0600 Subject: [PATCH 09/40] Reformat the most part of code --- src/main/java/com/niccholaspage/Fe/API.java | 290 ++++----- src/main/java/com/niccholaspage/Fe/Fe.java | 520 +++++++-------- .../java/com/niccholaspage/Fe/FeCommand.java | 291 ++++----- .../java/com/niccholaspage/Fe/Phrase.java | 237 ++++--- .../com/niccholaspage/Fe/UUIDFetcher.java | 164 ++--- .../com/niccholaspage/Fe/VaultHandler.java | 599 +++++++++--------- .../niccholaspage/Fe/command/CommandType.java | 3 +- .../niccholaspage/Fe/command/SubCommand.java | 88 ++- .../niccholaspage/Fe/database/Account.java | 242 +++---- .../niccholaspage/Fe/database/Database.java | 449 +++++-------- .../Fe/database/databases/MySQLDB.java | 125 ++-- .../Fe/database/databases/SQLDB.java | 172 +---- .../Fe/database/databases/SQLiteDB.java | 61 +- .../Fe/listeners/FePlayerListener.java | 56 +- src/main/resources/config.yml | 1 - 15 files changed, 1410 insertions(+), 1888 deletions(-) diff --git a/src/main/java/com/niccholaspage/Fe/API.java b/src/main/java/com/niccholaspage/Fe/API.java index 7701763..e2138ed 100644 --- a/src/main/java/com/niccholaspage/Fe/API.java +++ b/src/main/java/com/niccholaspage/Fe/API.java @@ -2,163 +2,145 @@ import org.bukkit.ChatColor; import com.niccholaspage.Fe.database.Account; - import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.List; import java.util.Locale; -public class API { - private final Fe plugin; - - public API(Fe plugin) { - this.plugin = plugin; - } - - public List getTopAccounts() { - return plugin.getFeDatabase().getTopAccounts(plugin.getConfig().getInt("topsize")); - } - - public List getTopAccounts(int size) { - return plugin.getFeDatabase().getTopAccounts(size); - } - - public List getAccounts() { - return plugin.getFeDatabase().getAccounts(); - } - - public double getDefaultHoldings() { - return plugin.getConfig().getDouble("holdings"); - } - - public double getMaxHoldings() { - return plugin.getConfig().getDouble("maxholdings"); - } - - public String getCurrencyPrefix() { - return plugin.getConfig().getString("currency.prefix"); - } - - public boolean isAutoClean() - { - return plugin.getConfig().getBoolean( "autoclean" ); - } - - public boolean isCurrencyNegative() { - return plugin.getConfig().getBoolean("currency.negative"); - } - - public String getCurrencyMajorSingle() { - return plugin.getConfig().getString("currency.major.single"); - } - - public String getCurrencyMajorMultiple() { - return plugin.getConfig().getString("currency.major.multiple"); - } - - public boolean isMinorCurrencyEnabled() { - return plugin.getConfig().getBoolean("currency.minor.enabled"); - } - - public String getCurrencyMinorSingle() { - return plugin.getConfig().getString("currency.minor.single"); - } - - public String getCurrencyMinorMultiple() { - return plugin.getConfig().getString("currency.minor.multiple"); - } - - public boolean getCacheAccounts() { -// return plugin.getConfig().getBoolean("cacheaccounts"); - return false; - } - - public Account updateAccount( String name, String uuid ) - { - return plugin.getFeDatabase().updateAccount( name, uuid ); - } - - @Deprecated - public Account createAccount( String name, String uuid ) - { - return updateAccount( name, uuid ); - } - - public void removeAccount(String name, String uuid) { - plugin.getFeDatabase().removeAccount(name, uuid); - } - - public Account getAccount(String name, String uuid) { - return plugin.getFeDatabase().getAccount(name, uuid); - } - - public boolean accountExists(String name, String uuid) { - return plugin.getFeDatabase().accountExists(name, uuid); - } - - public String formatNoColor(double amount) { - return ChatColor.stripColor(format(amount)); - } - - private String formatValue(double value) { - boolean isWholeNumber = value == Math.round(value); - - DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols(Locale.ENGLISH); - - formatSymbols.setDecimalSeparator('.'); - - String pattern = isWholeNumber ? "###,###.###" : "###,##0.00"; - - DecimalFormat df = new DecimalFormat(pattern, formatSymbols); - - return df.format(value); - } - - public String format(double amount) { - amount = getMoneyRounded(amount); - - String suffix = " "; - - if (isMinorCurrencyEnabled() && amount > 0.00 && amount < 1.0) { - if (amount == 0.01) { - suffix += getCurrencyMinorSingle(); - } else if (amount < 1.0) { - suffix += getCurrencyMinorMultiple(); - } - - amount *= 100; - } else if (amount == 1.0) { - suffix += getCurrencyMajorSingle(); - } else { - suffix += getCurrencyMajorMultiple(); - } - - if (suffix.equalsIgnoreCase(" ")) { - suffix = ""; - } - - return Phrase.SECONDARY_COLOR.parse() + getCurrencyPrefix() + Phrase.PRIMARY_COLOR.parse() + formatValue(amount) + Phrase.SECONDARY_COLOR.parse() + suffix; - } - - public double getMoneyRounded(double amount) { - DecimalFormat twoDForm = new DecimalFormat("#.##"); - - String formattedAmount = twoDForm.format(amount); - - formattedAmount = formattedAmount.replace(",", "."); - - return Double.valueOf(formattedAmount); - } - - public String formatNoColor(Account account) { - return ChatColor.stripColor(format(account)); - } - - public String format(Account account) { - return format(account.getMoney()); - } - - public void clean() { - plugin.getFeDatabase().clean(); - } +public class API +{ + private final Fe plugin; + public API(Fe plugin) + { + this.plugin = plugin; + } + public List getTopAccounts() + { + return plugin.getFeDatabase().getTopAccounts(plugin.getConfig().getInt("topsize")); + } + public List getTopAccounts(int size) + { + return plugin.getFeDatabase().getTopAccounts(size); + } + public List getAccounts() + { + return plugin.getFeDatabase().getAccounts(); + } + public double getDefaultHoldings() + { + return plugin.getConfig().getDouble("holdings"); + } + public double getMaxHoldings() + { + return plugin.getConfig().getDouble("maxholdings"); + } + public String getCurrencyPrefix() + { + return plugin.getConfig().getString("currency.prefix"); + } + public boolean isAutoClean() + { + return plugin.getConfig().getBoolean("autoclean"); + } + public boolean isCurrencyNegative() + { + return plugin.getConfig().getBoolean("currency.negative"); + } + public String getCurrencyMajorSingle() + { + return plugin.getConfig().getString("currency.major.single"); + } + public String getCurrencyMajorMultiple() + { + return plugin.getConfig().getString("currency.major.multiple"); + } + public boolean isMinorCurrencyEnabled() + { + return plugin.getConfig().getBoolean("currency.minor.enabled"); + } + public String getCurrencyMinorSingle() + { + return plugin.getConfig().getString("currency.minor.single"); + } + public String getCurrencyMinorMultiple() + { + return plugin.getConfig().getString("currency.minor.multiple"); + } + public boolean getCacheAccounts() + { + return false; + } + @Deprecated + public Account createAccount(String name, String uuid) + { + return updateAccount(name, uuid); + } + public Account updateAccount(String name, String uuid) + { + return plugin.getFeDatabase().updateAccount(name, uuid); + } + public void removeAccount(String name, String uuid) + { + plugin.getFeDatabase().removeAccount(name, uuid); + } + public Account getAccount(String name, String uuid) + { + return plugin.getFeDatabase().getAccount(name, uuid); + } + public boolean accountExists(String name, String uuid) + { + return plugin.getFeDatabase().accountExists(name, uuid); + } + public String formatNoColor(double amount) + { + return ChatColor.stripColor(format(amount)); + } + private String formatValue(double value) + { + boolean isWholeNumber = value == Math.round(value); + DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols(Locale.ENGLISH); + formatSymbols.setDecimalSeparator('.'); + String pattern = isWholeNumber ? "###,###.###" : "###,##0.00"; + DecimalFormat df = new DecimalFormat(pattern, formatSymbols); + return df.format(value); + } + public String format(double amount) + { + amount = getMoneyRounded(amount); + String suffix = " "; + if(isMinorCurrencyEnabled() && amount > 0.00 && amount < 1.0) + { + if(amount == 0.01) + suffix += getCurrencyMinorSingle(); + else if(amount < 1.0) + suffix += getCurrencyMinorMultiple(); + amount *= 100; + } else + if(amount == 1.0) + suffix += getCurrencyMajorSingle(); + else + suffix += getCurrencyMajorMultiple(); + if(suffix.equalsIgnoreCase(" ")) + suffix = ""; + return Phrase.SECONDARY_COLOR.parse() + getCurrencyPrefix() + Phrase.PRIMARY_COLOR.parse() + formatValue(amount) + Phrase.SECONDARY_COLOR.parse() + suffix; + } + public double getMoneyRounded(double amount) + { + DecimalFormat twoDForm = new DecimalFormat("#.##"); + String formattedAmount = twoDForm.format(amount); + formattedAmount = formattedAmount.replace(",", "."); + return Double.valueOf(formattedAmount); + } + public String formatNoColor(Account account) + { + return ChatColor.stripColor(format(account)); + } + public String format(Account account) + { + return format(account.getMoney()); + } + public void clean() + { + plugin.getFeDatabase().clean(); + } } diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index d1d1ccc..959f204 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -16,303 +16,235 @@ import com.niccholaspage.Fe.database.databases.MySQLDB; import com.niccholaspage.Fe.database.databases.SQLiteDB; import com.niccholaspage.Fe.listeners.FePlayerListener; - import java.io.File; import java.io.IOException; import java.util.HashSet; import java.util.Set; -public class Fe extends JavaPlugin { - private final Set databases; - private API api; - private Database database; - - public Fe() { - databases = new HashSet<>(); - } - - @Override - public void onEnable() { - getDataFolder().mkdirs(); - - Phrase.init(this); - - databases.add(new MySQLDB(this)); - databases.add(new SQLiteDB(this)); - - for (Database db : databases) { - String name = db.getConfigName(); - - ConfigurationSection section = getConfig().getConfigurationSection(name); - - if (section == null) { - section = getConfig().createSection(name); - } - - db.getConfigDefaults(section); - - if (section.getKeys(false).isEmpty()) { - getConfig().set(name, null); - } - } - - getConfig().options().copyDefaults(true); - - getConfig().options().header("Fe Config - loyloy.io\n" + - "holdings - The amount of money that players will start out with\n" + - "prefix - The message prefix\n" + - "currency - The single and multiple names for the currency\n" + - "type - The type of database used (sqlite, mysql, or mongo)"); - - saveConfig(); - - api = new API(this); - - if (!setupDatabase()) { - return; - } - - getCommand("fe").setExecutor(new FeCommand(this)); - - PluginManager pm = getServer().getPluginManager(); - pm.registerEvents( new FePlayerListener( this ), this ); - - setupVault(); - - loadMetrics(); - - reloadConfig(); - - // Auto Clean On Startup - if( api.isAutoClean() ) - { - api.clean(); - log( Phrase.ACCOUNT_CLEANED ); - } - } - - public void log(String message) { - getLogger().info( message ); - } - - @Override - public void onDisable() { - getServer().getScheduler().cancelTasks(this); - - getFeDatabase().close(); - } - - public void log(Phrase phrase, String... args) { - log(phrase.parse(args)); - } - - public Database getFeDatabase() { - return database; - } - - public boolean addDatabase(Database database) { - return databases.add(database); - } - - public Set getDatabases() { - return new HashSet<>(databases); - } - - public API getAPI() { - return api; - } - - private boolean setupDatabase() { - String type = getConfig().getString("type"); - - database = null; - - for (Database db : databases) { - if (type.equalsIgnoreCase(db.getConfigName())) { - this.database = db; - - break; - } - } - - if (database == null) { - log(Phrase.DATABASE_TYPE_DOES_NOT_EXIST); - - return false; - } - - if (!database.init()) { - log(Phrase.DATABASE_FAILURE_DISABLE); - - setEnabled(false); - - return false; - } - - return true; - } - - private void setupPhrases() { - File phrasesFile = new File(getDataFolder(), "phrases.yml"); - - for (Phrase phrase : Phrase.values()) { - phrase.reset(); - } - - if (!phrasesFile.exists()) { - return; - } - - YamlConfiguration phrasesConfig = YamlConfiguration.loadConfiguration(phrasesFile); - - for (Phrase phrase : Phrase.values()) { - String phraseConfigName = phrase.getConfigName(); - - String phraseMessage = phrasesConfig.getString(phraseConfigName); - - if (phraseMessage == null) { - phraseMessage = phrase.parse(); - } - - phrase.setMessage(phraseMessage); - } - } - - @Override - public void reloadConfig() { - super.reloadConfig(); - - String oldCurrencySingle = getConfig().getString("currency.single"); - - String oldCurrencyMultiple = getConfig().getString("currency.multiple"); - - if (oldCurrencySingle != null) { - getConfig().set("currency.major.single", oldCurrencySingle); - - getConfig().set("currency.single", null); - } - - if (oldCurrencyMultiple != null) { - getConfig().set("currency.major.multiple", oldCurrencyMultiple); - - getConfig().set("currency.multiple", null); - } - - if( ! getConfig().isSet( "autoclean" ) ) - { - getConfig().set( "autoclean", true ); - } - - // Temporarily remove cache and updates. - if( getConfig().isSet( "cacheaccounts" ) ) - { - getConfig().set( "cacheaccounts", null ); - } - if( getConfig().getBoolean( "updatecheck" ) ) - { - getConfig().set( "updatecheck", null ); - } - - setupPhrases(); - - saveConfig(); - } - - @SuppressWarnings("deprecation") - public Account getShortenedAccount(String name) { - Account account = getAPI().getAccount(name, null); - - if (account == null) { - Player player = getServer().getPlayer(name); - - if (player != null) { - account = getAPI().getAccount(player.getName(), null); - } - } - - return account; - } - - public String getMessagePrefix() { - String third = Phrase.TERTIARY_COLOR.parse(); - - return third + "[" + Phrase.PRIMARY_COLOR.parse() + "$1" + third + "] " + Phrase.SECONDARY_COLOR.parse(); - } - - public String getEqualMessage(String inBetween, int length) { - return getEqualMessage(inBetween, length, length); - } - - public String getEqualMessage(String inBetween, int length, int length2) { - String equals = getEndEqualMessage(length); - - String end = getEndEqualMessage(length2); - - String third = Phrase.TERTIARY_COLOR.parse(); - - return equals + third + "[" + Phrase.PRIMARY_COLOR.parse() + inBetween + third + "]" + end; - } - - public String getEndEqualMessage(int length) { - String message = Phrase.SECONDARY_COLOR.parse() + ""; - - for (int i = 0; i < length; i++) { - message += "="; - } - - return message; - } - - private void loadMetrics() { - try { - Metrics metrics = new Metrics(this); - - Graph databaseGraph = metrics.createGraph("Database Engine"); - - databaseGraph.addPlotter(new Plotter(getFeDatabase().getName()) { - @Override - public int getValue() { - return 1; - } - }); - - Graph defaultHoldings = metrics.createGraph("Default Holdings"); - - defaultHoldings.addPlotter(new Plotter(getAPI().getDefaultHoldings() + "") { - @Override - public int getValue() { - return 1; - } - }); - - Graph maxHoldings = metrics.createGraph("Max Holdings"); - - String maxHolding = getAPI().getMaxHoldings() + ""; - - if (getAPI().getMaxHoldings() == -1) { - maxHolding = "Unlimited"; - } - - maxHoldings.addPlotter(new Plotter(maxHolding) { - @Override - public int getValue() { - return 1; - } - }); - - metrics.start(); - } catch (IOException e) { - - } - } - - private void setupVault() { - Plugin vault = getServer().getPluginManager().getPlugin("Vault"); - - if (vault == null) { - return; - } - - getServer().getServicesManager().register(Economy.class, new VaultHandler(this), this, ServicePriority.Highest); - } +public class Fe extends JavaPlugin +{ + private final Set databases; + private API api; + private Database database; + public Fe() + { + databases = new HashSet<>(); + } + @Override + public void onEnable() + { + getDataFolder().mkdirs(); + Phrase.init(this); + databases.add(new MySQLDB(this)); + databases.add(new SQLiteDB(this)); + for(Database db : databases) + { + String name = db.getConfigName(); + ConfigurationSection section = getConfig().getConfigurationSection(name); + if(section == null) + section = getConfig().createSection(name); + db.getConfigDefaults(section); + if(section.getKeys(false).isEmpty()) + getConfig().set(name, null); + } + getConfig().options().copyDefaults(true); + getConfig().options().header("Fe Config - loyloy.io\n" + + "holdings - The amount of money that players will start out with\n" + + "prefix - The message prefix\n" + + "currency - The single and multiple names for the currency\n" + + "type - The type of database used (sqlite, mysql, or mongo)"); + saveConfig(); + api = new API(this); + if( ! setupDatabase()) + return; + getCommand("fe").setExecutor(new FeCommand(this)); + PluginManager pm = getServer().getPluginManager(); + pm.registerEvents(new FePlayerListener(this), this); + setupVault(); + loadMetrics(); + reloadConfig(); + // Auto Clean On Startup + if(api.isAutoClean()) + { + api.clean(); + log(Phrase.ACCOUNT_CLEANED); + } + } + public void log(String message) + { + getLogger().info(message); + } + @Override + public void onDisable() + { + getServer().getScheduler().cancelTasks(this); + getFeDatabase().close(); + } + public void log(Phrase phrase, String... args) + { + log(phrase.parse(args)); + } + public Database getFeDatabase() + { + return database; + } + public boolean addDatabase(Database database) + { + return databases.add(database); + } + public Set getDatabases() + { + return new HashSet<>(databases); + } + public API getAPI() + { + return api; + } + private boolean setupDatabase() + { + String type = getConfig().getString("type"); + database = null; + for(Database db : databases) + if(type.equalsIgnoreCase(db.getConfigName())) + { + this.database = db; + break; + } + if(database == null) + { + log(Phrase.DATABASE_TYPE_DOES_NOT_EXIST); + return false; + } + if( ! database.init()) + { + log(Phrase.DATABASE_FAILURE_DISABLE); + setEnabled(false); + return false; + } + return true; + } + private void setupPhrases() + { + File phrasesFile = new File(getDataFolder(), "phrases.yml"); + for(Phrase phrase : Phrase.values()) + phrase.reset(); + if( ! phrasesFile.exists()) + return; + YamlConfiguration phrasesConfig = YamlConfiguration.loadConfiguration(phrasesFile); + for(Phrase phrase : Phrase.values()) + { + String phraseConfigName = phrase.getConfigName(); + String phraseMessage = phrasesConfig.getString(phraseConfigName); + if(phraseMessage == null) + phraseMessage = phrase.parse(); + phrase.setMessage(phraseMessage); + } + } + @Override + public void reloadConfig() + { + super.reloadConfig(); + String oldCurrencySingle = getConfig().getString("currency.single"); + String oldCurrencyMultiple = getConfig().getString("currency.multiple"); + if(oldCurrencySingle != null) + { + getConfig().set("currency.major.single", oldCurrencySingle); + getConfig().set("currency.single", null); + } + if(oldCurrencyMultiple != null) + { + getConfig().set("currency.major.multiple", oldCurrencyMultiple); + getConfig().set("currency.multiple", null); + } + if( ! getConfig().isSet("autoclean")) + getConfig().set("autoclean", true); + // Temporarily remove cache and updates. + if(getConfig().isSet("cacheaccounts")) + getConfig().set("cacheaccounts", null); + if(getConfig().getBoolean("updatecheck")) + getConfig().set("updatecheck", null); + setupPhrases(); + saveConfig(); + } + @SuppressWarnings("deprecation") + public Account getShortenedAccount(String name) + { + Account account = getAPI().getAccount(name, null); + if(account == null) + { + Player player = getServer().getPlayer(name); + if(player != null) + account = getAPI().getAccount(player.getName(), null); + } + return account; + } + public String getMessagePrefix() + { + String third = Phrase.TERTIARY_COLOR.parse(); + return third + "[" + Phrase.PRIMARY_COLOR.parse() + "$1" + third + "] " + Phrase.SECONDARY_COLOR.parse(); + } + public String getEqualMessage(String inBetween, int length) + { + return getEqualMessage(inBetween, length, length); + } + public String getEqualMessage(String inBetween, int length, int length2) + { + String equals = getEndEqualMessage(length); + String end = getEndEqualMessage(length2); + String third = Phrase.TERTIARY_COLOR.parse(); + return equals + third + "[" + Phrase.PRIMARY_COLOR.parse() + inBetween + third + "]" + end; + } + public String getEndEqualMessage(int length) + { + String message = Phrase.SECONDARY_COLOR.parse() + ""; + for(int i = 0; i < length; i ++) + message += "="; + return message; + } + private void loadMetrics() + { + try + { + Metrics metrics = new Metrics(this); + Graph databaseGraph = metrics.createGraph("Database Engine"); + databaseGraph.addPlotter(new Plotter(getFeDatabase().getName()) + { + @Override + public int getValue() + { + return 1; + } + }); + Graph defaultHoldings = metrics.createGraph("Default Holdings"); + defaultHoldings.addPlotter(new Plotter(getAPI().getDefaultHoldings() + "") + { + @Override + public int getValue() + { + return 1; + } + }); + Graph maxHoldings = metrics.createGraph("Max Holdings"); + String maxHolding = getAPI().getMaxHoldings() + ""; + if(getAPI().getMaxHoldings() == -1) + maxHolding = "Unlimited"; + maxHoldings.addPlotter(new Plotter(maxHolding) + { + @Override + public int getValue() + { + return 1; + } + }); + metrics.start(); + } catch(IOException e) { + } + } + private void setupVault() + { + Plugin vault = getServer().getPluginManager().getPlugin("Vault"); + if(vault == null) + return; + getServer().getServicesManager().register(Economy.class, new VaultHandler(this), this, ServicePriority.Highest); + } } diff --git a/src/main/java/com/niccholaspage/Fe/FeCommand.java b/src/main/java/com/niccholaspage/Fe/FeCommand.java index 87a849f..a8ceef3 100644 --- a/src/main/java/com/niccholaspage/Fe/FeCommand.java +++ b/src/main/java/com/niccholaspage/Fe/FeCommand.java @@ -7,173 +7,132 @@ import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.command.commands.*; - import java.util.ArrayList; import java.util.List; -public class FeCommand implements CommandExecutor { - private final List commands; - - public FeCommand(Fe plugin) { - commands = new ArrayList<>(); - - commands.add(new BalanceCommand(plugin)); - commands.add(new SendCommand(plugin)); - commands.add(new TopCommand(plugin)); - commands.add(new HelpCommand(plugin, this)); - commands.add(new CreateCommand(plugin)); - commands.add(new RemoveCommand(plugin)); - commands.add(new SetCommand(plugin)); - commands.add(new GrantCommand(plugin)); - commands.add(new DeductCommand(plugin)); - commands.add(new CleanCommand(plugin)); - commands.add(new ReloadCommand(plugin)); - } - - public List getCommands() { - return commands; - } - - private SubCommand getCommand(String name) { - for (SubCommand command : commands) { - String[] aliases = command.getName().split(","); - - for (String alias : aliases) { - if (alias.equalsIgnoreCase(name)) { - return command; - } - } - } - - return null; - } - - private String[] merge(String[]... arrays) { - int arraySize = 0; - - for (String[] array : arrays) { - arraySize += array.length; - } - - String[] result = new String[arraySize]; - - int j = 0; - - for (String[] array : arrays) { - for (String string : array) { - result[j++] = string; - } - } - - return result; - } - - private void sendDefaultCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - String command = "balance"; - - if (!(sender instanceof Player) && args.length < 1) { - command = "help"; - } - - onCommand(sender, cmd, commandLabel, merge(new String[]{command}, args)); - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - if (args.length < 1) { - sendDefaultCommand(sender, cmd, commandLabel, args); - - return true; - } - - SubCommand command = getCommand(args[0]); - - if (command == null) { - sendDefaultCommand(sender, cmd, commandLabel, args); - - return true; - } - - boolean console = !(sender instanceof Player); - - if (console && args.length < 2 && command.getCommandType() == CommandType.CONSOLE_WITH_ARGUMENTS) { - Phrase.COMMAND_NEEDS_ARGUMENTS.sendWithPrefix(sender); - - return true; - } - - if (console && command.getCommandType() == CommandType.PLAYER) { - Phrase.COMMAND_NOT_CONSOLE.sendWithPrefix(sender, commandLabel); - - return true; - } - - if (!sender.hasPermission(command.getPermission())) { - Phrase.NO_PERMISSION_FOR_COMMAND.sendWithPrefix(sender); - - return true; - } - - String[] realArgs = new String[args.length - 1]; - - for (int i = 1; i < args.length; i++) { - realArgs[i - 1] = args[i]; - } - - if (!command.onCommand(sender, cmd, commandLabel, realArgs)) { - Phrase.TRY_COMMAND.sendWithPrefix(sender, parse(commandLabel, command)); - } - - return true; - } - - public String parse(String label, SubCommand command) { - String commandColor = Phrase.PRIMARY_COLOR.parse(); - - String operatorsColor = Phrase.PRIMARY_COLOR.parse(); - - String argumentColor = Phrase.ARGUMENT_COLOR.parse(); - - StringBuilder builder = new StringBuilder(commandColor).append("/").append(label); - - if (!command.getFirstName().equalsIgnoreCase("balance")) { - builder.append(" ").append(command.getFirstName()).append(" "); - } - - String[] split = command.getUsage().split(" "); - - if (split[0].equalsIgnoreCase(command.getFirstName())) { - for (int i = 1; i < split.length; i++) { - builder.append(parseArg(split[i], operatorsColor, argumentColor)).append(" "); - } - - builder.deleteCharAt(builder.length() - 1); - } else { - builder.append(" ").append(parseArg(split[0], operatorsColor, argumentColor)).append(" "); - - builder.deleteCharAt(builder.length() - 1); - } - - return builder.toString(); - } - - private String parseArg(String argument, String operatorsColor, String argumentColor) { - String operator = argument.substring(0, 1); - - argument = argument.substring(1, argument.length()); - - String reverse; - - if (operator.equals("[")) { - reverse = "]"; - } else { - reverse = ")"; - } - - argument = argument.substring(0, argument.length() - 1); - - argument = operatorsColor + operator + argumentColor + argument + operatorsColor + reverse; - - return argument; - } +public class FeCommand implements CommandExecutor +{ + private final List commands; + public FeCommand(Fe plugin) + { + commands = new ArrayList<>(); + commands.add(new BalanceCommand(plugin)); + commands.add(new SendCommand(plugin)); + commands.add(new TopCommand(plugin)); + commands.add(new HelpCommand(plugin, this)); + commands.add(new CreateCommand(plugin)); + commands.add(new RemoveCommand(plugin)); + commands.add(new SetCommand(plugin)); + commands.add(new GrantCommand(plugin)); + commands.add(new DeductCommand(plugin)); + commands.add(new CleanCommand(plugin)); + commands.add(new ReloadCommand(plugin)); + } + public List getCommands() + { + return commands; + } + private SubCommand getCommand(String name) + { + for(SubCommand command : commands) + { + String[] aliases = command.getName().split(","); + for(String alias : aliases) + if(alias.equalsIgnoreCase(name)) + return command; + } + return null; + } + private String[] merge(String[]... arrays) + { + int arraySize = 0; + for(String[] array : arrays) + arraySize += array.length; + String[] result = new String[arraySize]; + int j = 0; + for(String[] array : arrays) + for(String string : array) + result[j ++] = string; + return result; + } + private void sendDefaultCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + String command = "balance"; + if( ! (sender instanceof Player) && args.length < 1) + command = "help"; + onCommand(sender, cmd, commandLabel, merge(new String[] + { + command + }, args)); + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + if(args.length < 1) + { + sendDefaultCommand(sender, cmd, commandLabel, args); + return true; + } + SubCommand command = getCommand(args[0]); + if(command == null) + { + sendDefaultCommand(sender, cmd, commandLabel, args); + return true; + } + boolean console = ! (sender instanceof Player); + if(console && args.length < 2 && command.getCommandType() == CommandType.CONSOLE_WITH_ARGUMENTS) + { + Phrase.COMMAND_NEEDS_ARGUMENTS.sendWithPrefix(sender); + return true; + } + if(console && command.getCommandType() == CommandType.PLAYER) + { + Phrase.COMMAND_NOT_CONSOLE.sendWithPrefix(sender, commandLabel); + return true; + } + if( ! sender.hasPermission(command.getPermission())) + { + Phrase.NO_PERMISSION_FOR_COMMAND.sendWithPrefix(sender); + return true; + } + String[] realArgs = new String[args.length - 1]; + for(int i = 1; i < args.length; i ++) + realArgs[i - 1] = args[i]; + if( ! command.onCommand(sender, cmd, commandLabel, realArgs)) + Phrase.TRY_COMMAND.sendWithPrefix(sender, parse(commandLabel, command)); + return true; + } + public String parse(String label, SubCommand command) + { + String commandColor = Phrase.PRIMARY_COLOR.parse(); + String operatorsColor = Phrase.PRIMARY_COLOR.parse(); + String argumentColor = Phrase.ARGUMENT_COLOR.parse(); + StringBuilder builder = new StringBuilder(commandColor).append("/").append(label); + if( ! command.getFirstName().equalsIgnoreCase("balance")) + builder.append(" ").append(command.getFirstName()).append(" "); + String[] split = command.getUsage().split(" "); + if(split[0].equalsIgnoreCase(command.getFirstName())) + { + for(int i = 1; i < split.length; i ++) + builder.append(parseArg(split[i], operatorsColor, argumentColor)).append(" "); + builder.deleteCharAt(builder.length() - 1); + } else { + builder.append(" ").append(parseArg(split[0], operatorsColor, argumentColor)).append(" "); + builder.deleteCharAt(builder.length() - 1); + } + return builder.toString(); + } + private String parseArg(String argument, String operatorsColor, String argumentColor) + { + String operator = argument.substring(0, 1); + argument = argument.substring(1, argument.length()); + String reverse; + if(operator.equals("[")) + reverse = "]"; + else + reverse = ")"; + argument = argument.substring(0, argument.length() - 1); + argument = operatorsColor + operator + argumentColor + argument + operatorsColor + reverse; + return argument; + } } diff --git a/src/main/java/com/niccholaspage/Fe/Phrase.java b/src/main/java/com/niccholaspage/Fe/Phrase.java index 643097e..8d6206e 100644 --- a/src/main/java/com/niccholaspage/Fe/Phrase.java +++ b/src/main/java/com/niccholaspage/Fe/Phrase.java @@ -3,127 +3,116 @@ import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; -public enum Phrase { - DATABASE_TYPE_DOES_NOT_EXIST("That database type doesn't exist."), - DATABASE_FAILURE_DISABLE("Database initialization has failed, disabling Fe."), - COMMAND_NEEDS_ARGUMENTS("That command needs arguments."), - COMMAND_NOT_CONSOLE("The command '$1' cannot be used in the console."), - NO_PERMISSION_FOR_COMMAND("Sorry, you do not have permission to use that command."), - ACCOUNT_HAS("$1 has $2"), - YOU_HAVE("You have $1"), - HELP("Fe Help"), - HELP_ARGUMENTS("$1 Required, $2 Optional"), - RICH("Rich List"), - STARTING_UUID_CONVERSION("Starting UUID conversion."), - UUID_CONVERSION_FAILED("UUID conversion failed, disabling Fe!"), - UUID_CONVERSION_SUCCEEDED("UUID conversion has succeeded!"), - CONFIG_RELOADED("The config has been reloaded."), - NOT_ENOUGH_MONEY("You don't have enough money."), - ACCOUNT_DOES_NOT_EXIST("Sorry, that account does not exist."), - YOUR_ACCOUNT_DOES_NOT_EXIST("You don't have an account."), - ACCOUNT_EXISTS("That account already exists."), - ACCOUNT_CREATED("An account for $1 has been created."), - ACCOUNT_REMOVED("An account for $1 has been removed."), - MONEY_RECEIVE("You've received $1 from $2."), - MONEY_SENT("You've sent $1 to $2"), - MAX_BALANCE_REACHED("$1 has reached the maximum balance."), - PLAYER_SET_MONEY("You've set $1's balance to $2."), - PLAYER_GRANT_MONEY("You've granted $1 to $2."), - PLAYER_GRANTED_MONEY("$2 granted you $1."), - PLAYER_DEDUCT_MONEY("You've deducted $1 from $2."), - PLAYER_DEDUCTED_MONEY("$2 deducted $1 from your account."), - ACCOUNT_CREATED_GRANT("Created an account for $1 and granted it $2"), - NO_ACCOUNTS_EXIST("No accounts exist."), - NAME_TOO_LONG("Sorry that name is too long."), - ACCOUNT_CLEANED("All accounts with the default balance have been removed."), - TRY_COMMAND("Try $1"), - PRIMARY_COLOR(ChatColor.GOLD.toString()), - SECONDARY_COLOR(ChatColor.GRAY.toString()), - TERTIARY_COLOR(ChatColor.DARK_GRAY.toString()), - ARGUMENT_COLOR(ChatColor.YELLOW.toString()), - COMMAND_BALANCE("Checks your balance", true), - COMMAND_SEND("Sends another player money", true), - COMMAND_TOP("Checks the top 5 richest players", true), - COMMAND_HELP("Gives you help", true), - COMMAND_CREATE("Creates an account", true), - COMMAND_REMOVE("Removes an account", true), - COMMAND_SET("Set a player's balance", true), - COMMAND_GRANT("Grants a player money", true), - COMMAND_DEDUCT("Deducts money from a player", true), - COMMAND_CLEAN("Cleans the accounts with default balance", true), - COMMAND_RELOAD("Reloads the config", true); - - private static Fe plugin; - - private final String defaultMessage; - - private final boolean categorized; - - private String message; - - private Phrase(String defaultMessage) { - this(defaultMessage, false); - } - - private Phrase(String defaultMessage, boolean categorized) { - this.defaultMessage = defaultMessage; - - this.categorized = categorized; - - message = defaultMessage + ""; - } - - public static void init(Fe instance) { - plugin = instance; - } - - private String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public void reset() { - message = defaultMessage + ""; - } - - public String getConfigName() { - String name = name(); - - if (categorized) { - name = name.replaceFirst("_", "."); - } - - return name.toLowerCase(); - } - - public String parse(String... params) { - String parsedMessage = getMessage(); - - if (params != null) { - for (int i = 0; i < params.length; i++) { - parsedMessage = parsedMessage.replace("$" + (i + 1), params[i]); - } - } - - return parsedMessage; - } - - public String parseWithoutSpaces(String... params) { - return parse(params).replace(" ", ""); - } - - private String parseWithPrefix(String... params) { - return plugin.getMessagePrefix().replace("$1", plugin.getConfig().getString("prefix")) + parse(params); - } - - public void send(CommandSender sender, String... params) { - sender.sendMessage(parse(params)); - } - - public void sendWithPrefix(CommandSender sender, String... params) { - sender.sendMessage(parseWithPrefix(params)); - } -} \ No newline at end of file +public enum Phrase +{ + DATABASE_TYPE_DOES_NOT_EXIST("That database type doesn't exist."), + DATABASE_FAILURE_DISABLE("Database initialization has failed, disabling Fe."), + COMMAND_NEEDS_ARGUMENTS("That command needs arguments."), + COMMAND_NOT_CONSOLE("The command '$1' cannot be used in the console."), + NO_PERMISSION_FOR_COMMAND("Sorry, you do not have permission to use that command."), + ACCOUNT_HAS("$1 has $2"), + YOU_HAVE("You have $1"), + HELP("Fe Help"), + HELP_ARGUMENTS("$1 Required, $2 Optional"), + RICH("Rich List"), + STARTING_UUID_CONVERSION("Starting UUID conversion."), + UUID_CONVERSION_FAILED("UUID conversion failed, disabling Fe!"), + UUID_CONVERSION_SUCCEEDED("UUID conversion has succeeded!"), + CONFIG_RELOADED("The config has been reloaded."), + NOT_ENOUGH_MONEY("You don't have enough money."), + ACCOUNT_DOES_NOT_EXIST("Sorry, that account does not exist."), + YOUR_ACCOUNT_DOES_NOT_EXIST("You don't have an account."), + ACCOUNT_EXISTS("That account already exists."), + ACCOUNT_CREATED("An account for $1 has been created."), + ACCOUNT_REMOVED("An account for $1 has been removed."), + MONEY_RECEIVE("You've received $1 from $2."), + MONEY_SENT("You've sent $1 to $2"), + MAX_BALANCE_REACHED("$1 has reached the maximum balance."), + PLAYER_SET_MONEY("You've set $1's balance to $2."), + PLAYER_GRANT_MONEY("You've granted $1 to $2."), + PLAYER_GRANTED_MONEY("$2 granted you $1."), + PLAYER_DEDUCT_MONEY("You've deducted $1 from $2."), + PLAYER_DEDUCTED_MONEY("$2 deducted $1 from your account."), + ACCOUNT_CREATED_GRANT("Created an account for $1 and granted it $2"), + NO_ACCOUNTS_EXIST("No accounts exist."), + NAME_TOO_LONG("Sorry that name is too long."), + ACCOUNT_CLEANED("All accounts with the default balance have been removed."), + TRY_COMMAND("Try $1"), + PRIMARY_COLOR(ChatColor.GOLD.toString()), + SECONDARY_COLOR(ChatColor.GRAY.toString()), + TERTIARY_COLOR(ChatColor.DARK_GRAY.toString()), + ARGUMENT_COLOR(ChatColor.YELLOW.toString()), + COMMAND_BALANCE("Checks your balance", true), + COMMAND_SEND("Sends another player money", true), + COMMAND_TOP("Checks the top 5 richest players", true), + COMMAND_HELP("Gives you help", true), + COMMAND_CREATE("Creates an account", true), + COMMAND_REMOVE("Removes an account", true), + COMMAND_SET("Set a player's balance", true), + COMMAND_GRANT("Grants a player money", true), + COMMAND_DEDUCT("Deducts money from a player", true), + COMMAND_CLEAN("Cleans the accounts with default balance", true), + COMMAND_RELOAD("Reloads the config", true), + ; + private static Fe plugin; + private final String defaultMessage; + private final boolean categorized; + private String message; + private Phrase(String defaultMessage) + { + this(defaultMessage, false); + } + private Phrase(String defaultMessage, boolean categorized) + { + this.defaultMessage = defaultMessage; + this.categorized = categorized; + message = defaultMessage + ""; + } + public static void init(Fe instance) + { + plugin = instance; + } + private String getMessage() + { + return message; + } + public void setMessage(String message) + { + this.message = message; + } + public void reset() + { + message = defaultMessage + ""; + } + public String getConfigName() + { + String name = name(); + if(categorized) + name = name.replaceFirst("_", "."); + return name.toLowerCase(); + } + public String parse(String... params) + { + String parsedMessage = getMessage(); + if(params != null) + for(int i = 0; i < params.length; i ++) + parsedMessage = parsedMessage.replace("$" + (i + 1), params[i]); + return parsedMessage; + } + public String parseWithoutSpaces(String... params) + { + return parse(params).replace(" ", ""); + } + private String parseWithPrefix(String... params) + { + return plugin.getMessagePrefix().replace("$1", plugin.getConfig().getString("prefix")) + parse(params); + } + public void send(CommandSender sender, String... params) + { + sender.sendMessage(parse(params)); + } + public void sendWithPrefix(CommandSender sender, String... params) + { + sender.sendMessage(parseWithPrefix(params)); + } +} diff --git a/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java b/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java index 414b6e4..8b7f800 100644 --- a/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java +++ b/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java @@ -4,7 +4,6 @@ import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; - import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; @@ -13,85 +12,86 @@ import java.util.*; import java.util.concurrent.Callable; -public class UUIDFetcher implements Callable> { - private static final double PROFILES_PER_REQUEST = 100; - private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft"; - private final JSONParser jsonParser = new JSONParser(); - private final List names; - private final boolean rateLimiting; - - public UUIDFetcher(List names, boolean rateLimiting) { - this.names = ImmutableList.copyOf(names); - this.rateLimiting = rateLimiting; - } - - public UUIDFetcher(List names) { - this(names, true); - } - - @Override - public Map call() throws Exception { - Map uuidMap = new HashMap<>(); - int requests = (int) Math.ceil(names.size() / PROFILES_PER_REQUEST); - for (int i = 0; i < requests; i++) { - HttpURLConnection connection = createConnection(); - String body = JSONArray.toJSONString(names.subList(i * 100, Math.min((i + 1) * 100, names.size()))); - writeBody(connection, body); - JSONArray array = (JSONArray) jsonParser.parse(new InputStreamReader(connection.getInputStream())); - for (Object profile : array) { - JSONObject jsonProfile = (JSONObject) profile; - String id = (String) jsonProfile.get("id"); - String name = (String) jsonProfile.get("name"); - UUID uuid = UUIDFetcher.getUUID(id); - uuidMap.put(name, uuid); - } - if (rateLimiting && i != requests - 1) { - Thread.sleep(100L); - } - } - return uuidMap; - } - - private static void writeBody(HttpURLConnection connection, String body) throws Exception { - OutputStream stream = connection.getOutputStream(); - stream.write(body.getBytes()); - stream.flush(); - stream.close(); - } - - private static HttpURLConnection createConnection() throws Exception { - URL url = new URL(PROFILE_URL); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("POST"); - connection.setRequestProperty("Content-Type", "application/json"); - connection.setUseCaches(false); - connection.setDoInput(true); - connection.setDoOutput(true); - return connection; - } - - private static UUID getUUID(String id) { - return UUID.fromString(id.substring(0, 8) + "-" + id.substring(8, 12) + "-" + id.substring(12, 16) + "-" + id.substring(16, 20) + "-" + id.substring(20, 32)); - } - - public static byte[] toBytes(UUID uuid) { - ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16]); - byteBuffer.putLong(uuid.getMostSignificantBits()); - byteBuffer.putLong(uuid.getLeastSignificantBits()); - return byteBuffer.array(); - } - - public static UUID fromBytes(byte[] array) { - if (array.length != 16) { - throw new IllegalArgumentException("Illegal byte array length: " + array.length); - } - ByteBuffer byteBuffer = ByteBuffer.wrap(array); - long mostSignificant = byteBuffer.getLong(); - long leastSignificant = byteBuffer.getLong(); - return new UUID(mostSignificant, leastSignificant); - } - - public static UUID getUUIDOf(String name) throws Exception { - return new UUIDFetcher(Arrays.asList(name)).call().get(name); - } +public class UUIDFetcher implements Callable> +{ + private static final double PROFILES_PER_REQUEST = 100; + private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft"; + private final JSONParser jsonParser = new JSONParser(); + private final List names; + private final boolean rateLimiting; + public UUIDFetcher(List names, boolean rateLimiting) + { + this.names = ImmutableList.copyOf(names); + this.rateLimiting = rateLimiting; + } + public UUIDFetcher(List names) + { + this(names, true); + } + @Override + public Map call() throws Exception + { + Map uuidMap = new HashMap<>(); + int requests = (int)Math.ceil(names.size() / PROFILES_PER_REQUEST); + for(int i = 0; i < requests; i ++) + { + HttpURLConnection connection = createConnection(); + String body = JSONArray.toJSONString(names.subList(i * 100, Math.min((i + 1) * 100, names.size()))); + writeBody(connection, body); + JSONArray array = (JSONArray)jsonParser.parse(new InputStreamReader(connection.getInputStream())); + for(Object profile : array) + { + JSONObject jsonProfile = (JSONObject)profile; + String id = (String)jsonProfile.get("id"); + String name = (String)jsonProfile.get("name"); + UUID uuid = UUIDFetcher.getUUID(id); + uuidMap.put(name, uuid); + } + if(rateLimiting && i != requests - 1) + Thread.sleep(100L); + } + return uuidMap; + } + private static void writeBody(HttpURLConnection connection, String body) throws Exception + { + OutputStream stream = connection.getOutputStream(); + stream.write(body.getBytes()); + stream.flush(); + stream.close(); + } + private static HttpURLConnection createConnection() throws Exception + { + URL url = new URL(PROFILE_URL); + HttpURLConnection connection = (HttpURLConnection)url.openConnection(); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setUseCaches(false); + connection.setDoInput(true); + connection.setDoOutput(true); + return connection; + } + private static UUID getUUID(String id) + { + return UUID.fromString(id.substring(0, 8) + "-" + id.substring(8, 12) + "-" + id.substring(12, 16) + "-" + id.substring(16, 20) + "-" + id.substring(20, 32)); + } + public static byte[] toBytes(UUID uuid) + { + ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16]); + byteBuffer.putLong(uuid.getMostSignificantBits()); + byteBuffer.putLong(uuid.getLeastSignificantBits()); + return byteBuffer.array(); + } + public static UUID fromBytes(byte[] array) + { + if(array.length != 16) + throw new IllegalArgumentException("Illegal byte array length: " + array.length); + ByteBuffer byteBuffer = ByteBuffer.wrap(array); + long mostSignificant = byteBuffer.getLong(); + long leastSignificant = byteBuffer.getLong(); + return new UUID(mostSignificant, leastSignificant); + } + public static UUID getUUIDOf(String name) throws Exception + { + return new UUIDFetcher(Arrays.asList(name)).call().get(name); + } } diff --git a/src/main/java/com/niccholaspage/Fe/VaultHandler.java b/src/main/java/com/niccholaspage/Fe/VaultHandler.java index ac6d944..b3ff31c 100644 --- a/src/main/java/com/niccholaspage/Fe/VaultHandler.java +++ b/src/main/java/com/niccholaspage/Fe/VaultHandler.java @@ -12,317 +12,296 @@ import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.plugin.Plugin; import com.niccholaspage.Fe.database.Account; - import java.util.ArrayList; import java.util.List; -public class VaultHandler implements Economy { - private final String name = "Fe"; - - private Fe plugin; - - public VaultHandler(Fe plugin) { - this.plugin = plugin; - - Bukkit.getServer().getPluginManager().registerEvents(new EconomyServerListener(), plugin); - - plugin.log("Vault support enabled."); - } - - @Override - public boolean isEnabled() { - return plugin != null; - } - - @Override - public String getName() { - return name; - } - - @Override - public String format(double amount) { - return plugin.getAPI().formatNoColor(amount); - } - - @Override - public String currencyNameSingular() { - return plugin.getAPI().getCurrencyMajorSingle(); - } - - @Override - public String currencyNamePlural() { - return plugin.getAPI().getCurrencyMajorMultiple(); - } - - @Override - public double getBalance(String playerName) { - return getAccountBalance(playerName, null); - } - - @Override - public double getBalance(OfflinePlayer offlinePlayer) { - return getAccountBalance(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString()); - } - - private double getAccountBalance(String playerName, String uuid) { - Account account = plugin.getAPI().getAccount(playerName, uuid); - - if (account == null) { - return 0; - } - - return account.getMoney(); - } - - @Override - public EconomyResponse withdrawPlayer(String playerName, double amount) { - return withdraw(playerName, null, amount); - } - - @Override - public EconomyResponse withdrawPlayer(OfflinePlayer offlinePlayer, double amount) { - return withdraw(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString(), amount); - } - - private EconomyResponse withdraw(String playerName, String uuid, double amount) { - if (amount < 0) { - return new EconomyResponse(0, 0, ResponseType.FAILURE, "Cannot withdraw negative funds"); - } - - Account account = plugin.getAPI().getAccount(playerName, uuid); - - if (account == null) { - return new EconomyResponse(0, 0, ResponseType.FAILURE, "Account doesn't exist"); - } - - if (account.has(amount)) { - account.withdraw(amount); - - return new EconomyResponse(amount, account.getMoney(), ResponseType.SUCCESS, ""); - } else { - return new EconomyResponse(0, account.getMoney(), ResponseType.FAILURE, "Insufficient funds"); - } - } - - @Override - public EconomyResponse depositPlayer(String playerName, double amount) { - return deposit(playerName, null, amount); - } - - @Override - public EconomyResponse depositPlayer(OfflinePlayer offlinePlayer, double amount) { - return deposit(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString(), amount); - } - - private EconomyResponse deposit(String playerName, String uuid, double amount) { - if (amount < 0) { - return new EconomyResponse(0, 0, ResponseType.FAILURE, "Cannot deposit negative funds"); - } - - Account account = plugin.getAPI().getAccount(playerName, uuid); - - if (account == null) { - return new EconomyResponse(0, 0, ResponseType.FAILURE, "Account doesn't exist"); - } - - account.deposit(amount); - - return new EconomyResponse(amount, account.getMoney(), ResponseType.SUCCESS, ""); - } - - @Override - public boolean has(String playerName, double amount) { - return getBalance(playerName) >= amount; - } - - @Override - public boolean has(OfflinePlayer offlinePlayer, double amount) { - return getBalance(offlinePlayer) >= amount; - } - - @Override - public EconomyResponse createBank(String name, String player) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); - } - - @Override - public EconomyResponse createBank(String name, OfflinePlayer offlinePlayer) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); - } - - @Override - public EconomyResponse deleteBank(String name) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); - } - - @Override - public EconomyResponse bankHas(String name, double amount) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); - } - - @Override - public EconomyResponse bankWithdraw(String name, double amount) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); - } - - @Override - public EconomyResponse bankDeposit(String name, double amount) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); - } - - @Override - public EconomyResponse isBankOwner(String name, String playerName) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); - } - - @Override - public EconomyResponse isBankOwner(String name, OfflinePlayer offlinePlayer) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); - } - - @Override - public EconomyResponse isBankMember(String name, String playerName) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); - } - - @Override - public EconomyResponse isBankMember(String name, OfflinePlayer offlinePlayer) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); - } - - @Override - public EconomyResponse bankBalance(String name) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); - } - - @Override - public List getBanks() { - return new ArrayList<>(); - } - - @Override - public boolean hasBankSupport() { - return false; - } - - @Override - public boolean hasAccount(String playerName) { - return plugin.getAPI().accountExists(playerName, null); - } - - @Override - public boolean hasAccount(OfflinePlayer offlinePlayer) { - return plugin.getAPI().accountExists(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString()); - } - - @Override - public boolean createPlayerAccount(String playerName) { - return createAccount(playerName, null); - } - - @Override - public boolean createPlayerAccount(OfflinePlayer offlinePlayer) { - return createAccount(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString()); - } - - private boolean createAccount(String playerName, String uuid) { - if (hasAccount(playerName, uuid)) { - return false; - } - - plugin.getAPI().updateAccount( playerName, uuid ); - - return true; - } - - @Override - public int fractionalDigits() { - return -1; - } - - @Override - public boolean hasAccount(String playerName, String worldName) { - return hasAccount(playerName); - } - - @Override - public boolean hasAccount(OfflinePlayer offlinePlayer, String worldName) { - return hasAccount(offlinePlayer); - } - - @Override - public double getBalance(String playerName, String worldName) { - return getBalance(playerName); - } - - @Override - public double getBalance(OfflinePlayer offlinePlayer, String worldName) { - return getBalance(offlinePlayer); - } - - @Override - public boolean has(String playerName, String worldName, double amount) { - return has(playerName, amount); - } - - @Override - public boolean has(OfflinePlayer offlinePlayer, String worldName, double amount) { - return has(offlinePlayer, amount); - } - - @Override - public EconomyResponse withdrawPlayer(String playerName, String worldName, double amount) { - return withdrawPlayer(playerName, amount); - } - - @Override - public EconomyResponse withdrawPlayer(OfflinePlayer offlinePlayer, String worldName, double amount) { - return withdrawPlayer(offlinePlayer, amount); - } - - @Override - public EconomyResponse depositPlayer(String playerName, String worldName, double amount) { - return depositPlayer(playerName, amount); - } - - @Override - public EconomyResponse depositPlayer(OfflinePlayer offlinePlayer, String worldName, double amount) { - return depositPlayer(offlinePlayer, amount); - } - - @Override - public boolean createPlayerAccount(String playerName, String worldName) { - return createPlayerAccount(playerName); - } - - @Override - public boolean createPlayerAccount(OfflinePlayer offlinePlayer, String worldName) { - return createPlayerAccount(offlinePlayer); - } - - public class EconomyServerListener implements Listener { - @EventHandler(priority = EventPriority.MONITOR) - public void onPluginEnable(PluginEnableEvent event) { - if (plugin == null) { - Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("Fe"); - - if (plugin != null && plugin.isEnabled()) { - VaultHandler.this.plugin = (Fe) plugin; - - VaultHandler.this.plugin.log("Vault support enabled."); - } - } - } - - @EventHandler(priority = EventPriority.MONITOR) - public void onPluginDisable(PluginDisableEvent event) { - if (plugin != null) { - if (event.getPlugin().getDescription().getName().equals(name)) { - plugin = null; - - Bukkit.getLogger().info("[Fe] Vault support disabled."); - } - } - } - } +public class VaultHandler implements Economy +{ + private final String name = "Fe"; + private Fe plugin; + public VaultHandler(Fe plugin) + { + this.plugin = plugin; + Bukkit.getServer().getPluginManager().registerEvents(new EconomyServerListener(), plugin); + plugin.log("Vault support enabled."); + } + @Override + public boolean isEnabled() + { + return plugin != null; + } + @Override + public String getName() + { + return name; + } + @Override + public String format(double amount) + { + return plugin.getAPI().formatNoColor(amount); + } + @Override + public String currencyNameSingular() + { + return plugin.getAPI().getCurrencyMajorSingle(); + } + @Override + public String currencyNamePlural() + { + return plugin.getAPI().getCurrencyMajorMultiple(); + } + @Override + public double getBalance(String playerName) + { + return getAccountBalance(playerName, null); + } + @Override + public double getBalance(OfflinePlayer offlinePlayer) + { + return getAccountBalance(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString()); + } + private double getAccountBalance(String playerName, String uuid) + { + Account account = plugin.getAPI().getAccount(playerName, uuid); + if(account == null) + return 0; + return account.getMoney(); + } + @Override + public EconomyResponse withdrawPlayer(String playerName, double amount) + { + return withdraw(playerName, null, amount); + } + @Override + public EconomyResponse withdrawPlayer(OfflinePlayer offlinePlayer, double amount) + { + return withdraw(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString(), amount); + } + private EconomyResponse withdraw(String playerName, String uuid, double amount) + { + if(amount < 0) + return new EconomyResponse(0, 0, ResponseType.FAILURE, "Cannot withdraw negative funds"); + Account account = plugin.getAPI().getAccount(playerName, uuid); + if(account == null) + return new EconomyResponse(0, 0, ResponseType.FAILURE, "Account doesn't exist"); + if(account.has(amount)) + { + account.withdraw(amount); + return new EconomyResponse(amount, account.getMoney(), ResponseType.SUCCESS, ""); + } else + return new EconomyResponse(0, account.getMoney(), ResponseType.FAILURE, "Insufficient funds"); + } + @Override + public EconomyResponse depositPlayer(String playerName, double amount) + { + return deposit(playerName, null, amount); + } + @Override + public EconomyResponse depositPlayer(OfflinePlayer offlinePlayer, double amount) + { + return deposit(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString(), amount); + } + private EconomyResponse deposit(String playerName, String uuid, double amount) + { + if(amount < 0) + return new EconomyResponse(0, 0, ResponseType.FAILURE, "Cannot deposit negative funds"); + Account account = plugin.getAPI().getAccount(playerName, uuid); + if(account == null) + return new EconomyResponse(0, 0, ResponseType.FAILURE, "Account doesn't exist"); + account.deposit(amount); + return new EconomyResponse(amount, account.getMoney(), ResponseType.SUCCESS, ""); + } + @Override + public boolean has(String playerName, double amount) + { + return getBalance(playerName) >= amount; + } + @Override + public boolean has(OfflinePlayer offlinePlayer, double amount) + { + return getBalance(offlinePlayer) >= amount; + } + @Override + public EconomyResponse createBank(String name, String player) + { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + } + @Override + public EconomyResponse createBank(String name, OfflinePlayer offlinePlayer) + { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + } + @Override + public EconomyResponse deleteBank(String name) + { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + } + @Override + public EconomyResponse bankHas(String name, double amount) + { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + } + @Override + public EconomyResponse bankWithdraw(String name, double amount) + { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + } + @Override + public EconomyResponse bankDeposit(String name, double amount) + { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + } + @Override + public EconomyResponse isBankOwner(String name, String playerName) + { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + } + @Override + public EconomyResponse isBankOwner(String name, OfflinePlayer offlinePlayer) + { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + } + @Override + public EconomyResponse isBankMember(String name, String playerName) + { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + } + @Override + public EconomyResponse isBankMember(String name, OfflinePlayer offlinePlayer) + { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + } + @Override + public EconomyResponse bankBalance(String name) + { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + } + @Override + public List getBanks() + { + return new ArrayList<>(); + } + @Override + public boolean hasBankSupport() + { + return false; + } + @Override + public boolean hasAccount(String playerName) + { + return plugin.getAPI().accountExists(playerName, null); + } + @Override + public boolean hasAccount(OfflinePlayer offlinePlayer) + { + return plugin.getAPI().accountExists(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString()); + } + @Override + public boolean createPlayerAccount(String playerName) + { + return createAccount(playerName, null); + } + @Override + public boolean createPlayerAccount(OfflinePlayer offlinePlayer) + { + return createAccount(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString()); + } + private boolean createAccount(String playerName, String uuid) + { + if(hasAccount(playerName, uuid)) + return false; + plugin.getAPI().updateAccount(playerName, uuid); + return true; + } + @Override + public int fractionalDigits() + { + return -1; + } + @Override + public boolean hasAccount(String playerName, String worldName) + { + return hasAccount(playerName); + } + @Override + public boolean hasAccount(OfflinePlayer offlinePlayer, String worldName) + { + return hasAccount(offlinePlayer); + } + @Override + public double getBalance(String playerName, String worldName) + { + return getBalance(playerName); + } + @Override + public double getBalance(OfflinePlayer offlinePlayer, String worldName) + { + return getBalance(offlinePlayer); + } + @Override + public boolean has(String playerName, String worldName, double amount) + { + return has(playerName, amount); + } + @Override + public boolean has(OfflinePlayer offlinePlayer, String worldName, double amount) + { + return has(offlinePlayer, amount); + } + @Override + public EconomyResponse withdrawPlayer(String playerName, String worldName, double amount) + { + return withdrawPlayer(playerName, amount); + } + @Override + public EconomyResponse withdrawPlayer(OfflinePlayer offlinePlayer, String worldName, double amount) + { + return withdrawPlayer(offlinePlayer, amount); + } + @Override + public EconomyResponse depositPlayer(String playerName, String worldName, double amount) + { + return depositPlayer(playerName, amount); + } + @Override + public EconomyResponse depositPlayer(OfflinePlayer offlinePlayer, String worldName, double amount) + { + return depositPlayer(offlinePlayer, amount); + } + @Override + public boolean createPlayerAccount(String playerName, String worldName) + { + return createPlayerAccount(playerName); + } + @Override + public boolean createPlayerAccount(OfflinePlayer offlinePlayer, String worldName) + { + return createPlayerAccount(offlinePlayer); + } + public class EconomyServerListener implements Listener + { + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginEnable(PluginEnableEvent event) + { + if(plugin == null) + { + Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("Fe"); + if(plugin != null && plugin.isEnabled()) + { + VaultHandler.this.plugin = (Fe)plugin; + VaultHandler.this.plugin.log("Vault support enabled."); + } + } + } + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginDisable(PluginDisableEvent event) + { + if(plugin != null) + if(event.getPlugin().getDescription().getName().equals(name)) + { + plugin = null; + Bukkit.getLogger().info("[Fe] Vault support disabled."); + } + } + } } diff --git a/src/main/java/com/niccholaspage/Fe/command/CommandType.java b/src/main/java/com/niccholaspage/Fe/command/CommandType.java index e012cf8..1d2abe8 100644 --- a/src/main/java/com/niccholaspage/Fe/command/CommandType.java +++ b/src/main/java/com/niccholaspage/Fe/command/CommandType.java @@ -1,6 +1,7 @@ package com.niccholaspage.Fe.command; -public enum CommandType { +public enum CommandType +{ CONSOLE, PLAYER, CONSOLE_WITH_ARGUMENTS diff --git a/src/main/java/com/niccholaspage/Fe/command/SubCommand.java b/src/main/java/com/niccholaspage/Fe/command/SubCommand.java index c2ae8e5..327e50a 100644 --- a/src/main/java/com/niccholaspage/Fe/command/SubCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/SubCommand.java @@ -4,52 +4,44 @@ import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Phrase; -public abstract class SubCommand { - private final String name; - - private final String permission; - - private final String usage; - - private final Phrase description; - - private final CommandType commandType; - - public SubCommand(String name, String permission, String usage, Phrase description, CommandType commandType) { - this.name = name; - - this.permission = permission; - - this.usage = usage; - - this.description = description; - - this.commandType = commandType; - } - - public String getFirstName() { - return name.split(",")[0]; - } - - public String getName() { - return name; - } - - public String getPermission() { - return permission; - } - - public String getUsage() { - return usage; - } - - public Phrase getDescription() { - return description; - } - - public CommandType getCommandType() { - return commandType; - } - - public abstract boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args); +public abstract class SubCommand +{ + private final String name; + private final String permission; + private final String usage; + private final Phrase description; + private final CommandType commandType; + public abstract boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args); + public SubCommand(String name, String permission, String usage, Phrase description, CommandType commandType) + { + this.name = name; + this.permission = permission; + this.usage = usage; + this.description = description; + this.commandType = commandType; + } + public String getFirstName() + { + return name.split(",")[0]; + } + public String getName() + { + return name; + } + public String getPermission() + { + return permission; + } + public String getUsage() + { + return usage; + } + public Phrase getDescription() + { + return description; + } + public CommandType getCommandType() + { + return commandType; + } } diff --git a/src/main/java/com/niccholaspage/Fe/database/Account.java b/src/main/java/com/niccholaspage/Fe/database/Account.java index 2d3f578..45ce783 100644 --- a/src/main/java/com/niccholaspage/Fe/database/Account.java +++ b/src/main/java/com/niccholaspage/Fe/database/Account.java @@ -3,151 +3,101 @@ import com.niccholaspage.Fe.API; import com.niccholaspage.Fe.Fe; -public class Account +public class Account implements Comparable { - private final Fe plugin; - - private String name; - - private final String uuid; - - private final API api; - - private final Database database; - - private Double money; - - public Account( Fe plugin, String name, String uuid, Database database ) - { - this.plugin = plugin; - - this.name = name; - - this.uuid = uuid; - - this.api = plugin.getAPI(); - - this.database = database; - - this.money = null; - } - - public String getName() - { - return name; - } - - public void setName( String name ) - { - this.name = name; - - if( money == null ) - { - this.money = getMoney(); - } - - database.saveAccount( name, uuid, money ); - } - - public String getUUID() - { - return uuid; - } - - public Double getMoney() - { - if( money != null ) - { - return money; - } - - String money_string = database.loadAccountData( name, uuid ).get( "money" ); - Double money; - - try - { - money = Double.parseDouble( money_string ); - } - catch( Exception e ) - { - return 0D; - } - - if( database.cacheAccounts() ) - { - this.money = money; - } - - return money; - } - - public void setMoney( double money ) - { - Double currentMoney = getMoney(); - - if( currentMoney != null && currentMoney == money ) - { - return; - } - - if( money < 0 && !api.isCurrencyNegative() ) - { - money = 0; - } - - currentMoney = api.getMoneyRounded( money ); - - if( api.getMaxHoldings() > 0 && currentMoney > api.getMaxHoldings() ) - { - currentMoney = api.getMoneyRounded( api.getMaxHoldings() ); - } - - if( !database.cacheAccounts() || plugin.getServer().getPlayerExact( getName() ) == null ) - { - save( currentMoney ); - } - else - { - this.money = currentMoney; - } - } - - public void withdraw( double amount ) - { - setMoney( getMoney() - amount ); - } - - public void deposit( double amount ) - { - setMoney( getMoney() + amount ); - } - - public boolean canReceive( double amount ) - { - return api.getMaxHoldings() == -1 || amount + getMoney() < api.getMaxHoldings(); - - } - - public boolean has( double amount ) - { - return getMoney() >= amount; - } - - public void save( double money ) - { - database.saveAccount( name, uuid, money ); - } - - @Override - public boolean equals( Object object ) - { - if( !( object instanceof Account ) ) - { - return false; - } - - Account account = ( Account ) object; - - return account.getName().equals( getName() ); - } + private final Fe plugin; + private String name; + private final String uuid; + private final API api; + private final Database database; + private Double money; + public Account(Fe plugin, String name, String uuid, Database database) + { + this.plugin = plugin; + this.name = name; + this.uuid = uuid; + this.api = plugin.getAPI(); + this.database = database; + this.money = null; + } + public String getName() + { + return name; + } + public void setName(String name) + { + this.name = name; + if(money == null) + this.money = getMoney(); + database.saveAccount(name, uuid, money); + } + public String getUUID() + { + return uuid; + } + public Double getMoney() + { + if(money != null) + return money; + String money_string = database.loadAccountData(name, uuid).get("money"); + Double parseMoney = 0D; + try + { + parseMoney = Double.parseDouble(money_string); + } catch(Exception e) { + } + if(database.cacheAccounts()) + this.money = parseMoney; + return parseMoney; + } + public void setMoney(double money) + { + Double currentMoney = getMoney(); + if(currentMoney != null && currentMoney == money) + return; + if(money < 0 && !api.isCurrencyNegative()) + money = 0; + currentMoney = api.getMoneyRounded(money); + if(api.getMaxHoldings() > 0 && currentMoney > api.getMaxHoldings()) + currentMoney = api.getMoneyRounded(api.getMaxHoldings()); + if(!database.cacheAccounts() || plugin.getServer().getPlayerExact(getName()) == null) + save(currentMoney); + else + this.money = currentMoney; + } + public void withdraw(double amount) + { + setMoney(getMoney() - amount); + } + public void deposit(double amount) + { + setMoney(getMoney() + amount); + } + public boolean canReceive(double amount) + { + return api.getMaxHoldings() == -1 || amount + getMoney() < api.getMaxHoldings(); + } + public boolean has(double amount) + { + return getMoney() >= amount; + } + public void save(double money) + { + database.saveAccount(name, uuid, money); + } + @Override + public boolean equals(Object object) + { + if(object instanceof Account) + { + Account account = (Account)object; + return account.getName().equals(getName()); + } + return false; + } + @Override + public int compareTo(Account other) + { + return (int)(other.getMoney() - getMoney()); + } } diff --git a/src/main/java/com/niccholaspage/Fe/database/Database.java b/src/main/java/com/niccholaspage/Fe/database/Database.java index 7040657..528ebec 100644 --- a/src/main/java/com/niccholaspage/Fe/database/Database.java +++ b/src/main/java/com/niccholaspage/Fe/database/Database.java @@ -5,289 +5,176 @@ import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.UUIDFetcher; - import java.util.*; public abstract class Database { - private final Fe plugin; - private final Set cachedAccounts; - protected boolean cacheAccounts; - - public Database( Fe plugin ) - { - this.plugin = plugin; - - this.cachedAccounts = new HashSet<>(); - } - - public boolean init() - { - this.cacheAccounts = plugin.getAPI().getCacheAccounts(); - - return false; - } - - public List getTopAccounts( int size ) - { - List topAccounts = loadTopAccounts( size * 2 ); - - if( !cachedAccounts.isEmpty() ) - { - for( Account account : cachedAccounts ) - { - topAccounts.remove( account ); - } - - List cachedTopAccounts = new ArrayList<>(cachedAccounts); - Collections.sort(cachedTopAccounts, new Comparator() { - @Override - public int compare(Account account1, Account account2) { - return (int) (account2.getMoney() - account1.getMoney()); - } - } ); - - if( cachedAccounts.size() > size ) - { - cachedTopAccounts = cachedTopAccounts.subList( 0, size ); - } - - topAccounts.addAll( cachedTopAccounts ); - } - Collections.sort(topAccounts, new Comparator() { - @Override - public int compare(Account account1, Account account2) { - return (int) (account2.getMoney() - account1.getMoney()); - } - } ); - - if( topAccounts.size() > size ) - { - topAccounts = topAccounts.subList( 0, size ); - } - - return topAccounts; - } - - public abstract List loadTopAccounts( int size ); - - public abstract List getAccounts(); - - public abstract HashMap loadAccountData( String name, String uuid ); - - protected abstract void saveAccount( String name, String uuid, double money ); - - public void removeAccount( String name, String uuid ) - { - Account account = getCachedAccount( name, uuid ); - - if( account != null ) - { - removeCachedAccount( account ); - } - } - - public abstract void getConfigDefaults( ConfigurationSection section ); - - public abstract void clean(); - - public void removeAllAccounts() { - for (Account account : new HashSet<>(cachedAccounts)) { - cachedAccounts.remove(account); - } - } - - protected boolean convertToUUID() - { - if( !plugin.getServer().getOnlineMode() ) - { - //Disable plugin? - } - - plugin.log( Phrase.STARTING_UUID_CONVERSION ); - - List accounts = getAccounts(); - - Map accountMonies = new HashMap<>(); - - for( Account account : accounts ) - { - accountMonies.put( account.getName(), account.getMoney() ); - } - - List names = new ArrayList<>(); - - for( Account account : accounts ) - { - names.add( account.getName() ); - } - - UUIDFetcher fetcher = new UUIDFetcher( names ); - - Map response; - - try - { - response = fetcher.call(); - - removeAllAccounts(); - - for (String name : response.keySet()) { - for (String accountName : new HashMap<>(accountMonies).keySet()) { - if (accountName.equalsIgnoreCase(name)) { - saveAccount(name, response.get(name).toString(), accountMonies.get(accountName)); - accountMonies.remove( accountName ); - } - } - } - - for( String accountName : accountMonies.keySet() ) - { - saveAccount( accountName, null, accountMonies.get( accountName ) ); - } - } - catch( Exception e ) - { - e.printStackTrace(); - - plugin.log( Phrase.UUID_CONVERSION_FAILED ); - - plugin.getServer().getPluginManager().disablePlugin( plugin ); - - return false; - } - - plugin.log( Phrase.UUID_CONVERSION_SUCCEEDED ); - - return true; - } - - public void close() - { - Iterator iterator = cachedAccounts.iterator(); - - while( iterator.hasNext() ) - { - Account account = iterator.next(); - - account.save( account.getMoney() ); - - iterator.remove(); - } - } - - public abstract String getName(); - - public String getConfigName() - { - return getName().toLowerCase().replace( " ", "" ); - } - - public ConfigurationSection getConfigSection() - { - return plugin.getConfig().getConfigurationSection( getConfigName() ); - } - - public Account getAccount( String name, String uuid ) - { - Account account = getCachedAccount( name, uuid ); - - if( account != null ) - { - return account; - } - - HashMap data = loadAccountData( name, uuid ); - - String money_string = data.get( "money" ); - Double data_money; - - try - { - data_money = Double.parseDouble( money_string ); - } - catch( Exception e ) - { - data_money = null; - } - - String data_name = data.get( "name" ); - - if( data_money == null ) - { - return null; - } - else - { - return createAndAddAccount( data_name, uuid, data_money ); - } - } - - public Account updateAccount( String name, String uuid ) - { - Account account = getAccount( name, uuid ); - - if( account == null ) - { - account = createAndAddAccount( name, uuid, plugin.getAPI().getDefaultHoldings() ); - } - - if( ! account.getName().equals( name ) ) - { - account.setName( name ); - } - - return account; - } - - private Account createAndAddAccount( String name, String uuid, double money ) - { - Account account = new Account( plugin, name, uuid, this ); - - account.setMoney( money ); - - if( cacheAccounts() ) - { - Player player = plugin.getServer().getPlayerExact( name ); - - if( player != null ) - { - cachedAccounts.add( account ); - } - } - - return account; - } - - public boolean accountExists( String name, String uuid ) - { - return getAccount( name, uuid ) != null; - } - - public boolean cacheAccounts() - { - return cacheAccounts; - } - - public Account getCachedAccount( String name, String uuid ) - { - for( Account account : cachedAccounts ) - { - if( account.getName().equals( name ) ) - { - return account; - } - } - - return null; - } - - public boolean removeCachedAccount( Account account ) - { - return cachedAccounts.remove( account ); - } - - public abstract int getVersion(); - - public abstract void setVersion( int version ); + private final Fe plugin; + private final Set cachedAccounts = new HashSet<>(); + protected boolean cacheAccounts; + public abstract List getAccounts(); + public abstract List loadTopAccounts(int size); + public abstract HashMap loadAccountData(String name, String uuid); + public abstract void getConfigDefaults(ConfigurationSection section); + public abstract String getName(); + public abstract int getVersion(); + public abstract void setVersion(int version); + public abstract void clean(); + protected abstract void saveAccount(String name, String uuid, double money); + public Database(Fe plugin) + { + this.plugin = plugin; + } + public boolean init() + { + this.cacheAccounts = plugin.getAPI().getCacheAccounts(); + return false; + } + public List getTopAccounts(int size) + { + List topAccounts = loadTopAccounts(size * 2); + if(!cachedAccounts.isEmpty()) + { + for(Account account : cachedAccounts) + topAccounts.remove(account); + List cachedTopAccounts = new ArrayList<>(cachedAccounts); + Collections.sort(cachedTopAccounts); + if(cachedAccounts.size() > size) + cachedTopAccounts = cachedTopAccounts.subList(0, size); + topAccounts.addAll(cachedTopAccounts); + } + Collections.sort(topAccounts); + if(topAccounts.size() > size) + topAccounts = topAccounts.subList(0, size); + return topAccounts; + } + public void removeAccount(String name, String uuid) + { + Account account = getCachedAccount(name, uuid); + if(account != null) + removeCachedAccount(account); + } + public void removeAllAccounts() + { + for(Account account : new HashSet<>(cachedAccounts)) + cachedAccounts.remove(account); + } + protected boolean convertToUUID() + { + if(!plugin.getServer().getOnlineMode()) + { + //Disable plugin? + } + plugin.log(Phrase.STARTING_UUID_CONVERSION); + List accounts = getAccounts(); + Map accountMonies = new HashMap<>(); + for(Account account : accounts) + accountMonies.put(account.getName(), account.getMoney()); + List names = new ArrayList<>(); + for(Account account : accounts) + names.add(account.getName()); + UUIDFetcher fetcher = new UUIDFetcher(names); + Map response; + try + { + response = fetcher.call(); + removeAllAccounts(); + for(String name : response.keySet()) + for(String accountName : new HashMap<>(accountMonies).keySet()) + if(accountName.equalsIgnoreCase(name)) + { + saveAccount(name, response.get(name).toString(), accountMonies.get(accountName)); + accountMonies.remove(accountName); + } + for(String accountName : accountMonies.keySet()) + saveAccount(accountName, null, accountMonies.get(accountName)); + } catch(Exception e) + { + System.out.println(e); + plugin.log(Phrase.UUID_CONVERSION_FAILED); + plugin.getServer().getPluginManager().disablePlugin(plugin); + return false; + } + plugin.log(Phrase.UUID_CONVERSION_SUCCEEDED); + return true; + } + public void close() + { + Iterator iterator = cachedAccounts.iterator(); + while(iterator.hasNext()) + { + Account account = iterator.next(); + account.save(account.getMoney()); + iterator.remove(); + } + } + public String getConfigName() + { + return getName().toLowerCase().replace(" ", ""); + } + public ConfigurationSection getConfigSection() + { + return plugin.getConfig().getConfigurationSection(getConfigName()); + } + public Account getAccount(String name, String uuid) + { + Account account = getCachedAccount(name, uuid); + if(account != null) + return account; + HashMap data = loadAccountData(name, uuid); + String money_string = data.get("money"); + Double data_money; + try + { + data_money = Double.parseDouble(money_string); + } catch(Exception e) + { + data_money = null; + } + String data_name = data.get("name"); + if(data_money == null) + return null; + else + return createAndAddAccount(data_name, uuid, data_money); + } + public Account updateAccount(String name, String uuid) + { + Account account = getAccount(name, uuid); + if(account == null) + account = createAndAddAccount(name, uuid, plugin.getAPI().getDefaultHoldings()); + if(!account.getName().equals(name)) + account.setName(name); + return account; + } + private Account createAndAddAccount(String name, String uuid, double money) + { + Account account = new Account(plugin, name, uuid, this); + account.setMoney(money); + if(cacheAccounts()) + { + Player player = plugin.getServer().getPlayerExact(name); + if(player != null) + cachedAccounts.add(account); + } + return account; + } + public boolean accountExists(String name, String uuid) + { + return getAccount(name, uuid) != null; + } + public boolean cacheAccounts() + { + return cacheAccounts; + } + public Account getCachedAccount(String name, String uuid) + { + for(Account account : cachedAccounts) + if(account.getName().equals(name)) + return account; + return null; + } + public boolean removeCachedAccount(Account account) + { + return cachedAccounts.remove(account); + } } diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java index f35260e..8c25555 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java @@ -1,78 +1,59 @@ package com.niccholaspage.Fe.database.databases; - import org.bukkit.configuration.ConfigurationSection; import com.niccholaspage.Fe.Fe; - import java.sql.Connection; import java.sql.DriverManager; - -public class MySQLDB extends SQLDB { - public MySQLDB(Fe plugin) { - super(plugin, true); - } - - @Override - protected Connection getNewConnection() { - ConfigurationSection config = getConfigSection(); - - setAccountTable(config.getString("tables.accounts")); - - setAccountsColumnUser(config.getString("columns.accounts.username")); - - setAccountsColumnMoney(config.getString("columns.accounts.money")); - - setAccountsColumnUUID(config.getString("columns.accounts.uuid")); - - try { - Class.forName("com.mysql.jdbc.Driver"); - - String url = "jdbc:mysql://" + config.getString("host") + ":" + config.getString("port") + "/" + config.getString("database"); - - return DriverManager.getConnection(url, config.getString("user"), config.getString("password")); - } catch (Exception e) { - return null; - } - } - - private ConfigurationSection getSection(ConfigurationSection parent, String childName) { - ConfigurationSection child = parent.getConfigurationSection(childName); - - if (child == null) { - child = parent.createSection(childName); - } - - return child; - } - - @Override - public void getConfigDefaults(ConfigurationSection section) { - section.addDefault("host", "localhost"); - - section.addDefault("port", 3306); - - section.addDefault("user", "root"); - - section.addDefault("password", "minecraft"); - - section.addDefault("database", "Fe"); - - ConfigurationSection tables = getSection(section, "tables"); - - tables.addDefault("accounts", "fe_accounts"); - - ConfigurationSection columns = getSection(section, "columns"); - - ConfigurationSection columnsAccounts = getSection(columns, "accounts"); - - columnsAccounts.addDefault("username", "name"); - - columnsAccounts.addDefault("money", "money"); - - columnsAccounts.addDefault("uuid", "uuid"); - } - - @Override - public String getName() { - return "MySQL"; - } +import java.sql.SQLException; + +public class MySQLDB extends SQLDB +{ + public MySQLDB(Fe plugin) + { + super(plugin, true); + } + @Override + protected Connection getNewConnection() + { + ConfigurationSection config = getConfigSection(); + setAccountTable (config.getString("tables.accounts")); + setAccountsColumnUser (config.getString("columns.accounts.username")); + setAccountsColumnMoney(config.getString("columns.accounts.money")); + setAccountsColumnUUID (config.getString("columns.accounts.uuid")); + try + { + Class.forName("com.mysql.jdbc.Driver"); + String url = "jdbc:mysql://" + config.getString("host") + ":" + config.getString("port") + "/" + config.getString("database"); + return DriverManager.getConnection(url, config.getString("user"), config.getString("password")); + } catch(ClassNotFoundException | SQLException e) { + return null; + } + } + private ConfigurationSection getSection(ConfigurationSection parent, String childName) + { + ConfigurationSection child = parent.getConfigurationSection(childName); + if(child == null) + child = parent.createSection(childName); + return child; + } + @Override + public void getConfigDefaults(ConfigurationSection section) + { + section.addDefault("host", "localhost"); + section.addDefault("port", 3306); + section.addDefault("user", "root"); + section.addDefault("password", "minecraft"); + section.addDefault("database", "Fe"); + ConfigurationSection tables = getSection(section, "tables"); + tables.addDefault("accounts", "fe_accounts"); + ConfigurationSection columns = getSection(section, "columns"); + ConfigurationSection columnsAccounts = getSection(columns, "accounts"); + columnsAccounts.addDefault("username", "name"); + columnsAccounts.addDefault("money", "money"); + columnsAccounts.addDefault("uuid", "uuid"); + } + @Override + public String getName() + { + return "MySQL"; + } } diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java index 2766372..0487fbd 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java @@ -3,7 +3,6 @@ import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.database.Account; import com.niccholaspage.Fe.database.Database; - import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -15,39 +14,23 @@ public abstract class SQLDB extends Database { private final Fe plugin; - private final boolean supportsModification; - private Connection connection; - private String accountsName; - private String versionName; - private String accountsColumnUser; - private String accountsColumnMoney; - private String accountsColumnUUID; - public SQLDB(Fe plugin, boolean supportsModification) { super(plugin); - this.plugin = plugin; - this.supportsModification = supportsModification; - accountsName = "fe_accounts"; - versionName = "fe_version"; - accountsColumnUser = "name"; - accountsColumnMoney = "money"; - accountsColumnUUID = "uuid"; - plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, new Runnable() { @Override @@ -57,34 +40,28 @@ public void run() { if(connection != null && ! connection.isClosed()) connection.createStatement().execute("/* ping */ SELECT 1"); - } catch(SQLException e) - { + } catch(SQLException e) { connection = getNewConnection(); } } }, 60 * 20, 60 * 20); } - public void setAccountTable(String accountsName) { this.accountsName = accountsName; } - public void setVersionTable(String versionName) { this.versionName = versionName; } - public void setAccountsColumnUser(String accountsColumnUser) { this.accountsColumnUser = accountsColumnUser; } - public void setAccountsColumnMoney(String accountsColumnMoney) { this.accountsColumnMoney = accountsColumnMoney; } - public void setAccountsColumnUUID(String accountsColumnUUID) { this.accountsColumnUUID = accountsColumnUUID; @@ -93,11 +70,8 @@ public void setAccountsColumnUUID(String accountsColumnUUID) public boolean init() { super.init(); - return checkConnection(); - } - public boolean checkConnection() { try @@ -105,61 +79,42 @@ public boolean checkConnection() if(connection == null || connection.isClosed()) { connection = getNewConnection(); - if(connection == null || connection.isClosed()) return false; - ResultSet set = connection.prepareStatement(supportsModification ? ("SHOW TABLES LIKE '" + accountsName + "'") : "SELECT name FROM sqlite_master WHERE type='table' AND name='" + accountsName + "'").executeQuery(); - boolean newDatabase = set.next(); - set.close(); - query("CREATE TABLE IF NOT EXISTS " + accountsName + " (" + accountsColumnUser + " varchar(64) NOT NULL, " + accountsColumnUUID + " varchar(36), " + accountsColumnMoney + " double NOT NULL)"); - query("CREATE TABLE IF NOT EXISTS " + versionName + " (version int NOT NULL)"); - if(newDatabase) { int version = getVersion(); - if(version == 0) { if(supportsModification) { query("ALTER TABLE " + accountsName + " MODIFY " + accountsColumnUser + " varchar(64) NOT NULL"); - query("ALTER TABLE " + accountsName + " MODIFY " + accountsColumnMoney + " double NOT NULL"); } - try { query("ALTER TABLE " + accountsName + " ADD " + accountsColumnUUID + " varchar(36);"); - } catch(Exception e) - { - + } catch(Exception e) { } - - if( ! convertToUUID()) + if(!convertToUUID()) return false; - setVersion(1); } } else setVersion(1); } - } catch(SQLException e) - { - e.printStackTrace(); - + } catch(SQLException e) { + System.out.println(e); return false; } - return true; } - protected abstract Connection getNewConnection(); - public boolean query(String sql) throws SQLException { return connection.createStatement().execute(sql); @@ -168,262 +123,187 @@ public boolean query(String sql) throws SQLException public void close() { super.close(); - try { if(connection != null) connection.close(); - } catch(SQLException e) - { - e.printStackTrace(); + } catch(SQLException e) { + System.out.println(e); } } - @Override public int getVersion() { checkConnection(); - int version = 0; - try { ResultSet set = connection.prepareStatement("SELECT * from " + versionName).executeQuery(); - if(set.next()) version = set.getInt("version"); - set.close(); - return version; - } catch(Exception e) - { - e.printStackTrace(); - + } catch(Exception e) { + System.out.println(e); return version; } } - @Override public void setVersion(int version) { checkConnection(); - try { connection.prepareStatement("DELETE FROM " + versionName).executeUpdate(); - connection.prepareStatement("INSERT INTO " + versionName + " (version) VALUES (" + version + ")").executeUpdate(); - } catch(SQLException e) - { - e.printStackTrace(); + } catch(SQLException e) { + System.out.println(e); } } - @Override public List loadTopAccounts(int size) { checkConnection(); - String sql = "SELECT * FROM " + accountsName + " ORDER BY money DESC limit " + size; - List topAccounts = new ArrayList<>(); - try { ResultSet set = connection.createStatement().executeQuery(sql); - while(set.next()) { Account account = new Account(plugin, set.getString(accountsColumnUser), set.getString(accountsColumnUUID), this); - account.setMoney(set.getDouble(accountsColumnMoney)); - topAccounts.add(account); } - } catch(SQLException e) - { - e.printStackTrace(); + } catch(SQLException e) { + System.out.println(e); } - return topAccounts; } - @Override public List getAccounts() { checkConnection(); - List accounts = new ArrayList<>(); - try { ResultSet set = connection.createStatement().executeQuery("SELECT * from " + accountsName); - while(set.next()) { Account account = new Account(plugin, set.getString(accountsColumnUser), set.getString(accountsColumnUUID), this); - account.setMoney(set.getDouble(accountsColumnMoney)); - accounts.add(account); } - } catch(SQLException e) - { - e.printStackTrace(); + } catch(SQLException e) { + System.out.println(e); } - return accounts; } - @SuppressWarnings("deprecation") @Override public HashMap loadAccountData(String name, String uuid) { checkConnection(); - try { PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + accountsName + " WHERE UPPER(" + (uuid != null ? accountsColumnUUID : accountsColumnUser) + ") LIKE UPPER(?)"); - statement.setString(1, uuid != null ? uuid : name); - ResultSet set = statement.executeQuery(); - - HashMap data = new HashMap(); - + HashMap data = new HashMap<>(); while(set.next()) { data.put("money", set.getString(accountsColumnMoney)); data.put("name", set.getString(accountsColumnUser)); } - set.close(); - return data; - } catch(SQLException e) - { - e.printStackTrace(); - + } catch(SQLException e) { + System.out.println(e); return null; } } - @Override public void removeAccount(String name, String uuid) { super.removeAccount(name, uuid); - checkConnection(); - PreparedStatement statement; try { statement = connection.prepareStatement("DELETE FROM " + accountsName + " WHERE UPPER(" + (uuid != null ? accountsColumnUUID : accountsColumnUser) + ") LIKE UPPER(?)"); - statement.setString(1, uuid != null ? uuid : name); - statement.execute(); - } catch(SQLException e) - { - e.printStackTrace(); + } catch(SQLException e) { + System.out.println(e); } } - @SuppressWarnings("deprecation") @Override protected void saveAccount(String name, String uuid, double money) { checkConnection(); - try { String sql = "UPDATE " + accountsName + " SET " + accountsColumnMoney + "=?, " + accountsColumnUser + "=? WHERE UPPER("; - if(uuid != null) sql += accountsColumnUUID; else sql += accountsColumnUser; - PreparedStatement statement = connection.prepareStatement(sql + ") LIKE UPPER(?)"); - statement.setDouble(1, money); - statement.setString(2, name); - if(uuid != null) statement.setString(3, uuid); else statement.setString(3, name); - if(statement.executeUpdate() == 0) { statement = connection.prepareStatement("INSERT INTO " + accountsName + " (" + accountsColumnUser + ", " + accountsColumnUUID + ", " + accountsColumnMoney + ") VALUES (?, ?, ?)"); - statement.setString(1, name); - statement.setString(2, uuid); - statement.setDouble(3, money); - statement.execute(); } - } catch(SQLException e) - { - e.printStackTrace(); + } catch(SQLException e) { + System.out.println(e); } } - @SuppressWarnings("deprecation") @Override public void clean() { checkConnection(); - try { ResultSet set = connection.prepareStatement("SELECT * from " + accountsName + " WHERE " + accountsColumnMoney + "=" + plugin.getAPI().getDefaultHoldings()).executeQuery(); - boolean executeQuery = false; - StringBuilder builder = new StringBuilder("DELETE FROM " + accountsName + " WHERE " + accountsColumnUser + " IN ("); - while(set.next()) { String name = set.getString(accountsColumnUser); - if(plugin.getServer().getPlayerExact(name) != null) continue; - executeQuery = true; - builder.append("'").append(name).append("', "); } - set.close(); - builder.delete(builder.length() - 2, builder.length()).append(")"); - if(executeQuery) query(builder.toString()); - } catch(SQLException e) - { - e.printStackTrace(); + } catch(SQLException e) { + System.out.println(e); } } @Override public void removeAllAccounts() { super.removeAllAccounts(); - checkConnection(); - try { connection.prepareStatement("DELETE FROM " + accountsName).executeUpdate(); - } catch(SQLException e) - { - e.printStackTrace(); + } catch(SQLException e) { + System.out.println(e); } } } diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java index 8528ca2..3ee4ea7 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java @@ -2,38 +2,37 @@ import org.bukkit.configuration.ConfigurationSection; import com.niccholaspage.Fe.Fe; - import java.io.File; import java.sql.Connection; import java.sql.DriverManager; - -public class SQLiteDB extends SQLDB { - private final Fe plugin; - - public SQLiteDB(Fe plugin) { - super(plugin, false); - - this.plugin = plugin; - } - - @Override - public Connection getNewConnection() { - try { - Class.forName("org.sqlite.JDBC"); - - return DriverManager.getConnection("jdbc:sqlite:" + new File(plugin.getDataFolder(), "database.db").getAbsolutePath()); - } catch (Exception e) { - return null; - } - } - - @Override - public void getConfigDefaults(ConfigurationSection section) { - - } - - @Override - public String getName() { - return "SQLite"; - } +import java.sql.SQLException; + +public class SQLiteDB extends SQLDB +{ + private final Fe plugin; + public SQLiteDB(Fe plugin) + { + super(plugin, false); + this.plugin = plugin; + } + @Override + public Connection getNewConnection() + { + try + { + Class.forName("org.sqlite.JDBC"); + return DriverManager.getConnection("jdbc:sqlite:" + new File(plugin.getDataFolder(), "database.db").getAbsolutePath()); + } catch(ClassNotFoundException | SQLException e) { + return null; + } + } + @Override + public void getConfigDefaults(ConfigurationSection section) + { + } + @Override + public String getName() + { + return "SQLite"; + } } diff --git a/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java b/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java index 285aabe..43b874f 100644 --- a/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java +++ b/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java @@ -12,36 +12,28 @@ public class FePlayerListener implements Listener { - private final Fe plugin; - - public FePlayerListener( Fe plugin ) - { - this.plugin = plugin; - - plugin.getServer().getPluginManager().registerEvents( (Listener)this, plugin ); - } - - @EventHandler( priority = EventPriority.LOWEST ) - public void onPlayerLogin( PlayerLoginEvent event ) - { - Player player = event.getPlayer(); - plugin.getAPI().updateAccount( player.getName(), player.getUniqueId().toString() ); - } - - @EventHandler - public void onPlayerQuit( PlayerQuitEvent event ) - { - Database database = plugin.getFeDatabase(); - - Player player = event.getPlayer(); - - Account account = database.getCachedAccount( player.getName(), player.getUniqueId().toString() ); - - if( account != null ) - { - account.save( account.getMoney() ); - - database.removeCachedAccount( account ); - } - } + private final Fe plugin; + public FePlayerListener(Fe plugin) + { + this.plugin = plugin; + plugin.getServer().getPluginManager().registerEvents((Listener)this, plugin); + } + @EventHandler(priority = EventPriority.LOWEST) + public void onPlayerLogin(PlayerLoginEvent event) + { + Player player = event.getPlayer(); + plugin.getAPI().updateAccount(player.getName(), player.getUniqueId().toString()); + } + @EventHandler + public void onPlayerQuit(PlayerQuitEvent event) + { + Database database = plugin.getFeDatabase(); + Player player = event.getPlayer(); + Account account = database.getCachedAccount(player.getName(), player.getUniqueId().toString()); + if(account != null) + { + account.save(account.getMoney()); + database.removeCachedAccount(account); + } + } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index a16b5d5..dab80fe 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -16,4 +16,3 @@ currency: type: sqlite autoclean: true -cacheaccounts: true From 6513f91ee2af6d7eae67e9c71fa1a6e3edfbcccf Mon Sep 17 00:00:00 2001 From: Stanislav Usenkov Date: Fri, 27 Mar 2015 18:07:57 +0600 Subject: [PATCH 10/40] Minor changes --- src/main/java/com/niccholaspage/Fe/Fe.java | 8 +++---- .../java/com/niccholaspage/Fe/FeCommand.java | 10 ++++----- .../niccholaspage/Fe/database/Database.java | 2 +- .../Fe/database/databases/SQLDB.java | 21 +++++++------------ .../Fe/database/databases/SQLiteDB.java | 2 -- 5 files changed, 18 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index 959f204..d87ed3c 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -55,7 +55,7 @@ public void onEnable() + "type - The type of database used (sqlite, mysql, or mongo)"); saveConfig(); api = new API(this); - if( ! setupDatabase()) + if(!setupDatabase()) return; getCommand("fe").setExecutor(new FeCommand(this)); PluginManager pm = getServer().getPluginManager(); @@ -115,7 +115,7 @@ private boolean setupDatabase() log(Phrase.DATABASE_TYPE_DOES_NOT_EXIST); return false; } - if( ! database.init()) + if(!database.init()) { log(Phrase.DATABASE_FAILURE_DISABLE); setEnabled(false); @@ -128,7 +128,7 @@ private void setupPhrases() File phrasesFile = new File(getDataFolder(), "phrases.yml"); for(Phrase phrase : Phrase.values()) phrase.reset(); - if( ! phrasesFile.exists()) + if(!phrasesFile.exists()) return; YamlConfiguration phrasesConfig = YamlConfiguration.loadConfiguration(phrasesFile); for(Phrase phrase : Phrase.values()) @@ -156,7 +156,7 @@ public void reloadConfig() getConfig().set("currency.major.multiple", oldCurrencyMultiple); getConfig().set("currency.multiple", null); } - if( ! getConfig().isSet("autoclean")) + if(!getConfig().isSet("autoclean")) getConfig().set("autoclean", true); // Temporarily remove cache and updates. if(getConfig().isSet("cacheaccounts")) diff --git a/src/main/java/com/niccholaspage/Fe/FeCommand.java b/src/main/java/com/niccholaspage/Fe/FeCommand.java index a8ceef3..ae25abd 100644 --- a/src/main/java/com/niccholaspage/Fe/FeCommand.java +++ b/src/main/java/com/niccholaspage/Fe/FeCommand.java @@ -58,7 +58,7 @@ private String[] merge(String[]... arrays) private void sendDefaultCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { String command = "balance"; - if( ! (sender instanceof Player) && args.length < 1) + if(!(sender instanceof Player) && args.length < 1) command = "help"; onCommand(sender, cmd, commandLabel, merge(new String[] { @@ -79,7 +79,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, sendDefaultCommand(sender, cmd, commandLabel, args); return true; } - boolean console = ! (sender instanceof Player); + boolean console = !(sender instanceof Player); if(console && args.length < 2 && command.getCommandType() == CommandType.CONSOLE_WITH_ARGUMENTS) { Phrase.COMMAND_NEEDS_ARGUMENTS.sendWithPrefix(sender); @@ -90,7 +90,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Phrase.COMMAND_NOT_CONSOLE.sendWithPrefix(sender, commandLabel); return true; } - if( ! sender.hasPermission(command.getPermission())) + if(!sender.hasPermission(command.getPermission())) { Phrase.NO_PERMISSION_FOR_COMMAND.sendWithPrefix(sender); return true; @@ -98,7 +98,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] realArgs = new String[args.length - 1]; for(int i = 1; i < args.length; i ++) realArgs[i - 1] = args[i]; - if( ! command.onCommand(sender, cmd, commandLabel, realArgs)) + if(!command.onCommand(sender, cmd, commandLabel, realArgs)) Phrase.TRY_COMMAND.sendWithPrefix(sender, parse(commandLabel, command)); return true; } @@ -108,7 +108,7 @@ public String parse(String label, SubCommand command) String operatorsColor = Phrase.PRIMARY_COLOR.parse(); String argumentColor = Phrase.ARGUMENT_COLOR.parse(); StringBuilder builder = new StringBuilder(commandColor).append("/").append(label); - if( ! command.getFirstName().equalsIgnoreCase("balance")) + if(!command.getFirstName().equalsIgnoreCase("balance")) builder.append(" ").append(command.getFirstName()).append(" "); String[] split = command.getUsage().split(" "); if(split[0].equalsIgnoreCase(command.getFirstName())) diff --git a/src/main/java/com/niccholaspage/Fe/database/Database.java b/src/main/java/com/niccholaspage/Fe/database/Database.java index 528ebec..f80fdbc 100644 --- a/src/main/java/com/niccholaspage/Fe/database/Database.java +++ b/src/main/java/com/niccholaspage/Fe/database/Database.java @@ -63,7 +63,7 @@ protected boolean convertToUUID() { if(!plugin.getServer().getOnlineMode()) { - //Disable plugin? + // Disable plugin? } plugin.log(Phrase.STARTING_UUID_CONVERSION); List accounts = getAccounts(); diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java index 0487fbd..5d1110f 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java @@ -13,24 +13,19 @@ public abstract class SQLDB extends Database { - private final Fe plugin; + protected final Fe plugin; private final boolean supportsModification; + private String accountsName = "fe_accounts"; + private String versionName = "fe_version"; + private String accountsColumnUser = "name"; + private String accountsColumnMoney = "money"; + private String accountsColumnUUID = "uuid"; private Connection connection; - private String accountsName; - private String versionName; - private String accountsColumnUser; - private String accountsColumnMoney; - private String accountsColumnUUID; public SQLDB(Fe plugin, boolean supportsModification) { super(plugin); this.plugin = plugin; this.supportsModification = supportsModification; - accountsName = "fe_accounts"; - versionName = "fe_version"; - accountsColumnUser = "name"; - accountsColumnMoney = "money"; - accountsColumnUUID = "uuid"; plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, new Runnable() { @Override @@ -38,7 +33,7 @@ public void run() { try { - if(connection != null && ! connection.isClosed()) + if(connection != null && !connection.isClosed()) connection.createStatement().execute("/* ping */ SELECT 1"); } catch(SQLException e) { connection = getNewConnection(); @@ -98,7 +93,7 @@ public boolean checkConnection() } try { - query("ALTER TABLE " + accountsName + " ADD " + accountsColumnUUID + " varchar(36);"); + query("ALTER TABLE " + accountsName + " ADD " + accountsColumnUUID + " char(36);"); } catch(Exception e) { } if(!convertToUUID()) diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java index 3ee4ea7..38320cb 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java @@ -9,11 +9,9 @@ public class SQLiteDB extends SQLDB { - private final Fe plugin; public SQLiteDB(Fe plugin) { super(plugin, false); - this.plugin = plugin; } @Override public Connection getNewConnection() From dd2d3eef4be8754302fc357f739ce5d23bbf8e97 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 30 Mar 2015 13:51:15 +0600 Subject: [PATCH 11/40] I've found problems with Multiverse that it is looking for old class so I've renamed plugin from Fe into Fe2. --- pom.xml | 2 +- src/main/java/com/niccholaspage/Fe/API.java | 4 ++-- src/main/java/com/niccholaspage/Fe/{Fe.java => Fe2.java} | 4 ++-- src/main/java/com/niccholaspage/Fe/FeCommand.java | 2 +- src/main/java/com/niccholaspage/Fe/Phrase.java | 4 ++-- src/main/java/com/niccholaspage/Fe/VaultHandler.java | 6 +++--- .../niccholaspage/Fe/command/commands/BalanceCommand.java | 6 +++--- .../com/niccholaspage/Fe/command/commands/CleanCommand.java | 6 +++--- .../niccholaspage/Fe/command/commands/CreateCommand.java | 6 +++--- .../niccholaspage/Fe/command/commands/DeductCommand.java | 6 +++--- .../com/niccholaspage/Fe/command/commands/GrantCommand.java | 6 +++--- .../com/niccholaspage/Fe/command/commands/HelpCommand.java | 6 +++--- .../niccholaspage/Fe/command/commands/ReloadCommand.java | 6 +++--- .../niccholaspage/Fe/command/commands/RemoveCommand.java | 6 +++--- .../com/niccholaspage/Fe/command/commands/SendCommand.java | 6 +++--- .../com/niccholaspage/Fe/command/commands/SetCommand.java | 6 +++--- .../com/niccholaspage/Fe/command/commands/TopCommand.java | 6 +++--- src/main/java/com/niccholaspage/Fe/database/Account.java | 6 +++--- src/main/java/com/niccholaspage/Fe/database/Database.java | 6 +++--- .../com/niccholaspage/Fe/database/databases/MySQLDB.java | 4 ++-- .../java/com/niccholaspage/Fe/database/databases/SQLDB.java | 6 +++--- .../com/niccholaspage/Fe/database/databases/SQLiteDB.java | 4 ++-- .../com/niccholaspage/Fe/listeners/FePlayerListener.java | 6 +++--- 23 files changed, 60 insertions(+), 60 deletions(-) rename src/main/java/com/niccholaspage/Fe/{Fe.java => Fe2.java} (99%) diff --git a/pom.xml b/pom.xml index 8c94fcb..1c7fa19 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.niccholaspage Fe 0.8.4 - Fe + Fe2 UTF-8 diff --git a/src/main/java/com/niccholaspage/Fe/API.java b/src/main/java/com/niccholaspage/Fe/API.java index e2138ed..dcc7cd8 100644 --- a/src/main/java/com/niccholaspage/Fe/API.java +++ b/src/main/java/com/niccholaspage/Fe/API.java @@ -9,8 +9,8 @@ public class API { - private final Fe plugin; - public API(Fe plugin) + private final Fe2 plugin; + public API(Fe2 plugin) { this.plugin = plugin; } diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe2.java similarity index 99% rename from src/main/java/com/niccholaspage/Fe/Fe.java rename to src/main/java/com/niccholaspage/Fe/Fe2.java index d87ed3c..d1ee053 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe2.java @@ -21,12 +21,12 @@ import java.util.HashSet; import java.util.Set; -public class Fe extends JavaPlugin +public class Fe2 extends JavaPlugin { private final Set databases; private API api; private Database database; - public Fe() + public Fe2() { databases = new HashSet<>(); } diff --git a/src/main/java/com/niccholaspage/Fe/FeCommand.java b/src/main/java/com/niccholaspage/Fe/FeCommand.java index ae25abd..6966ba4 100644 --- a/src/main/java/com/niccholaspage/Fe/FeCommand.java +++ b/src/main/java/com/niccholaspage/Fe/FeCommand.java @@ -13,7 +13,7 @@ public class FeCommand implements CommandExecutor { private final List commands; - public FeCommand(Fe plugin) + public FeCommand(Fe2 plugin) { commands = new ArrayList<>(); commands.add(new BalanceCommand(plugin)); diff --git a/src/main/java/com/niccholaspage/Fe/Phrase.java b/src/main/java/com/niccholaspage/Fe/Phrase.java index 8d6206e..6832e6f 100644 --- a/src/main/java/com/niccholaspage/Fe/Phrase.java +++ b/src/main/java/com/niccholaspage/Fe/Phrase.java @@ -54,7 +54,7 @@ public enum Phrase COMMAND_CLEAN("Cleans the accounts with default balance", true), COMMAND_RELOAD("Reloads the config", true), ; - private static Fe plugin; + private static Fe2 plugin; private final String defaultMessage; private final boolean categorized; private String message; @@ -68,7 +68,7 @@ private Phrase(String defaultMessage, boolean categorized) this.categorized = categorized; message = defaultMessage + ""; } - public static void init(Fe instance) + public static void init(Fe2 instance) { plugin = instance; } diff --git a/src/main/java/com/niccholaspage/Fe/VaultHandler.java b/src/main/java/com/niccholaspage/Fe/VaultHandler.java index b3ff31c..d0317b6 100644 --- a/src/main/java/com/niccholaspage/Fe/VaultHandler.java +++ b/src/main/java/com/niccholaspage/Fe/VaultHandler.java @@ -18,8 +18,8 @@ public class VaultHandler implements Economy { private final String name = "Fe"; - private Fe plugin; - public VaultHandler(Fe plugin) + private Fe2 plugin; + public VaultHandler(Fe2 plugin) { this.plugin = plugin; Bukkit.getServer().getPluginManager().registerEvents(new EconomyServerListener(), plugin); @@ -288,7 +288,7 @@ public void onPluginEnable(PluginEnableEvent event) Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("Fe"); if(plugin != null && plugin.isEnabled()) { - VaultHandler.this.plugin = (Fe)plugin; + VaultHandler.this.plugin = (Fe2)plugin; VaultHandler.this.plugin.log("Vault support enabled."); } } diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java index 99023fb..457a211 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java @@ -3,16 +3,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.database.Account; public class BalanceCommand extends SubCommand { - private final Fe plugin; + private final Fe2 plugin; - public BalanceCommand(Fe plugin) { + public BalanceCommand(Fe2 plugin) { super("balance,bal", "fe.balance", "(name)", Phrase.COMMAND_BALANCE, CommandType.CONSOLE_WITH_ARGUMENTS); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java index aaadcfa..ada47c7 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java @@ -2,15 +2,15 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; public class CleanCommand extends SubCommand { - private final Fe plugin; + private final Fe2 plugin; - public CleanCommand(Fe plugin) { + public CleanCommand(Fe2 plugin) { super("clean", "fe.clean", "clean", Phrase.COMMAND_CLEAN, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java index f17220a..804c2f9 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java @@ -2,16 +2,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.database.Account; public class CreateCommand extends SubCommand { - private final Fe plugin; + private final Fe2 plugin; - public CreateCommand(Fe plugin) { + public CreateCommand(Fe2 plugin) { super("create", "fe.create", "create [name]", Phrase.COMMAND_CREATE, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java index 6d98c66..6698539 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java @@ -3,16 +3,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.database.Account; public class DeductCommand extends SubCommand { - private final Fe plugin; + private final Fe2 plugin; - public DeductCommand(Fe plugin) { + public DeductCommand(Fe2 plugin) { super("deduct", "fe.deduct", "deduct [name] [amount]", Phrase.COMMAND_DEDUCT, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java index 6404b05..ab86de6 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java @@ -3,16 +3,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.database.Account; public class GrantCommand extends SubCommand { - private final Fe plugin; + private final Fe2 plugin; - public GrantCommand(Fe plugin) { + public GrantCommand(Fe2 plugin) { super("grant", "fe.grant", "grant [name] [amount]", Phrase.COMMAND_GRANT, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java index 9975353..29e9fbe 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java @@ -3,18 +3,18 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.FeCommand; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; public class HelpCommand extends SubCommand { - private final Fe plugin; + private final Fe2 plugin; private final FeCommand command; - public HelpCommand(Fe plugin, FeCommand command) { + public HelpCommand(Fe2 plugin, FeCommand command) { super("help,?", "fe.?", "help", Phrase.COMMAND_HELP, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java index e4b1856..e3524a9 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java @@ -2,15 +2,15 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; public class ReloadCommand extends SubCommand { - private final Fe plugin; + private final Fe2 plugin; - public ReloadCommand(Fe plugin) { + public ReloadCommand(Fe2 plugin) { super("reload", "fe.reload", "reload", Phrase.COMMAND_RELOAD, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java index 6c4e490..e7ca644 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java @@ -2,15 +2,15 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; public class RemoveCommand extends SubCommand { - private final Fe plugin; + private final Fe2 plugin; - public RemoveCommand(Fe plugin) { + public RemoveCommand(Fe2 plugin) { super("remove", "fe.remove", "remove [name]", Phrase.COMMAND_REMOVE, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java index 04678e0..6abd88d 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java @@ -3,16 +3,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.database.Account; public class SendCommand extends SubCommand { - private final Fe plugin; + private final Fe2 plugin; - public SendCommand(Fe plugin) { + public SendCommand(Fe2 plugin) { super("send,pay,give", "fe.send", "send [name] [amount]", Phrase.COMMAND_SEND, CommandType.PLAYER); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java index b0d241e..44b334a 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java @@ -2,16 +2,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.database.Account; public class SetCommand extends SubCommand { - private final Fe plugin; + private final Fe2 plugin; - public SetCommand(Fe plugin) { + public SetCommand(Fe2 plugin) { super("set", "fe.set", "set [name] [amount]", Phrase.COMMAND_SET, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java index 9d8a54c..44a4f5a 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java @@ -2,7 +2,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; @@ -11,9 +11,9 @@ import java.util.List; public class TopCommand extends SubCommand { - private final Fe plugin; + private final Fe2 plugin; - public TopCommand(Fe plugin) { + public TopCommand(Fe2 plugin) { super("top", "fe.top", "top", Phrase.COMMAND_TOP, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/database/Account.java b/src/main/java/com/niccholaspage/Fe/database/Account.java index 45ce783..c3ff58c 100644 --- a/src/main/java/com/niccholaspage/Fe/database/Account.java +++ b/src/main/java/com/niccholaspage/Fe/database/Account.java @@ -1,17 +1,17 @@ package com.niccholaspage.Fe.database; import com.niccholaspage.Fe.API; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; public class Account implements Comparable { - private final Fe plugin; + private final Fe2 plugin; private String name; private final String uuid; private final API api; private final Database database; private Double money; - public Account(Fe plugin, String name, String uuid, Database database) + public Account(Fe2 plugin, String name, String uuid, Database database) { this.plugin = plugin; this.name = name; diff --git a/src/main/java/com/niccholaspage/Fe/database/Database.java b/src/main/java/com/niccholaspage/Fe/database/Database.java index f80fdbc..d1ce8dc 100644 --- a/src/main/java/com/niccholaspage/Fe/database/Database.java +++ b/src/main/java/com/niccholaspage/Fe/database/Database.java @@ -2,14 +2,14 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.UUIDFetcher; import java.util.*; public abstract class Database { - private final Fe plugin; + private final Fe2 plugin; private final Set cachedAccounts = new HashSet<>(); protected boolean cacheAccounts; public abstract List getAccounts(); @@ -21,7 +21,7 @@ public abstract class Database public abstract void setVersion(int version); public abstract void clean(); protected abstract void saveAccount(String name, String uuid, double money); - public Database(Fe plugin) + public Database(Fe2 plugin) { this.plugin = plugin; } diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java index 8c25555..16a16cb 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java @@ -1,13 +1,13 @@ package com.niccholaspage.Fe.database.databases; import org.bukkit.configuration.ConfigurationSection; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class MySQLDB extends SQLDB { - public MySQLDB(Fe plugin) + public MySQLDB(Fe2 plugin) { super(plugin, true); } diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java index 5d1110f..99dd857 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java @@ -1,6 +1,6 @@ package com.niccholaspage.Fe.database.databases; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.database.Account; import com.niccholaspage.Fe.database.Database; import java.sql.Connection; @@ -13,7 +13,7 @@ public abstract class SQLDB extends Database { - protected final Fe plugin; + protected final Fe2 plugin; private final boolean supportsModification; private String accountsName = "fe_accounts"; private String versionName = "fe_version"; @@ -21,7 +21,7 @@ public abstract class SQLDB extends Database private String accountsColumnMoney = "money"; private String accountsColumnUUID = "uuid"; private Connection connection; - public SQLDB(Fe plugin, boolean supportsModification) + public SQLDB(Fe2 plugin, boolean supportsModification) { super(plugin); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java index 38320cb..c4071bd 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java @@ -1,7 +1,7 @@ package com.niccholaspage.Fe.database.databases; import org.bukkit.configuration.ConfigurationSection; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import java.io.File; import java.sql.Connection; import java.sql.DriverManager; @@ -9,7 +9,7 @@ public class SQLiteDB extends SQLDB { - public SQLiteDB(Fe plugin) + public SQLiteDB(Fe2 plugin) { super(plugin, false); } diff --git a/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java b/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java index 43b874f..074c8cb 100644 --- a/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java +++ b/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java @@ -6,14 +6,14 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; -import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Fe2; import com.niccholaspage.Fe.database.Account; import com.niccholaspage.Fe.database.Database; public class FePlayerListener implements Listener { - private final Fe plugin; - public FePlayerListener(Fe plugin) + private final Fe2 plugin; + public FePlayerListener(Fe2 plugin) { this.plugin = plugin; plugin.getServer().getPluginManager().registerEvents((Listener)this, plugin); From c8fd00eb75942f7cbb873ae692954b227d2634db Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 30 Mar 2015 16:10:39 +0600 Subject: [PATCH 12/40] Revert main class name, change plugin name via new property ${project.bukkitpluginname}. --- pom.xml | 3 ++- src/main/java/com/niccholaspage/Fe/API.java | 4 ++-- src/main/java/com/niccholaspage/Fe/{Fe2.java => Fe.java} | 4 ++-- src/main/java/com/niccholaspage/Fe/FeCommand.java | 2 +- src/main/java/com/niccholaspage/Fe/Phrase.java | 4 ++-- src/main/java/com/niccholaspage/Fe/VaultHandler.java | 6 +++--- .../niccholaspage/Fe/command/commands/BalanceCommand.java | 6 +++--- .../com/niccholaspage/Fe/command/commands/CleanCommand.java | 6 +++--- .../niccholaspage/Fe/command/commands/CreateCommand.java | 6 +++--- .../niccholaspage/Fe/command/commands/DeductCommand.java | 6 +++--- .../com/niccholaspage/Fe/command/commands/GrantCommand.java | 6 +++--- .../com/niccholaspage/Fe/command/commands/HelpCommand.java | 6 +++--- .../niccholaspage/Fe/command/commands/ReloadCommand.java | 6 +++--- .../niccholaspage/Fe/command/commands/RemoveCommand.java | 6 +++--- .../com/niccholaspage/Fe/command/commands/SendCommand.java | 6 +++--- .../com/niccholaspage/Fe/command/commands/SetCommand.java | 6 +++--- .../com/niccholaspage/Fe/command/commands/TopCommand.java | 6 +++--- src/main/java/com/niccholaspage/Fe/database/Account.java | 6 +++--- src/main/java/com/niccholaspage/Fe/database/Database.java | 6 +++--- .../com/niccholaspage/Fe/database/databases/MySQLDB.java | 4 ++-- .../java/com/niccholaspage/Fe/database/databases/SQLDB.java | 6 +++--- .../com/niccholaspage/Fe/database/databases/SQLiteDB.java | 4 ++-- .../com/niccholaspage/Fe/listeners/FePlayerListener.java | 6 +++--- src/main/resources/plugin.yml | 2 +- 24 files changed, 62 insertions(+), 61 deletions(-) rename src/main/java/com/niccholaspage/Fe/{Fe2.java => Fe.java} (99%) diff --git a/pom.xml b/pom.xml index 1c7fa19..b7716ae 100644 --- a/pom.xml +++ b/pom.xml @@ -4,10 +4,11 @@ com.niccholaspage Fe 0.8.4 - Fe2 + Fe UTF-8 + Fe2 diff --git a/src/main/java/com/niccholaspage/Fe/API.java b/src/main/java/com/niccholaspage/Fe/API.java index dcc7cd8..e2138ed 100644 --- a/src/main/java/com/niccholaspage/Fe/API.java +++ b/src/main/java/com/niccholaspage/Fe/API.java @@ -9,8 +9,8 @@ public class API { - private final Fe2 plugin; - public API(Fe2 plugin) + private final Fe plugin; + public API(Fe plugin) { this.plugin = plugin; } diff --git a/src/main/java/com/niccholaspage/Fe/Fe2.java b/src/main/java/com/niccholaspage/Fe/Fe.java similarity index 99% rename from src/main/java/com/niccholaspage/Fe/Fe2.java rename to src/main/java/com/niccholaspage/Fe/Fe.java index d1ee053..d87ed3c 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe2.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -21,12 +21,12 @@ import java.util.HashSet; import java.util.Set; -public class Fe2 extends JavaPlugin +public class Fe extends JavaPlugin { private final Set databases; private API api; private Database database; - public Fe2() + public Fe() { databases = new HashSet<>(); } diff --git a/src/main/java/com/niccholaspage/Fe/FeCommand.java b/src/main/java/com/niccholaspage/Fe/FeCommand.java index 6966ba4..ae25abd 100644 --- a/src/main/java/com/niccholaspage/Fe/FeCommand.java +++ b/src/main/java/com/niccholaspage/Fe/FeCommand.java @@ -13,7 +13,7 @@ public class FeCommand implements CommandExecutor { private final List commands; - public FeCommand(Fe2 plugin) + public FeCommand(Fe plugin) { commands = new ArrayList<>(); commands.add(new BalanceCommand(plugin)); diff --git a/src/main/java/com/niccholaspage/Fe/Phrase.java b/src/main/java/com/niccholaspage/Fe/Phrase.java index 6832e6f..8d6206e 100644 --- a/src/main/java/com/niccholaspage/Fe/Phrase.java +++ b/src/main/java/com/niccholaspage/Fe/Phrase.java @@ -54,7 +54,7 @@ public enum Phrase COMMAND_CLEAN("Cleans the accounts with default balance", true), COMMAND_RELOAD("Reloads the config", true), ; - private static Fe2 plugin; + private static Fe plugin; private final String defaultMessage; private final boolean categorized; private String message; @@ -68,7 +68,7 @@ private Phrase(String defaultMessage, boolean categorized) this.categorized = categorized; message = defaultMessage + ""; } - public static void init(Fe2 instance) + public static void init(Fe instance) { plugin = instance; } diff --git a/src/main/java/com/niccholaspage/Fe/VaultHandler.java b/src/main/java/com/niccholaspage/Fe/VaultHandler.java index d0317b6..b3ff31c 100644 --- a/src/main/java/com/niccholaspage/Fe/VaultHandler.java +++ b/src/main/java/com/niccholaspage/Fe/VaultHandler.java @@ -18,8 +18,8 @@ public class VaultHandler implements Economy { private final String name = "Fe"; - private Fe2 plugin; - public VaultHandler(Fe2 plugin) + private Fe plugin; + public VaultHandler(Fe plugin) { this.plugin = plugin; Bukkit.getServer().getPluginManager().registerEvents(new EconomyServerListener(), plugin); @@ -288,7 +288,7 @@ public void onPluginEnable(PluginEnableEvent event) Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("Fe"); if(plugin != null && plugin.isEnabled()) { - VaultHandler.this.plugin = (Fe2)plugin; + VaultHandler.this.plugin = (Fe)plugin; VaultHandler.this.plugin.log("Vault support enabled."); } } diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java index 457a211..99023fb 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java @@ -3,16 +3,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.database.Account; public class BalanceCommand extends SubCommand { - private final Fe2 plugin; + private final Fe plugin; - public BalanceCommand(Fe2 plugin) { + public BalanceCommand(Fe plugin) { super("balance,bal", "fe.balance", "(name)", Phrase.COMMAND_BALANCE, CommandType.CONSOLE_WITH_ARGUMENTS); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java index ada47c7..aaadcfa 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java @@ -2,15 +2,15 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; public class CleanCommand extends SubCommand { - private final Fe2 plugin; + private final Fe plugin; - public CleanCommand(Fe2 plugin) { + public CleanCommand(Fe plugin) { super("clean", "fe.clean", "clean", Phrase.COMMAND_CLEAN, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java index 804c2f9..f17220a 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java @@ -2,16 +2,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.database.Account; public class CreateCommand extends SubCommand { - private final Fe2 plugin; + private final Fe plugin; - public CreateCommand(Fe2 plugin) { + public CreateCommand(Fe plugin) { super("create", "fe.create", "create [name]", Phrase.COMMAND_CREATE, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java index 6698539..6d98c66 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java @@ -3,16 +3,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.database.Account; public class DeductCommand extends SubCommand { - private final Fe2 plugin; + private final Fe plugin; - public DeductCommand(Fe2 plugin) { + public DeductCommand(Fe plugin) { super("deduct", "fe.deduct", "deduct [name] [amount]", Phrase.COMMAND_DEDUCT, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java index ab86de6..6404b05 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java @@ -3,16 +3,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.database.Account; public class GrantCommand extends SubCommand { - private final Fe2 plugin; + private final Fe plugin; - public GrantCommand(Fe2 plugin) { + public GrantCommand(Fe plugin) { super("grant", "fe.grant", "grant [name] [amount]", Phrase.COMMAND_GRANT, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java index 29e9fbe..9975353 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java @@ -3,18 +3,18 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.FeCommand; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; public class HelpCommand extends SubCommand { - private final Fe2 plugin; + private final Fe plugin; private final FeCommand command; - public HelpCommand(Fe2 plugin, FeCommand command) { + public HelpCommand(Fe plugin, FeCommand command) { super("help,?", "fe.?", "help", Phrase.COMMAND_HELP, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java index e3524a9..e4b1856 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java @@ -2,15 +2,15 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; public class ReloadCommand extends SubCommand { - private final Fe2 plugin; + private final Fe plugin; - public ReloadCommand(Fe2 plugin) { + public ReloadCommand(Fe plugin) { super("reload", "fe.reload", "reload", Phrase.COMMAND_RELOAD, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java index e7ca644..6c4e490 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java @@ -2,15 +2,15 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; public class RemoveCommand extends SubCommand { - private final Fe2 plugin; + private final Fe plugin; - public RemoveCommand(Fe2 plugin) { + public RemoveCommand(Fe plugin) { super("remove", "fe.remove", "remove [name]", Phrase.COMMAND_REMOVE, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java index 6abd88d..04678e0 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java @@ -3,16 +3,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.database.Account; public class SendCommand extends SubCommand { - private final Fe2 plugin; + private final Fe plugin; - public SendCommand(Fe2 plugin) { + public SendCommand(Fe plugin) { super("send,pay,give", "fe.send", "send [name] [amount]", Phrase.COMMAND_SEND, CommandType.PLAYER); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java index 44b334a..b0d241e 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java @@ -2,16 +2,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; import com.niccholaspage.Fe.database.Account; public class SetCommand extends SubCommand { - private final Fe2 plugin; + private final Fe plugin; - public SetCommand(Fe2 plugin) { + public SetCommand(Fe plugin) { super("set", "fe.set", "set [name] [amount]", Phrase.COMMAND_SET, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java index 44a4f5a..9d8a54c 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java +++ b/src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java @@ -2,7 +2,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.command.CommandType; import com.niccholaspage.Fe.command.SubCommand; @@ -11,9 +11,9 @@ import java.util.List; public class TopCommand extends SubCommand { - private final Fe2 plugin; + private final Fe plugin; - public TopCommand(Fe2 plugin) { + public TopCommand(Fe plugin) { super("top", "fe.top", "top", Phrase.COMMAND_TOP, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/database/Account.java b/src/main/java/com/niccholaspage/Fe/database/Account.java index c3ff58c..45ce783 100644 --- a/src/main/java/com/niccholaspage/Fe/database/Account.java +++ b/src/main/java/com/niccholaspage/Fe/database/Account.java @@ -1,17 +1,17 @@ package com.niccholaspage.Fe.database; import com.niccholaspage.Fe.API; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; public class Account implements Comparable { - private final Fe2 plugin; + private final Fe plugin; private String name; private final String uuid; private final API api; private final Database database; private Double money; - public Account(Fe2 plugin, String name, String uuid, Database database) + public Account(Fe plugin, String name, String uuid, Database database) { this.plugin = plugin; this.name = name; diff --git a/src/main/java/com/niccholaspage/Fe/database/Database.java b/src/main/java/com/niccholaspage/Fe/database/Database.java index d1ce8dc..f80fdbc 100644 --- a/src/main/java/com/niccholaspage/Fe/database/Database.java +++ b/src/main/java/com/niccholaspage/Fe/database/Database.java @@ -2,14 +2,14 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; import com.niccholaspage.Fe.UUIDFetcher; import java.util.*; public abstract class Database { - private final Fe2 plugin; + private final Fe plugin; private final Set cachedAccounts = new HashSet<>(); protected boolean cacheAccounts; public abstract List getAccounts(); @@ -21,7 +21,7 @@ public abstract class Database public abstract void setVersion(int version); public abstract void clean(); protected abstract void saveAccount(String name, String uuid, double money); - public Database(Fe2 plugin) + public Database(Fe plugin) { this.plugin = plugin; } diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java index 16a16cb..8c25555 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java @@ -1,13 +1,13 @@ package com.niccholaspage.Fe.database.databases; import org.bukkit.configuration.ConfigurationSection; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class MySQLDB extends SQLDB { - public MySQLDB(Fe2 plugin) + public MySQLDB(Fe plugin) { super(plugin, true); } diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java index 99dd857..5d1110f 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java @@ -1,6 +1,6 @@ package com.niccholaspage.Fe.database.databases; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.database.Account; import com.niccholaspage.Fe.database.Database; import java.sql.Connection; @@ -13,7 +13,7 @@ public abstract class SQLDB extends Database { - protected final Fe2 plugin; + protected final Fe plugin; private final boolean supportsModification; private String accountsName = "fe_accounts"; private String versionName = "fe_version"; @@ -21,7 +21,7 @@ public abstract class SQLDB extends Database private String accountsColumnMoney = "money"; private String accountsColumnUUID = "uuid"; private Connection connection; - public SQLDB(Fe2 plugin, boolean supportsModification) + public SQLDB(Fe plugin, boolean supportsModification) { super(plugin); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java b/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java index c4071bd..38320cb 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java +++ b/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java @@ -1,7 +1,7 @@ package com.niccholaspage.Fe.database.databases; import org.bukkit.configuration.ConfigurationSection; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import java.io.File; import java.sql.Connection; import java.sql.DriverManager; @@ -9,7 +9,7 @@ public class SQLiteDB extends SQLDB { - public SQLiteDB(Fe2 plugin) + public SQLiteDB(Fe plugin) { super(plugin, false); } diff --git a/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java b/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java index 074c8cb..43b874f 100644 --- a/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java +++ b/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java @@ -6,14 +6,14 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; -import com.niccholaspage.Fe.Fe2; +import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.database.Account; import com.niccholaspage.Fe.database.Database; public class FePlayerListener implements Listener { - private final Fe2 plugin; - public FePlayerListener(Fe2 plugin) + private final Fe plugin; + public FePlayerListener(Fe plugin) { this.plugin = plugin; plugin.getServer().getPluginManager().registerEvents((Listener)this, plugin); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index efd4bd7..96ec3bf 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,4 +1,4 @@ -name: ${project.name} +name: ${project.bukkitpluginname} main: ${project.groupId}.${project.artifactId}.${project.name} version: ${project.version} load: startup From f95d47272472dedee518a5e302ee11c276808169 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 6 Apr 2015 13:56:50 +0600 Subject: [PATCH 13/40] Rearrange classes --- .../com/niccholaspage/Fe/{ => API}/API.java | 5 +- .../Fe/{database => API}/Account.java | 4 +- .../Fe/{command => API}/CommandType.java | 2 +- .../Fe/{database => API}/Database.java | 7 ++- .../Fe/{command => API}/SubCommand.java | 2 +- .../commands => Commands}/BalanceCommand.java | 8 ++-- .../commands => Commands}/CleanCommand.java | 6 +-- .../Fe/Commands/CreateCommand.java | 39 ++++++++++++++++ .../commands => Commands}/DeductCommand.java | 8 ++-- .../commands => Commands}/GrantCommand.java | 8 ++-- .../commands => Commands}/HelpCommand.java | 12 ++--- .../commands => Commands}/ReloadCommand.java | 6 +-- .../commands => Commands}/RemoveCommand.java | 6 +-- .../commands => Commands}/SendCommand.java | 8 ++-- .../commands => Commands}/SetCommand.java | 8 ++-- .../commands => Commands}/TopCommand.java | 8 ++-- .../databases => Databases}/MySQLDB.java | 2 +- .../databases => Databases}/SQLDB.java | 6 +-- .../databases => Databases}/SQLiteDB.java | 2 +- src/main/java/com/niccholaspage/Fe/Fe.java | 12 ++--- .../Fe/{FeCommand.java => FeCommands.java} | 20 ++++++-- .../Fe/{listeners => }/FePlayerListener.java | 7 ++- .../com/niccholaspage/Fe/VaultHandler.java | 2 +- .../Fe/command/commands/CreateCommand.java | 46 ------------------- 24 files changed, 118 insertions(+), 116 deletions(-) rename src/main/java/com/niccholaspage/Fe/{ => API}/API.java (97%) rename src/main/java/com/niccholaspage/Fe/{database => API}/Account.java (96%) rename src/main/java/com/niccholaspage/Fe/{command => API}/CommandType.java (68%) rename src/main/java/com/niccholaspage/Fe/{database => API}/Database.java (97%) rename src/main/java/com/niccholaspage/Fe/{command => API}/SubCommand.java (96%) rename src/main/java/com/niccholaspage/Fe/{command/commands => Commands}/BalanceCommand.java (88%) rename src/main/java/com/niccholaspage/Fe/{command/commands => Commands}/CleanCommand.java (81%) create mode 100644 src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java rename src/main/java/com/niccholaspage/Fe/{command/commands => Commands}/DeductCommand.java (88%) rename src/main/java/com/niccholaspage/Fe/{command/commands => Commands}/GrantCommand.java (89%) rename src/main/java/com/niccholaspage/Fe/{command/commands => Commands}/HelpCommand.java (84%) rename src/main/java/com/niccholaspage/Fe/{command/commands => Commands}/ReloadCommand.java (81%) rename src/main/java/com/niccholaspage/Fe/{command/commands => Commands}/RemoveCommand.java (87%) rename src/main/java/com/niccholaspage/Fe/{command/commands => Commands}/SendCommand.java (91%) rename src/main/java/com/niccholaspage/Fe/{command/commands => Commands}/SetCommand.java (87%) rename src/main/java/com/niccholaspage/Fe/{command/commands => Commands}/TopCommand.java (86%) rename src/main/java/com/niccholaspage/Fe/{database/databases => Databases}/MySQLDB.java (97%) rename src/main/java/com/niccholaspage/Fe/{database/databases => Databases}/SQLDB.java (98%) rename src/main/java/com/niccholaspage/Fe/{database/databases => Databases}/SQLiteDB.java (93%) rename src/main/java/com/niccholaspage/Fe/{FeCommand.java => FeCommands.java} (85%) rename src/main/java/com/niccholaspage/Fe/{listeners => }/FePlayerListener.java (86%) delete mode 100644 src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java diff --git a/src/main/java/com/niccholaspage/Fe/API.java b/src/main/java/com/niccholaspage/Fe/API/API.java similarity index 97% rename from src/main/java/com/niccholaspage/Fe/API.java rename to src/main/java/com/niccholaspage/Fe/API/API.java index e2138ed..486528b 100644 --- a/src/main/java/com/niccholaspage/Fe/API.java +++ b/src/main/java/com/niccholaspage/Fe/API/API.java @@ -1,7 +1,8 @@ -package com.niccholaspage.Fe; +package com.niccholaspage.Fe.API; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; import org.bukkit.ChatColor; -import com.niccholaspage.Fe.database.Account; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.List; diff --git a/src/main/java/com/niccholaspage/Fe/database/Account.java b/src/main/java/com/niccholaspage/Fe/API/Account.java similarity index 96% rename from src/main/java/com/niccholaspage/Fe/database/Account.java rename to src/main/java/com/niccholaspage/Fe/API/Account.java index 45ce783..44e665e 100644 --- a/src/main/java/com/niccholaspage/Fe/database/Account.java +++ b/src/main/java/com/niccholaspage/Fe/API/Account.java @@ -1,6 +1,6 @@ -package com.niccholaspage.Fe.database; +package com.niccholaspage.Fe.API; -import com.niccholaspage.Fe.API; +import com.niccholaspage.Fe.API.API; import com.niccholaspage.Fe.Fe; public class Account implements Comparable diff --git a/src/main/java/com/niccholaspage/Fe/command/CommandType.java b/src/main/java/com/niccholaspage/Fe/API/CommandType.java similarity index 68% rename from src/main/java/com/niccholaspage/Fe/command/CommandType.java rename to src/main/java/com/niccholaspage/Fe/API/CommandType.java index 1d2abe8..de58c02 100644 --- a/src/main/java/com/niccholaspage/Fe/command/CommandType.java +++ b/src/main/java/com/niccholaspage/Fe/API/CommandType.java @@ -1,4 +1,4 @@ -package com.niccholaspage.Fe.command; +package com.niccholaspage.Fe.API; public enum CommandType { diff --git a/src/main/java/com/niccholaspage/Fe/database/Database.java b/src/main/java/com/niccholaspage/Fe/API/Database.java similarity index 97% rename from src/main/java/com/niccholaspage/Fe/database/Database.java rename to src/main/java/com/niccholaspage/Fe/API/Database.java index f80fdbc..0c6739b 100644 --- a/src/main/java/com/niccholaspage/Fe/database/Database.java +++ b/src/main/java/com/niccholaspage/Fe/API/Database.java @@ -1,4 +1,4 @@ -package com.niccholaspage.Fe.database; +package com.niccholaspage.Fe.API; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; @@ -73,11 +73,10 @@ protected boolean convertToUUID() List names = new ArrayList<>(); for(Account account : accounts) names.add(account.getName()); - UUIDFetcher fetcher = new UUIDFetcher(names); - Map response; try { - response = fetcher.call(); + UUIDFetcher fetcher = new UUIDFetcher(names); + Map response = fetcher.call(); removeAllAccounts(); for(String name : response.keySet()) for(String accountName : new HashMap<>(accountMonies).keySet()) diff --git a/src/main/java/com/niccholaspage/Fe/command/SubCommand.java b/src/main/java/com/niccholaspage/Fe/API/SubCommand.java similarity index 96% rename from src/main/java/com/niccholaspage/Fe/command/SubCommand.java rename to src/main/java/com/niccholaspage/Fe/API/SubCommand.java index 327e50a..8cc81b8 100644 --- a/src/main/java/com/niccholaspage/Fe/command/SubCommand.java +++ b/src/main/java/com/niccholaspage/Fe/API/SubCommand.java @@ -1,4 +1,4 @@ -package com.niccholaspage.Fe.command; +package com.niccholaspage.Fe.API; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java similarity index 88% rename from src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java rename to src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java index 99023fb..81506c7 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/BalanceCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java @@ -1,13 +1,13 @@ -package com.niccholaspage.Fe.command.commands; +package com.niccholaspage.Fe.Commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; -import com.niccholaspage.Fe.command.CommandType; -import com.niccholaspage.Fe.command.SubCommand; -import com.niccholaspage.Fe.database.Account; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.API.Account; public class BalanceCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java similarity index 81% rename from src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java rename to src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java index aaadcfa..cd15c77 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/CleanCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java @@ -1,11 +1,11 @@ -package com.niccholaspage.Fe.command.commands; +package com.niccholaspage.Fe.Commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; -import com.niccholaspage.Fe.command.CommandType; -import com.niccholaspage.Fe.command.SubCommand; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; public class CleanCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java new file mode 100644 index 0000000..a2448a3 --- /dev/null +++ b/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java @@ -0,0 +1,39 @@ +package com.niccholaspage.Fe.Commands; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.API.Account; + +public class CreateCommand extends SubCommand +{ + private final Fe plugin; + public CreateCommand(Fe plugin) + { + super("create", "fe.create", "create [name]", Phrase.COMMAND_CREATE, CommandType.CONSOLE); + this.plugin = plugin; + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + if(args.length < 1) + return false; + String name = args[0]; + if(plugin.getAPI().accountExists(name, null)) + { + Phrase.ACCOUNT_EXISTS.sendWithPrefix(sender); + return true; + } + if(name.length() > 16) + { + Phrase.NAME_TOO_LONG.sendWithPrefix(sender); + return true; + } + Account account = plugin.getAPI().updateAccount(name, null); + Phrase.ACCOUNT_CREATED.sendWithPrefix(sender, Phrase.PRIMARY_COLOR.parse() + account.getName() + Phrase.SECONDARY_COLOR.parse()); + return true; + } +} diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java similarity index 88% rename from src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java rename to src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java index 6d98c66..a0b4d05 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/DeductCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java @@ -1,13 +1,13 @@ -package com.niccholaspage.Fe.command.commands; +package com.niccholaspage.Fe.Commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; -import com.niccholaspage.Fe.command.CommandType; -import com.niccholaspage.Fe.command.SubCommand; -import com.niccholaspage.Fe.database.Account; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.API.Account; public class DeductCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java similarity index 89% rename from src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java rename to src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java index 6404b05..aaf37c3 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/GrantCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java @@ -1,13 +1,13 @@ -package com.niccholaspage.Fe.command.commands; +package com.niccholaspage.Fe.Commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; -import com.niccholaspage.Fe.command.CommandType; -import com.niccholaspage.Fe.command.SubCommand; -import com.niccholaspage.Fe.database.Account; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.API.Account; public class GrantCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java similarity index 84% rename from src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java rename to src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java index 9975353..33971f3 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/HelpCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java @@ -1,20 +1,20 @@ -package com.niccholaspage.Fe.command.commands; +package com.niccholaspage.Fe.Commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.FeCommand; +import com.niccholaspage.Fe.FeCommands; import com.niccholaspage.Fe.Phrase; -import com.niccholaspage.Fe.command.CommandType; -import com.niccholaspage.Fe.command.SubCommand; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; public class HelpCommand extends SubCommand { private final Fe plugin; - private final FeCommand command; + private final FeCommands command; - public HelpCommand(Fe plugin, FeCommand command) { + public HelpCommand(Fe plugin, FeCommands command) { super("help,?", "fe.?", "help", Phrase.COMMAND_HELP, CommandType.CONSOLE); this.plugin = plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java similarity index 81% rename from src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java rename to src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java index e4b1856..7ea8d24 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/ReloadCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java @@ -1,11 +1,11 @@ -package com.niccholaspage.Fe.command.commands; +package com.niccholaspage.Fe.Commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; -import com.niccholaspage.Fe.command.CommandType; -import com.niccholaspage.Fe.command.SubCommand; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; public class ReloadCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java similarity index 87% rename from src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java rename to src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java index 6c4e490..3b3efbf 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/RemoveCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java @@ -1,11 +1,11 @@ -package com.niccholaspage.Fe.command.commands; +package com.niccholaspage.Fe.Commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; -import com.niccholaspage.Fe.command.CommandType; -import com.niccholaspage.Fe.command.SubCommand; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; public class RemoveCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java similarity index 91% rename from src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java rename to src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java index 04678e0..6f2ac32 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/SendCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java @@ -1,13 +1,13 @@ -package com.niccholaspage.Fe.command.commands; +package com.niccholaspage.Fe.Commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; -import com.niccholaspage.Fe.command.CommandType; -import com.niccholaspage.Fe.command.SubCommand; -import com.niccholaspage.Fe.database.Account; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.API.Account; public class SendCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java similarity index 87% rename from src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java rename to src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java index b0d241e..5f9d494 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/SetCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java @@ -1,12 +1,12 @@ -package com.niccholaspage.Fe.command.commands; +package com.niccholaspage.Fe.Commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; -import com.niccholaspage.Fe.command.CommandType; -import com.niccholaspage.Fe.command.SubCommand; -import com.niccholaspage.Fe.database.Account; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.API.Account; public class SetCommand extends SubCommand { private final Fe plugin; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java similarity index 86% rename from src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java rename to src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java index 9d8a54c..0726cb1 100644 --- a/src/main/java/com/niccholaspage/Fe/command/commands/TopCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java @@ -1,12 +1,12 @@ -package com.niccholaspage.Fe.command.commands; +package com.niccholaspage.Fe.Commands; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrase; -import com.niccholaspage.Fe.command.CommandType; -import com.niccholaspage.Fe.command.SubCommand; -import com.niccholaspage.Fe.database.Account; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.API.Account; import java.util.List; diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java similarity index 97% rename from src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java rename to src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index 8c25555..8db00f4 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -1,4 +1,4 @@ -package com.niccholaspage.Fe.database.databases; +package com.niccholaspage.Fe.Databases; import org.bukkit.configuration.ConfigurationSection; import com.niccholaspage.Fe.Fe; import java.sql.Connection; diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java similarity index 98% rename from src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java rename to src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java index 5d1110f..ff7be26 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/SQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java @@ -1,8 +1,8 @@ -package com.niccholaspage.Fe.database.databases; +package com.niccholaspage.Fe.Databases; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.database.Account; -import com.niccholaspage.Fe.database.Database; +import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.API.Database; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java b/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java similarity index 93% rename from src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java rename to src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java index 38320cb..8f7713e 100644 --- a/src/main/java/com/niccholaspage/Fe/database/databases/SQLiteDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java @@ -1,4 +1,4 @@ -package com.niccholaspage.Fe.database.databases; +package com.niccholaspage.Fe.Databases; import org.bukkit.configuration.ConfigurationSection; import com.niccholaspage.Fe.Fe; diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index d87ed3c..36d4d3e 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -1,5 +1,6 @@ package com.niccholaspage.Fe; +import com.niccholaspage.Fe.API.API; import net.milkbowl.vault.economy.Economy; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; @@ -11,11 +12,10 @@ import org.mcstats.Metrics; import org.mcstats.Metrics.Graph; import org.mcstats.Metrics.Plotter; -import com.niccholaspage.Fe.database.Account; -import com.niccholaspage.Fe.database.Database; -import com.niccholaspage.Fe.database.databases.MySQLDB; -import com.niccholaspage.Fe.database.databases.SQLiteDB; -import com.niccholaspage.Fe.listeners.FePlayerListener; +import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.API.Database; +import com.niccholaspage.Fe.Databases.MySQLDB; +import com.niccholaspage.Fe.Databases.SQLiteDB; import java.io.File; import java.io.IOException; import java.util.HashSet; @@ -57,7 +57,7 @@ public void onEnable() api = new API(this); if(!setupDatabase()) return; - getCommand("fe").setExecutor(new FeCommand(this)); + getCommand("fe").setExecutor(new FeCommands(this)); PluginManager pm = getServer().getPluginManager(); pm.registerEvents(new FePlayerListener(this), this); setupVault(); diff --git a/src/main/java/com/niccholaspage/Fe/FeCommand.java b/src/main/java/com/niccholaspage/Fe/FeCommands.java similarity index 85% rename from src/main/java/com/niccholaspage/Fe/FeCommand.java rename to src/main/java/com/niccholaspage/Fe/FeCommands.java index ae25abd..cceef76 100644 --- a/src/main/java/com/niccholaspage/Fe/FeCommand.java +++ b/src/main/java/com/niccholaspage/Fe/FeCommands.java @@ -1,19 +1,29 @@ package com.niccholaspage.Fe; +import com.niccholaspage.Fe.Commands.CreateCommand; +import com.niccholaspage.Fe.Commands.HelpCommand; +import com.niccholaspage.Fe.Commands.ReloadCommand; +import com.niccholaspage.Fe.Commands.BalanceCommand; +import com.niccholaspage.Fe.Commands.DeductCommand; +import com.niccholaspage.Fe.Commands.GrantCommand; +import com.niccholaspage.Fe.Commands.TopCommand; +import com.niccholaspage.Fe.Commands.SendCommand; +import com.niccholaspage.Fe.Commands.SetCommand; +import com.niccholaspage.Fe.Commands.RemoveCommand; +import com.niccholaspage.Fe.Commands.CleanCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.command.CommandType; -import com.niccholaspage.Fe.command.SubCommand; -import com.niccholaspage.Fe.command.commands.*; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; import java.util.ArrayList; import java.util.List; -public class FeCommand implements CommandExecutor +public class FeCommands implements CommandExecutor { private final List commands; - public FeCommand(Fe plugin) + public FeCommands(Fe plugin) { commands = new ArrayList<>(); commands.add(new BalanceCommand(plugin)); diff --git a/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java b/src/main/java/com/niccholaspage/Fe/FePlayerListener.java similarity index 86% rename from src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java rename to src/main/java/com/niccholaspage/Fe/FePlayerListener.java index 43b874f..ffb1250 100644 --- a/src/main/java/com/niccholaspage/Fe/listeners/FePlayerListener.java +++ b/src/main/java/com/niccholaspage/Fe/FePlayerListener.java @@ -1,4 +1,4 @@ -package com.niccholaspage.Fe.listeners; +package com.niccholaspage.Fe; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -6,9 +6,8 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.database.Account; -import com.niccholaspage.Fe.database.Database; +import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.API.Database; public class FePlayerListener implements Listener { diff --git a/src/main/java/com/niccholaspage/Fe/VaultHandler.java b/src/main/java/com/niccholaspage/Fe/VaultHandler.java index b3ff31c..4353da3 100644 --- a/src/main/java/com/niccholaspage/Fe/VaultHandler.java +++ b/src/main/java/com/niccholaspage/Fe/VaultHandler.java @@ -11,7 +11,7 @@ import org.bukkit.event.server.PluginDisableEvent; import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.plugin.Plugin; -import com.niccholaspage.Fe.database.Account; +import com.niccholaspage.Fe.API.Account; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java b/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java deleted file mode 100644 index f17220a..0000000 --- a/src/main/java/com/niccholaspage/Fe/command/commands/CreateCommand.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.niccholaspage.Fe.command.commands; - -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; -import com.niccholaspage.Fe.command.CommandType; -import com.niccholaspage.Fe.command.SubCommand; -import com.niccholaspage.Fe.database.Account; - -public class CreateCommand extends SubCommand { - private final Fe plugin; - - public CreateCommand(Fe plugin) { - super("create", "fe.create", "create [name]", Phrase.COMMAND_CREATE, CommandType.CONSOLE); - - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - if (args.length < 1) { - return false; - } - - String name = args[0]; - - if (plugin.getAPI().accountExists(name, null)) { - Phrase.ACCOUNT_EXISTS.sendWithPrefix(sender); - - return true; - } - - if (name.length() > 16) { - Phrase.NAME_TOO_LONG.sendWithPrefix(sender); - - return true; - } - - Account account = plugin.getAPI().updateAccount( name, null ); - - Phrase.ACCOUNT_CREATED.sendWithPrefix(sender, Phrase.PRIMARY_COLOR.parse() + account.getName() + Phrase.SECONDARY_COLOR.parse()); - - return true; - } -} From 7e1c4dcea6ebc686230db56ed36e10cec6299885 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 6 Apr 2015 15:30:08 +0600 Subject: [PATCH 14/40] A lot of little improvements. --- .../java/com/niccholaspage/Fe/API/API.java | 16 +-- .../com/niccholaspage/Fe/API/Account.java | 17 ++- .../Fe/Commands/BalanceCommand.java | 71 +++++------ .../Fe/Commands/CleanCommand.java | 32 +++-- .../Fe/Commands/DeductCommand.java | 81 ++++++------- .../Fe/Commands/GrantCommand.java | 92 +++++++------- .../Fe/Commands/HelpCommand.java | 73 +++++------ .../Fe/Commands/ReloadCommand.java | 32 +++-- .../Fe/Commands/RemoveCommand.java | 52 ++++---- .../Fe/Commands/SendCommand.java | 114 ++++++++---------- .../niccholaspage/Fe/Commands/SetCommand.java | 80 ++++++------ .../niccholaspage/Fe/Commands/TopCommand.java | 61 +++++----- .../com/niccholaspage/Fe/Databases/SQLDB.java | 3 - src/main/java/com/niccholaspage/Fe/Fe.java | 72 ++++------- .../niccholaspage/Fe/FePlayerListener.java | 2 +- .../java/com/niccholaspage/Fe/Phrase.java | 18 +++ 16 files changed, 361 insertions(+), 455 deletions(-) diff --git a/src/main/java/com/niccholaspage/Fe/API/API.java b/src/main/java/com/niccholaspage/Fe/API/API.java index 486528b..14aab76 100644 --- a/src/main/java/com/niccholaspage/Fe/API/API.java +++ b/src/main/java/com/niccholaspage/Fe/API/API.java @@ -17,15 +17,15 @@ public API(Fe plugin) } public List getTopAccounts() { - return plugin.getFeDatabase().getTopAccounts(plugin.getConfig().getInt("topsize")); + return plugin.getCurrentDatabase().getTopAccounts(plugin.getConfig().getInt("topsize")); } public List getTopAccounts(int size) { - return plugin.getFeDatabase().getTopAccounts(size); + return plugin.getCurrentDatabase().getTopAccounts(size); } public List getAccounts() { - return plugin.getFeDatabase().getAccounts(); + return plugin.getCurrentDatabase().getAccounts(); } public double getDefaultHoldings() { @@ -78,19 +78,19 @@ public Account createAccount(String name, String uuid) } public Account updateAccount(String name, String uuid) { - return plugin.getFeDatabase().updateAccount(name, uuid); + return plugin.getCurrentDatabase().updateAccount(name, uuid); } public void removeAccount(String name, String uuid) { - plugin.getFeDatabase().removeAccount(name, uuid); + plugin.getCurrentDatabase().removeAccount(name, uuid); } public Account getAccount(String name, String uuid) { - return plugin.getFeDatabase().getAccount(name, uuid); + return plugin.getCurrentDatabase().getAccount(name, uuid); } public boolean accountExists(String name, String uuid) { - return plugin.getFeDatabase().accountExists(name, uuid); + return plugin.getCurrentDatabase().accountExists(name, uuid); } public String formatNoColor(double amount) { @@ -142,6 +142,6 @@ public String format(Account account) } public void clean() { - plugin.getFeDatabase().clean(); + plugin.getCurrentDatabase().clean(); } } diff --git a/src/main/java/com/niccholaspage/Fe/API/Account.java b/src/main/java/com/niccholaspage/Fe/API/Account.java index 44e665e..0ca17c0 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Account.java +++ b/src/main/java/com/niccholaspage/Fe/API/Account.java @@ -1,23 +1,20 @@ package com.niccholaspage.Fe.API; -import com.niccholaspage.Fe.API.API; import com.niccholaspage.Fe.Fe; public class Account implements Comparable { private final Fe plugin; + private final Database database; private String name; private final String uuid; - private final API api; - private final Database database; private Double money; public Account(Fe plugin, String name, String uuid, Database database) { this.plugin = plugin; + this.database = database; this.name = name; this.uuid = uuid; - this.api = plugin.getAPI(); - this.database = database; this.money = null; } public String getName() @@ -55,11 +52,11 @@ public void setMoney(double money) Double currentMoney = getMoney(); if(currentMoney != null && currentMoney == money) return; - if(money < 0 && !api.isCurrencyNegative()) + if(money < 0 && !plugin.getAPI().isCurrencyNegative()) money = 0; - currentMoney = api.getMoneyRounded(money); - if(api.getMaxHoldings() > 0 && currentMoney > api.getMaxHoldings()) - currentMoney = api.getMoneyRounded(api.getMaxHoldings()); + currentMoney = plugin.getAPI().getMoneyRounded(money); + if(plugin.getAPI().getMaxHoldings() > 0 && currentMoney > plugin.getAPI().getMaxHoldings()) + currentMoney = plugin.getAPI().getMoneyRounded(plugin.getAPI().getMaxHoldings()); if(!database.cacheAccounts() || plugin.getServer().getPlayerExact(getName()) == null) save(currentMoney); else @@ -75,7 +72,7 @@ public void deposit(double amount) } public boolean canReceive(double amount) { - return api.getMaxHoldings() == -1 || amount + getMoney() < api.getMaxHoldings(); + return plugin.getAPI().getMaxHoldings() == -1 || amount + getMoney() < plugin.getAPI().getMaxHoldings(); } public boolean has(double amount) { diff --git a/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java index 81506c7..9ab052f 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java @@ -9,43 +9,36 @@ import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; -public class BalanceCommand extends SubCommand { - private final Fe plugin; - - public BalanceCommand(Fe plugin) { - super("balance,bal", "fe.balance", "(name)", Phrase.COMMAND_BALANCE, CommandType.CONSOLE_WITH_ARGUMENTS); - - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - Account account; - - if (args.length > 0 && sender.hasPermission("fe.balance.other")) { - account = plugin.getShortenedAccount(args[0]); - - if (account == null) { - Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); - - return true; - } - - Phrase.ACCOUNT_HAS.sendWithPrefix(sender, account.getName(), plugin.getAPI().format(account)); - } else { - Player player = plugin.getServer().getPlayer(sender.getName()); - - account = plugin.getAPI().getAccount(sender.getName(), player != null ? player.getUniqueId().toString() : null); - - if (account == null) { - Phrase.YOUR_ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); - - return true; - } - - Phrase.YOU_HAVE.sendWithPrefix(sender, plugin.getAPI().format(account)); - } - - return true; - } +public class BalanceCommand extends SubCommand +{ + private final Fe plugin; + public BalanceCommand(Fe plugin) + { + super("balance,bal", "fe.balance", "(name)", Phrase.COMMAND_BALANCE, CommandType.CONSOLE_WITH_ARGUMENTS); + this.plugin = plugin; + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + if(args.length > 0 && sender.hasPermission("fe.balance.other")) + { + Account account = plugin.getShortenedAccount(args[0]); + if(account == null) + { + Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + return true; + } + Phrase.ACCOUNT_HAS.sendWithPrefix(sender, account.getName(), plugin.getAPI().format(account)); + } else { + Player player = plugin.getServer().getPlayer(sender.getName()); + Account account = plugin.getAPI().getAccount(sender.getName(), player != null ? player.getUniqueId().toString() : null); + if(account == null) + { + Phrase.YOUR_ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + return true; + } + Phrase.YOU_HAVE.sendWithPrefix(sender, plugin.getAPI().format(account)); + } + return true; + } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java index cd15c77..54b4f20 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java @@ -7,21 +7,19 @@ import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; -public class CleanCommand extends SubCommand { - private final Fe plugin; - - public CleanCommand(Fe plugin) { - super("clean", "fe.clean", "clean", Phrase.COMMAND_CLEAN, CommandType.CONSOLE); - - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - plugin.getAPI().clean(); - - Phrase.ACCOUNT_CLEANED.sendWithPrefix(sender); - - return true; - } +public class CleanCommand extends SubCommand +{ + private final Fe plugin; + public CleanCommand(Fe plugin) + { + super("clean", "fe.clean", "clean", Phrase.COMMAND_CLEAN, CommandType.CONSOLE); + this.plugin = plugin; + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + plugin.getAPI().clean(); + Phrase.ACCOUNT_CLEANED.sendWithPrefix(sender); + return true; + } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java index a0b4d05..e5a74b1 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java @@ -9,49 +9,38 @@ import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; -public class DeductCommand extends SubCommand { - private final Fe plugin; - - public DeductCommand(Fe plugin) { - super("deduct", "fe.deduct", "deduct [name] [amount]", Phrase.COMMAND_DEDUCT, CommandType.CONSOLE); - - this.plugin = plugin; - } - - @SuppressWarnings("deprecation") - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - if (args.length < 2) { - return false; - } - - double money; - - try { - money = Double.parseDouble(args[1]); - } catch (NumberFormatException e) { - return false; - } - - Account victim = plugin.getShortenedAccount(args[0]); - - if (victim == null) { - Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); - return true; - } - - String formattedMoney = plugin.getAPI().format(money); - - victim.withdraw(money); - - Phrase.PLAYER_DEDUCT_MONEY.sendWithPrefix(sender, formattedMoney, victim.getName()); - - Player receiverPlayer = plugin.getServer().getPlayerExact(victim.getName()); - - if (receiverPlayer != null) { - Phrase.PLAYER_DEDUCTED_MONEY.sendWithPrefix(receiverPlayer, formattedMoney, sender.getName()); - } - - return true; - } -} +public class DeductCommand extends SubCommand +{ + private final Fe plugin; + public DeductCommand(Fe plugin) + { + super("deduct", "fe.deduct", "deduct [name] [amount]", Phrase.COMMAND_DEDUCT, CommandType.CONSOLE); + this.plugin = plugin; + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + if(args.length < 2) + return false; + double money; + try + { + money = Double.parseDouble(args[1]); + } catch(NumberFormatException e) { + return false; + } + Account victim = plugin.getShortenedAccount(args[0]); + if(victim == null) + { + Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + return true; + } + String formattedMoney = plugin.getAPI().format(money); + victim.withdraw(money); + Phrase.PLAYER_DEDUCT_MONEY.sendWithPrefix(sender, formattedMoney, victim.getName()); + Player receiverPlayer = plugin.getServer().getPlayerExact(victim.getName()); + if(receiverPlayer != null) + Phrase.PLAYER_DEDUCTED_MONEY.sendWithPrefix(receiverPlayer, formattedMoney, sender.getName()); + return true; + } +} diff --git a/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java index aaf37c3..6855ad7 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java @@ -9,54 +9,44 @@ import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; -public class GrantCommand extends SubCommand { - private final Fe plugin; - - public GrantCommand(Fe plugin) { - super("grant", "fe.grant", "grant [name] [amount]", Phrase.COMMAND_GRANT, CommandType.CONSOLE); - - this.plugin = plugin; - } - - @SuppressWarnings("deprecation") - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - if (args.length < 2) { - return false; - } - - double money; - - try { - money = Double.parseDouble(args[1]); - } catch (NumberFormatException e) { - return false; - } - - Account victim = plugin.getShortenedAccount(args[0]); - - if (victim == null) { - Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); - return true; - } - - if (!victim.canReceive(money)) { - Phrase.MAX_BALANCE_REACHED.sendWithPrefix(sender, victim.getName()); - return true; - } - - String formattedMoney = plugin.getAPI().format(money); - - victim.deposit(money); - - Phrase.PLAYER_GRANT_MONEY.sendWithPrefix(sender, formattedMoney, victim.getName()); - - Player receiverPlayer = plugin.getServer().getPlayerExact(victim.getName()); - - if (receiverPlayer != null) { - Phrase.PLAYER_GRANTED_MONEY.sendWithPrefix(receiverPlayer, formattedMoney, sender.getName()); - } - - return true; - } -} +public class GrantCommand extends SubCommand +{ + private final Fe plugin; + public GrantCommand(Fe plugin) + { + super("grant", "fe.grant", "grant [name] [amount]", Phrase.COMMAND_GRANT, CommandType.CONSOLE); + this.plugin = plugin; + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + if(args.length < 2) + return false; + double money; + try + { + money = Double.parseDouble(args[1]); + } catch(NumberFormatException e) + { + return false; + } + Account victim = plugin.getShortenedAccount(args[0]); + if(victim == null) + { + Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + return true; + } + if(!victim.canReceive(money)) + { + Phrase.MAX_BALANCE_REACHED.sendWithPrefix(sender, victim.getName()); + return true; + } + String formattedMoney = plugin.getAPI().format(money); + victim.deposit(money); + Phrase.PLAYER_GRANT_MONEY.sendWithPrefix(sender, formattedMoney, victim.getName()); + Player receiverPlayer = plugin.getServer().getPlayerExact(victim.getName()); + if(receiverPlayer != null) + Phrase.PLAYER_GRANTED_MONEY.sendWithPrefix(receiverPlayer, formattedMoney, sender.getName()); + return true; + } +} diff --git a/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java index 33971f3..55fbb5a 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java @@ -9,47 +9,34 @@ import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; -public class HelpCommand extends SubCommand { - private final Fe plugin; - - private final FeCommands command; - - public HelpCommand(Fe plugin, FeCommands command) { - super("help,?", "fe.?", "help", Phrase.COMMAND_HELP, CommandType.CONSOLE); - - this.plugin = plugin; - - this.command = command; - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - sender.sendMessage(plugin.getEqualMessage(Phrase.HELP.parse(), 10)); - - String operatorColor = Phrase.TERTIARY_COLOR.parse(); - - String textColor = Phrase.SECONDARY_COLOR.parse(); - - sender.sendMessage(textColor + Phrase.HELP_ARGUMENTS.parse(operatorColor + "[]" + textColor, operatorColor + "()" + textColor)); - - for (SubCommand command : this.command.getCommands()) { - if (command.getName().equalsIgnoreCase(getName())) { - continue; - } - - if (!sender.hasPermission(command.getPermission())) { - continue; - } - - if (!(sender instanceof Player) && command.getCommandType() == CommandType.PLAYER) { - continue; - } - - sender.sendMessage(this.command.parse(commandLabel, command) + textColor + " - " + command.getDescription().parse()); - } - - sender.sendMessage(plugin.getEndEqualMessage(27)); - - return true; - } +public class HelpCommand extends SubCommand +{ + private final Fe plugin; + private final FeCommands command; + public HelpCommand(Fe plugin, FeCommands command) + { + super("help,?", "fe.?", "help", Phrase.COMMAND_HELP, CommandType.CONSOLE); + this.plugin = plugin; + this.command = command; + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + sender.sendMessage(plugin.getEqualMessage(Phrase.HELP.parse(), 10)); + String operatorColor = Phrase.TERTIARY_COLOR.parse(); + String textColor = Phrase.SECONDARY_COLOR.parse(); + sender.sendMessage(textColor + Phrase.HELP_ARGUMENTS.parse(operatorColor + "[]" + textColor, operatorColor + "()" + textColor)); + for(SubCommand subcmd : this.command.getCommands()) + { + if(subcmd.getName().equalsIgnoreCase(getName())) + continue; + if(!sender.hasPermission(subcmd.getPermission())) + continue; + if(!(sender instanceof Player) && subcmd.getCommandType() == CommandType.PLAYER) + continue; + sender.sendMessage(this.command.parse(commandLabel, subcmd) + textColor + " - " + subcmd.getDescription().parse()); + } + sender.sendMessage(plugin.getEndEqualMessage(27)); + return true; + } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java index 7ea8d24..78cae7c 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java @@ -7,21 +7,19 @@ import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; -public class ReloadCommand extends SubCommand { - private final Fe plugin; - - public ReloadCommand(Fe plugin) { - super("reload", "fe.reload", "reload", Phrase.COMMAND_RELOAD, CommandType.CONSOLE); - - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - plugin.reloadConfig(); - - Phrase.CONFIG_RELOADED.sendWithPrefix(sender); - - return true; - } +public class ReloadCommand extends SubCommand +{ + private final Fe plugin; + public ReloadCommand(Fe plugin) + { + super("reload", "fe.reload", "reload", Phrase.COMMAND_RELOAD, CommandType.CONSOLE); + this.plugin = plugin; + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + plugin.reloadConfig(); + Phrase.CONFIG_RELOADED.sendWithPrefix(sender); + return true; + } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java index 3b3efbf..c0998cb 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java @@ -7,33 +7,27 @@ import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; -public class RemoveCommand extends SubCommand { - private final Fe plugin; - - public RemoveCommand(Fe plugin) { - super("remove", "fe.remove", "remove [name]", Phrase.COMMAND_REMOVE, CommandType.CONSOLE); - - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - if (args.length < 1) { - return false; - } - - String name = args[0]; - - if (!plugin.getAPI().accountExists(name, null)) { - Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); - - return true; - } - - plugin.getAPI().removeAccount(name, null); - - Phrase.ACCOUNT_REMOVED.sendWithPrefix(sender, Phrase.PRIMARY_COLOR.parse() + name + Phrase.SECONDARY_COLOR.parse()); - - return true; - } +public class RemoveCommand extends SubCommand +{ + private final Fe plugin; + public RemoveCommand(Fe plugin) + { + super("remove", "fe.remove", "remove [name]", Phrase.COMMAND_REMOVE, CommandType.CONSOLE); + this.plugin = plugin; + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + if(args.length < 1) + return false; + String name = args[0]; + if(!plugin.getAPI().accountExists(name, null)) + { + Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + return true; + } + plugin.getAPI().removeAccount(name, null); + Phrase.ACCOUNT_REMOVED.sendWithPrefix(sender, Phrase.PRIMARY_COLOR.parse() + name + Phrase.SECONDARY_COLOR.parse()); + return true; + } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java index 6f2ac32..b1f3fe0 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java @@ -9,70 +9,52 @@ import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; -public class SendCommand extends SubCommand { - private final Fe plugin; - - public SendCommand(Fe plugin) { - super("send,pay,give", "fe.send", "send [name] [amount]", Phrase.COMMAND_SEND, CommandType.PLAYER); - - this.plugin = plugin; - } - - @SuppressWarnings("deprecation") - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - if (args.length < 2) { - return false; - } - - double money; - - try { - money = Double.parseDouble(args[1]); - } catch (NumberFormatException e) { - return false; - } - - if (money <= 0.0) { - return false; - } - - Account receiver = plugin.getShortenedAccount(args[0]); - - if (receiver == null) { - Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); - - return true; - } - - Account account = plugin.getAPI().getAccount(sender.getName(), null); - - if (!account.has(money)) { - Phrase.NOT_ENOUGH_MONEY.sendWithPrefix(sender); - - return true; - } - - if (!receiver.canReceive(money)) { - Phrase.MAX_BALANCE_REACHED.sendWithPrefix(sender, receiver.getName()); - - return true; - } - - String formattedMoney = plugin.getAPI().format(money); - - account.withdraw(money); - - receiver.deposit(money); - - Phrase.MONEY_SENT.sendWithPrefix(sender, formattedMoney, receiver.getName()); - - Player receiverPlayer = plugin.getServer().getPlayerExact(receiver.getName()); - - if (receiverPlayer != null) { - Phrase.MONEY_RECEIVE.sendWithPrefix(receiverPlayer, formattedMoney, sender.getName()); - } - - return true; - } +public class SendCommand extends SubCommand +{ + private final Fe plugin; + public SendCommand(Fe plugin) + { + super("send,pay,give", "fe.send", "send [name] [amount]", Phrase.COMMAND_SEND, CommandType.PLAYER); + this.plugin = plugin; + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + if(args.length < 2) + return false; + double money; + try + { + money = Double.parseDouble(args[1]); + } catch(NumberFormatException e) { + return false; + } + if(money <= 0.0) + return false; + Account receiver = plugin.getShortenedAccount(args[0]); + if(receiver == null) + { + Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + return true; + } + Account account = plugin.getAPI().getAccount(sender.getName(), null); + if(!account.has(money)) + { + Phrase.NOT_ENOUGH_MONEY.sendWithPrefix(sender); + return true; + } + if(!receiver.canReceive(money)) + { + Phrase.MAX_BALANCE_REACHED.sendWithPrefix(sender, receiver.getName()); + return true; + } + String formattedMoney = plugin.getAPI().format(money); + account.withdraw(money); + receiver.deposit(money); + Phrase.MONEY_SENT.sendWithPrefix(sender, formattedMoney, receiver.getName()); + Player receiverPlayer = plugin.getServer().getPlayerExact(receiver.getName()); + if(receiverPlayer != null) + Phrase.MONEY_RECEIVE.sendWithPrefix(receiverPlayer, formattedMoney, sender.getName()); + return true; + } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java index 5f9d494..2bf066d 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java @@ -8,47 +8,41 @@ import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; -public class SetCommand extends SubCommand { - private final Fe plugin; - - public SetCommand(Fe plugin) { - super("set", "fe.set", "set [name] [amount]", Phrase.COMMAND_SET, CommandType.CONSOLE); - - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - if (args.length < 2) { - return false; - } - - double money; - - try { - money = Double.parseDouble(args[1]); - } catch (NumberFormatException e) { - return false; - } - - Account victim = plugin.getShortenedAccount(args[0]); - - if (victim == null) { - Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); - return true; - } - - if (!victim.canReceive(money)) { - Phrase.MAX_BALANCE_REACHED.sendWithPrefix(sender, victim.getName()); - return true; - } - - String formattedMoney = plugin.getAPI().format(money); - - victim.setMoney(money); - - Phrase.PLAYER_SET_MONEY.sendWithPrefix(sender, victim.getName(), formattedMoney); - - return true; - } +public class SetCommand extends SubCommand +{ + private final Fe plugin; + + public SetCommand(Fe plugin) + { + super("set", "fe.set", "set [name] [amount]", Phrase.COMMAND_SET, CommandType.CONSOLE); + this.plugin = plugin; + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + if(args.length < 2) + return false; + double money; + try + { + money = Double.parseDouble(args[1]); + } catch(NumberFormatException e) { + return false; + } + Account victim = plugin.getShortenedAccount(args[0]); + if(victim == null) + { + Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + return true; + } + if(!victim.canReceive(money)) + { + Phrase.MAX_BALANCE_REACHED.sendWithPrefix(sender, victim.getName()); + return true; + } + String formattedMoney = plugin.getAPI().format(money); + victim.setMoney(money); + Phrase.PLAYER_SET_MONEY.sendWithPrefix(sender, victim.getName(), formattedMoney); + return true; + } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java index 0726cb1..85ce6ba 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java @@ -7,40 +7,33 @@ import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; - import java.util.List; -public class TopCommand extends SubCommand { - private final Fe plugin; - - public TopCommand(Fe plugin) { - super("top", "fe.top", "top", Phrase.COMMAND_TOP, CommandType.CONSOLE); - - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - List topAccounts = plugin.getAPI().getTopAccounts(); - - if (topAccounts.size() < 1) { - Phrase.NO_ACCOUNTS_EXIST.sendWithPrefix(sender); - - return true; - } - - sender.sendMessage(plugin.getEqualMessage(Phrase.RICH.parse(), 10)); - - for (int i = 0; i < topAccounts.size(); i++) { - Account account = topAccounts.get(i); - - String two = Phrase.SECONDARY_COLOR.parse(); - - sender.sendMessage(two + (i + 1) + ". " + Phrase.PRIMARY_COLOR.parse() + account.getName() + two + " - " + plugin.getAPI().format(account)); - } - - sender.sendMessage(plugin.getEndEqualMessage(28)); - - return true; - } +public class TopCommand extends SubCommand +{ + private final Fe plugin; + public TopCommand(Fe plugin) + { + super("top", "fe.top", "top", Phrase.COMMAND_TOP, CommandType.CONSOLE); + this.plugin = plugin; + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + List topAccounts = plugin.getAPI().getTopAccounts(); + if(topAccounts.size() < 1) + { + Phrase.NO_ACCOUNTS_EXIST.sendWithPrefix(sender); + return true; + } + sender.sendMessage(plugin.getEqualMessage(Phrase.RICH.parse(), 10)); + for(int i = 0; i < topAccounts.size(); i++) + { + Account account = topAccounts.get(i); + String two = Phrase.SECONDARY_COLOR.parse(); + sender.sendMessage(two + (i + 1) + ". " + Phrase.PRIMARY_COLOR.parse() + account.getName() + two + " - " + plugin.getAPI().format(account)); + } + sender.sendMessage(plugin.getEndEqualMessage(28)); + return true; + } } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java index ff7be26..6c35765 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java @@ -194,7 +194,6 @@ public List getAccounts() } return accounts; } - @SuppressWarnings("deprecation") @Override public HashMap loadAccountData(String name, String uuid) { @@ -232,7 +231,6 @@ public void removeAccount(String name, String uuid) System.out.println(e); } } - @SuppressWarnings("deprecation") @Override protected void saveAccount(String name, String uuid, double money) { @@ -263,7 +261,6 @@ protected void saveAccount(String name, String uuid, double money) System.out.println(e); } } - @SuppressWarnings("deprecation") @Override public void clean() { diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index 36d4d3e..b470fa9 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -23,20 +23,22 @@ public class Fe extends JavaPlugin { - private final Set databases; - private API api; + private final API api = new API(this); + private final Set databases = new HashSet<>(); + private final FeCommands commands = new FeCommands(this); + private final FePlayerListener listener = new FePlayerListener(this); private Database database; - public Fe() - { - databases = new HashSet<>(); - } @Override - public void onEnable() + public void onLoad() { getDataFolder().mkdirs(); Phrase.init(this); databases.add(new MySQLDB(this)); databases.add(new SQLiteDB(this)); + } + @Override + public void onEnable() + { for(Database db : databases) { String name = db.getConfigName(); @@ -49,17 +51,16 @@ public void onEnable() } getConfig().options().copyDefaults(true); getConfig().options().header("Fe Config - loyloy.io\n" - + "holdings - The amount of money that players will start out with\n" - + "prefix - The message prefix\n" - + "currency - The single and multiple names for the currency\n" - + "type - The type of database used (sqlite, mysql, or mongo)"); + + "holdings - The amount of money that players will start out with\n" + + "prefix - The message prefix\n" + + "currency - The single and multiple names for the currency\n" + + "type - The type of database used (sqlite, mysql, or mongo)"); saveConfig(); - api = new API(this); if(!setupDatabase()) return; - getCommand("fe").setExecutor(new FeCommands(this)); + getCommand("fe").setExecutor(commands); PluginManager pm = getServer().getPluginManager(); - pm.registerEvents(new FePlayerListener(this), this); + pm.registerEvents(listener, this); setupVault(); loadMetrics(); reloadConfig(); @@ -70,32 +71,25 @@ public void onEnable() log(Phrase.ACCOUNT_CLEANED); } } - public void log(String message) - { - getLogger().info(message); - } @Override public void onDisable() { getServer().getScheduler().cancelTasks(this); - getFeDatabase().close(); + getCurrentDatabase().close(); + getServer().getServicesManager().unregisterAll(this); + } + public void log(String message) + { + getLogger().info(message); } public void log(Phrase phrase, String... args) { log(phrase.parse(args)); } - public Database getFeDatabase() + public Database getCurrentDatabase() { return database; } - public boolean addDatabase(Database database) - { - return databases.add(database); - } - public Set getDatabases() - { - return new HashSet<>(databases); - } public API getAPI() { return api; @@ -123,23 +117,6 @@ private boolean setupDatabase() } return true; } - private void setupPhrases() - { - File phrasesFile = new File(getDataFolder(), "phrases.yml"); - for(Phrase phrase : Phrase.values()) - phrase.reset(); - if(!phrasesFile.exists()) - return; - YamlConfiguration phrasesConfig = YamlConfiguration.loadConfiguration(phrasesFile); - for(Phrase phrase : Phrase.values()) - { - String phraseConfigName = phrase.getConfigName(); - String phraseMessage = phrasesConfig.getString(phraseConfigName); - if(phraseMessage == null) - phraseMessage = phrase.parse(); - phrase.setMessage(phraseMessage); - } - } @Override public void reloadConfig() { @@ -163,10 +140,9 @@ public void reloadConfig() getConfig().set("cacheaccounts", null); if(getConfig().getBoolean("updatecheck")) getConfig().set("updatecheck", null); - setupPhrases(); + Phrase.setupPhrases(new File(getDataFolder(), "phrases.yml")); saveConfig(); } - @SuppressWarnings("deprecation") public Account getShortenedAccount(String name) { Account account = getAPI().getAccount(name, null); @@ -207,7 +183,7 @@ private void loadMetrics() { Metrics metrics = new Metrics(this); Graph databaseGraph = metrics.createGraph("Database Engine"); - databaseGraph.addPlotter(new Plotter(getFeDatabase().getName()) + databaseGraph.addPlotter(new Plotter(getCurrentDatabase().getName()) { @Override public int getValue() diff --git a/src/main/java/com/niccholaspage/Fe/FePlayerListener.java b/src/main/java/com/niccholaspage/Fe/FePlayerListener.java index ffb1250..d3ebc05 100644 --- a/src/main/java/com/niccholaspage/Fe/FePlayerListener.java +++ b/src/main/java/com/niccholaspage/Fe/FePlayerListener.java @@ -26,7 +26,7 @@ public void onPlayerLogin(PlayerLoginEvent event) @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { - Database database = plugin.getFeDatabase(); + Database database = plugin.getCurrentDatabase(); Player player = event.getPlayer(); Account account = database.getCachedAccount(player.getName(), player.getUniqueId().toString()); if(account != null) diff --git a/src/main/java/com/niccholaspage/Fe/Phrase.java b/src/main/java/com/niccholaspage/Fe/Phrase.java index 8d6206e..57688ff 100644 --- a/src/main/java/com/niccholaspage/Fe/Phrase.java +++ b/src/main/java/com/niccholaspage/Fe/Phrase.java @@ -1,7 +1,9 @@ package com.niccholaspage.Fe; +import java.io.File; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; +import org.bukkit.configuration.file.YamlConfiguration; public enum Phrase { @@ -115,4 +117,20 @@ public void sendWithPrefix(CommandSender sender, String... params) { sender.sendMessage(parseWithPrefix(params)); } + public static void setupPhrases(File phrasesFile) + { + for(Phrase phrase : Phrase.values()) + phrase.reset(); + if(!phrasesFile.exists()) + return; + YamlConfiguration phrasesConfig = YamlConfiguration.loadConfiguration(phrasesFile); + for(Phrase phrase : Phrase.values()) + { + String phraseConfigName = phrase.getConfigName(); + String phraseMessage = phrasesConfig.getString(phraseConfigName); + if(phraseMessage == null) + phraseMessage = phrase.parse(); + phrase.setMessage(phraseMessage); + } + } } From 5e309cc9b3c4f187e047dcb96424b728a3e52f7c Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 6 Apr 2015 16:47:33 +0600 Subject: [PATCH 15/40] Let it be the final 0.8.4 version. --- pom.xml | 4 +- .../com/niccholaspage/Fe/API/Database.java | 8 +- .../niccholaspage/Fe/Databases/MySQLDB.java | 12 +-- .../com/niccholaspage/Fe/Databases/SQLDB.java | 89 +++++++++--------- .../niccholaspage/Fe/Databases/SQLiteDB.java | 10 +- src/main/java/com/niccholaspage/Fe/Fe.java | 94 +++++++++---------- .../java/com/niccholaspage/Fe/FeCommands.java | 14 +-- .../niccholaspage/Fe/FePlayerListener.java | 1 - 8 files changed, 108 insertions(+), 124 deletions(-) diff --git a/pom.xml b/pom.xml index b7716ae..ead84fa 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ vault-repo - http://nexus.theyeticave.net/content/repositories/pub_releases + http://nexus.theyeticave.net/content/repositories/pub_releases/ metrics-repo @@ -52,7 +52,7 @@ maven-compiler-plugin - 3.2 + 3.3 1.7 1.7 diff --git a/src/main/java/com/niccholaspage/Fe/API/Database.java b/src/main/java/com/niccholaspage/Fe/API/Database.java index 0c6739b..2a906fa 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Database.java +++ b/src/main/java/com/niccholaspage/Fe/API/Database.java @@ -14,13 +14,13 @@ public abstract class Database protected boolean cacheAccounts; public abstract List getAccounts(); public abstract List loadTopAccounts(int size); - public abstract HashMap loadAccountData(String name, String uuid); + public abstract Map loadAccountData(String name, String uuid); public abstract void getConfigDefaults(ConfigurationSection section); public abstract String getName(); public abstract int getVersion(); public abstract void setVersion(int version); public abstract void clean(); - protected abstract void saveAccount(String name, String uuid, double money); + public abstract void saveAccount(String name, String uuid, double money); public Database(Fe plugin) { this.plugin = plugin; @@ -120,7 +120,7 @@ public Account getAccount(String name, String uuid) Account account = getCachedAccount(name, uuid); if(account != null) return account; - HashMap data = loadAccountData(name, uuid); + Map data = loadAccountData(name, uuid); String money_string = data.get("money"); Double data_money; try @@ -148,7 +148,7 @@ public Account updateAccount(String name, String uuid) private Account createAndAddAccount(String name, String uuid, double money) { Account account = new Account(plugin, name, uuid, this); - account.setMoney(money); + account.save(money); if(cacheAccounts()) { Player player = plugin.getServer().getPlayerExact(name); diff --git a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index 8db00f4..9ac157c 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -12,9 +12,14 @@ public MySQLDB(Fe plugin) super(plugin, true); } @Override + public String getName() + { + return "MySQL"; + } + @Override protected Connection getNewConnection() { - ConfigurationSection config = getConfigSection(); + final ConfigurationSection config = getConfigSection(); setAccountTable (config.getString("tables.accounts")); setAccountsColumnUser (config.getString("columns.accounts.username")); setAccountsColumnMoney(config.getString("columns.accounts.money")); @@ -51,9 +56,4 @@ public void getConfigDefaults(ConfigurationSection section) columnsAccounts.addDefault("money", "money"); columnsAccounts.addDefault("uuid", "uuid"); } - @Override - public String getName() - { - return "MySQL"; - } } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java index 6c35765..be246d5 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java @@ -15,11 +15,12 @@ public abstract class SQLDB extends Database { protected final Fe plugin; private final boolean supportsModification; - private String accountsName = "fe_accounts"; - private String versionName = "fe_version"; - private String accountsColumnUser = "name"; - private String accountsColumnMoney = "money"; - private String accountsColumnUUID = "uuid"; + private final long pingDelay = 60 * 20; + private String tableAccounts = "fe_accounts"; + private String tableVersion = "fe_version"; + private String columnAccountsUser = "name"; + private String columnAccountsMoney = "money"; + private String columnAccountsUUID = "uuid"; private Connection connection; public SQLDB(Fe plugin, boolean supportsModification) { @@ -39,27 +40,27 @@ public void run() connection = getNewConnection(); } } - }, 60 * 20, 60 * 20); + }, pingDelay, pingDelay); } public void setAccountTable(String accountsName) { - this.accountsName = accountsName; + this.tableAccounts = accountsName; } public void setVersionTable(String versionName) { - this.versionName = versionName; + this.tableVersion = versionName; } public void setAccountsColumnUser(String accountsColumnUser) { - this.accountsColumnUser = accountsColumnUser; + this.columnAccountsUser = accountsColumnUser; } public void setAccountsColumnMoney(String accountsColumnMoney) { - this.accountsColumnMoney = accountsColumnMoney; + this.columnAccountsMoney = accountsColumnMoney; } public void setAccountsColumnUUID(String accountsColumnUUID) { - this.accountsColumnUUID = accountsColumnUUID; + this.columnAccountsUUID = accountsColumnUUID; } @Override public boolean init() @@ -76,11 +77,11 @@ public boolean checkConnection() connection = getNewConnection(); if(connection == null || connection.isClosed()) return false; - ResultSet set = connection.prepareStatement(supportsModification ? ("SHOW TABLES LIKE '" + accountsName + "'") : "SELECT name FROM sqlite_master WHERE type='table' AND name='" + accountsName + "'").executeQuery(); + ResultSet set = connection.prepareStatement(supportsModification ? ("SHOW TABLES LIKE '" + tableAccounts + "'") : "SELECT name FROM sqlite_master WHERE type='table' AND name='" + tableAccounts + "'").executeQuery(); boolean newDatabase = set.next(); set.close(); - query("CREATE TABLE IF NOT EXISTS " + accountsName + " (" + accountsColumnUser + " varchar(64) NOT NULL, " + accountsColumnUUID + " varchar(36), " + accountsColumnMoney + " double NOT NULL)"); - query("CREATE TABLE IF NOT EXISTS " + versionName + " (version int NOT NULL)"); + query("CREATE TABLE IF NOT EXISTS " + tableAccounts + " (" + columnAccountsUser + " varchar(64) NOT NULL, " + columnAccountsUUID + " varchar(36), " + columnAccountsMoney + " double NOT NULL)"); + query("CREATE TABLE IF NOT EXISTS " + tableVersion + " (version int NOT NULL)"); if(newDatabase) { int version = getVersion(); @@ -88,12 +89,12 @@ public boolean checkConnection() { if(supportsModification) { - query("ALTER TABLE " + accountsName + " MODIFY " + accountsColumnUser + " varchar(64) NOT NULL"); - query("ALTER TABLE " + accountsName + " MODIFY " + accountsColumnMoney + " double NOT NULL"); + query("ALTER TABLE " + tableAccounts + " MODIFY " + columnAccountsUser + " varchar(64) NOT NULL"); + query("ALTER TABLE " + tableAccounts + " MODIFY " + columnAccountsMoney + " double NOT NULL"); } try { - query("ALTER TABLE " + accountsName + " ADD " + accountsColumnUUID + " char(36);"); + query("ALTER TABLE " + tableAccounts + " ADD " + columnAccountsUUID + " char(36);"); } catch(Exception e) { } if(!convertToUUID()) @@ -133,7 +134,7 @@ public int getVersion() int version = 0; try { - ResultSet set = connection.prepareStatement("SELECT * from " + versionName).executeQuery(); + ResultSet set = connection.prepareStatement("SELECT * from " + tableVersion).executeQuery(); if(set.next()) version = set.getInt("version"); set.close(); @@ -149,8 +150,8 @@ public void setVersion(int version) checkConnection(); try { - connection.prepareStatement("DELETE FROM " + versionName).executeUpdate(); - connection.prepareStatement("INSERT INTO " + versionName + " (version) VALUES (" + version + ")").executeUpdate(); + connection.prepareStatement("DELETE FROM " + tableVersion).executeUpdate(); + connection.prepareStatement("INSERT INTO " + tableVersion + " (version) VALUES (" + version + ")").executeUpdate(); } catch(SQLException e) { System.out.println(e); } @@ -159,15 +160,15 @@ public void setVersion(int version) public List loadTopAccounts(int size) { checkConnection(); - String sql = "SELECT * FROM " + accountsName + " ORDER BY money DESC limit " + size; + String sql = "SELECT * FROM " + tableAccounts + " ORDER BY money DESC limit " + size; List topAccounts = new ArrayList<>(); try { ResultSet set = connection.createStatement().executeQuery(sql); while(set.next()) { - Account account = new Account(plugin, set.getString(accountsColumnUser), set.getString(accountsColumnUUID), this); - account.setMoney(set.getDouble(accountsColumnMoney)); + Account account = new Account(plugin, set.getString(columnAccountsUser), set.getString(columnAccountsUUID), this); + account.setMoney(set.getDouble(columnAccountsMoney)); topAccounts.add(account); } } catch(SQLException e) { @@ -182,11 +183,11 @@ public List getAccounts() List accounts = new ArrayList<>(); try { - ResultSet set = connection.createStatement().executeQuery("SELECT * from " + accountsName); + ResultSet set = connection.createStatement().executeQuery("SELECT * from " + tableAccounts); while(set.next()) { - Account account = new Account(plugin, set.getString(accountsColumnUser), set.getString(accountsColumnUUID), this); - account.setMoney(set.getDouble(accountsColumnMoney)); + Account account = new Account(plugin, set.getString(columnAccountsUser), set.getString(columnAccountsUUID), this); + account.setMoney(set.getDouble(columnAccountsMoney)); accounts.add(account); } } catch(SQLException e) { @@ -200,14 +201,14 @@ public HashMap loadAccountData(String name, String uuid) checkConnection(); try { - PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + accountsName + " WHERE UPPER(" + (uuid != null ? accountsColumnUUID : accountsColumnUser) + ") LIKE UPPER(?)"); + PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + tableAccounts + " WHERE UPPER(" + (uuid != null ? columnAccountsUUID : columnAccountsUser) + ") LIKE UPPER(?)"); statement.setString(1, uuid != null ? uuid : name); ResultSet set = statement.executeQuery(); HashMap data = new HashMap<>(); while(set.next()) { - data.put("money", set.getString(accountsColumnMoney)); - data.put("name", set.getString(accountsColumnUser)); + data.put("money", set.getString(columnAccountsMoney)); + data.put("name", set.getString(columnAccountsUser)); } set.close(); return data; @@ -224,7 +225,7 @@ public void removeAccount(String name, String uuid) PreparedStatement statement; try { - statement = connection.prepareStatement("DELETE FROM " + accountsName + " WHERE UPPER(" + (uuid != null ? accountsColumnUUID : accountsColumnUser) + ") LIKE UPPER(?)"); + statement = connection.prepareStatement("DELETE FROM " + tableAccounts + " WHERE UPPER(" + (uuid != null ? columnAccountsUUID : columnAccountsUser) + ") LIKE UPPER(?)"); statement.setString(1, uuid != null ? uuid : name); statement.execute(); } catch(SQLException e) { @@ -232,26 +233,22 @@ public void removeAccount(String name, String uuid) } } @Override - protected void saveAccount(String name, String uuid, double money) + public void saveAccount(String name, String uuid, double money) { checkConnection(); try { - String sql = "UPDATE " + accountsName + " SET " + accountsColumnMoney + "=?, " + accountsColumnUser + "=? WHERE UPPER("; - if(uuid != null) - sql += accountsColumnUUID; - else - sql += accountsColumnUser; - PreparedStatement statement = connection.prepareStatement(sql + ") LIKE UPPER(?)"); + PreparedStatement statement = connection.prepareStatement( + "UPDATE " + tableAccounts + " SET " + columnAccountsMoney + "=?, " + columnAccountsUser + "=? WHERE UPPER(" + + (uuid != null ? columnAccountsUUID : columnAccountsUser) + + ") LIKE UPPER(?)"); statement.setDouble(1, money); statement.setString(2, name); - if(uuid != null) - statement.setString(3, uuid); - else - statement.setString(3, name); + statement.setString(3, uuid != null ? uuid : name); if(statement.executeUpdate() == 0) { - statement = connection.prepareStatement("INSERT INTO " + accountsName + " (" + accountsColumnUser + ", " + accountsColumnUUID + ", " + accountsColumnMoney + ") VALUES (?, ?, ?)"); + statement = connection.prepareStatement( + "INSERT INTO " + tableAccounts + " (" + columnAccountsUser + ", " + columnAccountsUUID + ", " + columnAccountsMoney + ") VALUES (?, ?, ?)"); statement.setString(1, name); statement.setString(2, uuid); statement.setDouble(3, money); @@ -267,12 +264,12 @@ public void clean() checkConnection(); try { - ResultSet set = connection.prepareStatement("SELECT * from " + accountsName + " WHERE " + accountsColumnMoney + "=" + plugin.getAPI().getDefaultHoldings()).executeQuery(); + ResultSet set = connection.prepareStatement("SELECT * from " + tableAccounts + " WHERE " + columnAccountsMoney + "=" + plugin.getAPI().getDefaultHoldings()).executeQuery(); boolean executeQuery = false; - StringBuilder builder = new StringBuilder("DELETE FROM " + accountsName + " WHERE " + accountsColumnUser + " IN ("); + StringBuilder builder = new StringBuilder("DELETE FROM " + tableAccounts + " WHERE " + columnAccountsUser + " IN ("); while(set.next()) { - String name = set.getString(accountsColumnUser); + String name = set.getString(columnAccountsUser); if(plugin.getServer().getPlayerExact(name) != null) continue; executeQuery = true; @@ -293,7 +290,7 @@ public void removeAllAccounts() checkConnection(); try { - connection.prepareStatement("DELETE FROM " + accountsName).executeUpdate(); + connection.prepareStatement("DELETE FROM " + tableAccounts).executeUpdate(); } catch(SQLException e) { System.out.println(e); } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java b/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java index 8f7713e..ac803e3 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java @@ -14,6 +14,11 @@ public SQLiteDB(Fe plugin) super(plugin, false); } @Override + public String getName() + { + return "SQLite"; + } + @Override public Connection getNewConnection() { try @@ -28,9 +33,4 @@ public Connection getNewConnection() public void getConfigDefaults(ConfigurationSection section) { } - @Override - public String getName() - { - return "SQLite"; - } } diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index b470fa9..da90d6a 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -3,7 +3,6 @@ import com.niccholaspage.Fe.API.API; import net.milkbowl.vault.economy.Economy; import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; @@ -20,6 +19,7 @@ import java.io.IOException; import java.util.HashSet; import java.util.Set; +import org.bukkit.event.Listener; public class Fe extends JavaPlugin { @@ -33,12 +33,12 @@ public void onLoad() { getDataFolder().mkdirs(); Phrase.init(this); - databases.add(new MySQLDB(this)); - databases.add(new SQLiteDB(this)); } @Override public void onEnable() { + databases.add(new MySQLDB(this)); + databases.add(new SQLiteDB(this)); for(Database db : databases) { String name = db.getConfigName(); @@ -59,8 +59,7 @@ public void onEnable() if(!setupDatabase()) return; getCommand("fe").setExecutor(commands); - PluginManager pm = getServer().getPluginManager(); - pm.registerEvents(listener, this); + getServer().getPluginManager().registerEvents(listener, this); setupVault(); loadMetrics(); reloadConfig(); @@ -78,21 +77,45 @@ public void onDisable() getCurrentDatabase().close(); getServer().getServicesManager().unregisterAll(this); } - public void log(String message) + @Override + public void reloadConfig() { - getLogger().info(message); + super.reloadConfig(); + final String oldCurrencySingle = getConfig().getString("currency.single"); + final String oldCurrencyMultiple = getConfig().getString("currency.multiple"); + if(oldCurrencySingle != null) + { + getConfig().set("currency.major.single", oldCurrencySingle); + getConfig().set("currency.single", null); + } + if(oldCurrencyMultiple != null) + { + getConfig().set("currency.major.multiple", oldCurrencyMultiple); + getConfig().set("currency.multiple", null); + } + if(!getConfig().isSet("autoclean")) + getConfig().set("autoclean", true); + // Remove old config nodes. + getConfig().set("cacheaccounts", null); + getConfig().set("updatecheck", null); + Phrase.setupPhrases(new File(getDataFolder(), "phrases.yml")); + saveConfig(); } - public void log(Phrase phrase, String... args) + public API getAPI() { - log(phrase.parse(args)); + return api; } public Database getCurrentDatabase() { return database; } - public API getAPI() + public void log(String message) { - return api; + getLogger().info(message); + } + public void log(Phrase phrase, String... args) + { + log(phrase.parse(args)); } private boolean setupDatabase() { @@ -117,32 +140,6 @@ private boolean setupDatabase() } return true; } - @Override - public void reloadConfig() - { - super.reloadConfig(); - String oldCurrencySingle = getConfig().getString("currency.single"); - String oldCurrencyMultiple = getConfig().getString("currency.multiple"); - if(oldCurrencySingle != null) - { - getConfig().set("currency.major.single", oldCurrencySingle); - getConfig().set("currency.single", null); - } - if(oldCurrencyMultiple != null) - { - getConfig().set("currency.major.multiple", oldCurrencyMultiple); - getConfig().set("currency.multiple", null); - } - if(!getConfig().isSet("autoclean")) - getConfig().set("autoclean", true); - // Temporarily remove cache and updates. - if(getConfig().isSet("cacheaccounts")) - getConfig().set("cacheaccounts", null); - if(getConfig().getBoolean("updatecheck")) - getConfig().set("updatecheck", null); - Phrase.setupPhrases(new File(getDataFolder(), "phrases.yml")); - saveConfig(); - } public Account getShortenedAccount(String name) { Account account = getAPI().getAccount(name, null); @@ -177,12 +174,18 @@ public String getEndEqualMessage(int length) message += "="; return message; } + private void setupVault() + { + final Plugin vault = getServer().getPluginManager().getPlugin("Vault"); + if(vault != null) + getServer().getServicesManager().register(Economy.class, new VaultHandler(this), this, ServicePriority.Highest); + } private void loadMetrics() { try { Metrics metrics = new Metrics(this); - Graph databaseGraph = metrics.createGraph("Database Engine"); + final Graph databaseGraph = metrics.createGraph("Database Engine"); databaseGraph.addPlotter(new Plotter(getCurrentDatabase().getName()) { @Override @@ -191,8 +194,8 @@ public int getValue() return 1; } }); - Graph defaultHoldings = metrics.createGraph("Default Holdings"); - defaultHoldings.addPlotter(new Plotter(getAPI().getDefaultHoldings() + "") + final Graph defaultHoldings = metrics.createGraph("Default Holdings"); + defaultHoldings.addPlotter(new Plotter(Double.toString(getAPI().getDefaultHoldings())) { @Override public int getValue() @@ -200,8 +203,8 @@ public int getValue() return 1; } }); - Graph maxHoldings = metrics.createGraph("Max Holdings"); - String maxHolding = getAPI().getMaxHoldings() + ""; + final Graph maxHoldings = metrics.createGraph("Max Holdings"); + String maxHolding = Double.toString(getAPI().getMaxHoldings()); if(getAPI().getMaxHoldings() == -1) maxHolding = "Unlimited"; maxHoldings.addPlotter(new Plotter(maxHolding) @@ -216,11 +219,4 @@ public int getValue() } catch(IOException e) { } } - private void setupVault() - { - Plugin vault = getServer().getPluginManager().getPlugin("Vault"); - if(vault == null) - return; - getServer().getServicesManager().register(Economy.class, new VaultHandler(this), this, ServicePriority.Highest); - } } diff --git a/src/main/java/com/niccholaspage/Fe/FeCommands.java b/src/main/java/com/niccholaspage/Fe/FeCommands.java index cceef76..4a3a44d 100644 --- a/src/main/java/com/niccholaspage/Fe/FeCommands.java +++ b/src/main/java/com/niccholaspage/Fe/FeCommands.java @@ -22,10 +22,9 @@ public class FeCommands implements CommandExecutor { - private final List commands; + private final List commands = new ArrayList<>(); public FeCommands(Fe plugin) { - commands = new ArrayList<>(); commands.add(new BalanceCommand(plugin)); commands.add(new SendCommand(plugin)); commands.add(new TopCommand(plugin)); @@ -70,10 +69,7 @@ private void sendDefaultCommand(CommandSender sender, Command cmd, String comman String command = "balance"; if(!(sender instanceof Player) && args.length < 1) command = "help"; - onCommand(sender, cmd, commandLabel, merge(new String[] - { - command - }, args)); + onCommand(sender, cmd, commandLabel, merge(new String[] { command }, args)); } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) @@ -136,11 +132,7 @@ private String parseArg(String argument, String operatorsColor, String argumentC { String operator = argument.substring(0, 1); argument = argument.substring(1, argument.length()); - String reverse; - if(operator.equals("[")) - reverse = "]"; - else - reverse = ")"; + String reverse = operator.equals("[") ? "]" : ")"; argument = argument.substring(0, argument.length() - 1); argument = operatorsColor + operator + argumentColor + argument + operatorsColor + reverse; return argument; diff --git a/src/main/java/com/niccholaspage/Fe/FePlayerListener.java b/src/main/java/com/niccholaspage/Fe/FePlayerListener.java index d3ebc05..82a1098 100644 --- a/src/main/java/com/niccholaspage/Fe/FePlayerListener.java +++ b/src/main/java/com/niccholaspage/Fe/FePlayerListener.java @@ -15,7 +15,6 @@ public class FePlayerListener implements Listener public FePlayerListener(Fe plugin) { this.plugin = plugin; - plugin.getServer().getPluginManager().registerEvents((Listener)this, plugin); } @EventHandler(priority = EventPriority.LOWEST) public void onPlayerLogin(PlayerLoginEvent event) From 90a676e3a3942559fc7fa860d61ca9d70ff2b89c Mon Sep 17 00:00:00 2001 From: SimSonic Date: Sun, 17 May 2015 16:47:08 +0600 Subject: [PATCH 16/40] Add new class Settings to work with config.yml. All calls to plugin.getConfig()... replaced to plugin.settings... Version is 0.9.0 --- pom.xml | 2 +- .../java/com/niccholaspage/Fe/API/API.java | 34 ++-- .../com/niccholaspage/Fe/API/Account.java | 10 +- .../com/niccholaspage/Fe/API/Database.java | 18 +- .../com/niccholaspage/Fe/API/Settings.java | 168 ++++++++++++++++++ .../com/niccholaspage/Fe/API/SubCommand.java | 8 +- .../Fe/Commands/BalanceCommand.java | 12 +- .../Fe/Commands/CleanCommand.java | 6 +- .../Fe/Commands/CreateCommand.java | 10 +- .../Fe/Commands/DeductCommand.java | 10 +- .../Fe/Commands/GrantCommand.java | 12 +- .../Fe/Commands/HelpCommand.java | 12 +- .../Fe/Commands/ReloadCommand.java | 6 +- .../Fe/Commands/RemoveCommand.java | 8 +- .../Fe/Commands/SendCommand.java | 14 +- .../niccholaspage/Fe/Commands/SetCommand.java | 10 +- .../niccholaspage/Fe/Commands/TopCommand.java | 12 +- .../niccholaspage/Fe/Databases/MySQLDB.java | 6 +- .../com/niccholaspage/Fe/Databases/SQLDB.java | 17 +- .../niccholaspage/Fe/Databases/SQLiteDB.java | 3 +- src/main/java/com/niccholaspage/Fe/Fe.java | 129 +++++--------- .../java/com/niccholaspage/Fe/FeCommands.java | 14 +- .../Fe/{Phrase.java => Phrases.java} | 12 +- .../com/niccholaspage/Fe/UUIDFetcher.java | 18 +- src/main/resources/config.yml | 49 +++-- 25 files changed, 372 insertions(+), 228 deletions(-) create mode 100644 src/main/java/com/niccholaspage/Fe/API/Settings.java rename src/main/java/com/niccholaspage/Fe/{Phrase.java => Phrases.java} (93%) diff --git a/pom.xml b/pom.xml index ead84fa..64e70d7 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.niccholaspage Fe - 0.8.4 + 0.9.0 Fe diff --git a/src/main/java/com/niccholaspage/Fe/API/API.java b/src/main/java/com/niccholaspage/Fe/API/API.java index 14aab76..d1adece 100644 --- a/src/main/java/com/niccholaspage/Fe/API/API.java +++ b/src/main/java/com/niccholaspage/Fe/API/API.java @@ -1,7 +1,7 @@ package com.niccholaspage.Fe.API; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import org.bukkit.ChatColor; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; @@ -17,7 +17,7 @@ public API(Fe plugin) } public List getTopAccounts() { - return plugin.getCurrentDatabase().getTopAccounts(plugin.getConfig().getInt("topsize")); + return plugin.getCurrentDatabase().getTopAccounts(plugin.settings.getShowTop()); } public List getTopAccounts(int size) { @@ -29,47 +29,43 @@ public List getAccounts() } public double getDefaultHoldings() { - return plugin.getConfig().getDouble("holdings"); + return plugin.settings.getDefaultHoldings(); } public double getMaxHoldings() { - return plugin.getConfig().getDouble("maxholdings"); + return plugin.settings.getMaximumHoldings(); } - public String getCurrencyPrefix() + public boolean isAutoClean() { - return plugin.getConfig().getString("currency.prefix"); + return plugin.settings.isAutoClean(); } - public boolean isAutoClean() + public String getCurrencyPrefix() { - return plugin.getConfig().getBoolean("autoclean"); + return plugin.settings.getCurrencyPrefix(); } public boolean isCurrencyNegative() { - return plugin.getConfig().getBoolean("currency.negative"); + return plugin.settings.isCurrencyNegative(); } public String getCurrencyMajorSingle() { - return plugin.getConfig().getString("currency.major.single"); + return plugin.settings.getCurrencyMajorSingle(); } public String getCurrencyMajorMultiple() { - return plugin.getConfig().getString("currency.major.multiple"); + return plugin.settings.getCurrencyMajorMultiple(); } public boolean isMinorCurrencyEnabled() { - return plugin.getConfig().getBoolean("currency.minor.enabled"); + return plugin.settings.isMinorCurrencyEnabled(); } public String getCurrencyMinorSingle() { - return plugin.getConfig().getString("currency.minor.single"); + return plugin.settings.getCurrencyMinorSingle(); } public String getCurrencyMinorMultiple() { - return plugin.getConfig().getString("currency.minor.multiple"); - } - public boolean getCacheAccounts() - { - return false; + return plugin.settings.getCurrencyMinorMultiple(); } @Deprecated public Account createAccount(String name, String uuid) @@ -123,7 +119,7 @@ else if(amount < 1.0) suffix += getCurrencyMajorMultiple(); if(suffix.equalsIgnoreCase(" ")) suffix = ""; - return Phrase.SECONDARY_COLOR.parse() + getCurrencyPrefix() + Phrase.PRIMARY_COLOR.parse() + formatValue(amount) + Phrase.SECONDARY_COLOR.parse() + suffix; + return Phrases.SECONDARY_COLOR.parse() + getCurrencyPrefix() + Phrases.PRIMARY_COLOR.parse() + formatValue(amount) + Phrases.SECONDARY_COLOR.parse() + suffix; } public double getMoneyRounded(double amount) { diff --git a/src/main/java/com/niccholaspage/Fe/API/Account.java b/src/main/java/com/niccholaspage/Fe/API/Account.java index 0ca17c0..e5c2bd6 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Account.java +++ b/src/main/java/com/niccholaspage/Fe/API/Account.java @@ -82,15 +82,9 @@ public void save(double money) { database.saveAccount(name, uuid, money); } - @Override - public boolean equals(Object object) + public boolean equals(Account other) { - if(object instanceof Account) - { - Account account = (Account)object; - return account.getName().equals(getName()); - } - return false; + return other.getName().equals(getName()); } @Override public int compareTo(Account other) diff --git a/src/main/java/com/niccholaspage/Fe/API/Database.java b/src/main/java/com/niccholaspage/Fe/API/Database.java index 2a906fa..7874229 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Database.java +++ b/src/main/java/com/niccholaspage/Fe/API/Database.java @@ -3,7 +3,7 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.UUIDFetcher; import java.util.*; @@ -11,7 +11,7 @@ public abstract class Database { private final Fe plugin; private final Set cachedAccounts = new HashSet<>(); - protected boolean cacheAccounts; + protected boolean cacheAccounts = true; public abstract List getAccounts(); public abstract List loadTopAccounts(int size); public abstract Map loadAccountData(String name, String uuid); @@ -27,7 +27,6 @@ public Database(Fe plugin) } public boolean init() { - this.cacheAccounts = plugin.getAPI().getCacheAccounts(); return false; } public List getTopAccounts(int size) @@ -65,7 +64,7 @@ protected boolean convertToUUID() { // Disable plugin? } - plugin.log(Phrase.STARTING_UUID_CONVERSION); + plugin.log(Phrases.STARTING_UUID_CONVERSION); List accounts = getAccounts(); Map accountMonies = new HashMap<>(); for(Account account : accounts) @@ -90,11 +89,11 @@ protected boolean convertToUUID() } catch(Exception e) { System.out.println(e); - plugin.log(Phrase.UUID_CONVERSION_FAILED); + plugin.log(Phrases.UUID_CONVERSION_FAILED); plugin.getServer().getPluginManager().disablePlugin(plugin); return false; } - plugin.log(Phrase.UUID_CONVERSION_SUCCEEDED); + plugin.log(Phrases.UUID_CONVERSION_SUCCEEDED); return true; } public void close() @@ -109,11 +108,11 @@ public void close() } public String getConfigName() { - return getName().toLowerCase().replace(" ", ""); + return getName().replace(" ", "").toLowerCase(); } public ConfigurationSection getConfigSection() { - return plugin.getConfig().getConfigurationSection(getConfigName()); + return plugin.settings.getDatabaseSection(getConfigName()); } public Account getAccount(String name, String uuid) { @@ -126,8 +125,7 @@ public Account getAccount(String name, String uuid) try { data_money = Double.parseDouble(money_string); - } catch(Exception e) - { + } catch(Exception e) { data_money = null; } String data_name = data.get("name"); diff --git a/src/main/java/com/niccholaspage/Fe/API/Settings.java b/src/main/java/com/niccholaspage/Fe/API/Settings.java new file mode 100644 index 0000000..61820d8 --- /dev/null +++ b/src/main/java/com/niccholaspage/Fe/API/Settings.java @@ -0,0 +1,168 @@ +package com.niccholaspage.Fe.API; + +import com.google.common.io.Files; +import java.io.File; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.plugin.java.JavaPlugin; + +public class Settings +{ + private final JavaPlugin fe; + public Settings(JavaPlugin plugin) + { + this.fe = plugin; + } + public void onLoad() + { + fe.getDataFolder().mkdirs(); + fe.saveDefaultConfig(); + } + public void onEnable() + { + final FileConfiguration config = fe.getConfig(); + int version = config.getInt("internal.version", 0); + switch(version) + { + case 0: + fe.getLogger().info("[Fe] I will migrate config.yml to the newest format now."); + try + { + final File source = new File(fe.getDataFolder(), "config.yml"); + final File target = new File(fe.getDataFolder(), "config.yml.v0-saved"); + if(!target.isFile()) + { + Files.copy(source, target); + fe.getLogger().info("[Fe] Backup of config.yml saved into config.yml.v0-saved."); + } + } catch(IOException ex) { + } + migrate_v0_to_v1(config); + config.set("internal.version", 1); + fe.getLogger().info("[Fe] Configuration has been migrated successfully."); + // Insert new version updaters RIGHT HERE (using new "case #:" statements) + fe.saveConfig(); + fe.reloadConfig(); + default: + // Configuration is up-to-date + break; + } + } + public double getDefaultHoldings() + { + return fe.getConfig().getDouble("settings.new-player-holdings", 10.00); + } + public double getMaximumHoldings() + { + return fe.getConfig().getDouble("settings.maximum-holdings", -1.0); + } + public String getPrefix() + { + return fe.getConfig().getString("settings.prefix", "Fe"); + } + public int getShowTop() + { + return fe.getConfig().getInt("settings.show-top", 10); + } + public boolean isAutoClean() + { + return fe.getConfig().getBoolean("settings.autoclean"); + } + public String getCurrencyPrefix() + { + return fe.getConfig().getString("settings.currency.prefix"); + } + public boolean isCurrencyNegative() + { + return fe.getConfig().getBoolean("settings.currency.negative"); + } + public String getCurrencyMajorSingle() + { + return fe.getConfig().getString("settings.currency.major.single"); + } + public String getCurrencyMajorMultiple() + { + return fe.getConfig().getString("settings.currency.major.multiple"); + } + public boolean isMinorCurrencyEnabled() + { + return fe.getConfig().getBoolean("settings.currency.minor.enabled"); + } + public String getCurrencyMinorSingle() + { + return fe.getConfig().getString("settings.currency.minor.single"); + } + public String getCurrencyMinorMultiple() + { + return fe.getConfig().getString("settings.currency.minor.multiple"); + } + public String getDatabase() + { + return fe.getConfig().getString("settings.database-type", "sqlite"); + } + public ConfigurationSection getDatabaseSection(String name) + { + ConfigurationSection result = fe.getConfig().getConfigurationSection("settings." + name); + if(result == null) + result = fe.getConfig().createSection("settings." + name); + return result; + } + private void migrate_v0_to_v1(FileConfiguration config) + { + config.set("internal.do-not-touch", null); + final double new_player_holdings = config.getDouble("holdings", 10.00); + config.set("holdings", null); + config.set("settings.new-player-holdings", new_player_holdings); + final double maximum_holdings = config.getDouble("maxholdings", -1.0); + config.set("maxholdings", null); + config.set("settings.maximum-holdings", maximum_holdings); + final String prefix = config.getString("prefix", "Fe"); + config.set("prefix", null); + config.set("settings.prefix", prefix); + final int show_top = config.getInt("topsize", 10); + config.set("topsize", null); + config.set("settings.show-top", show_top); + final ConfigurationSection currency = config.getConfigurationSection("currency"); + config.set("currency", null); + config.set("settings.currency", currency); + final String database_type = config.getString("type", "sqlite"); + config.set("type", null); + config.set("settings.database-type", database_type); + final boolean autoclean = config.getBoolean("autoclean", true); + config.set("autoclean", null); + config.set("settings.autoclean", autoclean); + ConfigurationSection mysql = config.getConfigurationSection("mysql"); + if(mysql == null) + mysql = config.createSection("mysql"); + mysql_v0_to_v1(mysql); + config.set("mysql", null); + config.set("settings.mysql", mysql); + config.set("sqlite", null); + // Remove old unused config nodes + config.set("cacheaccounts", null); + config.set("updatecheck", null); + } + private void mysql_v0_to_v1(ConfigurationSection mysql) + { + final String url = new StringBuilder() + .append(mysql.getString("host", "localhost")) + .append(":") + .append(mysql.getInt("port", 3306)) + .append("/") + .append(mysql.getString("database", "minecraft")) + .toString(); + mysql.set("host", null); + mysql.set("port", null); + mysql.set("database", null); + mysql.set("connection.database", url); + final String username = mysql.getString("user", "user1"); + mysql.set("user", null); + mysql.set("connection.username", username); + final String password = mysql.getString("password", "pass1"); + mysql.set("password", null); + mysql.set("connection.password", password); + } +} diff --git a/src/main/java/com/niccholaspage/Fe/API/SubCommand.java b/src/main/java/com/niccholaspage/Fe/API/SubCommand.java index 8cc81b8..3f5d153 100644 --- a/src/main/java/com/niccholaspage/Fe/API/SubCommand.java +++ b/src/main/java/com/niccholaspage/Fe/API/SubCommand.java @@ -2,17 +2,17 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; public abstract class SubCommand { private final String name; private final String permission; private final String usage; - private final Phrase description; + private final Phrases description; private final CommandType commandType; public abstract boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args); - public SubCommand(String name, String permission, String usage, Phrase description, CommandType commandType) + public SubCommand(String name, String permission, String usage, Phrases description, CommandType commandType) { this.name = name; this.permission = permission; @@ -36,7 +36,7 @@ public String getUsage() { return usage; } - public Phrase getDescription() + public Phrases getDescription() { return description; } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java index 9ab052f..6897a5e 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java @@ -4,7 +4,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; @@ -14,7 +14,7 @@ public class BalanceCommand extends SubCommand private final Fe plugin; public BalanceCommand(Fe plugin) { - super("balance,bal", "fe.balance", "(name)", Phrase.COMMAND_BALANCE, CommandType.CONSOLE_WITH_ARGUMENTS); + super("balance,bal", "fe.balance", "(name)", Phrases.COMMAND_BALANCE, CommandType.CONSOLE_WITH_ARGUMENTS); this.plugin = plugin; } @Override @@ -25,19 +25,19 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Account account = plugin.getShortenedAccount(args[0]); if(account == null) { - Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + Phrases.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); return true; } - Phrase.ACCOUNT_HAS.sendWithPrefix(sender, account.getName(), plugin.getAPI().format(account)); + Phrases.ACCOUNT_HAS.sendWithPrefix(sender, account.getName(), plugin.getAPI().format(account)); } else { Player player = plugin.getServer().getPlayer(sender.getName()); Account account = plugin.getAPI().getAccount(sender.getName(), player != null ? player.getUniqueId().toString() : null); if(account == null) { - Phrase.YOUR_ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + Phrases.YOUR_ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); return true; } - Phrase.YOU_HAVE.sendWithPrefix(sender, plugin.getAPI().format(account)); + Phrases.YOU_HAVE.sendWithPrefix(sender, plugin.getAPI().format(account)); } return true; } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java index 54b4f20..ce79615 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java @@ -3,7 +3,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; @@ -12,14 +12,14 @@ public class CleanCommand extends SubCommand private final Fe plugin; public CleanCommand(Fe plugin) { - super("clean", "fe.clean", "clean", Phrase.COMMAND_CLEAN, CommandType.CONSOLE); + super("clean", "fe.clean", "clean", Phrases.COMMAND_CLEAN, CommandType.CONSOLE); this.plugin = plugin; } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { plugin.getAPI().clean(); - Phrase.ACCOUNT_CLEANED.sendWithPrefix(sender); + Phrases.ACCOUNT_CLEANED.sendWithPrefix(sender); return true; } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java index a2448a3..7da2624 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java @@ -3,7 +3,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; @@ -13,7 +13,7 @@ public class CreateCommand extends SubCommand private final Fe plugin; public CreateCommand(Fe plugin) { - super("create", "fe.create", "create [name]", Phrase.COMMAND_CREATE, CommandType.CONSOLE); + super("create", "fe.create", "create [name]", Phrases.COMMAND_CREATE, CommandType.CONSOLE); this.plugin = plugin; } @Override @@ -24,16 +24,16 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String name = args[0]; if(plugin.getAPI().accountExists(name, null)) { - Phrase.ACCOUNT_EXISTS.sendWithPrefix(sender); + Phrases.ACCOUNT_EXISTS.sendWithPrefix(sender); return true; } if(name.length() > 16) { - Phrase.NAME_TOO_LONG.sendWithPrefix(sender); + Phrases.NAME_TOO_LONG.sendWithPrefix(sender); return true; } Account account = plugin.getAPI().updateAccount(name, null); - Phrase.ACCOUNT_CREATED.sendWithPrefix(sender, Phrase.PRIMARY_COLOR.parse() + account.getName() + Phrase.SECONDARY_COLOR.parse()); + Phrases.ACCOUNT_CREATED.sendWithPrefix(sender, Phrases.PRIMARY_COLOR.parse() + account.getName() + Phrases.SECONDARY_COLOR.parse()); return true; } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java index e5a74b1..616a1df 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java @@ -4,7 +4,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; @@ -14,7 +14,7 @@ public class DeductCommand extends SubCommand private final Fe plugin; public DeductCommand(Fe plugin) { - super("deduct", "fe.deduct", "deduct [name] [amount]", Phrase.COMMAND_DEDUCT, CommandType.CONSOLE); + super("deduct", "fe.deduct", "deduct [name] [amount]", Phrases.COMMAND_DEDUCT, CommandType.CONSOLE); this.plugin = plugin; } @Override @@ -32,15 +32,15 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Account victim = plugin.getShortenedAccount(args[0]); if(victim == null) { - Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + Phrases.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); return true; } String formattedMoney = plugin.getAPI().format(money); victim.withdraw(money); - Phrase.PLAYER_DEDUCT_MONEY.sendWithPrefix(sender, formattedMoney, victim.getName()); + Phrases.PLAYER_DEDUCT_MONEY.sendWithPrefix(sender, formattedMoney, victim.getName()); Player receiverPlayer = plugin.getServer().getPlayerExact(victim.getName()); if(receiverPlayer != null) - Phrase.PLAYER_DEDUCTED_MONEY.sendWithPrefix(receiverPlayer, formattedMoney, sender.getName()); + Phrases.PLAYER_DEDUCTED_MONEY.sendWithPrefix(receiverPlayer, formattedMoney, sender.getName()); return true; } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java index 6855ad7..ec482e3 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java @@ -4,7 +4,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; @@ -14,7 +14,7 @@ public class GrantCommand extends SubCommand private final Fe plugin; public GrantCommand(Fe plugin) { - super("grant", "fe.grant", "grant [name] [amount]", Phrase.COMMAND_GRANT, CommandType.CONSOLE); + super("grant", "fe.grant", "grant [name] [amount]", Phrases.COMMAND_GRANT, CommandType.CONSOLE); this.plugin = plugin; } @Override @@ -33,20 +33,20 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Account victim = plugin.getShortenedAccount(args[0]); if(victim == null) { - Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + Phrases.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); return true; } if(!victim.canReceive(money)) { - Phrase.MAX_BALANCE_REACHED.sendWithPrefix(sender, victim.getName()); + Phrases.MAX_BALANCE_REACHED.sendWithPrefix(sender, victim.getName()); return true; } String formattedMoney = plugin.getAPI().format(money); victim.deposit(money); - Phrase.PLAYER_GRANT_MONEY.sendWithPrefix(sender, formattedMoney, victim.getName()); + Phrases.PLAYER_GRANT_MONEY.sendWithPrefix(sender, formattedMoney, victim.getName()); Player receiverPlayer = plugin.getServer().getPlayerExact(victim.getName()); if(receiverPlayer != null) - Phrase.PLAYER_GRANTED_MONEY.sendWithPrefix(receiverPlayer, formattedMoney, sender.getName()); + Phrases.PLAYER_GRANTED_MONEY.sendWithPrefix(receiverPlayer, formattedMoney, sender.getName()); return true; } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java index 55fbb5a..499cc68 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java @@ -5,7 +5,7 @@ import org.bukkit.entity.Player; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.FeCommands; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; @@ -15,17 +15,17 @@ public class HelpCommand extends SubCommand private final FeCommands command; public HelpCommand(Fe plugin, FeCommands command) { - super("help,?", "fe.?", "help", Phrase.COMMAND_HELP, CommandType.CONSOLE); + super("help,?", "fe.?", "help", Phrases.COMMAND_HELP, CommandType.CONSOLE); this.plugin = plugin; this.command = command; } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - sender.sendMessage(plugin.getEqualMessage(Phrase.HELP.parse(), 10)); - String operatorColor = Phrase.TERTIARY_COLOR.parse(); - String textColor = Phrase.SECONDARY_COLOR.parse(); - sender.sendMessage(textColor + Phrase.HELP_ARGUMENTS.parse(operatorColor + "[]" + textColor, operatorColor + "()" + textColor)); + sender.sendMessage(plugin.getEqualMessage(Phrases.HELP.parse(), 10)); + String operatorColor = Phrases.TERTIARY_COLOR.parse(); + String textColor = Phrases.SECONDARY_COLOR.parse(); + sender.sendMessage(textColor + Phrases.HELP_ARGUMENTS.parse(operatorColor + "[]" + textColor, operatorColor + "()" + textColor)); for(SubCommand subcmd : this.command.getCommands()) { if(subcmd.getName().equalsIgnoreCase(getName())) diff --git a/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java index 78cae7c..60ea460 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java @@ -3,7 +3,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; @@ -12,14 +12,14 @@ public class ReloadCommand extends SubCommand private final Fe plugin; public ReloadCommand(Fe plugin) { - super("reload", "fe.reload", "reload", Phrase.COMMAND_RELOAD, CommandType.CONSOLE); + super("reload", "fe.reload", "reload", Phrases.COMMAND_RELOAD, CommandType.CONSOLE); this.plugin = plugin; } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { plugin.reloadConfig(); - Phrase.CONFIG_RELOADED.sendWithPrefix(sender); + Phrases.CONFIG_RELOADED.sendWithPrefix(sender); return true; } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java index c0998cb..2d04f62 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java @@ -3,7 +3,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; @@ -12,7 +12,7 @@ public class RemoveCommand extends SubCommand private final Fe plugin; public RemoveCommand(Fe plugin) { - super("remove", "fe.remove", "remove [name]", Phrase.COMMAND_REMOVE, CommandType.CONSOLE); + super("remove", "fe.remove", "remove [name]", Phrases.COMMAND_REMOVE, CommandType.CONSOLE); this.plugin = plugin; } @Override @@ -23,11 +23,11 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String name = args[0]; if(!plugin.getAPI().accountExists(name, null)) { - Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + Phrases.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); return true; } plugin.getAPI().removeAccount(name, null); - Phrase.ACCOUNT_REMOVED.sendWithPrefix(sender, Phrase.PRIMARY_COLOR.parse() + name + Phrase.SECONDARY_COLOR.parse()); + Phrases.ACCOUNT_REMOVED.sendWithPrefix(sender, Phrases.PRIMARY_COLOR.parse() + name + Phrases.SECONDARY_COLOR.parse()); return true; } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java index b1f3fe0..fbd462d 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java @@ -4,7 +4,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; @@ -14,7 +14,7 @@ public class SendCommand extends SubCommand private final Fe plugin; public SendCommand(Fe plugin) { - super("send,pay,give", "fe.send", "send [name] [amount]", Phrase.COMMAND_SEND, CommandType.PLAYER); + super("send,pay,give", "fe.send", "send [name] [amount]", Phrases.COMMAND_SEND, CommandType.PLAYER); this.plugin = plugin; } @Override @@ -34,27 +34,27 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Account receiver = plugin.getShortenedAccount(args[0]); if(receiver == null) { - Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + Phrases.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); return true; } Account account = plugin.getAPI().getAccount(sender.getName(), null); if(!account.has(money)) { - Phrase.NOT_ENOUGH_MONEY.sendWithPrefix(sender); + Phrases.NOT_ENOUGH_MONEY.sendWithPrefix(sender); return true; } if(!receiver.canReceive(money)) { - Phrase.MAX_BALANCE_REACHED.sendWithPrefix(sender, receiver.getName()); + Phrases.MAX_BALANCE_REACHED.sendWithPrefix(sender, receiver.getName()); return true; } String formattedMoney = plugin.getAPI().format(money); account.withdraw(money); receiver.deposit(money); - Phrase.MONEY_SENT.sendWithPrefix(sender, formattedMoney, receiver.getName()); + Phrases.MONEY_SENT.sendWithPrefix(sender, formattedMoney, receiver.getName()); Player receiverPlayer = plugin.getServer().getPlayerExact(receiver.getName()); if(receiverPlayer != null) - Phrase.MONEY_RECEIVE.sendWithPrefix(receiverPlayer, formattedMoney, sender.getName()); + Phrases.MONEY_RECEIVE.sendWithPrefix(receiverPlayer, formattedMoney, sender.getName()); return true; } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java index 2bf066d..e4c0b2f 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java @@ -3,7 +3,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; @@ -14,7 +14,7 @@ public class SetCommand extends SubCommand public SetCommand(Fe plugin) { - super("set", "fe.set", "set [name] [amount]", Phrase.COMMAND_SET, CommandType.CONSOLE); + super("set", "fe.set", "set [name] [amount]", Phrases.COMMAND_SET, CommandType.CONSOLE); this.plugin = plugin; } @Override @@ -32,17 +32,17 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Account victim = plugin.getShortenedAccount(args[0]); if(victim == null) { - Phrase.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); + Phrases.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); return true; } if(!victim.canReceive(money)) { - Phrase.MAX_BALANCE_REACHED.sendWithPrefix(sender, victim.getName()); + Phrases.MAX_BALANCE_REACHED.sendWithPrefix(sender, victim.getName()); return true; } String formattedMoney = plugin.getAPI().format(money); victim.setMoney(money); - Phrase.PLAYER_SET_MONEY.sendWithPrefix(sender, victim.getName(), formattedMoney); + Phrases.PLAYER_SET_MONEY.sendWithPrefix(sender, victim.getName(), formattedMoney); return true; } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java index 85ce6ba..07ab3ba 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java @@ -3,7 +3,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrase; +import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.API.Account; @@ -14,7 +14,7 @@ public class TopCommand extends SubCommand private final Fe plugin; public TopCommand(Fe plugin) { - super("top", "fe.top", "top", Phrase.COMMAND_TOP, CommandType.CONSOLE); + super("top", "fe.top", "top", Phrases.COMMAND_TOP, CommandType.CONSOLE); this.plugin = plugin; } @Override @@ -23,15 +23,15 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, List topAccounts = plugin.getAPI().getTopAccounts(); if(topAccounts.size() < 1) { - Phrase.NO_ACCOUNTS_EXIST.sendWithPrefix(sender); + Phrases.NO_ACCOUNTS_EXIST.sendWithPrefix(sender); return true; } - sender.sendMessage(plugin.getEqualMessage(Phrase.RICH.parse(), 10)); + sender.sendMessage(plugin.getEqualMessage(Phrases.RICH.parse(), 10)); for(int i = 0; i < topAccounts.size(); i++) { Account account = topAccounts.get(i); - String two = Phrase.SECONDARY_COLOR.parse(); - sender.sendMessage(two + (i + 1) + ". " + Phrase.PRIMARY_COLOR.parse() + account.getName() + two + " - " + plugin.getAPI().format(account)); + String two = Phrases.SECONDARY_COLOR.parse(); + sender.sendMessage(two + (i + 1) + ". " + Phrases.PRIMARY_COLOR.parse() + account.getName() + two + " - " + plugin.getAPI().format(account)); } sender.sendMessage(plugin.getEndEqualMessage(28)); return true; diff --git a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index 9ac157c..7ad729a 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -27,8 +27,10 @@ protected Connection getNewConnection() try { Class.forName("com.mysql.jdbc.Driver"); - String url = "jdbc:mysql://" + config.getString("host") + ":" + config.getString("port") + "/" + config.getString("database"); - return DriverManager.getConnection(url, config.getString("user"), config.getString("password")); + return DriverManager.getConnection( + "jdbc:mysql://" + config.getString("connection.database"), + config.getString("connection.username"), + config.getString("connection.password")); } catch(ClassNotFoundException | SQLException e) { return null; } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java index be246d5..99d2689 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java @@ -35,7 +35,7 @@ public void run() try { if(connection != null && !connection.isClosed()) - connection.createStatement().execute("/* ping */ SELECT 1"); + connection.createStatement().execute("/* ping */ SELECT 1;"); } catch(SQLException e) { connection = getNewConnection(); } @@ -203,15 +203,16 @@ public HashMap loadAccountData(String name, String uuid) { PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + tableAccounts + " WHERE UPPER(" + (uuid != null ? columnAccountsUUID : columnAccountsUser) + ") LIKE UPPER(?)"); statement.setString(1, uuid != null ? uuid : name); - ResultSet set = statement.executeQuery(); - HashMap data = new HashMap<>(); - while(set.next()) + try(ResultSet set = statement.executeQuery()) { - data.put("money", set.getString(columnAccountsMoney)); - data.put("name", set.getString(columnAccountsUser)); - } - set.close(); + HashMap data = new HashMap<>(); + while(set.next()) + { + data.put("money", set.getString(columnAccountsMoney)); + data.put("name", set.getString(columnAccountsUser)); + } return data; + } } catch(SQLException e) { System.out.println(e); return null; diff --git a/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java b/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java index ac803e3..e81ede7 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java @@ -24,7 +24,8 @@ public Connection getNewConnection() try { Class.forName("org.sqlite.JDBC"); - return DriverManager.getConnection("jdbc:sqlite:" + new File(plugin.getDataFolder(), "database.db").getAbsolutePath()); + return DriverManager.getConnection( + "jdbc:sqlite:" + new File(plugin.getDataFolder(), "database.db").getAbsolutePath()); } catch(ClassNotFoundException | SQLException e) { return null; } diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index da90d6a..df5d9a8 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -2,10 +2,7 @@ import com.niccholaspage.Fe.API.API; import net.milkbowl.vault.economy.Economy; -import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.java.JavaPlugin; import org.mcstats.Metrics; @@ -13,13 +10,13 @@ import org.mcstats.Metrics.Plotter; import com.niccholaspage.Fe.API.Account; import com.niccholaspage.Fe.API.Database; +import com.niccholaspage.Fe.API.Settings; import com.niccholaspage.Fe.Databases.MySQLDB; import com.niccholaspage.Fe.Databases.SQLiteDB; import java.io.File; import java.io.IOException; import java.util.HashSet; import java.util.Set; -import org.bukkit.event.Listener; public class Fe extends JavaPlugin { @@ -27,37 +24,30 @@ public class Fe extends JavaPlugin private final Set databases = new HashSet<>(); private final FeCommands commands = new FeCommands(this); private final FePlayerListener listener = new FePlayerListener(this); + public final Settings settings = new Settings(this); private Database database; @Override public void onLoad() { - getDataFolder().mkdirs(); - Phrase.init(this); + settings.onLoad(); + Phrases.init(this); } @Override public void onEnable() { - databases.add(new MySQLDB(this)); + settings.onEnable(); + Phrases.setupPhrases(new File(getDataFolder(), "phrases.yml")); databases.add(new SQLiteDB(this)); + databases.add(new MySQLDB(this)); for(Database db : databases) - { - String name = db.getConfigName(); - ConfigurationSection section = getConfig().getConfigurationSection(name); - if(section == null) - section = getConfig().createSection(name); - db.getConfigDefaults(section); - if(section.getKeys(false).isEmpty()) - getConfig().set(name, null); - } - getConfig().options().copyDefaults(true); - getConfig().options().header("Fe Config - loyloy.io\n" - + "holdings - The amount of money that players will start out with\n" - + "prefix - The message prefix\n" - + "currency - The single and multiple names for the currency\n" - + "type - The type of database used (sqlite, mysql, or mongo)"); + db.getConfigDefaults(db.getConfigSection()); + getConfig().options().header(null); saveConfig(); if(!setupDatabase()) + { + getServer().getPluginManager().disablePlugin(this); return; + } getCommand("fe").setExecutor(commands); getServer().getPluginManager().registerEvents(listener, this); setupVault(); @@ -67,9 +57,37 @@ public void onEnable() if(api.isAutoClean()) { api.clean(); - log(Phrase.ACCOUNT_CLEANED); + log(Phrases.ACCOUNT_CLEANED); } } + private boolean setupDatabase() + { + String type = settings.getDatabase(); + database = null; + for(Database db : databases) + if(type.equalsIgnoreCase(db.getConfigName())) + { + this.database = db; + break; + } + if(database == null) + { + log(Phrases.DATABASE_TYPE_DOES_NOT_EXIST); + return false; + } + if(!database.init()) + { + log(Phrases.DATABASE_FAILURE_DISABLE); + setEnabled(false); + return false; + } + return true; + } + private void setupVault() + { + if(getServer().getPluginManager().getPlugin("Vault") != null) + getServer().getServicesManager().register(Economy.class, new VaultHandler(this), this, ServicePriority.Highest); + } @Override public void onDisable() { @@ -77,30 +95,6 @@ public void onDisable() getCurrentDatabase().close(); getServer().getServicesManager().unregisterAll(this); } - @Override - public void reloadConfig() - { - super.reloadConfig(); - final String oldCurrencySingle = getConfig().getString("currency.single"); - final String oldCurrencyMultiple = getConfig().getString("currency.multiple"); - if(oldCurrencySingle != null) - { - getConfig().set("currency.major.single", oldCurrencySingle); - getConfig().set("currency.single", null); - } - if(oldCurrencyMultiple != null) - { - getConfig().set("currency.major.multiple", oldCurrencyMultiple); - getConfig().set("currency.multiple", null); - } - if(!getConfig().isSet("autoclean")) - getConfig().set("autoclean", true); - // Remove old config nodes. - getConfig().set("cacheaccounts", null); - getConfig().set("updatecheck", null); - Phrase.setupPhrases(new File(getDataFolder(), "phrases.yml")); - saveConfig(); - } public API getAPI() { return api; @@ -113,33 +107,10 @@ public void log(String message) { getLogger().info(message); } - public void log(Phrase phrase, String... args) + public void log(Phrases phrase, String... args) { log(phrase.parse(args)); } - private boolean setupDatabase() - { - String type = getConfig().getString("type"); - database = null; - for(Database db : databases) - if(type.equalsIgnoreCase(db.getConfigName())) - { - this.database = db; - break; - } - if(database == null) - { - log(Phrase.DATABASE_TYPE_DOES_NOT_EXIST); - return false; - } - if(!database.init()) - { - log(Phrase.DATABASE_FAILURE_DISABLE); - setEnabled(false); - return false; - } - return true; - } public Account getShortenedAccount(String name) { Account account = getAPI().getAccount(name, null); @@ -153,8 +124,8 @@ public Account getShortenedAccount(String name) } public String getMessagePrefix() { - String third = Phrase.TERTIARY_COLOR.parse(); - return third + "[" + Phrase.PRIMARY_COLOR.parse() + "$1" + third + "] " + Phrase.SECONDARY_COLOR.parse(); + String third = Phrases.TERTIARY_COLOR.parse(); + return third + "[" + Phrases.PRIMARY_COLOR.parse() + "$1" + third + "] " + Phrases.SECONDARY_COLOR.parse(); } public String getEqualMessage(String inBetween, int length) { @@ -164,22 +135,16 @@ public String getEqualMessage(String inBetween, int length, int length2) { String equals = getEndEqualMessage(length); String end = getEndEqualMessage(length2); - String third = Phrase.TERTIARY_COLOR.parse(); - return equals + third + "[" + Phrase.PRIMARY_COLOR.parse() + inBetween + third + "]" + end; + String third = Phrases.TERTIARY_COLOR.parse(); + return equals + third + "[" + Phrases.PRIMARY_COLOR.parse() + inBetween + third + "]" + end; } public String getEndEqualMessage(int length) { - String message = Phrase.SECONDARY_COLOR.parse() + ""; + String message = Phrases.SECONDARY_COLOR.parse() + ""; for(int i = 0; i < length; i ++) message += "="; return message; } - private void setupVault() - { - final Plugin vault = getServer().getPluginManager().getPlugin("Vault"); - if(vault != null) - getServer().getServicesManager().register(Economy.class, new VaultHandler(this), this, ServicePriority.Highest); - } private void loadMetrics() { try diff --git a/src/main/java/com/niccholaspage/Fe/FeCommands.java b/src/main/java/com/niccholaspage/Fe/FeCommands.java index 4a3a44d..2b168ba 100644 --- a/src/main/java/com/niccholaspage/Fe/FeCommands.java +++ b/src/main/java/com/niccholaspage/Fe/FeCommands.java @@ -88,31 +88,31 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, boolean console = !(sender instanceof Player); if(console && args.length < 2 && command.getCommandType() == CommandType.CONSOLE_WITH_ARGUMENTS) { - Phrase.COMMAND_NEEDS_ARGUMENTS.sendWithPrefix(sender); + Phrases.COMMAND_NEEDS_ARGUMENTS.sendWithPrefix(sender); return true; } if(console && command.getCommandType() == CommandType.PLAYER) { - Phrase.COMMAND_NOT_CONSOLE.sendWithPrefix(sender, commandLabel); + Phrases.COMMAND_NOT_CONSOLE.sendWithPrefix(sender, commandLabel); return true; } if(!sender.hasPermission(command.getPermission())) { - Phrase.NO_PERMISSION_FOR_COMMAND.sendWithPrefix(sender); + Phrases.NO_PERMISSION_FOR_COMMAND.sendWithPrefix(sender); return true; } String[] realArgs = new String[args.length - 1]; for(int i = 1; i < args.length; i ++) realArgs[i - 1] = args[i]; if(!command.onCommand(sender, cmd, commandLabel, realArgs)) - Phrase.TRY_COMMAND.sendWithPrefix(sender, parse(commandLabel, command)); + Phrases.TRY_COMMAND.sendWithPrefix(sender, parse(commandLabel, command)); return true; } public String parse(String label, SubCommand command) { - String commandColor = Phrase.PRIMARY_COLOR.parse(); - String operatorsColor = Phrase.PRIMARY_COLOR.parse(); - String argumentColor = Phrase.ARGUMENT_COLOR.parse(); + String commandColor = Phrases.PRIMARY_COLOR.parse(); + String operatorsColor = Phrases.PRIMARY_COLOR.parse(); + String argumentColor = Phrases.ARGUMENT_COLOR.parse(); StringBuilder builder = new StringBuilder(commandColor).append("/").append(label); if(!command.getFirstName().equalsIgnoreCase("balance")) builder.append(" ").append(command.getFirstName()).append(" "); diff --git a/src/main/java/com/niccholaspage/Fe/Phrase.java b/src/main/java/com/niccholaspage/Fe/Phrases.java similarity index 93% rename from src/main/java/com/niccholaspage/Fe/Phrase.java rename to src/main/java/com/niccholaspage/Fe/Phrases.java index 57688ff..30f9ec6 100644 --- a/src/main/java/com/niccholaspage/Fe/Phrase.java +++ b/src/main/java/com/niccholaspage/Fe/Phrases.java @@ -5,7 +5,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.YamlConfiguration; -public enum Phrase +public enum Phrases { DATABASE_TYPE_DOES_NOT_EXIST("That database type doesn't exist."), DATABASE_FAILURE_DISABLE("Database initialization has failed, disabling Fe."), @@ -60,11 +60,11 @@ public enum Phrase private final String defaultMessage; private final boolean categorized; private String message; - private Phrase(String defaultMessage) + private Phrases(String defaultMessage) { this(defaultMessage, false); } - private Phrase(String defaultMessage, boolean categorized) + private Phrases(String defaultMessage, boolean categorized) { this.defaultMessage = defaultMessage; this.categorized = categorized; @@ -107,7 +107,7 @@ public String parseWithoutSpaces(String... params) } private String parseWithPrefix(String... params) { - return plugin.getMessagePrefix().replace("$1", plugin.getConfig().getString("prefix")) + parse(params); + return plugin.getMessagePrefix().replace("$1", plugin.settings.getPrefix()) + parse(params); } public void send(CommandSender sender, String... params) { @@ -119,12 +119,12 @@ public void sendWithPrefix(CommandSender sender, String... params) } public static void setupPhrases(File phrasesFile) { - for(Phrase phrase : Phrase.values()) + for(Phrases phrase : Phrases.values()) phrase.reset(); if(!phrasesFile.exists()) return; YamlConfiguration phrasesConfig = YamlConfiguration.loadConfiguration(phrasesFile); - for(Phrase phrase : Phrase.values()) + for(Phrases phrase : Phrases.values()) { String phraseConfigName = phrase.getConfigName(); String phraseMessage = phrasesConfig.getString(phraseConfigName); diff --git a/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java b/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java index 8b7f800..bf392f3 100644 --- a/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java +++ b/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java @@ -15,7 +15,8 @@ public class UUIDFetcher implements Callable> { private static final double PROFILES_PER_REQUEST = 100; - private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft"; + private static final String PROFILE_URL_ORIGINAL = "https://api.mojang.com/profiles/minecraft"; + private String PROFILE_URL = PROFILE_URL_ORIGINAL; private final JSONParser jsonParser = new JSONParser(); private final List names; private final boolean rateLimiting; @@ -28,6 +29,10 @@ public UUIDFetcher(List names) { this(names, true); } + public void setNewFetchMethodURL(String newURL) + { + this.PROFILE_URL = (newURL != null && !newURL.isEmpty()) ? newURL : PROFILE_URL_ORIGINAL; + } @Override public Map call() throws Exception { @@ -54,12 +59,13 @@ public Map call() throws Exception } private static void writeBody(HttpURLConnection connection, String body) throws Exception { - OutputStream stream = connection.getOutputStream(); - stream.write(body.getBytes()); - stream.flush(); - stream.close(); + try(OutputStream stream = connection.getOutputStream()) + { + stream.write(body.getBytes()); + stream.flush(); + } } - private static HttpURLConnection createConnection() throws Exception + private HttpURLConnection createConnection() throws Exception { URL url = new URL(PROFILE_URL); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index dab80fe..a8ece1f 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,18 +1,31 @@ -holdings: 10.00 -maxholdings: -1 -prefix: Fe -topsize: 10 - -currency: - negative: false - major: - single: Fe - multiple: Fe - minor: - enabled: false - single: Fe - multiple: Fe - prefix: "" - -type: sqlite -autoclean: true +settings: + new-player-holdings: 10.00 + maximum-holdings: -1.0 + show-top: 10 + prefix: Fe + currency: + prefix: '' + negative: false + major: + single: Fe + multiple: Fe + minor: + enabled: false + single: Fe + multiple: Fe + database-type: sqlite + mysql: + database: 'localhost:3306/minecraft' + username: '' + password: '' + database: + tables: + accounts: fe_accounts + columns: + accounts: + uuid: uuid + username: name + money: money + autoclean: true +internal: + version: 1 From 9b3a6d9813baeac19c960eda9bd3fa316e060e00 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Sun, 17 May 2015 21:28:24 +0600 Subject: [PATCH 17/40] (BROKEN) From this commit I start big rewrite of database connections, API and VaultHandler. Main idea is that all accounts will be cached and accessible very fast. When money changes account will be sent to parallel thread for actual saving in DB. --- .../com/niccholaspage/Fe/API/Account.java | 78 +++-- .../com/niccholaspage/Fe/API/Database.java | 177 ----------- .../Fe/API/{API.java => FeAPI.java} | 34 +- .../Fe/Commands/BalanceCommand.java | 8 +- .../Fe/Commands/CleanCommand.java | 2 +- .../Fe/Commands/CreateCommand.java | 4 +- .../Fe/Commands/DeductCommand.java | 2 +- .../Fe/Commands/GrantCommand.java | 2 +- .../Fe/Commands/RemoveCommand.java | 11 +- .../Fe/Commands/SendCommand.java | 4 +- .../niccholaspage/Fe/Commands/SetCommand.java | 2 +- .../niccholaspage/Fe/Commands/TopCommand.java | 4 +- .../Fe/Databases/DatabaseGeneric.java | 99 ++++++ .../Fe/Databases/DatabaseSQL.java | 237 ++++++++++++++ .../niccholaspage/Fe/Databases/MySQLDB.java | 8 +- .../com/niccholaspage/Fe/Databases/SQLDB.java | 299 ------------------ .../niccholaspage/Fe/Databases/SQLiteDB.java | 7 +- src/main/java/com/niccholaspage/Fe/Fe.java | 37 ++- .../java/com/niccholaspage/Fe/FeListener.java | 39 +++ .../niccholaspage/Fe/FePlayerListener.java | 37 --- .../Fe/{API/Settings.java => FeSettings.java} | 11 +- .../com/niccholaspage/Fe/VaultHandler.java | 51 ++- src/main/resources/config.yml | 13 +- 23 files changed, 514 insertions(+), 652 deletions(-) delete mode 100644 src/main/java/com/niccholaspage/Fe/API/Database.java rename src/main/java/com/niccholaspage/Fe/API/{API.java => FeAPI.java} (78%) create mode 100644 src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java create mode 100644 src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java delete mode 100644 src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java create mode 100644 src/main/java/com/niccholaspage/Fe/FeListener.java delete mode 100644 src/main/java/com/niccholaspage/Fe/FePlayerListener.java rename src/main/java/com/niccholaspage/Fe/{API/Settings.java => FeSettings.java} (96%) diff --git a/src/main/java/com/niccholaspage/Fe/API/Account.java b/src/main/java/com/niccholaspage/Fe/API/Account.java index e5c2bd6..f419128 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Account.java +++ b/src/main/java/com/niccholaspage/Fe/API/Account.java @@ -1,21 +1,25 @@ package com.niccholaspage.Fe.API; +import com.niccholaspage.Fe.Databases.DatabaseGeneric; import com.niccholaspage.Fe.Fe; +import java.util.UUID; +import org.bukkit.entity.Player; public class Account implements Comparable { private final Fe plugin; private final Database database; + private final UUID uuid; private String name; - private final String uuid; - private Double money; - public Account(Fe plugin, String name, String uuid, Database database) + private double money; + private Player player; + public Account(Fe plugin, DatabaseGeneric database, String name, UUID uuid, double money) { this.plugin = plugin; this.database = database; this.name = name; this.uuid = uuid; - this.money = null; + this.money = money; } public String getName() { @@ -24,67 +28,59 @@ public String getName() public void setName(String name) { this.name = name; - if(money == null) - this.money = getMoney(); - database.saveAccount(name, uuid, money); + database.saveAccount(this); } - public String getUUID() + public UUID getUUID() { return uuid; } - public Double getMoney() + public double getMoney() { - if(money != null) - return money; - String money_string = database.loadAccountData(name, uuid).get("money"); - Double parseMoney = 0D; - try - { - parseMoney = Double.parseDouble(money_string); - } catch(Exception e) { - } - if(database.cacheAccounts()) - this.money = parseMoney; - return parseMoney; + return money; } public void setMoney(double money) { - Double currentMoney = getMoney(); - if(currentMoney != null && currentMoney == money) - return; - if(money < 0 && !plugin.getAPI().isCurrencyNegative()) + if(money < 0 && !plugin.api.isCurrencyNegative()) money = 0; - currentMoney = plugin.getAPI().getMoneyRounded(money); - if(plugin.getAPI().getMaxHoldings() > 0 && currentMoney > plugin.getAPI().getMaxHoldings()) - currentMoney = plugin.getAPI().getMoneyRounded(plugin.getAPI().getMaxHoldings()); - if(!database.cacheAccounts() || plugin.getServer().getPlayerExact(getName()) == null) - save(currentMoney); - else - this.money = currentMoney; + money = plugin.api.getMoneyRounded(money); + final double maxHoldings = plugin.api.getMaxHoldings(); + if(plugin.api.getMaxHoldings() > 0.0 && money > maxHoldings) + money = plugin.api.getMoneyRounded(maxHoldings); + this.money = money; + database.saveAccount(this); } public void withdraw(double amount) { - setMoney(getMoney() - amount); + setMoney(money - amount); } public void deposit(double amount) { - setMoney(getMoney() + amount); + setMoney(money + amount); + } + public boolean has(double amount) + { + return getMoney() >= amount; } public boolean canReceive(double amount) { - return plugin.getAPI().getMaxHoldings() == -1 || amount + getMoney() < plugin.getAPI().getMaxHoldings(); + final double maxHoldings = plugin.api.getMaxHoldings(); + return maxHoldings < 0.0 || getMoney() + amount <= maxHoldings; } - public boolean has(double amount) + public boolean isConnected() { - return getMoney() >= amount; + return player != null; + } + public Player getPlayer() + { + return player; } - public void save(double money) + public void connected(Player player) { - database.saveAccount(name, uuid, money); + this.player = player; } - public boolean equals(Account other) + public void disconnected() { - return other.getName().equals(getName()); + this.player = null; } @Override public int compareTo(Account other) diff --git a/src/main/java/com/niccholaspage/Fe/API/Database.java b/src/main/java/com/niccholaspage/Fe/API/Database.java deleted file mode 100644 index 7874229..0000000 --- a/src/main/java/com/niccholaspage/Fe/API/Database.java +++ /dev/null @@ -1,177 +0,0 @@ -package com.niccholaspage.Fe.API; - -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; -import com.niccholaspage.Fe.UUIDFetcher; -import java.util.*; - -public abstract class Database -{ - private final Fe plugin; - private final Set cachedAccounts = new HashSet<>(); - protected boolean cacheAccounts = true; - public abstract List getAccounts(); - public abstract List loadTopAccounts(int size); - public abstract Map loadAccountData(String name, String uuid); - public abstract void getConfigDefaults(ConfigurationSection section); - public abstract String getName(); - public abstract int getVersion(); - public abstract void setVersion(int version); - public abstract void clean(); - public abstract void saveAccount(String name, String uuid, double money); - public Database(Fe plugin) - { - this.plugin = plugin; - } - public boolean init() - { - return false; - } - public List getTopAccounts(int size) - { - List topAccounts = loadTopAccounts(size * 2); - if(!cachedAccounts.isEmpty()) - { - for(Account account : cachedAccounts) - topAccounts.remove(account); - List cachedTopAccounts = new ArrayList<>(cachedAccounts); - Collections.sort(cachedTopAccounts); - if(cachedAccounts.size() > size) - cachedTopAccounts = cachedTopAccounts.subList(0, size); - topAccounts.addAll(cachedTopAccounts); - } - Collections.sort(topAccounts); - if(topAccounts.size() > size) - topAccounts = topAccounts.subList(0, size); - return topAccounts; - } - public void removeAccount(String name, String uuid) - { - Account account = getCachedAccount(name, uuid); - if(account != null) - removeCachedAccount(account); - } - public void removeAllAccounts() - { - for(Account account : new HashSet<>(cachedAccounts)) - cachedAccounts.remove(account); - } - protected boolean convertToUUID() - { - if(!plugin.getServer().getOnlineMode()) - { - // Disable plugin? - } - plugin.log(Phrases.STARTING_UUID_CONVERSION); - List accounts = getAccounts(); - Map accountMonies = new HashMap<>(); - for(Account account : accounts) - accountMonies.put(account.getName(), account.getMoney()); - List names = new ArrayList<>(); - for(Account account : accounts) - names.add(account.getName()); - try - { - UUIDFetcher fetcher = new UUIDFetcher(names); - Map response = fetcher.call(); - removeAllAccounts(); - for(String name : response.keySet()) - for(String accountName : new HashMap<>(accountMonies).keySet()) - if(accountName.equalsIgnoreCase(name)) - { - saveAccount(name, response.get(name).toString(), accountMonies.get(accountName)); - accountMonies.remove(accountName); - } - for(String accountName : accountMonies.keySet()) - saveAccount(accountName, null, accountMonies.get(accountName)); - } catch(Exception e) - { - System.out.println(e); - plugin.log(Phrases.UUID_CONVERSION_FAILED); - plugin.getServer().getPluginManager().disablePlugin(plugin); - return false; - } - plugin.log(Phrases.UUID_CONVERSION_SUCCEEDED); - return true; - } - public void close() - { - Iterator iterator = cachedAccounts.iterator(); - while(iterator.hasNext()) - { - Account account = iterator.next(); - account.save(account.getMoney()); - iterator.remove(); - } - } - public String getConfigName() - { - return getName().replace(" ", "").toLowerCase(); - } - public ConfigurationSection getConfigSection() - { - return plugin.settings.getDatabaseSection(getConfigName()); - } - public Account getAccount(String name, String uuid) - { - Account account = getCachedAccount(name, uuid); - if(account != null) - return account; - Map data = loadAccountData(name, uuid); - String money_string = data.get("money"); - Double data_money; - try - { - data_money = Double.parseDouble(money_string); - } catch(Exception e) { - data_money = null; - } - String data_name = data.get("name"); - if(data_money == null) - return null; - else - return createAndAddAccount(data_name, uuid, data_money); - } - public Account updateAccount(String name, String uuid) - { - Account account = getAccount(name, uuid); - if(account == null) - account = createAndAddAccount(name, uuid, plugin.getAPI().getDefaultHoldings()); - if(!account.getName().equals(name)) - account.setName(name); - return account; - } - private Account createAndAddAccount(String name, String uuid, double money) - { - Account account = new Account(plugin, name, uuid, this); - account.save(money); - if(cacheAccounts()) - { - Player player = plugin.getServer().getPlayerExact(name); - if(player != null) - cachedAccounts.add(account); - } - return account; - } - public boolean accountExists(String name, String uuid) - { - return getAccount(name, uuid) != null; - } - public boolean cacheAccounts() - { - return cacheAccounts; - } - public Account getCachedAccount(String name, String uuid) - { - for(Account account : cachedAccounts) - if(account.getName().equals(name)) - return account; - return null; - } - public boolean removeCachedAccount(Account account) - { - return cachedAccounts.remove(account); - } -} diff --git a/src/main/java/com/niccholaspage/Fe/API/API.java b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java similarity index 78% rename from src/main/java/com/niccholaspage/Fe/API/API.java rename to src/main/java/com/niccholaspage/Fe/API/FeAPI.java index d1adece..13c552a 100644 --- a/src/main/java/com/niccholaspage/Fe/API/API.java +++ b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java @@ -7,25 +7,26 @@ import java.text.DecimalFormatSymbols; import java.util.List; import java.util.Locale; +import java.util.UUID; -public class API +public class FeAPI { private final Fe plugin; - public API(Fe plugin) + public FeAPI(Fe plugin) { this.plugin = plugin; } public List getTopAccounts() { - return plugin.getCurrentDatabase().getTopAccounts(plugin.settings.getShowTop()); + return plugin.getDB().getTopAccounts(plugin.settings.getShowTop()); } public List getTopAccounts(int size) { - return plugin.getCurrentDatabase().getTopAccounts(size); + return plugin.getDB().getTopAccounts(size); } public List getAccounts() { - return plugin.getCurrentDatabase().getAccounts(); + return plugin.getDB().loadAccounts(); } public double getDefaultHoldings() { @@ -67,26 +68,25 @@ public String getCurrencyMinorMultiple() { return plugin.settings.getCurrencyMinorMultiple(); } - @Deprecated - public Account createAccount(String name, String uuid) + public Account getAccount(String name) { - return updateAccount(name, uuid); + return plugin.getDB().getAccount(name); } - public Account updateAccount(String name, String uuid) + public Account getAccount(UUID uuid) { - return plugin.getCurrentDatabase().updateAccount(name, uuid); + return plugin.getDB().getAccount(uuid); } - public void removeAccount(String name, String uuid) + public void removeAccount(Account account) { - plugin.getCurrentDatabase().removeAccount(name, uuid); + plugin.getDB().removeAccount(account); } - public Account getAccount(String name, String uuid) + public boolean accountExists(String name) { - return plugin.getCurrentDatabase().getAccount(name, uuid); + return plugin.getDB().accountExists(name); } - public boolean accountExists(String name, String uuid) + public boolean accountExists(UUID uuid) { - return plugin.getCurrentDatabase().accountExists(name, uuid); + return plugin.getDB().accountExists(uuid); } public String formatNoColor(double amount) { @@ -138,6 +138,6 @@ public String format(Account account) } public void clean() { - plugin.getCurrentDatabase().clean(); + plugin.getDB().cleanAccountsWithDefaultHoldings(); } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java index 6897a5e..8aa5dd0 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java @@ -28,16 +28,18 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Phrases.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); return true; } - Phrases.ACCOUNT_HAS.sendWithPrefix(sender, account.getName(), plugin.getAPI().format(account)); + Phrases.ACCOUNT_HAS.sendWithPrefix(sender, account.getName(), plugin.api.format(account)); } else { Player player = plugin.getServer().getPlayer(sender.getName()); - Account account = plugin.getAPI().getAccount(sender.getName(), player != null ? player.getUniqueId().toString() : null); + Account account = player != null + ? plugin.api.getAccount(player.getUniqueId()) + : plugin.api.getAccount(sender.getName()); if(account == null) { Phrases.YOUR_ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); return true; } - Phrases.YOU_HAVE.sendWithPrefix(sender, plugin.getAPI().format(account)); + Phrases.YOU_HAVE.sendWithPrefix(sender, plugin.api.format(account)); } return true; } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java index ce79615..f4b691b 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java @@ -18,7 +18,7 @@ public CleanCommand(Fe plugin) @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - plugin.getAPI().clean(); + plugin.api.clean(); Phrases.ACCOUNT_CLEANED.sendWithPrefix(sender); return true; } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java index 7da2624..ced5cff 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java @@ -22,7 +22,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, if(args.length < 1) return false; String name = args[0]; - if(plugin.getAPI().accountExists(name, null)) + if(plugin.api.accountExists(name)) { Phrases.ACCOUNT_EXISTS.sendWithPrefix(sender); return true; @@ -32,7 +32,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Phrases.NAME_TOO_LONG.sendWithPrefix(sender); return true; } - Account account = plugin.getAPI().updateAccount(name, null); + Account account = plugin.api.getAccount(name); Phrases.ACCOUNT_CREATED.sendWithPrefix(sender, Phrases.PRIMARY_COLOR.parse() + account.getName() + Phrases.SECONDARY_COLOR.parse()); return true; } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java index 616a1df..446e97e 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java @@ -35,7 +35,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Phrases.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); return true; } - String formattedMoney = plugin.getAPI().format(money); + String formattedMoney = plugin.api.format(money); victim.withdraw(money); Phrases.PLAYER_DEDUCT_MONEY.sendWithPrefix(sender, formattedMoney, victim.getName()); Player receiverPlayer = plugin.getServer().getPlayerExact(victim.getName()); diff --git a/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java index ec482e3..61ba325 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java @@ -41,7 +41,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Phrases.MAX_BALANCE_REACHED.sendWithPrefix(sender, victim.getName()); return true; } - String formattedMoney = plugin.getAPI().format(money); + String formattedMoney = plugin.api.format(money); victim.deposit(money); Phrases.PLAYER_GRANT_MONEY.sendWithPrefix(sender, formattedMoney, victim.getName()); Player receiverPlayer = plugin.getServer().getPlayerExact(victim.getName()); diff --git a/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java index 2d04f62..9a9d665 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java @@ -1,5 +1,6 @@ package com.niccholaspage.Fe.Commands; +import com.niccholaspage.Fe.API.Account; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.niccholaspage.Fe.Fe; @@ -21,13 +22,13 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, if(args.length < 1) return false; String name = args[0]; - if(!plugin.getAPI().accountExists(name, null)) + final Account account = plugin.api.getAccount(name); + if(account != null) { + plugin.api.removeAccount(account); + Phrases.ACCOUNT_REMOVED.sendWithPrefix(sender, Phrases.PRIMARY_COLOR.parse() + name + Phrases.SECONDARY_COLOR.parse()); + } else Phrases.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); - return true; - } - plugin.getAPI().removeAccount(name, null); - Phrases.ACCOUNT_REMOVED.sendWithPrefix(sender, Phrases.PRIMARY_COLOR.parse() + name + Phrases.SECONDARY_COLOR.parse()); return true; } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java index fbd462d..c568c7b 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java @@ -37,7 +37,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Phrases.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); return true; } - Account account = plugin.getAPI().getAccount(sender.getName(), null); + Account account = plugin.api.getAccount(sender.getName()); if(!account.has(money)) { Phrases.NOT_ENOUGH_MONEY.sendWithPrefix(sender); @@ -48,7 +48,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Phrases.MAX_BALANCE_REACHED.sendWithPrefix(sender, receiver.getName()); return true; } - String formattedMoney = plugin.getAPI().format(money); + String formattedMoney = plugin.api.format(money); account.withdraw(money); receiver.deposit(money); Phrases.MONEY_SENT.sendWithPrefix(sender, formattedMoney, receiver.getName()); diff --git a/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java index e4c0b2f..4be77e2 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java @@ -40,7 +40,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Phrases.MAX_BALANCE_REACHED.sendWithPrefix(sender, victim.getName()); return true; } - String formattedMoney = plugin.getAPI().format(money); + String formattedMoney = plugin.api.format(money); victim.setMoney(money); Phrases.PLAYER_SET_MONEY.sendWithPrefix(sender, victim.getName(), formattedMoney); return true; diff --git a/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java index 07ab3ba..71bcc6a 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java @@ -20,7 +20,7 @@ public TopCommand(Fe plugin) @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - List topAccounts = plugin.getAPI().getTopAccounts(); + List topAccounts = plugin.api.getTopAccounts(); if(topAccounts.size() < 1) { Phrases.NO_ACCOUNTS_EXIST.sendWithPrefix(sender); @@ -31,7 +31,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, { Account account = topAccounts.get(i); String two = Phrases.SECONDARY_COLOR.parse(); - sender.sendMessage(two + (i + 1) + ". " + Phrases.PRIMARY_COLOR.parse() + account.getName() + two + " - " + plugin.getAPI().format(account)); + sender.sendMessage(two + (i + 1) + ". " + Phrases.PRIMARY_COLOR.parse() + account.getName() + two + " - " + plugin.api.format(account)); } sender.sendMessage(plugin.getEndEqualMessage(28)); return true; diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java new file mode 100644 index 0000000..b697f31 --- /dev/null +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java @@ -0,0 +1,99 @@ +package com.niccholaspage.Fe.Databases; + +import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.API.Database; +import org.bukkit.configuration.ConfigurationSection; +import com.niccholaspage.Fe.Fe; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +public abstract class DatabaseGeneric implements Database +{ + protected final Fe plugin; + protected final Map accounts = new HashMap<>(); + public DatabaseGeneric(Fe plugin) + { + this.plugin = plugin; + } + @Override + public String getConfigName() + { + return getName().replace(" ", "").toLowerCase(); + } + @Override + public ConfigurationSection getConfigSection() + { + return plugin.settings.getDatabaseSection(getConfigName()); + } + @Override + public List getTopAccounts(int size) + { + List topAccounts = new LinkedList<>(loadAccounts()); + Collections.sort(topAccounts); + return topAccounts.subList(0, size); + } + @Override + public Account getAccount(UUID uuid) + { + return accounts.get(uuid.toString()); + } + @Override + public Account getAccount(String name) + { + return accounts.get(name); + } + @Override + public boolean accountExists(UUID uuid) + { + return accounts.containsKey(uuid.toString()); + } + @Override + public boolean accountExists(String name) + { + return accounts.containsKey(name); + } + /* + protected boolean convertToUUID() + { + if(!plugin.getServer().getOnlineMode()) + { + // Disable plugin? + } + plugin.log(Phrases.STARTING_UUID_CONVERSION); + List accounts = loadAccounts(); + Map accountMonies = new HashMap<>(); + for(Account account : accounts) + accountMonies.put(account.getName(), account.getMoney()); + List names = new ArrayList<>(); + for(Account account : accounts) + names.add(account.getName()); + try + { + UUIDFetcher fetcher = new UUIDFetcher(names); + Map response = fetcher.call(); + removeAllAccounts(); + for(String name : response.keySet()) + for(String accountName : new HashMap<>(accountMonies).keySet()) + if(accountName.equalsIgnoreCase(name)) + { + saveAccount(name, response.get(name).toString(), accountMonies.get(accountName)); + accountMonies.remove(accountName); + } + for(String accountName : accountMonies.keySet()) + saveAccount(accountName, null, accountMonies.get(accountName)); + } catch(Exception e) + { + System.out.println(e); + plugin.log(Phrases.UUID_CONVERSION_FAILED); + plugin.getServer().getPluginManager().disablePlugin(plugin); + return false; + } + plugin.log(Phrases.UUID_CONVERSION_SUCCEEDED); + return true; + } + */ +} diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java new file mode 100644 index 0000000..ca3f39f --- /dev/null +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java @@ -0,0 +1,237 @@ +package com.niccholaspage.Fe.Databases; + +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.API.Account; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public abstract class DatabaseSQL extends DatabaseGeneric +{ + private final boolean supportsModification; + private final long pingDelay = 20 * 60; + private String tableAccounts = "fe_accounts"; + private String tableVersion = "fe_version"; + private String columnAccountsUser = "name"; + private String columnAccountsUUID = "uuid"; + private String columnAccountsMoney = "money"; + private Connection connection; + protected abstract Connection getNewConnection(); + public DatabaseSQL(Fe plugin, boolean supportsModification) + { + super(plugin); + this.supportsModification = supportsModification; + plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, new Runnable() + { + @Override + public void run() + { + try + { + if(connection != null && !connection.isClosed()) + connection.createStatement().execute("/* ping */ SELECT 1;"); + } catch(SQLException e) { + connection = getNewConnection(); + } + } + }, pingDelay, pingDelay); + } + public void setAccountTable(String accountsName) + { + this.tableAccounts = accountsName; + } + public void setVersionTable(String versionName) + { + this.tableVersion = versionName; + } + public void setAccountsColumnUser(String accountsColumnUser) + { + this.columnAccountsUser = accountsColumnUser; + } + public void setAccountsColumnUUID(String accountsColumnUUID) + { + this.columnAccountsUUID = accountsColumnUUID; + } + public void setAccountsColumnMoney(String accountsColumnMoney) + { + this.columnAccountsMoney = accountsColumnMoney; + } + @Override + public boolean init() + { + return checkConnection(); + } + @Override + public void close() + { + try + { + if(connection != null) + connection.close(); + } catch(SQLException e) { + System.out.println(e); + } + } + public boolean checkConnection() + { + try + { + if(connection == null || connection.isClosed()) + { + connection = getNewConnection(); + if(connection == null || connection.isClosed()) + return false; + boolean newDatabase; + try(ResultSet set = connection.prepareStatement(supportsModification + ? "SHOW TABLES LIKE '" + tableAccounts + "'" + : "SELECT name FROM sqlite_master WHERE type='table' AND name='" + tableAccounts + "'") + .executeQuery()) + { + newDatabase = set.next(); + } + query("CREATE TABLE IF NOT EXISTS " + tableAccounts + " (" + columnAccountsUser + " varchar(64) NOT NULL, " + columnAccountsUUID + " varchar(36), " + columnAccountsMoney + " double NOT NULL)"); + query("CREATE TABLE IF NOT EXISTS " + tableVersion + " (version int NOT NULL)"); + if(newDatabase) + { + int version = getVersion(); + if(version == 0) + { + if(supportsModification) + { + query("ALTER TABLE " + tableAccounts + " MODIFY " + columnAccountsUser + " varchar(64) NOT NULL"); + query("ALTER TABLE " + tableAccounts + " MODIFY " + columnAccountsMoney + " double NOT NULL"); + } + try + { + query("ALTER TABLE " + tableAccounts + " ADD " + columnAccountsUUID + " char(36);"); + } catch(Exception e) { + } + /* + if(!convertToUUID()) + return false; + */ + setVersion(1); + } + } else + setVersion(1); + } + } catch(SQLException e) { + System.out.println(e); + return false; + } + return true; + } + public boolean query(String sql) throws SQLException + { + return connection.createStatement().execute(sql); + } + @Override + public List loadAccounts() + { + checkConnection(); + List accounts = new ArrayList<>(); + try(ResultSet set = connection.createStatement().executeQuery("SELECT * from " + tableAccounts)) + { + while(set.next()) + accounts.add(new Account(plugin, this, + set.getString(columnAccountsUser), + UUID.fromString(set.getString(columnAccountsUUID)), + set.getDouble(columnAccountsMoney))); + } catch(SQLException e) { + System.out.println(e); + } + return accounts; + } + @Override + public int getVersion() + { + checkConnection(); + int version = 0; + try(ResultSet set = connection.prepareStatement("SELECT * from " + tableVersion).executeQuery()) + { + if(set.next()) + version = set.getInt("version"); + return version; + } catch(Exception e) { + System.out.println(e); + return version; + } + } + @Override + public void setVersion(int version) + { + checkConnection(); + try + { + connection.prepareStatement("DELETE FROM " + tableVersion).executeUpdate(); + connection.prepareStatement("INSERT INTO " + tableVersion + " (version) VALUES (" + version + ")").executeUpdate(); + } catch(SQLException e) { + System.out.println(e); + } + } + @Override + public void saveAccount(Account account) + { + checkConnection(); + final String strname = account.getName(); + final String strblnc = String.valueOf(account.getMoney()); + String query; + if(account.getUUID() != null) + { + final String struuid = account.getUUID().toString(); + query = "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsUUID + "`, `" + columnAccountsMoney + "`) " + + "VALUES ('" + strname + "', '" + struuid + "', '" + strblnc + "') ON DUPLICATE KEY UPDATE " + + "`" + columnAccountsUser + "` = VALUES(`" + columnAccountsUser + "`), " + + "`" + columnAccountsUUID + "` = VALUES(`" + columnAccountsUUID + "`), " + + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);"; + } else { + query = "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsMoney + "`) " + + "VALUES ('" + strname + "', '" + strblnc + "') ON DUPLICATE KEY UPDATE " + + "`" + columnAccountsUser + "` = VALUES(`" + columnAccountsUser + "`), " + + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);"; + } + try + { + query(query); + } catch(SQLException e) { + System.out.println(e); + } + } + @Override + public void removeAccount(Account account) + { + checkConnection(); + try + { + query(account.getUUID() != null + ? "DELETE FROM `" + tableAccounts + "` WHERE `" + columnAccountsUUID + "` = '" + account.getUUID().toString() + "';" + : "DELETE FROM `" + tableAccounts + "` WHERE `" + columnAccountsUser + "` = '" + account.getName() + "';"); + } catch(SQLException e) { + System.out.println(e); + } + } + @Override + public void cleanAccountsWithDefaultHoldings() + { + checkConnection(); + try + { + query("DELETE FROM `" + tableAccounts + "` WHERE `" + columnAccountsMoney + "` = '" + plugin.api.getDefaultHoldings() + "';"); + } catch(SQLException e) { + System.out.println(e); + } + } + public void removeAllAccounts() + { + checkConnection(); + try + { + query("DELETE FROM `" + tableAccounts + "`;"); + } catch(SQLException e) { + System.out.println(e); + } + } +} diff --git a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index 7ad729a..60545e6 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -1,11 +1,12 @@ package com.niccholaspage.Fe.Databases; + import org.bukkit.configuration.ConfigurationSection; import com.niccholaspage.Fe.Fe; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; -public class MySQLDB extends SQLDB +public class MySQLDB extends DatabaseSQL { public MySQLDB(Fe plugin) { @@ -17,6 +18,11 @@ public String getName() return "MySQL"; } @Override + public boolean isAsync() + { + return true; + } + @Override protected Connection getNewConnection() { final ConfigurationSection config = getConfigSection(); diff --git a/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java deleted file mode 100644 index 99d2689..0000000 --- a/src/main/java/com/niccholaspage/Fe/Databases/SQLDB.java +++ /dev/null @@ -1,299 +0,0 @@ -package com.niccholaspage.Fe.Databases; - -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.API.Account; -import com.niccholaspage.Fe.API.Database; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public abstract class SQLDB extends Database -{ - protected final Fe plugin; - private final boolean supportsModification; - private final long pingDelay = 60 * 20; - private String tableAccounts = "fe_accounts"; - private String tableVersion = "fe_version"; - private String columnAccountsUser = "name"; - private String columnAccountsMoney = "money"; - private String columnAccountsUUID = "uuid"; - private Connection connection; - public SQLDB(Fe plugin, boolean supportsModification) - { - super(plugin); - this.plugin = plugin; - this.supportsModification = supportsModification; - plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, new Runnable() - { - @Override - public void run() - { - try - { - if(connection != null && !connection.isClosed()) - connection.createStatement().execute("/* ping */ SELECT 1;"); - } catch(SQLException e) { - connection = getNewConnection(); - } - } - }, pingDelay, pingDelay); - } - public void setAccountTable(String accountsName) - { - this.tableAccounts = accountsName; - } - public void setVersionTable(String versionName) - { - this.tableVersion = versionName; - } - public void setAccountsColumnUser(String accountsColumnUser) - { - this.columnAccountsUser = accountsColumnUser; - } - public void setAccountsColumnMoney(String accountsColumnMoney) - { - this.columnAccountsMoney = accountsColumnMoney; - } - public void setAccountsColumnUUID(String accountsColumnUUID) - { - this.columnAccountsUUID = accountsColumnUUID; - } - @Override - public boolean init() - { - super.init(); - return checkConnection(); - } - public boolean checkConnection() - { - try - { - if(connection == null || connection.isClosed()) - { - connection = getNewConnection(); - if(connection == null || connection.isClosed()) - return false; - ResultSet set = connection.prepareStatement(supportsModification ? ("SHOW TABLES LIKE '" + tableAccounts + "'") : "SELECT name FROM sqlite_master WHERE type='table' AND name='" + tableAccounts + "'").executeQuery(); - boolean newDatabase = set.next(); - set.close(); - query("CREATE TABLE IF NOT EXISTS " + tableAccounts + " (" + columnAccountsUser + " varchar(64) NOT NULL, " + columnAccountsUUID + " varchar(36), " + columnAccountsMoney + " double NOT NULL)"); - query("CREATE TABLE IF NOT EXISTS " + tableVersion + " (version int NOT NULL)"); - if(newDatabase) - { - int version = getVersion(); - if(version == 0) - { - if(supportsModification) - { - query("ALTER TABLE " + tableAccounts + " MODIFY " + columnAccountsUser + " varchar(64) NOT NULL"); - query("ALTER TABLE " + tableAccounts + " MODIFY " + columnAccountsMoney + " double NOT NULL"); - } - try - { - query("ALTER TABLE " + tableAccounts + " ADD " + columnAccountsUUID + " char(36);"); - } catch(Exception e) { - } - if(!convertToUUID()) - return false; - setVersion(1); - } - } else - setVersion(1); - } - } catch(SQLException e) { - System.out.println(e); - return false; - } - return true; - } - protected abstract Connection getNewConnection(); - public boolean query(String sql) throws SQLException - { - return connection.createStatement().execute(sql); - } - @Override - public void close() - { - super.close(); - try - { - if(connection != null) - connection.close(); - } catch(SQLException e) { - System.out.println(e); - } - } - @Override - public int getVersion() - { - checkConnection(); - int version = 0; - try - { - ResultSet set = connection.prepareStatement("SELECT * from " + tableVersion).executeQuery(); - if(set.next()) - version = set.getInt("version"); - set.close(); - return version; - } catch(Exception e) { - System.out.println(e); - return version; - } - } - @Override - public void setVersion(int version) - { - checkConnection(); - try - { - connection.prepareStatement("DELETE FROM " + tableVersion).executeUpdate(); - connection.prepareStatement("INSERT INTO " + tableVersion + " (version) VALUES (" + version + ")").executeUpdate(); - } catch(SQLException e) { - System.out.println(e); - } - } - @Override - public List loadTopAccounts(int size) - { - checkConnection(); - String sql = "SELECT * FROM " + tableAccounts + " ORDER BY money DESC limit " + size; - List topAccounts = new ArrayList<>(); - try - { - ResultSet set = connection.createStatement().executeQuery(sql); - while(set.next()) - { - Account account = new Account(plugin, set.getString(columnAccountsUser), set.getString(columnAccountsUUID), this); - account.setMoney(set.getDouble(columnAccountsMoney)); - topAccounts.add(account); - } - } catch(SQLException e) { - System.out.println(e); - } - return topAccounts; - } - @Override - public List getAccounts() - { - checkConnection(); - List accounts = new ArrayList<>(); - try - { - ResultSet set = connection.createStatement().executeQuery("SELECT * from " + tableAccounts); - while(set.next()) - { - Account account = new Account(plugin, set.getString(columnAccountsUser), set.getString(columnAccountsUUID), this); - account.setMoney(set.getDouble(columnAccountsMoney)); - accounts.add(account); - } - } catch(SQLException e) { - System.out.println(e); - } - return accounts; - } - @Override - public HashMap loadAccountData(String name, String uuid) - { - checkConnection(); - try - { - PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + tableAccounts + " WHERE UPPER(" + (uuid != null ? columnAccountsUUID : columnAccountsUser) + ") LIKE UPPER(?)"); - statement.setString(1, uuid != null ? uuid : name); - try(ResultSet set = statement.executeQuery()) - { - HashMap data = new HashMap<>(); - while(set.next()) - { - data.put("money", set.getString(columnAccountsMoney)); - data.put("name", set.getString(columnAccountsUser)); - } - return data; - } - } catch(SQLException e) { - System.out.println(e); - return null; - } - } - @Override - public void removeAccount(String name, String uuid) - { - super.removeAccount(name, uuid); - checkConnection(); - PreparedStatement statement; - try - { - statement = connection.prepareStatement("DELETE FROM " + tableAccounts + " WHERE UPPER(" + (uuid != null ? columnAccountsUUID : columnAccountsUser) + ") LIKE UPPER(?)"); - statement.setString(1, uuid != null ? uuid : name); - statement.execute(); - } catch(SQLException e) { - System.out.println(e); - } - } - @Override - public void saveAccount(String name, String uuid, double money) - { - checkConnection(); - try - { - PreparedStatement statement = connection.prepareStatement( - "UPDATE " + tableAccounts + " SET " + columnAccountsMoney + "=?, " + columnAccountsUser + "=? WHERE UPPER(" - + (uuid != null ? columnAccountsUUID : columnAccountsUser) - + ") LIKE UPPER(?)"); - statement.setDouble(1, money); - statement.setString(2, name); - statement.setString(3, uuid != null ? uuid : name); - if(statement.executeUpdate() == 0) - { - statement = connection.prepareStatement( - "INSERT INTO " + tableAccounts + " (" + columnAccountsUser + ", " + columnAccountsUUID + ", " + columnAccountsMoney + ") VALUES (?, ?, ?)"); - statement.setString(1, name); - statement.setString(2, uuid); - statement.setDouble(3, money); - statement.execute(); - } - } catch(SQLException e) { - System.out.println(e); - } - } - @Override - public void clean() - { - checkConnection(); - try - { - ResultSet set = connection.prepareStatement("SELECT * from " + tableAccounts + " WHERE " + columnAccountsMoney + "=" + plugin.getAPI().getDefaultHoldings()).executeQuery(); - boolean executeQuery = false; - StringBuilder builder = new StringBuilder("DELETE FROM " + tableAccounts + " WHERE " + columnAccountsUser + " IN ("); - while(set.next()) - { - String name = set.getString(columnAccountsUser); - if(plugin.getServer().getPlayerExact(name) != null) - continue; - executeQuery = true; - builder.append("'").append(name).append("', "); - } - set.close(); - builder.delete(builder.length() - 2, builder.length()).append(")"); - if(executeQuery) - query(builder.toString()); - } catch(SQLException e) { - System.out.println(e); - } - } - @Override - public void removeAllAccounts() - { - super.removeAllAccounts(); - checkConnection(); - try - { - connection.prepareStatement("DELETE FROM " + tableAccounts).executeUpdate(); - } catch(SQLException e) { - System.out.println(e); - } - } -} diff --git a/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java b/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java index e81ede7..58a15e1 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java @@ -7,7 +7,7 @@ import java.sql.DriverManager; import java.sql.SQLException; -public class SQLiteDB extends SQLDB +public class SQLiteDB extends DatabaseSQL { public SQLiteDB(Fe plugin) { @@ -19,6 +19,11 @@ public String getName() return "SQLite"; } @Override + public boolean isAsync() + { + return false; + } + @Override public Connection getNewConnection() { try diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index df5d9a8..b371235 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -1,6 +1,6 @@ package com.niccholaspage.Fe; -import com.niccholaspage.Fe.API.API; +import com.niccholaspage.Fe.API.FeAPI; import net.milkbowl.vault.economy.Economy; import org.bukkit.entity.Player; import org.bukkit.plugin.ServicePriority; @@ -10,7 +10,6 @@ import org.mcstats.Metrics.Plotter; import com.niccholaspage.Fe.API.Account; import com.niccholaspage.Fe.API.Database; -import com.niccholaspage.Fe.API.Settings; import com.niccholaspage.Fe.Databases.MySQLDB; import com.niccholaspage.Fe.Databases.SQLiteDB; import java.io.File; @@ -20,11 +19,11 @@ public class Fe extends JavaPlugin { - private final API api = new API(this); - private final Set databases = new HashSet<>(); + public final FeAPI api = new FeAPI(this); + public final FeSettings settings = new FeSettings(this); + private final FeListener listener = new FeListener(this); private final FeCommands commands = new FeCommands(this); - private final FePlayerListener listener = new FePlayerListener(this); - public final Settings settings = new Settings(this); + private final Set databases = new HashSet<>(); private Database database; @Override public void onLoad() @@ -37,11 +36,10 @@ public void onEnable() { settings.onEnable(); Phrases.setupPhrases(new File(getDataFolder(), "phrases.yml")); - databases.add(new SQLiteDB(this)); databases.add(new MySQLDB(this)); + databases.add(new SQLiteDB(this)); for(Database db : databases) db.getConfigDefaults(db.getConfigSection()); - getConfig().options().header(null); saveConfig(); if(!setupDatabase()) { @@ -52,8 +50,9 @@ public void onEnable() getServer().getPluginManager().registerEvents(listener, this); setupVault(); loadMetrics(); - reloadConfig(); - // Auto Clean On Startup + // Load all accounts + database.loadAccounts(); + // Autoclean on startup if(api.isAutoClean()) { api.clean(); @@ -92,14 +91,14 @@ private void setupVault() public void onDisable() { getServer().getScheduler().cancelTasks(this); - getCurrentDatabase().close(); + getDB().close(); getServer().getServicesManager().unregisterAll(this); } - public API getAPI() + public FeAPI getAPI() { return api; } - public Database getCurrentDatabase() + public Database getDB() { return database; } @@ -113,12 +112,12 @@ public void log(Phrases phrase, String... args) } public Account getShortenedAccount(String name) { - Account account = getAPI().getAccount(name, null); + Account account = api.getAccount(name); if(account == null) { Player player = getServer().getPlayer(name); if(player != null) - account = getAPI().getAccount(player.getName(), null); + account = api.getAccount(player.getName()); } return account; } @@ -151,7 +150,7 @@ private void loadMetrics() { Metrics metrics = new Metrics(this); final Graph databaseGraph = metrics.createGraph("Database Engine"); - databaseGraph.addPlotter(new Plotter(getCurrentDatabase().getName()) + databaseGraph.addPlotter(new Plotter(getDB().getName()) { @Override public int getValue() @@ -160,7 +159,7 @@ public int getValue() } }); final Graph defaultHoldings = metrics.createGraph("Default Holdings"); - defaultHoldings.addPlotter(new Plotter(Double.toString(getAPI().getDefaultHoldings())) + defaultHoldings.addPlotter(new Plotter(Double.toString(api.getDefaultHoldings())) { @Override public int getValue() @@ -169,8 +168,8 @@ public int getValue() } }); final Graph maxHoldings = metrics.createGraph("Max Holdings"); - String maxHolding = Double.toString(getAPI().getMaxHoldings()); - if(getAPI().getMaxHoldings() == -1) + String maxHolding = Double.toString(api.getMaxHoldings()); + if(api.getMaxHoldings() == -1) maxHolding = "Unlimited"; maxHoldings.addPlotter(new Plotter(maxHolding) { diff --git a/src/main/java/com/niccholaspage/Fe/FeListener.java b/src/main/java/com/niccholaspage/Fe/FeListener.java new file mode 100644 index 0000000..5f462b7 --- /dev/null +++ b/src/main/java/com/niccholaspage/Fe/FeListener.java @@ -0,0 +1,39 @@ +package com.niccholaspage.Fe; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerLoginEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import com.niccholaspage.Fe.API.Account; +import org.bukkit.event.player.PlayerKickEvent; + +public class FeListener implements Listener +{ + private final Fe plugin; + public FeListener(Fe plugin) + { + this.plugin = plugin; + } + @EventHandler(priority = EventPriority.LOWEST) + public void onPlayerLogin(PlayerLoginEvent event) + { + final Player player = event.getPlayer(); + final Account account = plugin.getDB().getAccount(player.getUniqueId()); + account.setName(player.getName()); + account.connected(player); + } + @EventHandler + public void onPlayerQuit(PlayerKickEvent event) + { + final Account account = plugin.getDB().getAccount(event.getPlayer().getUniqueId()); + account.disconnected(); + } + @EventHandler + public void onPlayerQuit(PlayerQuitEvent event) + { + final Account account = plugin.getDB().getAccount(event.getPlayer().getUniqueId()); + account.disconnected(); + } +} diff --git a/src/main/java/com/niccholaspage/Fe/FePlayerListener.java b/src/main/java/com/niccholaspage/Fe/FePlayerListener.java deleted file mode 100644 index 82a1098..0000000 --- a/src/main/java/com/niccholaspage/Fe/FePlayerListener.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.niccholaspage.Fe; - -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerLoginEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import com.niccholaspage.Fe.API.Account; -import com.niccholaspage.Fe.API.Database; - -public class FePlayerListener implements Listener -{ - private final Fe plugin; - public FePlayerListener(Fe plugin) - { - this.plugin = plugin; - } - @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerLogin(PlayerLoginEvent event) - { - Player player = event.getPlayer(); - plugin.getAPI().updateAccount(player.getName(), player.getUniqueId().toString()); - } - @EventHandler - public void onPlayerQuit(PlayerQuitEvent event) - { - Database database = plugin.getCurrentDatabase(); - Player player = event.getPlayer(); - Account account = database.getCachedAccount(player.getName(), player.getUniqueId().toString()); - if(account != null) - { - account.save(account.getMoney()); - database.removeCachedAccount(account); - } - } -} diff --git a/src/main/java/com/niccholaspage/Fe/API/Settings.java b/src/main/java/com/niccholaspage/Fe/FeSettings.java similarity index 96% rename from src/main/java/com/niccholaspage/Fe/API/Settings.java rename to src/main/java/com/niccholaspage/Fe/FeSettings.java index 61820d8..bac9431 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Settings.java +++ b/src/main/java/com/niccholaspage/Fe/FeSettings.java @@ -1,18 +1,16 @@ -package com.niccholaspage.Fe.API; +package com.niccholaspage.Fe; import com.google.common.io.Files; import java.io.File; import java.io.IOException; -import java.util.logging.Level; -import java.util.logging.Logger; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.plugin.java.JavaPlugin; -public class Settings +public class FeSettings { private final JavaPlugin fe; - public Settings(JavaPlugin plugin) + public FeSettings(JavaPlugin plugin) { this.fe = plugin; } @@ -40,6 +38,7 @@ public void onEnable() } } catch(IOException ex) { } + config.options().header(null); migrate_v0_to_v1(config); config.set("internal.version", 1); fe.getLogger().info("[Fe] Configuration has been migrated successfully."); @@ -69,7 +68,7 @@ public int getShowTop() } public boolean isAutoClean() { - return fe.getConfig().getBoolean("settings.autoclean"); + return fe.getConfig().getBoolean("settings.autoclean", true); } public String getCurrencyPrefix() { diff --git a/src/main/java/com/niccholaspage/Fe/VaultHandler.java b/src/main/java/com/niccholaspage/Fe/VaultHandler.java index 4353da3..d94420d 100644 --- a/src/main/java/com/niccholaspage/Fe/VaultHandler.java +++ b/src/main/java/com/niccholaspage/Fe/VaultHandler.java @@ -38,50 +38,44 @@ public String getName() @Override public String format(double amount) { - return plugin.getAPI().formatNoColor(amount); + return plugin.api.formatNoColor(amount); } @Override public String currencyNameSingular() { - return plugin.getAPI().getCurrencyMajorSingle(); + return plugin.api.getCurrencyMajorSingle(); } @Override public String currencyNamePlural() { - return plugin.getAPI().getCurrencyMajorMultiple(); + return plugin.api.getCurrencyMajorMultiple(); } @Override public double getBalance(String playerName) { - return getAccountBalance(playerName, null); + return plugin.getDB().getAccount(playerName).getMoney(); } @Override public double getBalance(OfflinePlayer offlinePlayer) { - return getAccountBalance(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString()); - } - private double getAccountBalance(String playerName, String uuid) - { - Account account = plugin.getAPI().getAccount(playerName, uuid); - if(account == null) - return 0; - return account.getMoney(); + return plugin.getDB().getAccount(offlinePlayer.getUniqueId()).getMoney(); } @Override public EconomyResponse withdrawPlayer(String playerName, double amount) { - return withdraw(playerName, null, amount); + final Account account = plugin.getDB().getAccount(playerName); + return withdraw(account, amount); } @Override public EconomyResponse withdrawPlayer(OfflinePlayer offlinePlayer, double amount) { - return withdraw(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString(), amount); + final Account account = plugin.getDB().getAccount(offlinePlayer.getUniqueId()); + return withdraw(account, amount); } - private EconomyResponse withdraw(String playerName, String uuid, double amount) + private EconomyResponse withdraw(Account account, double amount) { if(amount < 0) return new EconomyResponse(0, 0, ResponseType.FAILURE, "Cannot withdraw negative funds"); - Account account = plugin.getAPI().getAccount(playerName, uuid); if(account == null) return new EconomyResponse(0, 0, ResponseType.FAILURE, "Account doesn't exist"); if(account.has(amount)) @@ -94,18 +88,19 @@ private EconomyResponse withdraw(String playerName, String uuid, double amount) @Override public EconomyResponse depositPlayer(String playerName, double amount) { - return deposit(playerName, null, amount); + final Account account = plugin.getDB().getAccount(playerName); + return deposit(account, amount); } @Override public EconomyResponse depositPlayer(OfflinePlayer offlinePlayer, double amount) { - return deposit(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString(), amount); + final Account account = plugin.getDB().getAccount(offlinePlayer.getUniqueId()); + return deposit(account, amount); } - private EconomyResponse deposit(String playerName, String uuid, double amount) + private EconomyResponse deposit(Account account, double amount) { if(amount < 0) return new EconomyResponse(0, 0, ResponseType.FAILURE, "Cannot deposit negative funds"); - Account account = plugin.getAPI().getAccount(playerName, uuid); if(account == null) return new EconomyResponse(0, 0, ResponseType.FAILURE, "Account doesn't exist"); account.deposit(amount); @@ -189,28 +184,24 @@ public boolean hasBankSupport() @Override public boolean hasAccount(String playerName) { - return plugin.getAPI().accountExists(playerName, null); + return plugin.api.accountExists(playerName); } @Override public boolean hasAccount(OfflinePlayer offlinePlayer) { - return plugin.getAPI().accountExists(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString()); + return plugin.api.accountExists(offlinePlayer.getUniqueId()); } @Override public boolean createPlayerAccount(String playerName) { - return createAccount(playerName, null); + return plugin.getDB().getAccount(playerName) != null; } @Override public boolean createPlayerAccount(OfflinePlayer offlinePlayer) { - return createAccount(offlinePlayer.getName(), offlinePlayer.getUniqueId().toString()); - } - private boolean createAccount(String playerName, String uuid) - { - if(hasAccount(playerName, uuid)) - return false; - plugin.getAPI().updateAccount(playerName, uuid); + Account account = plugin.getDB().getAccount(offlinePlayer.getUniqueId()); + account.setName(offlinePlayer.getName()); + plugin.getDB().saveAccount(account); return true; } @Override diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index a8ece1f..793f64a 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -7,18 +7,19 @@ settings: prefix: '' negative: false major: - single: Fe + single: Fes multiple: Fe minor: enabled: false - single: Fe + single: Fe multiple: Fe database-type: sqlite + sqlite: {} mysql: - database: 'localhost:3306/minecraft' - username: '' - password: '' - database: + connection: + database: localhost:3306/minecraft + username: user + password: pass tables: accounts: fe_accounts columns: From dce5da112fbffcd6b8983711cbb5054189de160b Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 18 May 2015 10:10:08 +0600 Subject: [PATCH 18/40] Rewrite in progress. --- .../com/niccholaspage/Fe/API/Database.java | 33 ++++ .../java/com/niccholaspage/Fe/API/FeAPI.java | 64 ++++--- .../Fe/Databases/DatabaseGeneric.java | 69 +++++++- .../Fe/Databases/DatabaseSQL.java | 167 +++++++++--------- .../com/niccholaspage/Fe/VaultHandler.java | 16 +- 5 files changed, 231 insertions(+), 118 deletions(-) create mode 100644 src/main/java/com/niccholaspage/Fe/API/Database.java diff --git a/src/main/java/com/niccholaspage/Fe/API/Database.java b/src/main/java/com/niccholaspage/Fe/API/Database.java new file mode 100644 index 0000000..f684ad8 --- /dev/null +++ b/src/main/java/com/niccholaspage/Fe/API/Database.java @@ -0,0 +1,33 @@ +package com.niccholaspage.Fe.API; + +import java.util.List; +import java.util.UUID; +import org.bukkit.configuration.ConfigurationSection; + +public interface Database +{ + public String getName(); + public int getVersion(); + public void setVersion(int version); + public boolean isAsync(); + public boolean init(); + public void close(); + public String getConfigName(); + public ConfigurationSection getConfigSection(); + public void getConfigDefaults(ConfigurationSection section); + public List loadAccounts(); + public List getAccounts(); + public List getTopAccounts(int size); + public boolean accountExists(UUID uuid); + public boolean accountExists(String name); + public Account createAccount(UUID uuid); + public Account createAccount(String name); + public Account createAccount(UUID uuid, String name); + public Account getAccount(UUID uuid); + public Account getAccount(String name); + public void renameAccount(Account account, String newName); + public void saveAccount(Account account); + public void removeAccount(Account account); + public void cleanAccountsWithDefaultHoldings(); + public void removeAllAccounts(); +} diff --git a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java index 13c552a..69c84a6 100644 --- a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java +++ b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java @@ -16,18 +16,6 @@ public FeAPI(Fe plugin) { this.plugin = plugin; } - public List getTopAccounts() - { - return plugin.getDB().getTopAccounts(plugin.settings.getShowTop()); - } - public List getTopAccounts(int size) - { - return plugin.getDB().getTopAccounts(size); - } - public List getAccounts() - { - return plugin.getDB().loadAccounts(); - } public double getDefaultHoldings() { return plugin.settings.getDefaultHoldings(); @@ -68,25 +56,57 @@ public String getCurrencyMinorMultiple() { return plugin.settings.getCurrencyMinorMultiple(); } - public Account getAccount(String name) + public List getAccounts() { - return plugin.getDB().getAccount(name); + return plugin.getDB().loadAccounts(); } - public Account getAccount(UUID uuid) + public List getTopAccounts() { - return plugin.getDB().getAccount(uuid); + return plugin.getDB().getTopAccounts(plugin.settings.getShowTop()); } - public void removeAccount(Account account) + public List getTopAccounts(int size) { - plugin.getDB().removeAccount(account); + return plugin.getDB().getTopAccounts(size); + } + public boolean accountExists(UUID uuid) + { + return plugin.getDB().accountExists(uuid); } public boolean accountExists(String name) { return plugin.getDB().accountExists(name); } - public boolean accountExists(UUID uuid) + public Account createAccount(UUID uuid) { - return plugin.getDB().accountExists(uuid); + return plugin.getDB().createAccount(uuid); + } + public Account createAccount(String name) + { + return plugin.getDB().createAccount(name); + } + public Account createAccount(UUID uuid, String name) + { + return plugin.getDB().createAccount(uuid, name); + } + public Account getAccount(UUID uuid) + { + return plugin.getDB().getAccount(uuid); + } + public Account getAccount(String name) + { + return plugin.getDB().getAccount(name); + } + public void renameAccount(Account account, String newName) + { + plugin.getDB().renameAccount(account, newName); + } + public void removeAccount(Account account) + { + plugin.getDB().removeAccount(account); + } + public void clean() + { + plugin.getDB().cleanAccountsWithDefaultHoldings(); } public String formatNoColor(double amount) { @@ -136,8 +156,4 @@ public String format(Account account) { return format(account.getMoney()); } - public void clean() - { - plugin.getDB().cleanAccountsWithDefaultHoldings(); - } } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java index b697f31..7421c93 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java @@ -4,8 +4,10 @@ import com.niccholaspage.Fe.API.Database; import org.bukkit.configuration.ConfigurationSection; import com.niccholaspage.Fe.Fe; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -30,11 +32,55 @@ public ConfigurationSection getConfigSection() return plugin.settings.getDatabaseSection(getConfigName()); } @Override + public abstract List loadAccounts(); + @Override + public List getAccounts() + { + return new ArrayList<>(accounts.values()); + } + @Override public List getTopAccounts(int size) { - List topAccounts = new LinkedList<>(loadAccounts()); - Collections.sort(topAccounts); - return topAccounts.subList(0, size); + final List topList = new LinkedList<>(new LinkedHashSet<>(accounts.values())); + Collections.sort(topList); + return topList.subList(0, Math.max(size, topList.size())); + } + @Override + public boolean accountExists(UUID uuid) + { + return accounts.containsKey(uuid.toString()); + } + @Override + public boolean accountExists(String name) + { + return accounts.containsKey(name); + } + @Override + public Account createAccount(UUID uuid) + { + final Account account = new Account(plugin, this, null, uuid, plugin.api.getDefaultHoldings()); + accounts.put(uuid.toString(), account); + saveAccount(account); + return account; + } + @Override + public Account createAccount(String name) + { + final Account account = new Account(plugin, this, name, null, plugin.api.getDefaultHoldings()); + accounts.put(name, account); + saveAccount(account); + return account; + } + @Override + public Account createAccount(UUID uuid, String name) + { + final Account account = new Account(plugin, this, name, uuid, plugin.api.getDefaultHoldings()); + if(uuid != null) + accounts.put(uuid.toString(), account); + if(name != null && !"".equals(name)) + accounts.put(name, account); + saveAccount(account); + return account; } @Override public Account getAccount(UUID uuid) @@ -47,15 +93,20 @@ public Account getAccount(String name) return accounts.get(name); } @Override - public boolean accountExists(UUID uuid) + public void renameAccount(Account account, String newName) { - return accounts.containsKey(uuid.toString()); + accounts.remove(account.getName()); + if(newName != null && !"".equals(newName)) + accounts.put(newName, account); } @Override - public boolean accountExists(String name) - { - return accounts.containsKey(name); - } + public abstract void saveAccount(Account account); + @Override + public abstract void removeAccount(Account account); + @Override + public abstract void cleanAccountsWithDefaultHoldings(); + @Override + public abstract void removeAllAccounts(); /* protected boolean convertToUUID() { diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java index ca3f39f..3ecb0d4 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java @@ -39,26 +39,6 @@ public void run() } }, pingDelay, pingDelay); } - public void setAccountTable(String accountsName) - { - this.tableAccounts = accountsName; - } - public void setVersionTable(String versionName) - { - this.tableVersion = versionName; - } - public void setAccountsColumnUser(String accountsColumnUser) - { - this.columnAccountsUser = accountsColumnUser; - } - public void setAccountsColumnUUID(String accountsColumnUUID) - { - this.columnAccountsUUID = accountsColumnUUID; - } - public void setAccountsColumnMoney(String accountsColumnMoney) - { - this.columnAccountsMoney = accountsColumnMoney; - } @Override public boolean init() { @@ -75,75 +55,28 @@ public void close() System.out.println(e); } } - public boolean checkConnection() - { - try - { - if(connection == null || connection.isClosed()) - { - connection = getNewConnection(); - if(connection == null || connection.isClosed()) - return false; - boolean newDatabase; - try(ResultSet set = connection.prepareStatement(supportsModification - ? "SHOW TABLES LIKE '" + tableAccounts + "'" - : "SELECT name FROM sqlite_master WHERE type='table' AND name='" + tableAccounts + "'") - .executeQuery()) - { - newDatabase = set.next(); - } - query("CREATE TABLE IF NOT EXISTS " + tableAccounts + " (" + columnAccountsUser + " varchar(64) NOT NULL, " + columnAccountsUUID + " varchar(36), " + columnAccountsMoney + " double NOT NULL)"); - query("CREATE TABLE IF NOT EXISTS " + tableVersion + " (version int NOT NULL)"); - if(newDatabase) - { - int version = getVersion(); - if(version == 0) - { - if(supportsModification) - { - query("ALTER TABLE " + tableAccounts + " MODIFY " + columnAccountsUser + " varchar(64) NOT NULL"); - query("ALTER TABLE " + tableAccounts + " MODIFY " + columnAccountsMoney + " double NOT NULL"); - } - try - { - query("ALTER TABLE " + tableAccounts + " ADD " + columnAccountsUUID + " char(36);"); - } catch(Exception e) { - } - /* - if(!convertToUUID()) - return false; - */ - setVersion(1); - } - } else - setVersion(1); - } - } catch(SQLException e) { - System.out.println(e); - return false; - } - return true; - } - public boolean query(String sql) throws SQLException - { - return connection.createStatement().execute(sql); - } @Override public List loadAccounts() { checkConnection(); - List accounts = new ArrayList<>(); - try(ResultSet set = connection.createStatement().executeQuery("SELECT * from " + tableAccounts)) + try(ResultSet set = connection.createStatement().executeQuery("SELECT * FROM `" + tableAccounts + "`;")) { while(set.next()) - accounts.add(new Account(plugin, this, - set.getString(columnAccountsUser), - UUID.fromString(set.getString(columnAccountsUUID)), - set.getDouble(columnAccountsMoney))); + { + final String name = set.getString(columnAccountsUser); + final String uuid = set.getString(columnAccountsUUID); + final Account account = new Account(plugin, this, + name, uuid != null ? UUID.fromString(uuid) : null, + set.getDouble(columnAccountsMoney)); + if(name != null && !"".equals(name)) + accounts.put(name, account); + if(uuid != null && !"".equals(uuid)) + accounts.put(uuid, account); + } } catch(SQLException e) { System.out.println(e); } - return accounts; + return new ArrayList(accounts.values()); } @Override public int getVersion() @@ -224,6 +157,7 @@ public void cleanAccountsWithDefaultHoldings() System.out.println(e); } } + @Override public void removeAllAccounts() { checkConnection(); @@ -234,4 +168,77 @@ public void removeAllAccounts() System.out.println(e); } } + protected void setAccountTable(String accountsName) + { + this.tableAccounts = accountsName; + } + protected void setVersionTable(String versionName) + { + this.tableVersion = versionName; + } + protected void setAccountsColumnUser(String accountsColumnUser) + { + this.columnAccountsUser = accountsColumnUser; + } + protected void setAccountsColumnUUID(String accountsColumnUUID) + { + this.columnAccountsUUID = accountsColumnUUID; + } + protected void setAccountsColumnMoney(String accountsColumnMoney) + { + this.columnAccountsMoney = accountsColumnMoney; + } + private boolean checkConnection() + { + try + { + if(connection == null || connection.isClosed()) + { + connection = getNewConnection(); + if(connection == null || connection.isClosed()) + return false; + boolean newDatabase; + try(ResultSet set = connection.prepareStatement(supportsModification + ? "SHOW TABLES LIKE '" + tableAccounts + "';" + : "SELECT `name` FROM `sqlite_master` WHERE `type` = 'table' AND `name` = '" + tableAccounts + "';") + .executeQuery()) + { + newDatabase = set.next(); + } + query("CREATE TABLE IF NOT EXISTS `" + tableAccounts + "` (`" + columnAccountsUser + "` VARCHAR(16) NOT NULL, `" + columnAccountsUUID + "` CHAR(36), `" + columnAccountsMoney + "` DOUBLE NOT NULL);"); + query("CREATE TABLE IF NOT EXISTS `" + tableVersion + "` (`version` INT NOT NULL);"); + if(newDatabase) + { + int version = getVersion(); + if(version == 0) + { + if(supportsModification) + { + query("ALTER TABLE `" + tableAccounts + "` MODIFY `" + columnAccountsUser + "` VARCHAR(16) NOT NULL"); + query("ALTER TABLE `" + tableAccounts + "` MODIFY `" + columnAccountsMoney + "` DOUBLE NOT NULL"); + } + try + { + query("ALTER TABLE `" + tableAccounts + "` ADD `" + columnAccountsUUID + "` CHAR(36);"); + } catch(Exception e) { + } + /* + if(!convertToUUID()) + return false; + */ + setVersion(1); + } + } else + setVersion(1); + } + } catch(SQLException e) { + System.out.println(e); + return false; + } + return true; + } + private boolean query(String sql) throws SQLException + { + return connection.createStatement().execute(sql); + } } diff --git a/src/main/java/com/niccholaspage/Fe/VaultHandler.java b/src/main/java/com/niccholaspage/Fe/VaultHandler.java index d94420d..239eeb6 100644 --- a/src/main/java/com/niccholaspage/Fe/VaultHandler.java +++ b/src/main/java/com/niccholaspage/Fe/VaultHandler.java @@ -22,7 +22,7 @@ public class VaultHandler implements Economy public VaultHandler(Fe plugin) { this.plugin = plugin; - Bukkit.getServer().getPluginManager().registerEvents(new EconomyServerListener(), plugin); + plugin.getServer().getPluginManager().registerEvents(new EconomyServerListener(), plugin); plugin.log("Vault support enabled."); } @Override @@ -53,12 +53,18 @@ public String currencyNamePlural() @Override public double getBalance(String playerName) { - return plugin.getDB().getAccount(playerName).getMoney(); + final Account account = plugin.getDB().getAccount(playerName); + return account != null + ? account.getMoney() + : plugin.settings.getDefaultHoldings(); } @Override public double getBalance(OfflinePlayer offlinePlayer) { - return plugin.getDB().getAccount(offlinePlayer.getUniqueId()).getMoney(); + final Account account = plugin.getDB().getAccount(offlinePlayer.getUniqueId()); + return account != null + ? account.getMoney() + : plugin.settings.getDefaultHoldings(); } @Override public EconomyResponse withdrawPlayer(String playerName, double amount) @@ -194,12 +200,12 @@ public boolean hasAccount(OfflinePlayer offlinePlayer) @Override public boolean createPlayerAccount(String playerName) { - return plugin.getDB().getAccount(playerName) != null; + return plugin.getDB().createAccount(playerName) != null; } @Override public boolean createPlayerAccount(OfflinePlayer offlinePlayer) { - Account account = plugin.getDB().getAccount(offlinePlayer.getUniqueId()); + Account account = plugin.getDB().createAccount(offlinePlayer.getUniqueId()); account.setName(offlinePlayer.getName()); plugin.getDB().saveAccount(account); return true; From 3f2d50cae458506ceee92578eae026f66be2931b Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 18 May 2015 10:39:36 +0600 Subject: [PATCH 19/40] All commands are working again. --- .../niccholaspage/Fe/Commands/CreateCommand.java | 2 +- .../com/niccholaspage/Fe/Commands/GrantCommand.java | 3 +-- .../niccholaspage/Fe/Commands/ReloadCommand.java | 5 ++++- .../com/niccholaspage/Fe/Commands/TopCommand.java | 13 ++++++++++++- .../niccholaspage/Fe/Databases/DatabaseGeneric.java | 11 +++++++++-- .../com/niccholaspage/Fe/Databases/DatabaseSQL.java | 5 +++-- 6 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java index ced5cff..3640ef1 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java @@ -32,7 +32,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Phrases.NAME_TOO_LONG.sendWithPrefix(sender); return true; } - Account account = plugin.api.getAccount(name); + Account account = plugin.api.createAccount(name); Phrases.ACCOUNT_CREATED.sendWithPrefix(sender, Phrases.PRIMARY_COLOR.parse() + account.getName() + Phrases.SECONDARY_COLOR.parse()); return true; } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java index 61ba325..5bf11dd 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java @@ -26,8 +26,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, try { money = Double.parseDouble(args[1]); - } catch(NumberFormatException e) - { + } catch(NumberFormatException e) { return false; } Account victim = plugin.getShortenedAccount(args[0]); diff --git a/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java index 60ea460..f15c388 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java @@ -6,6 +6,7 @@ import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; +import org.bukkit.plugin.PluginManager; public class ReloadCommand extends SubCommand { @@ -18,7 +19,9 @@ public ReloadCommand(Fe plugin) @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - plugin.reloadConfig(); + final PluginManager pluginManager = plugin.getServer().getPluginManager(); + pluginManager.disablePlugin(plugin); + pluginManager.enablePlugin(plugin); Phrases.CONFIG_RELOADED.sendWithPrefix(sender); return true; } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java index 71bcc6a..1a1b57c 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java @@ -20,7 +20,18 @@ public TopCommand(Fe plugin) @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - List topAccounts = plugin.api.getTopAccounts(); + int topSize = plugin.settings.getShowTop(); + try + { + if(args.length > 0 && args[0] != null && !"".equals(args[0])) + { + int enteredTop = Integer.parseInt(args[0]); + if(enteredTop > 0) + topSize = enteredTop; + } + } catch(NumberFormatException e) { + } + List topAccounts = plugin.api.getTopAccounts(topSize); if(topAccounts.size() < 1) { Phrases.NO_ACCOUNTS_EXIST.sendWithPrefix(sender); diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java index 7421c93..b78026d 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java @@ -4,6 +4,7 @@ import com.niccholaspage.Fe.API.Database; import org.bukkit.configuration.ConfigurationSection; import com.niccholaspage.Fe.Fe; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -43,7 +44,7 @@ public List getTopAccounts(int size) { final List topList = new LinkedList<>(new LinkedHashSet<>(accounts.values())); Collections.sort(topList); - return topList.subList(0, Math.max(size, topList.size())); + return topList.subList(0, Math.min(size, topList.size())); } @Override public boolean accountExists(UUID uuid) @@ -102,7 +103,13 @@ public void renameAccount(Account account, String newName) @Override public abstract void saveAccount(Account account); @Override - public abstract void removeAccount(Account account); + public void removeAccount(Account account) + { + accounts.remove(account.getName()); + UUID uuid = account.getUUID(); + if(uuid != null) + accounts.remove(uuid.toString()); + } @Override public abstract void cleanAccountsWithDefaultHoldings(); @Override diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java index 3ecb0d4..be7ce48 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java @@ -136,6 +136,7 @@ public void saveAccount(Account account) @Override public void removeAccount(Account account) { + super.removeAccount(account); checkConnection(); try { @@ -206,7 +207,7 @@ private boolean checkConnection() newDatabase = set.next(); } query("CREATE TABLE IF NOT EXISTS `" + tableAccounts + "` (`" + columnAccountsUser + "` VARCHAR(16) NOT NULL, `" + columnAccountsUUID + "` CHAR(36), `" + columnAccountsMoney + "` DOUBLE NOT NULL);"); - query("CREATE TABLE IF NOT EXISTS `" + tableVersion + "` (`version` INT NOT NULL);"); + query("CREATE TABLE IF NOT EXISTS `" + tableVersion + "` (`version` INT NOT NULL);"); if(newDatabase) { int version = getVersion(); @@ -214,7 +215,7 @@ private boolean checkConnection() { if(supportsModification) { - query("ALTER TABLE `" + tableAccounts + "` MODIFY `" + columnAccountsUser + "` VARCHAR(16) NOT NULL"); + query("ALTER TABLE `" + tableAccounts + "` MODIFY `" + columnAccountsUser + "` VARCHAR(16) NOT NULL"); query("ALTER TABLE `" + tableAccounts + "` MODIFY `" + columnAccountsMoney + "` DOUBLE NOT NULL"); } try From 13fbbdc22e653ccf0f078662c32d6f438df113c2 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 18 May 2015 11:31:35 +0600 Subject: [PATCH 20/40] Account.setName() is working good. --- .../java/com/niccholaspage/Fe/API/Account.java | 1 + .../java/com/niccholaspage/Fe/API/Database.java | 2 +- src/main/java/com/niccholaspage/Fe/API/FeAPI.java | 4 ---- .../Fe/Databases/DatabaseGeneric.java | 15 +++++++-------- 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/niccholaspage/Fe/API/Account.java b/src/main/java/com/niccholaspage/Fe/API/Account.java index f419128..3c3fda0 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Account.java +++ b/src/main/java/com/niccholaspage/Fe/API/Account.java @@ -27,6 +27,7 @@ public String getName() } public void setName(String name) { + database.onRenameAccount(this, this.name, name); this.name = name; database.saveAccount(this); } diff --git a/src/main/java/com/niccholaspage/Fe/API/Database.java b/src/main/java/com/niccholaspage/Fe/API/Database.java index f684ad8..af6af7a 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Database.java +++ b/src/main/java/com/niccholaspage/Fe/API/Database.java @@ -15,6 +15,7 @@ public interface Database public String getConfigName(); public ConfigurationSection getConfigSection(); public void getConfigDefaults(ConfigurationSection section); + public void onRenameAccount(Account account, String oldName, String newName); public List loadAccounts(); public List getAccounts(); public List getTopAccounts(int size); @@ -25,7 +26,6 @@ public interface Database public Account createAccount(UUID uuid, String name); public Account getAccount(UUID uuid); public Account getAccount(String name); - public void renameAccount(Account account, String newName); public void saveAccount(Account account); public void removeAccount(Account account); public void cleanAccountsWithDefaultHoldings(); diff --git a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java index 69c84a6..4f3b9ce 100644 --- a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java +++ b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java @@ -96,10 +96,6 @@ public Account getAccount(String name) { return plugin.getDB().getAccount(name); } - public void renameAccount(Account account, String newName) - { - plugin.getDB().renameAccount(account, newName); - } public void removeAccount(Account account) { plugin.getDB().removeAccount(account); diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java index b78026d..ca63e20 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java @@ -4,7 +4,6 @@ import com.niccholaspage.Fe.API.Database; import org.bukkit.configuration.ConfigurationSection; import com.niccholaspage.Fe.Fe; -import java.sql.SQLException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -33,6 +32,13 @@ public ConfigurationSection getConfigSection() return plugin.settings.getDatabaseSection(getConfigName()); } @Override + public void onRenameAccount(Account account, String oldName, String newName) + { + accounts.remove(oldName); + if(newName != null && !"".equals(newName)) + accounts.put(newName, account); + } + @Override public abstract List loadAccounts(); @Override public List getAccounts() @@ -94,13 +100,6 @@ public Account getAccount(String name) return accounts.get(name); } @Override - public void renameAccount(Account account, String newName) - { - accounts.remove(account.getName()); - if(newName != null && !"".equals(newName)) - accounts.put(newName, account); - } - @Override public abstract void saveAccount(Account account); @Override public void removeAccount(Account account) From a7243e0658c3a43aea74ffef6f0cc79890aeeaa8 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 18 May 2015 17:21:59 +0600 Subject: [PATCH 21/40] MySQL saving use parallel task. --- .../com/niccholaspage/Fe/API/Database.java | 1 + .../Fe/Databases/DatabaseGeneric.java | 12 ++ .../Fe/Databases/DatabaseSQL.java | 48 ++++--- .../Fe/Databases/DefferedTask.java | 15 +++ .../niccholaspage/Fe/Databases/MySQLDB.java | 122 +++++++++++++++--- .../java/com/niccholaspage/Fe/FeListener.java | 5 +- src/main/resources/config.yml | 1 + 7 files changed, 172 insertions(+), 32 deletions(-) create mode 100644 src/main/java/com/niccholaspage/Fe/Databases/DefferedTask.java diff --git a/src/main/java/com/niccholaspage/Fe/API/Database.java b/src/main/java/com/niccholaspage/Fe/API/Database.java index af6af7a..fdba246 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Database.java +++ b/src/main/java/com/niccholaspage/Fe/API/Database.java @@ -27,6 +27,7 @@ public interface Database public Account getAccount(UUID uuid); public Account getAccount(String name); public void saveAccount(Account account); + public void reloadAccount(Account account); public void removeAccount(Account account); public void cleanAccountsWithDefaultHoldings(); public void removeAllAccounts(); diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java index ca63e20..4a02f18 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java @@ -65,6 +65,9 @@ public boolean accountExists(String name) @Override public Account createAccount(UUID uuid) { + final Account exist = accounts.get(uuid.toString()); + if(exist != null) + return exist; final Account account = new Account(plugin, this, null, uuid, plugin.api.getDefaultHoldings()); accounts.put(uuid.toString(), account); saveAccount(account); @@ -73,6 +76,9 @@ public Account createAccount(UUID uuid) @Override public Account createAccount(String name) { + final Account exist = accounts.get(name); + if(exist != null) + return exist; final Account account = new Account(plugin, this, name, null, plugin.api.getDefaultHoldings()); accounts.put(name, account); saveAccount(account); @@ -81,6 +87,12 @@ public Account createAccount(String name) @Override public Account createAccount(UUID uuid, String name) { + final Account existByUUID = accounts.get(uuid.toString()); + if(existByUUID != null) + return existByUUID; + final Account existByName = accounts.get(name); + if(existByName != null) + return existByName; final Account account = new Account(plugin, this, name, uuid, plugin.api.getDefaultHoldings()); if(uuid != null) accounts.put(uuid.toString(), account); diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java index be7ce48..8f45c7a 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java @@ -62,22 +62,25 @@ public List loadAccounts() try(ResultSet set = connection.createStatement().executeQuery("SELECT * FROM `" + tableAccounts + "`;")) { while(set.next()) - { - final String name = set.getString(columnAccountsUser); - final String uuid = set.getString(columnAccountsUUID); - final Account account = new Account(plugin, this, - name, uuid != null ? UUID.fromString(uuid) : null, - set.getDouble(columnAccountsMoney)); - if(name != null && !"".equals(name)) - accounts.put(name, account); - if(uuid != null && !"".equals(uuid)) - accounts.put(uuid, account); - } + fromResultSet(set); } catch(SQLException e) { System.out.println(e); } return new ArrayList(accounts.values()); } + private Account fromResultSet(ResultSet set) throws SQLException + { + final String name = set.getString(columnAccountsUser); + final String uuid = set.getString(columnAccountsUUID); + final Account account = new Account(plugin, this, + name, uuid != null ? UUID.fromString(uuid) : null, + set.getDouble(columnAccountsMoney)); + if(name != null && !"".equals(name)) + accounts.put(name, account); + if(uuid != null && !"".equals(uuid)) + accounts.put(uuid, account); + return account; + } @Override public int getVersion() { @@ -99,8 +102,8 @@ public void setVersion(int version) checkConnection(); try { - connection.prepareStatement("DELETE FROM " + tableVersion).executeUpdate(); - connection.prepareStatement("INSERT INTO " + tableVersion + " (version) VALUES (" + version + ")").executeUpdate(); + query("DELETE FROM `" + tableVersion + "`;"); + query("INSERT INTO `" + tableVersion + "` (`version`) VALUES ('" + version + "');"); } catch(SQLException e) { System.out.println(e); } @@ -134,6 +137,21 @@ public void saveAccount(Account account) } } @Override + public void reloadAccount(Account account) + { + checkConnection(); + final UUID uuid = account.getUUID(); + final String query = uuid != null + ? "SELECT * FROM `" + tableAccounts + "` WHERE `" + columnAccountsUUID + "` = '" + uuid.toString() + "';" + : "SELECT * FROM `" + tableAccounts + "` WHERE `" + columnAccountsUser + "` = '" + account.getName() + "';"; + try(ResultSet set = connection.createStatement().executeQuery(query)) + { + if(set.next()) + fromResultSet(set); + } catch(SQLException ex) { + } + } + @Override public void removeAccount(Account account) { super.removeAccount(account); @@ -189,7 +207,7 @@ protected void setAccountsColumnMoney(String accountsColumnMoney) { this.columnAccountsMoney = accountsColumnMoney; } - private boolean checkConnection() + private synchronized boolean checkConnection() { try { @@ -238,7 +256,7 @@ private boolean checkConnection() } return true; } - private boolean query(String sql) throws SQLException + private synchronized boolean query(String sql) throws SQLException { return connection.createStatement().execute(sql); } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DefferedTask.java b/src/main/java/com/niccholaspage/Fe/Databases/DefferedTask.java new file mode 100644 index 0000000..dc0ddc9 --- /dev/null +++ b/src/main/java/com/niccholaspage/Fe/Databases/DefferedTask.java @@ -0,0 +1,15 @@ +package com.niccholaspage.Fe.Databases; +import com.niccholaspage.Fe.API.Account; + +public abstract class DefferedTask implements Runnable +{ + private final Account account; + public DefferedTask(Account account) + { + this.account = account; + } + public Account getAccount() + { + return account; + } +} diff --git a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index 60545e6..6e4f65e 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -1,13 +1,18 @@ package com.niccholaspage.Fe.Databases; +import com.niccholaspage.Fe.API.Account; import org.bukkit.configuration.ConfigurationSection; import com.niccholaspage.Fe.Fe; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; +import java.util.concurrent.ConcurrentLinkedQueue; -public class MySQLDB extends DatabaseSQL +public class MySQLDB extends DatabaseSQL implements Runnable { + private final static int defaultGranularity = 30000; + private final ConcurrentLinkedQueue queue = new ConcurrentLinkedQueue<>(); + private Thread dispatcher; public MySQLDB(Fe plugin) { super(plugin, true); @@ -23,6 +28,92 @@ public boolean isAsync() return true; } @Override + public boolean init() + { + if(super.init()) + { + dispatcher = new Thread(this); + dispatcher.start(); + return true; + } + return false; + } + @Override + public void close() + { + if(dispatcher != null) + { + try + { + dispatcher.interrupt(); + dispatcher.join(); + dispatcher = null; + } catch(InterruptedException e) { + } + } + super.close(); + } + @Override + public void run() + { + try + { + final int granularity = getConfigSection().getInt("saving-granularity", defaultGranularity); + for(;;) + if(doAllTasks() == 0) + Thread.sleep(granularity); + } catch(InterruptedException e) { + } + } + @Override + public void saveAccount(Account account) + { + queue.add(new DefferedTask(account) + { + @Override + public void run() + { + MySQLDB.super.saveAccount(getAccount()); + } + }); + } + @Override + public void reloadAccount(Account account) + { + doAllTasks(); + queue.add(new DefferedTask(account) + { + @Override + public void run() + { + MySQLDB.super.reloadAccount(getAccount()); + } + }); + } + @Override + public void removeAccount(Account account) + { + doAllTasks(); + queue.add(new DefferedTask(account) + { + @Override + public void run() + { + MySQLDB.super.removeAccount(getAccount()); + } + }); + } + private synchronized int doAllTasks() + { + int result = 0; + for(DefferedTask task = queue.poll(); task != null; task = queue.poll()) + { + task.run(); + result += 1; + } + return result; + } + @Override protected Connection getNewConnection() { final ConfigurationSection config = getConfigSection(); @@ -41,27 +132,26 @@ protected Connection getNewConnection() return null; } } - private ConfigurationSection getSection(ConfigurationSection parent, String childName) - { - ConfigurationSection child = parent.getConfigurationSection(childName); - if(child == null) - child = parent.createSection(childName); - return child; - } @Override public void getConfigDefaults(ConfigurationSection section) { - section.addDefault("host", "localhost"); - section.addDefault("port", 3306); - section.addDefault("user", "root"); - section.addDefault("password", "minecraft"); - section.addDefault("database", "Fe"); - ConfigurationSection tables = getSection(section, "tables"); + section.addDefault("saving-granularity", defaultGranularity); + section.addDefault("connection.database", "localhost:3306/minecraft"); + section.addDefault("connection.username", "user"); + section.addDefault("connection.password", "pass"); + final ConfigurationSection tables = getSection(section, "tables"); tables.addDefault("accounts", "fe_accounts"); - ConfigurationSection columns = getSection(section, "columns"); - ConfigurationSection columnsAccounts = getSection(columns, "accounts"); + final ConfigurationSection columns = getSection(section, "columns"); + final ConfigurationSection columnsAccounts = getSection(columns, "accounts"); columnsAccounts.addDefault("username", "name"); columnsAccounts.addDefault("money", "money"); columnsAccounts.addDefault("uuid", "uuid"); } + private ConfigurationSection getSection(ConfigurationSection parent, String childName) + { + ConfigurationSection child = parent.getConfigurationSection(childName); + if(child == null) + child = parent.createSection(childName); + return child; + } } diff --git a/src/main/java/com/niccholaspage/Fe/FeListener.java b/src/main/java/com/niccholaspage/Fe/FeListener.java index 5f462b7..9e0b7b1 100644 --- a/src/main/java/com/niccholaspage/Fe/FeListener.java +++ b/src/main/java/com/niccholaspage/Fe/FeListener.java @@ -7,6 +7,7 @@ import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.API.Database; import org.bukkit.event.player.PlayerKickEvent; public class FeListener implements Listener @@ -20,7 +21,9 @@ public FeListener(Fe plugin) public void onPlayerLogin(PlayerLoginEvent event) { final Player player = event.getPlayer(); - final Account account = plugin.getDB().getAccount(player.getUniqueId()); + final Database database = plugin.getDB(); + final Account account = database.createAccount(player.getUniqueId()); + database.reloadAccount(account); account.setName(player.getName()); account.connected(player); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 793f64a..3021813 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -16,6 +16,7 @@ settings: database-type: sqlite sqlite: {} mysql: + saving-granularity: 30000 connection: database: localhost:3306/minecraft username: user From 019c317fef6e430e51fd9a3a245dab61b3a80879 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Tue, 19 May 2015 12:22:57 +0600 Subject: [PATCH 22/40] Added command /fe migrate . Available types are as in config, mysql and sqlite, but you are able to enter only non-primary db. In other words, if primary is mysql, enter only sqlite, or vise versa. --- .../com/niccholaspage/Fe/API/Database.java | 28 +++-- .../java/com/niccholaspage/Fe/API/FeAPI.java | 2 +- .../com/niccholaspage/Fe/API/SubCommand.java | 7 +- .../Fe/Commands/BalanceCommand.java | 14 ++- .../Fe/Commands/CleanCommand.java | 12 +-- .../Fe/Commands/CreateCommand.java | 14 ++- .../Fe/Commands/DeductCommand.java | 14 ++- .../Fe/Commands/GrantCommand.java | 14 ++- .../Fe/Commands/HelpCommand.java | 14 ++- .../Fe/Commands/MigrateCommand.java | 42 ++++++++ .../Fe/Commands/ReloadCommand.java | 12 +-- .../Fe/Commands/RemoveCommand.java | 12 +-- .../Fe/Commands/SendCommand.java | 14 ++- .../niccholaspage/Fe/Commands/SetCommand.java | 15 ++- .../niccholaspage/Fe/Commands/TopCommand.java | 14 ++- .../Fe/Databases/DatabaseGeneric.java | 2 +- .../Fe/Databases/DatabaseSQL.java | 89 +++++++--------- .../niccholaspage/Fe/Databases/MySQLDB.java | 31 +++++- .../niccholaspage/Fe/Databases/SQLiteDB.java | 23 +++- src/main/java/com/niccholaspage/Fe/Fe.java | 36 ++++--- .../java/com/niccholaspage/Fe/FeCommands.java | 22 ++-- .../java/com/niccholaspage/Fe/FeListener.java | 6 +- .../java/com/niccholaspage/Fe/FeSettings.java | 1 + .../java/com/niccholaspage/Fe/Phrases.java | 100 +++++++++--------- .../com/niccholaspage/Fe/UUIDFetcher.java | 12 ++- .../com/niccholaspage/Fe/VaultHandler.java | 10 +- 26 files changed, 316 insertions(+), 244 deletions(-) create mode 100644 src/main/java/com/niccholaspage/Fe/Commands/MigrateCommand.java diff --git a/src/main/java/com/niccholaspage/Fe/API/Database.java b/src/main/java/com/niccholaspage/Fe/API/Database.java index fdba246..bb7b8c0 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Database.java +++ b/src/main/java/com/niccholaspage/Fe/API/Database.java @@ -7,10 +7,8 @@ public interface Database { public String getName(); - public int getVersion(); - public void setVersion(int version); public boolean isAsync(); - public boolean init(); + public boolean initialize(); public void close(); public String getConfigName(); public ConfigurationSection getConfigSection(); @@ -19,16 +17,16 @@ public interface Database public List loadAccounts(); public List getAccounts(); public List getTopAccounts(int size); - public boolean accountExists(UUID uuid); - public boolean accountExists(String name); - public Account createAccount(UUID uuid); - public Account createAccount(String name); - public Account createAccount(UUID uuid, String name); - public Account getAccount(UUID uuid); - public Account getAccount(String name); - public void saveAccount(Account account); - public void reloadAccount(Account account); - public void removeAccount(Account account); - public void cleanAccountsWithDefaultHoldings(); - public void removeAllAccounts(); + public boolean accountExists(UUID uuid); + public boolean accountExists(String name); + public Account createAccount(UUID uuid); + public Account createAccount(String name); + public Account createAccount(UUID uuid, String name); + public Account getAccount(UUID uuid); + public Account getAccount(String name); + public void saveAccount(Account account); + public void reloadAccount(Account account); + public void removeAccount(Account account); + public void cleanAccountsWithDefaultHoldings(); + public void removeAllAccounts(); } diff --git a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java index 4f3b9ce..83b6238 100644 --- a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java +++ b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java @@ -2,12 +2,12 @@ import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrases; -import org.bukkit.ChatColor; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.List; import java.util.Locale; import java.util.UUID; +import org.bukkit.ChatColor; public class FeAPI { diff --git a/src/main/java/com/niccholaspage/Fe/API/SubCommand.java b/src/main/java/com/niccholaspage/Fe/API/SubCommand.java index 3f5d153..5c6e28e 100644 --- a/src/main/java/com/niccholaspage/Fe/API/SubCommand.java +++ b/src/main/java/com/niccholaspage/Fe/API/SubCommand.java @@ -1,19 +1,22 @@ package com.niccholaspage.Fe.API; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Phrases; public abstract class SubCommand { + protected final Fe plugin; private final String name; private final String permission; private final String usage; private final Phrases description; private final CommandType commandType; public abstract boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args); - public SubCommand(String name, String permission, String usage, Phrases description, CommandType commandType) + public SubCommand(Fe plugin, String name, String permission, String usage, Phrases description, CommandType commandType) { + this.plugin = plugin; this.name = name; this.permission = permission; this.usage = usage; diff --git a/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java index 8aa5dd0..c7bdc4a 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/BalanceCommand.java @@ -1,21 +1,19 @@ package com.niccholaspage.Fe.Commands; +import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; -import com.niccholaspage.Fe.API.CommandType; -import com.niccholaspage.Fe.API.SubCommand; -import com.niccholaspage.Fe.API.Account; public class BalanceCommand extends SubCommand { - private final Fe plugin; public BalanceCommand(Fe plugin) { - super("balance,bal", "fe.balance", "(name)", Phrases.COMMAND_BALANCE, CommandType.CONSOLE_WITH_ARGUMENTS); - this.plugin = plugin; + super(plugin, "balance,bal", "fe.balance", "(name)", Phrases.COMMAND_BALANCE, CommandType.CONSOLE_WITH_ARGUMENTS); } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) diff --git a/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java index f4b691b..a67ae6c 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/CleanCommand.java @@ -1,19 +1,17 @@ package com.niccholaspage.Fe.Commands; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; public class CleanCommand extends SubCommand { - private final Fe plugin; public CleanCommand(Fe plugin) { - super("clean", "fe.clean", "clean", Phrases.COMMAND_CLEAN, CommandType.CONSOLE); - this.plugin = plugin; + super(plugin, "clean", "fe.clean", "clean", Phrases.COMMAND_CLEAN, CommandType.CONSOLE); } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) diff --git a/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java index 3640ef1..93a96c4 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java @@ -1,20 +1,18 @@ package com.niccholaspage.Fe.Commands; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; +import com.niccholaspage.Fe.API.Account; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; -import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; public class CreateCommand extends SubCommand { - private final Fe plugin; public CreateCommand(Fe plugin) { - super("create", "fe.create", "create [name]", Phrases.COMMAND_CREATE, CommandType.CONSOLE); - this.plugin = plugin; + super(plugin, "create", "fe.create", "create [name]", Phrases.COMMAND_CREATE, CommandType.CONSOLE); } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) diff --git a/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java index 446e97e..1b51447 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/DeductCommand.java @@ -1,21 +1,19 @@ package com.niccholaspage.Fe.Commands; +import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; -import com.niccholaspage.Fe.API.CommandType; -import com.niccholaspage.Fe.API.SubCommand; -import com.niccholaspage.Fe.API.Account; public class DeductCommand extends SubCommand { - private final Fe plugin; public DeductCommand(Fe plugin) { - super("deduct", "fe.deduct", "deduct [name] [amount]", Phrases.COMMAND_DEDUCT, CommandType.CONSOLE); - this.plugin = plugin; + super(plugin, "deduct", "fe.deduct", "deduct [name] [amount]", Phrases.COMMAND_DEDUCT, CommandType.CONSOLE); } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) diff --git a/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java index 5bf11dd..970af40 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/GrantCommand.java @@ -1,21 +1,19 @@ package com.niccholaspage.Fe.Commands; +import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; -import com.niccholaspage.Fe.API.CommandType; -import com.niccholaspage.Fe.API.SubCommand; -import com.niccholaspage.Fe.API.Account; public class GrantCommand extends SubCommand { - private final Fe plugin; public GrantCommand(Fe plugin) { - super("grant", "fe.grant", "grant [name] [amount]", Phrases.COMMAND_GRANT, CommandType.CONSOLE); - this.plugin = plugin; + super(plugin, "grant", "fe.grant", "grant [name] [amount]", Phrases.COMMAND_GRANT, CommandType.CONSOLE); } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) diff --git a/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java index 499cc68..6b2e670 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/HelpCommand.java @@ -1,22 +1,20 @@ package com.niccholaspage.Fe.Commands; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.FeCommands; import com.niccholaspage.Fe.Phrases; -import com.niccholaspage.Fe.API.CommandType; -import com.niccholaspage.Fe.API.SubCommand; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; public class HelpCommand extends SubCommand { - private final Fe plugin; private final FeCommands command; public HelpCommand(Fe plugin, FeCommands command) { - super("help,?", "fe.?", "help", Phrases.COMMAND_HELP, CommandType.CONSOLE); - this.plugin = plugin; + super(plugin, "help,?", "fe.?", "help", Phrases.COMMAND_HELP, CommandType.CONSOLE); this.command = command; } @Override diff --git a/src/main/java/com/niccholaspage/Fe/Commands/MigrateCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/MigrateCommand.java new file mode 100644 index 0000000..4c27688 --- /dev/null +++ b/src/main/java/com/niccholaspage/Fe/Commands/MigrateCommand.java @@ -0,0 +1,42 @@ +package com.niccholaspage.Fe.Commands; + +import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.Database; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; + +public class MigrateCommand extends SubCommand +{ + public MigrateCommand(Fe plugin) + { + super(plugin, "migrate", "fe.migrate", "migrate", Phrases.COMMAND_MIGRATE, CommandType.CONSOLE); + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + if(args != null && args.length > 0 && args[0] != null && !"".equals(args[0])) + { + final String targetName = args[0].toString().replace(" ", "").toLowerCase(); + final Database source = plugin.getDB(); + final Database target = plugin.findDB(targetName); + if(target != null) + { + if(target != source && target.initialize()) + { + target.removeAllAccounts(); + for(Account account : source.getAccounts()) + target.saveAccount(account); + target.close(); + Phrases.DATABASE_MIGRATED.sendWithPrefix(sender); + } else + Phrases.DATABASE_THE_SAME.sendWithPrefix(sender); + } else + Phrases.DATABASE_NOT_FOUND.sendWithPrefix(sender); + } + return true; + } +} diff --git a/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java index f15c388..cee1611 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/ReloadCommand.java @@ -1,20 +1,18 @@ package com.niccholaspage.Fe.Commands; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; import org.bukkit.plugin.PluginManager; public class ReloadCommand extends SubCommand { - private final Fe plugin; public ReloadCommand(Fe plugin) { - super("reload", "fe.reload", "reload", Phrases.COMMAND_RELOAD, CommandType.CONSOLE); - this.plugin = plugin; + super(plugin, "reload", "fe.reload", "reload", Phrases.COMMAND_RELOAD, CommandType.CONSOLE); } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) diff --git a/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java index 9a9d665..702433b 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java @@ -1,20 +1,18 @@ package com.niccholaspage.Fe.Commands; import com.niccholaspage.Fe.API.Account; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; public class RemoveCommand extends SubCommand { - private final Fe plugin; public RemoveCommand(Fe plugin) { - super("remove", "fe.remove", "remove [name]", Phrases.COMMAND_REMOVE, CommandType.CONSOLE); - this.plugin = plugin; + super(plugin, "remove", "fe.remove", "remove [name]", Phrases.COMMAND_REMOVE, CommandType.CONSOLE); } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) diff --git a/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java index c568c7b..479681a 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java @@ -1,21 +1,19 @@ package com.niccholaspage.Fe.Commands; +import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; -import com.niccholaspage.Fe.API.CommandType; -import com.niccholaspage.Fe.API.SubCommand; -import com.niccholaspage.Fe.API.Account; public class SendCommand extends SubCommand { - private final Fe plugin; public SendCommand(Fe plugin) { - super("send,pay,give", "fe.send", "send [name] [amount]", Phrases.COMMAND_SEND, CommandType.PLAYER); - this.plugin = plugin; + super(plugin, "send,pay,give", "fe.send", "send [name] [amount]", Phrases.COMMAND_SEND, CommandType.PLAYER); } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) diff --git a/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java index 4be77e2..3787225 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/SetCommand.java @@ -1,21 +1,18 @@ package com.niccholaspage.Fe.Commands; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; +import com.niccholaspage.Fe.API.Account; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; -import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; public class SetCommand extends SubCommand { - private final Fe plugin; - public SetCommand(Fe plugin) { - super("set", "fe.set", "set [name] [amount]", Phrases.COMMAND_SET, CommandType.CONSOLE); - this.plugin = plugin; + super(plugin, "set", "fe.set", "set [name] [amount]", Phrases.COMMAND_SET, CommandType.CONSOLE); } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) diff --git a/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java index 1a1b57c..2854ac7 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/TopCommand.java @@ -1,21 +1,19 @@ package com.niccholaspage.Fe.Commands; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; +import com.niccholaspage.Fe.API.Account; import com.niccholaspage.Fe.API.CommandType; import com.niccholaspage.Fe.API.SubCommand; -import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; import java.util.List; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; public class TopCommand extends SubCommand { - private final Fe plugin; public TopCommand(Fe plugin) { - super("top", "fe.top", "top", Phrases.COMMAND_TOP, CommandType.CONSOLE); - this.plugin = plugin; + super(plugin, "top", "fe.top", "top", Phrases.COMMAND_TOP, CommandType.CONSOLE); } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java index 4a02f18..c8eb3eb 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java @@ -2,7 +2,6 @@ import com.niccholaspage.Fe.API.Account; import com.niccholaspage.Fe.API.Database; -import org.bukkit.configuration.ConfigurationSection; import com.niccholaspage.Fe.Fe; import java.util.ArrayList; import java.util.Collections; @@ -12,6 +11,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; +import org.bukkit.configuration.ConfigurationSection; public abstract class DatabaseGeneric implements Database { diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java index 8f45c7a..f899e06 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java @@ -1,7 +1,7 @@ package com.niccholaspage.Fe.Databases; -import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.Fe; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -12,12 +12,12 @@ public abstract class DatabaseSQL extends DatabaseGeneric { private final boolean supportsModification; - private final long pingDelay = 20 * 60; - private String tableAccounts = "fe_accounts"; - private String tableVersion = "fe_version"; - private String columnAccountsUser = "name"; - private String columnAccountsUUID = "uuid"; - private String columnAccountsMoney = "money"; + private final long pingDelay = 20 * 60; + protected String tableAccounts = "fe_accounts"; + protected String tableVersion = "fe_version"; + protected String columnAccountsUser = "name"; + protected String columnAccountsUUID = "uuid"; + protected String columnAccountsMoney = "money"; private Connection connection; protected abstract Connection getNewConnection(); public DatabaseSQL(Fe plugin, boolean supportsModification) @@ -40,7 +40,7 @@ public void run() }, pingDelay, pingDelay); } @Override - public boolean init() + public boolean initialize() { return checkConnection(); } @@ -81,57 +81,15 @@ private Account fromResultSet(ResultSet set) throws SQLException accounts.put(uuid, account); return account; } - @Override - public int getVersion() - { - checkConnection(); - int version = 0; - try(ResultSet set = connection.prepareStatement("SELECT * from " + tableVersion).executeQuery()) - { - if(set.next()) - version = set.getInt("version"); - return version; - } catch(Exception e) { - System.out.println(e); - return version; - } - } - @Override - public void setVersion(int version) - { - checkConnection(); - try - { - query("DELETE FROM `" + tableVersion + "`;"); - query("INSERT INTO `" + tableVersion + "` (`version`) VALUES ('" + version + "');"); - } catch(SQLException e) { - System.out.println(e); - } - } + protected abstract String[] getQueriesForSaveAccount(Account account); @Override public void saveAccount(Account account) { checkConnection(); - final String strname = account.getName(); - final String strblnc = String.valueOf(account.getMoney()); - String query; - if(account.getUUID() != null) - { - final String struuid = account.getUUID().toString(); - query = "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsUUID + "`, `" + columnAccountsMoney + "`) " - + "VALUES ('" + strname + "', '" + struuid + "', '" + strblnc + "') ON DUPLICATE KEY UPDATE " - + "`" + columnAccountsUser + "` = VALUES(`" + columnAccountsUser + "`), " - + "`" + columnAccountsUUID + "` = VALUES(`" + columnAccountsUUID + "`), " - + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);"; - } else { - query = "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsMoney + "`) " - + "VALUES ('" + strname + "', '" + strblnc + "') ON DUPLICATE KEY UPDATE " - + "`" + columnAccountsUser + "` = VALUES(`" + columnAccountsUser + "`), " - + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);"; - } try { - query(query); + for(String query : getQueriesForSaveAccount(account)) + query(query); } catch(SQLException e) { System.out.println(e); } @@ -260,4 +218,29 @@ private synchronized boolean query(String sql) throws SQLException { return connection.createStatement().execute(sql); } + private int getVersion() + { + checkConnection(); + int version = 0; + try(ResultSet set = connection.prepareStatement("SELECT * from " + tableVersion).executeQuery()) + { + if(set.next()) + version = set.getInt("version"); + return version; + } catch(Exception e) { + System.out.println(e); + return version; + } + } + private void setVersion(int version) + { + checkConnection(); + try + { + query("DELETE FROM `" + tableVersion + "`;"); + query("INSERT INTO `" + tableVersion + "` (`version`) VALUES ('" + version + "');"); + } catch(SQLException e) { + System.out.println(e); + } + } } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index 6e4f65e..db4de95 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -1,12 +1,12 @@ package com.niccholaspage.Fe.Databases; import com.niccholaspage.Fe.API.Account; -import org.bukkit.configuration.ConfigurationSection; import com.niccholaspage.Fe.Fe; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.concurrent.ConcurrentLinkedQueue; +import org.bukkit.configuration.ConfigurationSection; public class MySQLDB extends DatabaseSQL implements Runnable { @@ -28,9 +28,9 @@ public boolean isAsync() return true; } @Override - public boolean init() + public boolean initialize() { - if(super.init()) + if(super.initialize()) { dispatcher = new Thread(this); dispatcher.start(); @@ -154,4 +154,29 @@ private ConfigurationSection getSection(ConfigurationSection parent, String chil child = parent.createSection(childName); return child; } + @Override + protected String[] getQueriesForSaveAccount(Account account) + { + final String strName = account.getName(); + final String strBlnc = String.valueOf(account.getMoney()); + if(account.getUUID() != null) + { + final String struuid = account.getUUID().toString(); + return new String[] + { + "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsUUID + "`, `" + columnAccountsMoney + "`) " + + "VALUES ('" + strName + "', '" + struuid + "', '" + strBlnc + "') ON DUPLICATE KEY UPDATE " + + "`" + columnAccountsUser + "` = VALUES(`" + columnAccountsUser + "`), " + + "`" + columnAccountsUUID + "` = VALUES(`" + columnAccountsUUID + "`), " + + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);", + }; + } + return new String[] + { + "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsMoney + "`) " + + "VALUES ('" + strName + "', '" + strBlnc + "') ON DUPLICATE KEY UPDATE " + + "`" + columnAccountsUser + "` = VALUES(`" + columnAccountsUser + "`), " + + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);", + }; + } } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java b/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java index 58a15e1..4f1fd49 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java @@ -1,11 +1,12 @@ package com.niccholaspage.Fe.Databases; -import org.bukkit.configuration.ConfigurationSection; +import com.niccholaspage.Fe.API.Account; import com.niccholaspage.Fe.Fe; import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; +import org.bukkit.configuration.ConfigurationSection; public class SQLiteDB extends DatabaseSQL { @@ -39,4 +40,24 @@ public Connection getNewConnection() public void getConfigDefaults(ConfigurationSection section) { } + @Override + protected String[] getQueriesForSaveAccount(Account account) + { + final String strName = account.getName(); + final String strBlnc = String.valueOf(account.getMoney()); + if(account.getUUID() != null) + { + final String struuid = account.getUUID().toString(); + return new String[] + { + "INSERT OR REPLACE INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsUUID + "`, `" + columnAccountsMoney + "`) " + + "VALUES ('" + strName + "', '" + struuid + "', '" + strBlnc + "');", + }; + } + return new String[] + { + "INSERT OR REPLACE INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsMoney + "`) " + + "VALUES ('" + strName + "', '" + strBlnc + "');", + }; + } } diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index b371235..40fc578 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -1,21 +1,21 @@ package com.niccholaspage.Fe; -import com.niccholaspage.Fe.API.FeAPI; -import net.milkbowl.vault.economy.Economy; -import org.bukkit.entity.Player; -import org.bukkit.plugin.ServicePriority; -import org.bukkit.plugin.java.JavaPlugin; -import org.mcstats.Metrics; -import org.mcstats.Metrics.Graph; -import org.mcstats.Metrics.Plotter; import com.niccholaspage.Fe.API.Account; import com.niccholaspage.Fe.API.Database; +import com.niccholaspage.Fe.API.FeAPI; import com.niccholaspage.Fe.Databases.MySQLDB; import com.niccholaspage.Fe.Databases.SQLiteDB; import java.io.File; import java.io.IOException; import java.util.HashSet; import java.util.Set; +import net.milkbowl.vault.economy.Economy; +import org.bukkit.entity.Player; +import org.bukkit.plugin.ServicePriority; +import org.bukkit.plugin.java.JavaPlugin; +import org.mcstats.Metrics; +import org.mcstats.Metrics.Graph; +import org.mcstats.Metrics.Plotter; public class Fe extends JavaPlugin { @@ -29,7 +29,7 @@ public class Fe extends JavaPlugin public void onLoad() { settings.onLoad(); - Phrases.init(this); + Phrases.initialize(this); } @Override public void onEnable() @@ -74,7 +74,8 @@ private boolean setupDatabase() log(Phrases.DATABASE_TYPE_DOES_NOT_EXIST); return false; } - if(!database.init()) + log("Using " + database.getName()); + if(!database.initialize()) { log(Phrases.DATABASE_FAILURE_DISABLE); setEnabled(false); @@ -102,6 +103,13 @@ public Database getDB() { return database; } + public Database findDB(String targetName) + { + for(Database db : databases) + if(db.getConfigName().equals(targetName)) + return db; + return null; + } public void log(String message) { getLogger().info(message); @@ -115,9 +123,13 @@ public Account getShortenedAccount(String name) Account account = api.getAccount(name); if(account == null) { - Player player = getServer().getPlayer(name); + final Player player = getServer().getPlayer(name); if(player != null) - account = api.getAccount(player.getName()); + { + account = api.getAccount(player.getUniqueId().toString()); + if(account == null) + account = api.getAccount(player.getName()); + } } return account; } diff --git a/src/main/java/com/niccholaspage/Fe/FeCommands.java b/src/main/java/com/niccholaspage/Fe/FeCommands.java index 2b168ba..99eb536 100644 --- a/src/main/java/com/niccholaspage/Fe/FeCommands.java +++ b/src/main/java/com/niccholaspage/Fe/FeCommands.java @@ -1,24 +1,25 @@ package com.niccholaspage.Fe; -import com.niccholaspage.Fe.Commands.CreateCommand; -import com.niccholaspage.Fe.Commands.HelpCommand; -import com.niccholaspage.Fe.Commands.ReloadCommand; +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.Commands.BalanceCommand; +import com.niccholaspage.Fe.Commands.CleanCommand; +import com.niccholaspage.Fe.Commands.CreateCommand; import com.niccholaspage.Fe.Commands.DeductCommand; import com.niccholaspage.Fe.Commands.GrantCommand; -import com.niccholaspage.Fe.Commands.TopCommand; +import com.niccholaspage.Fe.Commands.HelpCommand; +import com.niccholaspage.Fe.Commands.MigrateCommand; +import com.niccholaspage.Fe.Commands.ReloadCommand; +import com.niccholaspage.Fe.Commands.RemoveCommand; import com.niccholaspage.Fe.Commands.SendCommand; import com.niccholaspage.Fe.Commands.SetCommand; -import com.niccholaspage.Fe.Commands.RemoveCommand; -import com.niccholaspage.Fe.Commands.CleanCommand; +import com.niccholaspage.Fe.Commands.TopCommand; +import java.util.ArrayList; +import java.util.List; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.niccholaspage.Fe.API.CommandType; -import com.niccholaspage.Fe.API.SubCommand; -import java.util.ArrayList; -import java.util.List; public class FeCommands implements CommandExecutor { @@ -35,6 +36,7 @@ public FeCommands(Fe plugin) commands.add(new GrantCommand(plugin)); commands.add(new DeductCommand(plugin)); commands.add(new CleanCommand(plugin)); + commands.add(new MigrateCommand(plugin)); commands.add(new ReloadCommand(plugin)); } public List getCommands() diff --git a/src/main/java/com/niccholaspage/Fe/FeListener.java b/src/main/java/com/niccholaspage/Fe/FeListener.java index 9e0b7b1..5b3ee4b 100644 --- a/src/main/java/com/niccholaspage/Fe/FeListener.java +++ b/src/main/java/com/niccholaspage/Fe/FeListener.java @@ -1,14 +1,14 @@ package com.niccholaspage.Fe; +import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.API.Database; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; -import com.niccholaspage.Fe.API.Account; -import com.niccholaspage.Fe.API.Database; -import org.bukkit.event.player.PlayerKickEvent; public class FeListener implements Listener { diff --git a/src/main/java/com/niccholaspage/Fe/FeSettings.java b/src/main/java/com/niccholaspage/Fe/FeSettings.java index bac9431..cbd7079 100644 --- a/src/main/java/com/niccholaspage/Fe/FeSettings.java +++ b/src/main/java/com/niccholaspage/Fe/FeSettings.java @@ -21,6 +21,7 @@ public void onLoad() } public void onEnable() { + fe.reloadConfig(); final FileConfiguration config = fe.getConfig(); int version = config.getInt("internal.version", 0); switch(version) diff --git a/src/main/java/com/niccholaspage/Fe/Phrases.java b/src/main/java/com/niccholaspage/Fe/Phrases.java index 30f9ec6..5ec13c3 100644 --- a/src/main/java/com/niccholaspage/Fe/Phrases.java +++ b/src/main/java/com/niccholaspage/Fe/Phrases.java @@ -8,53 +8,57 @@ public enum Phrases { DATABASE_TYPE_DOES_NOT_EXIST("That database type doesn't exist."), - DATABASE_FAILURE_DISABLE("Database initialization has failed, disabling Fe."), - COMMAND_NEEDS_ARGUMENTS("That command needs arguments."), - COMMAND_NOT_CONSOLE("The command '$1' cannot be used in the console."), - NO_PERMISSION_FOR_COMMAND("Sorry, you do not have permission to use that command."), - ACCOUNT_HAS("$1 has $2"), - YOU_HAVE("You have $1"), - HELP("Fe Help"), - HELP_ARGUMENTS("$1 Required, $2 Optional"), - RICH("Rich List"), - STARTING_UUID_CONVERSION("Starting UUID conversion."), - UUID_CONVERSION_FAILED("UUID conversion failed, disabling Fe!"), - UUID_CONVERSION_SUCCEEDED("UUID conversion has succeeded!"), - CONFIG_RELOADED("The config has been reloaded."), - NOT_ENOUGH_MONEY("You don't have enough money."), - ACCOUNT_DOES_NOT_EXIST("Sorry, that account does not exist."), - YOUR_ACCOUNT_DOES_NOT_EXIST("You don't have an account."), - ACCOUNT_EXISTS("That account already exists."), - ACCOUNT_CREATED("An account for $1 has been created."), - ACCOUNT_REMOVED("An account for $1 has been removed."), - MONEY_RECEIVE("You've received $1 from $2."), - MONEY_SENT("You've sent $1 to $2"), - MAX_BALANCE_REACHED("$1 has reached the maximum balance."), - PLAYER_SET_MONEY("You've set $1's balance to $2."), - PLAYER_GRANT_MONEY("You've granted $1 to $2."), - PLAYER_GRANTED_MONEY("$2 granted you $1."), - PLAYER_DEDUCT_MONEY("You've deducted $1 from $2."), - PLAYER_DEDUCTED_MONEY("$2 deducted $1 from your account."), - ACCOUNT_CREATED_GRANT("Created an account for $1 and granted it $2"), - NO_ACCOUNTS_EXIST("No accounts exist."), - NAME_TOO_LONG("Sorry that name is too long."), - ACCOUNT_CLEANED("All accounts with the default balance have been removed."), - TRY_COMMAND("Try $1"), - PRIMARY_COLOR(ChatColor.GOLD.toString()), - SECONDARY_COLOR(ChatColor.GRAY.toString()), - TERTIARY_COLOR(ChatColor.DARK_GRAY.toString()), - ARGUMENT_COLOR(ChatColor.YELLOW.toString()), - COMMAND_BALANCE("Checks your balance", true), - COMMAND_SEND("Sends another player money", true), - COMMAND_TOP("Checks the top 5 richest players", true), - COMMAND_HELP("Gives you help", true), - COMMAND_CREATE("Creates an account", true), - COMMAND_REMOVE("Removes an account", true), - COMMAND_SET("Set a player's balance", true), - COMMAND_GRANT("Grants a player money", true), - COMMAND_DEDUCT("Deducts money from a player", true), - COMMAND_CLEAN("Cleans the accounts with default balance", true), - COMMAND_RELOAD("Reloads the config", true), + DATABASE_FAILURE_DISABLE ("Database initialization has failed, disabling Fe."), + COMMAND_NEEDS_ARGUMENTS ("That command needs arguments."), + COMMAND_NOT_CONSOLE ("The command '$1' cannot be used in the console."), + NO_PERMISSION_FOR_COMMAND ("Sorry, you do not have permission to use that command."), + ACCOUNT_HAS ("$1 has $2"), + YOU_HAVE ("You have $1"), + HELP ("Fe Help"), + HELP_ARGUMENTS ("$1 Required, $2 Optional"), + RICH ("Rich List"), + STARTING_UUID_CONVERSION ("Starting UUID conversion."), + UUID_CONVERSION_FAILED ("UUID conversion failed, disabling Fe!"), + UUID_CONVERSION_SUCCEEDED ("UUID conversion has succeeded!"), + CONFIG_RELOADED ("The config has been reloaded."), + DATABASE_MIGRATED ("Database has been migrated."), + DATABASE_THE_SAME ("Please specify other target database type."), + DATABASE_NOT_FOUND ("Please specify one of existing dababase targets."), + NOT_ENOUGH_MONEY ("You don't have enough money."), + ACCOUNT_DOES_NOT_EXIST ("Sorry, that account does not exist."), + YOUR_ACCOUNT_DOES_NOT_EXIST ("You don't have an account."), + ACCOUNT_EXISTS ("That account already exists."), + ACCOUNT_CREATED ("An account for $1 has been created."), + ACCOUNT_REMOVED ("An account for $1 has been removed."), + MONEY_RECEIVE ("You've received $1 from $2."), + MONEY_SENT ("You've sent $1 to $2"), + MAX_BALANCE_REACHED ("$1 has reached the maximum balance."), + PLAYER_SET_MONEY ("You've set $1's balance to $2."), + PLAYER_GRANT_MONEY ("You've granted $1 to $2."), + PLAYER_GRANTED_MONEY ("$2 granted you $1."), + PLAYER_DEDUCT_MONEY ("You've deducted $1 from $2."), + PLAYER_DEDUCTED_MONEY ("$2 deducted $1 from your account."), + ACCOUNT_CREATED_GRANT ("Created an account for $1 and granted it $2"), + NO_ACCOUNTS_EXIST ("No accounts exist."), + NAME_TOO_LONG ("Sorry that name is too long."), + ACCOUNT_CLEANED ("All accounts with the default balance have been removed."), + TRY_COMMAND ("Try $1"), + PRIMARY_COLOR (ChatColor.GOLD.toString()), + SECONDARY_COLOR (ChatColor.GRAY.toString()), + TERTIARY_COLOR (ChatColor.DARK_GRAY.toString()), + ARGUMENT_COLOR (ChatColor.YELLOW.toString()), + COMMAND_BALANCE ("Checks your balance", true), + COMMAND_SEND ("Sends another player money", true), + COMMAND_TOP ("Checks the top 5 richest players", true), + COMMAND_HELP ("Gives you help", true), + COMMAND_CREATE ("Creates an account", true), + COMMAND_REMOVE ("Removes an account", true), + COMMAND_SET ("Set a player's balance", true), + COMMAND_GRANT ("Grants a player money", true), + COMMAND_DEDUCT ("Deducts money from a player", true), + COMMAND_CLEAN ("Cleans the accounts with default balance", true), + COMMAND_RELOAD ("Reloads the config", true), + COMMAND_MIGRATE ("Migrates from default database into specified one", true), ; private static Fe plugin; private final String defaultMessage; @@ -70,7 +74,7 @@ private Phrases(String defaultMessage, boolean categorized) this.categorized = categorized; message = defaultMessage + ""; } - public static void init(Fe instance) + public static void initialize(Fe instance) { plugin = instance; } diff --git a/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java b/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java index bf392f3..8e4b2af 100644 --- a/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java +++ b/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java @@ -1,16 +1,20 @@ package com.niccholaspage.Fe; import com.google.common.collect.ImmutableList; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.nio.ByteBuffer; -import java.util.*; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; import java.util.concurrent.Callable; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; public class UUIDFetcher implements Callable> { diff --git a/src/main/java/com/niccholaspage/Fe/VaultHandler.java b/src/main/java/com/niccholaspage/Fe/VaultHandler.java index 239eeb6..af18845 100644 --- a/src/main/java/com/niccholaspage/Fe/VaultHandler.java +++ b/src/main/java/com/niccholaspage/Fe/VaultHandler.java @@ -1,5 +1,8 @@ package com.niccholaspage.Fe; +import com.niccholaspage.Fe.API.Account; +import java.util.ArrayList; +import java.util.List; import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.EconomyResponse; import net.milkbowl.vault.economy.EconomyResponse.ResponseType; @@ -11,9 +14,6 @@ import org.bukkit.event.server.PluginDisableEvent; import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.plugin.Plugin; -import com.niccholaspage.Fe.API.Account; -import java.util.ArrayList; -import java.util.List; public class VaultHandler implements Economy { @@ -56,7 +56,7 @@ public double getBalance(String playerName) final Account account = plugin.getDB().getAccount(playerName); return account != null ? account.getMoney() - : plugin.settings.getDefaultHoldings(); + : plugin.api.getDefaultHoldings(); } @Override public double getBalance(OfflinePlayer offlinePlayer) @@ -64,7 +64,7 @@ public double getBalance(OfflinePlayer offlinePlayer) final Account account = plugin.getDB().getAccount(offlinePlayer.getUniqueId()); return account != null ? account.getMoney() - : plugin.settings.getDefaultHoldings(); + : plugin.api.getDefaultHoldings(); } @Override public EconomyResponse withdrawPlayer(String playerName, double amount) From ce7b1c10cfd40fb2bd44e897f03363a2b5ee2d36 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Wed, 20 May 2015 10:41:04 +0700 Subject: [PATCH 23/40] Use LinkedBlockingQueue instead of ConcurrentLinkedQueue. Removed settings.mysql.saving-granularity option. --- .../Fe/Databases/DatabaseSQL.java | 5 +-- .../niccholaspage/Fe/Databases/MySQLDB.java | 44 +++++++------------ .../niccholaspage/Fe/Databases/SQLiteDB.java | 16 +++---- src/main/resources/config.yml | 1 - 4 files changed, 24 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java index f899e06..824d71a 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java @@ -81,15 +81,14 @@ private Account fromResultSet(ResultSet set) throws SQLException accounts.put(uuid, account); return account; } - protected abstract String[] getQueriesForSaveAccount(Account account); + protected abstract String getSaveAccountQuery(Account account); @Override public void saveAccount(Account account) { checkConnection(); try { - for(String query : getQueriesForSaveAccount(account)) - query(query); + query(getSaveAccountQuery(account)); } catch(SQLException e) { System.out.println(e); } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index db4de95..501bd30 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -5,13 +5,12 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; -import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.LinkedBlockingQueue; import org.bukkit.configuration.ConfigurationSection; public class MySQLDB extends DatabaseSQL implements Runnable { - private final static int defaultGranularity = 30000; - private final ConcurrentLinkedQueue queue = new ConcurrentLinkedQueue<>(); + private final LinkedBlockingQueue queue = new LinkedBlockingQueue<>(); private Thread dispatcher; public MySQLDB(Fe plugin) { @@ -58,17 +57,15 @@ public void run() { try { - final int granularity = getConfigSection().getInt("saving-granularity", defaultGranularity); - for(;;) - if(doAllTasks() == 0) - Thread.sleep(granularity); + for(DefferedTask task = queue.take(); task != null; task = queue.take()) + task.run(); } catch(InterruptedException e) { } } @Override public void saveAccount(Account account) { - queue.add(new DefferedTask(account) + queue.offer(new DefferedTask(account) { @Override public void run() @@ -81,7 +78,7 @@ public void run() public void reloadAccount(Account account) { doAllTasks(); - queue.add(new DefferedTask(account) + queue.offer(new DefferedTask(account) { @Override public void run() @@ -94,7 +91,7 @@ public void run() public void removeAccount(Account account) { doAllTasks(); - queue.add(new DefferedTask(account) + queue.offer(new DefferedTask(account) { @Override public void run() @@ -135,7 +132,6 @@ protected Connection getNewConnection() @Override public void getConfigDefaults(ConfigurationSection section) { - section.addDefault("saving-granularity", defaultGranularity); section.addDefault("connection.database", "localhost:3306/minecraft"); section.addDefault("connection.username", "user"); section.addDefault("connection.password", "pass"); @@ -155,28 +151,22 @@ private ConfigurationSection getSection(ConfigurationSection parent, String chil return child; } @Override - protected String[] getQueriesForSaveAccount(Account account) + protected String getSaveAccountQuery(Account account) { final String strName = account.getName(); final String strBlnc = String.valueOf(account.getMoney()); if(account.getUUID() != null) { final String struuid = account.getUUID().toString(); - return new String[] - { - "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsUUID + "`, `" + columnAccountsMoney + "`) " - + "VALUES ('" + strName + "', '" + struuid + "', '" + strBlnc + "') ON DUPLICATE KEY UPDATE " - + "`" + columnAccountsUser + "` = VALUES(`" + columnAccountsUser + "`), " - + "`" + columnAccountsUUID + "` = VALUES(`" + columnAccountsUUID + "`), " - + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);", - }; - } - return new String[] - { - "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsMoney + "`) " - + "VALUES ('" + strName + "', '" + strBlnc + "') ON DUPLICATE KEY UPDATE " + return "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsUUID + "`, `" + columnAccountsMoney + "`) " + + "VALUES ('" + strName + "', '" + struuid + "', '" + strBlnc + "') ON DUPLICATE KEY UPDATE " + "`" + columnAccountsUser + "` = VALUES(`" + columnAccountsUser + "`), " - + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);", - }; + + "`" + columnAccountsUUID + "` = VALUES(`" + columnAccountsUUID + "`), " + + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);"; + } + return "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsMoney + "`) " + + "VALUES ('" + strName + "', '" + strBlnc + "') ON DUPLICATE KEY UPDATE " + + "`" + columnAccountsUser + "` = VALUES(`" + columnAccountsUser + "`), " + + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);"; } } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java b/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java index 4f1fd49..3cc8433 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/SQLiteDB.java @@ -41,23 +41,17 @@ public void getConfigDefaults(ConfigurationSection section) { } @Override - protected String[] getQueriesForSaveAccount(Account account) + protected String getSaveAccountQuery(Account account) { final String strName = account.getName(); final String strBlnc = String.valueOf(account.getMoney()); if(account.getUUID() != null) { final String struuid = account.getUUID().toString(); - return new String[] - { - "INSERT OR REPLACE INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsUUID + "`, `" + columnAccountsMoney + "`) " - + "VALUES ('" + strName + "', '" + struuid + "', '" + strBlnc + "');", - }; + return "INSERT OR REPLACE INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsUUID + "`, `" + columnAccountsMoney + "`) " + + "VALUES ('" + strName + "', '" + struuid + "', '" + strBlnc + "');"; } - return new String[] - { - "INSERT OR REPLACE INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsMoney + "`) " - + "VALUES ('" + strName + "', '" + strBlnc + "');", - }; + return "INSERT OR REPLACE INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsMoney + "`) " + + "VALUES ('" + strName + "', '" + strBlnc + "');"; } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 3021813..793f64a 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -16,7 +16,6 @@ settings: database-type: sqlite sqlite: {} mysql: - saving-granularity: 30000 connection: database: localhost:3306/minecraft username: user From bc5d7662adb5ccc1dfb1dbac1b79ca600753a41b Mon Sep 17 00:00:00 2001 From: SimSonic Date: Wed, 20 May 2015 11:10:40 +0700 Subject: [PATCH 24/40] Add /fe debug command to toggle a lot of debugging info in console. Debug state is saved between server restarts. --- .../java/com/niccholaspage/Fe/API/FeAPI.java | 21 +++++ .../Fe/Commands/DebugCommand.java | 24 ++++++ .../Fe/Commands/MigrateCommand.java | 2 +- .../java/com/niccholaspage/Fe/FeCommands.java | 2 + .../java/com/niccholaspage/Fe/FeSettings.java | 9 +++ .../java/com/niccholaspage/Fe/Phrases.java | 2 + .../com/niccholaspage/Fe/VaultHandler.java | 78 ++++++++++--------- 7 files changed, 100 insertions(+), 38 deletions(-) create mode 100644 src/main/java/com/niccholaspage/Fe/Commands/DebugCommand.java diff --git a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java index 83b6238..357ea2f 100644 --- a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java +++ b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java @@ -152,4 +152,25 @@ public String format(Account account) { return format(account.getMoney()); } + public void printDebugStackTrace() + { + if(plugin.settings.debug()) + { + final String prefix = "[" + plugin.getName() + "]"; + final StringBuilder sb = new StringBuilder(prefix); + sb.append("[DEBUG] An API method was invoked from the path:").append(System.lineSeparator()); + for(StackTraceElement ste : Thread.currentThread().getStackTrace()) + { + final String className = ste.getClassName(); + if(!className.equals(FeAPI.class.getName()) + && !className.equals(Thread.class.getName()) + ) + sb.append(prefix).append("[DEBUG] ") + .append(className.startsWith(Fe.class.getPackage().getName()) ? ChatColor.GREEN : ChatColor.GRAY) + .append(ste.toString()) + .append(System.lineSeparator()); + } + plugin.getServer().getConsoleSender().sendMessage(sb.toString()); + } + } } diff --git a/src/main/java/com/niccholaspage/Fe/Commands/DebugCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/DebugCommand.java new file mode 100644 index 0000000..8742b4f --- /dev/null +++ b/src/main/java/com/niccholaspage/Fe/Commands/DebugCommand.java @@ -0,0 +1,24 @@ +package com.niccholaspage.Fe.Commands; + +import com.niccholaspage.Fe.API.CommandType; +import com.niccholaspage.Fe.API.SubCommand; +import com.niccholaspage.Fe.Fe; +import com.niccholaspage.Fe.Phrases; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; + +public class DebugCommand extends SubCommand +{ + public DebugCommand(Fe plugin) + { + super(plugin, "debug", "fe.debug", "debug", Phrases.COMMAND_DEBUG, CommandType.CONSOLE); + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { + final boolean enable = !plugin.settings.debug(); + plugin.settings.debug(enable); + Phrases.DEBUG_STATUS.sendWithPrefix(sender, enable ? "enabled" : "disabled"); + return true; + } +} diff --git a/src/main/java/com/niccholaspage/Fe/Commands/MigrateCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/MigrateCommand.java index 4c27688..4d959a2 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/MigrateCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/MigrateCommand.java @@ -20,7 +20,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, { if(args != null && args.length > 0 && args[0] != null && !"".equals(args[0])) { - final String targetName = args[0].toString().replace(" ", "").toLowerCase(); + final String targetName = args[0].replace(" ", "").toLowerCase(); final Database source = plugin.getDB(); final Database target = plugin.findDB(targetName); if(target != null) diff --git a/src/main/java/com/niccholaspage/Fe/FeCommands.java b/src/main/java/com/niccholaspage/Fe/FeCommands.java index 99eb536..1a6b951 100644 --- a/src/main/java/com/niccholaspage/Fe/FeCommands.java +++ b/src/main/java/com/niccholaspage/Fe/FeCommands.java @@ -5,6 +5,7 @@ import com.niccholaspage.Fe.Commands.BalanceCommand; import com.niccholaspage.Fe.Commands.CleanCommand; import com.niccholaspage.Fe.Commands.CreateCommand; +import com.niccholaspage.Fe.Commands.DebugCommand; import com.niccholaspage.Fe.Commands.DeductCommand; import com.niccholaspage.Fe.Commands.GrantCommand; import com.niccholaspage.Fe.Commands.HelpCommand; @@ -36,6 +37,7 @@ public FeCommands(Fe plugin) commands.add(new GrantCommand(plugin)); commands.add(new DeductCommand(plugin)); commands.add(new CleanCommand(plugin)); + commands.add(new DebugCommand(plugin)); commands.add(new MigrateCommand(plugin)); commands.add(new ReloadCommand(plugin)); } diff --git a/src/main/java/com/niccholaspage/Fe/FeSettings.java b/src/main/java/com/niccholaspage/Fe/FeSettings.java index cbd7079..56a1291 100644 --- a/src/main/java/com/niccholaspage/Fe/FeSettings.java +++ b/src/main/java/com/niccholaspage/Fe/FeSettings.java @@ -51,6 +51,15 @@ public void onEnable() break; } } + public boolean debug() + { + return fe.getConfig().getBoolean("settings.debug", false); + } + public void debug(boolean enable) + { + fe.getConfig().set("settings.debug", enable); + fe.saveConfig(); + } public double getDefaultHoldings() { return fe.getConfig().getDouble("settings.new-player-holdings", 10.00); diff --git a/src/main/java/com/niccholaspage/Fe/Phrases.java b/src/main/java/com/niccholaspage/Fe/Phrases.java index 5ec13c3..2c3b132 100644 --- a/src/main/java/com/niccholaspage/Fe/Phrases.java +++ b/src/main/java/com/niccholaspage/Fe/Phrases.java @@ -47,6 +47,7 @@ public enum Phrases SECONDARY_COLOR (ChatColor.GRAY.toString()), TERTIARY_COLOR (ChatColor.DARK_GRAY.toString()), ARGUMENT_COLOR (ChatColor.YELLOW.toString()), + DEBUG_STATUS ("Debugging is $1 now."), COMMAND_BALANCE ("Checks your balance", true), COMMAND_SEND ("Sends another player money", true), COMMAND_TOP ("Checks the top 5 richest players", true), @@ -57,6 +58,7 @@ public enum Phrases COMMAND_GRANT ("Grants a player money", true), COMMAND_DEDUCT ("Deducts money from a player", true), COMMAND_CLEAN ("Cleans the accounts with default balance", true), + COMMAND_DEBUG ("Toggles console debug info", true), COMMAND_RELOAD ("Reloads the config", true), COMMAND_MIGRATE ("Migrates from default database into specified one", true), ; diff --git a/src/main/java/com/niccholaspage/Fe/VaultHandler.java b/src/main/java/com/niccholaspage/Fe/VaultHandler.java index af18845..5f0caf0 100644 --- a/src/main/java/com/niccholaspage/Fe/VaultHandler.java +++ b/src/main/java/com/niccholaspage/Fe/VaultHandler.java @@ -15,14 +15,14 @@ import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.plugin.Plugin; -public class VaultHandler implements Economy +public class VaultHandler implements Economy, Listener { private final String name = "Fe"; private Fe plugin; public VaultHandler(Fe plugin) { this.plugin = plugin; - plugin.getServer().getPluginManager().registerEvents(new EconomyServerListener(), plugin); + plugin.getServer().getPluginManager().registerEvents((Listener)this, plugin); plugin.log("Vault support enabled."); } @Override @@ -53,6 +53,7 @@ public String currencyNamePlural() @Override public double getBalance(String playerName) { + plugin.api.printDebugStackTrace(); final Account account = plugin.getDB().getAccount(playerName); return account != null ? account.getMoney() @@ -61,6 +62,7 @@ public double getBalance(String playerName) @Override public double getBalance(OfflinePlayer offlinePlayer) { + plugin.api.printDebugStackTrace(); final Account account = plugin.getDB().getAccount(offlinePlayer.getUniqueId()); return account != null ? account.getMoney() @@ -80,10 +82,11 @@ public EconomyResponse withdrawPlayer(OfflinePlayer offlinePlayer, double amount } private EconomyResponse withdraw(Account account, double amount) { - if(amount < 0) - return new EconomyResponse(0, 0, ResponseType.FAILURE, "Cannot withdraw negative funds"); + plugin.api.printDebugStackTrace(); + if(amount < 0.0) + return new EconomyResponse(0.0, 0.0, ResponseType.FAILURE, "Cannot withdraw negative funds"); if(account == null) - return new EconomyResponse(0, 0, ResponseType.FAILURE, "Account doesn't exist"); + return new EconomyResponse(0.0, 0.0, ResponseType.FAILURE, "Account doesn't exist"); if(account.has(amount)) { account.withdraw(amount); @@ -105,10 +108,11 @@ public EconomyResponse depositPlayer(OfflinePlayer offlinePlayer, double amount) } private EconomyResponse deposit(Account account, double amount) { - if(amount < 0) - return new EconomyResponse(0, 0, ResponseType.FAILURE, "Cannot deposit negative funds"); + plugin.api.printDebugStackTrace(); + if(amount < 0.0) + return new EconomyResponse(0.0, 0.0, ResponseType.FAILURE, "Cannot deposit negative funds"); if(account == null) - return new EconomyResponse(0, 0, ResponseType.FAILURE, "Account doesn't exist"); + return new EconomyResponse(0.0, 0.0, ResponseType.FAILURE, "Account doesn't exist"); account.deposit(amount); return new EconomyResponse(amount, account.getMoney(), ResponseType.SUCCESS, ""); } @@ -125,57 +129,57 @@ public boolean has(OfflinePlayer offlinePlayer, double amount) @Override public EconomyResponse createBank(String name, String player) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } @Override public EconomyResponse createBank(String name, OfflinePlayer offlinePlayer) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } @Override public EconomyResponse deleteBank(String name) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } @Override public EconomyResponse bankHas(String name, double amount) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } @Override public EconomyResponse bankWithdraw(String name, double amount) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } @Override public EconomyResponse bankDeposit(String name, double amount) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } @Override public EconomyResponse isBankOwner(String name, String playerName) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } @Override public EconomyResponse isBankOwner(String name, OfflinePlayer offlinePlayer) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } @Override public EconomyResponse isBankMember(String name, String playerName) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } @Override public EconomyResponse isBankMember(String name, OfflinePlayer offlinePlayer) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } @Override public EconomyResponse bankBalance(String name) { - return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); + return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } @Override public List getBanks() @@ -190,21 +194,25 @@ public boolean hasBankSupport() @Override public boolean hasAccount(String playerName) { + plugin.api.printDebugStackTrace(); return plugin.api.accountExists(playerName); } @Override public boolean hasAccount(OfflinePlayer offlinePlayer) { + plugin.api.printDebugStackTrace(); return plugin.api.accountExists(offlinePlayer.getUniqueId()); } @Override public boolean createPlayerAccount(String playerName) { + plugin.api.printDebugStackTrace(); return plugin.getDB().createAccount(playerName) != null; } @Override public boolean createPlayerAccount(OfflinePlayer offlinePlayer) { + plugin.api.printDebugStackTrace(); Account account = plugin.getDB().createAccount(offlinePlayer.getUniqueId()); account.setName(offlinePlayer.getName()); plugin.getDB().saveAccount(account); @@ -275,30 +283,26 @@ public boolean createPlayerAccount(OfflinePlayer offlinePlayer, String worldName { return createPlayerAccount(offlinePlayer); } - public class EconomyServerListener implements Listener + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginEnable(PluginEnableEvent event) { - @EventHandler(priority = EventPriority.MONITOR) - public void onPluginEnable(PluginEnableEvent event) + if(plugin == null) { - if(plugin == null) + final Plugin fe = Bukkit.getServer().getPluginManager().getPlugin("Fe"); + if(fe != null && fe.isEnabled()) { - Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("Fe"); - if(plugin != null && plugin.isEnabled()) - { - VaultHandler.this.plugin = (Fe)plugin; - VaultHandler.this.plugin.log("Vault support enabled."); - } + plugin = (Fe)fe; + plugin.log("Vault support enabled."); } } - @EventHandler(priority = EventPriority.MONITOR) - public void onPluginDisable(PluginDisableEvent event) + } + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginDisable(PluginDisableEvent event) + { + if(plugin != null && event.getPlugin().getDescription().getName().equals(name)) { - if(plugin != null) - if(event.getPlugin().getDescription().getName().equals(name)) - { - plugin = null; - Bukkit.getLogger().info("[Fe] Vault support disabled."); - } + plugin = null; + Bukkit.getLogger().info("[Fe] Vault support disabled."); } } } From 3291c41be7cbd5c04d1e9225da4a536216eab5d8 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Wed, 20 May 2015 12:33:18 +0700 Subject: [PATCH 25/40] Split Account class into Account interface and AccountInt implementation. --- .../com/niccholaspage/Fe/API/Account.java | 95 ++-------------- .../java/com/niccholaspage/Fe/API/FeAPI.java | 1 + .../Fe/Databases/AccountInt.java | 101 ++++++++++++++++++ .../Fe/Databases/DatabaseGeneric.java | 15 ++- .../Fe/Databases/DatabaseSQL.java | 2 +- .../niccholaspage/Fe/Databases/MySQLDB.java | 7 +- src/main/java/com/niccholaspage/Fe/Fe.java | 1 + .../java/com/niccholaspage/Fe/FeListener.java | 8 +- .../com/niccholaspage/Fe/VaultHandler.java | 1 + 9 files changed, 130 insertions(+), 101 deletions(-) create mode 100644 src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java diff --git a/src/main/java/com/niccholaspage/Fe/API/Account.java b/src/main/java/com/niccholaspage/Fe/API/Account.java index 3c3fda0..2db50a4 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Account.java +++ b/src/main/java/com/niccholaspage/Fe/API/Account.java @@ -1,91 +1,16 @@ package com.niccholaspage.Fe.API; -import com.niccholaspage.Fe.Databases.DatabaseGeneric; -import com.niccholaspage.Fe.Fe; import java.util.UUID; -import org.bukkit.entity.Player; -public class Account implements Comparable +public interface Account extends Comparable { - private final Fe plugin; - private final Database database; - private final UUID uuid; - private String name; - private double money; - private Player player; - public Account(Fe plugin, DatabaseGeneric database, String name, UUID uuid, double money) - { - this.plugin = plugin; - this.database = database; - this.name = name; - this.uuid = uuid; - this.money = money; - } - public String getName() - { - return name; - } - public void setName(String name) - { - database.onRenameAccount(this, this.name, name); - this.name = name; - database.saveAccount(this); - } - public UUID getUUID() - { - return uuid; - } - public double getMoney() - { - return money; - } - public void setMoney(double money) - { - if(money < 0 && !plugin.api.isCurrencyNegative()) - money = 0; - money = plugin.api.getMoneyRounded(money); - final double maxHoldings = plugin.api.getMaxHoldings(); - if(plugin.api.getMaxHoldings() > 0.0 && money > maxHoldings) - money = plugin.api.getMoneyRounded(maxHoldings); - this.money = money; - database.saveAccount(this); - } - public void withdraw(double amount) - { - setMoney(money - amount); - } - public void deposit(double amount) - { - setMoney(money + amount); - } - public boolean has(double amount) - { - return getMoney() >= amount; - } - public boolean canReceive(double amount) - { - final double maxHoldings = plugin.api.getMaxHoldings(); - return maxHoldings < 0.0 || getMoney() + amount <= maxHoldings; - } - public boolean isConnected() - { - return player != null; - } - public Player getPlayer() - { - return player; - } - public void connected(Player player) - { - this.player = player; - } - public void disconnected() - { - this.player = null; - } - @Override - public int compareTo(Account other) - { - return (int)(other.getMoney() - getMoney()); - } + public UUID getUUID(); + public String getName(); + public void setName(String name); + public double getMoney(); + public void setMoney(double money); + public boolean has(double amount); + public boolean canReceive(double amount); + public void deposit(double amount); + public void withdraw(double amount); } diff --git a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java index 357ea2f..51ee8af 100644 --- a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java +++ b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java @@ -1,5 +1,6 @@ package com.niccholaspage.Fe.API; +import com.niccholaspage.Fe.Databases.AccountInt; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrases; import java.text.DecimalFormat; diff --git a/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java b/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java new file mode 100644 index 0000000..10136e3 --- /dev/null +++ b/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java @@ -0,0 +1,101 @@ +package com.niccholaspage.Fe.Databases; + +import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.API.Database; +import com.niccholaspage.Fe.Fe; +import java.util.UUID; +import org.bukkit.entity.Player; + +public class AccountInt implements Account +{ + private final Fe plugin; + private final Database database; + protected final UUID uuid; + protected String name; + protected double money; + private Player player; + public AccountInt(Fe plugin, DatabaseGeneric database, String name, UUID uuid, double money) + { + this.plugin = plugin; + this.database = database; + this.name = name; + this.uuid = uuid; + this.money = money; + } + @Override + public UUID getUUID() + { + return uuid; + } + @Override + public String getName() + { + return name; + } + @Override + public void setName(String name) + { + database.onRenameAccount(this, this.name, name); + this.name = name; + database.saveAccount(this); + } + @Override + public double getMoney() + { + return money; + } + @Override + public void setMoney(double money) + { + if(money < 0 && !plugin.api.isCurrencyNegative()) + money = 0; + money = plugin.api.getMoneyRounded(money); + final double maxHoldings = plugin.api.getMaxHoldings(); + if(plugin.api.getMaxHoldings() > 0.0 && money > maxHoldings) + money = plugin.api.getMoneyRounded(maxHoldings); + this.money = money; + database.saveAccount(this); + } + @Override + public void withdraw(double amount) + { + setMoney(money - amount); + } + @Override + public void deposit(double amount) + { + setMoney(money + amount); + } + @Override + public boolean has(double amount) + { + return getMoney() >= amount; + } + @Override + public boolean canReceive(double amount) + { + final double maxHoldings = plugin.api.getMaxHoldings(); + return maxHoldings < 0.0 || getMoney() + amount <= maxHoldings; + } + public boolean isConnected() + { + return player != null; + } + public Player getPlayer() + { + return player; + } + public void connected(Player player) + { + this.player = player; + } + public void disconnected() + { + this.player = null; + } + @Override + public int compareTo(Account other) + { + return (int)(other.getMoney() - getMoney()); + } +} diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java index c8eb3eb..5459072 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java @@ -48,7 +48,7 @@ public List getAccounts() @Override public List getTopAccounts(int size) { - final List topList = new LinkedList<>(new LinkedHashSet<>(accounts.values())); + final LinkedList topList = new LinkedList<>(new LinkedHashSet<>(accounts.values())); Collections.sort(topList); return topList.subList(0, Math.min(size, topList.size())); } @@ -68,7 +68,7 @@ public Account createAccount(UUID uuid) final Account exist = accounts.get(uuid.toString()); if(exist != null) return exist; - final Account account = new Account(plugin, this, null, uuid, plugin.api.getDefaultHoldings()); + final AccountInt account = new AccountInt(plugin, this, null, uuid, plugin.api.getDefaultHoldings()); accounts.put(uuid.toString(), account); saveAccount(account); return account; @@ -79,7 +79,7 @@ public Account createAccount(String name) final Account exist = accounts.get(name); if(exist != null) return exist; - final Account account = new Account(plugin, this, name, null, plugin.api.getDefaultHoldings()); + final AccountInt account = new AccountInt(plugin, this, name, null, plugin.api.getDefaultHoldings()); accounts.put(name, account); saveAccount(account); return account; @@ -93,9 +93,8 @@ public Account createAccount(UUID uuid, String name) final Account existByName = accounts.get(name); if(existByName != null) return existByName; - final Account account = new Account(plugin, this, name, uuid, plugin.api.getDefaultHoldings()); - if(uuid != null) - accounts.put(uuid.toString(), account); + final Account account = new AccountInt(plugin, this, name, uuid, plugin.api.getDefaultHoldings()); + accounts.put(uuid.toString(), account); if(name != null && !"".equals(name)) accounts.put(name, account); saveAccount(account); @@ -135,10 +134,10 @@ protected boolean convertToUUID() plugin.log(Phrases.STARTING_UUID_CONVERSION); List accounts = loadAccounts(); Map accountMonies = new HashMap<>(); - for(Account account : accounts) + for(AccountInt account : accounts) accountMonies.put(account.getName(), account.getMoney()); List names = new ArrayList<>(); - for(Account account : accounts) + for(AccountInt account : accounts) names.add(account.getName()); try { diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java index 824d71a..9f5936d 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java @@ -72,7 +72,7 @@ private Account fromResultSet(ResultSet set) throws SQLException { final String name = set.getString(columnAccountsUser); final String uuid = set.getString(columnAccountsUUID); - final Account account = new Account(plugin, this, + final AccountInt account = new AccountInt(plugin, this, name, uuid != null ? UUID.fromString(uuid) : null, set.getDouble(columnAccountsMoney)); if(name != null && !"".equals(name)) diff --git a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index 501bd30..0d0922e 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -50,6 +50,7 @@ public void close() } catch(InterruptedException e) { } } + processActiveTasks(); super.close(); } @Override @@ -77,7 +78,7 @@ public void run() @Override public void reloadAccount(Account account) { - doAllTasks(); + processActiveTasks(); queue.offer(new DefferedTask(account) { @Override @@ -90,7 +91,7 @@ public void run() @Override public void removeAccount(Account account) { - doAllTasks(); + processActiveTasks(); queue.offer(new DefferedTask(account) { @Override @@ -100,7 +101,7 @@ public void run() } }); } - private synchronized int doAllTasks() + private synchronized int processActiveTasks() { int result = 0; for(DefferedTask task = queue.poll(); task != null; task = queue.poll()) diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index 40fc578..28047a8 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -1,6 +1,7 @@ package com.niccholaspage.Fe; import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.Databases.AccountInt; import com.niccholaspage.Fe.API.Database; import com.niccholaspage.Fe.API.FeAPI; import com.niccholaspage.Fe.Databases.MySQLDB; diff --git a/src/main/java/com/niccholaspage/Fe/FeListener.java b/src/main/java/com/niccholaspage/Fe/FeListener.java index 5b3ee4b..a642089 100644 --- a/src/main/java/com/niccholaspage/Fe/FeListener.java +++ b/src/main/java/com/niccholaspage/Fe/FeListener.java @@ -1,6 +1,6 @@ package com.niccholaspage.Fe; -import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.Databases.AccountInt; import com.niccholaspage.Fe.API.Database; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -22,7 +22,7 @@ public void onPlayerLogin(PlayerLoginEvent event) { final Player player = event.getPlayer(); final Database database = plugin.getDB(); - final Account account = database.createAccount(player.getUniqueId()); + final AccountInt account = (AccountInt)database.createAccount(player.getUniqueId()); database.reloadAccount(account); account.setName(player.getName()); account.connected(player); @@ -30,13 +30,13 @@ public void onPlayerLogin(PlayerLoginEvent event) @EventHandler public void onPlayerQuit(PlayerKickEvent event) { - final Account account = plugin.getDB().getAccount(event.getPlayer().getUniqueId()); + final AccountInt account = (AccountInt)plugin.getDB().getAccount(event.getPlayer().getUniqueId()); account.disconnected(); } @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { - final Account account = plugin.getDB().getAccount(event.getPlayer().getUniqueId()); + final AccountInt account = (AccountInt)plugin.getDB().getAccount(event.getPlayer().getUniqueId()); account.disconnected(); } } diff --git a/src/main/java/com/niccholaspage/Fe/VaultHandler.java b/src/main/java/com/niccholaspage/Fe/VaultHandler.java index 5f0caf0..e835ec3 100644 --- a/src/main/java/com/niccholaspage/Fe/VaultHandler.java +++ b/src/main/java/com/niccholaspage/Fe/VaultHandler.java @@ -1,6 +1,7 @@ package com.niccholaspage.Fe; import com.niccholaspage.Fe.API.Account; +import com.niccholaspage.Fe.Databases.AccountInt; import java.util.ArrayList; import java.util.List; import net.milkbowl.vault.economy.Economy; From e29dccec64abfc1de178a3c7b8e19358c5a87823 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Wed, 20 May 2015 16:50:24 +0700 Subject: [PATCH 26/40] Add new option for mysql database: maximum-consistency. When enabled it means that Account money should be reread from database on every access from API/Vault, even for reading. --- .../java/com/niccholaspage/Fe/API/FeAPI.java | 1 - .../Fe/Databases/AccountInt.java | 12 ++++----- .../Fe/Databases/DatabaseSQL.java | 13 ++++++++- .../niccholaspage/Fe/Databases/MySQLDB.java | 27 ++++++++++++++++--- src/main/java/com/niccholaspage/Fe/Fe.java | 1 - .../com/niccholaspage/Fe/VaultHandler.java | 1 - src/main/resources/config.yml | 1 + 7 files changed, 43 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java index 51ee8af..357ea2f 100644 --- a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java +++ b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java @@ -1,6 +1,5 @@ package com.niccholaspage.Fe.API; -import com.niccholaspage.Fe.Databases.AccountInt; import com.niccholaspage.Fe.Fe; import com.niccholaspage.Fe.Phrases; import java.text.DecimalFormat; diff --git a/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java b/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java index 10136e3..e2a63fb 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java @@ -10,7 +10,7 @@ public class AccountInt implements Account { private final Fe plugin; private final Database database; - protected final UUID uuid; + protected UUID uuid; protected String name; protected double money; private Player player; @@ -77,6 +77,11 @@ public boolean canReceive(double amount) final double maxHoldings = plugin.api.getMaxHoldings(); return maxHoldings < 0.0 || getMoney() + amount <= maxHoldings; } + @Override + public int compareTo(Account other) + { + return (int)(other.getMoney() - getMoney()); + } public boolean isConnected() { return player != null; @@ -93,9 +98,4 @@ public void disconnected() { this.player = null; } - @Override - public int compareTo(Account other) - { - return (int)(other.getMoney() - getMoney()); - } } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java index 9f5936d..a9674e0 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java @@ -104,7 +104,18 @@ public void reloadAccount(Account account) try(ResultSet set = connection.createStatement().executeQuery(query)) { if(set.next()) - fromResultSet(set); + { + final AccountInt internal = (AccountInt)account; + final String dbuuid = set.getString(columnAccountsUUID); + final String dbname = set.getString(columnAccountsUser); + internal.uuid = dbuuid != null ? UUID.fromString(dbuuid) : internal.uuid; + internal.name = dbname != null ? dbname : internal.name; + internal.money = set.getDouble(columnAccountsMoney); + if(internal.name != null && !"".equals(internal.name)) + accounts.put(dbname, account); + if(internal.uuid != null) + accounts.put(internal.uuid.toString(), account); + } } catch(SQLException ex) { } } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index 0d0922e..691b53a 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -5,6 +5,7 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; +import java.util.UUID; import java.util.concurrent.LinkedBlockingQueue; import org.bukkit.configuration.ConfigurationSection; @@ -12,6 +13,7 @@ public class MySQLDB extends DatabaseSQL implements Runnable { private final LinkedBlockingQueue queue = new LinkedBlockingQueue<>(); private Thread dispatcher; + private boolean maximumConsistency = true; public MySQLDB(Fe plugin) { super(plugin, true); @@ -35,6 +37,7 @@ public boolean initialize() dispatcher.start(); return true; } + maximumConsistency = getConfigSection().getBoolean("maximum-consistency"); return false; } @Override @@ -76,6 +79,22 @@ public void run() }); } @Override + public Account getAccount(UUID uuid) + { + final Account account = super.getAccount(uuid); + if(maximumConsistency) + super.reloadAccount(account); + return account; + } + @Override + public Account getAccount(String name) + { + final Account account = super.getAccount(name); + if(maximumConsistency) + super.reloadAccount(account); + return account; + } + @Override public void reloadAccount(Account account) { processActiveTasks(); @@ -133,9 +152,6 @@ protected Connection getNewConnection() @Override public void getConfigDefaults(ConfigurationSection section) { - section.addDefault("connection.database", "localhost:3306/minecraft"); - section.addDefault("connection.username", "user"); - section.addDefault("connection.password", "pass"); final ConfigurationSection tables = getSection(section, "tables"); tables.addDefault("accounts", "fe_accounts"); final ConfigurationSection columns = getSection(section, "columns"); @@ -143,6 +159,11 @@ public void getConfigDefaults(ConfigurationSection section) columnsAccounts.addDefault("username", "name"); columnsAccounts.addDefault("money", "money"); columnsAccounts.addDefault("uuid", "uuid"); + final ConfigurationSection connection = getSection(section, "connection"); + connection.addDefault("database", "localhost:3306/minecraft"); + connection.addDefault("username", "user"); + connection.addDefault("password", "pass"); + section.addDefault("maximum-consistency", true); } private ConfigurationSection getSection(ConfigurationSection parent, String childName) { diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index 28047a8..40fc578 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -1,7 +1,6 @@ package com.niccholaspage.Fe; import com.niccholaspage.Fe.API.Account; -import com.niccholaspage.Fe.Databases.AccountInt; import com.niccholaspage.Fe.API.Database; import com.niccholaspage.Fe.API.FeAPI; import com.niccholaspage.Fe.Databases.MySQLDB; diff --git a/src/main/java/com/niccholaspage/Fe/VaultHandler.java b/src/main/java/com/niccholaspage/Fe/VaultHandler.java index e835ec3..5f0caf0 100644 --- a/src/main/java/com/niccholaspage/Fe/VaultHandler.java +++ b/src/main/java/com/niccholaspage/Fe/VaultHandler.java @@ -1,7 +1,6 @@ package com.niccholaspage.Fe; import com.niccholaspage.Fe.API.Account; -import com.niccholaspage.Fe.Databases.AccountInt; import java.util.ArrayList; import java.util.List; import net.milkbowl.vault.economy.Economy; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 793f64a..5e42d2d 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -16,6 +16,7 @@ settings: database-type: sqlite sqlite: {} mysql: + maximum-consistency: true connection: database: localhost:3306/minecraft username: user From 48cebe05417a1af104dfab19157e5721655aa971 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Wed, 20 May 2015 18:56:51 +0700 Subject: [PATCH 27/40] maximum-consistency option is working completely. --- pom.xml | 2 +- src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java | 6 +++--- src/main/java/com/niccholaspage/Fe/Fe.java | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 64e70d7..9a3118f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.niccholaspage Fe - 0.9.0 + 0.9.1 Fe diff --git a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index 691b53a..0aee172 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -31,13 +31,13 @@ public boolean isAsync() @Override public boolean initialize() { + maximumConsistency = getConfigSection().getBoolean("maximum-consistency", true); if(super.initialize()) { dispatcher = new Thread(this); dispatcher.start(); return true; } - maximumConsistency = getConfigSection().getBoolean("maximum-consistency"); return false; } @Override @@ -82,7 +82,7 @@ public void run() public Account getAccount(UUID uuid) { final Account account = super.getAccount(uuid); - if(maximumConsistency) + if(maximumConsistency && account != null) super.reloadAccount(account); return account; } @@ -90,7 +90,7 @@ public Account getAccount(UUID uuid) public Account getAccount(String name) { final Account account = super.getAccount(name); - if(maximumConsistency) + if(maximumConsistency && account != null) super.reloadAccount(account); return account; } diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index 40fc578..f29297d 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -40,6 +40,7 @@ public void onEnable() databases.add(new SQLiteDB(this)); for(Database db : databases) db.getConfigDefaults(db.getConfigSection()); + getConfig().options().copyDefaults(true); saveConfig(); if(!setupDatabase()) { From c43265641639a3288b0e5b798508ef9ece05c711 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Wed, 20 May 2015 19:57:07 +0700 Subject: [PATCH 28/40] Fix plugin.yml --- src/main/resources/plugin.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 96ec3bf..a825087 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -51,6 +51,7 @@ permissions: fe.balance.other: true fe.send: true fe.top: true + fe.help: true fe.?: true fe.admin: children: @@ -60,7 +61,9 @@ permissions: fe.grant: true fe.deduct: true fe.clean: true + fe.debug: true fe.reload: true + fe.migrate: true fe.notify: true fe.*: children: From 60aafa5553ff65a68d6d00a5c17436dc99ea088d Mon Sep 17 00:00:00 2001 From: SimSonic Date: Wed, 20 May 2015 19:06:38 +0600 Subject: [PATCH 29/40] Added URL to build server --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a965bdf..913ca70 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ Fe, the simple economy plugin ============= -Welcome to the GitHub repository for Fe! If you'd like to contribute code, you can make a pull request. \ No newline at end of file +Welcome to the GitHub repository for Fe! If you'd like to contribute code, you can make a pull request. + +Currently, build server for this fork is based here: https://ci.methuselah.ru/job/Fe-economy From 3e84df9996b8e5c3bbf48c3b4dd667ac05ebf16e Mon Sep 17 00:00:00 2001 From: SimSonic Date: Thu, 21 May 2015 12:42:41 +0700 Subject: [PATCH 30/40] Add `id` PRIMARY KEY column for accounts table. Add unique keys for uuid and name columns. --- .../Fe/Databases/DatabaseSQL.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java index a9674e0..25d52c1 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java @@ -194,6 +194,27 @@ private synchronized boolean checkConnection() } query("CREATE TABLE IF NOT EXISTS `" + tableAccounts + "` (`" + columnAccountsUser + "` VARCHAR(16) NOT NULL, `" + columnAccountsUUID + "` CHAR(36), `" + columnAccountsMoney + "` DOUBLE NOT NULL);"); query("CREATE TABLE IF NOT EXISTS `" + tableVersion + "` (`version` INT NOT NULL);"); + // Add `id` column + try + { + query("ALTER TABLE `" + tableAccounts + "` ADD COLUMN `id` INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`), ADD UNIQUE INDEX `id_UNIQUE` (`id` ASC);"); + } catch(SQLException e) { + // `id` already exists + } + // Add UNIQUE KEY for UUID + try + { + query("ALTER TABLE `" + tableAccounts + "` ADD UNIQUE INDEX `uuid_UNIQUE` (`" + columnAccountsUUID + "` ASC);"); + } catch(SQLException e) { + // `uuid_UNIQUE` already exists + } + // Add UNIQUE KEY for nickname + try + { + query("ALTER TABLE `" + tableAccounts + "` ADD UNIQUE INDEX `name_UNIQUE` (`" + columnAccountsUser + "` ASC);"); + } catch(SQLException e) { + // `name_UNIQUE` already exists + } if(newDatabase) { int version = getVersion(); From 1a700f027106e2326b87c404c36d764ed22c1a0f Mon Sep 17 00:00:00 2001 From: Stanislav Usenkov Date: Fri, 29 May 2015 19:13:14 +0600 Subject: [PATCH 31/40] Format pom.xml --- pom.xml | 200 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 100 insertions(+), 100 deletions(-) diff --git a/pom.xml b/pom.xml index 9a3118f..8eb20f3 100644 --- a/pom.xml +++ b/pom.xml @@ -1,107 +1,107 @@ - 4.0.0 - com.niccholaspage - Fe - 0.9.1 - Fe + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.niccholaspage + Fe + 0.9.1 + Fe - - UTF-8 + + UTF-8 Fe2 - + - - - spigot-repo - https://hub.spigotmc.org/nexus/content/groups/public/ - - - vault-repo - http://nexus.theyeticave.net/content/repositories/pub_releases/ - - - metrics-repo - http://repo.mcstats.org/content/repositories/public/ - - + + + spigot-repo + https://hub.spigotmc.org/nexus/content/groups/public/ + + + vault-repo + http://nexus.theyeticave.net/content/repositories/pub_releases/ + + + metrics-repo + http://repo.mcstats.org/content/repositories/public/ + + - - - org.spigotmc - spigot-api - 1.8-R0.1-SNAPSHOT - - - net.milkbowl.vault - VaultAPI - 1.5 - jar - compile - - - org.mcstats.bukkit - metrics - R8-SNAPSHOT - compile - - + + + org.spigotmc + spigot-api + 1.8-R0.1-SNAPSHOT + + + net.milkbowl.vault + VaultAPI + 1.5 + jar + compile + + + org.mcstats.bukkit + metrics + R8-SNAPSHOT + compile + + - - ${project.name}_v${project.version} - - - maven-compiler-plugin - 3.3 - - 1.7 - 1.7 - ${project.build.sourceEncoding} - - - - org.apache.maven.plugins - maven-jar-plugin - 2.6 - - - org.apache.maven.plugins - maven-shade-plugin - 2.3 - - - package - - shade - - - true - - - org.mcstats.bukkit:metrics - - - - - - - - org.apache.maven.plugins - maven-resources-plugin - 2.7 - - ${project.build.sourceEncoding} - - - - - - src/main/resources - true - - *.yml - - - - + + ${project.name}_v${project.version} + + + maven-compiler-plugin + 3.3 + + 1.7 + 1.7 + ${project.build.sourceEncoding} + + + + org.apache.maven.plugins + maven-jar-plugin + 2.6 + + + org.apache.maven.plugins + maven-shade-plugin + 2.3 + + + package + + shade + + + true + + + org.mcstats.bukkit:metrics + + + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.7 + + ${project.build.sourceEncoding} + + + + + + src/main/resources + true + + *.yml + + + + From 9e9a39778e54bdc6881c417c084a22cc3bd17eed Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 13 Jul 2015 16:20:21 +0600 Subject: [PATCH 32/40] Completely remove UUIDFetcher. Pligin discover nicknames/UUIDs from PlayerLoginEvent. --- .../Fe/Databases/DatabaseGeneric.java | 40 ------- .../com/niccholaspage/Fe/UUIDFetcher.java | 107 ------------------ 2 files changed, 147 deletions(-) delete mode 100644 src/main/java/com/niccholaspage/Fe/UUIDFetcher.java diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java index 5459072..9d9f48f 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java @@ -124,44 +124,4 @@ public void removeAccount(Account account) public abstract void cleanAccountsWithDefaultHoldings(); @Override public abstract void removeAllAccounts(); - /* - protected boolean convertToUUID() - { - if(!plugin.getServer().getOnlineMode()) - { - // Disable plugin? - } - plugin.log(Phrases.STARTING_UUID_CONVERSION); - List accounts = loadAccounts(); - Map accountMonies = new HashMap<>(); - for(AccountInt account : accounts) - accountMonies.put(account.getName(), account.getMoney()); - List names = new ArrayList<>(); - for(AccountInt account : accounts) - names.add(account.getName()); - try - { - UUIDFetcher fetcher = new UUIDFetcher(names); - Map response = fetcher.call(); - removeAllAccounts(); - for(String name : response.keySet()) - for(String accountName : new HashMap<>(accountMonies).keySet()) - if(accountName.equalsIgnoreCase(name)) - { - saveAccount(name, response.get(name).toString(), accountMonies.get(accountName)); - accountMonies.remove(accountName); - } - for(String accountName : accountMonies.keySet()) - saveAccount(accountName, null, accountMonies.get(accountName)); - } catch(Exception e) - { - System.out.println(e); - plugin.log(Phrases.UUID_CONVERSION_FAILED); - plugin.getServer().getPluginManager().disablePlugin(plugin); - return false; - } - plugin.log(Phrases.UUID_CONVERSION_SUCCEEDED); - return true; - } - */ } diff --git a/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java b/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java deleted file mode 100644 index 8e4b2af..0000000 --- a/src/main/java/com/niccholaspage/Fe/UUIDFetcher.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.niccholaspage.Fe; - -import com.google.common.collect.ImmutableList; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.Callable; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; - -public class UUIDFetcher implements Callable> -{ - private static final double PROFILES_PER_REQUEST = 100; - private static final String PROFILE_URL_ORIGINAL = "https://api.mojang.com/profiles/minecraft"; - private String PROFILE_URL = PROFILE_URL_ORIGINAL; - private final JSONParser jsonParser = new JSONParser(); - private final List names; - private final boolean rateLimiting; - public UUIDFetcher(List names, boolean rateLimiting) - { - this.names = ImmutableList.copyOf(names); - this.rateLimiting = rateLimiting; - } - public UUIDFetcher(List names) - { - this(names, true); - } - public void setNewFetchMethodURL(String newURL) - { - this.PROFILE_URL = (newURL != null && !newURL.isEmpty()) ? newURL : PROFILE_URL_ORIGINAL; - } - @Override - public Map call() throws Exception - { - Map uuidMap = new HashMap<>(); - int requests = (int)Math.ceil(names.size() / PROFILES_PER_REQUEST); - for(int i = 0; i < requests; i ++) - { - HttpURLConnection connection = createConnection(); - String body = JSONArray.toJSONString(names.subList(i * 100, Math.min((i + 1) * 100, names.size()))); - writeBody(connection, body); - JSONArray array = (JSONArray)jsonParser.parse(new InputStreamReader(connection.getInputStream())); - for(Object profile : array) - { - JSONObject jsonProfile = (JSONObject)profile; - String id = (String)jsonProfile.get("id"); - String name = (String)jsonProfile.get("name"); - UUID uuid = UUIDFetcher.getUUID(id); - uuidMap.put(name, uuid); - } - if(rateLimiting && i != requests - 1) - Thread.sleep(100L); - } - return uuidMap; - } - private static void writeBody(HttpURLConnection connection, String body) throws Exception - { - try(OutputStream stream = connection.getOutputStream()) - { - stream.write(body.getBytes()); - stream.flush(); - } - } - private HttpURLConnection createConnection() throws Exception - { - URL url = new URL(PROFILE_URL); - HttpURLConnection connection = (HttpURLConnection)url.openConnection(); - connection.setRequestMethod("POST"); - connection.setRequestProperty("Content-Type", "application/json"); - connection.setUseCaches(false); - connection.setDoInput(true); - connection.setDoOutput(true); - return connection; - } - private static UUID getUUID(String id) - { - return UUID.fromString(id.substring(0, 8) + "-" + id.substring(8, 12) + "-" + id.substring(12, 16) + "-" + id.substring(16, 20) + "-" + id.substring(20, 32)); - } - public static byte[] toBytes(UUID uuid) - { - ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16]); - byteBuffer.putLong(uuid.getMostSignificantBits()); - byteBuffer.putLong(uuid.getLeastSignificantBits()); - return byteBuffer.array(); - } - public static UUID fromBytes(byte[] array) - { - if(array.length != 16) - throw new IllegalArgumentException("Illegal byte array length: " + array.length); - ByteBuffer byteBuffer = ByteBuffer.wrap(array); - long mostSignificant = byteBuffer.getLong(); - long leastSignificant = byteBuffer.getLong(); - return new UUID(mostSignificant, leastSignificant); - } - public static UUID getUUIDOf(String name) throws Exception - { - return new UUIDFetcher(Arrays.asList(name)).call().get(name); - } -} From e97fdb3451b0ad348803b47f2837052425189242 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 13 Jul 2015 16:22:01 +0600 Subject: [PATCH 33/40] Fix errorneous method name. --- src/main/java/com/niccholaspage/Fe/FeListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/niccholaspage/Fe/FeListener.java b/src/main/java/com/niccholaspage/Fe/FeListener.java index a642089..e30b6ad 100644 --- a/src/main/java/com/niccholaspage/Fe/FeListener.java +++ b/src/main/java/com/niccholaspage/Fe/FeListener.java @@ -28,7 +28,7 @@ public void onPlayerLogin(PlayerLoginEvent event) account.connected(player); } @EventHandler - public void onPlayerQuit(PlayerKickEvent event) + public void onPlayerKick(PlayerKickEvent event) { final AccountInt account = (AccountInt)plugin.getDB().getAccount(event.getPlayer().getUniqueId()); account.disconnected(); From 4e42ff64c72845374face457215032ac3294e222 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Mon, 13 Jul 2015 16:39:01 +0600 Subject: [PATCH 34/40] 0.9.2 More output errors. --- pom.xml | 2 +- .../Fe/Databases/DatabaseSQL.java | 62 ++++++++++--------- .../niccholaspage/Fe/Databases/MySQLDB.java | 3 +- 3 files changed, 36 insertions(+), 31 deletions(-) diff --git a/pom.xml b/pom.xml index 8eb20f3..af78340 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.niccholaspage Fe - 0.9.1 + 0.9.2 Fe diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java index 25d52c1..141e86d 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java @@ -51,8 +51,8 @@ public void close() { if(connection != null) connection.close(); - } catch(SQLException e) { - System.out.println(e); + } catch(SQLException ex) { + System.err.println(ex); } } @Override @@ -63,8 +63,8 @@ public List loadAccounts() { while(set.next()) fromResultSet(set); - } catch(SQLException e) { - System.out.println(e); + } catch(SQLException ex) { + System.err.println(ex); } return new ArrayList(accounts.values()); } @@ -89,8 +89,8 @@ public void saveAccount(Account account) try { query(getSaveAccountQuery(account)); - } catch(SQLException e) { - System.out.println(e); + } catch(SQLException ex) { + System.err.println(ex); } } @Override @@ -117,6 +117,7 @@ public void reloadAccount(Account account) accounts.put(internal.uuid.toString(), account); } } catch(SQLException ex) { + System.err.println(ex); } } @Override @@ -129,8 +130,8 @@ public void removeAccount(Account account) query(account.getUUID() != null ? "DELETE FROM `" + tableAccounts + "` WHERE `" + columnAccountsUUID + "` = '" + account.getUUID().toString() + "';" : "DELETE FROM `" + tableAccounts + "` WHERE `" + columnAccountsUser + "` = '" + account.getName() + "';"); - } catch(SQLException e) { - System.out.println(e); + } catch(SQLException ex) { + System.err.println(ex); } } @Override @@ -140,8 +141,8 @@ public void cleanAccountsWithDefaultHoldings() try { query("DELETE FROM `" + tableAccounts + "` WHERE `" + columnAccountsMoney + "` = '" + plugin.api.getDefaultHoldings() + "';"); - } catch(SQLException e) { - System.out.println(e); + } catch(SQLException ex) { + System.err.println(ex); } } @Override @@ -151,8 +152,8 @@ public void removeAllAccounts() try { query("DELETE FROM `" + tableAccounts + "`;"); - } catch(SQLException e) { - System.out.println(e); + } catch(SQLException ex) { + System.err.println(ex); } } protected void setAccountTable(String accountsName) @@ -198,22 +199,28 @@ private synchronized boolean checkConnection() try { query("ALTER TABLE `" + tableAccounts + "` ADD COLUMN `id` INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`), ADD UNIQUE INDEX `id_UNIQUE` (`id` ASC);"); - } catch(SQLException e) { - // `id` already exists + } catch(SQLException ex) { + // `id` already exists? + if(!ex.getMessage().contains("already exists")) + System.err.println(ex); } // Add UNIQUE KEY for UUID try { query("ALTER TABLE `" + tableAccounts + "` ADD UNIQUE INDEX `uuid_UNIQUE` (`" + columnAccountsUUID + "` ASC);"); - } catch(SQLException e) { - // `uuid_UNIQUE` already exists + } catch(SQLException ex) { + // `uuid_UNIQUE` already exists? + if(!ex.getMessage().contains("already exists")) + System.err.println(ex); } // Add UNIQUE KEY for nickname try { query("ALTER TABLE `" + tableAccounts + "` ADD UNIQUE INDEX `name_UNIQUE` (`" + columnAccountsUser + "` ASC);"); - } catch(SQLException e) { - // `name_UNIQUE` already exists + } catch(SQLException ex) { + // `name_UNIQUE` already exists? + if(!ex.getMessage().contains("already exists")) + System.err.println(ex); } if(newDatabase) { @@ -228,19 +235,16 @@ private synchronized boolean checkConnection() try { query("ALTER TABLE `" + tableAccounts + "` ADD `" + columnAccountsUUID + "` CHAR(36);"); - } catch(Exception e) { + } catch(SQLException ex) { + System.err.println(ex); } - /* - if(!convertToUUID()) - return false; - */ setVersion(1); } } else setVersion(1); } - } catch(SQLException e) { - System.out.println(e); + } catch(SQLException ex) { + System.err.println(ex); return false; } return true; @@ -258,8 +262,8 @@ private int getVersion() if(set.next()) version = set.getInt("version"); return version; - } catch(Exception e) { - System.out.println(e); + } catch(SQLException ex) { + System.err.println(ex); return version; } } @@ -270,8 +274,8 @@ private void setVersion(int version) { query("DELETE FROM `" + tableVersion + "`;"); query("INSERT INTO `" + tableVersion + "` (`version`) VALUES ('" + version + "');"); - } catch(SQLException e) { - System.out.println(e); + } catch(SQLException ex) { + System.err.println(ex); } } } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index 0aee172..2cf7e86 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -145,7 +145,8 @@ protected Connection getNewConnection() "jdbc:mysql://" + config.getString("connection.database"), config.getString("connection.username"), config.getString("connection.password")); - } catch(ClassNotFoundException | SQLException e) { + } catch(ClassNotFoundException | SQLException ex) { + System.err.println(ex); return null; } } From 8d32ca749edea4cf2e0e3c88d2f08a7bcbf9ae5e Mon Sep 17 00:00:00 2001 From: SimSonic Date: Thu, 16 Jul 2015 15:12:09 +0600 Subject: [PATCH 35/40] Fix money dupe. --- pom.xml | 2 +- .../java/com/niccholaspage/Fe/Commands/SendCommand.java | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index af78340..1d2541e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.niccholaspage Fe - 0.9.2 + 0.9.3 Fe diff --git a/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java index 479681a..6c06888 100644 --- a/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java +++ b/src/main/java/com/niccholaspage/Fe/Commands/SendCommand.java @@ -46,9 +46,14 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, Phrases.MAX_BALANCE_REACHED.sendWithPrefix(sender, receiver.getName()); return true; } - String formattedMoney = plugin.api.format(money); + if(account.equals(receiver)) + { + Phrases.YOU_HAVE.sendWithPrefix(sender, plugin.api.format(account)); + return true; + } account.withdraw(money); receiver.deposit(money); + String formattedMoney = plugin.api.format(money); Phrases.MONEY_SENT.sendWithPrefix(sender, formattedMoney, receiver.getName()); Player receiverPlayer = plugin.getServer().getPlayerExact(receiver.getName()); if(receiverPlayer != null) From e0f3f3a58e3a34c6c4fbced0a13f76cc684422b1 Mon Sep 17 00:00:00 2001 From: ryush00 Date: Thu, 30 Jul 2015 12:51:55 +0900 Subject: [PATCH 36/40] Fix null when NameChange and getAccount. --- .../java/com/niccholaspage/Fe/API/Account.java | 2 ++ .../niccholaspage/Fe/Databases/AccountInt.java | 18 ++++++++++++++---- .../niccholaspage/Fe/Databases/MySQLDB.java | 18 +++++++++++++++--- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/niccholaspage/Fe/API/Account.java b/src/main/java/com/niccholaspage/Fe/API/Account.java index 2db50a4..1d51758 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Account.java +++ b/src/main/java/com/niccholaspage/Fe/API/Account.java @@ -6,7 +6,9 @@ public interface Account extends Comparable { public UUID getUUID(); public String getName(); + public String getNewName(); public void setName(String name); + public void setNewName(String newName); public double getMoney(); public void setMoney(double money); public boolean has(double amount); diff --git a/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java b/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java index e2a63fb..9f3e2da 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java @@ -12,6 +12,7 @@ public class AccountInt implements Account private final Database database; protected UUID uuid; protected String name; + protected String newName; protected double money; private Player player; public AccountInt(Fe plugin, DatabaseGeneric database, String name, UUID uuid, double money) @@ -30,13 +31,13 @@ public UUID getUUID() @Override public String getName() { - return name; + return this.name; } @Override - public void setName(String name) + public void setName(String newname) { - database.onRenameAccount(this, this.name, name); - this.name = name; + this.setNewName(newname); + database.onRenameAccount(this, this.getName(), this.getNewName()); database.saveAccount(this); } @Override @@ -98,4 +99,13 @@ public void disconnected() { this.player = null; } + @Override + public String getNewName() { + return this.newName; + } + @Override + public void setNewName(String newName) { + this.newName = newName; + + } } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index 2cf7e86..e1566f9 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -176,19 +176,31 @@ private ConfigurationSection getSection(ConfigurationSection parent, String chil @Override protected String getSaveAccountQuery(Account account) { - final String strName = account.getName(); + final String strName; + if(account.getName() != account.getNewName()) { + if(account.getNewName() == null) { + strName = "null"; + } else { + strName = "'"+account.getNewName()+"'"; + } + } else { + strName = account.getName(); + } + if(account.getNewName() != account.getName()) { + account.setNewName(null); + } final String strBlnc = String.valueOf(account.getMoney()); if(account.getUUID() != null) { final String struuid = account.getUUID().toString(); return "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsUUID + "`, `" + columnAccountsMoney + "`) " - + "VALUES ('" + strName + "', '" + struuid + "', '" + strBlnc + "') ON DUPLICATE KEY UPDATE " + + "VALUES (" + strName + ", '" + struuid + "', '" + strBlnc + "') ON DUPLICATE KEY UPDATE " + "`" + columnAccountsUser + "` = VALUES(`" + columnAccountsUser + "`), " + "`" + columnAccountsUUID + "` = VALUES(`" + columnAccountsUUID + "`), " + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);"; } return "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsMoney + "`) " - + "VALUES ('" + strName + "', '" + strBlnc + "') ON DUPLICATE KEY UPDATE " + + "VALUES (" + strName + ", '" + strBlnc + "') ON DUPLICATE KEY UPDATE " + "`" + columnAccountsUser + "` = VALUES(`" + columnAccountsUser + "`), " + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);"; } From 978478294191b90bb4b1257ec06e6e35d43b8011 Mon Sep 17 00:00:00 2001 From: Stanislav Usenkov Date: Wed, 23 Mar 2016 11:10:24 +0600 Subject: [PATCH 37/40] .gitignore --- .gitignore | 89 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 67 insertions(+), 22 deletions(-) diff --git a/.gitignore b/.gitignore index 9a222c4..c3f3424 100644 --- a/.gitignore +++ b/.gitignore @@ -1,35 +1,80 @@ -# Eclipse -/.classpath -/.project -/.settings +# Subversion +.svn -# Netbeans -/nbproject -nb-configuration.xml +## IDEs ## + +# Android Studio +*.apk +*.ap_ +*.dex +bin/ +gen/ +out/ +.navigation/ +proguard/ +/local.properties +/captures + +# IntelliJ +*.iml +*.ipr +*.iws +.idea/ + +# Netbeans IDE +nbproject/ +nbactions.xml + +# Eclipse stuff +.classpath +.project +.settings/ + +# vim +.*.sw[a-p] + +## Build systems ## + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ # We use maven! -/build.xml +build.xml # Maven -/target dependency-reduced-pom.xml +target/ -# Vim -.*.sw[a-p] +# Gradle +!gradle-wrapper.jar +.gradle +build/ +gradle-app.setting +.gradletasknamecache + +# Package Files +*.jar +*.war +*.ear # Various other potential build files -/build -/bin -/dist -/manifest.mf +*.class +build/ +bin/ +dist/ +manifest.mf -/world +## Other files ## # Mac filesystem dust -.DS_Store +.DS_Store/ -# IntelliJ -*.iml -*.ipr -*.iws -.idea/ +# Logs +*.log* +hs_err_pid* + +# Keystore files +*.jks + +# delombok +*/src/main/lombok From 4bada66c78291dcde89112a49ad37be9a03768e2 Mon Sep 17 00:00:00 2001 From: Calcium Date: Wed, 30 Mar 2016 15:10:56 -0700 Subject: [PATCH 38/40] Build against 1.9 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1d2541e..806bce7 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ org.spigotmc spigot-api - 1.8-R0.1-SNAPSHOT + 1.9-R0.1-SNAPSHOT net.milkbowl.vault From 7a300cbe6401f3c09f2c835fd36f2fadba019881 Mon Sep 17 00:00:00 2001 From: Ivan Ip Date: Wed, 15 Jun 2016 15:54:26 +0800 Subject: [PATCH 39/40] Update dependencies. --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 806bce7..8173137 100644 --- a/pom.xml +++ b/pom.xml @@ -30,12 +30,12 @@ org.spigotmc spigot-api - 1.9-R0.1-SNAPSHOT + 1.10-R0.1-SNAPSHOT net.milkbowl.vault VaultAPI - 1.5 + 1.6 jar compile From 99dd3baa8692bc958cb0b0d213b4bcb484951c0b Mon Sep 17 00:00:00 2001 From: Ivan Ip Date: Thu, 16 Jun 2016 03:53:22 +0800 Subject: [PATCH 40/40] Fixed MySQL null username issue. Temporarily removed create/remove account command. (Will re-add at the following commit) --- pom.xml | 6 +-- .../com/niccholaspage/Fe/API/Account.java | 2 - .../com/niccholaspage/Fe/API/Database.java | 2 - .../java/com/niccholaspage/Fe/API/FeAPI.java | 8 ---- .../Fe/Commands/CreateCommand.java | 37 ------------------- .../Fe/Commands/RemoveCommand.java | 32 ---------------- .../Fe/Databases/AccountInt.java | 16 ++------ .../Fe/Databases/DatabaseGeneric.java | 22 ----------- .../Fe/Databases/DatabaseSQL.java | 2 + .../niccholaspage/Fe/Databases/MySQLDB.java | 16 +------- src/main/java/com/niccholaspage/Fe/Fe.java | 1 + .../java/com/niccholaspage/Fe/FeCommands.java | 4 -- .../java/com/niccholaspage/Fe/FeListener.java | 4 +- .../com/niccholaspage/Fe/VaultHandler.java | 23 ++++++++++-- 14 files changed, 33 insertions(+), 142 deletions(-) delete mode 100644 src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java delete mode 100644 src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java diff --git a/pom.xml b/pom.xml index 8173137..e8e2944 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ UTF-8 - Fe2 + Fe @@ -31,19 +31,19 @@ org.spigotmc spigot-api 1.10-R0.1-SNAPSHOT + provided net.milkbowl.vault VaultAPI 1.6 jar - compile + provided org.mcstats.bukkit metrics R8-SNAPSHOT - compile diff --git a/src/main/java/com/niccholaspage/Fe/API/Account.java b/src/main/java/com/niccholaspage/Fe/API/Account.java index 1d51758..2db50a4 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Account.java +++ b/src/main/java/com/niccholaspage/Fe/API/Account.java @@ -6,9 +6,7 @@ public interface Account extends Comparable { public UUID getUUID(); public String getName(); - public String getNewName(); public void setName(String name); - public void setNewName(String newName); public double getMoney(); public void setMoney(double money); public boolean has(double amount); diff --git a/src/main/java/com/niccholaspage/Fe/API/Database.java b/src/main/java/com/niccholaspage/Fe/API/Database.java index bb7b8c0..2b0a928 100644 --- a/src/main/java/com/niccholaspage/Fe/API/Database.java +++ b/src/main/java/com/niccholaspage/Fe/API/Database.java @@ -19,8 +19,6 @@ public interface Database public List getTopAccounts(int size); public boolean accountExists(UUID uuid); public boolean accountExists(String name); - public Account createAccount(UUID uuid); - public Account createAccount(String name); public Account createAccount(UUID uuid, String name); public Account getAccount(UUID uuid); public Account getAccount(String name); diff --git a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java index 357ea2f..ce805fe 100644 --- a/src/main/java/com/niccholaspage/Fe/API/FeAPI.java +++ b/src/main/java/com/niccholaspage/Fe/API/FeAPI.java @@ -76,14 +76,6 @@ public boolean accountExists(String name) { return plugin.getDB().accountExists(name); } - public Account createAccount(UUID uuid) - { - return plugin.getDB().createAccount(uuid); - } - public Account createAccount(String name) - { - return plugin.getDB().createAccount(name); - } public Account createAccount(UUID uuid, String name) { return plugin.getDB().createAccount(uuid, name); diff --git a/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java deleted file mode 100644 index 93a96c4..0000000 --- a/src/main/java/com/niccholaspage/Fe/Commands/CreateCommand.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.niccholaspage.Fe.Commands; - -import com.niccholaspage.Fe.API.Account; -import com.niccholaspage.Fe.API.CommandType; -import com.niccholaspage.Fe.API.SubCommand; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; - -public class CreateCommand extends SubCommand -{ - public CreateCommand(Fe plugin) - { - super(plugin, "create", "fe.create", "create [name]", Phrases.COMMAND_CREATE, CommandType.CONSOLE); - } - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) - { - if(args.length < 1) - return false; - String name = args[0]; - if(plugin.api.accountExists(name)) - { - Phrases.ACCOUNT_EXISTS.sendWithPrefix(sender); - return true; - } - if(name.length() > 16) - { - Phrases.NAME_TOO_LONG.sendWithPrefix(sender); - return true; - } - Account account = plugin.api.createAccount(name); - Phrases.ACCOUNT_CREATED.sendWithPrefix(sender, Phrases.PRIMARY_COLOR.parse() + account.getName() + Phrases.SECONDARY_COLOR.parse()); - return true; - } -} diff --git a/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java b/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java deleted file mode 100644 index 702433b..0000000 --- a/src/main/java/com/niccholaspage/Fe/Commands/RemoveCommand.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.niccholaspage.Fe.Commands; - -import com.niccholaspage.Fe.API.Account; -import com.niccholaspage.Fe.API.CommandType; -import com.niccholaspage.Fe.API.SubCommand; -import com.niccholaspage.Fe.Fe; -import com.niccholaspage.Fe.Phrases; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; - -public class RemoveCommand extends SubCommand -{ - public RemoveCommand(Fe plugin) - { - super(plugin, "remove", "fe.remove", "remove [name]", Phrases.COMMAND_REMOVE, CommandType.CONSOLE); - } - @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) - { - if(args.length < 1) - return false; - String name = args[0]; - final Account account = plugin.api.getAccount(name); - if(account != null) - { - plugin.api.removeAccount(account); - Phrases.ACCOUNT_REMOVED.sendWithPrefix(sender, Phrases.PRIMARY_COLOR.parse() + name + Phrases.SECONDARY_COLOR.parse()); - } else - Phrases.ACCOUNT_DOES_NOT_EXIST.sendWithPrefix(sender); - return true; - } -} diff --git a/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java b/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java index 9f3e2da..0ad690f 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/AccountInt.java @@ -12,7 +12,6 @@ public class AccountInt implements Account private final Database database; protected UUID uuid; protected String name; - protected String newName; protected double money; private Player player; public AccountInt(Fe plugin, DatabaseGeneric database, String name, UUID uuid, double money) @@ -34,10 +33,10 @@ public String getName() return this.name; } @Override - public void setName(String newname) + public void setName(String name) { - this.setNewName(newname); - database.onRenameAccount(this, this.getName(), this.getNewName()); + database.onRenameAccount(this, this.name, name); + this.name = name; database.saveAccount(this); } @Override @@ -99,13 +98,4 @@ public void disconnected() { this.player = null; } - @Override - public String getNewName() { - return this.newName; - } - @Override - public void setNewName(String newName) { - this.newName = newName; - - } } diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java index 9d9f48f..01eb717 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseGeneric.java @@ -63,28 +63,6 @@ public boolean accountExists(String name) return accounts.containsKey(name); } @Override - public Account createAccount(UUID uuid) - { - final Account exist = accounts.get(uuid.toString()); - if(exist != null) - return exist; - final AccountInt account = new AccountInt(plugin, this, null, uuid, plugin.api.getDefaultHoldings()); - accounts.put(uuid.toString(), account); - saveAccount(account); - return account; - } - @Override - public Account createAccount(String name) - { - final Account exist = accounts.get(name); - if(exist != null) - return exist; - final AccountInt account = new AccountInt(plugin, this, name, null, plugin.api.getDefaultHoldings()); - accounts.put(name, account); - saveAccount(account); - return account; - } - @Override public Account createAccount(UUID uuid, String name) { final Account existByUUID = accounts.get(uuid.toString()); diff --git a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java index 141e86d..f747165 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/DatabaseSQL.java @@ -88,6 +88,8 @@ public void saveAccount(Account account) checkConnection(); try { + if(plugin.settings.debug()) System.out.println("MySQL task - Player: " + account.getName()); + if(plugin.settings.debug()) System.out.println("MySQL query: " + getSaveAccountQuery(account)); query(getSaveAccountQuery(account)); } catch(SQLException ex) { System.err.println(ex); diff --git a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java index e1566f9..f08dff4 100644 --- a/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java +++ b/src/main/java/com/niccholaspage/Fe/Databases/MySQLDB.java @@ -176,25 +176,13 @@ private ConfigurationSection getSection(ConfigurationSection parent, String chil @Override protected String getSaveAccountQuery(Account account) { - final String strName; - if(account.getName() != account.getNewName()) { - if(account.getNewName() == null) { - strName = "null"; - } else { - strName = "'"+account.getNewName()+"'"; - } - } else { - strName = account.getName(); - } - if(account.getNewName() != account.getName()) { - account.setNewName(null); - } + final String strName = account.getName(); final String strBlnc = String.valueOf(account.getMoney()); if(account.getUUID() != null) { final String struuid = account.getUUID().toString(); return "INSERT INTO `" + tableAccounts + "` (`" + columnAccountsUser + "`, `" + columnAccountsUUID + "`, `" + columnAccountsMoney + "`) " - + "VALUES (" + strName + ", '" + struuid + "', '" + strBlnc + "') ON DUPLICATE KEY UPDATE " + + "VALUES ('" + strName + "', '" + struuid + "', '" + strBlnc + "') ON DUPLICATE KEY UPDATE " + "`" + columnAccountsUser + "` = VALUES(`" + columnAccountsUser + "`), " + "`" + columnAccountsUUID + "` = VALUES(`" + columnAccountsUUID + "`), " + "`" + columnAccountsMoney + "` = VALUES(`" + columnAccountsMoney + "`);"; diff --git a/src/main/java/com/niccholaspage/Fe/Fe.java b/src/main/java/com/niccholaspage/Fe/Fe.java index f29297d..41709f4 100644 --- a/src/main/java/com/niccholaspage/Fe/Fe.java +++ b/src/main/java/com/niccholaspage/Fe/Fe.java @@ -35,6 +35,7 @@ public void onLoad() public void onEnable() { settings.onEnable(); + log("Language File location:" + new File(getDataFolder(), "phrases.yml").getAbsolutePath()); Phrases.setupPhrases(new File(getDataFolder(), "phrases.yml")); databases.add(new MySQLDB(this)); databases.add(new SQLiteDB(this)); diff --git a/src/main/java/com/niccholaspage/Fe/FeCommands.java b/src/main/java/com/niccholaspage/Fe/FeCommands.java index 1a6b951..0584186 100644 --- a/src/main/java/com/niccholaspage/Fe/FeCommands.java +++ b/src/main/java/com/niccholaspage/Fe/FeCommands.java @@ -4,14 +4,12 @@ import com.niccholaspage.Fe.API.SubCommand; import com.niccholaspage.Fe.Commands.BalanceCommand; import com.niccholaspage.Fe.Commands.CleanCommand; -import com.niccholaspage.Fe.Commands.CreateCommand; import com.niccholaspage.Fe.Commands.DebugCommand; import com.niccholaspage.Fe.Commands.DeductCommand; import com.niccholaspage.Fe.Commands.GrantCommand; import com.niccholaspage.Fe.Commands.HelpCommand; import com.niccholaspage.Fe.Commands.MigrateCommand; import com.niccholaspage.Fe.Commands.ReloadCommand; -import com.niccholaspage.Fe.Commands.RemoveCommand; import com.niccholaspage.Fe.Commands.SendCommand; import com.niccholaspage.Fe.Commands.SetCommand; import com.niccholaspage.Fe.Commands.TopCommand; @@ -31,8 +29,6 @@ public FeCommands(Fe plugin) commands.add(new SendCommand(plugin)); commands.add(new TopCommand(plugin)); commands.add(new HelpCommand(plugin, this)); - commands.add(new CreateCommand(plugin)); - commands.add(new RemoveCommand(plugin)); commands.add(new SetCommand(plugin)); commands.add(new GrantCommand(plugin)); commands.add(new DeductCommand(plugin)); diff --git a/src/main/java/com/niccholaspage/Fe/FeListener.java b/src/main/java/com/niccholaspage/Fe/FeListener.java index e30b6ad..004abec 100644 --- a/src/main/java/com/niccholaspage/Fe/FeListener.java +++ b/src/main/java/com/niccholaspage/Fe/FeListener.java @@ -17,12 +17,12 @@ public FeListener(Fe plugin) { this.plugin = plugin; } - @EventHandler(priority = EventPriority.LOWEST) + @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerLogin(PlayerLoginEvent event) { final Player player = event.getPlayer(); final Database database = plugin.getDB(); - final AccountInt account = (AccountInt)database.createAccount(player.getUniqueId()); + final AccountInt account = (AccountInt)database.createAccount(player.getUniqueId(), player.getName()); database.reloadAccount(account); account.setName(player.getName()); account.connected(player); diff --git a/src/main/java/com/niccholaspage/Fe/VaultHandler.java b/src/main/java/com/niccholaspage/Fe/VaultHandler.java index 5f0caf0..830b0df 100644 --- a/src/main/java/com/niccholaspage/Fe/VaultHandler.java +++ b/src/main/java/com/niccholaspage/Fe/VaultHandler.java @@ -3,6 +3,8 @@ import com.niccholaspage.Fe.API.Account; import java.util.ArrayList; import java.util.List; +import java.util.UUID; + import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.EconomyResponse; import net.milkbowl.vault.economy.EconomyResponse.ResponseType; @@ -50,6 +52,7 @@ public String currencyNamePlural() { return plugin.api.getCurrencyMajorMultiple(); } + @Deprecated @Override public double getBalance(String playerName) { @@ -68,6 +71,7 @@ public double getBalance(OfflinePlayer offlinePlayer) ? account.getMoney() : plugin.api.getDefaultHoldings(); } + @Deprecated @Override public EconomyResponse withdrawPlayer(String playerName, double amount) { @@ -94,6 +98,7 @@ private EconomyResponse withdraw(Account account, double amount) } else return new EconomyResponse(0, account.getMoney(), ResponseType.FAILURE, "Insufficient funds"); } + @Deprecated @Override public EconomyResponse depositPlayer(String playerName, double amount) { @@ -116,6 +121,7 @@ private EconomyResponse deposit(Account account, double amount) account.deposit(amount); return new EconomyResponse(amount, account.getMoney(), ResponseType.SUCCESS, ""); } + @Deprecated @Override public boolean has(String playerName, double amount) { @@ -126,6 +132,7 @@ public boolean has(OfflinePlayer offlinePlayer, double amount) { return getBalance(offlinePlayer) >= amount; } + @Deprecated @Override public EconomyResponse createBank(String name, String player) { @@ -156,6 +163,7 @@ public EconomyResponse bankDeposit(String name, double amount) { return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } + @Deprecated @Override public EconomyResponse isBankOwner(String name, String playerName) { @@ -166,6 +174,7 @@ public EconomyResponse isBankOwner(String name, OfflinePlayer offlinePlayer) { return new EconomyResponse(0.0, 0.0, ResponseType.NOT_IMPLEMENTED, "Fe does not support bank accounts!"); } + @Deprecated @Override public EconomyResponse isBankMember(String name, String playerName) { @@ -191,6 +200,7 @@ public boolean hasBankSupport() { return false; } + @Deprecated @Override public boolean hasAccount(String playerName) { @@ -203,17 +213,18 @@ public boolean hasAccount(OfflinePlayer offlinePlayer) plugin.api.printDebugStackTrace(); return plugin.api.accountExists(offlinePlayer.getUniqueId()); } + @Deprecated @Override public boolean createPlayerAccount(String playerName) { plugin.api.printDebugStackTrace(); - return plugin.getDB().createAccount(playerName) != null; + return plugin.getDB().createAccount(UUID.randomUUID(), playerName) != null; } @Override public boolean createPlayerAccount(OfflinePlayer offlinePlayer) { plugin.api.printDebugStackTrace(); - Account account = plugin.getDB().createAccount(offlinePlayer.getUniqueId()); + Account account = plugin.getDB().createAccount(offlinePlayer.getUniqueId(), offlinePlayer.getName()); account.setName(offlinePlayer.getName()); plugin.getDB().saveAccount(account); return true; @@ -223,6 +234,7 @@ public int fractionalDigits() { return -1; } + @Deprecated @Override public boolean hasAccount(String playerName, String worldName) { @@ -233,6 +245,7 @@ public boolean hasAccount(OfflinePlayer offlinePlayer, String worldName) { return hasAccount(offlinePlayer); } + @Deprecated @Override public double getBalance(String playerName, String worldName) { @@ -243,6 +256,7 @@ public double getBalance(OfflinePlayer offlinePlayer, String worldName) { return getBalance(offlinePlayer); } + @Deprecated @Override public boolean has(String playerName, String worldName, double amount) { @@ -253,6 +267,7 @@ public boolean has(OfflinePlayer offlinePlayer, String worldName, double amount) { return has(offlinePlayer, amount); } + @Deprecated @Override public EconomyResponse withdrawPlayer(String playerName, String worldName, double amount) { @@ -263,6 +278,7 @@ public EconomyResponse withdrawPlayer(OfflinePlayer offlinePlayer, String worldN { return withdrawPlayer(offlinePlayer, amount); } + @Deprecated @Override public EconomyResponse depositPlayer(String playerName, String worldName, double amount) { @@ -273,6 +289,7 @@ public EconomyResponse depositPlayer(OfflinePlayer offlinePlayer, String worldNa { return depositPlayer(offlinePlayer, amount); } + @Deprecated @Override public boolean createPlayerAccount(String playerName, String worldName) { @@ -305,4 +322,4 @@ public void onPluginDisable(PluginDisableEvent event) Bukkit.getLogger().info("[Fe] Vault support disabled."); } } -} +} \ No newline at end of file