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
|
|
|
}
|