@ file : Suppress (" UN CHECK ED _ CAST ") Ċ Ċ package Ġcom . github . sh yn ix n . block ball . bukkit . logic . business . service Ċ Ċ import Ġcom . github . sh yn ix n . block ball . api . business . enumeration . Version Ċ import Ġcom . github . sh yn ix n . block ball . api . business . proxy . Plugin Proxy Ċ import Ġcom . github . sh yn ix n . block ball . api . business . service . Proxy Service Ċ import Ġcom . github . sh yn ix n . block ball . api . persistence . entity . Chat Builder Ċ import Ġcom . github . sh yn ix n . block ball . api . persistence . entity . Position Ċ import Ġcom . github . sh yn ix n . block ball . bukkit . logic . business . extension . find Clazz Ċ import Ġcom . github . sh yn ix n . block ball . bukkit . logic . business . extension . send Packet Ċ import Ġcom . github . sh yn ix n . block ball . bukkit . logic . business . extension . to Location Ċ import Ġcom . github . sh yn ix n . block ball . bukkit . logic . business . extension . to Position Ċ import Ġcom . google . inject . Inject Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġorg . bukkit . Game Mode Ċ import Ġorg . bukkit . Location Ċ import Ġorg . bukkit . command . Command Sender Ċ import Ġorg . bukkit . entity . Player Ċ import Ġorg . bukkit . plugin . Plugin Ċ import Ġjava . util . logging . Level Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠSh yn ix n Ġ 2 0 1 9 . Ċ Ġ* Ġ< p > Ċ Ġ* ĠVersion Ġ 1 . 2 Ċ Ġ* Ġ< p > Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ġ< p > Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 Ġby ĠSh yn ix n Ċ Ġ* Ġ< p > Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ġ< p > Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ġ< p > Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ class ĠProxy ServiceImpl Ġ@ Inject Ġconstructor ( private Ġval Ġplugin Proxy : ĠPlugin Proxy ) Ġ: ĠProxy Service Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġname Ġof Ġthe ĠWorld Ġthe Ġplayer Ġis Ġin . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< P > Ġget World Name ( player : ĠP ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( player Ġ! is ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Player Ġhas Ġto Ġbe Ġa ĠBu kkit Player !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġplayer . world . name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġname Ġof Ġa Ġplayer . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< P > Ġget Player Name ( player : ĠP ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( player Ġ! is ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Player Ġhas Ġto Ġbe Ġa ĠBu kkit Player !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġplayer . name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġplayer Ġuuid . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< P > Ġget Player UUID ( player : ĠP ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( player Ġ! is ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Player Ġhas Ġto Ġbe Ġa ĠBu kkit Player !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġplayer . unique Id . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġa Ġlist Ġof Ġall Ġonline Ġplayers . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< P > Ġget Online Players (): ĠList < P > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayers Ġ= ĠArrayList < Player >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( world Ġin ĠBu kkit . get World s ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayers . addAll ( world . players ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġplayers Ġas ĠList < P > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSends Ġa Ġplugin Ġmessage Ġthrough Ġthe Ġgiven Ġchannel . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< P > Ġsend Player Plugin Message ( player : ĠP , Ġchannel : ĠString , Ġcontent : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( player Ġ! is ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Player Ġhas Ġto Ġbe Ġa ĠBu kkit Player !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġplayer . send Plugin Message ( this . plugin Proxy Ġas ĠPlugin , Ġ" B ungee C ord ", Ġcontent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġall Ġavailable Ġgame modes . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġgame Modes : ĠList < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGame Mode . values (). map Ġ{ Ġg Ġ-> Ġg . name Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPerforms Ġa Ġplayer Ġcommand . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< P > Ġperform Player Command ( player : ĠP , Ġcommand : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( player Ġ! is ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Player Ġhas Ġto Ġbe Ġa ĠBu kkit Player !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġplayer . perform Command ( command ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġlocation Ġof Ġthe Ġplayer . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< L , ĠP > Ġset Player Location ( player : ĠP , Ġlocation : ĠL ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( player Ġ! is ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Player Ġhas Ġto Ġbe Ġa ĠBu kkit Player !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( location Ġis ĠPosition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . tele port ( location . to Location ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( location Ġis ĠLocation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . tele port ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Location Ġhas Ġto Ġbe Ġa Ġposition Ġor Ġlocation !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġlocation Ġof Ġthe Ġplayer . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< L , ĠP > Ġget Player Location ( player : ĠP ): ĠL Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( player Ġ! is ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Player Ġhas Ġto Ġbe Ġa ĠBu kkit Player !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġplayer . location Ġas ĠL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġa Ġcopy Ġof Ġthe Ġplayer Ġinventory . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< P > Ġget Player Inventory Copy ( player : ĠP ): ĠArray < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( player Ġ! is ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Player Ġhas Ġto Ġbe Ġa ĠBu kkit Player !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġplayer . inventory . contents . clone () Ġas ĠArray < Any ?> ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġa Ġcopy Ġof Ġthe Ġplayer Ġarm or Ġinventory . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< P > Ġget Player Inventory Armor Copy ( player : ĠP ): ĠArray < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( player Ġ! is ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Player Ġhas Ġto Ġbe Ġa ĠBu kkit Player !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġplayer . inventory . armor Contents . clone () Ġas ĠArray < Any ?> ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġthe Ġgiven Ġ[ location ] Ġto Ġa Ġ[ Position ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< L > Ġto Position ( location : ĠL ): ĠPosition Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( location Ġ! is ĠLocation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Location Ġhas Ġto Ġbe Ġa ĠBu kkit Location !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlocation . to Position () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSends Ġa Ġchat Ġmessage Ġto Ġthe Ġ[ sender ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< S > ĠsendMessage ( sender : ĠS , Ġchat Builder : ĠChat Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sender Ġ! is ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Player Ġhas Ġto Ġbe Ġa ĠBu kkit Player !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclazz : ĠClass < *> Ġ= Ġif Ġ( plugin Proxy . getServer Version () Ġ== ĠVersion . VERSION _ 1 _ 8 _ R 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Clazz (" net . minecraft . server . VERSION . Chat Serializer ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Clazz (" net . minecraft . server . VERSION . I Chat Base Component \$ Chat Serializer ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpacket Clazz Ġ= Ġfind Clazz (" net . minecraft . server . VERSION . Packet Play Out Chat ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchat Base Component Clazz Ġ= Ġfind Clazz (" net . minecraft . server . VERSION . I Chat Base Component ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchat Component Ġ= Ġclazz . getDeclared Method (" a ", ĠString :: class . java ). invoke ( null , Ġchat Builder . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpacket Ġ= Ġif Ġ( plugin Proxy . getServer Version (). is Version Same Or GreaterThan ( Version . VERSION _ 1 _ 1 2 _ R 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchat Enum Message Ġ= Ġfind Clazz (" net . minecraft . server . VERSION . Chat MessageType ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpacket Clazz . getDeclared Constructor ( chat Base Component Clazz , Ġchat Enum Message ). newInstance ( chat Component , Ġchat Enum Message . enum Constants [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpacket Clazz . getDeclared Constructor ( chat Base Component Clazz , ĠByte :: class . java Primitive Type Ġas ĠClass < *> ). newInstance ( chat Component , Ġ 0 . to Byte ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender . send Packet ( packet ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBu kkit . getLogger (). log ( Level . WARNING , Ġ" Failed Ġto Ġsend Ġpacket .", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSends Ġa Ġmessage Ġto Ġthe Ġ[ sender ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< S > ĠsendMessage ( sender : ĠS , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sender Ġis ĠCommand Sender ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( sender Ġis ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ( message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }