ChestShop-3/src/main/java/com/Acrobot/ChestShop/Listeners/Economy/Plugins/VaultListener.java

121 lines
3.1 KiB
Java
Raw Normal View History

2013-07-13 23:12:02 +02:00
package com.Acrobot.ChestShop.Listeners.Economy.Plugins;
2013-05-30 16:57:54 +02:00
2013-05-30 16:58:42 +02:00
import com.Acrobot.ChestShop.Events.Economy.*;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.economy.EconomyResponse;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.RegisteredServiceProvider;
import javax.annotation.Nullable;
2013-05-30 16:57:54 +02:00
/**
2013-05-30 16:58:42 +02:00
* Represents a Vault connector
*
2013-05-30 16:57:54 +02:00
* @author Acrobot
*/
2013-05-30 16:58:42 +02:00
public class VaultListener implements Listener {
private final Economy provider;
private VaultListener(Economy provider) {
this.provider = provider;
}
/**
* Creates a new VaultListener and returns it (if possible)
*
* @return VaultListener
*/
public static @Nullable VaultListener initializeVault() {
RegisteredServiceProvider<Economy> rsp = Bukkit.getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
if (rsp == null) {
return null;
}
Economy provider = rsp.getProvider();
if (provider == null) {
return null;
} else {
return new VaultListener(provider);
}
}
@EventHandler
public void onCurrencyCheck(CurrencyCheckEvent event) {
2013-07-13 23:12:02 +02:00
if (event.hasEnough()) {
return;
}
2013-05-30 16:58:42 +02:00
World world = event.getWorld();
if (!provider.has(event.getAccount(), world.getName(), event.getDoubleAmount())) {
event.hasEnough(false);
}
}
@EventHandler
public void onAccountCheck(AccountCheckEvent event) {
2013-07-13 23:12:02 +02:00
if (event.hasAccount()) {
return;
}
2013-05-30 16:58:42 +02:00
World world = event.getWorld();
if (!provider.hasAccount(event.getAccount(), world.getName())) {
2013-07-13 23:12:02 +02:00
event.hasAccount(false);
2013-05-30 16:58:42 +02:00
}
}
@EventHandler
public void onCurrencyFormat(CurrencyFormatEvent event) {
2013-07-13 23:12:02 +02:00
if (!event.getFormattedAmount().isEmpty()) {
return;
}
2013-05-30 16:58:42 +02:00
String formatted = provider.format(event.getDoubleAmount());
event.setFormattedAmount(formatted);
}
@EventHandler
public void onCurrencyAdd(CurrencyAddEvent event) {
2013-07-13 23:12:02 +02:00
if (event.isAdded()) {
return;
}
2013-05-30 16:58:42 +02:00
World world = event.getWorld();
provider.depositPlayer(event.getTarget(), world.getName(), event.getDoubleAmount());
}
@EventHandler
public void onCurrencySubtraction(CurrencySubtractEvent event) {
2013-07-13 23:12:02 +02:00
if (event.isSubtracted()) {
return;
}
2013-05-30 16:58:42 +02:00
World world = event.getWorld();
provider.withdrawPlayer(event.getTarget(), world.getName(), event.getDoubleAmount());
}
@EventHandler
public void onCurrencyTransfer(CurrencyTransferEvent event) {
2013-07-13 23:12:02 +02:00
if (event.hasBeenTransferred()) {
return;
}
2013-05-30 16:58:42 +02:00
World world = event.getWorld();
EconomyResponse response = provider.withdrawPlayer(event.getSender(), world.getName(), event.getDoubleAmount());
if (response.transactionSuccess()) {
provider.depositPlayer(event.getReceiver(), world.getName(), event.getDoubleAmount());
}
}
2013-05-30 16:57:54 +02:00
}