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

131 lines
3.7 KiB
Java

package com.Acrobot.ChestShop.Listeners.Economy;
import com.Acrobot.ChestShop.Database.Account;
import com.Acrobot.ChestShop.Events.Economy.*;
import com.Acrobot.ChestShop.UUIDs.NameManager;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import java.math.BigDecimal;
import java.util.UUID;
/**
* @author Acrobot
*/
public class ServerAccountCorrector implements Listener {
@EventHandler(priority = EventPriority.LOWEST)
public static void onCurrencyAdd(CurrencyAddEvent event) {
UUID target = event.getTarget();
if (!NameManager.isAdminShop(target) || NameManager.isServerEconomyAccount(target)) {
return;
}
Account account = NameManager.getServerEconomyAccount();
target = account != null ? account.getUuid() : null;
if (target == null) {
event.setHandled(true);
return;
}
event.setTarget(target);
}
@EventHandler(priority = EventPriority.LOWEST)
public static void onCurrencySubtract(CurrencySubtractEvent event) {
UUID target = event.getTarget();
if (!NameManager.isAdminShop(target) || NameManager.isServerEconomyAccount(target)) {
return;
}
Account account = NameManager.getServerEconomyAccount();
target = account != null ? account.getUuid() : null;
if (target == null) {
event.setHandled(true);
return;
}
event.setTarget(target);
}
@EventHandler(priority = EventPriority.LOWEST)
public static void onCurrencyTransfer(CurrencyTransferEvent event) {
UUID partner = event.getPartner();
if (!NameManager.isAdminShop(partner) || NameManager.isServerEconomyAccount(partner)) {
return;
}
Account account = NameManager.getServerEconomyAccount();
partner = account != null ? account.getUuid() : null;
if (partner == null) {
return;
}
event.setPartner(partner);
}
@EventHandler(priority = EventPriority.LOWEST)
public static void onCurrencyCheck(CurrencyCheckEvent event) {
UUID target = event.getAccount();
if (!NameManager.isAdminShop(target) || NameManager.isServerEconomyAccount(target)) {
return;
}
Account account = NameManager.getServerEconomyAccount();
target = account != null ? account.getUuid() : null;
if (target == null) {
event.hasEnough(true);
return;
}
event.setAccount(target);
}
@EventHandler(priority = EventPriority.LOWEST)
public static void onCurrencyHoldCheck(CurrencyHoldEvent event) {
UUID target = event.getAccount();
if (!NameManager.isAdminShop(target) || NameManager.isServerEconomyAccount(target)) {
return;
}
Account account = NameManager.getServerEconomyAccount();
target = account != null ? account.getUuid() : null;
if (target == null) {
event.canHold(true);
return;
}
event.setAccount(target);
}
@EventHandler(priority = EventPriority.LOWEST)
public static void onBalanceCheck(CurrencyAmountEvent event) {
UUID target = event.getAccount();
if (!NameManager.isAdminShop(target) || NameManager.isServerEconomyAccount(target)) {
return;
}
Account account = NameManager.getServerEconomyAccount();
target = account != null ? account.getUuid() : null;
if (target == null) {
event.setAmount(BigDecimal.valueOf(Double.MAX_VALUE));
return;
}
event.setAccount(target);
}
}