diff --git a/src/config.yml b/src/config.yml index f658188..71d8ef1 100644 --- a/src/config.yml +++ b/src/config.yml @@ -16,7 +16,7 @@ ############################ # Stargate economy options # ############################ -# useiconomy - Whether to use an economy plugin (Uses Register to interact with all economy plugins) +# useeconomy - Whether to use an economy plugin # createcost - The cost to create a gate # destroycost - The cost to destroy a gate # usecost - The cost to use a gate @@ -40,7 +40,7 @@ handleVehicles: true sortLists: false protectEntrance: false signColor: BLACK -useiconomy: false +useeconomy: false createcost: 0 destroycost: 0 usecost: 0 diff --git a/src/net/TheDgtl/Stargate/EconomyHandler.java b/src/net/TheDgtl/Stargate/EconomyHandler.java new file mode 100644 index 0000000..64cb2d4 --- /dev/null +++ b/src/net/TheDgtl/Stargate/EconomyHandler.java @@ -0,0 +1,83 @@ +package net.TheDgtl.Stargate; + +import net.milkbowl.vault.economy.Economy; + +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.RegisteredServiceProvider; + +/** + * Stargate - A portal plugin for Bukkit + * Copyright (C) 2011, 2012 Steven "Drakia" Scott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +public class EconomyHandler { + public static boolean economyEnabled = false; + public static Economy economy = null; + public static Plugin vault = null; + + public static int useCost = 0; + public static int createCost = 0; + public static int destroyCost = 0; + public static boolean toOwner = false; + public static boolean chargeFreeDestination = true; + public static boolean freeGatesGreen = false; + + public static double getBalance(String player) { + if (!economyEnabled) return 0; + return economy.getBalance(player); + } + + public static boolean chargePlayer(String player, String target, double amount) { + if (!economyEnabled) return true; + if(player.equals(target)) return true; + if(economy != null) { + if(!economy.has(player, amount)) return false; + economy.withdrawPlayer(player, amount); + if(target != null) economy.depositPlayer(target, amount); + } + return false; + } + + public static String format(int amt) { + if (economyEnabled) { + return economy.format(amt); + } + return ""; + } + + public static boolean setupEconomy(PluginManager pm) { + if (!economyEnabled) return false; + // Check for Vault + Plugin p = pm.getPlugin("Vault"); + if (p != null && p.isEnabled()) { + RegisteredServiceProvider economyProvider = Stargate.server.getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class); + if (economyProvider != null) { + economy = economyProvider.getProvider(); + vault = p; + return true; + } + } + economyEnabled = false; + return false; + } + + public static boolean useEconomy() { + if(!economyEnabled || economy == null) return false; + return true; + } + +} diff --git a/src/net/TheDgtl/Stargate/Gate.java b/src/net/TheDgtl/Stargate/Gate.java index 93d1a54..6269fa9 100644 --- a/src/net/TheDgtl/Stargate/Gate.java +++ b/src/net/TheDgtl/Stargate/Gate.java @@ -55,7 +55,7 @@ public class Gate { private int portalBlockOpen = Material.PORTAL.getId(); private int portalBlockClosed = Material.AIR.getId(); - // iConomy information + // Economy information private int useCost = -1; private int createCost = -1; private int destroyCost = -1; @@ -228,17 +228,17 @@ public class Gate { } public int getUseCost() { - if (useCost < 0) return iConomyHandler.useCost; + if (useCost < 0) return EconomyHandler.useCost; return useCost; } public Integer getCreateCost() { - if (createCost < 0) return iConomyHandler.createCost; + if (createCost < 0) return EconomyHandler.createCost; return createCost; } public Integer getDestroyCost() { - if (destroyCost < 0) return iConomyHandler.destroyCost; + if (destroyCost < 0) return EconomyHandler.destroyCost; return destroyCost; } @@ -404,7 +404,7 @@ public class Gate { gate.useCost = readConfig(config, gate, file, "usecost", -1); gate.destroyCost = readConfig(config, gate, file, "destroycost", -1); gate.createCost = readConfig(config, gate, file, "createcost", -1); - gate.toOwner = (config.containsKey("toowner") ? Boolean.valueOf(config.get("toowner")) : iConomyHandler.toOwner); + gate.toOwner = (config.containsKey("toowner") ? Boolean.valueOf(config.get("toowner")) : EconomyHandler.toOwner); if (gate.getControls().length != 2) { Stargate.log.log(Level.SEVERE, "Could not load Gate " + file.getName() + " - Gates must have exactly 2 control points."); diff --git a/src/net/TheDgtl/Stargate/Portal.java b/src/net/TheDgtl/Stargate/Portal.java index 42e32f5..7de051b 100644 --- a/src/net/TheDgtl/Stargate/Portal.java +++ b/src/net/TheDgtl/Stargate/Portal.java @@ -731,7 +731,7 @@ public class Portal { } else { int index = destinations.indexOf(destination); if ((index == max) && (max > 1) && (++done <= 3)) { - if (iConomyHandler.useiConomy() && iConomyHandler.freeGatesGreen) { + if (EconomyHandler.useEconomy() && EconomyHandler.freeGatesGreen) { Portal dest = Portal.getByName(destinations.get(index - 2), network); boolean green = Stargate.isFree(activePlayer, this, dest); Stargate.setLine(sign, done, (green ? ChatColor.DARK_GREEN : "") + destinations.get(index - 2)); @@ -740,7 +740,7 @@ public class Portal { } } if ((index > 0) && (++done <= 3)) { - if (iConomyHandler.useiConomy() && iConomyHandler.freeGatesGreen) { + if (EconomyHandler.useEconomy() && EconomyHandler.freeGatesGreen) { Portal dest = Portal.getByName(destinations.get(index - 1), network); boolean green = Stargate.isFree(activePlayer, this, dest); Stargate.setLine(sign, done, (green ? ChatColor.DARK_GREEN : "") + destinations.get(index - 1)); @@ -749,7 +749,7 @@ public class Portal { } } if (++done <= 3) { - if (iConomyHandler.useiConomy() && iConomyHandler.freeGatesGreen) { + if (EconomyHandler.useEconomy() && EconomyHandler.freeGatesGreen) { Portal dest = Portal.getByName(destination, network); boolean green = Stargate.isFree(activePlayer, this, dest); Stargate.setLine(sign, done, (green ? ChatColor.DARK_GREEN : "") + ">" + destination + "<"); @@ -758,7 +758,7 @@ public class Portal { } } if ((max >= index + 1) && (++done <= 3)) { - if (iConomyHandler.useiConomy() && iConomyHandler.freeGatesGreen) { + if (EconomyHandler.useEconomy() && EconomyHandler.freeGatesGreen) { Portal dest = Portal.getByName(destinations.get(index + 1), network); boolean green = Stargate.isFree(activePlayer, this, dest); Stargate.setLine(sign, done, (green ? ChatColor.DARK_GREEN : "") + destinations.get(index + 1)); @@ -767,7 +767,7 @@ public class Portal { } } if ((max >= index + 2) && (++done <= 3)) { - if (iConomyHandler.useiConomy() && iConomyHandler.freeGatesGreen) { + if (EconomyHandler.useEconomy() && EconomyHandler.freeGatesGreen) { Portal dest = Portal.getByName(destinations.get(index + 2), network); boolean green = Stargate.isFree(activePlayer, this, dest); Stargate.setLine(sign, done, (green ? ChatColor.DARK_GREEN : "") + destinations.get(index + 2)); @@ -1128,13 +1128,13 @@ public class Portal { if (cost > 0) { if (!Stargate.chargePlayer(player, null, cost)) { String inFundMsg = Stargate.getString("ecoInFunds"); - inFundMsg = Stargate.replaceVars(inFundMsg, new String[] {"%cost%", "%portal%"}, new String[] {iConomyHandler.format(cost), name}); + inFundMsg = Stargate.replaceVars(inFundMsg, new String[] {"%cost%", "%portal%"}, new String[] {EconomyHandler.format(cost), name}); Stargate.sendMessage(player, inFundMsg); Stargate.debug("createPortal", "Insufficient Funds"); return null; } String deductMsg = Stargate.getString("ecoDeduct"); - deductMsg = Stargate.replaceVars(deductMsg, new String[] {"%cost%", "%portal%"}, new String[] {iConomyHandler.format(cost), name}); + deductMsg = Stargate.replaceVars(deductMsg, new String[] {"%cost%", "%portal%"}, new String[] {EconomyHandler.format(cost), name}); Stargate.sendMessage(player, deductMsg, false); } diff --git a/src/net/TheDgtl/Stargate/Stargate.java b/src/net/TheDgtl/Stargate/Stargate.java index 04b0337..f2023c3 100644 --- a/src/net/TheDgtl/Stargate/Stargate.java +++ b/src/net/TheDgtl/Stargate/Stargate.java @@ -31,7 +31,6 @@ import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.entity.Vehicle; -import org.bukkit.event.Event; import org.bukkit.event.Event.Result; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -163,12 +162,10 @@ public class Stargate extends JavaPlugin { this.migrate(); this.reloadGates(); - // Check to see if iConomy is loaded yet. - if (iConomyHandler.setupeConomy(pm)) { - if (iConomyHandler.register != null) - log.info("[Stargate] Register v" + iConomyHandler.register.getDescription().getVersion() + " found"); - if (iConomyHandler.economy != null) - log.info("[Stargate] Vault v" + iConomyHandler.vault.getDescription().getVersion() + " found"); + // Check to see if Economy is loaded yet. + if (EconomyHandler.setupEconomy(pm)) { + if (EconomyHandler.economy != null) + log.info("[Stargate] Vault v" + EconomyHandler.vault.getDescription().getVersion() + " found"); } getServer().getScheduler().scheduleSyncRepeatingTask(this, new SGThread(), 0L, 100L); @@ -218,14 +215,14 @@ public class Stargate extends JavaPlugin { // Debug debug = newConfig.getBoolean("debug"); permDebug = newConfig.getBoolean("permdebug"); - // iConomy - iConomyHandler.useiConomy = newConfig.getBoolean("useiconomy"); - iConomyHandler.createCost = newConfig.getInt("createcost"); - iConomyHandler.destroyCost = newConfig.getInt("destroycost"); - iConomyHandler.useCost = newConfig.getInt("usecost"); - iConomyHandler.toOwner = newConfig.getBoolean("toowner"); - iConomyHandler.chargeFreeDestination = newConfig.getBoolean("chargefreedestination"); - iConomyHandler.freeGatesGreen = newConfig.getBoolean("freegatesgreen"); + // Economy + EconomyHandler.economyEnabled = newConfig.getBoolean("useeconomy"); + EconomyHandler.createCost = newConfig.getInt("createcost"); + EconomyHandler.destroyCost = newConfig.getInt("destroycost"); + EconomyHandler.useCost = newConfig.getInt("usecost"); + EconomyHandler.toOwner = newConfig.getBoolean("toowner"); + EconomyHandler.chargeFreeDestination = newConfig.getBoolean("chargefreedestination"); + EconomyHandler.freeGatesGreen = newConfig.getBoolean("freegatesgreen"); this.saveConfig(); } @@ -460,7 +457,7 @@ public class Stargate extends JavaPlugin { // Player gets free use if (hasPerm(player, "stargate.free") || Stargate.hasPerm(player, "stargate.free.use")) return true; // Don't charge for free destination gates - if (dest != null && !iConomyHandler.chargeFreeDestination && dest.isFree()) return true; + if (dest != null && !EconomyHandler.chargeFreeDestination && dest.isFree()) return true; return false; } @@ -572,22 +569,22 @@ public class Stargate extends JavaPlugin { public static boolean chargePlayer(Player player, String target, int cost) { // If cost is 0 if (cost == 0) return true; - // iConomy is disabled - if (!iConomyHandler.useiConomy()) return true; + // Economy is disabled + if (!EconomyHandler.useEconomy()) return true; // Charge player - return iConomyHandler.chargePlayer(player.getName(), target, cost); + return EconomyHandler.chargePlayer(player.getName(), target, cost); } /* * Determine the cost of a gate */ public static int getUseCost(Player player, Portal src, Portal dest) { - // Not using iConomy - if (!iConomyHandler.useiConomy()) return 0; + // Not using Economy + if (!EconomyHandler.useEconomy()) return 0; // Portal is free if (src.isFree()) return 0; // Not charging for free destinations - if (dest != null && !iConomyHandler.chargeFreeDestination && dest.isFree()) return 0; + if (dest != null && !EconomyHandler.chargeFreeDestination && dest.isFree()) return 0; // Cost is 0 if the player owns this gate and funds go to the owner if (src.getGate().getToOwner() && src.getOwner().equalsIgnoreCase(player.getName())) return 0; // Player gets free gate use @@ -600,8 +597,8 @@ public class Stargate extends JavaPlugin { * Determine the cost to create the gate */ public static int getCreateCost(Player player, Gate gate) { - // Not using iConomy - if (!iConomyHandler.useiConomy()) return 0; + // Not using Economy + if (!EconomyHandler.useEconomy()) return 0; // Player gets free gate destruction if (hasPerm(player, "stargate.free") || hasPerm(player, "stargate.free.create")) return 0; @@ -612,8 +609,8 @@ public class Stargate extends JavaPlugin { * Determine the cost to destroy the gate */ public static int getDestroyCost(Player player, Gate gate) { - // Not using iConomy - if (!iConomyHandler.useiConomy()) return 0; + // Not using Economy + if (!EconomyHandler.useEconomy()) return 0; // Player gets free gate destruction if (hasPerm(player, "stargate.free") || hasPerm(player, "stargate.free.destroy")) return 0; @@ -696,13 +693,13 @@ public class Stargate extends JavaPlugin { return; } String deductMsg = Stargate.getString("ecoDeduct"); - deductMsg = Stargate.replaceVars(deductMsg, new String[] {"%cost%", "%portal%"}, new String[] {iConomyHandler.format(cost), portal.getName()}); + deductMsg = Stargate.replaceVars(deductMsg, new String[] {"%cost%", "%portal%"}, new String[] {EconomyHandler.format(cost), portal.getName()}); sendMessage(player, deductMsg, false); if (target != null) { Player p = server.getPlayer(target); if (p != null) { String obtainedMsg = Stargate.getString("ecoObtain"); - obtainedMsg = Stargate.replaceVars(obtainedMsg, new String[] {"%cost%", "%portal%"}, new String[] {iConomyHandler.format(cost), portal.getName()}); + obtainedMsg = Stargate.replaceVars(obtainedMsg, new String[] {"%cost%", "%portal%"}, new String[] {EconomyHandler.format(cost), portal.getName()}); Stargate.sendMessage(p, obtainedMsg, false); } } @@ -825,13 +822,13 @@ public class Stargate extends JavaPlugin { return; } String deductMsg = Stargate.getString("ecoDeduct"); - deductMsg = Stargate.replaceVars(deductMsg, new String[] {"%cost%", "%portal%"}, new String[] {iConomyHandler.format(cost), portal.getName()}); + deductMsg = Stargate.replaceVars(deductMsg, new String[] {"%cost%", "%portal%"}, new String[] {EconomyHandler.format(cost), portal.getName()}); sendMessage(player, deductMsg, false); if (target != null) { Player p = server.getPlayer(target); if (p != null) { String obtainedMsg = Stargate.getString("ecoObtain"); - obtainedMsg = Stargate.replaceVars(obtainedMsg, new String[] {"%cost%", "%portal%"}, new String[] {iConomyHandler.format(cost), portal.getName()}); + obtainedMsg = Stargate.replaceVars(obtainedMsg, new String[] {"%cost%", "%portal%"}, new String[] {EconomyHandler.format(cost), portal.getName()}); Stargate.sendMessage(p, obtainedMsg, false); } } @@ -1084,11 +1081,11 @@ public class Stargate extends JavaPlugin { if (cost > 0) { String deductMsg = Stargate.getString("ecoDeduct"); - deductMsg = Stargate.replaceVars(deductMsg, new String[] {"%cost%", "%portal%"}, new String[] {iConomyHandler.format(cost), portal.getName()}); + deductMsg = Stargate.replaceVars(deductMsg, new String[] {"%cost%", "%portal%"}, new String[] {EconomyHandler.format(cost), portal.getName()}); sendMessage(player, deductMsg, false); } else if (cost < 0) { String refundMsg = Stargate.getString("ecoRefund"); - refundMsg = Stargate.replaceVars(refundMsg, new String[] {"%cost%", "%portal%"}, new String[] {iConomyHandler.format(-cost), portal.getName()}); + refundMsg = Stargate.replaceVars(refundMsg, new String[] {"%cost%", "%portal%"}, new String[] {EconomyHandler.format(-cost), portal.getName()}); sendMessage(player, refundMsg, false); } } @@ -1274,18 +1271,15 @@ public class Stargate extends JavaPlugin { private class sListener implements Listener { @EventHandler public void onPluginEnable(PluginEnableEvent event) { - if (iConomyHandler.setupRegister(event.getPlugin())) { - log.info("[Stargate] Register v" + iConomyHandler.register.getDescription().getVersion() + " found"); - } - if (iConomyHandler.setupVault(event.getPlugin())) { - log.info("[Stargate] Vault v" + iConomyHandler.vault.getDescription().getVersion() + " found"); + if (EconomyHandler.setupEconomy(getServer().getPluginManager())) { + log.info("[Stargate] Vault v" + EconomyHandler.vault.getDescription().getVersion() + " found"); } } @EventHandler public void onPluginDisable(PluginDisableEvent event) { - if (iConomyHandler.checkLost(event.getPlugin())) { - log.info("[Stargate] Register/Vault plugin lost."); + if (event.getPlugin().equals(EconomyHandler.vault)) { + log.info("[Stargate] Vault plugin lost."); } } } @@ -1369,19 +1363,16 @@ public class Stargate extends JavaPlugin { lang.setLang(langName); lang.reload(); - // Load iConomy support if enabled/clear if disabled - if (iConomyHandler.useiConomy && iConomyHandler.register == null && iConomyHandler.economy == null) { - if (iConomyHandler.setupeConomy(pm)) { - if (iConomyHandler.register != null) - log.info("[Stargate] Register v" + iConomyHandler.register.getDescription().getVersion() + " found"); - if (iConomyHandler.economy != null) - log.info("[Stargate] Vault v" + iConomyHandler.vault.getDescription().getVersion() + " found"); + // Load Economy support if enabled/clear if disabled + if (EconomyHandler.economyEnabled && EconomyHandler.economy == null) { + if (EconomyHandler.setupEconomy(pm)) { + if (EconomyHandler.economy != null) + log.info("[Stargate] Vault v" + EconomyHandler.vault.getDescription().getVersion() + " found"); } } - if (!iConomyHandler.useiConomy) { - iConomyHandler.vault = null; - iConomyHandler.register = null; - iConomyHandler.economy = null; + if (!EconomyHandler.economyEnabled) { + EconomyHandler.vault = null; + EconomyHandler.economy = null; } // Enable the required channels for Bungee support diff --git a/src/net/TheDgtl/Stargate/iConomyHandler.java b/src/net/TheDgtl/Stargate/iConomyHandler.java deleted file mode 100644 index c12167a..0000000 --- a/src/net/TheDgtl/Stargate/iConomyHandler.java +++ /dev/null @@ -1,181 +0,0 @@ -package net.TheDgtl.Stargate; - -import net.milkbowl.vault.Vault; -import net.milkbowl.vault.economy.Economy; - -import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.PluginManager; -import org.bukkit.plugin.RegisteredServiceProvider; - -import com.nijikokun.register.Register; -import com.nijikokun.register.payment.Method; -import com.nijikokun.register.payment.Method.MethodAccount; -import com.nijikokun.register.payment.Methods; - -/** - * Stargate - A portal plugin for Bukkit - * Copyright (C) 2011, 2012 Steven "Drakia" Scott - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -public class iConomyHandler { - public static boolean useiConomy = false; - public static Register register = null; - public static Vault vault = null; - public static Economy economy = null; - - public static int useCost = 0; - public static int createCost = 0; - public static int destroyCost = 0; - public static boolean toOwner = false; - public static boolean chargeFreeDestination = true; - public static boolean freeGatesGreen = false; - - public static double getBalance(String player) { - if (!useiConomy) return 0; - if (economy != null) { - return economy.getBalance(player); - } - if (register != null) { - Method method = Methods.getMethod(); - if (method == null) { - return 0; - } - - MethodAccount acc = method.getAccount(player); - if (acc == null) { - Stargate.debug("ich::getBalance", "Error fetching Register account for " + player); - return 0; - } - return acc.balance(); - } - return 0; - } - - public static boolean chargePlayer(String player, String target, double amount) { - if (!useiConomy) return true; - if (economy != null) { - if (player.equals(target)) return true; - - if (!economy.has(player, amount)) return false; - economy.withdrawPlayer(player, amount); - - if (target != null) { - economy.depositPlayer(target, amount); - } - return true; - } - - if (register != null) { - // Check for a payment method - Method method = Methods.getMethod(); - if (method == null) { - return true; - } - // No point going from a player to themself - if (player.equals(target)) return true; - - MethodAccount acc = method.getAccount(player); - if (acc == null) { - Stargate.debug("ich::chargePlayer", "Error fetching Register account for " + player); - return false; - } - - if (!acc.hasEnough(amount)) return false; - acc.subtract(amount); - - if (target != null) { - MethodAccount tAcc = method.getAccount(target); - if (tAcc != null) { - tAcc.add(amount); - } - } - return true; - } - return true; - } - - public static boolean useiConomy() { - if (!useiConomy) return false; - if (economy != null) return true; - if (register != null && Methods.getMethod() != null) return true; - return false; - } - - public static String format(int amt) { - if (economy != null) { - return economy.format(amt); - } - if (register != null) { - Method method = Methods.getMethod(); - if (method == null) { - return Integer.toString(amt); - } - return method.format(amt); - } - return ""; - } - - public static boolean setupeConomy(PluginManager pm) { - if (!useiConomy) return false; - // Check for Vault - Plugin p = pm.getPlugin("Vault"); - if (p != null) - return setupVault(p); - // Check for Register - p = pm.getPlugin("Register"); - if (p != null) - return setupRegister(p); - - return false; - } - - public static boolean setupVault(Plugin p) { - if (!useiConomy) return false; - if (register != null) return false; - if (p == null || !p.isEnabled()) return false; - if (!p.getDescription().getName().equals("Vault")) return false; - - RegisteredServiceProvider economyProvider = Stargate.server.getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class); - if (economyProvider != null) { - vault = (Vault)p; - economy = economyProvider.getProvider(); - } - - return (economy != null); - } - - public static boolean setupRegister(Plugin p) { - if (!useiConomy) return false; - if (vault != null) return false; - if (p == null || !p.isEnabled()) return false; - if (!p.getDescription().getName().equals("Register")) return false; - register = (Register)p; - return true; - } - - public static boolean checkLost(Plugin p) { - if (p.equals(register)) { - register = null; - return true; - } - if (p.equals(vault)) { - economy = null; - vault = null; - return true; - } - return false; - } -}