You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

256 lines
8.9 KiB

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<Integer, Top> nkills = new HashMap<Integer, Top>();
private HashMap<Integer, Top> nwins = new HashMap<Integer, Top>();
private HashMap<Integer, Top> ngoals = new HashMap<Integer, Top>();
private HashMap<Integer, Top> fkills = new HashMap<Integer, Top>();
private HashMap<Integer, Top> fwins = new HashMap<Integer, Top>();
private HashMap<Integer, Top> fgoals = new HashMap<Integer, Top>();
private ArrayList<String> nkillslines = new ArrayList<String>();
private ArrayList<String> nwinslines = new ArrayList<String>();
private ArrayList<String> ngoalslines = new ArrayList<String>();
private ArrayList<String> fkillslines = new ArrayList<String>();
private ArrayList<String> fwinslines = new ArrayList<String>();
private ArrayList<String> fgoalslines = new ArrayList<String>();
private HashMap<Player, ArrayList<TruenoHologram>> playerHolo = new HashMap<Player, ArrayList<TruenoHologram>>();
private HashMap<BoardType, TruenoHologram> holo = new HashMap<BoardType, TruenoHologram>();
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<TruenoHologram>());
}
removeHolo(p);
if (plugin.getLm().getStats() != null) {
ArrayList<String> stats = new ArrayList<String>();
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("<top>")) {
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("<top>")) {
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("<top>")) {
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("<top>")) {
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("<top>")) {
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("<top>")) {
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<Player, ArrayList<TruenoHologram>> getHolograms() {
return playerHolo;
}
}