Switched to signs instead of heads

Fixed addon vs addin bug in addon.yml.
This commit is contained in:
Tastybento 2018-04-18 11:21:09 -07:00
parent b57a54b0f9
commit 1451465be0
3 changed files with 30 additions and 31 deletions

View File

@ -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

View File

@ -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<UUID, ItemStack> cachedHeads = new HashMap<>();
private Map<UUID, List<String>> 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<String> getSign(UUID playerUUID) {
List<String> 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);
}
}

View File

@ -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();
}