sell menu item drops if killed after item is placed in it

Took 17 minutes
This commit is contained in:
Kiran Hart 2022-09-16 11:46:59 -04:00
parent 68253d35f3
commit 068e21c100
No known key found for this signature in database
GPG Key ID: 5F36C7BC79D3EBC3
6 changed files with 52 additions and 63 deletions

View File

@ -743,6 +743,11 @@ public class AuctionAPI {
// 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();

View File

@ -10,6 +10,7 @@ import lombok.Getter;
import lombok.Setter;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.util.*;
@ -35,8 +36,11 @@ public class AuctionPlayer {
private boolean showListingInfo;
private long lastListedItem;
private ItemStack itemBeingListed;
private int assignedTaskId;
public AuctionPlayer(UUID uuid) {
this(uuid, Bukkit.getPlayer(uuid), AuctionSaleType.BOTH, AuctionItemCategory.ALL, AuctionSortType.RECENT, "", true, -1);
this(uuid, Bukkit.getPlayer(uuid), AuctionSaleType.BOTH, AuctionItemCategory.ALL, AuctionSortType.RECENT, "", true, -1, null,-1);
}
public AuctionPlayer(Player player) {

View File

@ -593,7 +593,9 @@ public class DataManager extends DataManagerAbstract {
AuctionSortType.valueOf(resultSet.getString("filter_sort_type")),
"",
true,
resultSet.getLong("last_listed_item")
resultSet.getLong("last_listed_item"),
null,
-1
);
}

View File

@ -17,9 +17,11 @@ import ca.tweetzy.core.input.PlayerChatInput;
import ca.tweetzy.core.utils.NumberUtils;
import ca.tweetzy.core.utils.PlayerUtils;
import ca.tweetzy.core.utils.TextUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitTask;
import java.util.Arrays;
import java.util.HashMap;
@ -46,6 +48,7 @@ public class GUISellItem extends AbstractPlaceholderGui {
private boolean isAllowingBuyNow;
private int auctionTime;
private BukkitTask task;
public GUISellItem(AuctionPlayer auctionPlayer, ItemStack itemToBeListed, double buyNowPrice, double bidStartPrice, double bidIncrementPrice, boolean isBiddingItem, boolean isAllowingBuyNow, int auctionTime) {
super(auctionPlayer);
@ -84,9 +87,14 @@ public class GUISellItem extends AbstractPlaceholderGui {
}
AuctionHouse.getInstance().getAuctionPlayerManager().addToUsingSellGUI(open.player.getUniqueId());
makeMess();
});
setOnClose(close -> {
cleanup();
if (!AuctionHouse.getInstance().getAuctionPlayerManager().getUsingSellGUI().contains(close.player.getUniqueId())) {
ItemStack toGiveBack = AuctionHouse.getInstance().getAuctionPlayerManager().getSellHolding().get(close.player.getUniqueId());
PlayerUtils.giveItem(close.player, toGiveBack); // this could give them air
@ -138,6 +146,7 @@ public class GUISellItem extends AbstractPlaceholderGui {
}
}
this.itemToBeListed = e.clickedItem;
});
@ -404,8 +413,6 @@ public class GUISellItem extends AbstractPlaceholderGui {
false
);
e.player.closeInventory();
e.player.closeInventory();
if (Settings.OPEN_MAIN_AUCTION_HOUSE_AFTER_MENU_LIST.getBoolean()) {
e.manager.showGUI(e.player, new GUIAuctionHouse(this.auctionPlayer));
@ -463,5 +470,17 @@ public class GUISellItem extends AbstractPlaceholderGui {
private void setTheItemToBeListed() {
this.itemToBeListed = getItem(1, 4);
this.auctionPlayer.setItemBeingListed(this.itemToBeListed);
}
private void makeMess() {
task = Bukkit.getServer().getScheduler().runTaskTimerAsynchronously(AuctionHouse.getInstance(), this::setTheItemToBeListed, 0L, 10);
this.auctionPlayer.setAssignedTaskId(task.getTaskId());
}
private void cleanup() {
if (task != null) {
task.cancel();
}
}
}

View File

@ -4,6 +4,7 @@ import ca.tweetzy.auctionhouse.AuctionHouse;
import ca.tweetzy.auctionhouse.api.AuctionAPI;
import ca.tweetzy.auctionhouse.api.UpdateChecker;
import ca.tweetzy.auctionhouse.api.hook.PlaceholderAPIHook;
import ca.tweetzy.auctionhouse.auction.AuctionPlayer;
import ca.tweetzy.auctionhouse.guis.GUIAuctionHouse;
import ca.tweetzy.auctionhouse.helpers.PlayerHelper;
import ca.tweetzy.auctionhouse.settings.Settings;
@ -22,6 +23,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.inventory.PrepareAnvilEvent;
import org.bukkit.event.inventory.PrepareItemCraftEvent;
import org.bukkit.event.player.AsyncPlayerChatEvent;
@ -42,6 +44,22 @@ import java.util.List;
*/
public class PlayerListeners implements Listener {
@EventHandler
public void onPlayerDeath(PlayerDeathEvent event) {
final Player player = event.getEntity();
final AuctionPlayer auctionPlayer = AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(player.getUniqueId());
if (auctionPlayer != null) {
// task id cancel
Bukkit.getServer().getScheduler().cancelTask(auctionPlayer.getAssignedTaskId());
if (auctionPlayer.getItemBeingListed() != null && player.getLocation().getWorld() != null) {
player.getLocation().getWorld().dropItemNaturally(player.getLocation(), auctionPlayer.getItemBeingListed());
}
}
}
@EventHandler(priority = EventPriority.HIGH)
public void onPlayerJoin(PlayerJoinEvent e) {
Player player = e.getPlayer();
@ -60,9 +78,6 @@ public class PlayerListeners implements Listener {
public void onPlayerQuit(PlayerQuitEvent e) {
Player player = e.getPlayer();
//todo maybe add this back if it messes up stuff
// AuctionHouse.getInstance().getAuctionPlayerManager().getCooldowns().remove(player.getUniqueId());
AuctionHouse.getInstance().getAuctionPlayerManager().getSellHolding().remove(player.getUniqueId());
AuctionHouse.getInstance().getLogger().info("Removing sell holding instance for user: " + player.getName());
}

View File

@ -1,56 +0,0 @@
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* The current file has been created by Kiran Hart
* Date Created: July 21 2021
* Time Created: 2:51 p.m.
* Usage of any code found within this class is prohibited unless given explicit permission otherwise
*/
public class Test {
public static void main(String[] args) {
final List<TestObject> list = new ArrayList<>();
list.add(new TestObject(1, "Kiran"));
list.add(new TestObject(2, "Carl"));
list.add(new TestObject(3, "Orlando"));
System.out.println(list.size());
}
@AllArgsConstructor
@Getter
static class TestObject {
private final int id;
private final String name;
}
public static long getSecondsFromString(String time) {
time = time.toLowerCase();
String[] tokens = time.split("(?<=\\d)(?=\\D)|(?=\\d)(?<=\\D)");
char suffix = tokens[1].charAt(0);
int amount = Integer.parseInt(tokens[0]);
switch (suffix) {
case 's':
return amount;
case 'm':
return (long) amount * 60;
case 'h':
return (long) amount * 3600;
case 'd':
return (long) amount * 3600 * 24;
case 'y':
return (long) amount * 3600 * 24 * 365;
default:
return 0L;
}
}
}