/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . Ċ Ġ* ĠCreated Ġby ĠYo lo Santa Ċ Ġ* ĠCreated ĠOn Ġ 1 0 / 2 2 / 2 0 , Ġ 1 : 2 3 ĠAM Ċ Ġ*/ Ċ Ċ package Ġcc . fy re . st ark . core . profile Ċ Ċ import Ġcc . fy re . st ark . core . St ark Core Ċ import Ġcc . fy re . st ark . core . profile . grant . Profile Grant Ċ import Ġcc . fy re . st ark . core . profile . grant . Profile Grant Serializer Ċ import Ġcc . fy re . st ark . core . profile . pun ish ment . Profile P un ish ment Ċ import Ġcc . fy re . st ark . core . profile . pun ish ment . Profile P un ish ment Serializer Ċ import Ġcc . fy re . st ark . core . profile . pun ish ment . Profile P un ish ment Type Ċ import Ġcc . fy re . st ark . core . rank . Rank Ċ import Ġcc . fy re . st ark . core . tags . Tag Ċ import Ġorg . bson . Document Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ import Ġkotlin . collections . HashSet Ċ Ċ abstract Ġclass ĠProfile ( val Ġuuid : ĠUUID ) Ġ{ ĊĊĠĠĠ Ġvar ĠuserName : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġgr ants : ĠMutable List < Profile Grant > Ġ= ĠArrayList () ĊĠĠĠ Ġvar Ġp un ish ments : ĠMutable List < Profile P un ish ment > Ġ= ĠArrayList () ĊĠĠĠ Ġvar Ġdate Joined Ġ= ĠDate () ĊĠĠĠ Ġvar Ġip Addresses : ĠMutable Set < String > Ġ= ĠHashSet () ĊĠĠĠ Ġvar Ġplayer Per ms : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠ Ġvar Ġtag : ĠTag ? Ġ= Ġnull Ġ// Ġif Ġthey Ġdon 't Ġhave Ġa Ġtag Ġwe Ġcan Ġlet Ġit Ġbe Ġnull ĊĊĠĠĠ Ġfun Ġget Comp o unded Permissions (): ĠList < String > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġpermissions Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġpermissions . addAll ( St ark Core . instance . rank Handler . getDefault Rank (). get Comp o unded Permissions ()) ĊĊĠĠĠĠĠĠĠ Ġpermissions . addAll ( this . player Per ms . toList ()) ĊĠĠĠĠĠĠĠ Ġpermissions . addAll ( get Rank (). get Comp o unded Permissions ()) ĊĊĠĠĠĠĠĠĠ ĠArrayList ( this . gr ants ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġgrant Ġ-> Ġgrant . rank . display Order Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġgrant Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant . isActive ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions . addAll ( grant . rank . get Comp o unded Permissions ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpermissions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Rank (): ĠRank Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Grant : ĠProfile Grant ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( grant Ġin Ġthis . gr ants ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant . isActive ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Grant Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Grant Ġ= Ġgrant ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Grant . rank . display Order Ġ> Ġgrant . rank . display Order ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Grant Ġ= Ġgrant ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Grant ?. rank Ġ?: ĠSt ark Core . instance . rank Handler . getDefault Rank () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Player List Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Rank (). player List Prefix . replace ('& ', ĠSt ark Core . COLOR _ CODE _ CHAR ) Ġ+ ĠSt ark Core . instance . uuid Cache . name ( this . uuid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget DisplayName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Rank (). prefix . replace ('& ', ĠSt ark Core . COLOR _ CODE _ CHAR ) Ġ+ ĠSt ark Core . instance . uuid Cache . name ( this . uuid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Cle ared DisplayName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSt ark Core . instance . uuid Cache . name ( this . uuid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate ( document : ĠDocument ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfresh Gr ants Ġ= ĠArrayList < Profile Grant >() ĊĠĠĠĠĠĠĠ Ġval Ġfresh P un ish ments Ġ= ĠArrayList < Profile P un ish ment >() ĊĊĊĠĠĠĠĠĠĠ Ġdocument . getList (" gr ants ", ĠDocument :: class . java ). forEach Ġgrant ForEach @ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrant Ġ= ĠProfile Grant Serializer . deserialize ( it ) Ġ?: Ġreturn @ grant ForEach ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfresh Gr ants . add ( grant ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( pun ish ment Document Ġin Ġdocument . getList (" pun ish ments ", ĠDocument :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfresh P un ish ments . add ( Profile P un ish ment Serializer . deserialize ( pun ish ment Document )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . userName Ġ= Ġdocument . getString (" userName ") ĊĠĠĠĠĠĠĠ Ġthis . gr ants Ġ= Ġfresh Gr ants ĊĠĠĠĠĠĠĠ Ġthis . pun ish ments Ġ= Ġfresh P un ish ments ĊĠĠĠĠĠĠĠ Ġthis . date Joined Ġ= ĠDate ( document . getLong (" date Joined ") !! ) ĊĠĠĠĠĠĠĠ Ġthis . ip Addresses Ġ= Ġdocument . getList (" ip Addresses ", ĠString :: class . java ). to HashSet () ĊĠĠĠĠĠĠĠ Ġthis . player Per ms Ġ= Ġdocument . getList (" player perms ", ĠString :: class . java ). distinct (). to Mutable List () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( document . containsKey (" tag ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtagName Ġ= Ġdocument . getString (" tag ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . tag Ġ= ĠSt ark Core . instance . tag Handler . get ByName ( tagName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Active P un ish ment ( type : ĠProfile P un ish ment Type ): ĠProfile P un ish ment ? Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( pun ish ment Ġin Ġthis . pun ish ments ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pun ish ment . type Ġ== Ġtype Ġ&& Ġp un ish ment . isActive ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġp un ish ment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Active P un ish ments (): ĠProfile P un ish ment ? Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( pun ish ment Ġin Ġthis . pun ish ments ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pun ish ment . isActive ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġp un ish ment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Permission ( permission : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Comp o unded Permissions (). contains ( permission ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Staff (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( grant Ġin Ġgr ants ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant . isActive () Ġ&& Ġgrant . rank . staff ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġapply () Ċ Ċ } Ċ