mirror of
https://github.com/kiranhart/Auction-House.git
synced 2025-02-08 18:02:10 +01:00
fix item not returning on kick, adjust key tracking logic
Took 18 minutes
This commit is contained in:
parent
12d23279eb
commit
e5a91a4875
@ -27,10 +27,12 @@ import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer;
|
||||
import ca.tweetzy.auctionhouse.settings.Settings;
|
||||
import ca.tweetzy.core.utils.TextUtils;
|
||||
import ca.tweetzy.flight.comp.enums.ServerVersion;
|
||||
import ca.tweetzy.flight.nbtapi.NBT;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
@ -309,6 +311,15 @@ public class AuctionedItem {
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
public ItemStack getCleanItem() {
|
||||
ItemStack cleaned = this.item.clone();
|
||||
NBT.modify(cleaned, nbt -> {
|
||||
nbt.removeKey("AuctionDupeTracking");
|
||||
});
|
||||
|
||||
return cleaned;
|
||||
}
|
||||
|
||||
public boolean containsValidBid() {
|
||||
return isBidItem() && !this.highestBidder.equals(this.owner);
|
||||
}
|
||||
|
@ -30,10 +30,7 @@ import ca.tweetzy.auctionhouse.guis.GUIBundleCreation;
|
||||
import ca.tweetzy.auctionhouse.guis.confirmation.GUIListingConfirm;
|
||||
import ca.tweetzy.auctionhouse.guis.sell.GUISellListingType;
|
||||
import ca.tweetzy.auctionhouse.guis.sell.GUISellPlaceItem;
|
||||
import ca.tweetzy.auctionhouse.helpers.AuctionCreator;
|
||||
import ca.tweetzy.auctionhouse.helpers.BundleUtil;
|
||||
import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer;
|
||||
import ca.tweetzy.auctionhouse.helpers.PlayerHelper;
|
||||
import ca.tweetzy.auctionhouse.helpers.*;
|
||||
import ca.tweetzy.auctionhouse.settings.Settings;
|
||||
import ca.tweetzy.core.commands.AbstractCommand;
|
||||
import ca.tweetzy.core.compatibility.XMaterial;
|
||||
@ -128,6 +125,12 @@ public final class CommandSell extends AbstractCommand {
|
||||
return ReturnType.FAILURE;
|
||||
}
|
||||
|
||||
// check if item has dt key
|
||||
if(Validate.hasDTKey(originalItem)) {
|
||||
Bukkit.broadcastMessage("has dupe item");
|
||||
return ReturnType.FAILURE;
|
||||
}
|
||||
|
||||
// Check for block items
|
||||
if (!AuctionAPI.getInstance().meetsListingRequirements(player, itemToSell)) return ReturnType.FAILURE;
|
||||
|
||||
@ -324,7 +327,7 @@ public final class CommandSell extends AbstractCommand {
|
||||
// SCUFFED SHIT
|
||||
if (!auctionedItem.isRequest())
|
||||
NBT.modify(itemToSell, nbt -> {
|
||||
nbt.setBoolean("AuctionDupeTracking", true);
|
||||
nbt.setUUID("AuctionDupeTracking", auctionedItem.getId());
|
||||
});
|
||||
|
||||
auctionedItem.setItem(itemToSell);
|
||||
@ -364,7 +367,7 @@ public final class CommandSell extends AbstractCommand {
|
||||
AuctionHouse.getInstance().getAuctionPlayerManager().processSell(player);
|
||||
|
||||
player.closeInventory();
|
||||
PlayerUtils.giveItem(player, auctionedItem.getItem());
|
||||
PlayerUtils.giveItem(player, auctionedItem.getCleanItem());
|
||||
auctionPlayer.setItemBeingListed(null);
|
||||
return;
|
||||
}
|
||||
@ -382,7 +385,7 @@ public final class CommandSell extends AbstractCommand {
|
||||
AuctionHouse.getInstance().getAuctionPlayerManager().processSell(player);
|
||||
|
||||
if (listingResult != ListingResult.SUCCESS) {
|
||||
PlayerUtils.giveItem(player, auction.getItem());
|
||||
PlayerUtils.giveItem(player, auction.getCleanItem());
|
||||
auctionPlayer.setItemBeingListed(null);
|
||||
return;
|
||||
}
|
||||
@ -402,7 +405,6 @@ public final class CommandSell extends AbstractCommand {
|
||||
*/
|
||||
}));
|
||||
} else {
|
||||
// Bukkit.getScheduler().runTaskLaterAsynchronously(AuctionHouse.getInstance(), () -> {
|
||||
if (auctionPlayer.getPlayer() == null || !auctionPlayer.getPlayer().isOnline()) {
|
||||
return ReturnType.FAILURE;
|
||||
}
|
||||
@ -425,8 +427,6 @@ public final class CommandSell extends AbstractCommand {
|
||||
AuctionHouse.newChain().sync(player::closeInventory).execute();
|
||||
});
|
||||
|
||||
// }, Settings.INTERNAL_CREATE_DELAY.getInt());
|
||||
|
||||
}
|
||||
|
||||
return ReturnType.SUCCESS;
|
||||
|
@ -32,6 +32,7 @@ import ca.tweetzy.core.compatibility.XMaterial;
|
||||
import ca.tweetzy.core.utils.PlayerUtils;
|
||||
import ca.tweetzy.core.utils.TextUtils;
|
||||
import ca.tweetzy.flight.utils.QuickItem;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -67,15 +68,16 @@ public final class GUIListingConfirm extends AuctionBaseGUI {
|
||||
setOnClose(close -> {
|
||||
final AuctionPlayer auctionPlayer = AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(close.player.getUniqueId());
|
||||
|
||||
if (!this.resulted.contains(close.player.getUniqueId()))
|
||||
if (!this.resulted.contains(close.player.getUniqueId())) {
|
||||
if (auctionPlayer.getItemBeingListed() != null) {
|
||||
if (BundleUtil.isBundledItem(auctionedItem.getItem())) PlayerUtils.giveItem(close.player, BundleUtil.extractBundleItems(auctionedItem.getItem()));
|
||||
if (BundleUtil.isBundledItem(auctionedItem.getItem())) PlayerUtils.giveItem(close.player, BundleUtil.extractBundleItems(auctionedItem.getCleanItem()));
|
||||
else {
|
||||
PlayerUtils.giveItem(close.player, auctionedItem.getItem());
|
||||
PlayerUtils.giveItem(close.player, auctionedItem.getCleanItem());
|
||||
}
|
||||
|
||||
auctionPlayer.setItemBeingListed(null);
|
||||
}
|
||||
}
|
||||
|
||||
close.player.removeMetadata("AuctionHouseConfirmListing", AuctionHouse.getInstance());
|
||||
AuctionHouse.getInstance().getAuctionPlayerManager().processSell(close.player);
|
||||
|
@ -18,9 +18,24 @@
|
||||
|
||||
package ca.tweetzy.auctionhouse.helpers;
|
||||
|
||||
import ca.tweetzy.auctionhouse.AuctionHouse;
|
||||
import ca.tweetzy.core.compatibility.XMaterial;
|
||||
import ca.tweetzy.flight.nbtapi.NBT;
|
||||
import lombok.NonNull;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@UtilityClass
|
||||
public final class Validate {
|
||||
|
||||
|
||||
public boolean hasDTKey(ItemStack stack) {
|
||||
if (stack == null || stack.getType() == XMaterial.AIR.parseMaterial() || stack.getAmount() == 0) return false;
|
||||
|
||||
final UUID uuid = NBT.get(stack, nbt -> (UUID) nbt.getUUID("AuctionDupeTracking"));
|
||||
return AuctionHouse.getInstance().getAuctionItemManager().getItem(uuid) != null;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ import ca.tweetzy.auctionhouse.guis.GUIAuctionHouse;
|
||||
import ca.tweetzy.auctionhouse.helpers.BundleUtil;
|
||||
import ca.tweetzy.auctionhouse.helpers.PlayerHelper;
|
||||
import ca.tweetzy.auctionhouse.helpers.UpdateChecker;
|
||||
import ca.tweetzy.auctionhouse.helpers.Validate;
|
||||
import ca.tweetzy.auctionhouse.settings.Settings;
|
||||
import ca.tweetzy.core.compatibility.XMaterial;
|
||||
import ca.tweetzy.core.utils.PlayerUtils;
|
||||
@ -32,27 +33,30 @@ import ca.tweetzy.flight.comp.Titles;
|
||||
import ca.tweetzy.flight.comp.enums.ServerVersion;
|
||||
import ca.tweetzy.flight.nbtapi.NBT;
|
||||
import ca.tweetzy.flight.utils.Common;
|
||||
import ca.tweetzy.flight.utils.PlayerUtil;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Chest;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
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.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.PrepareAnvilEvent;
|
||||
import org.bukkit.event.inventory.PrepareItemCraftEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.*;
|
||||
import org.bukkit.inventory.CraftingInventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* The current file has been created by Kiran Hart
|
||||
@ -97,9 +101,9 @@ public class PlayerListeners implements Listener {
|
||||
for (ItemStack item : player.getInventory().getStorageContents()) {
|
||||
if (item == null || item.getType() == XMaterial.AIR.parseMaterial() || item.getAmount() == 0) continue;
|
||||
|
||||
final boolean inventoryContainsListedItem = NBT.get(item, nbt -> (boolean) nbt.getBoolean("AuctionDupeTracking"));
|
||||
final UUID auctionItemId = NBT.get(item, nbt -> (UUID) nbt.getUUID("AuctionDupeTracking"));
|
||||
|
||||
if (inventoryContainsListedItem) {
|
||||
if (AuctionHouse.getInstance().getAuctionItemManager().getItem(auctionItemId) != null) {
|
||||
player.getInventory().remove(item);
|
||||
Bukkit.getServer().getConsoleSender().sendMessage(Common.colorize("&8[&eAuctionHouse&8] &CRemoving duped item from " + player.getName() + "'s inventory!"));
|
||||
}
|
||||
@ -214,4 +218,56 @@ public class PlayerListeners implements Listener {
|
||||
|
||||
event.setResult(stack);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onInteract(PlayerInteractEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
final ItemStack item = PlayerUtil.getHand(player);
|
||||
|
||||
if (Validate.hasDTKey(item)) {
|
||||
event.setCancelled(true);
|
||||
clearHand(player);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onAuctionItemDrop(PlayerDropItemEvent event) {
|
||||
final Item item = event.getItemDrop();
|
||||
final ItemStack itemStack = item.getItemStack();
|
||||
|
||||
if (Validate.hasDTKey(itemStack))
|
||||
item.remove();
|
||||
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onAuctionItemPlace(BlockPlaceEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
final ItemStack item = event.getItemInHand();
|
||||
|
||||
if (Validate.hasDTKey(item)) {
|
||||
event.setCancelled(true);
|
||||
clearHand(player);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onAuctionItemPickup(PlayerPickupItemEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
final Item item = event.getItem();
|
||||
final ItemStack itemStack = item.getItemStack();
|
||||
|
||||
if (Validate.hasDTKey(itemStack)) {
|
||||
event.setCancelled(true);
|
||||
clearHand(player);
|
||||
}
|
||||
}
|
||||
|
||||
private void clearHand(Player player) {
|
||||
if (ServerVersion.isServerVersionAbove(ServerVersion.V1_8)) {
|
||||
player.getInventory().setItemInMainHand(XMaterial.AIR.parseItem());
|
||||
} else {
|
||||
player.getInventory().setItemInHand(XMaterial.AIR.parseItem());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user