2012-02-19 09:22:02 +01:00
/ * 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 < http : //www.gnu.org/licenses/>.
* /
2011-12-03 19:35:49 +01:00
package net.milkbowl.vault.economy.plugins ;
2011-12-22 22:32:38 +01:00
import java.util.ArrayList ;
import java.util.List ;
2012-03-12 07:36:45 +01:00
import java.util.logging.Level ;
2011-12-03 19:35:49 +01:00
import java.util.logging.Logger ;
2014-05-08 16:10:45 +02:00
import net.milkbowl.vault.economy.AbstractEconomy ;
2012-01-26 01:06:29 +01:00
import net.milkbowl.vault.economy.EconomyResponse ;
import net.milkbowl.vault.economy.EconomyResponse.ResponseType ;
import org.bukkit.Bukkit ;
2011-12-03 19:35:49 +01:00
import org.bukkit.OfflinePlayer ;
2012-01-26 01:06:29 +01:00
import org.bukkit.event.EventHandler ;
import org.bukkit.event.EventPriority ;
import org.bukkit.event.Listener ;
2011-12-03 19:35:49 +01:00
import org.bukkit.event.server.PluginDisableEvent ;
import org.bukkit.event.server.PluginEnableEvent ;
import org.bukkit.plugin.Plugin ;
import ca.agnate.EconXP.EconXP ;
2014-05-08 16:10:45 +02:00
public class Economy_EconXP extends AbstractEconomy {
2019-04-28 21:52:14 +02:00
private final Logger log ;
2012-01-28 20:15:41 +01:00
2012-02-08 23:26:00 +01:00
private final String name = " EconXP " ;
2012-01-28 20:15:41 +01:00
private Plugin plugin = null ;
private EconXP econ = null ;
public Economy_EconXP ( Plugin plugin ) {
this . plugin = plugin ;
2019-04-28 21:52:14 +02:00
this . log = plugin . getLogger ( ) ;
2012-01-28 20:15:41 +01:00
Bukkit . getServer ( ) . getPluginManager ( ) . registerEvents ( new EconomyServerListener ( this ) , plugin ) ;
2012-03-12 07:36:45 +01:00
log . log ( Level . WARNING , " EconXP is an integer only economy, you may notice inconsistencies with accounts if you do not setup your other econ using plugins accordingly! " ) ;
2012-01-28 20:15:41 +01:00
// Load Plugin in case it was loaded before
if ( econ = = null ) {
Plugin econ = plugin . getServer ( ) . getPluginManager ( ) . getPlugin ( " EconXP " ) ;
if ( econ ! = null & & econ . isEnabled ( ) ) {
this . econ = ( EconXP ) econ ;
2019-06-28 23:00:52 +02:00
log . info ( String . format ( " [Economy] %s hooked. " , name ) ) ;
2012-01-28 20:15:41 +01:00
}
}
}
public class EconomyServerListener implements Listener {
Economy_EconXP economy = null ;
public EconomyServerListener ( Economy_EconXP economy ) {
this . economy = economy ;
}
@EventHandler ( priority = EventPriority . MONITOR )
public void onPluginEnable ( PluginEnableEvent event ) {
if ( economy . econ = = null ) {
2013-09-04 00:39:25 +02:00
Plugin eco = event . getPlugin ( ) ;
2012-01-28 20:15:41 +01:00
2013-09-04 00:39:25 +02:00
if ( eco . getDescription ( ) . getName ( ) . equals ( " EconXP " ) ) {
2012-01-28 20:15:41 +01:00
economy . econ = ( EconXP ) eco ;
2019-06-28 23:00:52 +02:00
log . info ( String . format ( " [Economy] %s hooked. " , economy . name ) ) ;
2012-01-28 20:15:41 +01:00
}
}
}
@EventHandler ( priority = EventPriority . MONITOR )
public void onPluginDisable ( PluginDisableEvent event ) {
if ( economy . econ ! = null ) {
if ( event . getPlugin ( ) . getDescription ( ) . getName ( ) . equals ( " EconXP " ) ) {
economy . econ = null ;
2019-06-28 23:00:52 +02:00
log . info ( String . format ( " [Economy] %s unhooked. " , economy . name ) ) ;
2012-01-28 20:15:41 +01:00
}
}
}
}
@Override
public boolean isEnabled ( ) {
return this . econ ! = null ;
}
@Override
public String getName ( ) {
return name ;
}
@Override
public String format ( double amount ) {
amount = Math . ceil ( amount ) ;
return String . format ( " %d %s " , ( int ) amount , " experience " ) ;
}
2012-02-20 18:54:20 +01:00
@Override
public String currencyNamePlural ( ) {
return " experience " ;
}
@Override
public String currencyNameSingular ( ) {
return " experience " ;
}
2012-01-28 20:15:41 +01:00
@Override
public double getBalance ( String playerName ) {
OfflinePlayer player = econ . getPlayer ( playerName ) ;
if ( player = = null ) { return 0 ; }
return econ . getExp ( player ) ;
}
@Override
public boolean has ( String playerName , double amount ) {
OfflinePlayer player = econ . getPlayer ( playerName ) ;
2011-12-03 19:35:49 +01:00
if ( player = = null ) { return false ; }
2012-01-28 20:15:41 +01:00
return econ . hasExp ( player , ( int ) Math . ceil ( amount ) ) ;
}
@Override
public EconomyResponse withdrawPlayer ( String playerName , double amount ) {
OfflinePlayer player = econ . getPlayer ( playerName ) ;
2011-12-03 19:35:49 +01:00
if ( player = = null ) {
return new EconomyResponse ( 0 , 0 , ResponseType . FAILURE , " Player does not exist " ) ;
}
2012-01-28 20:15:41 +01:00
double balance = econ . getExp ( player ) ;
amount = Math . ceil ( amount ) ;
if ( amount < 0 ) {
2011-12-03 19:35:49 +01:00
return new EconomyResponse ( 0 , balance , ResponseType . FAILURE , " Cannot withdraw negative funds " ) ;
}
2012-01-28 20:15:41 +01:00
if ( econ . hasExp ( player , ( int ) amount ) = = false ) {
return new EconomyResponse ( 0 , balance , ResponseType . FAILURE , " Insufficient funds " ) ;
}
econ . removeExp ( player , ( int ) amount ) ;
double finalBalance = econ . getExp ( player ) ;
2011-12-03 19:35:49 +01:00
return new EconomyResponse ( amount , finalBalance , ResponseType . SUCCESS , null ) ;
2012-01-28 20:15:41 +01:00
}
@Override
public EconomyResponse depositPlayer ( String playerName , double amount ) {
OfflinePlayer player = econ . getPlayer ( playerName ) ;
2011-12-03 19:35:49 +01:00
if ( player = = null ) {
return new EconomyResponse ( 0 , 0 , ResponseType . FAILURE , " Player does not exist " ) ;
}
2012-01-28 20:15:41 +01:00
2011-12-03 19:35:49 +01:00
double balance = econ . getExp ( player ) ;
amount = Math . ceil ( amount ) ;
2012-01-28 20:15:41 +01:00
2011-12-03 19:35:49 +01:00
if ( amount < 0 ) {
return new EconomyResponse ( 0 , balance , ResponseType . FAILURE , " Cannot withdraw negative funds " ) ;
}
2012-01-28 20:15:41 +01:00
2011-12-03 19:35:49 +01:00
econ . addExp ( player , ( int ) amount ) ;
2012-01-28 20:15:41 +01:00
balance = econ . getExp ( player ) ;
return new EconomyResponse ( amount , balance , ResponseType . SUCCESS , null ) ;
}
@Override
public EconomyResponse createBank ( String name , String player ) {
return new EconomyResponse ( 0 , 0 , ResponseType . NOT_IMPLEMENTED , " EconXP does not support bank accounts! " ) ;
}
@Override
public EconomyResponse deleteBank ( String name ) {
return new EconomyResponse ( 0 , 0 , ResponseType . NOT_IMPLEMENTED , " EconXP does not support bank accounts! " ) ;
}
@Override
public EconomyResponse bankHas ( String name , double amount ) {
return new EconomyResponse ( 0 , 0 , ResponseType . NOT_IMPLEMENTED , " EconXP does not support bank accounts! " ) ;
}
@Override
public EconomyResponse bankWithdraw ( String name , double amount ) {
return new EconomyResponse ( 0 , 0 , ResponseType . NOT_IMPLEMENTED , " EconXP does not support bank accounts! " ) ;
}
@Override
public EconomyResponse bankDeposit ( String name , double amount ) {
return new EconomyResponse ( 0 , 0 , ResponseType . NOT_IMPLEMENTED , " EconXP does not support bank accounts! " ) ;
}
@Override
public EconomyResponse isBankOwner ( String name , String playerName ) {
return new EconomyResponse ( 0 , 0 , ResponseType . NOT_IMPLEMENTED , " EconXP does not support bank accounts! " ) ;
}
@Override
public EconomyResponse isBankMember ( String name , String playerName ) {
return new EconomyResponse ( 0 , 0 , ResponseType . NOT_IMPLEMENTED , " EconXP does not support bank accounts! " ) ;
}
@Override
public EconomyResponse bankBalance ( String name ) {
return new EconomyResponse ( 0 , 0 , ResponseType . NOT_IMPLEMENTED , " EconXP does not support bank accounts! " ) ;
}
2011-12-22 22:32:38 +01:00
@Override
public List < String > getBanks ( ) {
return new ArrayList < String > ( ) ;
}
2012-01-28 20:15:41 +01:00
2012-01-02 19:19:29 +01:00
@Override
public boolean hasBankSupport ( ) {
return false ;
}
2012-01-02 19:50:16 +01:00
@Override
public boolean hasAccount ( String playerName ) {
return econ . getPlayer ( playerName ) ! = null ;
}
2012-01-15 20:55:14 +01:00
@Override
public boolean createPlayerAccount ( String playerName ) {
return false ;
}
2012-06-25 03:28:01 +02:00
@Override
public int fractionalDigits ( ) {
return 0 ;
}
2013-03-01 01:54:32 +01:00
@Override
public boolean hasAccount ( String playerName , String worldName ) {
return hasAccount ( playerName ) ;
}
@Override
public double getBalance ( String playerName , String world ) {
return getBalance ( playerName ) ;
}
@Override
public boolean has ( String playerName , String worldName , double amount ) {
return has ( playerName , amount ) ;
}
@Override
public EconomyResponse withdrawPlayer ( String playerName , String worldName , double amount ) {
return withdrawPlayer ( playerName , amount ) ;
}
@Override
public EconomyResponse depositPlayer ( String playerName , String worldName , double amount ) {
return depositPlayer ( playerName , amount ) ;
}
@Override
public boolean createPlayerAccount ( String playerName , String worldName ) {
return createPlayerAccount ( playerName ) ;
}
2011-12-03 19:35:49 +01:00
}