diff --git a/src/main/java/xyz/etztech/qol/listeners/JoinListener.java b/src/main/java/xyz/etztech/qol/listeners/JoinListener.java index 8fccdcf..4aaeede 100644 --- a/src/main/java/xyz/etztech/qol/listeners/JoinListener.java +++ b/src/main/java/xyz/etztech/qol/listeners/JoinListener.java @@ -1,26 +1,18 @@ package xyz.etztech.qol.listeners; -import com.nisovin.shopkeepers.api.ShopkeepersAPI; import com.nisovin.shopkeepers.api.ShopkeepersPlugin; -import com.nisovin.shopkeepers.api.shopkeeper.Shopkeeper; import com.nisovin.shopkeepers.api.shopkeeper.ShopkeeperRegistry; import com.nisovin.shopkeepers.api.shopkeeper.admin.regular.RegularAdminShopkeeper; -import com.nisovin.shopkeepers.api.shopkeeper.offers.PriceOffer; import com.nisovin.shopkeepers.api.shopkeeper.offers.TradeOffer; -import com.nisovin.shopkeepers.api.shopobjects.ShopObject; -import com.nisovin.shopkeepers.api.storage.ShopkeeperStorage; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; -import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.SkullMeta; -import org.dynmap.markers.Marker; import xyz.etztech.qol.QoL; import xyz.etztech.qol.commands.CheckupCommand; @@ -79,28 +71,27 @@ public class JoinListener implements Listener { RegularAdminShopkeeper donorHeadShop = (RegularAdminShopkeeper) shopkeeperRegistry.getShopkeeperById(shopKeeperID); if (donorHeadShop != null) { - - boolean donorFound = false; - for (TradeOffer tradeOffer: donorHeadShop.getOffers()) { + // Remove the head if it already exists. This is done to refresh the skin of the head. + List tradeOffers = new ArrayList<>(donorHeadShop.getOffers()); + tradeOffers.removeIf(tradeOffer -> { SkullMeta itemOfferMeta = (SkullMeta)tradeOffer.getResultItem().getItemMeta(); - if (itemOfferMeta.getOwningPlayer().getUniqueId() == player.getUniqueId()) { - donorFound = true; - break; - } - } + return itemOfferMeta.getOwningPlayer().getUniqueId() == player.getUniqueId(); + }); - if (!donorFound) { - int diamondPrice = plugin.getConfig().getInt("head_shop.price", 2); - ItemStack playerHead = new ItemStack(Material.PLAYER_HEAD); - SkullMeta skullMeta = (SkullMeta) playerHead.getItemMeta(); + donorHeadShop.setOffers(tradeOffers); - skullMeta.setOwningPlayer(player); - skullMeta.setDisplayName(player.getDisplayName()); - playerHead.setItemMeta(skullMeta); + // Add the head to the shop + int diamondPrice = plugin.getConfig().getInt("head_shop.price", 2); + ItemStack playerHead = new ItemStack(Material.PLAYER_HEAD); + SkullMeta skullMeta = (SkullMeta) playerHead.getItemMeta(); - TradeOffer donorHeadTrade = TradeOffer.create(playerHead, new ItemStack(Material.DIAMOND, diamondPrice), null); - donorHeadShop.addOffer(donorHeadTrade); - } + skullMeta.setOwningPlayer(player); + skullMeta.setDisplayName(player.getDisplayName()); + playerHead.setItemMeta(skullMeta); + + TradeOffer donorHeadTrade = TradeOffer.create(playerHead, new ItemStack(Material.DIAMOND, diamondPrice), null); + + donorHeadShop.addOffer(donorHeadTrade); } }