package Ġdev . he light . hop per . utilities Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġdev . he light . hop per . Hop per Sp ig ot Hook Ċ import Ġorg . bukkit . Name spaced Key Ċ import Ġorg . bukkit . persistence . Persistent Data Container Ċ import Ġorg . bukkit . persistence . Persistent DataType Ċ import Ġjava . util .* Ċ Ċ object ĠPersistence Ġ{ ĊĊĠĠĠ Ġfun Ġ< K Ġ: ĠPersistent Data Container ?> Ġstore ( key : ĠString , Ġvalue : ĠString , Ġk : ĠK ): ĠK Ġ{ ĊĠĠĠĠĠĠĠ Ġk !!. set ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġkey . lowercase ( Locale . getDefault ())), ĠPersistent DataType . STRING , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġreturn Ġk ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< V Ġ: ĠPersistent Data Container ?> Ġload ( key : ĠString , Ġv : ĠV ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġv !!. get ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġkey . lowercase ( Locale . getDefault ())), ĠPersistent DataType . STRING ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< V Ġ: ĠPersistent Data Container ?> Ġhas ( key : ĠString , Ġv : ĠV ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġv !!. has ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġkey . lowercase ( Locale . getDefault ())), ĠPersistent DataType . STRING ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< V Ġ: ĠPersistent Data Container ?> Ġhas ( clazz : ĠClass <* >, Ġv : ĠV ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġv !!. has ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġclazz . name . lowercase ( Locale . getDefault ())), ĠPersistent DataType . STRING ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< K Ġ: ĠPersistent Data Container ?> Ġstore Json ( o : ĠAny , Ġk : ĠK ): ĠK Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġk !!. set ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġo . java Class . name . lowercase ( Locale . getDefault ())), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPersistent DataType . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgson . toJson ( o )) ĊĠĠĠĠĠĠĠ Ġreturn Ġk ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< K Ġ: ĠPersistent Data Container ?> Ġstore Json ( key : ĠString , Ġo : ĠAny ?, Ġk : ĠK ): ĠK Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġk !!. set ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġkey . lowercase ( Locale . getDefault ())), ĠPersistent DataType . STRING , Ġgson . toJson ( o )) ĊĠĠĠĠĠĠĠ Ġreturn Ġk ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< K , ĠV Ġ: ĠPersistent Data Container ?> Ġload Json ( clazz : ĠClass < K >, Ġv : ĠV ): ĠK ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgson . fromJson ( v !!. get ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġclazz . name . lowercase ( Locale . getDefault ())), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPersistent DataType . STRING ), Ġclazz ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< K , ĠV Ġ: ĠPersistent Data Container ?> Ġload Json ( key : ĠString , Ġclazz : ĠClass < K > ?, Ġv : ĠV ): ĠK ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgson . fromJson ( v !!. get ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġkey . lowercase ( Locale . getDefault ())), ĠPersistent DataType . STRING ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclazz ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġignored . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/// ĊĊĠĠĠ Ġfun Ġ< K Ġ: ĠPersistent Data Container > ĠK . store ( key : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġkey . lowercase ( Locale . getDefault ())), ĠPersistent DataType . STRING , Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< V Ġ: ĠPersistent Data Container > ĠV . load ( key : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġkey . lowercase ( Locale . getDefault ())), ĠPersistent DataType . STRING ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< V Ġ: ĠPersistent Data Container > ĠV . has ( key : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhas ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġkey . lowercase ( Locale . getDefault ())), ĠPersistent DataType . STRING ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< V Ġ: ĠPersistent Data Container > ĠV . has ( clazz : ĠClass < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhas ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġclazz . name . lowercase ( Locale . getDefault ())), ĠPersistent DataType . STRING ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< K Ġ: ĠPersistent Data Container > ĠK . store Json ( o : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġset ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġo . java Class . name . lowercase ( Locale . getDefault ())), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPersistent DataType . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgson . toJson ( o )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< K Ġ: ĠPersistent Data Container > ĠK . store Json ( key : ĠString , Ġo : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġset ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġkey . lowercase ( Locale . getDefault ())), ĠPersistent DataType . STRING , Ġgson . toJson ( o )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< K , ĠV Ġ: ĠPersistent Data Container > ĠV . load Json ( clazz : ĠClass < K >): ĠK ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgson . fromJson ( get ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġclazz . name . lowercase ( Locale . getDefault ())), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPersistent DataType . STRING ), Ġclazz ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< K , ĠV Ġ: ĠPersistent Data Container > ĠV . load Json ( key : ĠString , Ġclazz : ĠClass < K >? ): ĠK ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgson . fromJson ( get ( Name spaced Key ( Hop per Sp ig ot Hook . plugin , Ġkey . lowercase ( Locale . getDefault ())), ĠPersistent DataType . STRING ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclazz ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġignored . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }