package Ġcom . github . sh yn ix n . block ball . bukkit . logic . business . service . nms . v 1 _ 1 7 _ R 1 Ċ Ċ import Ġcom . github . sh yn ix n . block ball . api . business . enumeration . Compatibility Armor Slot Type Ċ 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 . Internal Version Packet Service Ċ import Ġcom . github . sh yn ix n . block ball . api . business . service . Logging Service Ċ import Ġcom . github . sh yn ix n . block ball . api . persistence . entity . Entity MetaData Ċ import Ġcom . github . sh yn ix n . block ball . api . persistence . entity . Position Ċ import Ġcom . google . inject . Inject Ċ import Ġcom . moj ang . data fix ers . util . Pair Ċ import Ġio . netty . buffer . Byte Buf Ċ import Ġio . netty . buffer . Un p ooled Ċ import Ġnet . minecraft . core . Registry Ċ import Ġnet . minecraft . network . Friendly Byte Buf Ċ import Ġnet . minecraft . network . protocol . game . Client bound Add Mob Packet Ċ import Ġnet . minecraft . network . protocol . game . Client bound Set Entity Data Packet Ċ import Ġnet . minecraft . network . protocol . game . Client bound Set Equipment Packet Ċ import Ġnet . minecraft . network . protocol . game . Client bound Teleport Entity Packet Ċ import Ġnet . minecraft . world . entity . EntityType Ċ import Ġnet . minecraft . world . entity . Equipment Slot Ċ import Ġnet . minecraft . world . item . ItemStack Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . util .* Ċ Ċ class ĠInternal Version Packet 1 1 7 R 1 ServiceImpl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġplugin Proxy : ĠPlugin Proxy , ĊĠĠĠ Ġprivate Ġval Ġlogging Service : ĠLogging Service Ċ ) Ġ: ĠInternal Version Packet Service Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcraft ItemStack N ms Method Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġplugin Proxy . find Clazz (" org . bukkit . craft bukkit . VERSION . inventory . Craft ItemStack ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getDeclared Method (" as NM SC opy ", Ġplugin Proxy . find Clazz (" org . bukkit . inventory . ItemStack ")) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġenum Item Slot Clazz Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Proxy . find Clazz (" net . minecraft . world . entity . Enum Item Slot ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Proxy . find Clazz (" net . minecraft . server . VERSION . Enum Item Slot ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġmo j ang Pair Clazz Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġplugin Proxy . find Clazz (" com . moj ang . data fix ers . util . Pair ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġtele port Ġpacket . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcreate Entity Teleport Packet ( entityId : ĠInt , Ġposition : ĠPosition ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠFriend ly Byte Buf ( Un p ooled . buffer ()) ĊĠĠĠĠĠĠĠ Ġbuffer . write Id ( entityId ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Double ( position . x ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Double ( position . y ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Double ( position . z ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Byte (( position . yaw Ġ* Ġ 2 5 6 . 0 f Ġ/ Ġ 3 6 0 . 0 f ). toInt (). to Byte (). toInt ()) ĊĠĠĠĠĠĠĠ Ġbuffer . write Byte (( position . pitch Ġ* Ġ 2 5 6 . 0 f Ġ/ Ġ 3 6 0 . 0 f ). toInt (). to Byte (). toInt ()) ĊĠĠĠĠĠĠĠ Ġbuffer . write Boolean ( false ) ĊĠĠĠĠĠĠĠ Ġreturn ĠClient bound Teleport Entity Packet ( buffer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġspawn Ġpacket . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcreate Entity Spawn Packet ( entityId : ĠInt , Ġentity Type : ĠString , Ġposition : ĠPosition ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠFriend ly Byte Buf ( Un p ooled . buffer ()) ĊĠĠĠĠĠĠĠ Ġbuffer . write Id ( entityId ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentity UUID Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġbuffer . write Long ( entity UUID . most Sign ificant Bits ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Long ( entity UUID . least Sign ificant Bits ) ĊĠĠĠĠĠĠĠ Ġval Ġn ms EntityType Ġ= Ġif Ġ( entity Type Ġ== Ġ" ARM OR _ STAND ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEntityType . ARM OR _ STAND ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEntityType . S LI ME ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġn ms EntityId Ġ= ĠRegistry . ENTITY _ TYPE :: class . java . getDeclared Method (" getId ", ĠAny :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. invoke ( Registry . ENTITY _ TYPE , Ġn ms EntityType ) Ġas ĠInt ĊĊĠĠĠĠĠĠĠ Ġbuffer . write Id ( nms EntityId ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Double ( position . x ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Double ( position . y ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Double ( position . z ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Byte (( position . yaw Ġ* Ġ 2 5 6 . 0 f Ġ/ Ġ 3 6 0 . 0 f ). toInt (). to Byte (). toInt ()) ĊĠĠĠĠĠĠĠ Ġbuffer . write Byte (( position . pitch Ġ* Ġ 2 5 6 . 0 f Ġ/ Ġ 3 6 0 . 0 f ). toInt (). to Byte (). toInt ()) ĊĠĠĠĠĠĠĠ Ġbuffer . write Byte ( 0 ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Short (( math helper A ( 0 . 0 , Ġ- 3 . 9 , Ġ 3 . 9 ) Ġ* Ġ 8 0 0 0 . 0 ). toInt ()) ĊĠĠĠĠĠĠĠ Ġbuffer . write Short (( math helper A ( 0 . 0 , Ġ- 3 . 9 , Ġ 3 . 9 ) Ġ* Ġ 8 0 0 0 . 0 ). toInt ()) ĊĠĠĠĠĠĠĠ Ġbuffer . write Short (( math helper A ( 0 . 0 , Ġ- 3 . 9 , Ġ 3 . 9 ) Ġ* Ġ 8 0 0 0 . 0 ). toInt ()) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠClient bound Add Mob Packet ( buffer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġentity Ġmetadata Ġpacket . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcreate Entity MetaData Packet ( entityId : ĠInt , Ġentity MetaData : ĠEntity MetaData ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// wiki . vg / Entity _ metadata # Entity _ Metadata _ Format Ġ-> ĠValue Ġof ĠType Ġfield . ĠType Ġof ĠValue Ġ= ĠBoolean Ġ-> Ġ 7 . ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠFriend ly Byte Buf ( Un p ooled . buffer ()) ĊĠĠĠĠĠĠĠ Ġbuffer . write Id ( entityId ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbyte Type Value Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġint Type Value Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġboolean Type Value Ġ= Ġ 7 ĊĠĠĠĠĠĠĠ Ġval Ġopt Chat Type Value Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġval Ġrotation Type Value Ġ= Ġ 8 ĊĊĠĠĠĠĠĠĠ Ġif Ġ( entity MetaData . custom Name Visible Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Id ( boolean Type Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Boolean ( entity MetaData . custom Name Visible !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( entity MetaData . custom name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpayload Ġ= Ġ"{\" text \": Ġ\" ${ entity MetaData . custom name }\" }". toByteArray ( Charset . forName (" UTF - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Id ( opt Chat Type Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Boolean ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Id ( payload . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Bytes ( payload ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( entity MetaData . s lime Size Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs lime Size Index Ġ= Ġ 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( s lime Size Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Id ( int Type Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Id ( entity MetaData . s lime Size !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( entity MetaData . armor stand Head Rotation Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Id ( rotation Type Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Float ( entity MetaData . armor stand Head Rotation !!. x . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Float ( entity MetaData . armor stand Head Rotation !!. y . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Float ( entity MetaData . armor stand Head Rotation !!. z . toFloat ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( entity MetaData . isIn visible Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Id ( byte Type Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( 0 x 2 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( entity MetaData . is Small Ġ!= Ġnull Ġ&& Ġentity MetaData . is Small !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( 1 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Id ( byte Type Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Byte ( 0 x 0 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuffer . write Byte ( 2 5 5 ) ĊĠĠĠĠĠĠĠ Ġreturn ĠClient bound Set Entity Data Packet ( buffer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġan Ġentity Ġequipment Ġpacket . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġ< I > Ġcreate Entity Equipment Packet ( entityId : ĠInt , Ġslot : ĠCompatibility Armor Slot Type , Ġitem Stack : ĠI ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġn ms ItemStack Ġ= Ġcraft ItemStack N ms Method . invoke ( null , Ġitem Stack ) ĊĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġmo j ang Pair Clazz . getDeclared Constructor ( Any :: class . java , ĠAny :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. newInstance ( enum Item Slot Clazz . enum Constants [ slot . id 1 1 6 ], Ġn ms ItemStack ) ĊĠĠĠĠĠĠĠ Ġreturn ĠClient bound Set Equipment Packet ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable ListOf ( pair ) Ġas ĠMutable List < Pair < Equipment Slot , ĠItemStack >> ? ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMath helper ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmath helper A ( var 0 : ĠDouble , Ġvar 2 : ĠDouble , Ġvar 4 : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( var 0 Ġ< Ġvar 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar 2 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( var 0 Ġ> Ġvar 4 ) Ġvar 4 Ġelse Ġvar 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrites Ġid . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠByte Buf . write Id ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġand Ġ- 1 2 8 Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( i Ġand Ġ 1 2 7 Ġor Ġ 1 2 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= Ġi Ġ ush r Ġ 7 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwrite Byte ( i ) ĊĠĠĠ Ġ} Ċ } Ċ