package Ġnet . edu ard . api . lib . ab straction Ċ import Ġjava . util . UUID Ċ import Ġorg . bukkit . craft bukkit . v 1 _ 8 _ R 3 . entity . Craft Living Entity Ċ import Ġnet . minecraft . server . v 1 _ 8 _ R 3 . Entity In sent ient Ċ import Ġnet . minecraft . server . v 1 _ 8 _ R 3 . Path finder Goal Selector Ċ import Ġorg . bukkit . craft bukkit . v 1 _ 8 _ R 3 . util . Unsafe List Ċ import Ġnet . minecraft . server . v 1 _ 8 _ R 3 . Path finder Goal Float Ċ import Ġjava . lang . IllegalArgumentException Ċ import Ġnet . minecraft . server . v 1 _ 8 _ R 3 . Path finder Goal Ċ import Ġnet . minecraft . server . v 1 _ 8 _ R 3 . Path Entity Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġorg . bukkit . entity . Living Entity Ċ import Ġjava . lang . Exception Ċ import Ġjava . lang . reflect . Field Ċ Ċ object ĠP ets API Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġg sa : ĠField ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġgoal Selector : ĠField ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtarget Selector : ĠField ? Ġ= Ġnull ĊĠĠĠ Ġfun Ġmake Pet ( e : ĠL iving Entity , Ġto Follow : ĠUUID ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn ms Entity : ĠAny Ġ= Ġ( e Ġas ĠCraft Living Entity ). handle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nms Entity Ġis ĠEntity In sent ient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgoal Ġ= Ġgoal Selector ! ![ nms Entity ] Ġas ĠPath finder Goal Selector ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġtarget Selector ! ![ nms Entity ] Ġas ĠPath finder Goal Selector ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg sa ! ![ goal ] Ġ= ĠUnsafe List < Any >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg sa ! ![ target ] Ġ= ĠUnsafe List < Any >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoal . a ( 0 , ĠPath finder Goal Float ( nms Entity )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoal . a ( 1 , ĠPath finder Goal Walk to Tile ( nms Entity , Ġto Follow )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( e . getType (). getName () Ġ+ Ġ" Ġis Ġnot Ġan Ġinstance Ġof Ġan ĠEntity In sent ient .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠPath finder Goal Walk to Tile ( private Ġval Ġentity : ĠEntity In sent ient , Ġprivate Ġval Ġuuid : ĠUUID ?) Ġ: ĠPath finder Goal () Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġpath : ĠPath Entity ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġa (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġal vo Ġ= ĠBu kkit . getPlayer ( uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Bu kkit . getPlayer ( uuid ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpath Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Location Ġ= Ġal vo . location ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// boolean Ġflag Ġ= Ġthis . entity . get Navigation (). m (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġentity . navigation . a ( target Location . x Ġ+ Ġ 1 , Ġtarget Location . y , Ġtarget Location . z Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpath Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġe () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġd () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġi (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġc () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity . navigation . a ( path , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg sa Ġ= ĠPath finder Goal Selector :: class . java . getDeclared Field (" b ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg sa !!. is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoal Selector Ġ= ĠEntity In sent ient :: class . java . getDeclared Field (" goal Selector ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoal Selector !!. is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Selector Ġ= ĠEntity In sent ient :: class . java . getDeclared Field (" target Selector ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Selector !!. is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }