/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠPhil ipp ĠE istr ach Ċ Ġ* Ċ Ġ* Ġ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 Ġde . fl lip . inventory . api . inventory Ċ Ċ import Ġcom . google . common . collect . Lists Ċ import Ġcom . google . inject . Inject Ċ import Ġcom . google . inject . Singleton Ċ import Ġde . fl lip . inventory . api . creator . Inventory Creator Ċ import Ġde . fl lip . inventory . api . creator . Inventory Information Ċ import Ġde . fl lip . inventory . api . result . Inventory Result Ċ import Ġde . fl lip . inventory . api . section . state . Inventory State Helper Ċ import Ġorg . bukkit . entity . Player Ċ import Ġorg . bukkit . metadata . Fixed Metadata Value Ċ import Ġorg . bukkit . plugin . java . Java Plugin Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠIntelliJ ĠIDEA . Ċ Ġ* ĠUser : ĠPhil ipp . E istr ach Ċ Ġ* ĠDate : Ġ 0 5 . 1 2 . 2 0 2 0 Ċ Ġ* ĠTime : Ġ 1 2 : 5 6 Ċ Ġ*/ Ċ @ Singleton Ċ class ĠInventory Service Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcreator : ĠInventory Creator , ĊĠĠĠ Ġprivate Ġval Ġjava Plugin : ĠJava Plugin Ċ ) Ġ{ ĊĊĊĠĠĠ Ġval Ġinvent ories Ġ= ĠLists . newArrayList < Inventory Cache >() ĊĊĠĠĠ Ġfun Ġopen Inventory ( player : ĠPlayer , Ġinventory Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Inventory ( player , Ġinventory Name , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Inventory ( player : ĠPlayer , Ġinventory Name : ĠString , Ġpage : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinventory Information Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreator . invent ories . first OrNull Ġ{ Ġit . inventory Name . equals ( inventory Name , Ġtrue ) Ġ} Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġinventory Ġ= Ġget Inventory ( player , Ġinventory Name ) Ġ?: Ġcreate Bu kkit Inventory ( player , Ġinventory Information ) ĊĊĠĠĠĠĠĠĠ Ġinventory Information . inventory Configuration . opening Handler ?. accept ( Inventory Result ( inventory , Ġplayer )) ĊĊĠĠĠĠĠĠĠ Ġplayer . set Metadata (" current - inventory ", ĠFixed Metadata Value ( java Plugin , Ġinventory Name )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( page Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinventory . open () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinventory . open ( page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Bu kkit Inventory ( player : ĠPlayer , Ġinventory Information : ĠInventory Information ): ĠInventory Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinventory Ġ= ĠInventory ( java Plugin , Ġplayer , Ġinventory Information , Ġthis ) ĊĠĠĠĠĠĠĠ Ġinventory . create () ĊĊĠĠĠĠĠĠĠ Ġinvent ories . add ( Inventory Cache ( player , Ġinventory Information . inventory Name , Ġinventory )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinventory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Opened Inventory ( player : ĠPlayer ): ĠInventory ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinventory Name Ġ= Ġplayer . getMetadata (" current - inventory "). first OrNull ()?. asString () Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn Ġget Inventory ( player , Ġinventory Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Inventory ( player : ĠPlayer , Ġinventory Name : ĠString ): ĠInventory ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinvent ories . first OrNull Ġ{ Ġit . player Ġ== Ġplayer Ġ&& Ġit . inventory Name Ġ== Ġinventory Name Ġ} ?. inventory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdestroy Invent ories Of Player ( player : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinvent ories . remove If Ġ{ Ġit . player Ġ== Ġplayer Ġ} ĊĠĠĠĠĠĠĠ ĠInventory State Helper . destroy States Of Player ( player ) ĊĠĠĠ Ġ} Ċ Ċ }