package cx.sfy.TheBridge.managers; import java.util.ArrayList; import java.util.HashMap; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.entity.Player; import cx.sfy.TheBridge.Main; import cx.sfy.TheBridge.hologram.TruenoHologram; import cx.sfy.TheBridge.hologram.TruenoHologramAPI; import cx.sfy.TheBridge.tops.BoardType; import cx.sfy.TheBridge.tops.Top; import me.clip.placeholderapi.PlaceholderAPI; public class TopManager { private HashMap nkills = new HashMap(); private HashMap nwins = new HashMap(); private HashMap ngoals = new HashMap(); private HashMap fkills = new HashMap(); private HashMap fwins = new HashMap(); private HashMap fgoals = new HashMap(); private ArrayList nkillslines = new ArrayList(); private ArrayList nwinslines = new ArrayList(); private ArrayList ngoalslines = new ArrayList(); private ArrayList fkillslines = new ArrayList(); private ArrayList fwinslines = new ArrayList(); private ArrayList fgoalslines = new ArrayList(); private HashMap> playerHolo = new HashMap>(); private HashMap holo = new HashMap(); Main plugin; public TopManager(Main plugin) { this.plugin = plugin; } public void updateTops() { plugin.getLm().reloadLocations(); nkills.clear(); nwins.clear(); ngoals.clear(); fkills.clear(); fwins.clear(); fgoals.clear(); plugin.getDb().loadNormalKills(); plugin.getDb().loadNormalWins(); plugin.getDb().loadNormalGoals(); plugin.getDb().loadFourKills(); plugin.getDb().loadFourWins(); plugin.getDb().loadFourGoals(); Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "[TheBridge] Tops Updated"); } public void createInfo(Player p) { if (!playerHolo.containsKey(p)) { playerHolo.put(p, new ArrayList()); } removeHolo(p); if (plugin.getLm().getStats() != null) { ArrayList stats = new ArrayList(); Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() { @Override public void run() { for (String msg2 : plugin.getLang().getList("stats")) { stats.add(PlaceholderAPI.setPlaceholders(p, ChatColor.translateAlternateColorCodes('&', msg2))); } TruenoHologram hologram2 = TruenoHologramAPI.getNewHologram(); hologram2.setupPlayerHologram(p, plugin.getLm().getStats(), stats); hologram2.display(); playerHolo.get(p).add(hologram2); } }, 20L); } } public void removeHolo(Player p) { for (TruenoHologram holo : playerHolo.get(p)) { holo.delete(); } } public void removeHolo() { for (TruenoHologram holo : holo.values()) { holo.delete(); } } public void removeHolo(BoardType type) { if (holo.containsKey(type)) { holo.get(type).delete(); } } public void createTop(Location location, BoardType type) { if (type.equals(BoardType.NORMAL_KILLS)) { removeHolo(type); nkillslines.clear(); for (String line : plugin.getLang().getList("tops.normal.kills")) { if (line.contains("")) { for (Top top : nkills.values()) { nkillslines.add(ChatColor.YELLOW + "" + ChatColor.BOLD + top.getTop() + ".- " + ChatColor.GRAY + top.getName() + " - " + ChatColor.GOLD + "" + top.getAmount()); } } else { nkillslines.add(ChatColor.translateAlternateColorCodes('&', line)); } } TruenoHologram hologram = TruenoHologramAPI.getNewHologram(); hologram.setDistanceBetweenLines(0.35); hologram.setupWorldHologram(location, nkillslines); hologram.display(); holo.put(type, hologram); } if (type.equals(BoardType.NORMAL_WINS)) { removeHolo(type); nwinslines.clear(); for (String line : plugin.getLang().getList("tops.normal.wins")) { if (line.contains("")) { for (Top top : nwins.values()) { nwinslines.add(ChatColor.YELLOW + "" + ChatColor.BOLD + top.getTop() + ".- " + ChatColor.GRAY + top.getName() + " - " + ChatColor.GOLD + "" + top.getAmount()); } } else { nwinslines.add(ChatColor.translateAlternateColorCodes('&', line)); } } TruenoHologram hologram = TruenoHologramAPI.getNewHologram(); hologram.setDistanceBetweenLines(0.35); hologram.setupWorldHologram(location, nwinslines); hologram.display(); holo.put(type, hologram); } if (type.equals(BoardType.NORMAL_GOALS)) { removeHolo(type); ngoalslines.clear(); for (String line : plugin.getLang().getList("tops.normal.goals")) { if (line.contains("")) { for (Top top : ngoals.values()) { ngoalslines.add(ChatColor.YELLOW + "" + ChatColor.BOLD + top.getTop() + ".- " + ChatColor.GRAY + top.getName() + " - " + ChatColor.GOLD + "" + top.getAmount()); } } else { ngoalslines.add(ChatColor.translateAlternateColorCodes('&', line)); } } TruenoHologram hologram = TruenoHologramAPI.getNewHologram(); hologram.setDistanceBetweenLines(0.35); hologram.setupWorldHologram(location, ngoalslines); hologram.display(); holo.put(type, hologram); } if (type.equals(BoardType.FOUR_KILLS)) { removeHolo(type); fkillslines.clear(); for (String line : plugin.getLang().getList("tops.four.kills")) { if (line.contains("")) { for (Top top : fkills.values()) { fkillslines.add(ChatColor.YELLOW + "" + ChatColor.BOLD + top.getTop() + ".- " + ChatColor.GRAY + top.getName() + " - " + ChatColor.GOLD + "" + top.getAmount()); } } else { fkillslines.add(ChatColor.translateAlternateColorCodes('&', line)); } } TruenoHologram hologram = TruenoHologramAPI.getNewHologram(); hologram.setDistanceBetweenLines(0.35); hologram.setupWorldHologram(location, fkillslines); hologram.display(); holo.put(type, hologram); } if (type.equals(BoardType.FOUR_WINS)) { removeHolo(type); fwinslines.clear(); for (String line : plugin.getLang().getList("tops.four.wins")) { if (line.contains("")) { for (Top top : fwins.values()) { fwinslines.add(ChatColor.YELLOW + "" + ChatColor.BOLD + top.getTop() + ".- " + ChatColor.GRAY + top.getName() + " - " + ChatColor.GOLD + "" + top.getAmount()); } } else { fwinslines.add(ChatColor.translateAlternateColorCodes('&', line)); } } TruenoHologram hologram = TruenoHologramAPI.getNewHologram(); hologram.setDistanceBetweenLines(0.35); hologram.setupWorldHologram(location, fwinslines); hologram.display(); holo.put(type, hologram); } if (type.equals(BoardType.FOUR_GOALS)) { removeHolo(type); fgoalslines.clear(); for (String line : plugin.getLang().getList("tops.four.goals")) { if (line.contains("")) { for (Top top : fgoals.values()) { fgoalslines.add(ChatColor.YELLOW + "" + ChatColor.BOLD + top.getTop() + ".- " + ChatColor.GRAY + top.getName() + " - " + ChatColor.GOLD + "" + top.getAmount()); } } else { fgoalslines.add(ChatColor.translateAlternateColorCodes('&', line)); } } TruenoHologram hologram = TruenoHologramAPI.getNewHologram(); hologram.setDistanceBetweenLines(0.35); hologram.setupWorldHologram(location, fgoalslines); hologram.display(); holo.put(type, hologram); } } public void addTop(Top top) { if (top.getType().equals(BoardType.NORMAL_KILLS)) { nkills.put(getTopNumber(top), top); } else if (top.getType().equals(BoardType.NORMAL_WINS)) { nwins.put(getTopNumber(top), top); } else if (top.getType().equals(BoardType.NORMAL_GOALS)) { ngoals.put(getTopNumber(top), top); } else if (top.getType().equals(BoardType.FOUR_KILLS)) { fkills.put(getTopNumber(top), top); } else if (top.getType().equals(BoardType.FOUR_WINS)) { fwins.put(getTopNumber(top), top); } else if (top.getType().equals(BoardType.FOUR_GOALS)) { fgoals.put(getTopNumber(top), top); } } public int getTopNumber(Top top) { if (top.getType().equals(BoardType.NORMAL_KILLS)) { return nkills.size() + 1; } if (top.getType().equals(BoardType.NORMAL_WINS)) { return nwins.size() + 1; } if (top.getType().equals(BoardType.NORMAL_GOALS)) { return ngoals.size() + 1; } if (top.getType().equals(BoardType.FOUR_KILLS)) { return fkills.size() + 1; } if (top.getType().equals(BoardType.FOUR_WINS)) { return fwins.size() + 1; } if (top.getType().equals(BoardType.FOUR_GOALS)) { return fgoals.size() + 1; } return 0; } public HashMap> getHolograms() { return playerHolo; } }