package Ġcom . r 4 g 3 b aby . simp les core . score board . handlers Ċ Ċ import Ġcom . comp hen ix . protocol . Packet Type Ċ import Ġcom . comp hen ix . protocol . Protocol Library Ċ import Ġcom . comp hen ix . protocol . events . Packet Container Ċ import Ġcom . comp hen ix . protocol . utility . Minecraft Version Ċ import Ġcom . comp hen ix . protocol . wrappers . Enum Wrappers Ċ import Ġcom . comp hen ix . protocol . wrappers . Wrapped Chat Component Ċ import Ġorg . bukkit . entity . Player Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashMap Ċ Ċ class ĠProtocol Score board Ġ: ĠScore board Handler () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġprotocol Manager Ġ= ĠProtocol Library . get Protocol Manager () ĊĊĠĠĠ Ġprivate Ġval Ġplayer Titles Ġ= ĠHashMap < UUID , ĠString >() ĊĠĠĠ Ġprivate Ġval Ġplayer Board s Ġ= ĠHashMap < UUID , ĠMap < String , ĠInt >>() ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Score board ( player : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpacket Ġ= ĠPacket Container ( Packet Type . Play . Server . SCORE BOARD _ OBJECT IVE ) ĊĠĠĠĠĠĠĠ Ġpacket . modifier . write Defaults () ĊĠĠĠĠĠĠĠ Ġpacket . strings . write ( 0 , Ġget Player Identifier ( player )) Ġ// ĠObjective ĠName ĊĠĠĠĠĠĠĠ Ġpacket . inte gers . write ( 0 , Ġ 0 ) Ġ// ĠMode Ġ 0 : ĠCreated ĠScore board ĊĠĠĠĠĠĠĠ Ġif Ġ( Minecraft Version . A QU AT IC _ UPDATE . at Or Above ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . chat Components . write ( 0 , ĠWr apped Chat Component . from Text ( getPlayer Identifier ( player ))) Ġ// ĠDisplay ĠName ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġpacket . strings . write ( 1 , Ġget Player Identifier ( player )) Ġ// ĠDisplay ĠName ĊĠĠĠĠĠĠĠ Ġprotocol Manager . send Server Packet ( player , Ġpacket ) ĊĊĠĠĠĠĠĠĠ Ġpacket Ġ= ĠPacket Container ( Packet Type . Play . Server . SCORE BOARD _ DISPLAY _ OBJECT IVE ) ĊĠĠĠĠĠĠĠ Ġpacket . modifier . write Defaults () ĊĠĠĠĠĠĠĠ Ġpacket . inte gers . write ( 0 , Ġ 1 ) Ġ// ĠPosition Ġ 1 : ĠSidebar ĊĠĠĠĠĠĠĠ Ġpacket . strings . write ( 0 , Ġget Player Identifier ( player )) Ġ// ĠObjective ĠName ĊĠĠĠĠĠĠĠ Ġprotocol Manager . send Server Packet ( player , Ġpacket ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Score board ( player : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpacket Ġ= ĠPacket Container ( Packet Type . Play . Server . SCORE BOARD _ OBJECT IVE ) ĊĠĠĠĠĠĠĠ Ġpacket . modifier . write Defaults () ĊĠĠĠĠĠĠĠ Ġpacket . strings . write ( 0 , Ġget Player Identifier ( player )) Ġ// ĠObjective ĠName ĊĠĠĠĠĠĠĠ Ġpacket . inte gers . write ( 0 , Ġ 1 ) Ġ// ĠMode Ġ 1 : ĠRemove ĠScore board ĊĠĠĠĠĠĠĠ Ġprotocol Manager . send Server Packet ( player , Ġpacket ) ĊĊĠĠĠĠĠĠĠ Ġplayer Titles . remove ( player . unique Id ) ĊĠĠĠĠĠĠĠ Ġplayer Board s . remove ( player . unique Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Score board ( player : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplayer Board s . remove ( player . unique Id )?. forEach Ġ{ Ġ( value , Ġ_) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpacket Ġ= ĠPacket Container ( Packet Type . Play . Server . SCORE BOARD _ SCORE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . modifier . write Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . strings . write ( 0 , Ġvalue ) Ġ// ĠScore ĠName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . score board Actions . write ( 0 , ĠEnum Wrappers . Score board Action . REMOVE ) Ġ// ĠAction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . strings . write ( 1 , Ġget Player Identifier ( player )) Ġ// ĠObjective ĠName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol Manager . send Server Packet ( player , Ġpacket ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Score board ( title : ĠString , Ġscores : ĠMap < Int , ĠString >, Ġplayer : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( player Titles [ player . unique Id ] Ġ!= Ġtitle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpacket Ġ= ĠPacket Container ( Packet Type . Play . Server . SCORE BOARD _ OBJECT IVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . modifier . write Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . strings . write ( 0 , Ġget Player Identifier ( player )) Ġ// ĠObjective ĠName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . inte gers . write ( 0 , Ġ 2 ) Ġ// ĠMode Ġ 2 : ĠUpdate ĠDisplay ĠName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Minecraft Version . A QU AT IC _ UPDATE . at Or Above ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . chat Components . write ( 0 , ĠWr apped Chat Component . from Text ( title )) Ġ// ĠDisplay ĠName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġpacket . strings . write ( 1 , Ġtitle ) Ġ// ĠDisplay ĠName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol Manager . send Server Packet ( player , Ġpacket ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Titles [ player . unique Id ] Ġ= Ġtitle ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġplayer Board Ġ= Ġplayer Board s [ player . unique Id ] ĊĠĠĠĠĠĠĠ Ġscores . forEach Ġ{ Ġ( score , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġboard Score Ġ= Ġplayer Board ?. get ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( board Score Ġ== Ġscore ) Ġreturn @ forEach ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpacket Ġ= ĠPacket Container ( Packet Type . Play . Server . SCORE BOARD _ SCORE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . modifier . write Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . strings . write ( 0 , Ġvalue ) Ġ// ĠScore ĠName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . score board Actions . write ( 0 , ĠEnum Wrappers . Score board Action . CHANGE ) Ġ// ĠAction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . strings . write ( 1 , Ġget Player Identifier ( player )) Ġ// ĠObjective ĠName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . inte gers . write ( 0 , Ġscore ) Ġ// ĠScore ĠValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol Manager . send Server Packet ( player , Ġpacket ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġplayer Board ?. filter Ġ{ Ġ! scores . values . contains ( it . key ) Ġ} ?. forEach Ġ{ Ġ( value , Ġ_) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpacket Ġ= ĠPacket Container ( Packet Type . Play . Server . SCORE BOARD _ SCORE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . modifier . write Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . strings . write ( 0 , Ġvalue ) Ġ// ĠScore ĠName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . score board Actions . write ( 0 , ĠEnum Wrappers . Score board Action . REMOVE ) Ġ// ĠAction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket . strings . write ( 1 , Ġget Player Identifier ( player )) Ġ// ĠObjective ĠName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol Manager . send Server Packet ( player , Ġpacket ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġplayer Board s [ player . unique Id ] Ġ= Ġscores . map Ġ{ Ġ( key , Ġvalue ) Ġ-> Ġvalue Ġto Ġkey Ġ}. toMap () ĊĠĠĠ Ġ} Ċ }