package Ġcom . hand truth . mc . client . test Ċ Ċ import Ġcom . hand truth . mc . chat . ChatMessage Ċ import Ġcom . hand truth . mc . chat . build Chat Ċ import Ġcom . hand truth . mc . client . Minecraft Client Ċ import Ġcom . hand truth . mc . client . model . Server Status Ċ import Ġcom . hand truth . mc . minecraft . model . Player Ċ import Ġcom . hand truth . mc . types . UUID Ċ import Ġio . ktor . network . selector .* Ċ import Ġio . ktor . test . dispatcher .* Ċ import Ġio . ktor . util .* Ċ import Ġio . ktor . utils . io . core .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . with Timeout Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ import Ġkotlin . time . Duration Ċ import Ġkotlin . time . Duration Unit Ċ import Ġkotlin . time . seconds Ċ Ċ class ĠAP ITest Ġ{ ĊĊĠĠĠ Ġ@ Opt In ( Internal API :: class ) ĊĠĠĠ Ġval Ġselector Ġ= ĠSelector Manager ( Dispatch ers . Default ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Van illa Status () Ġ= Ġtest Suspend Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Timeout ( Duration . seconds ( 3 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMinecraft Client ( selector , Ġ" van illa . mc . hand truth . com ", Ġ 2 5 5 6 5 ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( it . getStatus ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġexample Status Ġ= ĠServer Status ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= ĠServer Status . Version ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Server ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayers Ġ= ĠServer Status . Players ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= Ġ 2 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġonline Ġ= Ġ 1 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠUUID . parse (" c 6 8 3 7 7 1 d - 8 2 4 6 - 4 e 1 4 - 9 db 0 - 5 2 8 b 6 3 c 2 6 5 cb "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Pop ka " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠUUID . parse (" 8 0 d 8 6 7 1 2 - 4 5 be - 4 4 5 e - b 1 6 c - 5 8 6 1 e acd 9 6 2 4 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Z op ka " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠUUID . parse (" 1 2 b 5 3 aaf - 4 a 1 c - 4 8 d 9 - a 3 f 3 - 3 b 4 0 e 2 2 0 c 5 4 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Player " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġbuild Chat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" ÐĲ Ñģ Ñģ Ð¾ ÑĨÐ¸ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitalic Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ (" Ð¸ ÑĨÐ¸Ð¸ Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbold Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ (" Ñģ Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor ( ChatMessage . Color . Gold ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder lined Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Ð» ÐµÑĤ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Ð° ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor ( ChatMessage . Color . Dark Red ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Ñİ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitalic ( false ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ (" Ñī ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Ð¸Ð¼ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrike through Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Ðº Ð² Ð°Ð´ ÑĢÐ° ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Ðº Ð¾Ð¿ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġob fuscated Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" ÑĤÐµÑĢ Ð¾Ð¼ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental Cor outines Api Ġ@ Test ĊĠĠĠ Ġfun Ġget Example Status () Ġ= Ġtest Suspend Ġ{ ĊĠĠĠĠĠĠĠ ĠMinecraft Client ( selector , Ġ" example . mc . hand truth . com ", Ġ 2 5 5 6 5 ). use Ġ{ Ġclient Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġclient . getStatus () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( status . favicon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġexample Status . copy ( favicon Ġ= Ġstatus . favicon ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected . description , Ġstatus . description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Ġ= Ġstatus . description . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" ĠÐĲ Ñģ Ñģ Ð¾ ÑĨÐ¸Ð¸ ÑĨÐ¸Ð¸ ĠÑģ ĠÐ» ÐµÑĤ Ð°Ñİ Ñī Ð¸Ð¼ ĠÐº Ð² Ð°Ð´ ÑĢÐ°Ð º Ð¾Ð¿ ÑĤÐµÑĢ Ð¾Ð¼ ", Ġstring ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( string . length , Ġstatus . description . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . ping (). take ( 3 ). collect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġping Van illa () Ġ= Ġtest Suspend Ġ{ ĊĠĠĠĠĠĠĠ ĠMinecraft Client ( selector , Ġ" van illa . mc . hand truth . com ", Ġ 2 5 5 6 5 ). use Ġ{ Ġclient Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġping Ġ= Ġclient . ping () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. drop ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Index () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( i , Ġping ) Ġ-> Ġprintln ("# $ i Ġ-> Ġ$ ping "); Ġping . toDouble ( Duration Unit . MILLISECONDS ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reduce Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} Ġ/ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ ping } ms ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ