package Ġmod . ch lo ep ri me . ely trab oost er . common . item Ċ Ċ import Ġcom . google . common . collect . Immutable Multimap Ċ import Ġcom . google . common . collect . Multimap Ċ import Ġmod . ch lo ep ri me . ely trab oost er . api . common . E ly tra Boost er Api Ċ import Ġmod . ch lo ep ri me . ely trab oost er . api . common . IB oost ed E ly tra Item Ċ import Ġmod . ch lo ep ri me . ely trab oost er . common . util . A er od ynamics Ċ import Ġmod . ch lo ep ri me . ely trab oost er . common . util . with Length Ċ import Ġnet . minecraft . entity . Living Entity Ċ import Ġnet . minecraft . entity . ai . attributes . Attribute Ċ import Ġnet . minecraft . entity . ai . attributes . Attribute Modifier Ċ import Ġnet . minecraft . inventory . Equipment Slot Type Ċ import Ġnet . minecraft . item . E ly tra Item Ċ import Ġnet . minecraft . item . ItemStack Ċ import Ġnet . minecraft . util . math . vector . Vector 3 d Ċ import Ġnet . minecraftforge . event . Tick Event Ċ import Ġnet . minecraftforge . event bus . api . Event Priority Ċ import Ġnet . minecraftforge . event bus . api . Subscribe Event Ċ import Ġnet . minecraftforge . fml . common . Mod Ċ import Ġorg . w 3 c . dom . Attr Ċ import Ġjava . util .* Ċ import Ġjava . util . function . Double Supplier Ċ import Ġkotlin . properties . Deleg ates Ċ Ċ /** Ċ Ġ* Ġ æĹł ä»»ä½ķ æ¶Ī èĢĹ çļĦ æİ¨ è¿Ľ é ŀĺ ç¿ ħ Ċ Ġ* Ġ@ author ĠCh lo e Prime Ċ Ġ*/ Ċ open Ġclass ĠBoost ed E ly tra Item Base ( ĊĠĠĠ Ġproperties : ĠProperties , ĊĠĠĠ Ġprivate Ġval Ġboost Force : ĠDouble Supplier Ċ ) Ġ: ĠE ly tra Item ( set Group ( properties )), ĠIB oost ed E ly tra Item Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġprotected Ġval ĠSLOT Ġ= ĠE quipment Slot Type . CH EST ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠATTRIBUT E _ MODI FIER _ ID Ġ= ĠUUID . fromString (" 3 9 1 c 2 5 5 a - 2 c 1 f - 4 bd 6 - 8 ff 4 - 9 d 4 b 3 6 5 9 0 c 8 0 ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Group ( prop : ĠProperties ): ĠProperties Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprop . group ( Mod ItemGroup ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan E ly tra Fly ( stack : ĠItemStack , Ġentity : ĠL iving Entity ) Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġfun Ġget Equipment Slot ( stack : ĠItemStack ) Ġ= ĠSLOT ĊĊĠĠĠ Ġprivate Ġvar Ġlast Ob served Boost Force Ġ= ĠDouble . NaN ĊĠĠĠ Ġprivate Ġvar Ġ_ attributes : ĠImmutable Multimap < Attribute , ĠAttribute Modifier >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġattributes ĊĠĠĠĠĠĠĠ Ġget (): ĠImmutable Multimap < Attribute , ĠAttribute Modifier > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Boost Force Ġ= Ġboost Force . as Double ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Boost Force . isNaN ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Boost Ġforce Ġof Ġ$ registry Name Ġis ĠNaN ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Boost Force Ġ== Ġlast Ob served Boost Force ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ attributes !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ob served Boost Force Ġ= Ġnew Boost Force ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ attributes Ġ= ĠImmutable Multimap . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE ly tra Boost er Api . Attributes . BOOST _ SPEED . get (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAttribute Modifier ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ MODI FIER _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Boost ed ĠE ly tra ĠBoost ĠForce ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Boost Force , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAttribute Modifier . Operation . AD DITION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ attributes !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæıĲ ä¾Ľ æİ¨ åĬĽ å±ŀæĢ§ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Attribute Modifiers ( ĊĠĠĠĠĠĠĠ Ġslot : ĠE quipment Slot Type , ĊĠĠĠĠĠĠĠ Ġstack : ĠItemStack ĊĠĠĠ Ġ): ĠMult imap < Attribute , ĠAttribute Modifier > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( slot Ġ== ĠSLOT ) Ġattributes Ġelse Ġsuper . getAttribute Modifiers ( slot , Ġstack ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ è®© æİ¨ è¿Ľ é ŀĺ ç¿ ħ çľŁ æŃ£ éĻĦ åĬł æİ¨ åĬĽ Ċ Ġ* Ġ åĬł éĢŁåº¦ åħ¬ å¼ı Ġa Ġ= Ġa 0 Ġ* Ġlook Vec Ġ- Ġkv ^ 2 Ġ* Ġe ( motion ) Ċ Ġ* Ġ@ author ĠCh lo e Prime Ċ Ġ*/ Ċ @ Mod . EventBus Subscriber Ċ internal Ġobject ĠE ly tra Boost ing EventHandler Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åıĮ ç«¯ æī§è¡Į ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Subscribe Event ( priority Ġ= ĠEvent Priority . HIG HE ST ) ĊĠĠĠ Ġfun Ġon Player Tick ( e : ĠTick Event . Player Tick Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( e . phase Ġ=== ĠTick Event . Phase . END ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ(! E ly tra Boost er Api . is F lying With Boost er ( e . player )) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠE ly tra Boost er Api . get E ly tra Input OrNull ( e . player ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġ// Ġ ç©º æ°Ķ éĺ» åĬĽ åħ¬ å¼ı ĠF = 0 . 5 C Ïģ Sv ^ 2 = cv ^ 2 Ġc ä¸º å¸¸ æķ° ï¼Į v ä¸º éĢŁåº¦ ĊĊĠĠĠĠĠĠĠ Ġ// Ġv Ġ= ĠâĪ ļ a 0 Ġ/ ĠâĪ ļ k ĊĠĠĠĠĠĠĠ Ġ// Ġa 0 Ġ= Ġv ^ 2 Ġ* Ġk Ġ* Ġ åĬł éĢŁåº¦ æĸ¹åĲĳ ĊĠĠĠĠĠĠĠ Ġval Ġa 0 Ġ= ĠA er od ynamics . get Acceleration For Player ( e . player ) Ġ* Ġinput . move Forward ĊĊĠĠĠĠĠĠĠ Ġval Ġmotion : ĠVector 3 d Ġ= Ġe . player . motion ĊĠĠĠĠĠĠĠ Ġval Ġlook Dir Ġ= Ġe . player . look Vec ĊĠĠĠĠĠĠĠ Ġ// Ġkv ^ 2 ĊĠĠĠĠĠĠĠ Ġval Ġair Res istance Ġ= ĠA er od ynamics . AIR _ DR AG Ġ* Ġmotion . length Squared () ĊĠĠĠĠĠĠĠ Ġval Ġair Res istance Vec Ġ= Ġmotion . with Length ( air Res istance ) ĊĠĠĠĠĠĠĠ Ġ// Ġa = F / m = c F ï¼Į c ä¸º å¸¸ æķ° ĊĠĠĠĠĠĠĠ Ġe . player . motion Ġ= Ġmotion . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 Ġ* Ġlook Dir . x Ġ- Ġair Res istance Vec . x , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 Ġ* Ġlook Dir . y Ġ- Ġair Res istance Vec . y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 Ġ* Ġlook Dir . z Ġ- Ġair Res istance Vec . z ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ