Moves economy related code to its own class
This commit is contained in:
parent
7bfa60aeee
commit
3717e4d3b6
@ -23,8 +23,8 @@ import net.knarcraft.bookswithoutborders.command.GiveTabCompleter;
|
|||||||
import net.knarcraft.bookswithoutborders.listener.PlayerEventListener;
|
import net.knarcraft.bookswithoutborders.listener.PlayerEventListener;
|
||||||
import net.knarcraft.bookswithoutborders.listener.SignEventListener;
|
import net.knarcraft.bookswithoutborders.listener.SignEventListener;
|
||||||
import net.knarcraft.bookswithoutborders.utility.BookToFromTextHelper;
|
import net.knarcraft.bookswithoutborders.utility.BookToFromTextHelper;
|
||||||
|
import net.knarcraft.bookswithoutborders.utility.EconomyHelper;
|
||||||
import net.knarcraft.bookswithoutborders.utility.FileHelper;
|
import net.knarcraft.bookswithoutborders.utility.FileHelper;
|
||||||
import net.milkbowl.vault.economy.Economy;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
@ -38,9 +38,7 @@ import org.bukkit.inventory.ItemFactory;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.PlayerInventory;
|
import org.bukkit.inventory.PlayerInventory;
|
||||||
import org.bukkit.inventory.meta.BookMeta;
|
import org.bukkit.inventory.meta.BookMeta;
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
@ -69,7 +67,6 @@ public class BooksWithoutBorders extends JavaPlugin {
|
|||||||
public static List<String> firstBooks;
|
public static List<String> firstBooks;
|
||||||
public static String welcomeMessage;
|
public static String welcomeMessage;
|
||||||
public static List<String> existingPlayers;
|
public static List<String> existingPlayers;
|
||||||
public static Economy eco;
|
|
||||||
public static Material bookPriceType = null;
|
public static Material bookPriceType = null;
|
||||||
public static double bookPriceQuantity;
|
public static double bookPriceQuantity;
|
||||||
public static boolean authorOnlyCopy;
|
public static boolean authorOnlyCopy;
|
||||||
@ -264,7 +261,7 @@ public class BooksWithoutBorders extends JavaPlugin {
|
|||||||
//Converts string into material
|
//Converts string into material
|
||||||
String sMaterial = config.getString("Options.Price_to_create_book.Item_type", " ");
|
String sMaterial = config.getString("Options.Price_to_create_book.Item_type", " ");
|
||||||
if (sMaterial.equalsIgnoreCase("Economy")) {
|
if (sMaterial.equalsIgnoreCase("Economy")) {
|
||||||
if (setupEconomy()) {
|
if (EconomyHelper.setupEconomy()) {
|
||||||
bookPriceType = Material.AIR;
|
bookPriceType = Material.AIR;
|
||||||
} else {
|
} else {
|
||||||
sendErrorMessage(consoleSender, "BooksWithoutBorders failed to hook into Vault! Book price not set!");
|
sendErrorMessage(consoleSender, "BooksWithoutBorders failed to hook into Vault! Book price not set!");
|
||||||
@ -295,19 +292,6 @@ public class BooksWithoutBorders extends JavaPlugin {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setupEconomy() {
|
|
||||||
Plugin plugin = getServer().getPluginManager().getPlugin("Vault");
|
|
||||||
|
|
||||||
if (plugin != null) {
|
|
||||||
RegisteredServiceProvider<Economy> economyProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
|
|
||||||
if (economyProvider != null) {
|
|
||||||
eco = economyProvider.getProvider();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (eco != null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean loadExistingPlayers() {
|
public boolean loadExistingPlayers() {
|
||||||
File fTest = new File(this.getDataFolder().getAbsolutePath() + getSlash() + "Existing Players.txt");
|
File fTest = new File(this.getDataFolder().getAbsolutePath() + getSlash() + "Existing Players.txt");
|
||||||
existingPlayers = new ArrayList<>();
|
existingPlayers = new ArrayList<>();
|
||||||
@ -446,7 +430,7 @@ public class BooksWithoutBorders extends JavaPlugin {
|
|||||||
int itemCost = (int) cost;
|
int itemCost = (int) cost;
|
||||||
|
|
||||||
if (BooksWithoutBorders.bookPriceType == Material.AIR) {
|
if (BooksWithoutBorders.bookPriceType == Material.AIR) {
|
||||||
return !payForBookPrintingEconomy(player, cost, numCopies);
|
return !EconomyHelper.payForBookPrintingEconomy(player, cost, numCopies);
|
||||||
} else {
|
} else {
|
||||||
if (player.getInventory().contains(BooksWithoutBorders.bookPriceType, itemCost)) {
|
if (player.getInventory().contains(BooksWithoutBorders.bookPriceType, itemCost)) {
|
||||||
payForBookPrintingItem(player, itemCost);
|
payForBookPrintingItem(player, itemCost);
|
||||||
@ -459,27 +443,6 @@ public class BooksWithoutBorders extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Uses economy to take payment for printing a number of books
|
|
||||||
*
|
|
||||||
* @param player <p>The player which needs to pay</p>
|
|
||||||
* @param cost <p>The cost of the book printing</p>
|
|
||||||
* @param numCopies <p>The number of books the player is printing</p>
|
|
||||||
* @return <p>True if the player had the money and it has been withdrawn</p>
|
|
||||||
*/
|
|
||||||
private boolean payForBookPrintingEconomy(Player player, double cost, int numCopies) {
|
|
||||||
Economy economy = BooksWithoutBorders.eco;
|
|
||||||
if ((economy.getBalance(player) - cost) >= 0) {
|
|
||||||
economy.withdrawPlayer(player, cost);
|
|
||||||
BooksWithoutBorders.sendSuccessMessage(player, economy.format(cost) + " withdrawn to create " + numCopies + " book(s)");
|
|
||||||
BooksWithoutBorders.sendSuccessMessage(player, "New balance: " + economy.format(economy.getBalance(player)));
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
BooksWithoutBorders.sendErrorMessage(player, economy.format(cost) + " is required for this command!");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Takes payment for printing a number of books by withdrawing the correct item
|
* Takes payment for printing a number of books by withdrawing the correct item
|
||||||
*
|
*
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package net.knarcraft.bookswithoutborders.command;
|
package net.knarcraft.bookswithoutborders.command;
|
||||||
|
|
||||||
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
|
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
|
||||||
|
import net.knarcraft.bookswithoutborders.utility.EconomyHelper;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
@ -63,7 +64,7 @@ public class CommandBooksWithoutBorders implements CommandExecutor {
|
|||||||
if (bookPriceType != Material.AIR) {
|
if (bookPriceType != Material.AIR) {
|
||||||
sendErrorMessage(sender, "[" + (int) bookPriceQuantity + " " + bookPriceType.toString() + "(s) are required to create a book]");
|
sendErrorMessage(sender, "[" + (int) bookPriceQuantity + " " + bookPriceType.toString() + "(s) are required to create a book]");
|
||||||
} else {
|
} else {
|
||||||
sendErrorMessage(sender, "[" + BooksWithoutBorders.eco.format(bookPriceQuantity) + " is required to create a book]");
|
sendErrorMessage(sender, "[" + EconomyHelper.getEconomy().format(bookPriceQuantity) + " is required to create a book]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sender.sendMessage(getCommandColor() + "Commands:");
|
sender.sendMessage(getCommandColor() + "Commands:");
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package net.knarcraft.bookswithoutborders.command;
|
package net.knarcraft.bookswithoutborders.command;
|
||||||
|
|
||||||
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
|
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
|
||||||
|
import net.knarcraft.bookswithoutborders.utility.EconomyHelper;
|
||||||
import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
|
import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@ -109,7 +110,7 @@ public class CommandSetBookPrice implements CommandExecutor {
|
|||||||
* @return <p>True if the price was changed successfully</p>
|
* @return <p>True if the price was changed successfully</p>
|
||||||
*/
|
*/
|
||||||
private boolean setEconomyPrice(CommandSender sender, double price) {
|
private boolean setEconomyPrice(CommandSender sender, double price) {
|
||||||
if (booksWithoutBorders.setupEconomy()) {
|
if (EconomyHelper.setupEconomy()) {
|
||||||
BooksWithoutBorders.bookPriceQuantity = price;
|
BooksWithoutBorders.bookPriceQuantity = price;
|
||||||
BooksWithoutBorders.bookPriceType = Material.AIR;
|
BooksWithoutBorders.bookPriceType = Material.AIR;
|
||||||
booksWithoutBorders.getConfig().set("Options.Price_to_create_book.Item_type", "Economy");
|
booksWithoutBorders.getConfig().set("Options.Price_to_create_book.Item_type", "Economy");
|
||||||
@ -118,7 +119,7 @@ public class CommandSetBookPrice implements CommandExecutor {
|
|||||||
booksWithoutBorders.saveConfig();
|
booksWithoutBorders.saveConfig();
|
||||||
|
|
||||||
BooksWithoutBorders.sendSuccessMessage(sender, "Book creation price set to " +
|
BooksWithoutBorders.sendSuccessMessage(sender, "Book creation price set to " +
|
||||||
BooksWithoutBorders.eco.format(BooksWithoutBorders.bookPriceQuantity) + "!");
|
EconomyHelper.getEconomy().format(BooksWithoutBorders.bookPriceQuantity) + "!");
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
BooksWithoutBorders.sendErrorMessage(sender, "BooksWithoutBorders failed to hook into Vault! Book price not set!");
|
BooksWithoutBorders.sendErrorMessage(sender, "BooksWithoutBorders failed to hook into Vault! Book price not set!");
|
||||||
|
@ -0,0 +1,64 @@
|
|||||||
|
package net.knarcraft.bookswithoutborders.utility;
|
||||||
|
|
||||||
|
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
|
||||||
|
import net.milkbowl.vault.economy.Economy;
|
||||||
|
import org.bukkit.Server;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||||
|
|
||||||
|
public class EconomyHelper {
|
||||||
|
|
||||||
|
private static Economy economy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets an economy instance for making transactions
|
||||||
|
* @return <p>An economy instance, or null if it's not initialized</p>
|
||||||
|
*/
|
||||||
|
public static Economy getEconomy() {
|
||||||
|
return economy;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tries to set up economy
|
||||||
|
* @return <p>True if economy is set up and enabled</p>
|
||||||
|
*/
|
||||||
|
public static boolean setupEconomy() {
|
||||||
|
if (economy != null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Server server = BooksWithoutBorders.getInstance().getServer();
|
||||||
|
Plugin plugin = server.getPluginManager().getPlugin("Vault");
|
||||||
|
|
||||||
|
if (plugin != null) {
|
||||||
|
RegisteredServiceProvider<Economy> economyProvider = server.getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
|
||||||
|
if (economyProvider != null) {
|
||||||
|
economy = economyProvider.getProvider();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (economy != null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Uses economy to take payment for printing a number of books
|
||||||
|
*
|
||||||
|
* @param player <p>The player which needs to pay</p>
|
||||||
|
* @param cost <p>The cost of the book printing</p>
|
||||||
|
* @param numCopies <p>The number of books the player is printing</p>
|
||||||
|
* @return <p>True if the player had the money and it has been withdrawn</p>
|
||||||
|
*/
|
||||||
|
public static boolean payForBookPrintingEconomy(Player player, double cost, int numCopies) {
|
||||||
|
if ((economy.getBalance(player) - cost) >= 0) {
|
||||||
|
economy.withdrawPlayer(player, cost);
|
||||||
|
BooksWithoutBorders.sendSuccessMessage(player, economy.format(cost) + " withdrawn to create " + numCopies + " book(s)");
|
||||||
|
BooksWithoutBorders.sendSuccessMessage(player, "New balance: " + economy.format(economy.getBalance(player)));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
BooksWithoutBorders.sendErrorMessage(player, economy.format(cost) + " is required for this command!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user