package Ġcom . chaos . ek i _ lib Ċ Ċ import Ġcom . chaos . ek i _ lib . station . Station World Data Ċ import Ġcom . chaos . ek i _ lib . station . data . OpCode Ċ import Ġcom . chaos . ek i _ lib . station . data . Station Ċ import Ġcom . chaos . ek i _ lib . utils . Tag Fact s Ċ import Ġcom . chaos . ek i _ lib . utils . handlers . Registry Handler Ċ import Ġcom . chaos . ek i _ lib . utils . handlers . Station Manager Ċ import Ġio . netty . buffer . Un p ooled Ċ import Ġnet . fabric mc . api . Mod Initializer Ċ import Ġnet . fabric mc . fabric . api . event . lifecycle . v 1 . Server World Events Ċ import Ġnet . fabric mc . fabric . api . network . Server Side Packet Registry Ċ import Ġnet . fabric mc . fabric . api . server . Player Stream Ċ import Ġnet . minecraft . nbt . Compound Tag Ċ import Ġnet . minecraft . network . Packet Byte Buf Ċ import Ġnet . minecraft . server . world . Server World Ċ import Ġnet . minecraft . util . Identifier Ċ import Ġnet . minecraft . util . registry . Registry Ċ import Ġnet . minecraft . world . World Ċ Ċ object ĠE ki Lib Ġ: ĠMod Initializer Ġ{ ĊĠĠĠ Ġconst Ġval ĠMOD ID Ġ= Ġ" ek i _ lib " ĊĠĠĠ Ġconst Ġval ĠMOD NAME Ġ= Ġ" E ki ĠLib " ĊĊĠĠĠ Ġval ĠS 2 C _ SERVER _ RETURN _ ST ATION _ LIST Ġ= ĠIdentifier ( MOD ID , Ġ" s 2 c _ server _ ret _ sta ") ĊĊĠĠĠ Ġoverride Ġfun Ġon Initialize () Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Items () ĊĠĠĠĠĠĠĠ Ġregister Blocks () ĊĠĠĠĠĠĠĠ Ġregister Block Entities () ĊĊĠĠĠĠĠĠĠ ĠServer Side Packet Registry . INSTANCE . register ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE ki Lib Client . C 2 S _ CLIENT _ REQUEST _ ST ATIONS ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġcontext , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . task Queue . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠPacket Byte Buf ( Un p ooled . buffer ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstations Ġ= ĠStation Manager . get Station List () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . write Boolean ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . writeInt ( stations . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstations . forEach Ġ{ Ġit . to Byte Buf ( data ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠServer Side Packet Registry . INSTANCE . send To Player ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . player , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS 2 C _ SERVER _ RETURN _ ST ATION _ LIST , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠServer Side Packet Registry . INSTANCE . register ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE ki Lib Client . C 2 S _ CLIENT _ UPDATE _ ST ATIONS ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġcontext , Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġop Code Ġ= Ġdata . read Enum Constant ( OpCode :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstation Ġ= ĠStation . from Byte Buf ( data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . task Queue . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( op Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Code . ADD Ġ-> ĠStation Manager . add Station ( station ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Code . REPLACE Ġ-> ĠStation Manager . replace Station ( station ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Code . DELETE Ġ-> ĠStation Manager . remove Station ( station . pos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġprintln (" Unknown ĠOperation Ġto ĠStation ĠManager : Ġ$ op Code ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStation Manager . mark Dirty ( context . player . server ?. get World ( World . OVER WORLD ) !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreturn Data Ġ= ĠPacket Byte Buf ( Un p ooled . buffer ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstations Ġ= ĠStation Manager . get Station List () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . write Boolean ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . writeInt ( stations . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstations . forEach Ġ{ Ġit . to Byte Buf ( data ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer Stream . all ( context . player . server ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠServer Side Packet Registry . INSTANCE . send To Player ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS 2 C _ SERVER _ RETURN _ ST ATION _ LIST , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠServer Side Packet Registry . INSTANCE . register ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE ki Lib Client . C 2 S _ CLIENT _ BIND _ T UN ER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġcontext , Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Ġ= ĠCompound Tag () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag . put IntArray ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTag Fact s . Station . POS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . read IntArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . task Queue . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . player . main Hand Stack . tag Ġ= Ġtag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠServer World Events . LOAD . register ( Server World Events . Load Ġ{ Ġ_, Ġworld Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Server Over World ( world )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsa ver Ġ= ĠStation World Data . for Level ( world ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStation Manager . init ( sa ver . stations ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Items () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( id , Ġitem ) Ġin ĠRegistry Handler . item Map ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegistry . register ( Registry . ITEM , Ġid , Ġitem ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Blocks () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( id , Ġblock ) Ġin ĠRegistry Handler . block Map ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegistry . register ( Registry . BLOCK , Ġid , Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Block Entities () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( id , Ġblock EntityType ) Ġin ĠRegistry Handler . block Entity Map ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegistry . register ( Registry . BLOCK _ ENTITY _ TYPE , Ġid , Ġblock EntityType ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Server Over World ( world : ĠServer World ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġ! world . is Client Ġ&& Ġworld . registry Key Ġ== ĠWorld . OVER WORLD Ċ }