/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 - 2 0 2 2 , ĠVal ap he e . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . val ap he e . net code . mc je . network . packet . play Ċ Ċ import Ġcom . val ap he e . net code . mc je . network . Packet Ċ import Ġcom . val ap he e . net code . mc je . network . Packet Buffer Ċ import Ġcom . val ap he e . net code . mc je . network . Packet Reader Ċ import Ġcom . val ap he e . net code . mc je . network . Server Play Packet Handler Ċ import Ġcom . val ap he e . net code . mc je . world . map . Decoration Ċ import Ġcom . val ap he e . net code . util . safe List Ċ Ċ /** Ċ Ġ* Ġ@ author ĠKevin ĠL ud w ig Ċ Ġ*/ Ċ class ĠServer Map Packet ( ĊĠĠĠ Ġval Ġmap Id : ĠInt , ĊĠĠĠ Ġval Ġscale : ĠInt , ĊĠĠĠ Ġval Ġtracking : ĠBoolean , ĊĠĠĠ Ġval Ġlocked : ĠBoolean , ĊĠĠĠ Ġval Ġdecor ations : ĠList < Decoration >, ĊĠĠĠ Ġval Ġwidth : ĠInt , ĊĠĠĠ Ġval Ġheight : ĠInt , ĊĠĠĠ Ġval Ġoffset X : ĠInt , ĊĠĠĠ Ġval Ġoffset Y : ĠInt , ĊĠĠĠ Ġval Ġdata : ĠByteArray ? Ċ ) Ġ: ĠPacket < Server Play Packet Handler >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġwrite ( buffer : ĠPacket Buffer , Ġversion : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . write Var Int ( map Id ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Byte ( scale ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Boolean ( tracking ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Boolean ( locked ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Var Int ( decor ations . size ) ĊĠĠĠĠĠĠĠ Ġdecor ations . forEach Ġ{ Ġ( type , Ġposition X , Ġposition Y , Ġrotation , Ġlabel ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Var Int ( type . ordinal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( rotation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( position X ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( position Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Boolean ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Component ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġbuffer . write Boolean ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuffer . write Byte ( width ) ĊĠĠĠĠĠĠĠ Ġif Ġ( width Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( offset X ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( offset Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata !!. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Var Int ( it . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ Ġbuffer . write Byte ( it . toInt ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle ( handler : ĠServer Play Packet Handler ) Ġ= Ġhandler . map ( this ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Server Map Packet ( map Id =$ map Id , Ġscale =$ scale , Ġtracking =$ tracking , Ġlocked =$ locked , Ġdecor ations =$ decor ations , Ġwidth =$ width , Ġheight =$ height , Ġoffset X =$ offset X , Ġoffset Y =$ offset Y , Ġdata =< omit ted > )" Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ author ĠKevin ĠL ud w ig Ċ Ġ*/ Ċ object ĠServer Map Packet Reader Ġ: ĠPacket Reader Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġread ( buffer : ĠPacket Buffer , Ġversion : ĠInt ): ĠServer Map Packet Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Id Ġ= Ġbuffer . read Var Int () ĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġbuffer . read Unsigned Byte (). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġtracking Ġ= Ġbuffer . read Boolean () ĊĠĠĠĠĠĠĠ Ġval Ġlocked Ġ= Ġbuffer . read Boolean () ĊĠĠĠĠĠĠĠ Ġval Ġdecor ations Ġ= Ġsafe List ( buffer . read Var Int ()) Ġ{ ĠDecor ation ( Decoration . Type . values ()[ buffer . read Var Int ()], Ġbuffer . read Byte (). toInt (), Ġbuffer . read Byte (). toInt (), Ġbuffer . read Byte (). toInt (), Ġif Ġ( buffer . read Boolean ()) Ġbuffer . read Component () Ġelse Ġnull ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġbuffer . read Unsigned Byte (). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġheight : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġoffset X : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġoffset Y : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġdata : ĠByteArray ? ĊĠĠĠĠĠĠĠ Ġif Ġ( width Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġbuffer . read Unsigned Byte (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset X Ġ= Ġbuffer . read Unsigned Byte (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Y Ġ= Ġbuffer . read Unsigned Byte (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠByteArray ( buffer . read Var Int ()) Ġ{ Ġbuffer . read Byte () Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset X Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Y Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠServer Map Packet ( map Id , Ġscale , Ġtracking , Ġlocked , Ġdecor ations , Ġwidth , Ġheight , Ġoffset X , Ġoffset Y , Ġdata ) ĊĠĠĠ Ġ} Ċ } Ċ