diff --git a/.idea/compiler.xml b/.idea/compiler.xml index ac36caa..01d9c78 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -12,6 +12,7 @@ + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml b/.idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml deleted file mode 100644 index 82a9f20..0000000 --- a/.idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_2.xml b/.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_2.xml deleted file mode 100644 index eeba709..0000000 --- a/.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_yaml_snakeyaml_1_25.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_25.xml deleted file mode 100644 index 495fc06..0000000 --- a/.idea/libraries/Maven__org_yaml_snakeyaml_1_25.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 89398a8..752077e 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,13 +1,50 @@ + + + + + + + + + + + + + + + + + + + - - - - - + @@ -157,7 +195,59 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1565054245917 @@ -236,7 +326,28 @@ - @@ -249,20 +360,19 @@ - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + + + + + + + file://$PROJECT_DIR$/src/main/java/com/kiranhart/auctionhouse/api/version/NBTEditor.java + 240 + + + + + \ No newline at end of file diff --git a/Auction House - Multiversion.iml b/Auction House - Multiversion.iml index 7cd60eb..3cbb637 100644 --- a/Auction House - Multiversion.iml +++ b/Auction House - Multiversion.iml @@ -31,5 +31,7 @@ + + \ No newline at end of file diff --git a/AuctionHouse.iml b/AuctionHouse.iml index bbe5c41..d12ab33 100644 --- a/AuctionHouse.iml +++ b/AuctionHouse.iml @@ -21,15 +21,18 @@ - - - - - + - + + + + + + + + + - \ No newline at end of file diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index 9e12888..7b716b1 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -4,7 +4,7 @@ com.kiranhart AuctionHouse AuctionHouse - 1.12.6 + 1.12.7 The ultimate auction house plugin https://www.kiranhart.com @@ -51,26 +51,26 @@ https://jitpack.io - - - org.spigotmc - spigot - 1.16.1-R0.1-SNAPSHOT - provided - - - com.github.MilkBowl - VaultAPI - 1.7 - provided - - - bukkit - org.bukkit - - - - + + + org.spigotmc + spigot + 1.16.3-R0.1-SNAPSHOT + provided + + + com.github.MilkBowl + VaultAPI + 1.7 + provided + + + bukkit + org.bukkit + + + + UTF-8 diff --git a/pom.xml b/pom.xml index 9987bdf..546ee09 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.kiranhart AuctionHouse - 1.12.6 + 1.12.7 jar AuctionHouse @@ -69,7 +69,7 @@ org.spigotmc spigot - 1.16.1-R0.1-SNAPSHOT + 1.16.3-R0.1-SNAPSHOT provided diff --git a/src/main/java/com/kiranhart/auctionhouse/Core.java b/src/main/java/com/kiranhart/auctionhouse/Core.java index 44795e6..295c908 100644 --- a/src/main/java/com/kiranhart/auctionhouse/Core.java +++ b/src/main/java/com/kiranhart/auctionhouse/Core.java @@ -8,20 +8,20 @@ import com.kiranhart.auctionhouse.cmds.CommandManager; import com.kiranhart.auctionhouse.inventory.AGUI; import com.kiranhart.auctionhouse.listeners.AGUIListener; import com.kiranhart.auctionhouse.util.Metrics; -import com.kiranhart.auctionhouse.util.economy.Economy; -import com.kiranhart.auctionhouse.util.economy.VaultEconomy; import com.kiranhart.auctionhouse.util.locale.Locale; import com.kiranhart.auctionhouse.util.storage.ConfigWrapper; import com.kiranhart.auctionhouse.util.tasks.AutoSaveTask; import com.kiranhart.auctionhouse.util.tasks.LoadAuctionsTask; import com.kiranhart.auctionhouse.util.tasks.TickAuctionsTask; import com.zaxxer.hikari.HikariDataSource; +import net.milkbowl.vault.economy.Economy; import org.apache.commons.lang.ArrayUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; @@ -40,7 +40,7 @@ public final class Core extends JavaPlugin { private AuctionSettings auctionSettings; private CommandManager commandManager; - private Economy economy; + private static Economy economy; private Locale locale; private LinkedList auctionItems; @@ -90,11 +90,10 @@ public final class Core extends JavaPlugin { this.locale = Locale.getLocale(getConfig().getString("lang")); //Economy - if (getServer().getPluginManager().getPlugin("Vault") != null) { - economy = new VaultEconomy(); - } else { - console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&6AuctionHouse&8]&c COULD NOT FIND VAULT, DISABLING PLUGIN")); + if (!setupEconomy()) { + console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c[&6AuctionHouse&8]&c Disabling due to vault error")); getServer().getPluginManager().disablePlugin(this); + return; } console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&6AuctionHouse&8]&a Loading data files")); @@ -236,7 +235,7 @@ public final class Core extends JavaPlugin { return commandManager; } - public Economy getEconomy() { + public static Economy getEconomy() { return economy; } @@ -271,5 +270,17 @@ public final class Core extends JavaPlugin { public Map getCurrentAuctionPage() { return currentAuctionPage; } + + private boolean setupEconomy() { + if (getServer().getPluginManager().getPlugin("Vault") == null) { + return false; + } + RegisteredServiceProvider rsp = getServer().getServicesManager().getRegistration(Economy.class); + if (rsp == null) { + return false; + } + economy = rsp.getProvider(); + return economy != null; + } } diff --git a/src/main/java/com/kiranhart/auctionhouse/api/statics/AuctionLang.java b/src/main/java/com/kiranhart/auctionhouse/api/statics/AuctionLang.java index 093e458..9bfa86d 100644 --- a/src/main/java/com/kiranhart/auctionhouse/api/statics/AuctionLang.java +++ b/src/main/java/com/kiranhart/auctionhouse/api/statics/AuctionLang.java @@ -43,6 +43,7 @@ public class AuctionLang { public static final String AUCTION_MAX= "auction.max"; public static final String AUCTION_BUY = "auction.buy"; public static final String AUCTION_SOLD = "auction.sold"; + public static final String AUCTION_ITEM_LIST_ALERT = "auction.itemlistalert"; //Auction Command Messages public static final String COMMAND_INVALID = "cmd.invalid"; diff --git a/src/main/java/com/kiranhart/auctionhouse/api/statics/AuctionSettings.java b/src/main/java/com/kiranhart/auctionhouse/api/statics/AuctionSettings.java index 7041146..ca6c028 100644 --- a/src/main/java/com/kiranhart/auctionhouse/api/statics/AuctionSettings.java +++ b/src/main/java/com/kiranhart/auctionhouse/api/statics/AuctionSettings.java @@ -27,6 +27,7 @@ public class AuctionSettings { public static boolean INCREASE_AUCTION_TIME_ON_BID = true; public static boolean USE_SHORT_NUMBERS_ON_ITEMS = false; public static boolean SAVE_TRANSACTIONS = true; + public static boolean ALERT_PLAYERS_ON_ITEM_LIST = false; public static int TIME_TO_INCREASE_BY_BID = 10; public static int DECREASE_SECONDS_BY_TICK = 5; @@ -61,6 +62,7 @@ public class AuctionSettings { UPDATE_EVERY_TICK = Core.getInstance().getConfig().getInt("settings.update-every-tick"); AUTO_SAVE_EVERY = Core.getInstance().getConfig().getInt("settings.auto-save-every"); SAVE_TRANSACTIONS = Core.getInstance().getConfig().getBoolean("settings.save-transactions"); + ALERT_PLAYERS_ON_ITEM_LIST = Core.getInstance().getConfig().getBoolean("settings.alert-players-on-item-list"); DB_ENABLED = Core.getInstance().getConfig().getBoolean("database.enabled"); // ATTEMPT_TO_CREATE_DB_TABLES_ON_START = Core.getInstance().getConfig().getBoolean("database.attempt-table-creation-on-start"); diff --git a/src/main/java/com/kiranhart/auctionhouse/api/version/ServerVersion.java b/src/main/java/com/kiranhart/auctionhouse/api/version/ServerVersion.java index 1d5c9f1..ad15bf4 100644 --- a/src/main/java/com/kiranhart/auctionhouse/api/version/ServerVersion.java +++ b/src/main/java/com/kiranhart/auctionhouse/api/version/ServerVersion.java @@ -18,7 +18,8 @@ public enum ServerVersion { V1_12("org.bukkit.craftbukkit.v1_12"), V1_13("org.bukkit.craftbukkit.v1_13"), V1_14("org.bukkit.craftbukkit.v1_14"), - V1_15("org.bukkit.craftbukkit.v1_15"); + V1_15("org.bukkit.craftbukkit.v1_15"), + V1_16("org.bukkit.craftbukkit.v1_16"); private String versionName; diff --git a/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/SellCommand.java b/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/SellCommand.java index dbf24d4..a9404e7 100644 --- a/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/SellCommand.java +++ b/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/SellCommand.java @@ -11,6 +11,7 @@ import com.kiranhart.auctionhouse.api.version.XMaterial; import com.kiranhart.auctionhouse.auction.AuctionItem; import com.kiranhart.auctionhouse.auction.AuctionPlayer; import com.kiranhart.auctionhouse.cmds.SubCommand; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -110,6 +111,10 @@ public class SellCommand extends SubCommand { if (!auctionStartEvent.isCancelled()) { Core.getInstance().getAuctionItems().add(0, auctionItem); Core.getInstance().getLocale().getMessage(AuctionLang.AUCTION_LISTED).processPlaceholder("itemname", auctionItem.getDisplayName()).processPlaceholder("price", AuctionAPI.getInstance().getFriendlyNumber(buyNow)).sendPrefixedMessage(p); + // Alert players + if (AuctionSettings.ALERT_PLAYERS_ON_ITEM_LIST) { + Bukkit.getOnlinePlayers().forEach(allPlayers -> Core.getInstance().getLocale().getMessage(AuctionLang.AUCTION_ITEM_LIST_ALERT).processPlaceholder("amt", auctionItem.getItem().getAmount()).processPlaceholder("player", p.getName()).processPlaceholder("itemname", auctionItem.getDisplayName()).processPlaceholder("price_buy", AuctionAPI.getInstance().getFriendlyNumber(buyNow)).sendPrefixedMessage(allPlayers)); + } AuctionAPI.getInstance().setItemInHand(p, null); p.updateInventory(); @@ -191,6 +196,19 @@ public class SellCommand extends SubCommand { if (!auctionStartEvent.isCancelled()) { Core.getInstance().getAuctionItems().add(0, auctionItem); Core.getInstance().getLocale().getMessage(AuctionLang.AUCTION_LISTED_WITH_BID).processPlaceholder("itemname", auctionItem.getDisplayName()).processPlaceholder("price", AuctionAPI.getInstance().getFriendlyNumber(buyNow)).sendPrefixedMessage(p); + + // Alert players + if (AuctionSettings.ALERT_PLAYERS_ON_ITEM_LIST) { + Bukkit.getOnlinePlayers().forEach(allPlayers -> Core.getInstance().getLocale().getMessage(AuctionLang.AUCTION_ITEM_LIST_ALERT) + .processPlaceholder("player", p.getName()) + .processPlaceholder("itemname", auctionItem.getDisplayName()) + .processPlaceholder("amt", auctionItem.getItem().getAmount()) + .processPlaceholder("price_buy", AuctionAPI.getInstance().getFriendlyNumber(buyNow)) + .processPlaceholder("price_increment", AuctionAPI.getInstance().getFriendlyNumber(increment)) + .processPlaceholder("price_start", AuctionAPI.getInstance().getFriendlyNumber(startPrice)) + .sendPrefixedMessage(allPlayers)); + } + AuctionAPI.getInstance().setItemInHand(p, null); } } else { diff --git a/src/main/java/com/kiranhart/auctionhouse/inventory/inventories/AuctionGUI.java b/src/main/java/com/kiranhart/auctionhouse/inventory/inventories/AuctionGUI.java index a53e945..f3b72c3 100644 --- a/src/main/java/com/kiranhart/auctionhouse/inventory/inventories/AuctionGUI.java +++ b/src/main/java/com/kiranhart/auctionhouse/inventory/inventories/AuctionGUI.java @@ -115,7 +115,7 @@ public class AuctionGUI implements AGUI { if (auctionItem.getKey().equalsIgnoreCase(auctionItemKey)) possibleAuctionItem = auctionItem; } - if (Core.getInstance().getEconomy().hasBalance(p, possibleAuctionItem.getBuyNowPrice())) { + if (Core.getInstance().getEconomy().has(p, possibleAuctionItem.getBuyNowPrice())) { //Check if the person who clicked is the owner if (possibleAuctionItem.getOwner().equals(p.getUniqueId())) { if (AuctionSettings.OWNER_CAN_PURCHASE_OWN) { @@ -141,7 +141,7 @@ public class AuctionGUI implements AGUI { } //Check if player has enough money to bid - if (Core.getInstance().getEconomy().hasBalance(p, possibleAuctionItem.getCurrentPrice() + possibleAuctionItem.getBidIncrement())) { + if (Core.getInstance().getEconomy().has(p, possibleAuctionItem.getCurrentPrice() + possibleAuctionItem.getBidIncrement())) { //Check if the person who clicked is the owner if (possibleAuctionItem.getOwner().equals(p.getUniqueId())) { //can the owner bid on their own item? @@ -191,7 +191,7 @@ public class AuctionGUI implements AGUI { if (auctionItem.getKey().equalsIgnoreCase(auctionItemKey)) possibleAuctionItem = auctionItem; } - if (Core.getInstance().getEconomy().hasBalance(p, possibleAuctionItem.getBuyNowPrice())) { + if (Core.getInstance().getEconomy().has(p, possibleAuctionItem.getBuyNowPrice())) { //Check if the person who clicked is the owner if (possibleAuctionItem.getOwner().equals(p.getUniqueId())) { @@ -285,4 +285,4 @@ public class AuctionGUI implements AGUI { } } } -} +} \ No newline at end of file diff --git a/src/main/java/com/kiranhart/auctionhouse/inventory/inventories/ConfirmationGUI.java b/src/main/java/com/kiranhart/auctionhouse/inventory/inventories/ConfirmationGUI.java index 4d1d32d..35498ef 100644 --- a/src/main/java/com/kiranhart/auctionhouse/inventory/inventories/ConfirmationGUI.java +++ b/src/main/java/com/kiranhart/auctionhouse/inventory/inventories/ConfirmationGUI.java @@ -54,10 +54,10 @@ public class ConfirmationGUI implements AGUI { //Check if the auction item is hasn't been purchased yet if (Core.getInstance().getAuctionItems().contains(auctionItem)) { //Check if they have enough money to purchase the item - if (Core.getInstance().getEconomy().hasBalance(p, auctionItem.getBuyNowPrice())) { + if (Core.getInstance().getEconomy().has(p, auctionItem.getBuyNowPrice())) { //Withdraw - Core.getInstance().getEconomy().withdrawBalance(p, auctionItem.getBuyNowPrice()); - Core.getInstance().getEconomy().deposit(Bukkit.getOfflinePlayer(auctionItem.getOwner()), auctionItem.getBuyNowPrice()); + Core.getInstance().getEconomy().withdrawPlayer(p, auctionItem.getBuyNowPrice()); + Core.getInstance().getEconomy().depositPlayer(Bukkit.getOfflinePlayer(auctionItem.getOwner()), auctionItem.getBuyNowPrice()); //Check inventory space if (AuctionAPI.getInstance().availableSlots(p.getInventory()) == 0) { diff --git a/src/main/java/com/kiranhart/auctionhouse/util/economy/Economy.java b/src/main/java/com/kiranhart/auctionhouse/util/economy/Economy.java deleted file mode 100644 index 8c50b74..0000000 --- a/src/main/java/com/kiranhart/auctionhouse/util/economy/Economy.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.kiranhart.auctionhouse.util.economy; -/* - The current file was created by Kiran Hart - Date: August 05 2019 - Time: 9:06 PM - - Code within this class is not to be redistributed without proper permission. -*/ - -import org.bukkit.OfflinePlayer; - -public interface Economy { - - boolean hasBalance(OfflinePlayer p, double cost); - - boolean withdrawBalance(OfflinePlayer p, double cost); - - boolean deposit(OfflinePlayer p, double amount); -} diff --git a/src/main/java/com/kiranhart/auctionhouse/util/economy/VaultEconomy.java b/src/main/java/com/kiranhart/auctionhouse/util/economy/VaultEconomy.java deleted file mode 100644 index 015e8f0..0000000 --- a/src/main/java/com/kiranhart/auctionhouse/util/economy/VaultEconomy.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.kiranhart.auctionhouse.util.economy; -/* - The current file was created by Kiran Hart - Date: August 05 2019 - Time: 9:13 PM - - Code within this class is not to be redistributed without proper permission. -*/ - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; - -public class VaultEconomy implements Economy { - - private net.milkbowl.vault.economy.Economy vault; - - public VaultEconomy() { - this.vault = Bukkit.getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class).getProvider(); - } - - @Override - public boolean hasBalance(OfflinePlayer p, double cost) { - return vault.has(p, cost); - } - - @Override - public boolean withdrawBalance(OfflinePlayer p, double cost) { - return vault.withdrawPlayer(p, cost).transactionSuccess(); - } - - @Override - public boolean deposit(OfflinePlayer p, double amount) { - return vault.depositPlayer(p, amount).transactionSuccess(); - } -} diff --git a/src/main/java/com/kiranhart/auctionhouse/util/tasks/TickAuctionsTask.java b/src/main/java/com/kiranhart/auctionhouse/util/tasks/TickAuctionsTask.java index d78d5cf..7dd09b7 100644 --- a/src/main/java/com/kiranhart/auctionhouse/util/tasks/TickAuctionsTask.java +++ b/src/main/java/com/kiranhart/auctionhouse/util/tasks/TickAuctionsTask.java @@ -76,11 +76,11 @@ public class TickAuctionsTask extends BukkitRunnable { if (highestBidder.isOnline()) { //Highest bidder is currently online //Check the balance (has enough money) - if (Core.getInstance().getEconomy().hasBalance(highestBidder, auctionItem.getCurrentPrice())) { + if (Core.getInstance().getEconomy().has(highestBidder, auctionItem.getCurrentPrice())) { //Withdraw the money - Core.getInstance().getEconomy().withdrawBalance(highestBidder, auctionItem.getCurrentPrice()); + Core.getInstance().getEconomy().withdrawPlayer(highestBidder, auctionItem.getCurrentPrice()); //Give money the owner - Core.getInstance().getEconomy().deposit(Bukkit.getOfflinePlayer(auctionItem.getOwner()), auctionItem.getCurrentPrice()); + Core.getInstance().getEconomy().depositPlayer(Bukkit.getOfflinePlayer(auctionItem.getOwner()), auctionItem.getCurrentPrice()); //TODO Send money removal / addition messages //Check if player has available slots @@ -110,12 +110,12 @@ public class TickAuctionsTask extends BukkitRunnable { Core.getInstance().getAuctionItems().remove(auctionItem); } else { //Highest bidder is currently offline - if (Core.getInstance().getEconomy().hasBalance(highestBidder, auctionItem.getCurrentPrice())) { + if (Core.getInstance().getEconomy().has(highestBidder, auctionItem.getCurrentPrice())) { //Has enough money Core.getInstance().getData().getConfig().set("expired." + auctionItem.getHighestBidder().toString() + "." + auctionItem.getKey() + ".item", auctionItem.getItem()); Core.getInstance().getData().getConfig().set("expired." + auctionItem.getHighestBidder().toString() + "." + auctionItem.getKey() + ".display", AuctionAPI.getInstance().expiredAuctionItem(auctionItem)); - Core.getInstance().getEconomy().withdrawBalance(highestBidder, auctionItem.getCurrentPrice()); - Core.getInstance().getEconomy().deposit(Bukkit.getOfflinePlayer(auctionItem.getOwner()), auctionItem.getCurrentPrice()); + Core.getInstance().getEconomy().withdrawPlayer(highestBidder, auctionItem.getCurrentPrice()); + Core.getInstance().getEconomy().depositPlayer(Bukkit.getOfflinePlayer(auctionItem.getOwner()), auctionItem.getCurrentPrice()); //Perform the transaction Transaction transaction = new Transaction(Transaction.TransactionType.AUCTION_WON, auctionItem, auctionItem.getHighestBidder(), System.currentTimeMillis()); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 556c74d..d8d1be3 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -23,6 +23,7 @@ settings: update-every-tick: 5 auto-save-every: 1800 save-transactions: true + alert-players-on-item-list: true help-msg: - "&6======== &eAuction House&6 ========" diff --git a/src/main/resources/en_US.lang b/src/main/resources/en_US.lang index e744848..5c3fbeb 100644 --- a/src/main/resources/en_US.lang +++ b/src/main/resources/en_US.lang @@ -33,6 +33,15 @@ auction.max = "&cYou cannot auction more items, please upgrade to do so." auction.buy = "&eYou purchased &6%itemname% &Efor &A$%price%" auction.sold = "&6%player% &Ehas bought your listed item: &6%itemname% &efor &a$%price%" +# itemlistalert variables +# player === the name of the player who placed the item for sale +# itemname === the name of the item +# price_buy === the price for the buy now value or when not using the bidding system +# price_increment === the price / value increment when using the bidding system +# price_start === the starting bid price when using the bidding system +# amt === the amount of the item +auction.itemlistalert = "&b%player%&e has placed &fx&6%amt% &d%itemname% &efor&a $%price_buy%" + #Command Messages cmd.invalid = "&cThat isn't a valid subcommand!" cmd.sell.withbid = "&e/ah sell " diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e0d32c6..aaa8f31 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -5,6 +5,7 @@ main: com.kiranhart.auctionhouse.Core authors: [Kiran Hart] description: The ultimate auction house plugin website: https://www.kiranhart.com +depends: [ Vault ] commands: auctionhouse: