Support for iConomy 6 and other economy plugins added through Register support (with new conf.json setting "econRegisterEnabled", defaults to false); you will need to have the Register plugin on your server

This commit is contained in:
Brettflan 2011-09-22 04:22:24 -05:00
parent 2aa51a4781
commit 492d983464
6 changed files with 89 additions and 16 deletions

BIN
lib/Register.jar Normal file

Binary file not shown.

Binary file not shown.

View File

@ -184,6 +184,7 @@ public class Conf {
public static String capePeaceful = "https://github.com/MassiveCraft/Factions/raw/master/capes/peaceful.png"; public static String capePeaceful = "https://github.com/MassiveCraft/Factions/raw/master/capes/peaceful.png";
// Economy settings // Economy settings
public static boolean econRegisterEnabled = false;
public static boolean econIConomyEnabled = false; public static boolean econIConomyEnabled = false;
public static boolean econEssentialsEcoEnabled = false; public static boolean econEssentialsEcoEnabled = false;
public static double econCostClaimWilderness = 30.0; public static double econCostClaimWilderness = 30.0;

View File

@ -6,11 +6,14 @@ import org.bukkit.plugin.Plugin;
import com.massivecraft.factions.listeners.FactionsServerListener; import com.massivecraft.factions.listeners.FactionsServerListener;
import com.earth2me.essentials.api.Economy; import com.earth2me.essentials.api.Economy;
import com.nijikokun.register.payment.Methods;
import com.nijikokun.register.payment.Method.MethodAccount;
import com.iConomy.*; import com.iConomy.*;
import com.iConomy.system.*; import com.iConomy.system.*;
public class Econ { public class Econ {
private static boolean registerUse = false;
private static boolean iConomyUse = false; private static boolean iConomyUse = false;
private static boolean essEcoUse = false; private static boolean essEcoUse = false;
@ -24,6 +27,12 @@ public class Econ {
return; return;
} }
if (!registerHooked()) {
Plugin plug = factions.getServer().getPluginManager().getPlugin("Register");
if (plug != null && plug.getClass().getName().equals("com.nijikokun.register.Register") && plug.isEnabled()) {
registerSet(true);
}
}
if (!iConomyHooked()) { if (!iConomyHooked()) {
Plugin plug = factions.getServer().getPluginManager().getPlugin("iConomy"); Plugin plug = factions.getServer().getPluginManager().getPlugin("iConomy");
if (plug != null && plug.getClass().getName().equals("com.iConomy.iConomy") && plug.isEnabled()) { if (plug != null && plug.getClass().getName().equals("com.iConomy.iConomy") && plug.isEnabled()) {
@ -38,9 +47,19 @@ public class Econ {
} }
} }
public static void registerSet(boolean enable) {
registerUse = enable;
if (enable) {
Factions.log("Register hook available, "+(Conf.econRegisterEnabled ? "and interface is enabled" : "but disabled (\"econRegisterEnabled\": false)")+".");
}
else {
Factions.log("Un-hooked from Register.");
}
}
public static void iConomySet(boolean enable) { public static void iConomySet(boolean enable) {
iConomyUse = enable; iConomyUse = enable;
if (enable) { if (enable && !registerUse) {
Factions.log("iConomy hook available, "+(Conf.econIConomyEnabled ? "and interface is enabled" : "but disabled (\"econIConomyEnabled\": false)")+"."); Factions.log("iConomy hook available, "+(Conf.econIConomyEnabled ? "and interface is enabled" : "but disabled (\"econIConomyEnabled\": false)")+".");
} }
else { else {
@ -50,7 +69,7 @@ public class Econ {
public static void essentialsEcoSet(boolean enable) { public static void essentialsEcoSet(boolean enable) {
essEcoUse = enable; essEcoUse = enable;
if (enable) { if (enable && !registerUse) {
Factions.log("EssentialsEco hook available, "+(Conf.econEssentialsEcoEnabled ? "and interface is enabled" : "but disabled (\"econEssentialsEcoEnabled\": false)")+"."); Factions.log("EssentialsEco hook available, "+(Conf.econEssentialsEcoEnabled ? "and interface is enabled" : "but disabled (\"econEssentialsEcoEnabled\": false)")+".");
} }
else { else {
@ -58,6 +77,10 @@ public class Econ {
} }
} }
public static boolean registerHooked() {
return registerUse;
}
public static boolean iConomyHooked() { public static boolean iConomyHooked() {
return iConomyUse; return iConomyUse;
} }
@ -66,9 +89,15 @@ public class Econ {
return essEcoUse; return essEcoUse;
} }
public static boolean registerAvailable() {
return Conf.econRegisterEnabled && registerUse && Methods.hasMethod();
}
// If economy is enabled in conf.json, and we're successfully hooked into an economy plugin // If economy is enabled in conf.json, and we're successfully hooked into an economy plugin
public static boolean enabled() { public static boolean enabled() {
return (Conf.econIConomyEnabled && iConomyUse) || (Conf.econEssentialsEcoEnabled && essEcoUse); return (Conf.econRegisterEnabled && registerUse && Methods.hasMethod())
|| (Conf.econIConomyEnabled && iConomyUse)
|| (Conf.econEssentialsEcoEnabled && essEcoUse);
} }
// mainly for internal use, for a little less code repetition // mainly for internal use, for a little less code repetition
@ -84,11 +113,23 @@ public class Econ {
Holdings holdings = account.getHoldings(); Holdings holdings = account.getHoldings();
return holdings; return holdings;
} }
public static MethodAccount getRegisterAccount(String playerName) {
if (!enabled()) {
return null;
}
if (!Methods.getMethod().hasAccount(playerName)) {
return null;
}
MethodAccount account = Methods.getMethod().getAccount(playerName);
return account;
}
// format money string based on server's set currency type, like "24 gold" or "$24.50" // format money string based on server's set currency type, like "24 gold" or "$24.50"
public static String moneyString(double amount) { public static String moneyString(double amount) {
return iConomyUse ? iConomy.format(amount) : Economy.format(amount); return registerAvailable() ? Methods.getMethod().format(amount)
: (iConomyUse ? iConomy.format(amount) : Economy.format(amount));
} }
// whether a player can afford specified amount // whether a player can afford specified amount
@ -98,7 +139,15 @@ public class Econ {
return true; return true;
} }
if (iConomyUse) { if (registerAvailable()) {
MethodAccount holdings = getRegisterAccount(playerName);
if (holdings == null) {
return false;
}
return holdings.hasEnough(amount);
}
else if (iConomyUse) {
Holdings holdings = getIconomyHoldings(playerName); Holdings holdings = getIconomyHoldings(playerName);
if (holdings == null) { if (holdings == null) {
return false; return false;
@ -122,7 +171,15 @@ public class Econ {
return true; return true;
} }
if (iConomyUse) { if (registerAvailable()) {
MethodAccount holdings = getRegisterAccount(playerName);
if (holdings == null || !holdings.hasEnough(amount)) {
return false;
}
return holdings.subtract(amount);
}
else if (iConomyUse) {
Holdings holdings = getIconomyHoldings(playerName); Holdings holdings = getIconomyHoldings(playerName);
if (holdings == null || !holdings.hasEnough(amount)) { if (holdings == null || !holdings.hasEnough(amount)) {
return false; return false;
@ -151,7 +208,15 @@ public class Econ {
return true; return true;
} }
if (iConomyUse) { if (registerAvailable()) {
MethodAccount holdings = getRegisterAccount(playerName);
if (holdings == null) {
return false;
}
return holdings.add(amount);
}
else if (iConomyUse) {
Holdings holdings = getIconomyHoldings(playerName); Holdings holdings = getIconomyHoldings(playerName);
if (holdings == null) { if (holdings == null) {
return false; return false;

View File

@ -10,12 +10,15 @@ import com.massivecraft.factions.SpoutFeatures;
public class FactionsServerListener extends ServerListener { public class FactionsServerListener extends ServerListener {
@Override @Override
public void onPluginDisable(PluginDisableEvent event) { public void onPluginDisable(PluginDisableEvent event) {
String name = event.getPlugin().getDescription().getName(); String name = event.getPlugin().getDescription().getName();
if (Econ.iConomyHooked() && name.equals("iConomy")) { if (Econ.registerHooked() && name.equals("Register")) {
Econ.registerSet(false);
}
else if (Econ.iConomyHooked() && name.equals("iConomy")) {
Econ.iConomySet(false); Econ.iConomySet(false);
} }
else if (Econ.essentialsEcoHooked() && name.equals("Essentials")) { else if (Econ.essentialsEcoHooked() && name.equals("Essentials")) {
Econ.essentialsEcoSet(false); Econ.essentialsEcoSet(false);
} }
@ -24,18 +27,21 @@ public class FactionsServerListener extends ServerListener {
} }
} }
@Override @Override
public void onPluginEnable(PluginEnableEvent event) { public void onPluginEnable(PluginEnableEvent event) {
Plugin plug = event.getPlugin(); Plugin plug = event.getPlugin();
String name = plug.getDescription().getName(); String name = plug.getDescription().getName();
if (!Econ.iConomyHooked() && name.equals("iConomy") && plug.getClass().getName().equals("com.iConomy.iConomy")) { if (!Econ.registerHooked() && name.equals("Register") && plug.getClass().getName().equals("com.nijikokun.register.Register")) {
Econ.registerSet(true);
}
else if (!Econ.iConomyHooked() && name.equals("iConomy") && plug.getClass().getName().equals("com.iConomy.iConomy")) {
Econ.iConomySet(true); Econ.iConomySet(true);
} }
else if (!Econ.essentialsEcoHooked() && name.equals("Essentials")) { else if (!Econ.essentialsEcoHooked() && name.equals("Essentials")) {
Econ.essentialsEcoSet(true); Econ.essentialsEcoSet(true);
} }
else if (name.equals("Spout")) { else if (name.equals("Spout")) {
SpoutFeatures.setAvailable(true, plug.getDescription().getFullName()); SpoutFeatures.setAvailable(true, plug.getDescription().getFullName());
} }
} }
} }

View File

@ -12,6 +12,7 @@ softdepend:
- ChatManager - ChatManager
- AuthMe - AuthMe
- iConomy - iConomy
- Register
- Spout - Spout
- WorldEdit - WorldEdit
- WorldGuard - WorldGuard