Matix-Media

SpigotMC ScoreHelper Class

Jan 8th, 2021 (edited)
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.16 KB | None | 0 0
  1.  
  2.  
  3. package <Your Package>;
  4.  
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.UUID;
  9.  
  10. import net.matixmedia.mlgrush.Main;
  11. import org.bukkit.Bukkit;
  12. import org.bukkit.ChatColor;
  13. import org.bukkit.OfflinePlayer;
  14. import org.bukkit.entity.Player;
  15. import org.bukkit.scoreboard.DisplaySlot;
  16. import org.bukkit.scoreboard.Objective;
  17. import org.bukkit.scoreboard.Scoreboard;
  18. import org.bukkit.scoreboard.Team;
  19.  
  20. /**
  21.  *
  22.  * @author crisdev333
  23.  *
  24.  */
  25. public class ScoreHelper {
  26.  
  27.     private static HashMap<UUID, ScoreHelper> players = new HashMap<>();
  28.  
  29.     public static boolean hasScore(Player player) {
  30.         return players.containsKey(player.getUniqueId());
  31.     }
  32.  
  33.     public static ScoreHelper createScore(Player player) {
  34.         return new ScoreHelper(player);
  35.     }
  36.  
  37.     public static ScoreHelper getByPlayer(Player player) {
  38.         return players.get(player.getUniqueId());
  39.     }
  40.  
  41.     public static ScoreHelper removeScore(Player player) {
  42.         return players.remove(player.getUniqueId());
  43.     }
  44.  
  45.     private Scoreboard scoreboard;
  46.     private Objective sidebar;
  47.     private Player player;
  48.  
  49.     private ScoreHelper(Player player) {
  50.         this.player = player;
  51.  
  52.         // SIDEBAR
  53.         scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
  54.         sidebar = scoreboard.registerNewObjective("sidebar", "dummy");
  55.         sidebar.setDisplaySlot(DisplaySlot.SIDEBAR);
  56.         // tab.setDisplaySlot(DisplaySlot.PLAYER_LIST);
  57.         // Create Teams
  58.         for(int i=1; i<=15; i++) {
  59.             Team team = scoreboard.registerNewTeam("SLOT_" + i);
  60.             team.addEntry(genEntry(i));
  61.         }
  62.         player.setScoreboard(scoreboard);
  63.         players.put(player.getUniqueId(), this);
  64.     }
  65.  
  66.     public void setTitle(String title) {
  67.         title = ChatColor.translateAlternateColorCodes('&', title);
  68.         sidebar.setDisplayName(title.length()>32 ? title.substring(0, 32) : title);
  69.     }
  70.  
  71.     public void setSlot(int slot, String text) {
  72.         Team team = scoreboard.getTeam("SLOT_" + slot);
  73.         String entry = genEntry(slot);
  74.         if(!scoreboard.getEntries().contains(entry)) {
  75.             sidebar.getScore(entry).setScore(slot);
  76.         }
  77.  
  78.         text = ChatColor.translateAlternateColorCodes('&', text);
  79.         String pre = getFirstSplit(text);
  80.         String suf = getFirstSplit(ChatColor.getLastColors(pre) + getSecondSplit(text));
  81.         team.setPrefix(pre);
  82.         team.setSuffix(suf);
  83.     }
  84.  
  85.     public void setTabPrefix(String prefix) {
  86.         for (Player player : Bukkit.getOnlinePlayers()) {
  87.             ScoreHelper score = null;
  88.             if (hasScore(player))
  89.                 score = getByPlayer(player);
  90.             else
  91.                 score = createScore(player);
  92.             score.setTabPrefixInternal(this.player, prefix);
  93.         }
  94.     }
  95.  
  96.     private void setTabPrefixInternal(Player player, String prefix) {
  97.         Team team = scoreboard.getTeam(player.getName());
  98.         if (team == null) {
  99.             team = scoreboard.registerNewTeam(player.getName());
  100.         }
  101.  
  102.         team.setPrefix(prefix);
  103.  
  104.         team.addPlayer((OfflinePlayer) player);
  105.     }
  106.  
  107.     public void removeTabPrefix() {
  108.         for (Player player : Bukkit.getOnlinePlayers()) {
  109.             ScoreHelper score = null;
  110.             if (hasScore(player)) {
  111.                 score = getByPlayer(player);
  112.                 score.removeTabPrefixInternal(this.player);
  113.             }
  114.         }
  115.     }
  116.  
  117.     private void removeTabPrefixInternal(Player player) {
  118.         Team team = scoreboard.getTeam(player.getName());
  119.         if (team == null)
  120.             return;
  121.  
  122.         team.setPrefix("");
  123.  
  124.         if (team.getSuffix().equals("")) {
  125.             team.removePlayer((OfflinePlayer) player);
  126.             team.unregister();
  127.         }
  128.     }
  129.  
  130.     public void setTabSuffix(String suffix) {
  131.         for (Player player : Bukkit.getOnlinePlayers()) {
  132.             ScoreHelper score = null;
  133.             if (hasScore(player))
  134.                 score = getByPlayer(player);
  135.             else
  136.                 score = createScore(player);
  137.             score.setTabSuffixInternal(this.player, suffix);
  138.         }
  139.     }
  140.  
  141.     private void setTabSuffixInternal(Player player, String suffix) {
  142.         Team team = scoreboard.getTeam(player.getName());
  143.         if (team == null) {
  144.             team = scoreboard.registerNewTeam(player.getName());
  145.         }
  146.  
  147.         team.setSuffix(suffix);
  148.  
  149.         team.addPlayer((OfflinePlayer) player);
  150.     }
  151.  
  152.     public void removeTabSuffix() {
  153.         for (Player player : Bukkit.getOnlinePlayers()) {
  154.             ScoreHelper score = null;
  155.             if (hasScore(player)) {
  156.                 score = getByPlayer(player);
  157.                 score.removeTabSuffixInternal(this.player);
  158.             }
  159.         }
  160.     }
  161.  
  162.     private void removeTabSuffixInternal(Player player) {
  163.         Team team = scoreboard.getTeam(player.getName());
  164.         if (team == null)
  165.             return;
  166.  
  167.         team.setSuffix("");
  168.         if (team.getPrefix().equals("")) {
  169.             team.removePlayer((OfflinePlayer) player);
  170.             team.unregister();
  171.         }
  172.     }
  173.  
  174.     public void removeSlot(int slot) {
  175.         String entry = genEntry(slot);
  176.         if(scoreboard.getEntries().contains(entry)) {
  177.             scoreboard.resetScores(entry);
  178.         }
  179.     }
  180.  
  181.     public void setSlotsFromList(List<String> list) {
  182.         while(list.size()>15) {
  183.             list.remove(list.size()-1);
  184.         }
  185.  
  186.         int slot = list.size();
  187.  
  188.         if(slot<15) {
  189.             for(int i=(slot +1); i<=15; i++) {
  190.                 removeSlot(i);
  191.             }
  192.         }
  193.  
  194.         for(String line : list) {
  195.             setSlot(slot, line);
  196.             slot--;
  197.         }
  198.     }
  199.  
  200.     private String genEntry(int slot) {
  201.         return ChatColor.values()[slot].toString();
  202.     }
  203.  
  204.     private String getFirstSplit(String s) {
  205.         return s.length()>16 ? s.substring(0, 16) : s;
  206.     }
  207.  
  208.     private String getSecondSplit(String s) {
  209.         if(s.length()>32) {
  210.             s = s.substring(0, 32);
  211.         }
  212.         return s.length()>16 ? s.substring(16) : "";
  213.     }
  214.  
  215. }
Add Comment
Please, Sign In to add comment