remove old list auction method(s) from AuctionAPI, in favour of AuctionCreator

Took 13 minutes
This commit is contained in:
Kiran Hart 2022-11-18 17:40:47 -05:00
parent d82ae6ae34
commit a1763f8a7f
No known key found for this signature in database
GPG Key ID: 5F36C7BC79D3EBC3
5 changed files with 160 additions and 292 deletions

View File

@ -33,5 +33,6 @@ public enum ListingResult {
CANNOT_SELL_BUNDLE_ITEM, CANNOT_SELL_BUNDLE_ITEM,
UNKNOWN, UNKNOWN,
EVENT_CANCELED
} }

View File

@ -19,21 +19,15 @@
package ca.tweetzy.auctionhouse.api; package ca.tweetzy.auctionhouse.api;
import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.AuctionHouse;
import ca.tweetzy.auctionhouse.api.events.AuctionStartEvent;
import ca.tweetzy.auctionhouse.api.hook.MMOItemsHook; import ca.tweetzy.auctionhouse.api.hook.MMOItemsHook;
import ca.tweetzy.auctionhouse.api.hook.McMMOHook;
import ca.tweetzy.auctionhouse.auction.AuctionPlayer;
import ca.tweetzy.auctionhouse.auction.AuctionedItem; import ca.tweetzy.auctionhouse.auction.AuctionedItem;
import ca.tweetzy.auctionhouse.auction.MinItemPrice; import ca.tweetzy.auctionhouse.auction.MinItemPrice;
import ca.tweetzy.auctionhouse.auction.enums.AuctionSaleType; import ca.tweetzy.auctionhouse.auction.enums.AuctionSaleType;
import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper; import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper;
import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer;
import ca.tweetzy.auctionhouse.managers.SoundManager;
import ca.tweetzy.auctionhouse.settings.Settings; import ca.tweetzy.auctionhouse.settings.Settings;
import ca.tweetzy.core.compatibility.ServerVersion; import ca.tweetzy.core.compatibility.ServerVersion;
import ca.tweetzy.core.compatibility.XMaterial; import ca.tweetzy.core.compatibility.XMaterial;
import ca.tweetzy.core.hooks.EconomyManager; import ca.tweetzy.core.hooks.EconomyManager;
import ca.tweetzy.core.utils.PlayerUtils;
import ca.tweetzy.core.utils.TextUtils; import ca.tweetzy.core.utils.TextUtils;
import ca.tweetzy.core.utils.items.ItemUtils; import ca.tweetzy.core.utils.items.ItemUtils;
import ca.tweetzy.core.utils.nms.NBTEditor; import ca.tweetzy.core.utils.nms.NBTEditor;
@ -679,158 +673,6 @@ public class AuctionAPI {
return Settings.TAX_LISTING_FEE_PERCENTAGE.getBoolean() ? (Settings.TAX_LISTING_FEE.getDouble() / 100D) * basePrice : Settings.TAX_LISTING_FEE.getDouble(); return Settings.TAX_LISTING_FEE_PERCENTAGE.getBoolean() ? (Settings.TAX_LISTING_FEE.getDouble() / 100D) * basePrice : Settings.TAX_LISTING_FEE.getDouble();
} }
public void listAuction(Player seller, ItemStack original, ItemStack item, int seconds, double basePrice, double bidStartPrice, double bidIncPrice, double currentPrice, boolean isBiddingItem, boolean isUsingBundle, boolean requiresHandRemove) {
listAuction(seller, original, item, seconds, basePrice, bidStartPrice, bidIncPrice, currentPrice, isBiddingItem, isUsingBundle, requiresHandRemove, false, false);
}
/**
* Used to insert an auction into the database
*
* @param seller Is the player who is listing the item
* @param item Is the item stack being listed to the auction house
* @param original Is the original item stack (only applies if using a bundle)
* @param seconds Is the total amount of seconds the item will be active for
* @param basePrice Is the buy now price
* @param bidStartPrice Is the price the bidding will start at if the item is an auction
* @param bidIncPrice Is the default price increment for an auction
* @param currentPrice Is the current/start price of an item
* @param isBiddingItem States whether the item is an auction or bin item
* @param isUsingBundle States whether the item is a bundled item
*/
public void listAuction(Player seller, ItemStack original, ItemStack item, int seconds, double basePrice, double bidStartPrice, double bidIncPrice, double currentPrice, boolean isBiddingItem, boolean isUsingBundle, boolean requiresHandRemove, boolean isInfinite, boolean allowPartialBuy) {
if (McMMOHook.isUsingAbility(seller)) {
AuctionHouse.getInstance().getLocale().getMessage("general.mcmmo_ability_active").sendPrefixedMessage(seller);
return;
}
if (!Settings.ALLOW_SALE_OF_DAMAGED_ITEMS.getBoolean() && isDamaged(item)) {
AuctionHouse.getInstance().getLocale().getMessage("general.cannot list damaged item").sendPrefixedMessage(seller);
return;
}
if (Settings.PREVENT_SALE_OF_REPAIRED_ITEMS.getBoolean() && isRepaired(item)) {
AuctionHouse.getInstance().getLocale().getMessage("general.cannot list repaired item").sendPrefixedMessage(seller);
return;
}
if (!meetsMinItemPrice(isUsingBundle, isBiddingItem, original, basePrice, bidStartPrice)) {
AuctionHouse.getInstance().getLocale().getMessage("pricing.minitemprice").processPlaceholder("price", AuctionAPI.getInstance().formatNumber(AuctionHouse.getInstance().getMinItemPriceManager().getMinPrice(original).getPrice())).sendPrefixedMessage(seller);
return;
}
AuctionedItem auctionedItem = new AuctionedItem();
auctionedItem.setId(UUID.randomUUID());
auctionedItem.setOwner(seller.getUniqueId());
auctionedItem.setHighestBidder(seller.getUniqueId());
auctionedItem.setOwnerName(seller.getName());
auctionedItem.setHighestBidderName(seller.getName());
auctionedItem.setItem(item);
auctionedItem.setCategory(MaterialCategorizer.getMaterialCategory(item));
auctionedItem.setExpiresAt(System.currentTimeMillis() + 1000L * seconds);
auctionedItem.setBidItem(isBiddingItem);
auctionedItem.setExpired(false);
auctionedItem.setBasePrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(basePrice) : basePrice);
auctionedItem.setBidStartingPrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(bidStartPrice) : bidStartPrice);
auctionedItem.setBidIncrementPrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(bidIncPrice) : bidIncPrice);
auctionedItem.setCurrentPrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(currentPrice) : currentPrice);
auctionedItem.setListedWorld(seller.getWorld().getName());
auctionedItem.setInfinite(isInfinite);
auctionedItem.setAllowPartialBuy(allowPartialBuy);
if (Settings.TAX_ENABLED.getBoolean() && Settings.TAX_CHARGE_LISTING_FEE.getBoolean()) {
if (!EconomyManager.hasBalance(seller, calculateListingFee(basePrice))) {
AuctionHouse.getInstance().getLocale().getMessage("auction.tax.cannotpaylistingfee").processPlaceholder("price", AuctionAPI.getInstance().formatNumber(calculateListingFee(basePrice))).sendPrefixedMessage(seller);
return;
}
EconomyManager.withdrawBalance(seller, calculateListingFee(basePrice));
AuctionHouse.getInstance().getLocale().getMessage("auction.tax.paidlistingfee").processPlaceholder("price", AuctionAPI.getInstance().formatNumber(calculateListingFee(basePrice))).sendPrefixedMessage(seller);
AuctionHouse.getInstance().getLocale().getMessage("pricing.moneyremove").processPlaceholder("player_balance", AuctionAPI.getInstance().formatNumber(EconomyManager.getBalance(seller))).processPlaceholder("price", AuctionAPI.getInstance().formatNumber(calculateListingFee(basePrice))).sendPrefixedMessage(seller);
}
AuctionStartEvent startEvent = new AuctionStartEvent(seller, auctionedItem, Settings.TAX_ENABLED.getBoolean() && Settings.TAX_CHARGE_LISTING_FEE.getBoolean() ? calculateListingFee(basePrice) : 0D);
Bukkit.getServer().getPluginManager().callEvent(startEvent);
if (startEvent.isCancelled()) return;
ItemStack finalItemToSell = item.clone();
int totalOriginal = isUsingBundle ? AuctionAPI.getInstance().getItemCountInPlayerInventory(seller, original) : finalItemToSell.getAmount();
if (requiresHandRemove) {
removeSpecificItemQuantityFromPlayer(seller, finalItemToSell, totalOriginal);
}
// PlayerUtils.takeActiveItem(seller, CompatibleHand.MAIN_HAND, totalOriginal);
SoundManager.getInstance().playSound(seller, Settings.SOUNDS_LISTED_ITEM_ON_AUCTION_HOUSE.getString(), 1.0F, 1.0F);
String NAX = AuctionHouse.getInstance().getLocale().getMessage("auction.biditemwithdisabledbuynow").getMessage();
String msg = AuctionHouse.getInstance().getLocale().getMessage(auctionedItem.isBidItem() ? "auction.listed.withbid" : "auction.listed.nobid")
.processPlaceholder("amount", finalItemToSell.getAmount())
.processPlaceholder("item", AuctionAPI.getInstance().getItemName(finalItemToSell))
.processPlaceholder("base_price", auctionedItem.getBasePrice() <= -1 ? NAX : AuctionAPI.getInstance().formatNumber(auctionedItem.getBasePrice()))
.processPlaceholder("start_price", AuctionAPI.getInstance().formatNumber(auctionedItem.getBidStartingPrice()))
.processPlaceholder("increment_price", AuctionAPI.getInstance().formatNumber(auctionedItem.getBidIncrementPrice())).getMessage();
if (AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(seller.getUniqueId()) == null) {
AuctionHouse.getInstance().getLocale().newMessage(TextUtils.formatText("&cCould not find auction player instance for&f: &e" + seller.getName() + "&c creating one now.")).sendPrefixedMessage(Bukkit.getConsoleSender());
AuctionHouse.getInstance().getAuctionPlayerManager().addPlayer(new AuctionPlayer(seller));
}
if (AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(seller.getUniqueId()).isShowListingInfo()) {
AuctionHouse.getInstance().getLocale().newMessage(msg).sendPrefixedMessage(seller);
}
// Actually attempt the insertion now
AuctionHouse.getInstance().getDataManager().insertAuctionAsync(auctionedItem, (error, inserted) -> {
AuctionPlayer auctionPlayer = AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(seller.getUniqueId());
if (auctionPlayer != null)
auctionPlayer.setItemBeingListed(null);
if (error != null) {
AuctionHouse.getInstance().getLocale().getMessage("general.something_went_wrong_while_listing").sendPrefixedMessage(seller);
ItemStack originalCopy = original.clone();
if (isUsingBundle) {
originalCopy.setAmount(1);
for (int i = 0; i < totalOriginal; i++) PlayerUtils.giveItem(seller, originalCopy);
} else {
originalCopy.setAmount(totalOriginal);
PlayerUtils.giveItem(seller, originalCopy);
}
// If the item could not be added for whatever reason and the tax listing fee is enabled, refund them
if (Settings.TAX_ENABLED.getBoolean() && Settings.TAX_CHARGE_LISTING_FEE.getBoolean()) {
EconomyManager.deposit(seller, calculateListingFee(basePrice));
AuctionHouse.getInstance().getLocale().getMessage("pricing.moneyadd").processPlaceholder("player_balance", AuctionAPI.getInstance().formatNumber(EconomyManager.getBalance(seller))).processPlaceholder("price", AuctionAPI.getInstance().formatNumber(calculateListingFee(basePrice))).sendPrefixedMessage(seller);
}
return;
}
AuctionHouse.getInstance().getAuctionItemManager().addAuctionItem(auctionedItem);
if (Settings.BROADCAST_AUCTION_LIST.getBoolean()) {
final String prefix = AuctionHouse.getInstance().getLocale().getMessage("general.prefix").getMessage();
String msgToAll = AuctionHouse.getInstance().getLocale().getMessage(auctionedItem.isBidItem() ? "auction.broadcast.withbid" : "auction.broadcast.nobid")
.processPlaceholder("amount", finalItemToSell.getAmount())
.processPlaceholder("player", seller.getName())
.processPlaceholder("player_displayname", AuctionAPI.getInstance().getDisplayName(seller))
.processPlaceholder("item", AuctionAPI.getInstance().getItemName(finalItemToSell))
.processPlaceholder("base_price", auctionedItem.getBasePrice() <= -1 ? NAX : AuctionAPI.getInstance().formatNumber(auctionedItem.getBasePrice()))
.processPlaceholder("start_price", AuctionAPI.getInstance().formatNumber(auctionedItem.getBidStartingPrice()))
.processPlaceholder("increment_price", AuctionAPI.getInstance().formatNumber(auctionedItem.getBidIncrementPrice())).getMessage();
Bukkit.getOnlinePlayers().forEach(p -> {
if (!p.getUniqueId().equals(seller.getUniqueId()))
p.sendMessage(TextUtils.formatText((prefix.length() == 0 ? "" : prefix + " ") + msgToAll));
});
}
});
}
public boolean meetsMinItemPrice(boolean isUsingBundle, boolean isBiddingItem, ItemStack original, double basePrice, double bidStartPrice) { public boolean meetsMinItemPrice(boolean isUsingBundle, boolean isBiddingItem, ItemStack original, double basePrice, double bidStartPrice) {
boolean valid = true; boolean valid = true;

View File

@ -19,6 +19,7 @@
package ca.tweetzy.auctionhouse.commands; package ca.tweetzy.auctionhouse.commands;
import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.AuctionHouse;
import ca.tweetzy.auctionhouse.ahv3.api.ListingResult;
import ca.tweetzy.auctionhouse.api.AuctionAPI; import ca.tweetzy.auctionhouse.api.AuctionAPI;
import ca.tweetzy.auctionhouse.auction.AuctionPlayer; import ca.tweetzy.auctionhouse.auction.AuctionPlayer;
import ca.tweetzy.auctionhouse.auction.AuctionedItem; import ca.tweetzy.auctionhouse.auction.AuctionedItem;
@ -28,14 +29,17 @@ import ca.tweetzy.auctionhouse.guis.GUIBundleCreation;
import ca.tweetzy.auctionhouse.guis.confirmation.GUIListingConfirm; import ca.tweetzy.auctionhouse.guis.confirmation.GUIListingConfirm;
import ca.tweetzy.auctionhouse.guis.sell.GUISellListingType; import ca.tweetzy.auctionhouse.guis.sell.GUISellListingType;
import ca.tweetzy.auctionhouse.guis.sell.GUISellPlaceItem; import ca.tweetzy.auctionhouse.guis.sell.GUISellPlaceItem;
import ca.tweetzy.auctionhouse.helpers.AuctionCreator;
import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer; import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer;
import ca.tweetzy.auctionhouse.helpers.PlayerHelper; import ca.tweetzy.auctionhouse.helpers.PlayerHelper;
import ca.tweetzy.auctionhouse.settings.Settings; import ca.tweetzy.auctionhouse.settings.Settings;
import ca.tweetzy.core.commands.AbstractCommand; import ca.tweetzy.core.commands.AbstractCommand;
import ca.tweetzy.core.compatibility.XMaterial; import ca.tweetzy.core.compatibility.XMaterial;
import ca.tweetzy.core.utils.NumberUtils; import ca.tweetzy.core.utils.NumberUtils;
import ca.tweetzy.core.utils.PlayerUtils;
import ca.tweetzy.core.utils.TextUtils; import ca.tweetzy.core.utils.TextUtils;
import ca.tweetzy.core.utils.nms.NBTEditor; import ca.tweetzy.core.utils.nms.NBTEditor;
import ca.tweetzy.flight.comp.enums.CompMaterial;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -316,9 +320,6 @@ public final class CommandSell extends AbstractCommand {
return ReturnType.SUCCESS; return ReturnType.SUCCESS;
} }
if (Settings.ASK_FOR_LISTING_CONFIRMATION.getBoolean()) {
// TODO clean up is monstrosity
AuctionedItem auctionedItem = new AuctionedItem(); AuctionedItem auctionedItem = new AuctionedItem();
auctionedItem.setId(UUID.randomUUID()); auctionedItem.setId(UUID.randomUUID());
auctionedItem.setOwner(player.getUniqueId()); auctionedItem.setOwner(player.getUniqueId());
@ -340,59 +341,39 @@ public final class CommandSell extends AbstractCommand {
auctionedItem.setInfinite(isInfinite); auctionedItem.setInfinite(isInfinite);
auctionedItem.setAllowPartialBuy(partialBuy); auctionedItem.setAllowPartialBuy(partialBuy);
ItemStack finalItemToSell = itemToSell; player.getInventory().setItemInHand(CompMaterial.AIR.parseItem());
int finalAllowedTime = allowedTime;
Double finalBuyNowPrice = buyNowPrice;
Double finalStartingBid = startingBid;
Double finalBidIncrement = bidIncrement;
Double finalStartingBid1 = startingBid;
boolean finalIsInfinite = isInfinite;
boolean finalPartialBuy = partialBuy;
boolean finalIsBundle = isBundle;
if (Settings.ASK_FOR_LISTING_CONFIRMATION.getBoolean()) {
instance.getGuiManager().showGUI(player, new GUIListingConfirm(player, auctionedItem, result -> { instance.getGuiManager().showGUI(player, new GUIListingConfirm(player, auctionedItem, result -> {
if (!result) { if (!result) {
player.closeInventory(); player.closeInventory();
PlayerUtils.giveItem(player, auctionedItem.getItem());
auctionPlayer.setItemBeingListed(null);
return; return;
} }
AuctionAPI.getInstance().listAuction( AuctionCreator.create(auctionPlayer, auctionedItem, (auction, listingResult) -> {
player, if (listingResult != ListingResult.SUCCESS) {
originalItem, PlayerUtils.giveItem(player, auction.getItem());
finalItemToSell, auctionPlayer.setItemBeingListed(null);
finalAllowedTime, return;
/* buy now price */ buyNowAllow ? finalBuyNowPrice : -1,
/* start bid price */ isBiddingItem ? finalStartingBid : !buyNowAllow ? finalBuyNowPrice : 0,
/* bid inc price */ isBiddingItem ? finalBidIncrement != null ? finalBidIncrement : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0,
/* current price */ isBiddingItem ? finalStartingBid : finalBuyNowPrice <= -1 ? finalStartingBid1 : finalBuyNowPrice,
isBiddingItem || !buyNowAllow,
finalIsBundle,
true,
finalIsInfinite,
finalPartialBuy
);
player.closeInventory();
if (Settings.OPEN_MAIN_AUCTION_HOUSE_AFTER_MENU_LIST.getBoolean()) {
instance.getGuiManager().showGUI(player, new GUIAuctionHouse(instance.getAuctionPlayerManager().getPlayer(player.getUniqueId())));
} }
if (Settings.OPEN_MAIN_AUCTION_HOUSE_AFTER_MENU_LIST.getBoolean())
instance.getGuiManager().showGUI(player, new GUIAuctionHouse(auctionPlayer));
});
})); }));
} else { } else {
AuctionAPI.getInstance().listAuction( AuctionCreator.create(auctionPlayer, auctionedItem, (auction, listingResult) -> {
player, if (listingResult != ListingResult.SUCCESS) {
originalItem, PlayerUtils.giveItem(player, auction.getItem());
itemToSell, auctionPlayer.setItemBeingListed(null);
allowedTime, return;
/* buy now price */ buyNowAllow ? buyNowPrice : -1, }
/* start bid price */ isBiddingItem ? startingBid : !buyNowAllow ? buyNowPrice : 0,
/* bid inc price */ isBiddingItem ? bidIncrement != null ? bidIncrement : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0, if (Settings.OPEN_MAIN_AUCTION_HOUSE_AFTER_MENU_LIST.getBoolean())
/* current price */ isBiddingItem ? startingBid : buyNowPrice <= -1 ? startingBid : buyNowPrice, instance.getGuiManager().showGUI(player, new GUIAuctionHouse(auctionPlayer));
isBiddingItem || !buyNowAllow, });
isBundle,
true,
isInfinite,
partialBuy
);
} }
return ReturnType.SUCCESS; return ReturnType.SUCCESS;

View File

@ -19,10 +19,12 @@
package ca.tweetzy.auctionhouse.guis; package ca.tweetzy.auctionhouse.guis;
import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.AuctionHouse;
import ca.tweetzy.auctionhouse.ahv3.api.ListingResult;
import ca.tweetzy.auctionhouse.api.AuctionAPI; import ca.tweetzy.auctionhouse.api.AuctionAPI;
import ca.tweetzy.auctionhouse.auction.AuctionPlayer; import ca.tweetzy.auctionhouse.auction.AuctionPlayer;
import ca.tweetzy.auctionhouse.auction.AuctionedItem; import ca.tweetzy.auctionhouse.auction.AuctionedItem;
import ca.tweetzy.auctionhouse.guis.confirmation.GUIListingConfirm; import ca.tweetzy.auctionhouse.guis.confirmation.GUIListingConfirm;
import ca.tweetzy.auctionhouse.helpers.AuctionCreator;
import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper; import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper;
import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer; import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer;
import ca.tweetzy.auctionhouse.settings.Settings; import ca.tweetzy.auctionhouse.settings.Settings;
@ -46,8 +48,10 @@ import java.util.stream.Collectors;
*/ */
public final class GUIBundleCreation extends AbstractPlaceholderGui { public final class GUIBundleCreation extends AbstractPlaceholderGui {
public GUIBundleCreation(AuctionPlayer player, int allowedTime, boolean buyNowAllow, boolean isBiddingItem, Double buyNowPrice, Double startingBid, Double bidIncrement) { final AuctionHouse instance = AuctionHouse.getInstance();
super(player);
public GUIBundleCreation(AuctionPlayer auctionPlayer, int allowedTime, boolean buyNowAllow, boolean isBiddingItem, Double buyNowPrice, Double startingBid, Double bidIncrement) {
super(auctionPlayer);
setTitle(Settings.GUI_CREATE_BUNDLE_TITLE.getString()); setTitle(Settings.GUI_CREATE_BUNDLE_TITLE.getString());
setRows(6); setRows(6);
setAllowDrops(false); setAllowDrops(false);
@ -59,7 +63,7 @@ public final class GUIBundleCreation extends AbstractPlaceholderGui {
for (int i = 0; i < 44; i++) { for (int i = 0; i < 44; i++) {
final ItemStack item = getItem(i); final ItemStack item = getItem(i);
if (item == null || item.getType() == XMaterial.AIR.parseMaterial()) continue; if (item == null || item.getType() == XMaterial.AIR.parseMaterial()) continue;
PlayerUtils.giveItem(player.getPlayer(), item); PlayerUtils.giveItem(auctionPlayer.getPlayer(), item);
} }
}); });
@ -123,7 +127,7 @@ public final class GUIBundleCreation extends AbstractPlaceholderGui {
} }
// are they even allowed to sell more items // are they even allowed to sell more items
if (player.isAtSellLimit()) { if (auctionPlayer.isAtSellLimit()) {
AuctionHouse.getInstance().getLocale().getMessage("general.sellinglimit").sendPrefixedMessage(e.player); AuctionHouse.getInstance().getLocale().getMessage("general.sellinglimit").sendPrefixedMessage(e.player);
return; return;
} }
@ -136,9 +140,6 @@ public final class GUIBundleCreation extends AbstractPlaceholderGui {
if (validItems.size() == 0) return; if (validItems.size() == 0) return;
final ItemStack bundle = AuctionAPI.getInstance().createBundledItem(firstItem, validItems.toArray(new ItemStack[0])); final ItemStack bundle = AuctionAPI.getInstance().createBundledItem(firstItem, validItems.toArray(new ItemStack[0]));
if (Settings.ASK_FOR_LISTING_CONFIRMATION.getBoolean()) {
// TODO clean up is monstrosity
AuctionedItem auctionedItem = new AuctionedItem(); AuctionedItem auctionedItem = new AuctionedItem();
auctionedItem.setId(UUID.randomUUID()); auctionedItem.setId(UUID.randomUUID());
auctionedItem.setOwner(e.player.getUniqueId()); auctionedItem.setOwner(e.player.getUniqueId());
@ -160,53 +161,37 @@ public final class GUIBundleCreation extends AbstractPlaceholderGui {
auctionedItem.setInfinite(false); auctionedItem.setInfinite(false);
auctionedItem.setAllowPartialBuy(false); auctionedItem.setAllowPartialBuy(false);
ItemStack finalFirstItem = firstItem; if (Settings.ASK_FOR_LISTING_CONFIRMATION.getBoolean()) {
AuctionHouse.getInstance().getGuiManager().showGUI(e.player, new GUIListingConfirm(e.player, auctionedItem, result -> { instance.getGuiManager().showGUI(auctionPlayer.getPlayer(), new GUIListingConfirm(auctionPlayer.getPlayer(), auctionedItem, result -> {
if (!result) { if (!result) {
e.player.closeInventory(); auctionPlayer.getPlayer().closeInventory();
validItems.forEach(item -> PlayerUtils.giveItem(e.player, item)); PlayerUtils.giveItem(auctionPlayer.getPlayer(), auctionedItem.getItem());
auctionPlayer.setItemBeingListed(null);
return; return;
} }
AuctionAPI.getInstance().listAuction( AuctionCreator.create(auctionPlayer, auctionedItem, (auction, listingResult) -> {
player.getPlayer(), if (listingResult != ListingResult.SUCCESS) {
validItems.size() > 1 ? finalFirstItem : validItems.get(0), PlayerUtils.giveItem(auctionPlayer.getPlayer(), auction.getItem());
validItems.size() > 1 ? bundle : validItems.get(0), auctionPlayer.setItemBeingListed(null);
allowedTime, return;
/* buy now price */ buyNowAllow ? buyNowPrice : -1,
/* start bid price */ isBiddingItem ? startingBid : !buyNowAllow ? buyNowPrice : 0,
/* bid inc price */ isBiddingItem ? bidIncrement != null ? bidIncrement : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0,
/* current price */ isBiddingItem ? startingBid : buyNowPrice <= -1 ? startingBid : buyNowPrice,
isBiddingItem || !buyNowAllow,
validItems.size() > 1,
false
);
e.gui.exit();
if (Settings.OPEN_MAIN_AUCTION_HOUSE_AFTER_MENU_LIST.getBoolean()) {
e.manager.showGUI(e.player, new GUIAuctionHouse(player));
} }
if (Settings.OPEN_MAIN_AUCTION_HOUSE_AFTER_MENU_LIST.getBoolean())
instance.getGuiManager().showGUI(auctionPlayer.getPlayer(), new GUIAuctionHouse(auctionPlayer));
});
})); }));
} else { } else {
AuctionAPI.getInstance().listAuction( AuctionCreator.create(auctionPlayer, auctionedItem, (auction, listingResult) -> {
player.getPlayer(), if (listingResult != ListingResult.SUCCESS) {
validItems.size() > 1 ? firstItem : validItems.get(0), PlayerUtils.giveItem(auctionPlayer.getPlayer(), auction.getItem());
validItems.size() > 1 ? bundle : validItems.get(0), auctionPlayer.setItemBeingListed(null);
allowedTime, return;
/* buy now price */ buyNowAllow ? buyNowPrice : -1,
/* start bid price */ isBiddingItem ? startingBid : !buyNowAllow ? buyNowPrice : 0,
/* bid inc price */ isBiddingItem ? bidIncrement != null ? bidIncrement : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0,
/* current price */ isBiddingItem ? startingBid : buyNowPrice <= -1 ? startingBid : buyNowPrice,
isBiddingItem || !buyNowAllow,
validItems.size() > 1,
false
);
e.gui.exit();
if (Settings.OPEN_MAIN_AUCTION_HOUSE_AFTER_MENU_LIST.getBoolean()) {
e.manager.showGUI(e.player, new GUIAuctionHouse(player));
} }
if (Settings.OPEN_MAIN_AUCTION_HOUSE_AFTER_MENU_LIST.getBoolean())
instance.getGuiManager().showGUI(auctionPlayer.getPlayer(), new GUIAuctionHouse(auctionPlayer));
});
} }
}); });
} }

View File

@ -21,15 +21,19 @@ package ca.tweetzy.auctionhouse.helpers;
import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.AuctionHouse;
import ca.tweetzy.auctionhouse.ahv3.api.ListingResult; import ca.tweetzy.auctionhouse.ahv3.api.ListingResult;
import ca.tweetzy.auctionhouse.api.AuctionAPI; import ca.tweetzy.auctionhouse.api.AuctionAPI;
import ca.tweetzy.auctionhouse.api.events.AuctionStartEvent;
import ca.tweetzy.auctionhouse.api.hook.McMMOHook; import ca.tweetzy.auctionhouse.api.hook.McMMOHook;
import ca.tweetzy.auctionhouse.auction.AuctionPlayer; import ca.tweetzy.auctionhouse.auction.AuctionPlayer;
import ca.tweetzy.auctionhouse.auction.AuctionedItem; import ca.tweetzy.auctionhouse.auction.AuctionedItem;
import ca.tweetzy.auctionhouse.managers.SoundManager;
import ca.tweetzy.auctionhouse.settings.Settings; import ca.tweetzy.auctionhouse.settings.Settings;
import ca.tweetzy.core.hooks.EconomyManager; import ca.tweetzy.core.hooks.EconomyManager;
import ca.tweetzy.core.utils.PlayerUtils; import ca.tweetzy.core.utils.PlayerUtils;
import ca.tweetzy.core.utils.TextUtils;
import ca.tweetzy.flight.comp.NBTEditor; import ca.tweetzy.flight.comp.NBTEditor;
import lombok.NonNull; import lombok.NonNull;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -77,6 +81,7 @@ public final class AuctionCreator {
return; return;
} }
final ItemStack finalItemToSell = auctionItem.getItem().clone();
final double originalBasePrice = auctionItem.getBasePrice(); final double originalBasePrice = auctionItem.getBasePrice();
final double originalStartPrice = auctionItem.getBidStartingPrice(); final double originalStartPrice = auctionItem.getBidStartingPrice();
final double originalIncrementPrice = auctionItem.getBidIncrementPrice(); final double originalIncrementPrice = auctionItem.getBidIncrementPrice();
@ -108,6 +113,38 @@ public final class AuctionCreator {
if (auctionItem.getListedWorld() == null) if (auctionItem.getListedWorld() == null)
auctionItem.setListedWorld(seller.getWorld().getName()); auctionItem.setListedWorld(seller.getWorld().getName());
AuctionStartEvent startEvent = new AuctionStartEvent(seller, auctionItem, listingFee);
Bukkit.getServer().getPluginManager().callEvent(startEvent);
if (startEvent.isCancelled()) {
result.accept(auctionItem, EVENT_CANCELED);
return;
}
//====================================================================================
// A VERY UGLY LISTING MESSAGING THING, IDEK, I GOTTA DEAL WITH THIS EVENTUALLY 💀
SoundManager.getInstance().playSound(seller, Settings.SOUNDS_LISTED_ITEM_ON_AUCTION_HOUSE.getString(), 1.0F, 1.0F);
String NAX = AuctionHouse.getInstance().getLocale().getMessage("auction.biditemwithdisabledbuynow").getMessage();
String msg = AuctionHouse.getInstance().getLocale().getMessage(auctionItem.isBidItem() ? "auction.listed.withbid" : "auction.listed.nobid")
.processPlaceholder("amount", finalItemToSell.getAmount())
.processPlaceholder("item", AuctionAPI.getInstance().getItemName(finalItemToSell))
.processPlaceholder("base_price", auctionItem.getBasePrice() <= -1 ? NAX : AuctionAPI.getInstance().formatNumber(auctionItem.getBasePrice()))
.processPlaceholder("start_price", AuctionAPI.getInstance().formatNumber(auctionItem.getBidStartingPrice()))
.processPlaceholder("increment_price", AuctionAPI.getInstance().formatNumber(auctionItem.getBidIncrementPrice())).getMessage();
if (AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(seller.getUniqueId()) == null) {
AuctionHouse.getInstance().getLocale().newMessage(TextUtils.formatText("&cCould not find auction player instance for&f: &e" + seller.getName() + "&c creating one now.")).sendPrefixedMessage(Bukkit.getConsoleSender());
AuctionHouse.getInstance().getAuctionPlayerManager().addPlayer(new AuctionPlayer(seller));
}
if (AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(seller.getUniqueId()).isShowListingInfo()) {
AuctionHouse.getInstance().getLocale().newMessage(msg).sendPrefixedMessage(seller);
}
//====================================================================================
// Actually attempt the insertion now // Actually attempt the insertion now
AuctionHouse.getInstance().getDataManager().insertAuctionAsync(auctionItem, (error, inserted) -> { AuctionHouse.getInstance().getDataManager().insertAuctionAsync(auctionItem, (error, inserted) -> {
auctionPlayer.setItemBeingListed(null); auctionPlayer.setItemBeingListed(null);
@ -136,8 +173,30 @@ public final class AuctionCreator {
} }
AuctionHouse.getInstance().getAuctionItemManager().addAuctionItem(auctionItem); AuctionHouse.getInstance().getAuctionItemManager().addAuctionItem(auctionItem);
result.accept(auctionItem, SUCCESS);
//====================================================================================
// ANOTHER VERY SHIT BROADCAST THAT IS IN FACT BROKEN
if (Settings.BROADCAST_AUCTION_LIST.getBoolean()) {
final String prefix = AuctionHouse.getInstance().getLocale().getMessage("general.prefix").getMessage();
String msgToAll = AuctionHouse.getInstance().getLocale().getMessage(auctionItem.isBidItem() ? "auction.broadcast.withbid" : "auction.broadcast.nobid")
.processPlaceholder("amount", finalItemToSell.getAmount())
.processPlaceholder("player", seller.getName())
.processPlaceholder("player_displayname", AuctionAPI.getInstance().getDisplayName(seller))
.processPlaceholder("item", AuctionAPI.getInstance().getItemName(finalItemToSell))
.processPlaceholder("base_price", auctionItem.getBasePrice() <= -1 ? NAX : AuctionAPI.getInstance().formatNumber(auctionItem.getBasePrice()))
.processPlaceholder("start_price", AuctionAPI.getInstance().formatNumber(auctionItem.getBidStartingPrice()))
.processPlaceholder("increment_price", AuctionAPI.getInstance().formatNumber(auctionItem.getBidIncrementPrice())).getMessage();
Bukkit.getOnlinePlayers().forEach(p -> {
if (!p.getUniqueId().equals(seller.getUniqueId()))
p.sendMessage(TextUtils.formatText((prefix.length() == 0 ? "" : prefix + " ") + msgToAll));
});
}
//====================================================================================
result.accept(auctionItem, SUCCESS);
}); });
} }
} }