Added support for Reserve economy

This commit is contained in:
Esophose 2019-08-14 23:23:31 -06:00
parent 6bb498c607
commit 2c8c6190ee
5 changed files with 53 additions and 19 deletions

View File

@ -15,6 +15,9 @@ dependencies {
// Vault
compileOnly (group: 'net.milkbowl', name: 'vault', version: '1.7.1')
// Reserve
compileOnly (group: 'net.tnemc', name: 'Reserve', version: '0.1.3.0')
// Leaderheads
compileOnly (group: 'me.robin', name: 'leaderheads', version: '1.0')

View File

@ -3,16 +3,25 @@ package me.goodandevil.skyblock.economy;
import me.goodandevil.skyblock.api.event.player.PlayerWithdrawMoneyEvent;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.permission.Permission;
import net.tnemc.core.Reserve;
import net.tnemc.core.economy.EconomyAPI;
import net.tnemc.core.permissions.PermissionsAPI;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
import java.math.BigDecimal;
public class EconomyManager {
private Economy economy = null;
private Permission permission = null;
// Vault
private Economy vaultEconomy = null;
private Permission vaultPermission = null;
// Reserve
private EconomyAPI reserveEconomy = null;
// private PermissionsAPI reservePermission = null;
public EconomyManager() {
setup();
@ -23,48 +32,68 @@ public class EconomyManager {
RegisteredServiceProvider<Economy> economyRsp = Bukkit.getServer().getServicesManager().getRegistration(Economy.class);
if (economyRsp != null)
economy = economyRsp.getProvider();
this.vaultEconomy = economyRsp.getProvider();
RegisteredServiceProvider<Permission> permissionRsp = Bukkit.getServer().getServicesManager().getRegistration(Permission.class);
if (permissionRsp != null)
permission = permissionRsp.getProvider();
this.vaultPermission = permissionRsp.getProvider();
} else if (Bukkit.getServer().getPluginManager().getPlugin("Reserve") != null) {
if (Reserve.instance().economyProvided())
this.reserveEconomy = Reserve.instance().economy();
// if (Reserve.instance().permissionsProvided())
// this.reservePermission = Reserve.instance().permissions();
}
}
public double getBalance(Player player) {
return economy == null ? 0.0D : economy.getBalance(player);
if (this.vaultEconomy != null)
return this.vaultEconomy.getBalance(player);
if (this.reserveEconomy != null)
return this.reserveEconomy.getHoldings(player.getUniqueId()).doubleValue();
return 0;
}
public boolean hasBalance(Player player, double money) {
return getBalance(player) >= money;
return this.getBalance(player) >= money;
}
public void withdraw(Player player, double money) {
if (economy != null)
economy.withdrawPlayer(player, money);
if (this.vaultEconomy != null)
this.vaultEconomy.withdrawPlayer(player, money);
else if (this.reserveEconomy != null)
this.reserveEconomy.removeHoldings(player.getUniqueId(), new BigDecimal(money));
Bukkit.getServer().getPluginManager().callEvent(new PlayerWithdrawMoneyEvent(player, money));
}
public void deposit(Player player, double money) {
if (economy != null) {
economy.depositPlayer(player, money);
}
if (this.vaultEconomy != null)
this.vaultEconomy.depositPlayer(player, money);
else if (this.reserveEconomy != null)
this.reserveEconomy.addHoldings(player.getUniqueId(), new BigDecimal(money));
Bukkit.getServer().getPluginManager().callEvent(new PlayerWithdrawMoneyEvent(player, money));
}
public boolean hasPermission(String world, OfflinePlayer offlinePlayer, String perm) {
if (permission != null)
return permission.playerHas(world, offlinePlayer, perm);
if (this.vaultPermission != null)
return this.vaultPermission.playerHas(world, offlinePlayer, perm);
// if (this.reservePermission != null) {
// // TODO
// }
return false;
}
public boolean isEconomy() {
return economy != null;
return this.vaultEconomy != null || this.reserveEconomy != null;
}
public boolean isPermission() {
return permission != null;
return this.vaultPermission != null/* || this.reservePermission != null*/;
}
}

View File

@ -1060,6 +1060,7 @@ public enum Materials {
int data;
boolean is13Plusonly;
private Material cachedMaterial;
private boolean isMaterialParsed = false;
Materials(String old13Mat, String old12Mat, int data) {
this(old13Mat, old12Mat, data, false);
@ -1237,7 +1238,7 @@ public enum Materials {
}
public Material parseMaterial() {
if (this.cachedMaterial != null)
if (this.cachedMaterial != null || this.isMaterialParsed)
return this.cachedMaterial;
if (this.isSpawner() && this != Materials.SPAWNER) {
@ -1260,6 +1261,7 @@ public enum Materials {
}
this.cachedMaterial = Material.matchMaterial(old12Mat);
this.isMaterialParsed = true;
return this.cachedMaterial;
}

View File

@ -4,7 +4,7 @@ version: @version@
api-version: 1.13
description: A unique SkyBlock plugin
author: Songoda
softdepend: [PlaceholderAPI, MVdWPlaceholderAPI, Vault, LeaderHeads, EpicSpawners, WildStacker, UltimateStacker, WorldEdit]
softdepend: [PlaceholderAPI, MVdWPlaceholderAPI, Vault, Reserve, LeaderHeads, EpicSpawners, WildStacker, UltimateStacker, WorldEdit]
loadbefore: [Multiverse-Core]
commands:
island:

View File

@ -1,7 +1,7 @@
allprojects {
apply plugin: 'java'
group = 'com.goodandevil.skyblock'
version = 'Build-78'
version = 'Build-78.3'
}
subprojects {