/* ĠCopyright Ġ( c ) Ġ 2 0 2 2 ĠDe fl ated Pick le Ġunder Ġthe ĠMIT Ġlicense Ġ*/ Ċ Ċ @ file : Suppress (" Member Visibility Can Be Private ") Ċ Ċ package Ġcom . def lated pickle . hun gr yp igs . entity . ai Ċ Ċ import Ġcom . def lated pickle . hun gr yp igs . api . Has Target Ċ import Ġnet . minecraft . entity . Item Entity Ċ import Ġnet . minecraft . entity . ai . goal . Goal Ċ import Ġnet . minecraft . entity . passive . Animal Entity Ċ import Ġnet . minecraft . item . ItemStack Ċ import Ġnet . minecraft . world . event . Game Event Ċ import Ġjava . util . Enum Set Ċ Ċ class ĠE at Food Goal ( ĊĠĠĠ Ġval Ġmob : ĠAnimal Entity , ĊĠĠĠ Ġval Ġtarget : Ġ() Ġ-> ĠItem Entity ? Ċ ) Ġ: ĠGoal () Ġ{ ĊĠĠĠ Ġvar Ġtimer Ġ= Ġ 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcontrols Ġ= ĠEnum Set . of ( Control . MOVE , ĠControl . LOOK , ĠControl . JUMP ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Start (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġtarget () Ġ?: Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! target . is Alive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmob . squared Distance To ( target . pos ) Ġ< Ġ 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġtimer Ġ= Ġget Tick Count ( 4 0 ) ĊĠĠĠĠĠĠĠ Ġmob . world . send Entity Status ( mob , Ġ 1 0 . to Byte ()) ĊĠĠĠĠĠĠĠ Ġmob . navigation . stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( mob Ġas ĠHas Target ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . target Pos Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . target Stack Ġ= ĠItemStack . EMPTY ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtick () Ġ{ ĊĠĠĠĠĠĠĠ Ġtimer Ġ= Ġ 0 . coerce At Least ( timer Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( timer Ġ!= Ġget Tick Count ( 4 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtarget ()?. let Ġ{ Ġtarget Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmob . world . let Ġ{ Ġworld Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . emit Game Event ( mob , ĠGame Event . E AT , Ġmob . camera Block Pos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmob . apply Food Effects ( target . stack , Ġworld , Ġmob ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mob . is B reed ing Item ( target . stack )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmob . love Ticks Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target . stack . count Ġ- Ġ 1 Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . stack . decrement ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( mob Ġas ĠHas Target ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . target Pos Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . target Stack Ġ= ĠItemStack . EMPTY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . kill () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ