package Ġnet . edu ard . api . lib . ab straction Ċ Ċ import Ġcom . moj ang . auth lib . Game Profile Ċ import Ġcom . moj ang . auth lib . properties . Property Ċ import Ġnet . edu ard . api . lib . modules . Extra Ċ import Ġnet . minecraft . server . v 1 _ 1 6 _ R 3 . Packet Ċ import Ġnet . minecraft . server . v 1 _ 1 6 _ R 3 .* Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġorg . bukkit . Chunk Ċ import Ġorg . bukkit . Location Ċ import Ġorg . bukkit . Material Ċ import Ġorg . bukkit . block . Block Ċ import Ġorg . bukkit . block . Chest Ċ import Ġorg . bukkit . craft bukkit . v 1 _ 1 6 _ R 3 . Craft Server Ċ import Ġorg . bukkit . craft bukkit . v 1 _ 1 6 _ R 3 . entity . Craft Player Ċ import Ġorg . bukkit . craft bukkit . v 1 _ 1 6 _ R 3 . inventory . Craft ItemStack Ċ import Ġorg . bukkit . entity . Creature Ċ import Ġorg . bukkit . entity . Entity Ċ import Ġorg . bukkit . entity . Player Ċ import Ġorg . bukkit . inventory . ItemStack Ċ import Ġjava . lang . Exception Ċ import Ġjava . lang . reflect . Field Ċ import Ġkotlin . collections . HashMap Ċ import Ġkotlin . collections . HashSet Ċ Ċ /** Ċ Ġ* Ġ@ author ĠE du ard Ċ Ġ*/ Ċ class ĠMinecraft _ v 1 _ 1 6 _ R 3 Ġ: ĠMinecraft () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġset Block ( block : ĠBlock , Ġchunk : ĠChunk , Ġmaterial : ĠMaterial , Ġdata : ĠInt , Ġupdate Lightning : ĠBoolean ) Ġ{ ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġsend Packet ( packet : ĠAny , Ġplayer : ĠPlayer ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ( player Ġas ĠCraft Player ). handle . player Connection . send Packet ( packet Ġas ĠPacket <* >) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Head Skin ( head : ĠItemStack , Ġtexture : ĠString , Ġsignature : ĠString ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġforce Open ( che st : ĠC hest , Ġplayer : ĠPlayer ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Attack Me lee ( creature : ĠCre ature , Ġclass Entity Name : ĠString , Ġpriority : ĠInt ) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġfollow Location ( creature : ĠCre ature , Ġlocation : ĠLocation , Ġspeed : ĠDouble , Ġpriority : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfollow Target ( creature : ĠCre ature , Ġspeed : ĠDouble , Ġpriority : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Target ( creature : ĠCre ature , Ġclass Entity Name : ĠString , Ġpriority : ĠInt ) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Go als ( creature : ĠCre ature ) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Target Go als ( creature : ĠCre ature ) Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġregister Rule ( creature : ĠCre ature , Ġrule : ĠEntity Rule , Ġpriority : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister Target Rule ( creature : ĠCre ature , Ġrule : ĠEntity Rule , Ġpriority : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Navig ating ( creature : ĠCre ature ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnavigate Cancel ( creature : ĠCre ature ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnavigate To ( creature : ĠCre ature , Ġspeed : ĠDouble , Ġlocation : ĠLocation ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnavigate To ( creature : ĠCre ature , Ġspeed : ĠDouble , Ġentity : ĠEntity ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnavigate To ( creature : ĠCre ature , Ġspeed : ĠDouble , Ġx : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsend Particle ( ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġlocation : ĠLocation , ĊĠĠĠĠĠĠĠ Ġamount : ĠInt , ĊĠĠĠĠĠĠĠ Ġx Offset : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy Offset : ĠFloat , ĊĠĠĠĠĠĠĠ Ġz Offset : ĠFloat , ĊĠĠĠĠĠĠĠ Ġspeed : ĠFloat ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġlocation . x . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġlocation . y . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġz Ġ= Ġlocation . z . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparticles [ name . toLowerCase ()] ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ" Particle Ġnot Ġexist Ġin Ġthis Ġversion Ġ$ name " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( blocked Message . contains ( text )) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblocked Message . add ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpart ic ula : ĠPart icles Ġ= Ġresult Ġas ĠPart icles ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġif Ġ( part ic ula . f ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ" Particle Ġnot Ġsent Ġbecause Ġneed Ġarguments : Ġ$ name " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( blocked Message . contains ( text )) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblocked Message . add ( text ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpacket : ĠAny Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPacket Play Out World Particles ( part ic ula ., Ġtrue , Ġx , Ġy , Ġz , Ġx Offset , Ġy Offset , Ġz Offset , Ġspeed , Ġamount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Packet ( player , Ġpacket ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Players (): ĠCollection < Player > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBu kkit . get Online Players () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperform Resp awn ( player : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( player Ġas ĠCraft Player ). handle . player Connection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. a ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPacket Play In Client Command ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPacket Play In Client Command ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. Enum Client Command . PER FORM _ RESP A WN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Player Skin ( player : ĠPlayer , Ġnew Skin : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Player : ĠEntity Player Ġ= Ġ( player Ġas ĠCraft Player ). handle ĊĠĠĠĠĠĠĠ Ġval Ġplayer Profile : ĠGame Profile Ġ= Ġentity Player . profile ĊĠĠĠĠĠĠĠ Ġplayer Profile . properties . clear () ĊĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= ĠExtra . getPlayer UUID ByName ( new Skin ) ĊĠĠĠĠĠĠĠ Ġval Ġskin Property Ġ= ĠExtra . get Skin Property ( uuid ) ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġskin Property . get (" name "). asString ĊĠĠĠĠĠĠĠ Ġval Ġskin Ġ= Ġskin Property . get (" value "). asString ĊĠĠĠĠĠĠĠ Ġval Ġsignature : ĠString Ġ= Ġskin Property . get (" signature "). asString ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Profile . properties . put (" textures ", ĠProperty ( name , Ġskin , Ġsignature )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresp awn Player ( player ) ĊĠĠĠĠĠĠĠ Ġreload Player ( player ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Player Name ( player : ĠPlayer , ĠnewName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Player : ĠEntity Player Ġ= Ġ( player Ġas ĠCraft Player ). handle ĊĠĠĠĠĠĠĠ Ġval Ġplayer Profile : ĠGame Profile Ġ= Ġentity Player . profile ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield : ĠField Ġ= Ġplayer Profile . java Class . getDeclared Field (" name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield [ player Profile ] Ġ= ĠnewName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Player . java Class . getDeclared Field (" displayName "). set ( entity Player , ĠnewName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Player . java Class . getDeclared Field (" list Name "). set ( entity Player , ĠnewName ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresp awn Player ( player ) ĊĠĠĠĠĠĠĠ ĠaddTo Tab ( player ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresp awn Player ( player To Resp awn : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Player : ĠEntity Player Ġ= Ġ( player To Resp awn Ġas ĠCraft Player ). handle ĊĠĠĠĠĠĠĠ Ġval Ġdestroy Ġ= ĠPacket Play Out Entity Destroy ( entity Player . id ) ĊĠĠĠĠĠĠĠ Ġval Ġremove Player Info Ġ= ĠPacket Play Out Player Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPacket Play Out Player Info . Enum Player Info Action . REMOVE _ PLAYER , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer To Resp awn . handle ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġspawn Ġ= ĠPacket Play Out Named Entity Spawn ( entity Player ) ĊĠĠĠĠĠĠĠ Ġval Ġadd Player Info Ġ= ĠPacket Play Out Player Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPacket Play Out Player Info . Enum Player Info Action . ADD _ PLAYER , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer To Resp awn . handle ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġmetadata Ġ= ĠPacket Play Out Entity Metadata ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Player . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Player . data Watcher , Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġhead Rotation Ġ= ĠPacket Play Out Entity Head Rotation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Player , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMath Helper . d ( entity Player . head Rotation Ġ* Ġ 2 5 6 . 0 f Ġ/ Ġ 3 6 0 . 0 f ). to Byte () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsend Packet sTo Others ( player To Resp awn , Ġremove Player Info , Ġdestroy , Ġmetadata , Ġadd Player Info , Ġspawn , Ġhead Rotation ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreload Player ( player : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend Packet ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPacket Play Out Player Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPacket Play Out Player Info . Enum Player Info Action . REMOVE _ PLAYER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( player Ġas ĠCraft Player ). handle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsend Packet ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPacket Play Out Player Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPacket Play Out Player Info . Enum Player Info Action . ADD _ PLAYER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . handle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ( Bu kkit . getServer () Ġas ĠCraft Server ). handle . moveTo World ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . handle , Ġplayer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. handle . world . minecraft World , Ġtrue , Ġplayer . getLocation (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove From Tab ( player Removed : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġremove Player Info Ġ= ĠPacket Play Out Player Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPacket Play Out Player Info . Enum Player Info Action . REMOVE _ PLAYER , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( player Removed Ġas ĠCraft Player ). handle ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsend Packet sTo All ( remove Player Info ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠaddTo Tab ( player ToAdd : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadd Player Info Ġ= ĠPacket Play Out Player Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPacket Play Out Player Info . Enum Player Info Action . ADD _ PLAYER , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( player ToAdd Ġas ĠCraft Player ). handle ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsend Packet sTo All ( add Player Info ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate DisplayName ( player ToAdd : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupdate DisplayName Ġ= ĠPacket Play Out Player Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPacket Play Out Player Info . Enum Player Info Action . UPDATE _ DISPLAY _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( player ToAdd Ġas ĠCraft Player ). handle ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsend Packet sTo All ( update DisplayName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem NBT ( item : ĠItemStack ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġn ms Item : Ġnet . minecraft . server . v 1 _ 1 6 _ R 3 . ItemStack Ġ= ĠCraft ItemStack . as NM SC opy ( item ) ĊĠĠĠĠĠĠĠ Ġval Ġn bt : ĠN BT Tag Compound Ġ= Ġif Ġ( nms Item . tag Ġ== Ġnull ) Ġn ms Item . tag !! ĊĠĠĠĠĠĠĠ Ġelse ĠN BT Tag Compound () ĊĠĠĠĠĠĠĠ Ġreturn Ġn bt ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Item NBT ( item : ĠItemStack , Ġn bt : ĠAny ): ĠItemStack Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġn ms Item : Ġnet . minecraft . server . v 1 _ 1 6 _ R 3 . ItemStack Ġ= ĠCraft ItemStack . as NM SC opy ( item ) ĊĠĠĠĠĠĠĠ Ġn ms Item . tag Ġ= Ġn bt Ġas ĠN BT Tag Compound ? ĊĠĠĠĠĠĠĠ Ġreturn ĠCraft ItemStack . as Craft Mirror ( nms Item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisable AI ( entity : ĠEntity ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsend ActionBar ( player : ĠPlayer , Ġmessage : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġpacket Play Out Chat Ġ= ĠPacket Play Out Chat ( Chat Component Text ( message ), ĠChat MessageType . CHAT , Ġplayer . unique Id ) ĊĠĠĠĠĠĠĠ Ġsend Packet ( packet Play Out Chat , Ġplayer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Tab List ( player : ĠPlayer , Ġheader : ĠString , Ġfooter : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpacket Ġ= ĠPacket Play Out Player List Header Footer () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Component : ĠI Chat Base Component Ġ= ĠChat Component Text ( header ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Field : ĠField Ġ= Ġpacket . java Class . getDeclared Field (" a ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Field . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Field [ packet ] Ġ= Ġheader Component ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfooter Component : ĠI Chat Base Component Ġ= ĠChat Component Text ( footer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Field : ĠField Ġ= Ġpacket . java Class . getDeclared Field (" b ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Field . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Field [ packet ] Ġ= Ġfooter Component ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsend Packet ( player , Ġpacket ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġparticles : ĠMutable Map < String , ĠAny > Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġvar Ġblocked Message : ĠMutable Set < String > Ġ= ĠHashSet () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġif Ġ( particles . isEmpty ()) Ġfor Ġ( particle Ġin ĠPart icles . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticles [ particle . b (). toLowerCase ()] Ġ= Ġparticle ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ} Ċ }