package Ġcom . m riv an play s . toggle inventory . storage Ċ Ċ import Ġorg . bukkit . configuration . file . File Configuration Ċ import Ġorg . bukkit . configuration . file . Yaml Configuration Ċ import Ġorg . bukkit . entity . Player Ċ import Ġorg . bukkit . inventory . ItemStack Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġjava . util .* Ċ Ċ class ĠYaml Storage ( plugin Folder : ĠPath ) Ġ: ĠStorage Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcurrently Loaded : ĠMutable Map < UUID , ĠInt > Ġ= Ġmutable Map Of () ĊĠĠĠ Ġprivate Ġval Ġdata Folder : ĠPath Ġ= Ġplugin Folder . resolve (" invent ories ") ĊĊĠĠĠ Ġoverride Ġfun Ġapply Inventory ( ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer , ĊĠĠĠĠĠĠĠ Ġnumber : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnumber Path Ġ= Ġnumber . toString () ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġget Player Config ( player . unique Id ) ĊĠĠĠĠĠĠĠ Ġcurrently Loaded [ player . unique Id ] Ġ= Ġnumber ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! config . isSet ( number Path )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . inventory . clear () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontents : ĠMutable Map < Int , ĠItemStack > Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Num Ġin Ġconfig . getConfiguration Section ( number Path )?. get Keys ( false ) !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Section Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . getConfiguration Section ("$ number Path .$ item Num ") Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġitem Section . getValues ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġslot Ġ= Ġmap [" slot "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠItemStack . deserialize ( map ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents [ slot ] Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . inventory . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( content Entry Ġin Ġcontents . entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . inventory . setItem ( content Entry . key , Ġcontent Entry . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstore Currently Loaded Inventory ( ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrently Loaded Inventory Number : ĠInt Ġ= Ġcurrently Loaded [ player . unique Id ] Ġ?: Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġunique Id Ġ= Ġplayer . unique Id ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġget Player Config ( unique Id ) ĊĊĠĠĠĠĠĠĠ Ġconfig . set ( currently Loaded Inventory Number . toString (), Ġserialize Inventory ( player . inventory )) ĊĠĠĠĠĠĠĠ Ġconfig . save ( File ( data Folder . to File (), Ġ"$ unique Id . yml ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetLast Loaded Inventory ( player : ĠPlayer ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfrom Memory Ġ= Ġcurrently Loaded [ player . unique Id ] ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( from Memory Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġget Player Config ( player . unique Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfrom Config Ġ= Ġconfig . getInt (" last - loaded - inventory ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( from Config Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrently Loaded [ player . unique Id ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrently Loaded [ player . unique Id ] Ġ= Ġfrom Config ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Config ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Memory ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Currently Applied ( player : ĠPlayer , Ġinventory : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġloaded Ġ= Ġcurrently Loaded [ player . unique Id ] Ġ?: Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn Ġloaded Ġ== Ġinventory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Quit ( player : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġunique Id Ġ= Ġplayer . unique Id ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġget Player Config ( unique Id ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrently Loaded Inventory Ġ= Ġcurrently Loaded [ unique Id ] Ġ?: Ġ 1 ĊĠĠĠĠĠĠĠ Ġconfig . set (" last - loaded - inventory ", Ġcurrently Loaded Inventory ) ĊĠĠĠĠĠĠĠ Ġconfig . set ( currently Loaded Inventory . toString (), Ġserialize Inventory ( player . inventory )) ĊĠĠĠĠĠĠĠ Ġconfig . save ( File ( data Folder . to File (), Ġ"$ unique Id . yml ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Player Config ( ĊĠĠĠĠĠĠĠ Ġuuid : ĠUUID ĊĠĠĠ Ġ): ĠFile Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Files . exists ( data Folder )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create Directories ( data Folder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= Ġdata Folder . resolve ("$ uuid . yml ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! Files . exists ( filePath )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create File ( filePath ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠYaml Configuration . load Configuration ( Files . new BufferedReader ( filePath )) ĊĠĠĠ Ġ} Ċ }