11package me .catcoder .sidebar ;
22
3+ import com .google .common .base .Function ;
34import com .google .common .base .Preconditions ;
45import io .netty .buffer .ByteBuf ;
56import lombok .*;
67import me .catcoder .sidebar .protocol .ChannelInjector ;
8+ import me .catcoder .sidebar .protocol .ScoreNumberFormat ;
79import me .catcoder .sidebar .protocol .ScoreboardPackets ;
810import me .catcoder .sidebar .text .TextProvider ;
911import me .catcoder .sidebar .util .lang .ThrowingFunction ;
@@ -31,6 +33,8 @@ public class SidebarLine<R> {
3133 private ThrowingFunction <Player , R , Throwable > updater ;
3234 private ThrowingPredicate <Player , Throwable > displayCondition ;
3335 private final TextProvider <R > textProvider ;
36+ private ScoreNumberFormat scoreNumberFormat ;
37+ private Function <Player , R > scoreNumberFormatter ;
3438
3539 SidebarLine (@ NonNull ThrowingFunction <Player , R , Throwable > updater ,
3640 @ NonNull String teamName ,
@@ -46,6 +50,24 @@ public class SidebarLine<R> {
4650 this .textProvider = textProvider ;
4751 }
4852
53+ public SidebarLine <R > scoreNumberFormatBlank () {
54+ this .scoreNumberFormat = null ;
55+ this .scoreNumberFormatter = null ;
56+ return this ;
57+ }
58+
59+ public SidebarLine <R > scoreNumberFormatFixed (@ NonNull Function <Player , R > scoreNumberFormatter ) {
60+ this .scoreNumberFormat = ScoreNumberFormat .FIXED ;
61+ this .scoreNumberFormatter = scoreNumberFormatter ;
62+ return this ;
63+ }
64+
65+ public SidebarLine <R > scoreNumberFormatStyled (@ NonNull Function <Player , R > scoreNumberFormatter ) {
66+ this .scoreNumberFormat = ScoreNumberFormat .STYLED ;
67+ this .scoreNumberFormatter = scoreNumberFormatter ;
68+ return this ;
69+ }
70+
4971 public BukkitTask updatePeriodically (long delay , long period , @ NonNull Sidebar <R > sidebar ) {
5072 Preconditions .checkState (!isStaticText (), "Cannot set updater for static text line" );
5173
@@ -102,21 +124,25 @@ void updateTeam(@NonNull Player player, @NonNull String objective) throws Throwa
102124
103125 if (!isStaticText () && visible ) {
104126 R text = updater .apply (player );
105- sendPacket (player , ScoreboardPackets .createTeamPacket (ScoreboardPackets .TEAM_UPDATED , index , teamName ,
127+ sendPacket (player , ScoreboardPackets .createTeamPacket (
128+ ScoreboardPackets .TEAM_UPDATED , index , teamName ,
106129 player , text , textProvider ));
107130 }
108131
109132 if (!visible ) {
110133 // if player doesn't meet display condition, remove score
111- sendPacket (player , ScoreboardPackets .createScorePacket (player , 1 , objective , score , index ));
134+ sendPacket (player , ScoreboardPackets .createScorePacket (
135+ player , 1 , objective , score , index , textProvider , scoreNumberFormat , null ));
112136 return ;
113137 }
114138
115- sendPacket (player , ScoreboardPackets .createScorePacket (player , 0 , objective , score , index ));
139+ sendPacket (player , ScoreboardPackets .createScorePacket (
140+ player , 0 , objective , score , index , textProvider , scoreNumberFormat , scoreNumberFormatter ));
116141 }
117142
118143 void removeTeam (@ NonNull Player player , @ NonNull String objective ) {
119- sendPacket (player , ScoreboardPackets .createScorePacket (player , 1 , objective , score , index ));
144+ sendPacket (player , ScoreboardPackets .createScorePacket (
145+ player , 1 , objective , score , index , textProvider , null , null ));
120146
121147 sendPacket (player , ScoreboardPackets .createTeamPacket (ScoreboardPackets .TEAM_REMOVED , index , teamName ,
122148 player , null , textProvider ));
@@ -131,7 +157,8 @@ void createTeam(@NonNull Player player, @NonNull String objective) throws Throwa
131157 player , text , textProvider ));
132158
133159 if (visible ) {
134- sendPacket (player , ScoreboardPackets .createScorePacket (player , 0 , objective , score , index ));
160+ sendPacket (player , ScoreboardPackets .createScorePacket (
161+ player , 0 , objective , score , index , textProvider , scoreNumberFormat , scoreNumberFormatter ));
135162 }
136163 }
137164
0 commit comments