/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠRen ĠBind en Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . r pk it . craft ing skill . bukkit . listener Ċ Ċ import Ġcom . r pk it . characters . bukkit . character . RP K Character Service Ċ import Ġcom . r pk it . core . bukkit . extension . add L ore Ċ import Ġcom . r pk it . core . service . Services Ċ import Ġcom . r pk it . craft ing skill . bukkit . RP K Craft ing Skill Bu kkit Ċ import Ġcom . r pk it . craft ing skill . bukkit . craft ing skill . RP K Craft ing Action Ċ import Ġcom . r pk it . craft ing skill . bukkit . craft ing skill . RP K Craft ing Skill Service Ċ import Ġcom . r pk it . players . bukkit . profile . minecraft . RP KM inecraft Profile Service Ċ import Ġorg . bukkit . Game Mode Ċ import Ġorg . bukkit . entity . Player Ċ import Ġorg . bukkit . event . EventHandler Ċ import Ġorg . bukkit . event . Listener Ċ import Ġorg . bukkit . event . inventory . Prepare Item Craft Event Ċ import Ġkotlin . math . ceil Ċ import Ġkotlin . math . round ToInt ĊĊ Ċ class ĠPrepare Item Craft Listener ( private Ġval Ġplugin : ĠRP K Craft ing Skill Bu kkit ) Ġ: ĠListener Ġ{ ĊĊĠĠĠ Ġ@ EventHandler ĊĠĠĠ Ġfun Ġon Prepare Item Craft ( event : ĠPrepare Item Craft Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbu kkit Player Ġ= Ġevent . view ers . first OrNull () Ġas ? ĠPlayer ĊĠĠĠĠĠĠĠ Ġif Ġ( bukkit Player Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . inventory . result Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( bukkit Player . game Mode Ġ== ĠGame Mode . CRE ATIVE Ġ|| Ġbu kkit Player . game Mode Ġ== ĠGame Mode . S PECT ATOR ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġm inecraft Profile Service Ġ= ĠServices [ RP KM inecraft Profile Service :: class . java ] ĊĠĠĠĠĠĠĠ Ġif Ġ( minecraft Profile Service Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . inventory . result Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcharacter Service Ġ= ĠServices [ RP K Character Service :: class . java ] ĊĠĠĠĠĠĠĠ Ġif Ġ( character Service Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . inventory . result Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcraft ing Skill Service Ġ= ĠServices [ RP K Craft ing Skill Service :: class . java ] ĊĠĠĠĠĠĠĠ Ġif Ġ( craft ing Skill Service Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . inventory . result Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġm inecraft Profile Ġ= Ġm inecraft Profile Service . getM inecraft Profile ( bukkit Player ) ĊĠĠĠĠĠĠĠ Ġif Ġ( minecraft Profile Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . inventory . result Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcharacter Ġ= Ġcharacter Service . getActive Character ( minecraft Profile ) ĊĠĠĠĠĠĠĠ Ġif Ġ( character Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . inventory . result Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmaterial Ġ= Ġevent . inventory . result ?. type ĊĠĠĠĠĠĠĠ Ġif Ġ( material Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . inventory . result Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcraft ing Skill Ġ= Ġcraft ing Skill Service . getC raft ing Experience ( character , ĠRP K Craft ing Action . CR AFT , Ġmaterial ) ĊĠĠĠĠĠĠĠ Ġval Ġquality Ġ= Ġcraft ing Skill Service . get Quality For ( RP K Craft ing Action . CR AFT , Ġmaterial , Ġcraft ing Skill ) ĊĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġcraft ing Skill Service . get Amount For ( RP K Craft ing Action . CR AFT , Ġmaterial , Ġcraft ing Skill ) ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġevent . inventory . result Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( quality Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . add L ore ( quality . lo re ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( amount Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . amount Ġ= Ġamount . round ToInt () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( amount Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . amount Ġ= Ġceil ( amount ). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevent . inventory . result Ġ= Ġitem ĊĠĠĠ Ġ} Ċ Ċ }