Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.jaja.lol;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.List;
- import java.util.WeakHashMap;
- import me.Roy.API.APIStats;
- import me.Roy.APIArenaPvP.API1vs1;
- import me.Roy.APIArenaPvP.APIGeneral;
- import me.Roy.APIArenaPvP.APIPartys;
- import me.Roy.ArenaPvP.Arenas;
- import me.Roy.ArenaPvP.Inventario;
- import me.Roy.ArenaPvP.Meetup;
- import me.Roy.ArenaPvP.Party;
- import me.Roy.ArenaPvP.SpecEvents;
- import ru.tehkode.permissions.PermissionUser;
- import ru.tehkode.permissions.PermissionsUserData;
- import ru.tehkode.permissions.bukkit.PermissionsEx;
- import org.bukkit.Bukkit;
- import org.bukkit.Server;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.event.player.PlayerKickEvent;
- import org.bukkit.event.player.PlayerQuitEvent;
- import org.bukkit.scheduler.BukkitRunnable;
- import org.bukkit.scoreboard.Scoreboard;
- import org.bukkit.scoreboard.ScoreboardManager;
- import org.bukkit.scoreboard.Team;
- public class ScoreboardListener
- implements Listener
- {
- private final Main instance = Main.getInstance();
- private final WeakHashMap<Player, ScoreboardHelper> helper = new WeakHashMap();
- public ScoreboardHelper getScoreboardFor(Player player)
- {
- return (ScoreboardHelper)this.helper.get(player);
- }
- @EventHandler
- public void onPlayerQuit(PlayerQuitEvent event)
- {
- Player player = event.getPlayer();
- this.helper.remove(player);
- }
- @EventHandler
- public void onPlayerKick(PlayerKickEvent event)
- {
- Player player = event.getPlayer();
- this.helper.remove(player);
- }
- public void unregister(Scoreboard board, String name)
- {
- Team team = board.getTeam(name);
- if (team != null) {
- team.unregister();
- }
- }
- public Team getTeam(Scoreboard board, String name, String prefix)
- {
- Team team = board.getTeam(name);
- if (team == null) {
- team = board.registerNewTeam(name);
- }
- team.setPrefix(prefix);
- return team;
- }
- public void registerScoreboards(Player player)
- {
- Scoreboard bukkitScoreBoard = Bukkit.getServer().getScoreboardManager().getNewScoreboard();
- player.setScoreboard(bukkitScoreBoard);
- ScoreboardHelper scoreboardHelper = new ScoreboardHelper(bukkitScoreBoard, Color.translate(ConfigManager.get("config.yml").getString("ScoreboardTitle")));
- this.helper.put(player, scoreboardHelper);
- resendTab(player);
- for (Player other : Bukkit.getServer().getOnlinePlayers()) {
- if ((other != player) &&
- (getScoreboardFor(other) != null))
- {
- Scoreboard scoreboard = getScoreboardFor(other).getScoreBoard();
- Team otherTeam = getTeam(scoreboard, "other", Color.translate("&e"));
- otherTeam.addEntry(player.getName());
- }
- }
- }
- public void resendTab(Player player)
- {
- if (getScoreboardFor(player) == null) {
- return;
- }
- Scoreboard scoreboard = getScoreboardFor(player).getScoreBoard();
- unregister(scoreboard, "player");
- unregister(scoreboard, "other");
- Team playerTeam = getTeam(scoreboard, "player", Color.translate("&a"));
- Team otherTeam = getTeam(scoreboard, "other", Color.translate("&e"));
- for (Player other : Bukkit.getOnlinePlayers()) {
- if (other == player) {
- playerTeam.addEntry(other.getName());
- } else {
- otherTeam.addEntry(other.getName());
- }
- }
- }
- public String getRank(Player p) {
- PermissionUser permissionUser = PermissionsEx.getUser(p);
- return permissionUser.getPrefix();
- }
- public void setupScoreboard()
- {
- new BukkitRunnable()
- {
- public void run()
- {
- for (Player player : Bukkit.getServer().getOnlinePlayers()) {
- if (ScoreboardListener.this.helper.containsKey(player))
- {
- ScoreboardHelper scoreboardHelper = ScoreboardListener.this.getScoreboardFor(player);
- scoreboardHelper.clear();
- if (!Party.enParty.containsKey(player))
- {
- scoreboardHelper.add(Color.translate("&7&m-------------------------"));
- if ((APIGeneral.isPlayerInGame(player)) &&
- (!APIGeneral.isPlayerSpecMode(player)) &&
- (!Meetup.pmeetup.contains(player)))
- {
- scoreboardHelper.add(Color.translate("&eMatch Info"));
- scoreboardHelper.add(Color.translate("&8» &aOpponent: &f" + API1vs1.getPlayerRival(player).getName()));
- scoreboardHelper.add(Color.translate("&8» &aLadder: &f" + API1vs1.getPlayerPlayingKit(player)));
- if (player.getLevel() >= 1) {
- scoreboardHelper.add(Color.translate("&8» &aEnderpearl: &f" + player.getLevel()));
- }
- scoreboardHelper.add(Color.translate(""));
- scoreboardHelper.add(Color.translate(" &6&nbeta.geopvp.us"));
- }
- if (APIGeneral.isPlayerSpecMode(player))
- {
- scoreboardHelper.add(Color.translate("&8» &aSpectating"));
- scoreboardHelper.add(Color.translate("&7&ouse &8&o/spec &7&oto leave"));
- scoreboardHelper.add(Color.translate(""));
- scoreboardHelper.add(Color.translate(" &6&nbeta.geopvp.us"));
- }
- if ((!APIPartys.isPlayerInParty(player)) && (!APIGeneral.isPlayerInGame(player)))
- {
- scoreboardHelper.add(Color.translate("&eServer Info"));
- scoreboardHelper.add(Color.translate("&8» &aOnline: &f" + Bukkit.getOnlinePlayers().size()));
- scoreboardHelper.add(Color.translate("&8» &aPing: &f" + ScoreboardListener.getPing(player)));
- scoreboardHelper.add(Color.translate("&8» &aRango: &f" + getRank(player)));
- scoreboardHelper.add(Color.translate("&8» &aJugando: &f" + Arenas.jugando.size()));
- scoreboardHelper.add(Color.translate("&7&m-------------------------"));
- scoreboardHelper.add(Color.translate(" &6&nbeta.geopvp.us"));
- }
- scoreboardHelper.add(Color.translate("&7&m-------------------------"));
- }
- scoreboardHelper.update(player);
- }
- }
- }
- }.runTaskTimer(this.instance, 0L, 3L);
- }
- @EventHandler
- public void onJoin(PlayerJoinEvent e)
- {
- Player p = e.getPlayer();
- registerScoreboards(p);
- }
- public static int getPing(Player p)
- {
- String bpName = Bukkit.getServer().getClass().getPackage().getName();
- String version = bpName.substring(bpName.lastIndexOf(".") + 1, bpName.length());
- try
- {
- Class<?> CPClass = Class.forName("org.bukkit.craftbukkit." + version + ".entity.CraftPlayer");
- Object CraftPlayer = CPClass.cast(p);
- Method getHandle = CraftPlayer.getClass().getMethod("getHandle", new Class[0]);
- Object EntityPlayer = getHandle.invoke(CraftPlayer, new Object[0]);
- Field ping = EntityPlayer.getClass().getDeclaredField("ping");
- return ping.getInt(EntityPlayer);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement