/* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠMy th ic D rops , Ġlicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠRichard ĠH arr ah Ċ Ġ* Ċ Ġ* Ġ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 : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ċ Ġ* Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ package Ġcom . teal cube . minecraft . bukkit . my th ic dro ps . utils Ċ Ċ import Ġcom . teal cube . minecraft . bukkit . my th ic dro ps . My th ic D rops Plugin Ċ import Ġcom . teal cube . minecraft . bukkit . my th ic dro ps . api . choices . Weighted Choice Ċ import Ġcom . teal cube . minecraft . bukkit . my th ic dro ps . api . settings . Creature Sp aw ning Settings Ċ import Ġcom . teal cube . minecraft . bukkit . my th ic dro ps . api . ti ers . Tier Ċ import Ġcom . teal cube . minecraft . bukkit . my th ic dro ps . api . ti ers . Tier Manager Ċ import Ġio . pix e lout law . minecraft . sp ig ot . h ilt . get DisplayName Ċ import Ġkotlin . math . pow Ċ import Ġorg . bukkit . Chat Color Ċ import Ġorg . bukkit . entity . Living Entity Ċ import Ġorg . bukkit . inventory . ItemStack Ċ Ċ object ĠT ier Util Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtier Manager : ĠT ier Manager ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠMy th ic D rops Plugin . getInstance (). tier Manager ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Tier ( name : ĠString ): ĠT ier ? Ġ= Ġtier Manager . get ByName ( name ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Tier From ItemStack ( item Stack : ĠItemStack ): ĠT ier ? Ġ= Ġget Tier From ItemStack ( item Stack , Ġtier Manager . get ()) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Tier From ItemStack ( item Stack : ĠItemStack , Ġti ers : ĠCollection < Tier >): ĠT ier ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠdisplayName Ġ= Ġitem Stack . get DisplayName () ĊĠĠĠĠĠĠĠ Ġif Ġ( displayName Ġ== Ġnull Ġ|| ĠdisplayName . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfirst Chat Color Ġ= ĠChat Color Util . getFirst Color ( displayName ) ĊĠĠĠĠĠĠĠ Ġval Ġcolors Ġ= ĠChat Color . getLast Colors ( displayName ) ĊĠĠĠĠĠĠĠ Ġval Ġlast Chat Color Ġ= Ġif Ġ( colors . contains ( Chat Color . COLOR _ CHAR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChat Color . getBy Char ( colors . substring ( 1 , Ġ 2 )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( first Chat Color Ġ== Ġnull Ġ|| Ġlast Chat Color Ġ== Ġnull Ġ|| Ġfirst Chat Color Ġ== Ġlast Chat Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġti ers . find Ġ{ Ġit . display Color Ġ== Ġfirst Chat Color Ġ&& Ġit . identifier Color Ġ== Ġlast Chat Color Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Tier For Living Entity ( ĊĠĠĠĠĠĠĠ Ġliving Entity : ĠL iving Entity , ĊĠĠĠĠĠĠĠ Ġcreature Sp aw ning Settings : ĠCre ature Sp aw ning Settings , ĊĠĠĠĠĠĠĠ Ġtier Manager : ĠT ier Manager ĊĠĠĠ Ġ): ĠT ier ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġallow able Ti ers Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( creature Sp aw ning Settings . tier D rops [ living Entity . type ] Ġ?: Ġempty List ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġtier Manager . get ByName ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdistance From Spawn In Blocks Ġ= Ġliving Entity . location . distance Squared ( living Entity . world . spawn Location ). toInt () ĊĊĠĠĠĠĠĠĠ Ġval Ġselect able Ti ers Ġ= Ġallow able Ti ers . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . maximum Distance From Spawn Ġ< Ġ 0 Ġ|| Ġit . minimum Distance From Spawn Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Dist From Spawn Squared Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . minimum Distance From Spawn . toDouble (). pow ( 2 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Dist From Spawn Squared Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . maximum Distance From Spawn . toDouble (). pow ( 2 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ!( distance From Spawn In Blocks Ġ> Ġmax Dist From Spawn Squared Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance From Spawn In Blocks Ġ< Ġmin Dist From Spawn Squared ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠWeight ed Choice . between ( selectable Ti ers ). choose () ĊĠĠĠ Ġ} Ċ } Ċ