1919import java .util .Optional ;
2020
2121import org .spongepowered .api .entity .living .player .Player ;
22+ import org .spongepowered .api .scoreboard .Scoreboard ;
23+ import org .spongepowered .api .scoreboard .Team ;
24+ import org .spongepowered .api .scoreboard .Visibilities ;
2225import org .spongepowered .api .scoreboard .displayslot .DisplaySlot ;
2326import org .spongepowered .api .scoreboard .objective .Objective ;
27+ import org .spongepowered .api .text .Text ;
28+ import org .spongepowered .api .text .format .TextColors ;
2429
2530import fr .evercraft .everapi .EverAPI ;
31+ import fr .evercraft .everapi .server .player .EPlayer ;
2632import fr .evercraft .everapi .services .priority .PriorityService ;
2733import fr .evercraft .everapi .servives .scoreboard .event .ScoreBoardEvent ;
2834import fr .evercraft .everapi .servives .scoreboard .event .ScoreBoardEvent .Action ;
@@ -37,6 +43,35 @@ public EScoreBoardService(final EverAPI plugin){
3743 public void reload () {
3844 }
3945
46+ public boolean addPlayer (EPlayer player ) {
47+ player .setScoreboard (Scoreboard .builder ().build ());
48+ return true ;
49+ }
50+
51+ @ Override
52+ public boolean addNameTag (Player player , Text teamRepresentation ,Text prefix , Text suffix ) {
53+ Team team = Team .builder ()
54+ .prefix (prefix )
55+ .suffix (suffix )
56+ .name (teamRepresentation .toPlain ())
57+ .nameTagVisibility (Visibilities .ALL )
58+ .displayName (teamRepresentation )
59+ .color (TextColors .RED )
60+ .build ();
61+ team .addMember (teamRepresentation );
62+ player .getScoreboard ().registerTeam (team );
63+ return true ;
64+ }
65+
66+ @ Override
67+ public boolean removeNameTag (Player player , Text teamRepresentation ) {
68+ Optional <Team > team = player .getScoreboard ().getMemberTeam (teamRepresentation );
69+ if (team .isPresent ()) {
70+ team .get ().unregister ();
71+ }
72+ return true ;
73+ }
74+
4075 @ Override
4176 public boolean addObjective (Player player , DisplaySlot display , Objective objective ) {
4277 return addObjective (player , getPriority (display , objective ), display , objective );
@@ -50,10 +85,14 @@ public boolean addObjective(Player player, int priority, DisplaySlot display, Ob
5085 player .getScoreboard ().removeObjective (objective_player .get ());
5186 this .plugin .getGame ().getEventManager ().post (new ScoreBoardEvent (this .plugin , player , objective_player .get (), display , Action .REPLACE ));
5287 }
53- player .getScoreboard ().addObjective (objective );
54- player .getScoreboard ().updateDisplaySlot (objective , display );
55- this .plugin .getGame ().getEventManager ().post (new ScoreBoardEvent (this .plugin , player , objective , display , Action .ADD ));
56- return true ;
88+ if (!player .getScoreboard ().getObjective (objective .getName ()).isPresent ()) {
89+ player .getScoreboard ().addObjective (objective );
90+ player .getScoreboard ().updateDisplaySlot (objective , display );
91+ this .plugin .getGame ().getEventManager ().post (new ScoreBoardEvent (this .plugin , player , objective , display , Action .ADD ));
92+ return true ;
93+ } else {
94+ this .plugin .getLogger ().warn ("Multi-Objective (player='" + player .getIdentifier () + "';objective='" + objective .getName () + "')" );
95+ }
5796 }
5897 return false ;
5998 }
0 commit comments