Advertisement
Guest User

DEV' PLUGIN HUB 2.0 #07 - ScoreboardTeam

a guest
Sep 21st, 2019
1,932
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.37 KB | None | 0 0
  1. package fr.itsalexousd.hub.scoreboard;
  2.  
  3. import fr.itsalexousd.hub.database.ranks.RankUnit;
  4. import net.minecraft.server.v1_12_R1.EntityPlayer;
  5. import net.minecraft.server.v1_12_R1.PacketPlayOutPlayerInfo;
  6. import net.minecraft.server.v1_12_R1.PacketPlayOutScoreboardTeam;
  7.  
  8. import java.lang.reflect.Field;
  9. import java.util.List;
  10.  
  11. /**
  12.  * Created by Alexis on 19/02/2017.
  13.  */
  14. public class ScoreboardTeam {
  15.     private RankUnit rank;
  16.  
  17.     public ScoreboardTeam(RankUnit rank) {
  18.         this.rank = rank;
  19.     }
  20.  
  21.     private PacketPlayOutScoreboardTeam createPacket(int mode){
  22.         PacketPlayOutScoreboardTeam packet = new PacketPlayOutScoreboardTeam();
  23.  
  24.         // a : team name
  25.  
  26.         // h : mode
  27.         /**
  28.          If 0 then the team is created.
  29.          If 1 then the team is removed.
  30.          If 2 the team team information is updated.
  31.          If 3 then new players are added to the team.
  32.          If 4 then players are removed from the team.
  33.          */
  34.  
  35.         // b : display name
  36.         // c : prefix
  37.         // d : suffix
  38.         // j : friendly flags
  39.         // e : name tag visibility   (always, hideForOtherTeams, hideForOwnTeam, never)
  40.         // f : collision rule        (always, pushOtherTeams, pushOwnTeam, never)
  41.         // g : color
  42.  
  43.         setField(packet, "a", Integer.toString(rank.getPower()));
  44.         setField(packet, "i", mode);
  45.         setField(packet, "b", "");
  46.         setField(packet, "c", rank.getPrefix());
  47.         setField(packet, "d", "");
  48.         setField(packet, "e", "always");
  49.         setField(packet, "f", "never");
  50.  
  51.         return packet;
  52.     }
  53.  
  54.     public PacketPlayOutScoreboardTeam createTeam(){
  55.         return createPacket(0);
  56.     }
  57.  
  58.     public PacketPlayOutScoreboardTeam updateTeam(){
  59.         return createPacket(2);
  60.     }
  61.  
  62.     public PacketPlayOutScoreboardTeam removeTeam(){
  63.         PacketPlayOutScoreboardTeam packet = new PacketPlayOutScoreboardTeam();
  64.         setField(packet, "a", Integer.toString(rank.getPower()));
  65.         setField(packet, "i", 1);
  66.  
  67.         return packet;
  68.     }
  69.  
  70.     public PacketPlayOutScoreboardTeam addOrRemovePlayer(int mode, String playerName){
  71.         PacketPlayOutScoreboardTeam packet = new PacketPlayOutScoreboardTeam();
  72.         setField(packet, "a", Integer.toString(rank.getPower()));
  73.         setField(packet, "i", mode);
  74.  
  75.         try {
  76.             Field f = packet.getClass().getDeclaredField("h");
  77.             f.setAccessible(true);
  78.             ((List<String>) f.get(packet)).add(playerName);
  79.         } catch (NoSuchFieldException | IllegalAccessException e) {
  80.             e.printStackTrace();
  81.         }
  82.  
  83.         return packet;
  84.     }
  85.  
  86.     public static PacketPlayOutPlayerInfo updateDisplayName(EntityPlayer player) {
  87.         PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_DISPLAY_NAME, player);
  88.         player.playerConnection.sendPacket(packet);
  89.         return packet;
  90.     }
  91.  
  92.     private void setField(Object edit, String fieldName, Object value) {
  93.         try {
  94.             Field field = edit.getClass().getDeclaredField(fieldName);
  95.             field.setAccessible(true);
  96.             field.set(edit, value);
  97.         } catch (NoSuchFieldException | IllegalAccessException e) {
  98.             e.printStackTrace();
  99.         }
  100.     }
  101.  
  102.     public RankUnit getRank() {
  103.         return rank;
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement