2012-08-15 18:06:13 +02:00
|
|
|
package net.citizensnpcs;
|
|
|
|
|
|
|
|
import net.citizensnpcs.Settings.Setting;
|
|
|
|
import net.citizensnpcs.api.event.PlayerCreateNPCEvent;
|
2012-08-15 18:08:36 +02:00
|
|
|
import net.citizensnpcs.util.Messaging;
|
|
|
|
import net.citizensnpcs.util.StringHelper;
|
2012-08-15 18:06:13 +02:00
|
|
|
import net.milkbowl.vault.economy.Economy;
|
|
|
|
|
2012-08-15 18:08:36 +02:00
|
|
|
import org.bukkit.ChatColor;
|
2012-08-15 18:06:13 +02:00
|
|
|
import org.bukkit.event.EventHandler;
|
|
|
|
import org.bukkit.event.Listener;
|
|
|
|
|
|
|
|
import com.google.common.base.Preconditions;
|
|
|
|
|
2012-09-09 11:35:26 +02:00
|
|
|
public class PaymentListener implements Listener {
|
2012-08-15 18:06:13 +02:00
|
|
|
private final Economy provider;
|
|
|
|
|
2012-09-09 11:35:26 +02:00
|
|
|
public PaymentListener(Economy provider) {
|
2012-08-15 18:06:13 +02:00
|
|
|
Preconditions.checkNotNull(provider, "provider cannot be null");
|
|
|
|
this.provider = provider;
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(ignoreCancelled = true)
|
|
|
|
public void onPlayerCreateNPC(PlayerCreateNPCEvent event) {
|
|
|
|
String name = event.getCreator().getName();
|
|
|
|
boolean hasAccount = provider.hasAccount(name);
|
2012-08-15 18:08:36 +02:00
|
|
|
if (!hasAccount || event.getCreator().hasPermission("citizens.npc.ignore-cost"))
|
2012-08-15 18:06:13 +02:00
|
|
|
return;
|
|
|
|
double cost = Setting.NPC_COST.asDouble();
|
|
|
|
boolean hasEnough = provider.has(name, cost);
|
|
|
|
if (!hasEnough) {
|
|
|
|
event.setCancelled(true);
|
|
|
|
event.setCancelReason(String.format("Need at least %s.", provider.format(cost)));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
provider.bankWithdraw(name, cost);
|
2012-08-15 18:08:36 +02:00
|
|
|
Messaging.sendF(event.getCreator(), ChatColor.GREEN + "Withdrew %s for your NPC.",
|
|
|
|
StringHelper.wrap(provider.format(cost)));
|
2012-08-15 18:06:13 +02:00
|
|
|
}
|
|
|
|
}
|