@ file : Suppress (" CAST _ NE VER _ SU CCE ED S ", Ġ" unused ") Ċ Ċ package Ġcom . github . sh yn ix n . pet blocks . sponge . logic . business . listener Ċ Ċ import Ġcom . flow powered . math . vector . Vector 3 d Ċ import Ġcom . github . sh yn ix n . pet blocks . api . business . service . Combat Pet Service Ċ import Ġcom . github . sh yn ix n . pet blocks . api . business . service . Health Service Ċ import Ġcom . github . sh yn ix n . pet blocks . api . business . service . Persistence Pet Meta Service Ċ import Ġcom . github . sh yn ix n . pet blocks . api . business . service . Pet Service Ċ import Ġcom . github . sh yn ix n . pet blocks . api . persistence . entity . A IF lee In Combat Ċ import Ġcom . github . sh yn ix n . pet blocks . api . persistence . entity . AI Health Ċ import Ġcom . github . sh yn ix n . pet blocks . api . sponge . event . Pet Pre Spawn Event Ċ import Ġcom . github . sh yn ix n . pet blocks . sponge . logic . business . extension . to Position Ċ import Ġcom . github . sh yn ix n . pet blocks . sponge . logic . business . extension . to Vector Ċ import Ġcom . google . inject . Inject Ċ import Ġorg . spongepowered . api . entity . Entity Ċ import Ġorg . spongepowered . api . entity . living . player . Player Ċ import Ġorg . spongepowered . api . event . Listener Ċ import Ġorg . spongepowered . api . event . cause . entity . damage . Damage Types Ċ import Ġorg . spongepowered . api . event . cause . entity . damage . source . Damage Sources Ċ import Ġorg . spongepowered . api . event . entity . Damage Entity Event Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠSh yn ix n Ġ 2 0 1 8 . Ċ Ġ* Ġ< p > Ċ Ġ* ĠVersion Ġ 1 . 2 Ċ Ġ* Ġ< p > Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ġ< p > Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 Ġ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 ĠDamage Pet Listener Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġpet Service : ĠPet Service , ĊĠĠĠ Ġprivate Ġval Ġcom bat Pet Service : ĠCom bat Pet Service , ĊĠĠĠ Ġprivate Ġval Ġhealth Service : ĠHealth Service , ĊĠĠĠ Ġprivate Ġval Ġpersistence Pet Meta Service : ĠPersistence Pet Meta Service Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ event ] Ġgets Ġcalled Ġwhen Ġa Ġentity Ġgets Ġdam aged . ĠRedirect s Ġthe Ġdamage Ġto Ġthe ĠPet Blocks Ġimplementation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Listener ĊĠĠĠ Ġfun Ġon Entity Receive Damage Event ( event : ĠDamage Entity Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pet Service . find Pet By Entity ( event . target Entity ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpet Ġ= Ġpet Service . find Pet By Entity ( event . target Entity ) !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . is Cancelled Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhealth Service . damage Pet ( pet . meta , Ġevent . final Damage ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . cause . contains Type ( Damage Sources . FALL ING :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom bat Pet Service . f lee ( pet . meta ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( event . source Ġ!= ĠDamage Types . FALL Ġ&& Ġevent . target Entity Ġis ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpet Meta Ġ= Ġpersistence Pet Meta Service . get Pet Meta From Player ( event . target Entity ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcom bat Pet Service . f lee ( pet Meta ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ event ] Ġgets Ġcalled Ġwhen Ġa Ġpet Ġdamage s Ġanother Ġentity . ĠCancel s Ġthe Ġdamage Ġper Ġdefault . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Listener ĊĠĠĠ Ġfun Ġon Entity Damage By Entity Event ( event : ĠDamage Entity Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! event . cause . first ( Entity :: class . java ). isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdam ager Ġ= Ġevent . cause . first ( Entity :: class . java ). get () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( pet Service . find Pet By Entity ( dam ager ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . is Cancelled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( pet Service . find Pet By Entity ( event . target Entity ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpet Ġ= Ġpet Service . find Pet By Entity ( event . target Entity ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcom bat Pet Service . f lee ( pet . meta ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvector Ġ= Ġevent . target Entity . transform . to Position (). subtract ( dam ager . transform . to Position ()). to Vector (). normalize (). mul ( 0 . 5 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpet . set Velocity ( Vector 3 d ( vector . x , Ġ 0 . 1 , Ġvector . z )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ event ] Ġgets Ġcalled Ġwhen Ġa Ġpet Ġtries Ġto Ġget Ġspawn ed Ġby Ġa Ġplayer . ĠChecks Ġif Ġthe Ġpet Ġis Ġcurrently Ġresp aw ning Ġblocked . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Listener ĊĠĠĠ Ġfun Ġon Pet Spawn Event ( event : ĠPet Pre Spawn Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . pet Meta . ai Go als . first OrNull Ġ{ Ġa Ġ-> Ġa Ġis ĠAI Health Ġ} Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġai Health Ġ= Ġevent . pet Meta . ai Go als . first OrNull Ġ{ Ġa Ġ-> Ġa Ġis ĠAI Health Ġ} Ġas ĠAI Health ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ai Health . current Resp aw ning Delay Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . is Cancelled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( event . pet Meta . ai Go als . first OrNull Ġ{ Ġa Ġ-> Ġa Ġis ĠA IF lee In Combat Ġ} Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġai F lee In Combat Ġ= Ġevent . pet Meta . ai Go als . first OrNull Ġ{ Ġa Ġ-> Ġa Ġis ĠA IF lee In Combat Ġ} Ġas ĠA IF lee In Combat ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ai F lee In Combat . current Ap pe ars InSeconds Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . is Cancelled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }