package Ġcom . ma ir w un nx . project ess entials . configurations Ċ Ċ import Ġcom . ma ir w un nx . project ess entials . Module Object Ċ import Ġcom . ma ir w un nx . project ess entials . core . api . v 1 . configuration . I Configuration Ċ import Ġcom . ma ir w un nx . project ess entials . core . api . v 1 . helpers . json Instance Ċ import Ġcom . ma ir w un nx . project ess entials . core . api . v 1 . helpers . project Config Directory Ċ import Ġcom . ma ir w un nx . project ess entials . core . api . v 1 . module . Module API Ċ import Ġnet . minecraftforge . fml . server . Server Lifecycle Hooks . getCurrent Server Ċ import Ġorg . apache . logging . log 4 j . Log Manager Ċ import Ġjava . io . File Ċ import Ġjava . io . FileNotFoundException Ċ import Ġjava . time . Duration Ċ import Ġjava . time . Z onedDateTime Ċ Ċ object ĠUser Data Configuration Ġ: ĠI Configuration < UserData Configuration Model > Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLog Manager . getLogger () ĊĠĠĠ Ġprivate Ġvar Ġconfiguration Data Ġ= ĠUser Data Configuration Model () ĊĊĠĠĠ Ġoverride Ġval Ġname Ġ= Ġ" user - data " ĊĠĠĠ Ġoverride Ġval Ġversion Ġ= Ġ 1 ĊĠĠĠ Ġoverride Ġval Ġconfiguration Ġ= Ġtake () ĊĠĠĠ Ġoverride Ġval Ġpath Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġproject Config Directory Ġ+ ĠFile . separator Ġ+ ĠgetCurrent Server (). folder Name Ġ+ ĠFile . separator Ġ+ Ġ" users . json " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Raw Ġ= ĠFile ( path ). read Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration Data Ġ= Ġjson Instance . parse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser Data Configuration Model . serializer (), Ġconfig Raw ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Configuration Ġfile Ġ($ path ) Ġnot Ġfound !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" The Ġdefault Ġconfiguration Ġwill Ġbe Ġused ") ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Loaded Ġlocal Ġuser Ġdata Ġ(${ take (). users . count () }) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Pur ging Ġdata Ġof Ġold Ġusers Ġfor Ġ${ take (). purge Days Delay } Ġdays "). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtake (). users . remove If Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Duration . between ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠZ onedDateTime . parse ( it . last DateTime ), ĠZ onedDateTime . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). to Days () Ġ>= Ġtake (). purge Days Delay ). also Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" Ċ User Ġ${ it . name } Ġwas Ġremoved Ġfrom Ġuser - data . ĠAccount Ġwas Ġinactive Ġfor Ġ${ take (). purge Days Delay } Ġdays . Ċ Removed Ġdata : Ġ$ it ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( Module API . getModule ByName (" basic ") Ġas ĠModule Object ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetCurrent Server (). player List . players . forEach ( it :: save Player Data ) ĊĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĠFile ( path ). parent File . mkdir s () Ġ} ĊĊĠĠĠĠĠĠĠ Ġlogger . info (" Saving Ġconfiguration Ġ`${ name }` ") ĊĠĠĠĠĠĠĠ Ġval Ġraw Ġ= Ġjson Instance . stringify ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Data Configuration Model . serializer (), Ġconfiguration Data ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( path ). write Text ( raw ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠSecurity Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" An Ġerror Ġoccurred Ġwhile Ġsaving Ġ$ name Ġconfiguration ", Ġex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtake () Ġ= Ġconfiguration Data Ċ } Ċ