package Ġgg . scala . part ies . service Ċ Ċ import Ġgg . scala . part ies . model . Party Ċ import Ġio . github . nose quel . data . Data Handler Ċ import Ġio . github . nose quel . data . DataStore Type Ċ import Ġorg . bukkit . entity . Player Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Comp letableFuture Ċ Ċ /** Ċ Ġ* Ġ@ author ĠGrow ly X Ċ Ġ* Ġ@ since Ġ 1 2 / 2 / 2 0 2 1 Ċ Ġ*/ Ċ object ĠParty Service Ċ { ĊĠĠĠ Ġval Ġservice Ġ= ĠData Handler . create Store Type < UUID , ĠParty >( DataStore Type . REDIS ) ĊĊĠĠĠ Ġprivate Ġval Ġloaded Part ies Ġ= Ġmutable Map Of < UUID , ĠParty >() ĊĊĠĠĠ Ġfun Ġfind Party By Leader ( unique Id : ĠUUID ): ĠParty ? ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġloaded Part ies . values . first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . leader . unique Id Ġ== Ġunique Id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind Party By UniqueId ( unique Id : ĠUUID ): ĠParty ? ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġloaded Part ies . values . first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . members . containsKey ( unique Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind Party By UniqueId ( player : ĠPlayer ): ĠParty ? ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġloaded Part ies . values . first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . members . containsKey ( player . unique Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreload Party By UniqueId ( unique Id : ĠUUID ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( loaded Part ies [ unique Id ] Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġservice . retrieve All Async Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . unique Id Ġ== Ġunique Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloaded Part ies [ it . unique Id ] Ġ= Ġit ; Ġreturn @ retrieve All Async ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Party Of Player If Absent ( player : ĠPlayer ): ĠCompletableFuture < Party ?> ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġloaded Party Ġ= Ġfind Party By UniqueId ( player ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( loaded Party Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCompletableFuture < Party ?> (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . complete ( loaded Party ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompletableFuture . supply Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġparty : ĠParty ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . retrieve All Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . members . containsKey ( player . unique Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloaded Part ies [ it . unique Id ] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparty Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }