Add Vault hooking support.

This commit is contained in:
AppleDash 2016-06-14 19:19:00 -04:00
parent 39d5ca20de
commit e5cbb1dac3
9 changed files with 308 additions and 29 deletions

View File

@ -1,5 +1,5 @@
group 'org.appledash'
version '0.3.1-SNAPSHOT'
version '0.5.0-SNAPSHOT'
apply plugin: 'java'
@ -39,10 +39,16 @@ repositories {
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
// Vault
maven {
url 'http://nexus.theyeticave.net/content/repositories/pub_releases'
}
}
dependencies {
compile group: 'org.spigotmc', name: 'spigot-api', version: '1.9-R0.1-SNAPSHOT'
compile group: 'org.bukkit', name: 'bukkit', version: '1.9-R0.1-SNAPSHOT'
compile group: 'org.mcstats.bukkit', name: 'metrics', version: 'R7'
compile group: 'net.milkbowl.vault', name: 'VaultAPI', version: '1.5'
}

View File

@ -11,6 +11,7 @@ import org.appledash.saneeconomy.economy.backend.EconomyStorageBackend;
import org.appledash.saneeconomy.economy.backend.type.EconomyStorageBackendFlatfile;
import org.appledash.saneeconomy.economy.backend.type.EconomyStorageBackendMySQL;
import org.appledash.saneeconomy.listeners.JoinQuitListener;
import org.appledash.saneeconomy.vault.VaultHook;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
@ -25,6 +26,7 @@ import java.util.logging.Logger;
public class SaneEconomy extends JavaPlugin {
private static SaneEconomy instance;
private EconomyManager economyManager;
private VaultHook vaultHook;
private static final Map<String, SaneEconomyCommand> COMMANDS = new HashMap<String, SaneEconomyCommand>() {{
put("balance", new BalanceCommand());
@ -48,6 +50,14 @@ public class SaneEconomy extends JavaPlugin {
loadCommands();
loadListeners();
vaultHook = new VaultHook(this);
vaultHook.hook();
}
@Override
public void onDisable() {
}
private void loadConfig() {

View File

@ -1,6 +1,7 @@
package org.appledash.saneeconomy.economy;
import org.appledash.saneeconomy.economy.backend.EconomyStorageBackend;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
/**
@ -40,7 +41,7 @@ public class EconomyManager {
* @param player Player to check
* @return True if they have used the economy system before, false otherwise
*/
public boolean accountExists(Player player) {
public boolean accountExists(OfflinePlayer player) {
return backend.accountExists(player);
}
@ -49,17 +50,18 @@ public class EconomyManager {
* @param targetPlayer Player to get balance of
* @return Player's balance
*/
public double getBalance(Player targetPlayer) {
public double getBalance(OfflinePlayer targetPlayer) {
return backend.getBalance(targetPlayer);
}
/**
* Check if a player has a certain amount of money.
* @param targetPlayer Player to check balance of
* @param requiredBalance How much money we're checking for
* @return True if they have requiredBalance or more, false otherwise
*/
public boolean hasBalance(Player targetPlayer, double requiredBalance) {
public boolean hasBalance(OfflinePlayer targetPlayer, double requiredBalance) {
return getBalance(targetPlayer) >= requiredBalance;
}
@ -70,7 +72,7 @@ public class EconomyManager {
* @return Player's new balance
* @throws IllegalArgumentException If amount is negative
*/
public double addBalance(Player targetPlayer, double amount) {
public double addBalance(OfflinePlayer targetPlayer, double amount) {
if (amount < 0) {
throw new IllegalArgumentException("Cannot add a negative amount!");
}
@ -86,7 +88,7 @@ public class EconomyManager {
* @return Player's new balance
* @throws IllegalArgumentException If amount is negative
*/
public double subtractBalance(Player targetPlayer, double amount) {
public double subtractBalance(OfflinePlayer targetPlayer, double amount) {
if (amount < 0) {
throw new IllegalArgumentException("Cannot subtract a negative amount!");
}
@ -106,7 +108,7 @@ public class EconomyManager {
* @param amount Amount to set balance to
* @throws IllegalArgumentException If amount is negative
*/
public void setBalance(Player targetPlayer, double amount) {
public void setBalance(OfflinePlayer targetPlayer, double amount) {
if (amount < 0) {
throw new IllegalArgumentException("Cannot set balance to a negative value!");
}
@ -122,7 +124,7 @@ public class EconomyManager {
* @return True if success, false if fromPlayer has insufficient funds.
* @throws IllegalArgumentException If amount is negative
*/
public boolean transfer(Player fromPlayer, Player toPlayer, double amount) {
public boolean transfer(OfflinePlayer fromPlayer, Player toPlayer, double amount) {
if (amount < 0) {
throw new IllegalArgumentException("Cannot transfer a negative amount!");
}

View File

@ -1,6 +1,6 @@
package org.appledash.saneeconomy.economy.backend;
import org.bukkit.entity.Player;
import org.bukkit.OfflinePlayer;
/**
* Created by AppleDash on 6/13/2016.
@ -14,21 +14,21 @@ public interface EconomyStorageBackend {
* @param player Player
* @return True if they have, false otherwise.
*/
boolean accountExists(Player player);
boolean accountExists(OfflinePlayer player);
/**
* Get the balance of a player.
* @param player Player
* @return Player's current balance
*/
double getBalance(Player player);
double getBalance(OfflinePlayer player);
/**
* Set the balance of a player, overwriting the old balance.
* @param player Player
* @param newBalance Player's new balance
*/
void setBalance(Player player, double newBalance);
void setBalance(OfflinePlayer player, double newBalance);
/**
* Add to a player's balance.
@ -36,7 +36,7 @@ public interface EconomyStorageBackend {
* @param amount Amount to add to the balance
* @return Player's new balance
*/
double addBalance(Player player, double amount);
double addBalance(OfflinePlayer player, double amount);
/**
* Subtract from a player's balance.
@ -44,7 +44,7 @@ public interface EconomyStorageBackend {
* @param amount Amount to subtract from the balance
* @return Player's new balance
*/
double subtractBalance(Player player, double amount);
double subtractBalance(OfflinePlayer player, double amount);
/**
* Reload this backend's database from disk.

View File

@ -2,7 +2,7 @@ package org.appledash.saneeconomy.economy.backend.type;
import org.appledash.saneeconomy.SaneEconomy;
import org.appledash.saneeconomy.economy.backend.EconomyStorageBackend;
import org.bukkit.entity.Player;
import org.bukkit.OfflinePlayer;
import java.io.*;
import java.util.HashMap;
@ -63,12 +63,12 @@ public class EconomyStorageBackendFlatfile implements EconomyStorageBackend {
}
@Override
public synchronized boolean accountExists(Player player) {
public synchronized boolean accountExists(OfflinePlayer player) {
return playerBalances.containsKey(player.getUniqueId());
}
@Override
public synchronized double getBalance(Player player) {
public synchronized double getBalance(OfflinePlayer player) {
if (!playerBalances.containsKey(player.getUniqueId())) {
return 0.0D;
}
@ -77,13 +77,13 @@ public class EconomyStorageBackendFlatfile implements EconomyStorageBackend {
}
@Override
public synchronized void setBalance(Player player, double newBalance) {
public synchronized void setBalance(OfflinePlayer player, double newBalance) {
playerBalances.put(player.getUniqueId(), newBalance);
saveDatabase();
}
@Override
public synchronized double addBalance(Player player, double amount) {
public synchronized double addBalance(OfflinePlayer player, double amount) {
double newAmount = getBalance(player) + amount;
setBalance(player, newAmount);
@ -92,7 +92,7 @@ public class EconomyStorageBackendFlatfile implements EconomyStorageBackend {
}
@Override
public synchronized double subtractBalance(Player player, double amount) {
public synchronized double subtractBalance(OfflinePlayer player, double amount) {
double newAmount = getBalance(player) - amount;
setBalance(player, newAmount);

View File

@ -3,7 +3,7 @@ package org.appledash.saneeconomy.economy.backend.type;
import org.appledash.saneeconomy.SaneEconomy;
import org.appledash.saneeconomy.economy.backend.EconomyStorageBackend;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.OfflinePlayer;
import java.sql.*;
import java.util.HashMap;
@ -80,13 +80,14 @@ public class EconomyStorageBackendMySQL implements EconomyStorageBackend {
}
}
@Override
public synchronized boolean accountExists(Player player) {
public boolean accountExists(OfflinePlayer player) {
return playerBalances.containsKey(player.getUniqueId());
}
@Override
public synchronized double getBalance(Player player) {
public synchronized double getBalance(OfflinePlayer player) {
if (!accountExists(player)) {
return 0.0D;
}
@ -95,7 +96,7 @@ public class EconomyStorageBackendMySQL implements EconomyStorageBackend {
}
@Override
public synchronized void setBalance(final Player player, final double newBalance) {
public synchronized void setBalance(final OfflinePlayer player, final double newBalance) {
final double oldBalance = getBalance(player);
playerBalances.put(player.getUniqueId(), newBalance);
@ -117,7 +118,7 @@ public class EconomyStorageBackendMySQL implements EconomyStorageBackend {
}
@Override
public synchronized double addBalance(Player player, double amount) {
public synchronized double addBalance(OfflinePlayer player, double amount) {
// TODO: Optimize?
double curBalance = getBalance(player);
double newBalance = curBalance + amount;
@ -128,7 +129,7 @@ public class EconomyStorageBackendMySQL implements EconomyStorageBackend {
}
@Override
public synchronized double subtractBalance(Player player, double amount) {
public synchronized double subtractBalance(OfflinePlayer player, double amount) {
// TODO: Optimize?
double curBalance = getBalance(player);
double newBalance = curBalance - amount;
@ -138,7 +139,7 @@ public class EconomyStorageBackendMySQL implements EconomyStorageBackend {
return newBalance;
}
private void ensureAccountExists(Player player, Connection conn) {
private void ensureAccountExists(OfflinePlayer player, Connection conn) {
if (!accountExists(player, conn)) {
try {
PreparedStatement statement = conn.prepareStatement("INSERT INTO `player_balances` (player_uuid, balance) VALUES (?, 0.0)");
@ -150,7 +151,7 @@ public class EconomyStorageBackendMySQL implements EconomyStorageBackend {
}
}
private boolean accountExists(Player player, Connection conn) {
private boolean accountExists(OfflinePlayer player, Connection conn) {
try {
PreparedStatement statement = conn.prepareStatement("SELECT 1 FROM `player_balances` WHERE `player_uuid` = ?");
statement.setString(1, player.getUniqueId().toString());

View File

@ -0,0 +1,232 @@
package org.appledash.saneeconomy.vault;
import com.google.common.collect.ImmutableList;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.economy.EconomyResponse;
import org.appledash.saneeconomy.SaneEconomy;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import java.util.List;
/**
* Created by AppleDash on 6/14/2016.
* Blackjack is still best pony.
*/
public class EconomySaneEconomy implements Economy {
@Override
public boolean isEnabled() {
return SaneEconomy.getInstance().isEnabled();
}
@Override
public String getName() {
return "SaneEconomy";
}
@Override
public boolean hasBankSupport() {
return false;
}
@Override
public int fractionalDigits() {
return SaneEconomy.getInstance().getEconomyManager().getCurrency().getFormat().getMaximumFractionDigits();
}
@Override
public String format(double v) {
return SaneEconomy.getInstance().getEconomyManager().getCurrency().formatAmount(v);
}
@Override
public String currencyNamePlural() {
return SaneEconomy.getInstance().getEconomyManager().getCurrency().getPluralName();
}
@Override
public String currencyNameSingular() {
return SaneEconomy.getInstance().getEconomyManager().getCurrency().getSingularName();
}
@Override
public boolean hasAccount(String playerName) {
return SaneEconomy.getInstance().getEconomyManager().accountExists(Bukkit.getServer().getPlayer(playerName));
}
@Override
public boolean hasAccount(OfflinePlayer offlinePlayer) {
return SaneEconomy.getInstance().getEconomyManager().accountExists(offlinePlayer);
}
@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 s) {
return SaneEconomy.getInstance().getEconomyManager().getBalance(Bukkit.getPlayer(s));
}
@Override
public double getBalance(OfflinePlayer offlinePlayer) {
return SaneEconomy.getInstance().getEconomyManager().getBalance(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, double v) {
return SaneEconomy.getInstance().getEconomyManager().hasBalance(Bukkit.getPlayer(playerName), v);
}
@Override
public boolean has(OfflinePlayer offlinePlayer, double v) {
return SaneEconomy.getInstance().getEconomyManager().hasBalance(offlinePlayer, v);
}
@Override
public boolean has(String playerName, String worldName, double v) {
return has(playerName, v);
}
@Override
public boolean has(OfflinePlayer offlinePlayer, String worldName, double v) {
return has(offlinePlayer, v);
}
@Override
public EconomyResponse withdrawPlayer(String playerName, double v) {
return new EconomyResponse(v, SaneEconomy.getInstance().getEconomyManager().subtractBalance(Bukkit.getPlayer(playerName), v), EconomyResponse.ResponseType.SUCCESS, null);
}
@Override
public EconomyResponse withdrawPlayer(OfflinePlayer offlinePlayer, double v) {
return new EconomyResponse(v, SaneEconomy.getInstance().getEconomyManager().subtractBalance(offlinePlayer, v), EconomyResponse.ResponseType.SUCCESS, null);
}
@Override
public EconomyResponse withdrawPlayer(String playerName, String worldName, double v) {
return withdrawPlayer(playerName, v);
}
@Override
public EconomyResponse withdrawPlayer(OfflinePlayer offlinePlayer, String s, double v) {
return withdrawPlayer(offlinePlayer, v);
}
@Override
public EconomyResponse depositPlayer(String playerName, double v) {
return new EconomyResponse(v, SaneEconomy.getInstance().getEconomyManager().addBalance(Bukkit.getPlayer(playerName), v), EconomyResponse.ResponseType.SUCCESS, null);
}
@Override
public EconomyResponse depositPlayer(OfflinePlayer offlinePlayer, double v) {
return new EconomyResponse(v, SaneEconomy.getInstance().getEconomyManager().addBalance(offlinePlayer, v), EconomyResponse.ResponseType.SUCCESS, null);
}
@Override
public EconomyResponse depositPlayer(String playerName, String worldName, double v) {
return depositPlayer(playerName, v);
}
@Override
public EconomyResponse depositPlayer(OfflinePlayer offlinePlayer, String worldName, double v) {
return depositPlayer(offlinePlayer, v);
}
@Override
public EconomyResponse createBank(String s, String s1) {
return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, null);
}
@Override
public EconomyResponse createBank(String s, OfflinePlayer offlinePlayer) {
return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, null);
}
@Override
public EconomyResponse deleteBank(String s) {
return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, null);
}
@Override
public EconomyResponse bankBalance(String s) {
return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, null);
}
@Override
public EconomyResponse bankHas(String s, double v) {
return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, null);
}
@Override
public EconomyResponse bankWithdraw(String s, double v) {
return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, null);
}
@Override
public EconomyResponse bankDeposit(String s, double v) {
return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, null);
}
@Override
public EconomyResponse isBankOwner(String s, String s1) {
return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, null);
}
@Override
public EconomyResponse isBankOwner(String s, OfflinePlayer offlinePlayer) {
return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, null);
}
@Override
public EconomyResponse isBankMember(String s, String s1) {
return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, null);
}
@Override
public EconomyResponse isBankMember(String s, OfflinePlayer offlinePlayer) {
return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, null);
}
@Override
public List<String> getBanks() {
return ImmutableList.of();
}
@Override
public boolean createPlayerAccount(String s) {
return true;
}
@Override
public boolean createPlayerAccount(OfflinePlayer offlinePlayer) {
return true;
}
@Override
public boolean createPlayerAccount(String s, String s1) {
return true;
}
@Override
public boolean createPlayerAccount(OfflinePlayer offlinePlayer, String s) {
return true;
}
}

View File

@ -0,0 +1,27 @@
package org.appledash.saneeconomy.vault;
import net.milkbowl.vault.economy.Economy;
import org.appledash.saneeconomy.SaneEconomy;
import org.bukkit.Bukkit;
import org.bukkit.plugin.ServicePriority;
/**
* Created by AppleDash on 6/14/2016.
* Blackjack is still best pony.
*/
public class VaultHook {
private SaneEconomy plugin;
private EconomySaneEconomy provider = new EconomySaneEconomy();
public VaultHook(SaneEconomy plugin) {
this.plugin = plugin;
}
public void hook() {
Bukkit.getServicesManager().register(Economy.class, provider, plugin, ServicePriority.Normal);
}
public void unhook() {
Bukkit.getServicesManager().unregister(Economy.class, provider);
}
}

View File

@ -1,7 +1,8 @@
name: SaneEconomy
author: AppleDash
main: org.appledash.saneeconomy.SaneEconomy
version: 0.3.1
version: 0.5.0
softdepends: [Vault]
commands:
balance:
aliases: [bal]