Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1. package com.alexandeh.kraken.tab;
  2.  
  3.  
  4. import com.alexandeh.kraken.Kraken;
  5. import com.alexandeh.kraken.tab.event.PlayerTabCreateEvent;
  6. import lombok.Getter;
  7. import net.minecraft.server.v1_7_R4.PacketPlayOutPlayerInfo;
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.ChatColor;
  10. import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.scheduler.BukkitRunnable;
  13. import org.bukkit.scoreboard.Scoreboard;
  14.  
  15. import java.util.ArrayList;
  16. import java.util.HashSet;
  17. import java.util.List;
  18. import java.util.Set;
  19.  
  20. @Getter
  21. public class PlayerTab {
  22.  
  23. private static Set<PlayerTab> playerTabs = new HashSet<>();
  24. private Player player;
  25. private Scoreboard scoreboard;
  26. private List<TabEntry> entries;
  27.  
  28. public PlayerTab(Player player) {
  29. this.player = player;
  30.  
  31. entries = new ArrayList<>();
  32.  
  33. clear();
  34.  
  35. if (!player.getScoreboard().equals(Bukkit.getScoreboardManager().getMainScoreboard())) {
  36. scoreboard = player.getScoreboard();
  37. assemble();
  38. } else {
  39. new BukkitRunnable() {
  40. @Override
  41. public void run() {
  42. scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
  43. player.setScoreboard(scoreboard);
  44. assemble();
  45. }
  46. }.runTask(Kraken.getInstance().getPlugin());
  47. }
  48.  
  49. playerTabs.add(this);
  50. }
  51.  
  52. public void clear() {
  53. for (TabEntry entry : entries) {
  54. if (entry.nms() != null){
  55.  
  56. PacketPlayOutPlayerInfo packet = PacketPlayOutPlayerInfo.removePlayer(entry.nms());
  57. ((CraftPlayer)player).getHandle().playerConnection.sendPacket(packet);
  58. }
  59. }
  60.  
  61. for (Player online : Bukkit.getOnlinePlayers()) {
  62. PacketPlayOutPlayerInfo packet = PacketPlayOutPlayerInfo.removePlayer(((CraftPlayer)online).getHandle());
  63. ((CraftPlayer)player).getHandle().playerConnection.sendPacket(packet);
  64. }
  65.  
  66. entries.clear();
  67. }
  68.  
  69. private void assemble() {
  70.  
  71. for (int i = 0; i < 60; i++) {
  72. int x = i % 3;
  73. int y = i / 3;
  74. new TabEntry(this, getNextBlank(), x, y).send();
  75. }
  76.  
  77. Bukkit.getPluginManager().callEvent(new PlayerTabCreateEvent(this));
  78. }
  79.  
  80. public TabEntry getByPosition(int x, int y) {
  81. for (TabEntry tabEntry : entries) {
  82. if (tabEntry.x() == x && tabEntry.y() == y) {
  83. return tabEntry;
  84. }
  85. }
  86. return null;
  87. }
  88.  
  89. public String getNextBlank() {
  90. outer: for (String string : getAllBlanks()) {
  91. for (TabEntry tabEntry : entries) {
  92. if (tabEntry.text() != null && tabEntry.text().startsWith(string)) {
  93. continue outer;
  94. }
  95. }
  96. return string;
  97. }
  98. return null;
  99. }
  100.  
  101. private static List<String> getAllBlanks() {
  102. List<String> toReturn = new ArrayList<>();
  103. for (ChatColor chatColor : ChatColor.values()) {
  104. toReturn.add(chatColor + "" + ChatColor.RESET);
  105. for (ChatColor chatColor1 : ChatColor.values()) {
  106.  
  107. if (toReturn.size() >= 60) {
  108. return toReturn;
  109. }
  110.  
  111. toReturn.add(chatColor + "" + chatColor1 + ChatColor.RESET);
  112. }
  113. }
  114.  
  115. return toReturn;
  116. }
  117.  
  118. public static PlayerTab getByPlayer(Player player) {
  119. for (PlayerTab playerTab : playerTabs) {
  120. if (playerTab.getPlayer().getName().equals(player.getName())) {
  121. return playerTab;
  122. }
  123. }
  124. return null;
  125. }
  126.  
  127. public static Set<PlayerTab> getPlayerTabs() {
  128. return playerTabs;
  129. }
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement