Money, ensure accounts exist before using them. If they are not players set balance to zero.
This commit is contained in:
parent
2c70489885
commit
ff3219ea6e
@ -10,7 +10,7 @@ public class Money
|
||||
|
||||
private static MoneyMixin mixin = null;
|
||||
public static MoneyMixin mixin() { return mixin; };
|
||||
public static void mixin(MoneyMixin newMixin) { mixin = newMixin; }
|
||||
public static void mixin(MoneyMixin mixin) { Money.mixin = mixin; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// EXTRACT
|
||||
|
@ -3,6 +3,8 @@ package com.massivecraft.mcore.money;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||
|
||||
import com.massivecraft.mcore.util.MUtil;
|
||||
|
||||
|
||||
|
||||
import net.milkbowl.vault.economy.Economy;
|
||||
@ -83,7 +85,7 @@ public class MoneyMixinVault extends MoneyMixinAbstract
|
||||
@Override
|
||||
public boolean create(String universe, String accountId)
|
||||
{
|
||||
return this.economy.createPlayerAccount(accountId, universe);
|
||||
return this.ensureExists(universe, accountId);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
@ -93,12 +95,16 @@ public class MoneyMixinVault extends MoneyMixinAbstract
|
||||
@Override
|
||||
public double get(String universe, String accountId)
|
||||
{
|
||||
this.ensureExists(universe, accountId);
|
||||
|
||||
return this.economy.getBalance(accountId, universe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean has(String universe, String accountId, double amount)
|
||||
{
|
||||
this.ensureExists(universe, accountId);
|
||||
|
||||
return this.economy.has(accountId, universe, amount);
|
||||
}
|
||||
|
||||
@ -116,21 +122,39 @@ public class MoneyMixinVault extends MoneyMixinAbstract
|
||||
@Override
|
||||
public boolean add(String universe, String accountId, double amount)
|
||||
{
|
||||
if (amount < 0)
|
||||
{
|
||||
return subtract(universe, accountId, -amount);
|
||||
}
|
||||
if (amount < 0) return subtract(universe, accountId, -amount);
|
||||
|
||||
this.ensureExists(universe, accountId);
|
||||
|
||||
return economy.depositPlayer(accountId, universe, amount).transactionSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean subtract(String universe, String accountId, double amount)
|
||||
{
|
||||
if (amount < 0)
|
||||
{
|
||||
return add(universe, accountId, -amount);
|
||||
}
|
||||
if (amount < 0) return add(universe, accountId, -amount);
|
||||
|
||||
this.ensureExists(universe, accountId);
|
||||
|
||||
return economy.withdrawPlayer(accountId, universe, amount).transactionSuccess();
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// UTIL
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean ensureExists(String universe, String accountId)
|
||||
{
|
||||
if (this.economy.hasAccount(accountId, universe)) return true;
|
||||
|
||||
if (!this.economy.createPlayerAccount(accountId, universe)) return false;
|
||||
|
||||
if (MUtil.isValidPlayerName(accountId)) return true;
|
||||
|
||||
double balance = this.economy.getBalance(accountId, universe);
|
||||
economy.withdrawPlayer(accountId, universe, balance);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user