diff --git a/src/main/java/xyz/etztech/qol/QoL.java b/src/main/java/xyz/etztech/qol/QoL.java index 9a93714..e7867fb 100644 --- a/src/main/java/xyz/etztech/qol/QoL.java +++ b/src/main/java/xyz/etztech/qol/QoL.java @@ -102,6 +102,9 @@ public class QoL extends JavaPlugin { // Shopkeepers Hook if (Bukkit.getPluginManager().isPluginEnabled("Shopkeepers")) { shopkeepersAPI = ShopkeepersPlugin.getInstance(); + + new HeadShopListener(this); + log("Hooked in Shopkeepers for the head shop"); } diff --git a/src/main/java/xyz/etztech/qol/listeners/HeadShopListener.java b/src/main/java/xyz/etztech/qol/listeners/HeadShopListener.java new file mode 100644 index 0000000..524db30 --- /dev/null +++ b/src/main/java/xyz/etztech/qol/listeners/HeadShopListener.java @@ -0,0 +1,66 @@ +package xyz.etztech.qol.listeners; + +import com.nisovin.shopkeepers.api.ShopkeepersPlugin; +import com.nisovin.shopkeepers.api.shopkeeper.ShopkeeperRegistry; +import com.nisovin.shopkeepers.api.shopkeeper.admin.regular.RegularAdminShopkeeper; +import com.nisovin.shopkeepers.api.shopkeeper.offers.TradeOffer; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import xyz.etztech.qol.QoL; + +import java.util.ArrayList; +import java.util.List; + +public class HeadShopListener implements Listener{ + + private QoL plugin; + + public HeadShopListener(QoL plugin) { + this.plugin = plugin; + plugin.getServer().getPluginManager().registerEvents(this, plugin); + } + + @EventHandler + public void onJoin(PlayerJoinEvent event) { + final Player player = event.getPlayer(); + + ShopkeepersPlugin shopkeepersAPI = plugin.getShopkeepersAPI(); + if (shopkeepersAPI != null && player.hasPermission("qol.head_shop")) { + int shopKeeperID = plugin.getConfig().getInt("head_shop.id", -1); + + if (shopKeeperID != -1) { + ShopkeeperRegistry shopkeeperRegistry = shopkeepersAPI.getShopkeeperRegistry(); + RegularAdminShopkeeper donorHeadShop = (RegularAdminShopkeeper) shopkeeperRegistry.getShopkeeperById(shopKeeperID); + + if (donorHeadShop != null) { + // 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(); + return itemOfferMeta.getOwningPlayer().getUniqueId() == player.getUniqueId(); + }); + + donorHeadShop.setOffers(tradeOffers); + + // 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(); + + skullMeta.setOwningPlayer(player); + skullMeta.setDisplayName(player.getDisplayName()); + playerHead.setItemMeta(skullMeta); + + TradeOffer donorHeadTrade = TradeOffer.create(playerHead, new ItemStack(Material.DIAMOND, diamondPrice), null); + + donorHeadShop.addOffer(donorHeadTrade); + } + } + } + } +} diff --git a/src/main/java/xyz/etztech/qol/listeners/JoinListener.java b/src/main/java/xyz/etztech/qol/listeners/JoinListener.java index 8b1c5e5..5083eaa 100644 --- a/src/main/java/xyz/etztech/qol/listeners/JoinListener.java +++ b/src/main/java/xyz/etztech/qol/listeners/JoinListener.java @@ -1,18 +1,11 @@ package xyz.etztech.qol.listeners; -import com.nisovin.shopkeepers.api.ShopkeepersPlugin; -import com.nisovin.shopkeepers.api.shopkeeper.ShopkeeperRegistry; -import com.nisovin.shopkeepers.api.shopkeeper.admin.regular.RegularAdminShopkeeper; -import com.nisovin.shopkeepers.api.shopkeeper.offers.TradeOffer; import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.SkullMeta; import xyz.etztech.qol.QoL; import xyz.etztech.qol.commands.CheckupCommand; @@ -62,39 +55,6 @@ public class JoinListener implements Listener { } } - ShopkeepersPlugin shopkeepersAPI = plugin.getShopkeepersAPI(); - if (shopkeepersAPI != null && player.hasPermission("qol.head_shop")) { - int shopKeeperID = plugin.getConfig().getInt("head_shop.id", -1); - - if (shopKeeperID != -1) { - ShopkeeperRegistry shopkeeperRegistry = shopkeepersAPI.getShopkeeperRegistry(); - RegularAdminShopkeeper donorHeadShop = (RegularAdminShopkeeper) shopkeeperRegistry.getShopkeeperById(shopKeeperID); - - if (donorHeadShop != null) { - // 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(); - return itemOfferMeta.getOwningPlayer().getUniqueId() == player.getUniqueId(); - }); - - donorHeadShop.setOffers(tradeOffers); - - // 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(); - - skullMeta.setOwningPlayer(player); - skullMeta.setDisplayName(player.getDisplayName()); - playerHead.setItemMeta(skullMeta); - - TradeOffer donorHeadTrade = TradeOffer.create(playerHead, new ItemStack(Material.DIAMOND, diamondPrice), null); - - donorHeadShop.addOffer(donorHeadTrade); - } - } - } CheckupCommand.join(player); }