mirror of
https://github.com/Crazy-Crew/CrazyAuctions.git
synced 2025-01-08 19:38:15 +01:00
Remove old code
This commit is contained in:
parent
505e961ea8
commit
134f4a5a08
@ -1,477 +0,0 @@
|
|||||||
package com.badbones69.crazyauctions;
|
|
||||||
|
|
||||||
import com.badbones69.crazyauctions.api.*;
|
|
||||||
import com.badbones69.crazyauctions.api.FileManager.Files;
|
|
||||||
import com.badbones69.crazyauctions.api.events.AuctionListEvent;
|
|
||||||
import com.badbones69.crazyauctions.controllers.GUI;
|
|
||||||
import com.badbones69.crazyauctions.controllers.Metrics;
|
|
||||||
import com.badbones69.crazyauctions.currency.Vault;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import org.bukkit.inventory.meta.BookMeta;
|
|
||||||
import org.bukkit.permissions.PermissionAttachmentInfo;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
import org.yaml.snakeyaml.error.YAMLException;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
public class Main extends JavaPlugin implements Listener {
|
|
||||||
|
|
||||||
public static FileManager fileManager = FileManager.getInstance();
|
|
||||||
public static CrazyAuctions crazyAuctions = CrazyAuctions.getInstance();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onEnable() {
|
|
||||||
fileManager.logInfo(true).setup(this);
|
|
||||||
crazyAuctions.loadCrazyAuctions();
|
|
||||||
Bukkit.getServer().getPluginManager().registerEvents(this, this);
|
|
||||||
Bukkit.getServer().getPluginManager().registerEvents(new GUI(), this);
|
|
||||||
Methods.updateAuction();
|
|
||||||
startCheck();
|
|
||||||
|
|
||||||
if (!Vault.setupEconomy()) { saveDefaultConfig(); }
|
|
||||||
|
|
||||||
Messages.addMissingMessages();
|
|
||||||
new Metrics(this, 4624); //Starts up bStats
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDisable() {
|
|
||||||
int file = 0;
|
|
||||||
Bukkit.getScheduler().cancelTask(file);
|
|
||||||
Files.DATA.saveFile(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLable, String[] args) {
|
|
||||||
if (commandLable.equalsIgnoreCase("CrazyAuctions") || commandLable.equalsIgnoreCase("CrazyAuction") || commandLable.equalsIgnoreCase("CA") || commandLable.equalsIgnoreCase("AH") || commandLable.equalsIgnoreCase("HDV")) {
|
|
||||||
if (args.length == 0) {
|
|
||||||
if (!Methods.hasPermission(sender, "Access")) return true;
|
|
||||||
if (!(sender instanceof Player)) {
|
|
||||||
sender.sendMessage(Messages.PLAYERS_ONLY.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
Player player = (Player) sender;
|
|
||||||
if (Files.CONFIG.getFile().contains("Settings.Category-Page-Opens-First")) {
|
|
||||||
if (Files.CONFIG.getFile().getBoolean("Settings.Category-Page-Opens-First")) {
|
|
||||||
GUI.openCategories(player, ShopType.SELL);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (crazyAuctions.isSellingEnabled()) {
|
|
||||||
GUI.openShop(player, ShopType.SELL, Category.NONE, 1);
|
|
||||||
} else if (crazyAuctions.isBiddingEnabled()) {
|
|
||||||
GUI.openShop(player, ShopType.BID, Category.NONE, 1);
|
|
||||||
} else {
|
|
||||||
player.sendMessage(Methods.getPrefix() + Methods.color("&cThe bidding and selling options are both disabled. Please contact the admin about this."));
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (args.length >= 1) {
|
|
||||||
if (args[0].equalsIgnoreCase("Help")) {// CA Help
|
|
||||||
if (!Methods.hasPermission(sender, "Access")) return true;
|
|
||||||
sender.sendMessage(Messages.HELP.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (args[0].equalsIgnoreCase("test")) {// CA test [times]
|
|
||||||
if (!Methods.hasPermission(sender, "test")) return true;
|
|
||||||
int times = 1;
|
|
||||||
if (args.length >= 2) {
|
|
||||||
if (!Methods.isInt(args[1])) {
|
|
||||||
HashMap<String, String> placeholders = new HashMap<>();
|
|
||||||
placeholders.put("%Arg%", args[1]);
|
|
||||||
placeholders.put("%arg%", args[1]);
|
|
||||||
sender.sendMessage(Messages.NOT_A_NUMBER.getMessage(placeholders));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
times = Integer.parseInt(args[1]);
|
|
||||||
}
|
|
||||||
int price = 10;
|
|
||||||
int amount = 1;
|
|
||||||
ItemStack item = Methods.getItemInHand((Player) sender);
|
|
||||||
if (item != null && item.getType() != Material.AIR) {
|
|
||||||
// For testing as another player
|
|
||||||
String seller = "Test-Account";
|
|
||||||
for (int it = 1; it <= times; it++) {
|
|
||||||
int num = 1;
|
|
||||||
Random r = new Random();
|
|
||||||
for (; Files.DATA.getFile().contains("Items." + num); num++) ;
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Price", price);
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Seller", seller);
|
|
||||||
if (args[0].equalsIgnoreCase("Bid")) {
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Time-Till-Expire", Methods.convertToMill(Files.CONFIG.getFile().getString("Settings.Bid-Time")));
|
|
||||||
} else {
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Time-Till-Expire", Methods.convertToMill(Files.CONFIG.getFile().getString("Settings.Sell-Time")));
|
|
||||||
}
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Full-Time", Methods.convertToMill(Files.CONFIG.getFile().getString("Settings.Full-Expire-Time")));
|
|
||||||
int id = r.nextInt(Integer.MAX_VALUE);
|
|
||||||
for (String i : Files.DATA.getFile().getConfigurationSection("Items").getKeys(false))
|
|
||||||
if (Files.DATA.getFile().getInt("Items." + i + ".StoreID") == id) id = r.nextInt(Integer.MAX_VALUE);
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".StoreID", id);
|
|
||||||
ShopType type = ShopType.SELL;
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Biddable", args[0].equalsIgnoreCase("Bid"));
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".TopBidder", "None");
|
|
||||||
ItemStack I = item.clone();
|
|
||||||
I.setAmount(amount);
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Item", I);
|
|
||||||
}
|
|
||||||
Files.DATA.saveFile();
|
|
||||||
HashMap<String, String> placeholders = new HashMap<>();
|
|
||||||
placeholders.put("%Price%", price + "");
|
|
||||||
placeholders.put("%price%", price + "");
|
|
||||||
sender.sendMessage(Messages.ADDED_ITEM_TO_AUCTION.getMessage(placeholders));
|
|
||||||
if (item.getAmount() <= 1 || (item.getAmount() - amount) <= 0) {
|
|
||||||
Methods.setItemInHand((Player) sender, new ItemStack(Material.AIR));
|
|
||||||
} else {
|
|
||||||
item.setAmount(item.getAmount() - amount);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
sender.sendMessage(Messages.DOSENT_HAVE_ITEM_IN_HAND.getMessage());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (args[0].equalsIgnoreCase("Reload")) {// CA Reload
|
|
||||||
if (!Methods.hasPermission(sender, "Admin")) return true;
|
|
||||||
fileManager.logInfo(true).setup(this);
|
|
||||||
crazyAuctions.loadCrazyAuctions();
|
|
||||||
sender.sendMessage(Messages.RELOAD.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (args[0].equalsIgnoreCase("View")) {// CA View <Player>
|
|
||||||
if (!Methods.hasPermission(sender, "View")) return true;
|
|
||||||
if (!(sender instanceof Player)) {
|
|
||||||
sender.sendMessage(Messages.PLAYERS_ONLY.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (args.length >= 2) {
|
|
||||||
Player player = (Player) sender;
|
|
||||||
GUI.openViewer(player, args[1], 1);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
sender.sendMessage(Messages.CRAZYAUCTIONS_VIEW.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (args[0].equalsIgnoreCase("Expired") || args[0].equalsIgnoreCase("Collect")) {// CA Expired
|
|
||||||
if (!Methods.hasPermission(sender, "Access")) return true;
|
|
||||||
if (!(sender instanceof Player)) {
|
|
||||||
sender.sendMessage(Messages.PLAYERS_ONLY.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
Player player = (Player) sender;
|
|
||||||
GUI.openPlayersExpiredList(player, 1);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (args[0].equalsIgnoreCase("Listed")) {// CA Listed
|
|
||||||
if (!Methods.hasPermission(sender, "Access")) return true;
|
|
||||||
if (!(sender instanceof Player)) {
|
|
||||||
sender.sendMessage(Messages.PLAYERS_ONLY.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
Player player = (Player) sender;
|
|
||||||
GUI.openPlayersCurrentList(player, 1);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (args[0].equalsIgnoreCase("Sell") || args[0].equalsIgnoreCase("Bid")) {// /CA Sell/Bid <Price> [Amount of Items]
|
|
||||||
if (!(sender instanceof Player)) {
|
|
||||||
sender.sendMessage(Messages.PLAYERS_ONLY.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (args.length >= 2) {
|
|
||||||
Player player = (Player) sender;
|
|
||||||
if (args[0].equalsIgnoreCase("Sell")) {
|
|
||||||
if (!crazyAuctions.isSellingEnabled()) {
|
|
||||||
player.sendMessage(Messages.SELLING_DISABLED.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!Methods.hasPermission(player, "Sell")) return true;
|
|
||||||
}
|
|
||||||
if (args[0].equalsIgnoreCase("Bid")) {
|
|
||||||
if (!crazyAuctions.isBiddingEnabled()) {
|
|
||||||
player.sendMessage(Messages.BIDDING_DISABLED.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!Methods.hasPermission(player, "Bid")) return true;
|
|
||||||
}
|
|
||||||
ItemStack item = Methods.getItemInHand(player);
|
|
||||||
int amount = item.getAmount();
|
|
||||||
if (args.length >= 3) {
|
|
||||||
if (!Methods.isInt(args[2])) {
|
|
||||||
HashMap<String, String> placeholders = new HashMap<>();
|
|
||||||
placeholders.put("%Arg%", args[2]);
|
|
||||||
placeholders.put("%arg%", args[2]);
|
|
||||||
player.sendMessage(Messages.NOT_A_NUMBER.getMessage(placeholders));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
amount = Integer.parseInt(args[2]);
|
|
||||||
if (amount <= 0) amount = 1;
|
|
||||||
if (amount > item.getAmount()) amount = item.getAmount();
|
|
||||||
}
|
|
||||||
if (!Methods.isLong(args[1])) {
|
|
||||||
HashMap<String, String> placeholders = new HashMap<>();
|
|
||||||
placeholders.put("%Arg%", args[1]);
|
|
||||||
placeholders.put("%arg%", args[1]);
|
|
||||||
player.sendMessage(Messages.NOT_A_NUMBER.getMessage(placeholders));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (Methods.getItemInHand(player).getType() == Material.AIR) {
|
|
||||||
player.sendMessage(Messages.DOSENT_HAVE_ITEM_IN_HAND.getMessage());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
long price = Long.parseLong(args[1]);
|
|
||||||
if (args[0].equalsIgnoreCase("Bid")) {
|
|
||||||
if (price < Files.CONFIG.getFile().getLong("Settings.Minimum-Bid-Price")) {
|
|
||||||
player.sendMessage(Messages.BID_PRICE_TO_LOW.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (price > Files.CONFIG.getFile().getLong("Settings.Max-Beginning-Bid-Price")) {
|
|
||||||
player.sendMessage(Messages.BID_PRICE_TO_HIGH.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (price < Files.CONFIG.getFile().getLong("Settings.Minimum-Sell-Price")) {
|
|
||||||
player.sendMessage(Messages.SELL_PRICE_TO_LOW.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (price > Files.CONFIG.getFile().getLong("Settings.Max-Beginning-Sell-Price")) {
|
|
||||||
player.sendMessage(Messages.SELL_PRICE_TO_HIGH.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!player.hasPermission("crazyauctions.bypass")) {
|
|
||||||
int SellLimit = 0;
|
|
||||||
int BidLimit = 0;
|
|
||||||
for (PermissionAttachmentInfo permission : player.getEffectivePermissions()) {
|
|
||||||
String perm = permission.getPermission();
|
|
||||||
if (perm.startsWith("crazyauctions.sell.")) {
|
|
||||||
perm = perm.replace("crazyauctions.sell.", "");
|
|
||||||
if (Methods.isInt(perm)) {
|
|
||||||
if (Integer.parseInt(perm) > SellLimit) {
|
|
||||||
SellLimit = Integer.parseInt(perm);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (perm.startsWith("crazyauctions.bid.")) {
|
|
||||||
perm = perm.replace("crazyauctions.bid.", "");
|
|
||||||
if (Methods.isInt(perm)) {
|
|
||||||
if (Integer.parseInt(perm) > BidLimit) {
|
|
||||||
BidLimit = Integer.parseInt(perm);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int i = 1; i < 100; i++) {
|
|
||||||
if (SellLimit < i) {
|
|
||||||
if (player.hasPermission("crazyauctions.sell." + i)) {
|
|
||||||
SellLimit = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (BidLimit < i) {
|
|
||||||
if (player.hasPermission("crazyauctions.bid." + i)) {
|
|
||||||
BidLimit = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (args[0].equalsIgnoreCase("Sell")) {
|
|
||||||
if (crazyAuctions.getItems(player, ShopType.SELL).size() >= SellLimit) {
|
|
||||||
player.sendMessage(Messages.MAX_ITEMS.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (args[0].equalsIgnoreCase("Bid")) {
|
|
||||||
if (crazyAuctions.getItems(player, ShopType.BID).size() >= BidLimit) {
|
|
||||||
player.sendMessage(Messages.MAX_ITEMS.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (String id : Files.CONFIG.getFile().getStringList("Settings.BlackList")) {
|
|
||||||
if (item.getType() == Methods.makeItem(id, 1).getType()) {
|
|
||||||
player.sendMessage(Messages.ITEM_BLACKLISTED.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!Files.CONFIG.getFile().getBoolean("Settings.Allow-Damaged-Items")) {
|
|
||||||
for (Material i : getDamageableItems()) {
|
|
||||||
if (item.getType() == i) {
|
|
||||||
if (item.getDurability() > 0) {
|
|
||||||
player.sendMessage(Messages.ITEM_DAMAGED.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!allowBook(item)) {
|
|
||||||
player.sendMessage(Messages.BOOK_NOT_ALLOWED.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
String seller = player.getName();
|
|
||||||
// For testing as another player
|
|
||||||
//String seller = "Test-Account";
|
|
||||||
int num = 1;
|
|
||||||
Random r = new Random();
|
|
||||||
for (; Files.DATA.getFile().contains("Items." + num); num++) ;
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Price", price);
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Seller", seller);
|
|
||||||
if (args[0].equalsIgnoreCase("Bid")) {
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Time-Till-Expire", Methods.convertToMill(Files.CONFIG.getFile().getString("Settings.Bid-Time")));
|
|
||||||
} else {
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Time-Till-Expire", Methods.convertToMill(Files.CONFIG.getFile().getString("Settings.Sell-Time")));
|
|
||||||
}
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Full-Time", Methods.convertToMill(Files.CONFIG.getFile().getString("Settings.Full-Expire-Time")));
|
|
||||||
int id = r.nextInt(999999);
|
|
||||||
// Runs 3x to check for same ID.
|
|
||||||
for (String i : Files.DATA.getFile().getConfigurationSection("Items").getKeys(false))
|
|
||||||
if (Files.DATA.getFile().getInt("Items." + i + ".StoreID") == id) id = r.nextInt(Integer.MAX_VALUE);
|
|
||||||
for (String i : Files.DATA.getFile().getConfigurationSection("Items").getKeys(false))
|
|
||||||
if (Files.DATA.getFile().getInt("Items." + i + ".StoreID") == id) id = r.nextInt(Integer.MAX_VALUE);
|
|
||||||
for (String i : Files.DATA.getFile().getConfigurationSection("Items").getKeys(false))
|
|
||||||
if (Files.DATA.getFile().getInt("Items." + i + ".StoreID") == id) id = r.nextInt(Integer.MAX_VALUE);
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".StoreID", id);
|
|
||||||
ShopType type = ShopType.SELL;
|
|
||||||
if (args[0].equalsIgnoreCase("Bid")) {
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Biddable", true);
|
|
||||||
type = ShopType.BID;
|
|
||||||
} else {
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Biddable", false);
|
|
||||||
}
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".TopBidder", "None");
|
|
||||||
ItemStack I = item.clone();
|
|
||||||
I.setAmount(amount);
|
|
||||||
Files.DATA.getFile().set("Items." + num + ".Item", I);
|
|
||||||
Files.DATA.saveFile();
|
|
||||||
Bukkit.getPluginManager().callEvent(new AuctionListEvent(player, type, I, price));
|
|
||||||
HashMap<String, String> placeholders = new HashMap<>();
|
|
||||||
placeholders.put("%Price%", price + "");
|
|
||||||
placeholders.put("%price%", price + "");
|
|
||||||
player.sendMessage(Messages.ADDED_ITEM_TO_AUCTION.getMessage(placeholders));
|
|
||||||
if (item.getAmount() <= 1 || (item.getAmount() - amount) <= 0) {
|
|
||||||
Methods.setItemInHand(player, new ItemStack(Material.AIR));
|
|
||||||
} else {
|
|
||||||
item.setAmount(item.getAmount() - amount);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
sender.sendMessage(Messages.CRAZYAUCTIONS_SELL_BID.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sender.sendMessage(Messages.CRAZYAUCTIONS_HELP.getMessage());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onJoin(PlayerJoinEvent e) {
|
|
||||||
final Player player = e.getPlayer();
|
|
||||||
if (player.getName().equalsIgnoreCase("BadBones69")) {
|
|
||||||
Bukkit.getScheduler().runTaskLater(this, () -> player.sendMessage(Methods.getPrefix() + Methods.color("&7This server is running your Crazy Auctions Plugin. " + "&7It is running version &av" + Bukkit.getServer().getPluginManager().getPlugin("CrazyAuctions").getDescription().getVersion() + "&7.")), 40);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startCheck() {
|
|
||||||
Bukkit.getScheduler().runTaskTimer(this, Methods :: updateAuction, 20, 5 * 20);
|
|
||||||
}
|
|
||||||
|
|
||||||
private ArrayList<Material> getDamageableItems() {
|
|
||||||
ArrayList<Material> ma = new ArrayList<>();
|
|
||||||
if (Version.isNewer(Version.v1_12_R1)) {
|
|
||||||
ma.add(Material.matchMaterial("GOLDEN_HELMET"));
|
|
||||||
ma.add(Material.matchMaterial("GOLDEN_CHESTPLATE"));
|
|
||||||
ma.add(Material.matchMaterial("GOLDEN_LEGGINGS"));
|
|
||||||
ma.add(Material.matchMaterial("GOLDEN_BOOTS"));
|
|
||||||
ma.add(Material.matchMaterial("WOODEN_SWORD"));
|
|
||||||
ma.add(Material.matchMaterial("WOODEN_AXE"));
|
|
||||||
ma.add(Material.matchMaterial("WOODEN_PICKAXE"));
|
|
||||||
ma.add(Material.matchMaterial("WOODEN_AXE"));
|
|
||||||
ma.add(Material.matchMaterial("WOODEN_SHOVEL"));
|
|
||||||
ma.add(Material.matchMaterial("STONE_SHOVEL"));
|
|
||||||
ma.add(Material.matchMaterial("IRON_SHOVEL"));
|
|
||||||
ma.add(Material.matchMaterial("DIAMOND_SHOVEL"));
|
|
||||||
ma.add(Material.matchMaterial("WOODEN_HOE"));
|
|
||||||
ma.add(Material.matchMaterial("GOLDEN_HOE"));
|
|
||||||
ma.add(Material.matchMaterial("CROSSBOW"));
|
|
||||||
ma.add(Material.matchMaterial("TRIDENT"));
|
|
||||||
ma.add(Material.matchMaterial("TURTLE_HELMET"));
|
|
||||||
} else {
|
|
||||||
ma.add(Material.matchMaterial("GOLD_HELMET"));
|
|
||||||
ma.add(Material.matchMaterial("GOLD_CHESTPLATE"));
|
|
||||||
ma.add(Material.matchMaterial("GOLD_LEGGINGS"));
|
|
||||||
ma.add(Material.matchMaterial("GOLD_BOOTS"));
|
|
||||||
ma.add(Material.matchMaterial("WOOD_SWORD"));
|
|
||||||
ma.add(Material.matchMaterial("WOOD_AXE"));
|
|
||||||
ma.add(Material.matchMaterial("WOOD_PICKAXE"));
|
|
||||||
ma.add(Material.matchMaterial("WOOD_AXE"));
|
|
||||||
ma.add(Material.matchMaterial("WOOD_SPADE"));
|
|
||||||
ma.add(Material.matchMaterial("STONE_SPADE"));
|
|
||||||
ma.add(Material.matchMaterial("IRON_SPADE"));
|
|
||||||
ma.add(Material.matchMaterial("DIAMOND_SPADE"));
|
|
||||||
ma.add(Material.matchMaterial("WOOD_HOE"));
|
|
||||||
ma.add(Material.matchMaterial("GOLD_HOE"));
|
|
||||||
}
|
|
||||||
ma.add(Material.DIAMOND_HELMET);
|
|
||||||
ma.add(Material.DIAMOND_CHESTPLATE);
|
|
||||||
ma.add(Material.DIAMOND_LEGGINGS);
|
|
||||||
ma.add(Material.DIAMOND_BOOTS);
|
|
||||||
ma.add(Material.CHAINMAIL_HELMET);
|
|
||||||
ma.add(Material.CHAINMAIL_CHESTPLATE);
|
|
||||||
ma.add(Material.CHAINMAIL_LEGGINGS);
|
|
||||||
ma.add(Material.CHAINMAIL_BOOTS);
|
|
||||||
ma.add(Material.IRON_HELMET);
|
|
||||||
ma.add(Material.IRON_CHESTPLATE);
|
|
||||||
ma.add(Material.IRON_LEGGINGS);
|
|
||||||
ma.add(Material.IRON_BOOTS);
|
|
||||||
ma.add(Material.LEATHER_HELMET);
|
|
||||||
ma.add(Material.LEATHER_CHESTPLATE);
|
|
||||||
ma.add(Material.LEATHER_LEGGINGS);
|
|
||||||
ma.add(Material.LEATHER_BOOTS);
|
|
||||||
ma.add(Material.BOW);
|
|
||||||
ma.add(Material.STONE_SWORD);
|
|
||||||
ma.add(Material.IRON_SWORD);
|
|
||||||
ma.add(Material.DIAMOND_SWORD);
|
|
||||||
ma.add(Material.STONE_AXE);
|
|
||||||
ma.add(Material.IRON_AXE);
|
|
||||||
ma.add(Material.DIAMOND_AXE);
|
|
||||||
ma.add(Material.STONE_PICKAXE);
|
|
||||||
ma.add(Material.IRON_PICKAXE);
|
|
||||||
ma.add(Material.DIAMOND_PICKAXE);
|
|
||||||
ma.add(Material.STONE_AXE);
|
|
||||||
ma.add(Material.IRON_AXE);
|
|
||||||
ma.add(Material.DIAMOND_AXE);
|
|
||||||
ma.add(Material.STONE_HOE);
|
|
||||||
ma.add(Material.IRON_HOE);
|
|
||||||
ma.add(Material.DIAMOND_HOE);
|
|
||||||
ma.add(Material.FLINT_AND_STEEL);
|
|
||||||
ma.add(Material.ANVIL);
|
|
||||||
ma.add(Material.FISHING_ROD);
|
|
||||||
return ma;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean allowBook(ItemStack item) {
|
|
||||||
if (item != null && item.hasItemMeta() && item.getItemMeta() instanceof BookMeta) {
|
|
||||||
System.out.println("[Crazy Auctions] Checking " + item.getType() + " for illegal unicode.");
|
|
||||||
try {
|
|
||||||
Files.TEST_FILE.getFile().set("Test", item);
|
|
||||||
Files.TEST_FILE.saveFile();
|
|
||||||
System.out.println("[Crazy Auctions] " + item.getType() + " has passed unicode checks.");
|
|
||||||
} catch (YAMLException e) {
|
|
||||||
System.out.println("[Crazy Auctions] " + item.getType() + " has failed unicode checks and has been denied.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return ((BookMeta) item.getItemMeta()).getPages().stream().mapToInt(String :: length).sum() < 2000;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Material getMaterial(String newMaterial, String oldMaterial) {
|
|
||||||
return Material.matchMaterial(Version.isNewer(Version.v1_12_R1) ? newMaterial : oldMaterial);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,128 +0,0 @@
|
|||||||
package com.badbones69.crazyauctions.api;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
|
|
||||||
public enum Version {
|
|
||||||
|
|
||||||
TOO_OLD(-1),
|
|
||||||
v1_7_R1(171), v1_7_R2(172), v1_7_R3(173), v1_7_R4(174),
|
|
||||||
v1_8_R1(181), v1_8_R2(182), v1_8_R3(183),
|
|
||||||
v1_9_R1(191), v1_9_R2(192),
|
|
||||||
v1_10_R1(1101),
|
|
||||||
v1_11_R1(1111),
|
|
||||||
v1_12_R1(1121),
|
|
||||||
v1_13_R2(1132),
|
|
||||||
v1_14_R1(1141),
|
|
||||||
v1_15_R1(1151),
|
|
||||||
v1_16_R1(1161), v1_16_R2(1162), v1_16_R3(1163),
|
|
||||||
TOO_NEW(-2);
|
|
||||||
|
|
||||||
private static Version currentVersion;
|
|
||||||
private static Version latest;
|
|
||||||
private final int versionInteger;
|
|
||||||
|
|
||||||
private Version(int versionInteger) {
|
|
||||||
this.versionInteger = versionInteger;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @return Get the server's Minecraft version.
|
|
||||||
*/
|
|
||||||
public static Version getCurrentVersion() {
|
|
||||||
if (currentVersion == null) {
|
|
||||||
String ver = Bukkit.getServer().getClass().getPackage().getName();
|
|
||||||
int v = Integer.parseInt(ver.substring(ver.lastIndexOf('.') + 1).replace("_", "").replace("R", "").replace("v", ""));
|
|
||||||
for (Version version : values()) {
|
|
||||||
if (version.getVersionInteger() == v) {
|
|
||||||
currentVersion = version;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (v > Version.getLatestVersion().getVersionInteger()) {
|
|
||||||
currentVersion = Version.getLatestVersion();
|
|
||||||
}
|
|
||||||
if (currentVersion == null) {
|
|
||||||
currentVersion = Version.TOO_NEW;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return currentVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the latest version allowed by the Version class.
|
|
||||||
* @return The latest version.
|
|
||||||
*/
|
|
||||||
public static Version getLatestVersion() {
|
|
||||||
if (latest == null) {
|
|
||||||
Version v = Version.TOO_OLD;
|
|
||||||
for (Version version : values()) {
|
|
||||||
if (version.comparedTo(v) == 1) {
|
|
||||||
v = version;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return v;
|
|
||||||
} else {
|
|
||||||
return latest;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @return The server's minecraft version as an integer.
|
|
||||||
*/
|
|
||||||
public int getVersionInteger() {
|
|
||||||
return this.versionInteger;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This checks if the current version is older, newer, or is the checked version.
|
|
||||||
* @param version The version you are checking.
|
|
||||||
* @return -1 if older, 0 if the same, and 1 if newer.
|
|
||||||
*/
|
|
||||||
public int comparedTo(Version version) {
|
|
||||||
int result = -1;
|
|
||||||
int current = this.getVersionInteger();
|
|
||||||
int check = version.getVersionInteger();
|
|
||||||
if (current > check || check == -2) {// check is newer then current
|
|
||||||
result = 1;
|
|
||||||
} else if (current == check) {// check is the same as current
|
|
||||||
result = 0;
|
|
||||||
} else if (check == -1) {// check is older then current
|
|
||||||
result = -1;
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks to see if the current version is newer then the checked version.
|
|
||||||
* @param version The version you are checking.
|
|
||||||
* @return True if newer then the checked version and false if the same or older.
|
|
||||||
*/
|
|
||||||
public static boolean isNewer(Version version) {
|
|
||||||
if (currentVersion == null) getCurrentVersion();
|
|
||||||
return currentVersion.versionInteger > version.versionInteger || currentVersion.versionInteger == -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks to see if the current version is the same as the checked version.
|
|
||||||
* @param version The version you are checking.
|
|
||||||
* @return True if both the current and checked version is the same and false if otherwise.
|
|
||||||
*/
|
|
||||||
public static boolean isSame(Version version) {
|
|
||||||
if (currentVersion == null) getCurrentVersion();
|
|
||||||
return currentVersion.versionInteger == version.versionInteger;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks to see if the current version is older than the checked version.
|
|
||||||
* @param version The version you are checking.
|
|
||||||
* @return True if older than the checked version and false if the same or newer.
|
|
||||||
*/
|
|
||||||
public static boolean isOlder(Version version) {
|
|
||||||
if (currentVersion == null) getCurrentVersion();
|
|
||||||
return currentVersion.versionInteger < version.versionInteger || currentVersion.versionInteger == -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,950 +0,0 @@
|
|||||||
package com.badbones69.crazyauctions.controllers;
|
|
||||||
|
|
||||||
import com.badbones69.crazyauctions.Methods;
|
|
||||||
import com.badbones69.crazyauctions.api.*;
|
|
||||||
import com.badbones69.crazyauctions.api.FileManager.Files;
|
|
||||||
import com.badbones69.crazyauctions.api.enums.CancelledReason;
|
|
||||||
import com.badbones69.crazyauctions.api.events.AuctionBuyEvent;
|
|
||||||
import com.badbones69.crazyauctions.api.events.AuctionCancelledEvent;
|
|
||||||
import com.badbones69.crazyauctions.api.events.AuctionNewBidEvent;
|
|
||||||
import com.badbones69.crazyauctions.currency.CurrencyManager;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.event.inventory.InventoryAction;
|
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
||||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.logging.Level;
|
|
||||||
|
|
||||||
public class GUI implements Listener {
|
|
||||||
|
|
||||||
private static HashMap<Player, Integer> bidding = new HashMap<>();
|
|
||||||
private static HashMap<Player, String> biddingID = new HashMap<>();
|
|
||||||
private static HashMap<Player, ShopType> shopType = new HashMap<>(); // Shop Type
|
|
||||||
private static HashMap<Player, Category> shopCategory = new HashMap<>(); // Category Type
|
|
||||||
private static HashMap<Player, List<Integer>> List = new HashMap<>();
|
|
||||||
private static HashMap<Player, String> IDs = new HashMap<>();
|
|
||||||
private static CrazyAuctions crazyAuctions = CrazyAuctions.getInstance();
|
|
||||||
private static Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("CrazyAuctions");
|
|
||||||
|
|
||||||
public static void openShop(Player player, ShopType sell, Category cat, int page) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
FileConfiguration config = Files.CONFIG.getFile();
|
|
||||||
FileConfiguration data = Files.DATA.getFile();
|
|
||||||
List<ItemStack> items = new ArrayList<>();
|
|
||||||
List<Integer> ID = new ArrayList<>();
|
|
||||||
if (!data.contains("Items")) {
|
|
||||||
data.set("Items.Clear", null);
|
|
||||||
Files.DATA.saveFile();
|
|
||||||
}
|
|
||||||
if (cat != null) {
|
|
||||||
shopCategory.put(player, cat);
|
|
||||||
} else {
|
|
||||||
shopCategory.put(player, Category.NONE);
|
|
||||||
}
|
|
||||||
if (data.contains("Items")) {
|
|
||||||
for (String i : data.getConfigurationSection("Items").getKeys(false)) {
|
|
||||||
List<String> lore = new ArrayList<>();
|
|
||||||
if (data.getItemStack("Items." + i + ".Item") != null && (cat.getItems().contains(data.getItemStack("Items." + i + ".Item").getType()) || cat == Category.NONE)) {
|
|
||||||
if (data.getBoolean("Items." + i + ".Biddable")) {
|
|
||||||
if (sell == ShopType.BID) {
|
|
||||||
String seller = data.getString("Items." + i + ".Seller");
|
|
||||||
String topbidder = data.getString("Items." + i + ".TopBidder");
|
|
||||||
for (String l : config.getStringList("Settings.GUISettings.Bidding")) {
|
|
||||||
lore.add(l.replace("%TopBid%", Methods.getPrice(i, false)).replace("%topbid%", Methods.getPrice(i, false)).replace("%Seller%", seller).replace("%seller%", seller).replace("%TopBidder%", topbidder).replace("%topbidder%", topbidder).replace("%Time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))));
|
|
||||||
}
|
|
||||||
items.add(Methods.addLore(data.getItemStack("Items." + i + ".Item").clone(), lore));
|
|
||||||
ID.add(data.getInt("Items." + i + ".StoreID"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (sell == ShopType.SELL) {
|
|
||||||
for (String l : config.getStringList("Settings.GUISettings.SellingItemLore")) {
|
|
||||||
lore.add(l.replace("%Price%", String.format(Locale.ENGLISH, "%,d", Long.parseLong(Methods.getPrice(i, false)))).replace("%price%", String.format(Locale.ENGLISH, "%,d", Long.parseLong(Methods.getPrice(i, false)))).replace("%Seller%", data.getString("Items." + i + ".Seller")).replace("%seller%", data.getString("Items." + i + ".Seller")).replace("%Time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))));
|
|
||||||
}
|
|
||||||
items.add(Methods.addLore(data.getItemStack("Items." + i + ".Item").clone(), lore));
|
|
||||||
ID.add(data.getInt("Items." + i + ".StoreID"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int maxPage = Methods.getMaxPage(items);
|
|
||||||
for (; page > maxPage; page--) ;
|
|
||||||
Inventory inv = Bukkit.createInventory(null, 54, Methods.color(config.getString("Settings.GUIName") + " #" + page));
|
|
||||||
List<String> options = new ArrayList<>();
|
|
||||||
options.add("SellingItems");
|
|
||||||
options.add("Cancelled/ExpiredItems");
|
|
||||||
options.add("PreviousPage");
|
|
||||||
options.add("Refesh");
|
|
||||||
options.add("NextPage");
|
|
||||||
options.add("Category1");
|
|
||||||
options.add("Category2");
|
|
||||||
if (sell == ShopType.SELL) {
|
|
||||||
shopType.put(player, ShopType.SELL);
|
|
||||||
if (crazyAuctions.isBiddingEnabled()) {
|
|
||||||
options.add("Bidding/Selling.Selling");
|
|
||||||
}
|
|
||||||
options.add("WhatIsThis.SellingShop");
|
|
||||||
}
|
|
||||||
if (sell == ShopType.BID) {
|
|
||||||
shopType.put(player, ShopType.BID);
|
|
||||||
if (crazyAuctions.isSellingEnabled()) {
|
|
||||||
options.add("Bidding/Selling.Bidding");
|
|
||||||
}
|
|
||||||
options.add("WhatIsThis.BiddingShop");
|
|
||||||
}
|
|
||||||
for (String o : options) {
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Toggle")) {
|
|
||||||
if (!config.getBoolean("Settings.GUISettings.OtherSettings." + o + ".Toggle")) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String id = config.getString("Settings.GUISettings.OtherSettings." + o + ".Item");
|
|
||||||
String name = config.getString("Settings.GUISettings.OtherSettings." + o + ".Name");
|
|
||||||
List<String> lore = new ArrayList<>();
|
|
||||||
int slot = config.getInt("Settings.GUISettings.OtherSettings." + o + ".Slot");
|
|
||||||
String cName = Methods.color(config.getString("Settings.GUISettings.Category-Settings." + shopCategory.get(player).getName() + ".Name"));
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Lore")) {
|
|
||||||
for (String l : config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore")) {
|
|
||||||
lore.add(l.replace("%Category%", cName).replace("%category%", cName));
|
|
||||||
}
|
|
||||||
inv.setItem(slot - 1, Methods.makeItem(id, 1, name, lore));
|
|
||||||
} else {
|
|
||||||
inv.setItem(slot - 1, Methods.makeItem(id, 1, name));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (ItemStack item : Methods.getPage(items, page)) {
|
|
||||||
int slot = inv.firstEmpty();
|
|
||||||
inv.setItem(slot, item);
|
|
||||||
}
|
|
||||||
List<Integer> Id = new ArrayList<>(Methods.getPageInts(ID, page));
|
|
||||||
List.put(player, Id);
|
|
||||||
player.openInventory(inv);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void openCategories(Player player, ShopType shop) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
FileConfiguration config = Files.CONFIG.getFile();
|
|
||||||
Inventory inv = Bukkit.createInventory(null, 54, Methods.color(config.getString("Settings.Categories")));
|
|
||||||
List<String> options = new ArrayList<>();
|
|
||||||
options.add("OtherSettings.Back");
|
|
||||||
options.add("OtherSettings.WhatIsThis.Categories");
|
|
||||||
options.add("Category-Settings.Armor");
|
|
||||||
options.add("Category-Settings.Weapons");
|
|
||||||
options.add("Category-Settings.Tools");
|
|
||||||
options.add("Category-Settings.Food");
|
|
||||||
options.add("Category-Settings.Potions");
|
|
||||||
options.add("Category-Settings.Blocks");
|
|
||||||
options.add("Category-Settings.Other");
|
|
||||||
options.add("Category-Settings.None");
|
|
||||||
for (String o : options) {
|
|
||||||
if (config.contains("Settings.GUISettings." + o + ".Toggle")) {
|
|
||||||
if (!config.getBoolean("Settings.GUISettings." + o + ".Toggle")) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String id = config.getString("Settings.GUISettings." + o + ".Item");
|
|
||||||
String name = config.getString("Settings.GUISettings." + o + ".Name");
|
|
||||||
int slot = config.getInt("Settings.GUISettings." + o + ".Slot");
|
|
||||||
if (config.contains("Settings.GUISettings." + o + ".Lore")) {
|
|
||||||
inv.setItem(slot - 1, Methods.makeItem(id, 1, name, config.getStringList("Settings.GUISettings." + o + ".Lore")));
|
|
||||||
} else {
|
|
||||||
inv.setItem(slot - 1, Methods.makeItem(id, 1, name));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
shopType.put(player, shop);
|
|
||||||
player.openInventory(inv);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void openPlayersCurrentList(Player player, int page) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
FileConfiguration config = Files.CONFIG.getFile();
|
|
||||||
FileConfiguration data = Files.DATA.getFile();
|
|
||||||
List<ItemStack> items = new ArrayList<>();
|
|
||||||
List<Integer> ID = new ArrayList<>();
|
|
||||||
Inventory inv = Bukkit.createInventory(null, 54, Methods.color(config.getString("Settings.Players-Current-Items")));
|
|
||||||
List<String> options = new ArrayList<>();
|
|
||||||
options.add("Back");
|
|
||||||
options.add("WhatIsThis.CurrentItems");
|
|
||||||
for (String o : options) {
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Toggle")) {
|
|
||||||
if (!config.getBoolean("Settings.GUISettings.OtherSettings." + o + ".Toggle")) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String id = config.getString("Settings.GUISettings.OtherSettings." + o + ".Item");
|
|
||||||
String name = config.getString("Settings.GUISettings.OtherSettings." + o + ".Name");
|
|
||||||
int slot = config.getInt("Settings.GUISettings.OtherSettings." + o + ".Slot");
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Lore")) {
|
|
||||||
inv.setItem(slot - 1, Methods.makeItem(id, 1, name, config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore")));
|
|
||||||
} else {
|
|
||||||
inv.setItem(slot - 1, Methods.makeItem(id, 1, name));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (data.contains("Items")) {
|
|
||||||
for (String i : data.getConfigurationSection("Items").getKeys(false)) {
|
|
||||||
if (data.getString("Items." + i + ".Seller").equalsIgnoreCase(player.getName())) {
|
|
||||||
List<String> lore = new ArrayList<>();
|
|
||||||
for (String l : config.getStringList("Settings.GUISettings.CurrentLore")) {
|
|
||||||
lore.add(l.replace("%Price%", Methods.getPrice(i, false)).replace("%price%", Methods.getPrice(i, false)).replace("%Time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))));
|
|
||||||
}
|
|
||||||
items.add(Methods.addLore(data.getItemStack("Items." + i + ".Item").clone(), lore));
|
|
||||||
ID.add(data.getInt("Items." + i + ".StoreID"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (ItemStack item : Methods.getPage(items, page)) {
|
|
||||||
int slot = inv.firstEmpty();
|
|
||||||
inv.setItem(slot, item);
|
|
||||||
}
|
|
||||||
List<Integer> Id = new ArrayList<>(Methods.getPageInts(ID, page));
|
|
||||||
List.put(player, Id);
|
|
||||||
player.openInventory(inv);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void openPlayersExpiredList(Player player, int page) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
FileConfiguration config = Files.CONFIG.getFile();
|
|
||||||
FileConfiguration data = Files.DATA.getFile();
|
|
||||||
List<ItemStack> items = new ArrayList<>();
|
|
||||||
List<Integer> ID = new ArrayList<>();
|
|
||||||
if (data.contains("OutOfTime/Cancelled")) {
|
|
||||||
for (String i : data.getConfigurationSection("OutOfTime/Cancelled").getKeys(false)) {
|
|
||||||
if (data.getString("OutOfTime/Cancelled." + i + ".Seller") != null) {
|
|
||||||
if (data.getString("OutOfTime/Cancelled." + i + ".Seller").equalsIgnoreCase(player.getName())) {
|
|
||||||
List<String> lore = new ArrayList<>();
|
|
||||||
for (String l : config.getStringList("Settings.GUISettings.Cancelled/ExpiredLore")) {
|
|
||||||
lore.add(l.replace("%Price%", Methods.getPrice(i, true)).replace("%price%", Methods.getPrice(i, true)).replace("%Time%", Methods.convertToTime(data.getLong("OutOfTime/Cancelled." + i + ".Full-Time"))).replace("%time%", Methods.convertToTime(data.getLong("OutOfTime/Cancelled." + i + ".Full-Time"))));
|
|
||||||
}
|
|
||||||
items.add(Methods.addLore(data.getItemStack("OutOfTime/Cancelled." + i + ".Item").clone(), lore));
|
|
||||||
ID.add(data.getInt("OutOfTime/Cancelled." + i + ".StoreID"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int maxPage = Methods.getMaxPage(items);
|
|
||||||
for (; page > maxPage; page--) ;
|
|
||||||
Inventory inv = Bukkit.createInventory(null, 54, Methods.color(config.getString("Settings.Cancelled/Expired-Items") + " #" + page));
|
|
||||||
List<String> options = new ArrayList<>();
|
|
||||||
options.add("Back");
|
|
||||||
options.add("PreviousPage");
|
|
||||||
options.add("Return");
|
|
||||||
options.add("NextPage");
|
|
||||||
options.add("WhatIsThis.Cancelled/ExpiredItems");
|
|
||||||
for (String o : options) {
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Toggle")) {
|
|
||||||
if (!config.getBoolean("Settings.GUISettings.OtherSettings." + o + ".Toggle")) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String id = config.getString("Settings.GUISettings.OtherSettings." + o + ".Item");
|
|
||||||
String name = config.getString("Settings.GUISettings.OtherSettings." + o + ".Name");
|
|
||||||
int slot = config.getInt("Settings.GUISettings.OtherSettings." + o + ".Slot");
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Lore")) {
|
|
||||||
inv.setItem(slot - 1, Methods.makeItem(id, 1, name, config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore")));
|
|
||||||
} else {
|
|
||||||
inv.setItem(slot - 1, Methods.makeItem(id, 1, name));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (ItemStack item : Methods.getPage(items, page)) {
|
|
||||||
int slot = inv.firstEmpty();
|
|
||||||
inv.setItem(slot, item);
|
|
||||||
}
|
|
||||||
List<Integer> Id = new ArrayList<>(Methods.getPageInts(ID, page));
|
|
||||||
List.put(player, Id);
|
|
||||||
player.openInventory(inv);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void openBuying(Player player, String ID) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
FileConfiguration config = Files.CONFIG.getFile();
|
|
||||||
FileConfiguration data = Files.DATA.getFile();
|
|
||||||
if (!data.contains("Items." + ID)) {
|
|
||||||
openShop(player, ShopType.SELL, shopCategory.get(player), 1);
|
|
||||||
player.sendMessage(Messages.ITEM_DOESNT_EXIST.getMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Inventory inv = Bukkit.createInventory(null, 9, Methods.color(config.getString("Settings.Buying-Item")));
|
|
||||||
List<String> options = new ArrayList<>();
|
|
||||||
options.add("Confirm");
|
|
||||||
options.add("Cancel");
|
|
||||||
for (String o : options) {
|
|
||||||
String id = config.getString("Settings.GUISettings.OtherSettings." + o + ".Item");
|
|
||||||
String name = config.getString("Settings.GUISettings.OtherSettings." + o + ".Name");
|
|
||||||
ItemStack item;
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Lore")) {
|
|
||||||
item = Methods.makeItem(id, 1, name, config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore"));
|
|
||||||
} else {
|
|
||||||
item = Methods.makeItem(id, 1, name);
|
|
||||||
}
|
|
||||||
if (o.equals("Confirm")) {
|
|
||||||
inv.setItem(0, item);
|
|
||||||
inv.setItem(1, item);
|
|
||||||
inv.setItem(2, item);
|
|
||||||
inv.setItem(3, item);
|
|
||||||
}
|
|
||||||
if (o.equals("Cancel")) {
|
|
||||||
inv.setItem(5, item);
|
|
||||||
inv.setItem(6, item);
|
|
||||||
inv.setItem(7, item);
|
|
||||||
inv.setItem(8, item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ItemStack item = data.getItemStack("Items." + ID + ".Item");
|
|
||||||
List<String> lore = new ArrayList<>();
|
|
||||||
for (String l : config.getStringList("Settings.GUISettings.SellingItemLore")) {
|
|
||||||
lore.add(l.replace("%Price%", Methods.getPrice(ID, false)).replace("%price%", Methods.getPrice(ID, false)).replace("%Seller%", data.getString("Items." + ID + ".Seller")).replace("%seller%", data.getString("Items." + ID + ".Seller")).replace("%Time%", Methods.convertToTime(data.getLong("Items." + l + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + l + ".Time-Till-Expire"))));
|
|
||||||
}
|
|
||||||
inv.setItem(4, Methods.addLore(item.clone(), lore));
|
|
||||||
IDs.put(player, ID);
|
|
||||||
player.openInventory(inv);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void openBidding(Player player, String ID) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
FileConfiguration config = Files.CONFIG.getFile();
|
|
||||||
FileConfiguration data = Files.DATA.getFile();
|
|
||||||
if (!data.contains("Items." + ID)) {
|
|
||||||
openShop(player, ShopType.BID, shopCategory.get(player), 1);
|
|
||||||
player.sendMessage(Messages.ITEM_DOESNT_EXIST.getMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Inventory inv = Bukkit.createInventory(null, 27, Methods.color(config.getString("Settings.Bidding-On-Item")));
|
|
||||||
if (!bidding.containsKey(player)) bidding.put(player, 0);
|
|
||||||
if (Version.isNewer(Version.v1_12_R1)) {
|
|
||||||
inv.setItem(9, Methods.makeItem("LIME_STAINED_GLASS_PANE", 1, "&a+1"));
|
|
||||||
inv.setItem(10, Methods.makeItem("LIME_STAINED_GLASS_PANE", 1, "&a+10"));
|
|
||||||
inv.setItem(11, Methods.makeItem("LIME_STAINED_GLASS_PANE", 1, "&a+100"));
|
|
||||||
inv.setItem(12, Methods.makeItem("LIME_STAINED_GLASS_PANE", 1, "&a+1000"));
|
|
||||||
inv.setItem(14, Methods.makeItem("RED_STAINED_GLASS_PANE", 1, "&c-1000"));
|
|
||||||
inv.setItem(15, Methods.makeItem("RED_STAINED_GLASS_PANE", 1, "&c-100"));
|
|
||||||
inv.setItem(16, Methods.makeItem("RED_STAINED_GLASS_PANE", 1, "&c-10"));
|
|
||||||
inv.setItem(17, Methods.makeItem("RED_STAINED_GLASS_PANE", 1, "&c-1"));
|
|
||||||
} else {
|
|
||||||
inv.setItem(9, Methods.makeItem("160:5", 1, "&a+1"));
|
|
||||||
inv.setItem(10, Methods.makeItem("160:5", 1, "&a+10"));
|
|
||||||
inv.setItem(11, Methods.makeItem("160:5", 1, "&a+100"));
|
|
||||||
inv.setItem(12, Methods.makeItem("160:5", 1, "&a+1000"));
|
|
||||||
inv.setItem(14, Methods.makeItem("160:14", 1, "&c-1000"));
|
|
||||||
inv.setItem(15, Methods.makeItem("160:14", 1, "&c-100"));
|
|
||||||
inv.setItem(16, Methods.makeItem("160:14", 1, "&c-10"));
|
|
||||||
inv.setItem(17, Methods.makeItem("160:14", 1, "&c-1"));
|
|
||||||
}
|
|
||||||
inv.setItem(13, getBiddingGlass(player, ID));
|
|
||||||
inv.setItem(22, Methods.makeItem(config.getString("Settings.GUISettings.OtherSettings.Bid.Item"), 1, config.getString("Settings.GUISettings.OtherSettings.Bid.Name"), config.getStringList("Settings.GUISettings.OtherSettings.Bid.Lore")));
|
|
||||||
|
|
||||||
inv.setItem(4, getBiddingItem(player, ID));
|
|
||||||
player.openInventory(inv);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void openViewer(Player player, String other, int page) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
FileConfiguration config = Files.CONFIG.getFile();
|
|
||||||
FileConfiguration data = Files.DATA.getFile();
|
|
||||||
List<ItemStack> items = new ArrayList<>();
|
|
||||||
List<Integer> ID = new ArrayList<>();
|
|
||||||
if (!data.contains("Items")) {
|
|
||||||
data.set("Items.Clear", null);
|
|
||||||
Files.DATA.saveFile();
|
|
||||||
}
|
|
||||||
if (data.contains("Items")) {
|
|
||||||
for (String i : data.getConfigurationSection("Items").getKeys(false)) {
|
|
||||||
if (data.getString("Items." + i + ".Seller").equalsIgnoreCase(other)) {
|
|
||||||
List<String> lore = new ArrayList<>();
|
|
||||||
if (data.getBoolean("Items." + i + ".Biddable")) {
|
|
||||||
String seller = data.getString("Items." + i + ".Seller");
|
|
||||||
String topbidder = data.getString("Items." + i + ".TopBidder");
|
|
||||||
for (String l : config.getStringList("Settings.GUISettings.Bidding")) {
|
|
||||||
lore.add(l.replace("%TopBid%", Methods.getPrice(i, false)).replace("%topbid%", Methods.getPrice(i, false)).replace("%Seller%", seller).replace("%seller%", seller).replace("%TopBidder%", topbidder).replace("%topbidder%", topbidder).replace("%Time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (String l : config.getStringList("Settings.GUISettings.SellingItemLore")) {
|
|
||||||
lore.add(l.replace("%Price%", Methods.getPrice(i, false)).replace("%price%", Methods.getPrice(i, false)).replace("%Seller%", data.getString("Items." + i + ".Seller")).replace("%seller%", data.getString("Items." + i + ".Seller")).replace("%Time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
items.add(Methods.addLore(data.getItemStack("Items." + i + ".Item").clone(), lore));
|
|
||||||
ID.add(data.getInt("Items." + i + ".StoreID"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int maxPage = Methods.getMaxPage(items);
|
|
||||||
for (; page > maxPage; page--) ;
|
|
||||||
Inventory inv = Bukkit.createInventory(null, 54, Methods.color(config.getString("Settings.GUIName") + " #" + page));
|
|
||||||
List<String> options = new ArrayList<>();
|
|
||||||
options.add("WhatIsThis.Viewing");
|
|
||||||
for (String o : options) {
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Toggle")) {
|
|
||||||
if (!config.getBoolean("Settings.GUISettings.OtherSettings." + o + ".Toggle")) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String id = config.getString("Settings.GUISettings.OtherSettings." + o + ".Item");
|
|
||||||
String name = config.getString("Settings.GUISettings.OtherSettings." + o + ".Name");
|
|
||||||
int slot = config.getInt("Settings.GUISettings.OtherSettings." + o + ".Slot");
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Lore")) {
|
|
||||||
inv.setItem(slot - 1, Methods.makeItem(id, 1, name, config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore")));
|
|
||||||
} else {
|
|
||||||
inv.setItem(slot - 1, Methods.makeItem(id, 1, name));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (ItemStack item : Methods.getPage(items, page)) {
|
|
||||||
int slot = inv.firstEmpty();
|
|
||||||
inv.setItem(slot, item);
|
|
||||||
}
|
|
||||||
List.put(player, new ArrayList<>(Methods.getPageInts(ID, page)));
|
|
||||||
player.openInventory(inv);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ItemStack getBiddingGlass(Player player, String ID) {
|
|
||||||
FileConfiguration config = Files.CONFIG.getFile();
|
|
||||||
String id = config.getString("Settings.GUISettings.OtherSettings.Bidding.Item");
|
|
||||||
String name = config.getString("Settings.GUISettings.OtherSettings.Bidding.Name");
|
|
||||||
ItemStack item;
|
|
||||||
int bid = bidding.get(player);
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings.Bidding.Lore")) {
|
|
||||||
List<String> lore = new ArrayList<>();
|
|
||||||
for (String l : config.getStringList("Settings.GUISettings.OtherSettings.Bidding.Lore")) {
|
|
||||||
lore.add(l.replace("%Bid%", bid + "").replace("%bid%", bid + "").replace("%TopBid%", Methods.getPrice(ID, false)).replace("%topbid%", Methods.getPrice(ID, false)));
|
|
||||||
}
|
|
||||||
item = Methods.makeItem(id, 1, name, lore);
|
|
||||||
} else {
|
|
||||||
item = Methods.makeItem(id, 1, name);
|
|
||||||
}
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ItemStack getBiddingItem(Player player, String ID) {
|
|
||||||
FileConfiguration config = Files.CONFIG.getFile();
|
|
||||||
FileConfiguration data = Files.DATA.getFile();
|
|
||||||
String seller = data.getString("Items." + ID + ".Seller");
|
|
||||||
String topbidder = data.getString("Items." + ID + ".TopBidder");
|
|
||||||
ItemStack item = data.getItemStack("Items." + ID + ".Item");
|
|
||||||
List<String> lore = new ArrayList<>();
|
|
||||||
for (String l : config.getStringList("Settings.GUISettings.Bidding")) {
|
|
||||||
lore.add(l.replace("%TopBid%", Methods.getPrice(ID, false)).replace("%topbid%", Methods.getPrice(ID, false)).replace("%Seller%", seller).replace("%seller%", seller).replace("%TopBidder%", topbidder).replace("%topbidder%", topbidder).replace("%Time%", Methods.convertToTime(data.getLong("Items." + ID + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + ID + ".Time-Till-Expire"))));
|
|
||||||
}
|
|
||||||
return Methods.addLore(item.clone(), lore);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void playClick(Player player) {
|
|
||||||
if (Files.CONFIG.getFile().contains("Settings.Sounds.Toggle")) {
|
|
||||||
if (Files.CONFIG.getFile().getBoolean("Settings.Sounds.Toggle")) {
|
|
||||||
String sound = Files.CONFIG.getFile().getString("Settings.Sounds.Sound");
|
|
||||||
try {
|
|
||||||
player.playSound(player.getLocation(), Sound.valueOf(sound), 1, 1);
|
|
||||||
} catch (Exception e) {
|
|
||||||
if (Methods.getVersion() >= 191) {
|
|
||||||
player.playSound(player.getLocation(), Sound.valueOf("UI_BUTTON_CLICK"), 1, 1);
|
|
||||||
} else {
|
|
||||||
player.playSound(player.getLocation(), Sound.valueOf("CLICK"), 1, 1);
|
|
||||||
}
|
|
||||||
Bukkit.getLogger().log(Level.WARNING, "[Crazy Auctions]>> You set the sound to " + sound + " and this is not a sound for your minecraft version. " + "Please go to the config and set a correct sound or turn the sound off in the toggle setting.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (Methods.getVersion() >= 191) {
|
|
||||||
player.playSound(player.getLocation(), Sound.valueOf("UI_BUTTON_CLICK"), 1, 1);
|
|
||||||
} else {
|
|
||||||
player.playSound(player.getLocation(), Sound.valueOf("CLICK"), 1, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onInvClose(InventoryCloseEvent e) {
|
|
||||||
FileConfiguration config = Files.CONFIG.getFile();
|
|
||||||
Inventory inv = e.getInventory();
|
|
||||||
Player player = (Player) e.getPlayer();
|
|
||||||
if (inv != null) {
|
|
||||||
if (e.getView().getTitle().contains(Methods.color(config.getString("Settings.Bidding-On-Item")))) {
|
|
||||||
bidding.remove(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onInvClick(InventoryClickEvent e) {
|
|
||||||
FileConfiguration config = Files.CONFIG.getFile();
|
|
||||||
FileConfiguration data = Files.DATA.getFile();
|
|
||||||
Player player = (Player) e.getWhoClicked();
|
|
||||||
final Inventory inv = e.getInventory();
|
|
||||||
if (inv != null) {
|
|
||||||
if (e.getView().getTitle().contains(Methods.color(config.getString("Settings.Categories")))) {
|
|
||||||
e.setCancelled(true);
|
|
||||||
int slot = e.getRawSlot();
|
|
||||||
if (slot <= inv.getSize()) {
|
|
||||||
if (e.getCurrentItem() != null) {
|
|
||||||
ItemStack item = e.getCurrentItem();
|
|
||||||
if (item.hasItemMeta()) {
|
|
||||||
if (item.getItemMeta().hasDisplayName()) {
|
|
||||||
for (Category cat : Category.values()) {
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.Category-Settings." + cat.getName() + ".Name")))) {
|
|
||||||
openShop(player, shopType.get(player), cat, 1);
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Back.Name")))) {
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), 1);
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (e.getView().getTitle().contains(Methods.color(config.getString("Settings.Bidding-On-Item")))) {
|
|
||||||
e.setCancelled(true);
|
|
||||||
int slot = e.getRawSlot();
|
|
||||||
if (slot <= inv.getSize()) {
|
|
||||||
if (e.getCurrentItem() != null) {
|
|
||||||
ItemStack item = e.getCurrentItem();
|
|
||||||
if (item.hasItemMeta()) {
|
|
||||||
if (item.getItemMeta().hasDisplayName()) {
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Bid.Name")))) {
|
|
||||||
String ID = biddingID.get(player);
|
|
||||||
int bid = bidding.get(player);
|
|
||||||
String topBidder = data.getString("Items." + ID + ".TopBidder");
|
|
||||||
if (CurrencyManager.getMoney(player) < bid) {
|
|
||||||
HashMap<String, String> placeholders = new HashMap<>();
|
|
||||||
placeholders.put("%Money_Needed%", (bid - CurrencyManager.getMoney(player)) + "");
|
|
||||||
placeholders.put("%money_needed%", (bid - CurrencyManager.getMoney(player)) + "");
|
|
||||||
player.sendMessage(Messages.NEED_MORE_MONEY.getMessage(placeholders));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (data.getLong("Items." + ID + ".Price") > bid) {
|
|
||||||
player.sendMessage(Messages.BID_MORE_MONEY.getMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (data.getLong("Items." + ID + ".Price") >= bid && !topBidder.equalsIgnoreCase("None")) {
|
|
||||||
player.sendMessage(Messages.BID_MORE_MONEY.getMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Bukkit.getPluginManager().callEvent(new AuctionNewBidEvent(player, data.getItemStack("Items." + ID + ".Item"), bid));
|
|
||||||
data.set("Items." + ID + ".Price", bid);
|
|
||||||
data.set("Items." + ID + ".TopBidder", player.getName());
|
|
||||||
HashMap<String, String> placeholders = new HashMap<>();
|
|
||||||
placeholders.put("%Bid%", bid + "");
|
|
||||||
player.sendMessage(Messages.BID_MESSAGE.getMessage(placeholders));
|
|
||||||
Files.DATA.saveFile();
|
|
||||||
bidding.put(player, 0);
|
|
||||||
player.closeInventory();
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
HashMap<String, Integer> priceEdits = new HashMap<>();
|
|
||||||
priceEdits.put("&a+1", 1);
|
|
||||||
priceEdits.put("&a+10", 10);
|
|
||||||
priceEdits.put("&a+100", 100);
|
|
||||||
priceEdits.put("&a+1000", 1000);
|
|
||||||
priceEdits.put("&c-1", -1);
|
|
||||||
priceEdits.put("&c-10", -10);
|
|
||||||
priceEdits.put("&c-100", -100);
|
|
||||||
priceEdits.put("&c-1000", -1000);
|
|
||||||
for (String price : priceEdits.keySet()) {
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(price))) {
|
|
||||||
try {
|
|
||||||
bidding.put(player, (bidding.get(player) + priceEdits.get(price)));
|
|
||||||
inv.setItem(4, getBiddingItem(player, biddingID.get(player)));
|
|
||||||
inv.setItem(13, getBiddingGlass(player, biddingID.get(player)));
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
} catch (Exception ex) {
|
|
||||||
player.closeInventory();
|
|
||||||
player.sendMessage(Messages.ITEM_DOESNT_EXIST.getMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (e.getView().getTitle().contains(Methods.color(config.getString("Settings.GUIName")))) {
|
|
||||||
e.setCancelled(true);
|
|
||||||
final int slot = e.getRawSlot();
|
|
||||||
if (slot <= inv.getSize()) {
|
|
||||||
if (e.getCurrentItem() != null) {
|
|
||||||
final ItemStack item = e.getCurrentItem();
|
|
||||||
if (item.hasItemMeta()) {
|
|
||||||
if (item.getItemMeta().hasDisplayName()) {
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.NextPage.Name")))) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
int page = Integer.parseInt(e.getView().getTitle().split("#")[1]);
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), page + 1);
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.PreviousPage.Name")))) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
int page = Integer.parseInt(e.getView().getTitle().split("#")[1]);
|
|
||||||
if (page == 1) page++;
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), page - 1);
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Refesh.Name")))) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
int page = Integer.parseInt(e.getView().getTitle().split("#")[1]);
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), page);
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Bidding/Selling.Selling.Name")))) {
|
|
||||||
openShop(player, ShopType.BID, shopCategory.get(player), 1);
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Bidding/Selling.Bidding.Name")))) {
|
|
||||||
openShop(player, ShopType.SELL, shopCategory.get(player), 1);
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Cancelled/ExpiredItems.Name")))) {
|
|
||||||
openPlayersExpiredList(player, 1);
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.SellingItems.Name")))) {
|
|
||||||
openPlayersCurrentList(player, 1);
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Category1.Name")))) {
|
|
||||||
openCategories(player, shopType.get(player));
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Category2.Name")))) {
|
|
||||||
openCategories(player, shopType.get(player));
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Your-Item.Name")))) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Cant-Afford.Name")))) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Top-Bidder.Name")))) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (List.containsKey(player)) {
|
|
||||||
if (List.get(player).size() >= slot) {
|
|
||||||
int id = List.get(player).get(slot);
|
|
||||||
boolean T = false;
|
|
||||||
if (data.contains("Items")) {
|
|
||||||
for (String i : data.getConfigurationSection("Items").getKeys(false)) {
|
|
||||||
int ID = data.getInt("Items." + i + ".StoreID");
|
|
||||||
if (id == ID) {
|
|
||||||
if (player.hasPermission("crazyAuctions.admin") || player.hasPermission("crazyauctions.force-end")) {
|
|
||||||
if (e.getAction() == InventoryAction.MOVE_TO_OTHER_INVENTORY) {
|
|
||||||
int num = 1;
|
|
||||||
for (; data.contains("OutOfTime/Cancelled." + num); num++) ;
|
|
||||||
String seller = data.getString("Items." + i + ".Seller");
|
|
||||||
Player sellerPlayer = Methods.getPlayer(seller);
|
|
||||||
if (Methods.isOnline(seller) && sellerPlayer != null) {
|
|
||||||
sellerPlayer.sendMessage(Messages.ADMIN_FORCE_CANCELLED_TO_PLAYER.getMessage());
|
|
||||||
}
|
|
||||||
AuctionCancelledEvent event = new AuctionCancelledEvent((sellerPlayer != null ? sellerPlayer : Bukkit.getOfflinePlayer(seller)), data.getItemStack("Items." + i + ".Item"), CancelledReason.ADMIN_FORCE_CANCEL);
|
|
||||||
Bukkit.getPluginManager().callEvent(event);
|
|
||||||
data.set("OutOfTime/Cancelled." + num + ".Seller", data.getString("Items." + i + ".Seller"));
|
|
||||||
data.set("OutOfTime/Cancelled." + num + ".Full-Time", data.getLong("Items." + i + ".Full-Time"));
|
|
||||||
data.set("OutOfTime/Cancelled." + num + ".StoreID", data.getInt("Items." + i + ".StoreID"));
|
|
||||||
data.set("OutOfTime/Cancelled." + num + ".Item", data.getItemStack("Items." + i + ".Item"));
|
|
||||||
data.set("Items." + i, null);
|
|
||||||
Files.DATA.saveFile();
|
|
||||||
player.sendMessage(Messages.ADMIN_FORCE_CENCELLED.getMessage());
|
|
||||||
playClick(player);
|
|
||||||
int page = Integer.parseInt(e.getView().getTitle().split("#")[1]);
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), page);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
final Runnable runnable = () -> inv.setItem(slot, item);
|
|
||||||
if (data.getString("Items." + i + ".Seller").equalsIgnoreCase(player.getName())) {
|
|
||||||
String it = config.getString("Settings.GUISettings.OtherSettings.Your-Item.Item");
|
|
||||||
String name = config.getString("Settings.GUISettings.OtherSettings.Your-Item.Name");
|
|
||||||
ItemStack I;
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings.Your-Item.Lore")) {
|
|
||||||
I = Methods.makeItem(it, 1, name, config.getStringList("Settings.GUISettings.OtherSettings.Your-Item.Lore"));
|
|
||||||
} else {
|
|
||||||
I = Methods.makeItem(it, 1, name);
|
|
||||||
}
|
|
||||||
inv.setItem(slot, I);
|
|
||||||
playClick(player);
|
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, runnable, 3 * 20);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
long cost = data.getLong("Items." + i + ".Price");
|
|
||||||
if (CurrencyManager.getMoney(player) < cost) {
|
|
||||||
String it = config.getString("Settings.GUISettings.OtherSettings.Cant-Afford.Item");
|
|
||||||
String name = config.getString("Settings.GUISettings.OtherSettings.Cant-Afford.Name");
|
|
||||||
ItemStack I;
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings.Cant-Afford.Lore")) {
|
|
||||||
I = Methods.makeItem(it, 1, name, config.getStringList("Settings.GUISettings.OtherSettings.Cant-Afford.Lore"));
|
|
||||||
} else {
|
|
||||||
I = Methods.makeItem(it, 1, name);
|
|
||||||
}
|
|
||||||
inv.setItem(slot, I);
|
|
||||||
playClick(player);
|
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, runnable, 3 * 20);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (data.getBoolean("Items." + i + ".Biddable")) {
|
|
||||||
if (player.getName().equalsIgnoreCase(data.getString("Items." + i + ".TopBidder"))) {
|
|
||||||
String it = config.getString("Settings.GUISettings.OtherSettings.Top-Bidder.Item");
|
|
||||||
String name = config.getString("Settings.GUISettings.OtherSettings.Top-Bidder.Name");
|
|
||||||
ItemStack I;
|
|
||||||
if (config.contains("Settings.GUISettings.OtherSettings.Top-Bidder.Lore")) {
|
|
||||||
I = Methods.makeItem(it, 1, name, config.getStringList("Settings.GUISettings.OtherSettings.Top-Bidder.Lore"));
|
|
||||||
} else {
|
|
||||||
I = Methods.makeItem(it, 1, name);
|
|
||||||
}
|
|
||||||
inv.setItem(slot, I);
|
|
||||||
playClick(player);
|
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, runnable, 3 * 20);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
playClick(player);
|
|
||||||
openBidding(player, i);
|
|
||||||
biddingID.put(player, i);
|
|
||||||
} else {
|
|
||||||
playClick(player);
|
|
||||||
openBuying(player, i);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!T) {
|
|
||||||
playClick(player);
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), 1);
|
|
||||||
player.sendMessage(Messages.ITEM_DOESNT_EXIST.getMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (e.getView().getTitle().contains(Methods.color(config.getString("Settings.Buying-Item")))) {
|
|
||||||
e.setCancelled(true);
|
|
||||||
int slot = e.getRawSlot();
|
|
||||||
if (slot <= inv.getSize()) {
|
|
||||||
if (e.getCurrentItem() != null) {
|
|
||||||
ItemStack item = e.getCurrentItem();
|
|
||||||
if (item.hasItemMeta()) {
|
|
||||||
if (item.getItemMeta().hasDisplayName()) {
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Confirm.Name")))) {
|
|
||||||
String ID = IDs.get(player);
|
|
||||||
long cost = data.getLong("Items." + ID + ".Price");
|
|
||||||
String seller = data.getString("Items." + ID + ".Seller");
|
|
||||||
if (!data.contains("Items." + ID)) {
|
|
||||||
playClick(player);
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), 1);
|
|
||||||
player.sendMessage(Messages.ITEM_DOESNT_EXIST.getMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Methods.isInvFull(player)) {
|
|
||||||
playClick(player);
|
|
||||||
player.closeInventory();
|
|
||||||
player.sendMessage(Messages.INVENTORY_FULL.getMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (CurrencyManager.getMoney(player) < cost) {
|
|
||||||
playClick(player);
|
|
||||||
player.closeInventory();
|
|
||||||
HashMap<String, String> placeholders = new HashMap<>();
|
|
||||||
placeholders.put("%Money_Needed%", (cost - CurrencyManager.getMoney(player)) + "");
|
|
||||||
placeholders.put("%money_needed%", (cost - CurrencyManager.getMoney(player)) + "");
|
|
||||||
player.sendMessage(Messages.NEED_MORE_MONEY.getMessage(placeholders));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ItemStack i = data.getItemStack("Items." + ID + ".Item");
|
|
||||||
Bukkit.getPluginManager().callEvent(new AuctionBuyEvent(player, i, cost));
|
|
||||||
CurrencyManager.removeMoney(player, cost);
|
|
||||||
CurrencyManager.addMoney(Methods.getOfflinePlayer(seller), cost);
|
|
||||||
HashMap<String, String> placeholders = new HashMap<>();
|
|
||||||
placeholders.put("%Price%", Methods.getPrice(ID, false));
|
|
||||||
placeholders.put("%price%", Methods.getPrice(ID, false));
|
|
||||||
placeholders.put("%Player%", player.getName());
|
|
||||||
placeholders.put("%player%", player.getName());
|
|
||||||
player.sendMessage(Messages.BOUGHT_ITEM.getMessage(placeholders));
|
|
||||||
if (Methods.isOnline(seller) && Methods.getPlayer(seller) != null) {
|
|
||||||
Player sell = Methods.getPlayer(seller);
|
|
||||||
sell.sendMessage(Messages.PLAYER_BOUGHT_ITEM.getMessage(placeholders));
|
|
||||||
}
|
|
||||||
player.getInventory().addItem(i);
|
|
||||||
data.set("Items." + ID, null);
|
|
||||||
Files.DATA.saveFile();
|
|
||||||
playClick(player);
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), 1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Cancel.Name")))) {
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), 1);
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (e.getView().getTitle().contains(Methods.color(config.getString("Settings.Players-Current-Items")))) {
|
|
||||||
e.setCancelled(true);
|
|
||||||
int slot = e.getRawSlot();
|
|
||||||
if (slot <= inv.getSize()) {
|
|
||||||
if (e.getCurrentItem() != null) {
|
|
||||||
ItemStack item = e.getCurrentItem();
|
|
||||||
if (item.hasItemMeta()) {
|
|
||||||
if (item.getItemMeta().hasDisplayName()) {
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Back.Name")))) {
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), 1);
|
|
||||||
playClick(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (List.containsKey(player)) {
|
|
||||||
if (List.get(player).size() >= slot) {
|
|
||||||
int id = List.get(player).get(slot);
|
|
||||||
boolean T = false;
|
|
||||||
if (data.contains("Items")) {
|
|
||||||
for (String i : data.getConfigurationSection("Items").getKeys(false)) {
|
|
||||||
int ID = data.getInt("Items." + i + ".StoreID");
|
|
||||||
if (id == ID) {
|
|
||||||
player.sendMessage(Messages.CANCELLED_ITEM.getMessage());
|
|
||||||
AuctionCancelledEvent event = new AuctionCancelledEvent(player, data.getItemStack("Items." + i + ".Item"), CancelledReason.PLAYER_FORCE_CANCEL);
|
|
||||||
Bukkit.getPluginManager().callEvent(event);
|
|
||||||
int num = 1;
|
|
||||||
for (; data.contains("OutOfTime/Cancelled." + num); num++) ;
|
|
||||||
data.set("OutOfTime/Cancelled." + num + ".Seller", data.getString("Items." + i + ".Seller"));
|
|
||||||
data.set("OutOfTime/Cancelled." + num + ".Full-Time", data.getLong("Items." + i + ".Full-Time"));
|
|
||||||
data.set("OutOfTime/Cancelled." + num + ".StoreID", data.getInt("Items." + i + ".StoreID"));
|
|
||||||
data.set("OutOfTime/Cancelled." + num + ".Item", data.getItemStack("Items." + i + ".Item"));
|
|
||||||
data.set("Items." + i, null);
|
|
||||||
Files.DATA.saveFile();
|
|
||||||
playClick(player);
|
|
||||||
openPlayersCurrentList(player, 1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!T) {
|
|
||||||
playClick(player);
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), 1);
|
|
||||||
player.sendMessage(Messages.ITEM_DOESNT_EXIST.getMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (e.getView().getTitle().contains(Methods.color(config.getString("Settings.Cancelled/Expired-Items")))) {
|
|
||||||
e.setCancelled(true);
|
|
||||||
final int slot = e.getRawSlot();
|
|
||||||
if (slot <= inv.getSize()) {
|
|
||||||
if (e.getCurrentItem() != null) {
|
|
||||||
final ItemStack item = e.getCurrentItem();
|
|
||||||
if (item.hasItemMeta()) {
|
|
||||||
if (item.getItemMeta().hasDisplayName()) {
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Back.Name")))) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
playClick(player);
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), 1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.PreviousPage.Name")))) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
int page = Integer.parseInt(e.getView().getTitle().split("#")[1]);
|
|
||||||
if (page == 1) page++;
|
|
||||||
playClick(player);
|
|
||||||
openPlayersExpiredList(player, (page - 1));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.Return.Name")))) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
int page = Integer.parseInt(e.getView().getTitle().split("#")[1]);
|
|
||||||
if (data.contains("OutOfTime/Cancelled")) {
|
|
||||||
for (String i : data.getConfigurationSection("OutOfTime/Cancelled").getKeys(false)) {
|
|
||||||
if (data.getString("OutOfTime/Cancelled." + i + ".Seller").equalsIgnoreCase(player.getName())) {
|
|
||||||
if (Methods.isInvFull(player)) {
|
|
||||||
player.sendMessage(Messages.INVENTORY_FULL.getMessage());
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
player.getInventory().addItem(data.getItemStack("OutOfTime/Cancelled." + i + ".Item"));
|
|
||||||
data.set("OutOfTime/Cancelled." + i, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
player.sendMessage(Messages.GOT_ITEM_BACK.getMessage());
|
|
||||||
Files.DATA.saveFile();
|
|
||||||
playClick(player);
|
|
||||||
openPlayersExpiredList(player, page);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.getItemMeta().getDisplayName().equals(Methods.color(config.getString("Settings.GUISettings.OtherSettings.NextPage.Name")))) {
|
|
||||||
Methods.updateAuction();
|
|
||||||
int page = Integer.parseInt(e.getView().getTitle().split("#")[1]);
|
|
||||||
playClick(player);
|
|
||||||
openPlayersExpiredList(player, (page + 1));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (List.containsKey(player)) {
|
|
||||||
if (List.get(player).size() >= slot) {
|
|
||||||
int id = List.get(player).get(slot);
|
|
||||||
boolean T = false;
|
|
||||||
if (data.contains("OutOfTime/Cancelled")) {
|
|
||||||
for (String i : data.getConfigurationSection("OutOfTime/Cancelled").getKeys(false)) {
|
|
||||||
int ID = data.getInt("OutOfTime/Cancelled." + i + ".StoreID");
|
|
||||||
if (id == ID) {
|
|
||||||
if (!Methods.isInvFull(player)) {
|
|
||||||
player.sendMessage(Messages.GOT_ITEM_BACK.getMessage());
|
|
||||||
ItemStack IT = data.getItemStack("OutOfTime/Cancelled." + i + ".Item");
|
|
||||||
player.getInventory().addItem(IT);
|
|
||||||
data.set("OutOfTime/Cancelled." + i, null);
|
|
||||||
Files.DATA.saveFile();
|
|
||||||
playClick(player);
|
|
||||||
openPlayersExpiredList(player, 1);
|
|
||||||
} else {
|
|
||||||
player.sendMessage(Messages.INVENTORY_FULL.getMessage());
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!T) {
|
|
||||||
playClick(player);
|
|
||||||
openShop(player, shopType.get(player), shopCategory.get(player), 1);
|
|
||||||
player.sendMessage(Messages.ITEM_DOESNT_EXIST.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,727 +0,0 @@
|
|||||||
package com.badbones69.crazyauctions.controllers;
|
|
||||||
|
|
||||||
import com.google.gson.JsonArray;
|
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import com.google.gson.JsonParser;
|
|
||||||
import com.google.gson.JsonPrimitive;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
|
||||||
import org.bukkit.plugin.ServicePriority;
|
|
||||||
|
|
||||||
import javax.net.ssl.HttpsURLConnection;
|
|
||||||
import java.io.*;
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.lang.reflect.Method;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.zip.GZIPOutputStream;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* bStats collects some data for plugin authors.
|
|
||||||
* <p>
|
|
||||||
* Check out https://bStats.org/ to learn more about bStats!
|
|
||||||
*/
|
|
||||||
public class Metrics {
|
|
||||||
|
|
||||||
static {
|
|
||||||
// You can use the property to disable the check in your test environment
|
|
||||||
if (System.getProperty("bstats.relocatecheck") == null || !System.getProperty("bstats.relocatecheck").equals("false")) {
|
|
||||||
// Maven's Relocate is clever and changes strings, too. So we have to use this little "trick" ... :D
|
|
||||||
final String defaultPackage = new String(
|
|
||||||
new byte[] {'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's', '.', 'b', 'u', 'k', 'k', 'i', 't'});
|
|
||||||
final String examplePackage = new String(new byte[] {'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e'});
|
|
||||||
// We want to make sure nobody just copy & pastes the example and use the wrong package names
|
|
||||||
if (Metrics.class.getPackage().getName().equals(defaultPackage) || Metrics.class.getPackage().getName().equals(examplePackage)) {
|
|
||||||
throw new IllegalStateException("bStats Metrics class has not been relocated correctly!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// The version of this bStats class
|
|
||||||
public static final int B_STATS_VERSION = 1;
|
|
||||||
|
|
||||||
// The url to which the data is sent
|
|
||||||
private static final String URL = "https://bStats.org/submitData/bukkit";
|
|
||||||
|
|
||||||
// Is bStats enabled on this server?
|
|
||||||
private boolean enabled;
|
|
||||||
|
|
||||||
// Should failed requests be logged?
|
|
||||||
private static boolean logFailedRequests;
|
|
||||||
|
|
||||||
// Should the sent data be logged?
|
|
||||||
private static boolean logSentData;
|
|
||||||
|
|
||||||
// Should the response text be logged?
|
|
||||||
private static boolean logResponseStatusText;
|
|
||||||
|
|
||||||
// The uuid of the server
|
|
||||||
private static String serverUUID;
|
|
||||||
|
|
||||||
// The plugin
|
|
||||||
private final Plugin plugin;
|
|
||||||
|
|
||||||
// The plugin id
|
|
||||||
private final int pluginId;
|
|
||||||
|
|
||||||
// A list with all custom charts
|
|
||||||
private final List<CustomChart> charts = new ArrayList<>();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class constructor.
|
|
||||||
*
|
|
||||||
* @param plugin The plugin which stats should be submitted.
|
|
||||||
* @param pluginId The id of the plugin.
|
|
||||||
* It can be found at <a href="https://bstats.org/what-is-my-plugin-id">What is my plugin id?</a>
|
|
||||||
*/
|
|
||||||
public Metrics(Plugin plugin, int pluginId) {
|
|
||||||
if (plugin == null) {
|
|
||||||
throw new IllegalArgumentException("Plugin cannot be null!");
|
|
||||||
}
|
|
||||||
this.plugin = plugin;
|
|
||||||
this.pluginId = pluginId;
|
|
||||||
|
|
||||||
// Get the config file
|
|
||||||
File bStatsFolder = new File(plugin.getDataFolder().getParentFile(), "bStats");
|
|
||||||
File configFile = new File(bStatsFolder, "config.yml");
|
|
||||||
YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile);
|
|
||||||
|
|
||||||
// Check if the config file exists
|
|
||||||
if (!config.isSet("serverUuid")) {
|
|
||||||
|
|
||||||
// Add default values
|
|
||||||
config.addDefault("enabled", true);
|
|
||||||
// Every server gets it's unique random id.
|
|
||||||
config.addDefault("serverUuid", UUID.randomUUID().toString());
|
|
||||||
// Should failed request be logged?
|
|
||||||
config.addDefault("logFailedRequests", false);
|
|
||||||
// Should the sent data be logged?
|
|
||||||
config.addDefault("logSentData", false);
|
|
||||||
// Should the response text be logged?
|
|
||||||
config.addDefault("logResponseStatusText", false);
|
|
||||||
|
|
||||||
// Inform the server owners about bStats
|
|
||||||
config.options().header(
|
|
||||||
"bStats collects some data for plugin authors like how many servers are using their plugins.\n" +
|
|
||||||
"To honor their work, you should not disable it.\n" +
|
|
||||||
"This has nearly no effect on the server performance!\n" +
|
|
||||||
"Check out https://bStats.org/ to learn more :)"
|
|
||||||
).copyDefaults(true);
|
|
||||||
try {
|
|
||||||
config.save(configFile);
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load the data
|
|
||||||
enabled = config.getBoolean("enabled", true);
|
|
||||||
serverUUID = config.getString("serverUuid");
|
|
||||||
logFailedRequests = config.getBoolean("logFailedRequests", false);
|
|
||||||
logSentData = config.getBoolean("logSentData", false);
|
|
||||||
logResponseStatusText = config.getBoolean("logResponseStatusText", false);
|
|
||||||
|
|
||||||
if (enabled) {
|
|
||||||
boolean found = false;
|
|
||||||
// Search for all other bStats Metrics classes to see if we are the first one
|
|
||||||
for (Class<?> service : Bukkit.getServicesManager().getKnownServices()) {
|
|
||||||
try {
|
|
||||||
service.getField("B_STATS_VERSION"); // Our identifier :)
|
|
||||||
found = true; // We aren't the first
|
|
||||||
break;
|
|
||||||
} catch (NoSuchFieldException ignored) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Register our service
|
|
||||||
Bukkit.getServicesManager().register(Metrics.class, this, plugin, ServicePriority.Normal);
|
|
||||||
if (!found) {
|
|
||||||
// We are the first!
|
|
||||||
startSubmitting();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if bStats is enabled.
|
|
||||||
*
|
|
||||||
* @return Whether bStats is enabled or not.
|
|
||||||
*/
|
|
||||||
public boolean isEnabled() {
|
|
||||||
return enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds a custom chart.
|
|
||||||
*
|
|
||||||
* @param chart The chart to add.
|
|
||||||
*/
|
|
||||||
public void addCustomChart(CustomChart chart) {
|
|
||||||
if (chart == null) {
|
|
||||||
throw new IllegalArgumentException("Chart cannot be null!");
|
|
||||||
}
|
|
||||||
charts.add(chart);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Starts the Scheduler which submits our data every 30 minutes.
|
|
||||||
*/
|
|
||||||
private void startSubmitting() {
|
|
||||||
final Timer timer = new Timer(true); // We use a timer cause the Bukkit scheduler is affected by server lags
|
|
||||||
timer.scheduleAtFixedRate(new TimerTask() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (!plugin.isEnabled()) { // Plugin was disabled
|
|
||||||
timer.cancel();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Nevertheless we want our code to run in the Bukkit main thread, so we have to use the Bukkit scheduler
|
|
||||||
// Don't be afraid! The connection to the bStats server is still async, only the stats collection is sync ;)
|
|
||||||
Bukkit.getScheduler().runTask(plugin, () -> submitData());
|
|
||||||
}
|
|
||||||
}, 1000 * 60 * 5, 1000 * 60 * 30);
|
|
||||||
// Submit the data every 30 minutes, first time after 5 minutes to give other plugins enough time to start
|
|
||||||
// WARNING: Changing the frequency has no effect but your plugin WILL be blocked/deleted!
|
|
||||||
// WARNING: Just don't do it!
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the plugin specific data.
|
|
||||||
* This method is called using Reflection.
|
|
||||||
*
|
|
||||||
* @return The plugin specific data.
|
|
||||||
*/
|
|
||||||
public JsonObject getPluginData() {
|
|
||||||
JsonObject data = new JsonObject();
|
|
||||||
|
|
||||||
String pluginName = plugin.getDescription().getName();
|
|
||||||
String pluginVersion = plugin.getDescription().getVersion();
|
|
||||||
|
|
||||||
data.addProperty("pluginName", pluginName); // Append the name of the plugin
|
|
||||||
data.addProperty("id", pluginId); // Append the id of the plugin
|
|
||||||
data.addProperty("pluginVersion", pluginVersion); // Append the version of the plugin
|
|
||||||
JsonArray customCharts = new JsonArray();
|
|
||||||
for (CustomChart customChart : charts) {
|
|
||||||
// Add the data of the custom charts
|
|
||||||
JsonObject chart = customChart.getRequestJsonObject();
|
|
||||||
if (chart == null) { // If the chart is null, we skip it
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
customCharts.add(chart);
|
|
||||||
}
|
|
||||||
data.add("customCharts", customCharts);
|
|
||||||
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the server specific data.
|
|
||||||
*
|
|
||||||
* @return The server specific data.
|
|
||||||
*/
|
|
||||||
private JsonObject getServerData() {
|
|
||||||
// Minecraft specific data
|
|
||||||
int playerAmount;
|
|
||||||
try {
|
|
||||||
// Around MC 1.8 the return type was changed to a collection from an array,
|
|
||||||
// This fixes java.lang.NoSuchMethodError: org.bukkit.Bukkit.getOnlinePlayers()Ljava/util/Collection;
|
|
||||||
Method onlinePlayersMethod = Class.forName("org.bukkit.Server").getMethod("getOnlinePlayers");
|
|
||||||
playerAmount = onlinePlayersMethod.getReturnType().equals(Collection.class)
|
|
||||||
? ((Collection<?>) onlinePlayersMethod.invoke(Bukkit.getServer())).size()
|
|
||||||
: ((Player[]) onlinePlayersMethod.invoke(Bukkit.getServer())).length;
|
|
||||||
} catch (Exception e) {
|
|
||||||
playerAmount = Bukkit.getOnlinePlayers().size(); // Just use the new method if the Reflection failed
|
|
||||||
}
|
|
||||||
int onlineMode = Bukkit.getOnlineMode() ? 1 : 0;
|
|
||||||
String bukkitVersion = Bukkit.getVersion();
|
|
||||||
String bukkitName = Bukkit.getName();
|
|
||||||
|
|
||||||
// OS/Java specific data
|
|
||||||
String javaVersion = System.getProperty("java.version");
|
|
||||||
String osName = System.getProperty("os.name");
|
|
||||||
String osArch = System.getProperty("os.arch");
|
|
||||||
String osVersion = System.getProperty("os.version");
|
|
||||||
int coreCount = Runtime.getRuntime().availableProcessors();
|
|
||||||
|
|
||||||
JsonObject data = new JsonObject();
|
|
||||||
|
|
||||||
data.addProperty("serverUUID", serverUUID);
|
|
||||||
|
|
||||||
data.addProperty("playerAmount", playerAmount);
|
|
||||||
data.addProperty("onlineMode", onlineMode);
|
|
||||||
data.addProperty("bukkitVersion", bukkitVersion);
|
|
||||||
data.addProperty("bukkitName", bukkitName);
|
|
||||||
|
|
||||||
data.addProperty("javaVersion", javaVersion);
|
|
||||||
data.addProperty("osName", osName);
|
|
||||||
data.addProperty("osArch", osArch);
|
|
||||||
data.addProperty("osVersion", osVersion);
|
|
||||||
data.addProperty("coreCount", coreCount);
|
|
||||||
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Collects the data and sends it afterwards.
|
|
||||||
*/
|
|
||||||
private void submitData() {
|
|
||||||
final JsonObject data = getServerData();
|
|
||||||
|
|
||||||
JsonArray pluginData = new JsonArray();
|
|
||||||
// Search for all other bStats Metrics classes to get their plugin data
|
|
||||||
for (Class<?> service : Bukkit.getServicesManager().getKnownServices()) {
|
|
||||||
try {
|
|
||||||
service.getField("B_STATS_VERSION"); // Our identifier :)
|
|
||||||
|
|
||||||
for (RegisteredServiceProvider<?> provider : Bukkit.getServicesManager().getRegistrations(service)) {
|
|
||||||
try {
|
|
||||||
Object plugin = provider.getService().getMethod("getPluginData").invoke(provider.getProvider());
|
|
||||||
if (plugin instanceof JsonObject) {
|
|
||||||
pluginData.add((JsonObject) plugin);
|
|
||||||
} else { // old bstats version compatibility
|
|
||||||
try {
|
|
||||||
Class<?> jsonObjectJsonSimple = Class.forName("org.json.simple.JSONObject");
|
|
||||||
if (plugin.getClass().isAssignableFrom(jsonObjectJsonSimple)) {
|
|
||||||
Method jsonStringGetter = jsonObjectJsonSimple.getDeclaredMethod("toJSONString");
|
|
||||||
jsonStringGetter.setAccessible(true);
|
|
||||||
String jsonString = (String) jsonStringGetter.invoke(plugin);
|
|
||||||
JsonObject object = new JsonParser().parse(jsonString).getAsJsonObject();
|
|
||||||
pluginData.add(object);
|
|
||||||
}
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
// minecraft version 1.14+
|
|
||||||
if (logFailedRequests) {
|
|
||||||
this.plugin.getLogger().log(Level.SEVERE, "Encountered unexpected exception", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (NullPointerException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (NoSuchFieldException ignored) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
data.add("plugins", pluginData);
|
|
||||||
|
|
||||||
// Create a new thread for the connection to the bStats server
|
|
||||||
new Thread(() -> {
|
|
||||||
try {
|
|
||||||
// Send the data
|
|
||||||
sendData(plugin, data);
|
|
||||||
} catch (Exception e) {
|
|
||||||
// Something went wrong! :(
|
|
||||||
if (logFailedRequests) {
|
|
||||||
plugin.getLogger().log(Level.WARNING, "Could not submit plugin stats of " + plugin.getName(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sends the data to the bStats server.
|
|
||||||
*
|
|
||||||
* @param plugin Any plugin. It's just used to get a logger instance.
|
|
||||||
* @param data The data to send.
|
|
||||||
* @throws Exception If the request failed.
|
|
||||||
*/
|
|
||||||
private static void sendData(Plugin plugin, JsonObject data) throws Exception {
|
|
||||||
if (data == null) {
|
|
||||||
throw new IllegalArgumentException("Data cannot be null!");
|
|
||||||
}
|
|
||||||
if (Bukkit.isPrimaryThread()) {
|
|
||||||
throw new IllegalAccessException("This method must not be called from the main thread!");
|
|
||||||
}
|
|
||||||
if (logSentData) {
|
|
||||||
plugin.getLogger().info("Sending data to bStats: " + data);
|
|
||||||
}
|
|
||||||
HttpsURLConnection connection = (HttpsURLConnection) new URL(URL).openConnection();
|
|
||||||
|
|
||||||
// Compress the data to save bandwidth
|
|
||||||
byte[] compressedData = compress(data.toString());
|
|
||||||
|
|
||||||
// Add headers
|
|
||||||
connection.setRequestMethod("POST");
|
|
||||||
connection.addRequestProperty("Accept", "application/json");
|
|
||||||
connection.addRequestProperty("Connection", "close");
|
|
||||||
connection.addRequestProperty("Content-Encoding", "gzip"); // We gzip our request
|
|
||||||
connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length));
|
|
||||||
connection.setRequestProperty("Content-Type", "application/json"); // We send our data in JSON format
|
|
||||||
connection.setRequestProperty("User-Agent", "MC-Server/" + B_STATS_VERSION);
|
|
||||||
|
|
||||||
// Send data
|
|
||||||
connection.setDoOutput(true);
|
|
||||||
try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) {
|
|
||||||
outputStream.write(compressedData);
|
|
||||||
}
|
|
||||||
|
|
||||||
StringBuilder builder = new StringBuilder();
|
|
||||||
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
|
|
||||||
String line;
|
|
||||||
while ((line = bufferedReader.readLine()) != null) {
|
|
||||||
builder.append(line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (logResponseStatusText) {
|
|
||||||
plugin.getLogger().info("Sent data to bStats and received response: " + builder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gzips the given String.
|
|
||||||
*
|
|
||||||
* @param str The string to gzip.
|
|
||||||
* @return The gzipped String.
|
|
||||||
* @throws IOException If the compression failed.
|
|
||||||
*/
|
|
||||||
private static byte[] compress(final String str) throws IOException {
|
|
||||||
if (str == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
||||||
try (GZIPOutputStream gzip = new GZIPOutputStream(outputStream)) {
|
|
||||||
gzip.write(str.getBytes(StandardCharsets.UTF_8));
|
|
||||||
}
|
|
||||||
return outputStream.toByteArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a custom chart.
|
|
||||||
*/
|
|
||||||
public static abstract class CustomChart {
|
|
||||||
|
|
||||||
// The id of the chart
|
|
||||||
final String chartId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class constructor.
|
|
||||||
*
|
|
||||||
* @param chartId The id of the chart.
|
|
||||||
*/
|
|
||||||
CustomChart(String chartId) {
|
|
||||||
if (chartId == null || chartId.isEmpty()) {
|
|
||||||
throw new IllegalArgumentException("ChartId cannot be null or empty!");
|
|
||||||
}
|
|
||||||
this.chartId = chartId;
|
|
||||||
}
|
|
||||||
|
|
||||||
private JsonObject getRequestJsonObject() {
|
|
||||||
JsonObject chart = new JsonObject();
|
|
||||||
chart.addProperty("chartId", chartId);
|
|
||||||
try {
|
|
||||||
JsonObject data = getChartData();
|
|
||||||
if (data == null) {
|
|
||||||
// If the data is null we don't send the chart.
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
chart.add("data", data);
|
|
||||||
} catch (Throwable t) {
|
|
||||||
if (logFailedRequests) {
|
|
||||||
Bukkit.getLogger().log(Level.WARNING, "Failed to get data for custom chart with id " + chartId, t);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return chart;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected abstract JsonObject getChartData() throws Exception;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a custom simple pie.
|
|
||||||
*/
|
|
||||||
public static class SimplePie extends CustomChart {
|
|
||||||
|
|
||||||
private final Callable<String> callable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class constructor.
|
|
||||||
*
|
|
||||||
* @param chartId The id of the chart.
|
|
||||||
* @param callable The callable which is used to request the chart data.
|
|
||||||
*/
|
|
||||||
public SimplePie(String chartId, Callable<String> callable) {
|
|
||||||
super(chartId);
|
|
||||||
this.callable = callable;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected JsonObject getChartData() throws Exception {
|
|
||||||
JsonObject data = new JsonObject();
|
|
||||||
String value = callable.call();
|
|
||||||
if (value == null || value.isEmpty()) {
|
|
||||||
// Null = skip the chart
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
data.addProperty("value", value);
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a custom advanced pie.
|
|
||||||
*/
|
|
||||||
public static class AdvancedPie extends CustomChart {
|
|
||||||
|
|
||||||
private final Callable<Map<String, Integer>> callable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class constructor.
|
|
||||||
*
|
|
||||||
* @param chartId The id of the chart.
|
|
||||||
* @param callable The callable which is used to request the chart data.
|
|
||||||
*/
|
|
||||||
public AdvancedPie(String chartId, Callable<Map<String, Integer>> callable) {
|
|
||||||
super(chartId);
|
|
||||||
this.callable = callable;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected JsonObject getChartData() throws Exception {
|
|
||||||
JsonObject data = new JsonObject();
|
|
||||||
JsonObject values = new JsonObject();
|
|
||||||
Map<String, Integer> map = callable.call();
|
|
||||||
if (map == null || map.isEmpty()) {
|
|
||||||
// Null = skip the chart
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
boolean allSkipped = true;
|
|
||||||
for (Map.Entry<String, Integer> entry : map.entrySet()) {
|
|
||||||
if (entry.getValue() == 0) {
|
|
||||||
continue; // Skip this invalid
|
|
||||||
}
|
|
||||||
allSkipped = false;
|
|
||||||
values.addProperty(entry.getKey(), entry.getValue());
|
|
||||||
}
|
|
||||||
if (allSkipped) {
|
|
||||||
// Null = skip the chart
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
data.add("values", values);
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a custom drilldown pie.
|
|
||||||
*/
|
|
||||||
public static class DrilldownPie extends CustomChart {
|
|
||||||
|
|
||||||
private final Callable<Map<String, Map<String, Integer>>> callable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class constructor.
|
|
||||||
*
|
|
||||||
* @param chartId The id of the chart.
|
|
||||||
* @param callable The callable which is used to request the chart data.
|
|
||||||
*/
|
|
||||||
public DrilldownPie(String chartId, Callable<Map<String, Map<String, Integer>>> callable) {
|
|
||||||
super(chartId);
|
|
||||||
this.callable = callable;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JsonObject getChartData() throws Exception {
|
|
||||||
JsonObject data = new JsonObject();
|
|
||||||
JsonObject values = new JsonObject();
|
|
||||||
Map<String, Map<String, Integer>> map = callable.call();
|
|
||||||
if (map == null || map.isEmpty()) {
|
|
||||||
// Null = skip the chart
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
boolean reallyAllSkipped = true;
|
|
||||||
for (Map.Entry<String, Map<String, Integer>> entryValues : map.entrySet()) {
|
|
||||||
JsonObject value = new JsonObject();
|
|
||||||
boolean allSkipped = true;
|
|
||||||
for (Map.Entry<String, Integer> valueEntry : map.get(entryValues.getKey()).entrySet()) {
|
|
||||||
value.addProperty(valueEntry.getKey(), valueEntry.getValue());
|
|
||||||
allSkipped = false;
|
|
||||||
}
|
|
||||||
if (!allSkipped) {
|
|
||||||
reallyAllSkipped = false;
|
|
||||||
values.add(entryValues.getKey(), value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (reallyAllSkipped) {
|
|
||||||
// Null = skip the chart
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
data.add("values", values);
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a custom single line chart.
|
|
||||||
*/
|
|
||||||
public static class SingleLineChart extends CustomChart {
|
|
||||||
|
|
||||||
private final Callable<Integer> callable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class constructor.
|
|
||||||
*
|
|
||||||
* @param chartId The id of the chart.
|
|
||||||
* @param callable The callable which is used to request the chart data.
|
|
||||||
*/
|
|
||||||
public SingleLineChart(String chartId, Callable<Integer> callable) {
|
|
||||||
super(chartId);
|
|
||||||
this.callable = callable;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected JsonObject getChartData() throws Exception {
|
|
||||||
JsonObject data = new JsonObject();
|
|
||||||
int value = callable.call();
|
|
||||||
if (value == 0) {
|
|
||||||
// Null = skip the chart
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
data.addProperty("value", value);
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a custom multi line chart.
|
|
||||||
*/
|
|
||||||
public static class MultiLineChart extends CustomChart {
|
|
||||||
|
|
||||||
private final Callable<Map<String, Integer>> callable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class constructor.
|
|
||||||
*
|
|
||||||
* @param chartId The id of the chart.
|
|
||||||
* @param callable The callable which is used to request the chart data.
|
|
||||||
*/
|
|
||||||
public MultiLineChart(String chartId, Callable<Map<String, Integer>> callable) {
|
|
||||||
super(chartId);
|
|
||||||
this.callable = callable;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected JsonObject getChartData() throws Exception {
|
|
||||||
JsonObject data = new JsonObject();
|
|
||||||
JsonObject values = new JsonObject();
|
|
||||||
Map<String, Integer> map = callable.call();
|
|
||||||
if (map == null || map.isEmpty()) {
|
|
||||||
// Null = skip the chart
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
boolean allSkipped = true;
|
|
||||||
for (Map.Entry<String, Integer> entry : map.entrySet()) {
|
|
||||||
if (entry.getValue() == 0) {
|
|
||||||
continue; // Skip this invalid
|
|
||||||
}
|
|
||||||
allSkipped = false;
|
|
||||||
values.addProperty(entry.getKey(), entry.getValue());
|
|
||||||
}
|
|
||||||
if (allSkipped) {
|
|
||||||
// Null = skip the chart
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
data.add("values", values);
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a custom simple bar chart.
|
|
||||||
*/
|
|
||||||
public static class SimpleBarChart extends CustomChart {
|
|
||||||
|
|
||||||
private final Callable<Map<String, Integer>> callable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class constructor.
|
|
||||||
*
|
|
||||||
* @param chartId The id of the chart.
|
|
||||||
* @param callable The callable which is used to request the chart data.
|
|
||||||
*/
|
|
||||||
public SimpleBarChart(String chartId, Callable<Map<String, Integer>> callable) {
|
|
||||||
super(chartId);
|
|
||||||
this.callable = callable;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected JsonObject getChartData() throws Exception {
|
|
||||||
JsonObject data = new JsonObject();
|
|
||||||
JsonObject values = new JsonObject();
|
|
||||||
Map<String, Integer> map = callable.call();
|
|
||||||
if (map == null || map.isEmpty()) {
|
|
||||||
// Null = skip the chart
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
for (Map.Entry<String, Integer> entry : map.entrySet()) {
|
|
||||||
JsonArray categoryValues = new JsonArray();
|
|
||||||
categoryValues.add(new JsonPrimitive(entry.getValue()));
|
|
||||||
values.add(entry.getKey(), categoryValues);
|
|
||||||
}
|
|
||||||
data.add("values", values);
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a custom advanced bar chart.
|
|
||||||
*/
|
|
||||||
public static class AdvancedBarChart extends CustomChart {
|
|
||||||
|
|
||||||
private final Callable<Map<String, int[]>> callable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class constructor.
|
|
||||||
*
|
|
||||||
* @param chartId The id of the chart.
|
|
||||||
* @param callable The callable which is used to request the chart data.
|
|
||||||
*/
|
|
||||||
public AdvancedBarChart(String chartId, Callable<Map<String, int[]>> callable) {
|
|
||||||
super(chartId);
|
|
||||||
this.callable = callable;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected JsonObject getChartData() throws Exception {
|
|
||||||
JsonObject data = new JsonObject();
|
|
||||||
JsonObject values = new JsonObject();
|
|
||||||
Map<String, int[]> map = callable.call();
|
|
||||||
if (map == null || map.isEmpty()) {
|
|
||||||
// Null = skip the chart
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
boolean allSkipped = true;
|
|
||||||
for (Map.Entry<String, int[]> entry : map.entrySet()) {
|
|
||||||
if (entry.getValue().length == 0) {
|
|
||||||
continue; // Skip this invalid
|
|
||||||
}
|
|
||||||
allSkipped = false;
|
|
||||||
JsonArray categoryValues = new JsonArray();
|
|
||||||
for (int categoryValue : entry.getValue()) {
|
|
||||||
categoryValues.add(new JsonPrimitive(categoryValue));
|
|
||||||
}
|
|
||||||
values.add(entry.getKey(), categoryValues);
|
|
||||||
}
|
|
||||||
if (allSkipped) {
|
|
||||||
// Null = skip the chart
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
data.add("values", values);
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,119 +0,0 @@
|
|||||||
package com.badbones69.crazyauctions.currency;
|
|
||||||
|
|
||||||
import com.badbones69.crazyauctions.api.FileManager.Files;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.OfflinePlayer;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
public enum CurrencyManager { // Currency Manager
|
|
||||||
|
|
||||||
VAULT("Vault", "Money");
|
|
||||||
|
|
||||||
private final String pluginName;
|
|
||||||
private final String name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param pluginname
|
|
||||||
* name of the Plugin.
|
|
||||||
* @param name
|
|
||||||
* name of the Currency.
|
|
||||||
*/
|
|
||||||
private CurrencyManager(String pluginname, String name) {
|
|
||||||
this.pluginName = pluginname;
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param name
|
|
||||||
* name of the Type you want.
|
|
||||||
* @return Returns the Currency as a Enum.
|
|
||||||
*/
|
|
||||||
public static CurrencyManager getFromName(String name) {
|
|
||||||
for (CurrencyManager type : CurrencyManager.values()) {
|
|
||||||
if (type.getPluginName().equalsIgnoreCase(name)) {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param player
|
|
||||||
* Player you want the currency from.
|
|
||||||
* @return Returns the amount they have of the currency
|
|
||||||
*/
|
|
||||||
public static Long getMoney(Player player) {
|
|
||||||
return Vault.getMoney(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param player
|
|
||||||
* Player you want the currency from.
|
|
||||||
* @param amount
|
|
||||||
* The amount you want to take.
|
|
||||||
*/
|
|
||||||
public static void removeMoney(Player player, Long amount) {
|
|
||||||
Vault.removeMoney(player, amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param player
|
|
||||||
* Player you want the currency from.
|
|
||||||
* @param amount
|
|
||||||
* The amount you want to take.
|
|
||||||
*/
|
|
||||||
public static void removeMoney(OfflinePlayer player, Long amount) {
|
|
||||||
Vault.removeMoney(player, amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param player
|
|
||||||
* Player you want the currency from.
|
|
||||||
* @param amount
|
|
||||||
* The amount you want to add.
|
|
||||||
*/
|
|
||||||
public static void addMoney(Player player, Long amount) {
|
|
||||||
Vault.addMoney(player, amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param player
|
|
||||||
* Player you want the currency from.
|
|
||||||
* @param amount
|
|
||||||
* The amount you want to add.
|
|
||||||
*/
|
|
||||||
public static void addMoney(OfflinePlayer player, Long amount) {
|
|
||||||
Vault.addMoney(player, amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Returns the Currency name as a string.
|
|
||||||
*/
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Returns the Currency name as a string.
|
|
||||||
*/
|
|
||||||
public String getPluginName() {
|
|
||||||
return pluginName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @return Returns true if the server has the plugin.
|
|
||||||
*/
|
|
||||||
public Boolean hasPlugin() {
|
|
||||||
if (Bukkit.getServer().getPluginManager().getPlugin(pluginName) != null) {
|
|
||||||
return Files.CONFIG.getFile().getBoolean("Settings.Currencies." + pluginName + ".Enabled");
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user