package Ġru . cor oro . auth server . protocol Ċ Ċ import Ġio . ktor . util . pipeline .* Ċ import Ġru . cor oro . auth server . protocol . packet . Minecraft Packet Codec Ċ import Ġru . cor oro . auth server . protocol . version . v 1 _ 1 7 . Protocol 1 _ 1 7 Ċ import Ġru . cor oro . auth server . session . Minecraft Session Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ abstract Ġclass ĠMinecraft Protocol ( inbound : ĠPipeline Interceptor < Any , ĠMinecraft Session > Ġ= Ġ{}, Ġout Bound : ĠPipeline Interceptor < Any , ĠMinecraft Session > Ġ= Ġ{}) Ġ{ ĊĠĠĠ Ġval Ġclient bound Ġ= Ġmutable Map Of < Int , ĠMinecraft Packet Codec < Any >>() ĊĠĠĠ Ġval Ġserver bound Ġ= Ġmutable Map Of < Int , ĠMinecraft Packet Codec < Any >>() ĊĠĠĠ Ġval Ġinbound Pipeline Ġ= ĠPipeline ( Pipeline Phase (" packets "), ĠlistOf ( inbound )) ĊĠĠĠ Ġval Ġoutbound Pipeline Ġ= ĠPipeline ( Pipeline Phase (" packets "), ĠlistOf ( out Bound )) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhandshake Builder : Ġ( Protocol Builder ) Ġ-> ĠUnit ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstatus Builder : Ġ( Protocol Builder ) Ġ-> ĠUnit ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlogin Builder : Ġ( Protocol Builder ) Ġ-> ĠUnit ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgame Builder : Ġ( Protocol Builder ) Ġ-> ĠUnit ĊĊĠĠĠ Ġvar Ġstate : ĠProtocol State Ġ= ĠProtocol State . HAND SHA KE ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol State . HAND SHA KE Ġ-> Ġhandshake Builder ( Protocol Builder ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol State . STATUS Ġ-> Ġstatus Builder ( Protocol Builder ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol State . LOGIN Ġ-> Ġlogin Builder ( Protocol Builder ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol State . GAME Ġ-> Ġgame Builder ( Protocol Builder ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhandshake ( block : ĠProtocol Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhandshake Builder Ġ= Ġblock ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstatus ( block : ĠProtocol Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstatus Builder Ġ= Ġblock ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlogin ( block : ĠProtocol Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogin Builder Ġ= Ġblock ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgame ( block : ĠProtocol Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgame Builder Ġ= Ġblock ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġget Codec ( packet Id : ĠInt , Ġbound : ĠBound Ġ= ĠBound . CLIENT ): ĠMinecraft Packet Codec < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcodec Ġ= Ġwhen Ġ( bound ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBound . SERVER Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver bound [ packet Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Server bound Ġpacket Ġwith Ġid Ġ$ packet Id Ġdoes Ġnot Ġexists ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBound . CLIENT Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient bound [ packet Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Server bound Ġpacket Ġwith Ġid Ġ$ packet Id Ġdoes Ġnot Ġexists ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcodec Ġas ĠMinecraft Packet Codec < T > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġget Codec ( packet : ĠT , Ġbound : ĠBound Ġ= ĠBound . CLIENT ): ĠMinecraft Packet Codec < T > Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( bound ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBound . SERVER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver bound . values . find Ġ{ Ġpacket . java Class Ġ== Ġit . packet Class Ġ} Ġas ? ĠMinecraft Packet Codec < T > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException ("$ packet Ġcodec Ġdoes Ġnot Ġexists ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBound . CLIENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient bound . values . find Ġ{ Ġpacket . java Class Ġ== Ġit . packet Class Ġ} Ġas ? ĠMinecraft Packet Codec < T > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException ("$ packet Ġcodec Ġdoes Ġnot Ġexists ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġget Packet Id ( codec : ĠMinecraft Packet Codec < T >, Ġbound : ĠBound ): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( bound ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBound . SERVER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver bound . filter Ġ{ Ġit . value Ġ== Ġcodec Ġ}. keys . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBound . CLIENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient bound . filter Ġ{ Ġit . value Ġ== Ġcodec Ġ}. keys . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġenum Ġclass ĠBound Ġ{ ĊĠĠĠĠĠĠĠ ĠSERVER , ĊĠĠĠĠĠĠĠ ĠCLIENT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġregistered Protocols Ġ= Ġmutable Map Of < Int , ĠMinecraft Protocol >() ĊĠĠĠĠĠĠĠ Ġval Ġdefault Protocol : ĠMinecraft Protocol ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Protocol Ġ= ĠProtocol 1 _ 1 7 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistered Protocols [ 7 5 6 ] Ġ= Ġdefault Protocol ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget ByVersion ( version : ĠInt ): ĠMinecraft Protocol Ġ= Ġregistered Protocols [ version ] Ġ?: Ġdefault Protocol ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠProtocol State Ġ{ ĊĠĠĠĠĠĠĠ ĠHAND SHA KE , ĊĠĠĠĠĠĠĠ ĠSTATUS , ĊĠĠĠĠĠĠĠ ĠLOGIN , ĊĠĠĠĠĠĠĠ ĠGAME ; ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġvalues Ġ= Ġvalues () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperator Ġfun Ġget ( state : ĠInt ): ĠProtocol State Ġ= Ġvalues [ state ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠProtocol Builder Ġinternal Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġclient bound ( packet Id : ĠInt , Ġcodec : ĠMinecraft Packet Codec < T >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient bound [ packet Id ] Ġ= Ġcodec ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġserver bound ( packet Id : ĠInt , Ġcodec : ĠMinecraft Packet Codec < T >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver bound [ packet Id ] Ġ= Ġcodec ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġprotocol ( version : ĠInt Ġ= Ġ 0 ) Ġ= ĊĠĠĠ Ġif Ġ( version Ġ!= Ġ 0 ) ĠMinecraft Protocol . getBy Version ( version ) Ġelse ĠMinecraft Protocol . default Protocol