package Ġcom . ref ined mods . ref ined storage . tile . data Ċ Ċ import Ġcom . ref ined mods . ref ined storage . network . Network Handler Ċ import Ġio . netty . buffer . Un p ooled Ċ import Ġnet . fabric mc . fabric . api . network . Server Side Packet Registry Ċ import Ġnet . minecraft . block . entity . Block Entity Ċ import Ġnet . minecraft . network . Packet Byte Buf Ċ import Ġnet . minecraft . server . network . Server Player Entity Ċ Ċ class ĠTile Data Watcher ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġplayer : ĠServer Player Entity , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmanager : ĠTile DataManager Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġsent Initial Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval Ġcache : ĠArray < Any ?> Ġ= ĠarrayOf Null s ( manager . get W atched Parameters (). size ) ĊĊĠĠĠ Ġfun Ġget Player (): ĠServer Player Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġplayer ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Closed () Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager . remove Watcher ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdetect And Send Changes () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! sent Initial ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . getParameters () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġp Ġ-> Ġsend Parameter ( true , Ġp ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsent Initial Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġmanager . get W atched Parameters (). indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= Ġmanager . get W atched Parameters ()[ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreal : ĠAny Ġ= Ġparameter . value Producer . apply ( manager . tile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcached Ġ= Ġcache [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( real Ġ!= Ġcached ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache [ i ] Ġ= Ġreal ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAvoid Ġsending Ġw atched Ġparameter Ġtwice Ġ( after Ġinitial Ġpacket ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cached Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Parameter ( false , Ġparameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T : ĠAny , ĠE : ĠBlock Entity > Ġsend Parameter ( initial : ĠBoolean , Ġparameter : ĠTile Data Parameter < T , ĠE >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpassed Data Ġ= ĠPacket Byte Buf ( Un p ooled . buffer ()) ĊĊĠĠĠĠĠĠĠ Ġpassed Data . writeInt ( parameter . id ) ĊĠĠĠĠĠĠĠ Ġpassed Data . write Boolean ( initial ) ĊĠĠĠĠĠĠĠ Ġval Ġto Write Ġ= Ġparameter . value Producer . apply ( manager . tile Ġas ĠE ) ĊĠĠĠĠĠĠĠ Ġparameter . serializer . write ( passed Data , Ġto Write ) ĊĠĠĠĠĠĠĠ ĠServer Side Packet Registry . INSTANCE . send To Player ( player , ĠNetwork Handler . TILE _ DATA _ PARAMETER _ MESSAGE _ ID , Ġpassed Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . manager . add Watcher ( this ) ĊĠĠĠ Ġ} Ċ }