From 1451465be0a89367fd8af5c7dabee2d181942365 Mon Sep 17 00:00:00 2001 From: Tastybento Date: Wed, 18 Apr 2018 11:21:09 -0700 Subject: [PATCH] Switched to signs instead of heads Fixed addon vs addin bug in addon.yml. --- addon.yml | 8 ++- .../addon/warps/WarpPanelManager.java | 49 +++++++------------ .../addon/warps/WarpSignsManager.java | 4 ++ 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/addon.yml b/addon.yml index 023b53e..5519b92 100755 --- a/addon.yml +++ b/addon.yml @@ -1,5 +1,11 @@ name: BSkyBlock-WelcomeWarps -main: bskyblock.addin.warps.Warp +main: bskyblock.addon.warps.Warp version: 0.1 authors: tastybento + +permissions: + bskyblock.island.warp: + description: Player can use warp or warps commands + default: true + diff --git a/src/bskyblock/addon/warps/WarpPanelManager.java b/src/bskyblock/addon/warps/WarpPanelManager.java index 6169c55..8d8dd62 100644 --- a/src/bskyblock/addon/warps/WarpPanelManager.java +++ b/src/bskyblock/addon/warps/WarpPanelManager.java @@ -7,10 +7,8 @@ import java.util.Map; import java.util.UUID; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.SkullMeta; import us.tastybento.bskyblock.api.panels.ClickType; import us.tastybento.bskyblock.api.panels.PanelItem; @@ -25,19 +23,19 @@ public class WarpPanelManager { private static final int PANEL_MAX_SIZE = 52; private Warp addon; // This is a cache of heads, so they don't need to be created everytime - private Map cachedHeads = new HashMap<>(); + private Map> cachedHeads = new HashMap<>(); public WarpPanelManager(Warp addon) { this.addon = addon; - addon.getWarpSignsManager().getSortedWarps().forEach(this :: getSkull); + addon.getWarpSignsManager().getSortedWarps().forEach(this :: getSign); } private PanelItem getPanelItem(UUID warpOwner) { return new PanelItemBuilder() - .icon(cachedHeads.getOrDefault(warpOwner, getSkull(warpOwner))) + .icon(Material.SIGN) .name(addon.getBSkyBlock().getPlayers().getName(warpOwner)) - .description(addon.getWarpSignsManager().getSignText(warpOwner)) + .description(cachedHeads.getOrDefault(warpOwner, getSign(warpOwner))) .clickHandler(new ClickHandler() { @Override @@ -49,31 +47,14 @@ public class WarpPanelManager { } /** - * Gets the skull for this player UUID - * @param playerUUID - the player's UUID - * @return Player skull item + * Gets sign text and caches it + * @param playerUUID + * @return */ - @SuppressWarnings("deprecation") - private ItemStack getSkull(UUID playerUUID) { - String playerName = addon.getBSkyBlock().getPlayers().getName(playerUUID); - if (DEBUG) - addon.getLogger().info("DEBUG: name of warp = " + playerName); - if (playerName == null) { - if (DEBUG) - addon.getLogger().warning("Warp for Player: UUID " + playerUUID.toString() + " is unknown on this server, skipping..."); - return null; - } - ItemStack playerSkull = new ItemStack(Material.SKULL_ITEM, 1, (short) 3); - SkullMeta meta = (SkullMeta) playerSkull.getItemMeta(); - meta.setDisplayName(ChatColor.WHITE + playerName); - playerSkull.setItemMeta(meta); - cachedHeads.put(playerUUID, playerSkull); - Bukkit.getScheduler().runTaskAsynchronously(addon.getBSkyBlock(), () -> { - meta.setOwner(playerName); - playerSkull.setItemMeta(meta); - cachedHeads.put(playerUUID, playerSkull); - }); - return playerSkull; + private List getSign(UUID playerUUID) { + List result = addon.getWarpSignsManager().getSignText(playerUUID); + cachedHeads.put(playerUUID, result); + return result; } /** @@ -136,4 +117,12 @@ public class WarpPanelManager { panelBuilder.build(); } + /** + * Removes sign text from the cache + * @param key + */ + public void removeWarp(UUID key) { + cachedHeads.remove(key); + } + } diff --git a/src/bskyblock/addon/warps/WarpSignsManager.java b/src/bskyblock/addon/warps/WarpSignsManager.java index ecb57ca..ac81c2c 100644 --- a/src/bskyblock/addon/warps/WarpSignsManager.java +++ b/src/bskyblock/addon/warps/WarpSignsManager.java @@ -406,6 +406,8 @@ public class WarpSignsManager implements Listener { // Inform the player user.sendMessage("warps.sign-removed"); } + // Remove sign from warp panel cache + addon.getWarpPanelManager().removeWarp(en.getKey()); it.remove(); } } @@ -421,6 +423,8 @@ public class WarpSignsManager implements Listener { if (warpList.containsKey(uuid)) { popSign(warpList.get(uuid)); warpList.remove(uuid); + // Remove sign from warp panel cache + addon.getWarpPanelManager().removeWarp(uuid); } saveWarpList(); }