Moves the EconomyHandler to utility and adds some encapsulation for three of its variables

This commit is contained in:
Kristian Knarvik 2021-02-22 20:26:10 +01:00
parent e665a49f03
commit e5fef0b16a
7 changed files with 101 additions and 15 deletions

View File

@ -17,6 +17,7 @@ import net.knarcraft.stargate.portal.PortalHandler;
import net.knarcraft.stargate.portal.PortalOption;
import net.knarcraft.stargate.thread.BlockPopulatorThread;
import net.knarcraft.stargate.thread.StarGateThread;
import net.knarcraft.stargate.utility.EconomyHandler;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Server;
@ -613,9 +614,9 @@ public class Stargate extends JavaPlugin {
permDebug = newConfig.getBoolean("permdebug");
// Economy
EconomyHandler.economyEnabled = newConfig.getBoolean("useeconomy");
EconomyHandler.createCost = newConfig.getInt("createcost");
EconomyHandler.destroyCost = newConfig.getInt("destroycost");
EconomyHandler.useCost = newConfig.getInt("usecost");
EconomyHandler.setCreateCost(newConfig.getInt("createcost"));
EconomyHandler.setDestroyCost(newConfig.getInt("destroycost"));
EconomyHandler.setUseCost(newConfig.getInt("usecost"));
EconomyHandler.toOwner = newConfig.getBoolean("toowner");
EconomyHandler.chargeFreeDestination = newConfig.getBoolean("chargefreedestination");
EconomyHandler.freeGatesGreen = newConfig.getBoolean("freegatesgreen");

View File

@ -1,6 +1,6 @@
package net.knarcraft.stargate.listener;
import net.knarcraft.stargate.EconomyHandler;
import net.knarcraft.stargate.utility.EconomyHandler;
import net.knarcraft.stargate.Stargate;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

View File

@ -1,6 +1,6 @@
package net.knarcraft.stargate.portal;
import net.knarcraft.stargate.EconomyHandler;
import net.knarcraft.stargate.utility.EconomyHandler;
import net.knarcraft.stargate.Stargate;
import net.knarcraft.stargate.utility.MaterialHelper;
import org.bukkit.Material;
@ -13,11 +13,15 @@ import java.util.List;
import java.util.Scanner;
import java.util.logging.Level;
/**
* The gate handler keeps track of all gates
*/
public class GateHandler {
private static final Character ANYTHING = ' ';
private static final Character ENTRANCE = '.';
private static final Character EXIT = '*';
private static final Character CONTROL_BLOCK = '-';
private static Material defaultPortalBlockOpen = Material.NETHER_PORTAL;
private static Material defaultPortalBlockClosed = Material.AIR;
@ -49,10 +53,25 @@ public class GateHandler {
return ENTRANCE;
}
/**
* Gets the character used for defining the exit
*
* @return <p>The character used for defining the exit</p>
*/
public static Character getExitCharacter() {
return EXIT;
}
/**
* Gets the character used for defining control blocks
*
* @return <p>The character used for defining control blocks</p>
*/
public static Character getControlBlockCharacter() {
return CONTROL_BLOCK;
}
public static void registerGate(Gate gate) {
gates.put(gate.getFilename(), gate);

View File

@ -182,7 +182,7 @@ public class GateLayout {
List<RelativeBlockVector> controlList, List<RelativeBlockVector> entranceList,
List<RelativeBlockVector> borderList) {
//Add control blocks
if (key.equals('-')) {
if (key.equals(GateHandler.getControlBlockCharacter())) {
controlList.add(new RelativeBlockVector(rowIndex, lineIndex, 0));
}

View File

@ -2,7 +2,7 @@ package net.knarcraft.stargate.portal;
import net.knarcraft.stargate.BlockLocation;
import net.knarcraft.stargate.BloxPopulator;
import net.knarcraft.stargate.EconomyHandler;
import net.knarcraft.stargate.utility.EconomyHandler;
import net.knarcraft.stargate.RelativeBlockVector;
import net.knarcraft.stargate.Stargate;
import net.knarcraft.stargate.event.StargateActivateEvent;

View File

@ -1,5 +1,6 @@
package net.knarcraft.stargate;
package net.knarcraft.stargate.utility;
import net.knarcraft.stargate.Stargate;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@ -12,18 +13,79 @@ import java.util.UUID;
/**
* This handler handles economy actions such as payment for using a gate
*/
public class EconomyHandler {
public final class EconomyHandler {
public static boolean economyEnabled = false;
public static Economy economy = null;
public static Plugin vault = null;
public static int useCost = 0;
public static int createCost = 0;
public static int destroyCost = 0;
private static int useCost = 0;
private static int createCost = 0;
private static int destroyCost = 0;
public static boolean toOwner = false;
public static boolean chargeFreeDestination = true;
public static boolean freeGatesGreen = false;
/**
* Gets the cost of using a gate without a specified cost
*
* @return <p>The gate use cost</p>
*/
public static int getUseCost() {
return useCost;
}
/**
* Sets the cost of using a gate without a specified cost
*
* <p>The use cost cannot be negative.</p>
*
* @param useCost <p>The gate use cost</p>
*/
public static void setUseCost(int useCost) {
if (useCost < 0) {
throw new IllegalArgumentException("Using a gate cannot cost a negative amount");
}
EconomyHandler.useCost = useCost;
}
/**
* Gets the cost of creating a gate without a specified cost
*
* @return <p>The gate creation cost</p>
*/
public static int getCreateCost() {
return createCost;
}
/**
* Sets the cost of creating a gate without a specified cost
*
* <p>The gate create cost cannot be negative</p>
*
* @param createCost <p>The gate creation cost</p>
*/
public static void setCreateCost(int createCost) {
EconomyHandler.createCost = createCost;
}
/**
* Gets the cost of destroying a gate without a specified cost
*
* @return <p>The gate destruction cost</p>
*/
public static int getDestroyCost() {
return destroyCost;
}
/**
* Sets the cost of destroying a gate without a specified cost
*
* @param destroyCost <p>The gate destruction cost</p>
*/
public static void setDestroyCost(int destroyCost) {
EconomyHandler.destroyCost = destroyCost;
}
/**
* Gets the balance (money) of the given player
*
@ -51,6 +113,7 @@ public class EconomyHandler {
if (!economy.has(player, amount)) {
return false;
}
//Take money from the user and give to the owner
economy.withdrawPlayer(player, amount);
economy.depositPlayer(Bukkit.getOfflinePlayer(target), amount);
}

View File

@ -1,10 +1,12 @@
package net.knarcraft.stargate.utility;
import net.knarcraft.stargate.EconomyHandler;
import net.knarcraft.stargate.portal.Portal;
import net.knarcraft.stargate.Stargate;
import org.bukkit.entity.Player;
/**
* The economy helper class has helper functions for player payment
*/
public final class EconomyHelper {
private EconomyHelper() {
@ -24,7 +26,8 @@ public final class EconomyHelper {
//Try to charge the player
if (entrancePortal.getGate().getToOwner()) {
success = entrancePortal.getOwnerUUID() != null && Stargate.chargePlayer(player, entrancePortal.getOwnerUUID(), cost);
success = entrancePortal.getOwnerUUID() != null && Stargate.chargePlayer(player,
entrancePortal.getOwnerUUID(), cost);
} else {
success = Stargate.chargePlayer(player, cost);
}