Updated Economy Handling

- Remove iConomy support
- Updated Vault support to 1.5
- Changed "useiconomy" setting to "useeconomy"
This commit is contained in:
PseudoKnight 2015-01-27 04:05:05 -08:00
parent 2b8f99c796
commit 0101a3de24
6 changed files with 138 additions and 245 deletions

View File

@ -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

View File

@ -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 <Contact@TheDgtl.net>
*
* 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 <http://www.gnu.org/licenses/>.
*/
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<Economy> 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;
}
}

View File

@ -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.");

View File

@ -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);
}

View File

@ -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

View File

@ -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 <Contact@TheDgtl.net>
*
* 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 <http://www.gnu.org/licenses/>.
*/
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<Economy> 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;
}
}