From 684d8a4bef992e69a4914d3a7e31e3fbca462050 Mon Sep 17 00:00:00 2001 From: Stephanie Gardner Date: Mon, 17 Dec 2012 10:17:23 -0500 Subject: [PATCH 1/2] Hooks XPBank, a new XP economy plugin Bukkit: http://dev.bukkit.org/server-mods/xpbank/ GitHub: https://github.com/Marenwynn/XPBank --- .../vault/economy/plugins/Economy_XPBank.java | 294 ++++++++++++++++++ 1 file changed, 294 insertions(+) create mode 100644 src/net/milkbowl/vault/economy/plugins/Economy_XPBank.java diff --git a/src/net/milkbowl/vault/economy/plugins/Economy_XPBank.java b/src/net/milkbowl/vault/economy/plugins/Economy_XPBank.java new file mode 100644 index 0000000..67abcbb --- /dev/null +++ b/src/net/milkbowl/vault/economy/plugins/Economy_XPBank.java @@ -0,0 +1,294 @@ +/* This file is part of Vault. + + Vault 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. + + Vault 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 Vault. If not, see . + */ + +package net.milkbowl.vault.economy.plugins; + +import java.util.List; +import java.util.logging.Logger; + +import net.milkbowl.vault.economy.Economy; +import net.milkbowl.vault.economy.EconomyResponse; +import net.milkbowl.vault.economy.EconomyResponse.ResponseType; + +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.server.PluginDisableEvent; +import org.bukkit.event.server.PluginEnableEvent; +import org.bukkit.plugin.Plugin; + +import com.gmail.mirelatrue.xpbank.XPBank; + +public class Economy_XPBank implements Economy { + private static final Logger log = Logger.getLogger("Minecraft"); + + private final String name = "XPBank"; + private Plugin plugin = null; + private XPBank XPB = null; + + public Economy_XPBank(Plugin plugin) { + this.plugin = plugin; + Bukkit.getServer().getPluginManager().registerEvents(new EconomyServerListener(this), plugin); + + // Load Plugin in case it was loaded before + if (XPB == null) { + Plugin economy = plugin.getServer().getPluginManager().getPlugin("XPBank"); + if (economy != null && economy.isEnabled()) { + XPB = (XPBank) economy; + log.info(String.format("[%s][Economy] %s hooked.", plugin.getDescription().getName(), name)); + } + } + } + + public class EconomyServerListener implements Listener { + Economy_XPBank economy = null; + + public EconomyServerListener(Economy_XPBank economy_XPBank) { + this.economy = economy_XPBank; + } + + + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginEnable(PluginEnableEvent event) { + if (economy.XPB == null) { + Plugin eco = plugin.getServer().getPluginManager().getPlugin("XPBank"); + + if (eco != null && eco.isEnabled()) { + economy.XPB = (XPBank) eco; + log.info(String.format("[%s][Economy] %s hooked.", plugin.getDescription().getName(), economy.name)); + } + } + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginDisable(PluginDisableEvent event) { + if (economy.XPB != null) { + if (event.getPlugin().getDescription().getName().equals("XPBank")) { + economy.XPB = null; + log.info(String.format("[%s][Economy] %s unhooked.", plugin.getDescription().getName(), economy.name)); + } + } + } + } + + @Override + public boolean isEnabled() { + return this.XPB != null; + } + + @Override + public String getName() { + return name; + } + + @Override + public String format(double amount) { + return String.format("%d %s", (int) amount, XPBank.currencyName); + } + + @Override + public String currencyNamePlural() { + return XPBank.currencyName; + } + + @Override + public String currencyNameSingular() { + return XPBank.currencyName; + } + + @Override + public double getBalance(String playerName) { + return XPB.getBalance(playerName); + } + + @Override + public boolean has(String playerName, double amount) { + if (XPB.getBalance(playerName) >= (int) amount) { return true; } + return false; + } + + @Override + public EconomyResponse withdrawPlayer(String playerName, double amount) { + if (!XPB.playerExists(playerName)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "Player doesn't exist"); + } + + int value = (int) amount; + int balance = XPB.getBalance(playerName); + + if (value < 1) { + return new EconomyResponse(0, balance, ResponseType.FAILURE, "Amount must be greater than zero"); + } + + if (value > balance) { + return new EconomyResponse(0, balance, ResponseType.FAILURE, String.format("Insufficient %s", XPBank.currencyName)); + } + + XPB.addToBalance(playerName, -value); + + return new EconomyResponse(value, balance - value, ResponseType.SUCCESS, null); + } + + @Override + public EconomyResponse depositPlayer(String playerName, double amount) { + if (!XPB.playerExists(playerName)) { + // Stupid plugins that use fake players without creating them first... + // return new EconomyResponse(0, 0, ResponseType.FAILURE, "Player doesn't exist"); + this.createPlayerAccount(playerName); + } + + int value = (int) amount; + int balance = XPB.getBalance(playerName); + + if (value < 1) { + return new EconomyResponse(0, balance, ResponseType.FAILURE, "Amount must be greater than zero"); + } + + XPB.addToBalance(playerName, value); + + return new EconomyResponse(value, balance + value, ResponseType.SUCCESS, null); + } + + @Override + public EconomyResponse createBank(String name, String player) { + if (XPB.bankExists(name)) { + return new EconomyResponse(0, XPB.getBankBalance(name), ResponseType.FAILURE, "That account already exists"); + } + + Boolean created = XPB.addBank(name); + + if (!created) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "There was an error creating the account"); + } + + return new EconomyResponse(0, 0, ResponseType.SUCCESS, null); + } + + @Override + public EconomyResponse deleteBank(String name) { + if (!XPB.bankExists(name)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "There is no account with that name"); + } + + Boolean deleted = XPB.deleteBank(name); + + if (!deleted) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "There was an error deleting the account"); + } + + return new EconomyResponse(0, 0, ResponseType.SUCCESS, null); + } + + @Override + public EconomyResponse bankHas(String name, double amount) { + if (!XPB.bankExists(name)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "There is no account with that name"); + } + + int balance = XPB.getBankBalance(name); + + if (balance >= (int) amount) { + return new EconomyResponse(0, balance, ResponseType.SUCCESS, null); + } + + return new EconomyResponse(0, balance, ResponseType.FAILURE, String.format("The account does not have that much %s", XPBank.currencyName)); + } + + @Override + public EconomyResponse bankWithdraw(String name, double amount) { + if (!XPB.bankExists(name)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "There is no account with that name"); + } + + int value = (int) amount; + int balance = XPB.getBankBalance(name); + + if (value < 1) { + return new EconomyResponse(0, balance, ResponseType.FAILURE, "Amount must be greater than zero"); + } + + if (value > balance) { + return new EconomyResponse(0, balance, ResponseType.FAILURE, String.format("Insufficient %s", XPBank.currencyName)); + } + + XPB.addToBankBalance(name, -value); + + return new EconomyResponse(value, balance - value, ResponseType.SUCCESS, null); + } + + @Override + public EconomyResponse bankDeposit(String name, double amount) { + if (!XPB.bankExists(name)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "There is no account with that name"); + } + + int value = (int) amount; + int balance = XPB.getBankBalance(name); + + if (value < 1) { + return new EconomyResponse(0, balance, ResponseType.FAILURE, "Amount must be greater than zero"); + } + + XPB.addToBankBalance(name, value); + + return new EconomyResponse(value, balance + value, ResponseType.SUCCESS, null); + } + + @Override + public EconomyResponse isBankOwner(String name, String playerName) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "XPBank does not support assigning bank owners"); + } + + @Override + public EconomyResponse isBankMember(String name, String playerName) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "XPBank does not support assigning bank members"); + } + + @Override + public EconomyResponse bankBalance(String name) { + if (!XPB.bankExists(name)) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "There is no account with that name"); + } + + return new EconomyResponse(0, XPB.getBankBalance(name), ResponseType.SUCCESS, null); + } + + @Override + public List getBanks() { + return XPB.getBanks(); + } + + @Override + public boolean hasBankSupport() { + return true; + } + + @Override + public boolean hasAccount(String playerName) { + return XPB.playerExists(playerName); + } + + @Override + public boolean createPlayerAccount(String playerName) { + return XPB.addPlayer(playerName); + } + + @Override + public int fractionalDigits() { + return 0; + } +} \ No newline at end of file From 84299c15bbef1be4537089903664e8bc398daf19 Mon Sep 17 00:00:00 2001 From: Stephanie Gardner Date: Mon, 17 Dec 2012 11:02:29 -0500 Subject: [PATCH 2/2] The rest of the files for an XPBank hook --- lib/XPBank.jar | Bin 0 -> 43658 bytes pom.xml | 9 ++++++++- src/net/milkbowl/vault/Vault.java | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 lib/XPBank.jar diff --git a/lib/XPBank.jar b/lib/XPBank.jar new file mode 100644 index 0000000000000000000000000000000000000000..52a3600403da98e15457c62a45b469243d85b76c GIT binary patch literal 43658 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 literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index 6394040..57d3905 100644 --- a/pom.xml +++ b/pom.xml @@ -146,6 +146,13 @@ system ${project.basedir}/lib/iConomy6.jar + + com.gmail.mirelatrue.xpbank.XPBank + XPBank + 0.9 + system + ${project.basedir}/lib/XPBank.jar + net.D3GN.MiracleM4n.mChat.mChat mChat @@ -339,7 +346,7 @@ Vault currently Supports: Permissions 3, PEX, GroupManager, bPerms, bPerms2, SimplyPerms, DroxPerms, zPermissions, Starburst -iConomy 4,5,6 BOSEconomy 6/7, EssentialsEcon, 3Co, MultiConomy, MineConomy, EconXP, eWallet, CurrencyCore, CraftConomy, AEco +iConomy 4,5,6 BOSEconomy 6/7, EssentialsEcon, 3Co, MultiConomy, MineConomy, EconXP, eWallet, CurrencyCore, XPBank, CraftConomy, AEco https://github.com/MilkBowl/Vault diff --git a/src/net/milkbowl/vault/Vault.java b/src/net/milkbowl/vault/Vault.java index a7b211e..c5b2149 100644 --- a/src/net/milkbowl/vault/Vault.java +++ b/src/net/milkbowl/vault/Vault.java @@ -52,6 +52,7 @@ import net.milkbowl.vault.economy.plugins.Economy_Gringotts; import net.milkbowl.vault.economy.plugins.Economy_McMoney; import net.milkbowl.vault.economy.plugins.Economy_MineConomy; import net.milkbowl.vault.economy.plugins.Economy_MultiCurrency; +import net.milkbowl.vault.economy.plugins.Economy_XPBank; import net.milkbowl.vault.economy.plugins.Economy_eWallet; import net.milkbowl.vault.economy.plugins.Economy_iConomy4; import net.milkbowl.vault.economy.plugins.Economy_iConomy5; @@ -255,6 +256,9 @@ public class Vault extends JavaPlugin { // Try to load CommandsEX Economy hookEconomy("CommandsEX", Economy_CommandsEX.class, ServicePriority.Normal, "com.github.zathrus_writer.commandsex.api.EconomyAPI"); + + // Try to load XPBank + hookEconomy("XPBank", Economy_XPBank.class, ServicePriority.Normal, "com.gmail.mirelatrue.xpbank.XPBank"); } /**