package Ġsite . peg asis . minecraft . fabric . simple _ coordinates _ list Ċ Ċ import Ġkotlinx . serialization .* Ċ import Ġkotlinx . serialization . descriptors . Serial Descriptor Ċ import Ġkotlinx . serialization . encoding . Decoder Ċ import Ġkotlinx . serialization . encoding . Encoder Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġnet . fabric mc . loader . api . Fabric Loader Ċ import Ġnet . minecraft . client . Minecraft Client Ċ import Ġnet . minecraft . util . World Save Path Ċ import Ġnet . minecraft . util . math . Vec 3 d Ċ import Ġjava . io . File Ċ Ċ @ Serializable Ċ @ Serial Name (" Vec 3 d ") Ċ data Ġclass ĠVec 3 d Sur rogate ( val Ġx : ĠDouble , Ġval Ġy : ĠDouble , Ġval Ġz : ĠDouble ) Ċ Ċ object ĠVec 3 d Serializer Ġ: ĠK Serializer < Vec 3 d > Ġ{ ĊĠĠĠ Ġoverride Ġval Ġdescriptor : ĠSerial Descriptor Ġ= ĠVec 3 d Sur rogate . serializer (). descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠVec 3 d ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsur rogate Ġ= ĠVec 3 d Sur rogate ( value . x , Ġvalue . y , Ġvalue . z ) ĊĠĠĠĠĠĠĠ Ġencoder . encode Serializable Value ( Vec 3 d Sur rogate . serializer (), Ġsur rogate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( decoder : ĠDecoder ): ĠVec 3 d Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsur rogate Ġ= Ġdecoder . decode Serializable Value ( Vec 3 d Sur rogate . serializer ()) ĊĠĠĠĠĠĠĠ Ġreturn ĠVec 3 d ( sur rogate . x , Ġsur rogate . y , Ġsur rogate . z ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Serializable Ċ sealed Ġclass ĠWorld Identifier Ġ{ ĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġdata Ġclass ĠLocal ( val Ġsave Dir : ĠString , Ġval Ġworld Name : ĠString ) Ġ: ĠWorld Identifier () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget JSON File () Ġ= ĠFile ( save Dir , Ġ"${ Main . MOD _ ID }/${ world Name . to Safe Base 6 4 ()}. json ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġdata Ġclass ĠServer ( val Ġserver Name : ĠString , Ġval Ġserver Address : ĠString , Ġval Ġworld Name : ĠString ) Ġ: ĠWorld Identifier () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget JSON File (): ĠFile Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ"${ server Name } ||| ${ server Address } ||| ${ world Name }". to Safe Base 6 4 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFile ( Fabric Loader . getInstance (). config Dir . toString (), Ġ"${ Main . MOD _ ID }/ servers /${ name }. json ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġget JSON File (): ĠFile ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( client : ĠMinecraft Client ): ĠWorld Identifier Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( client . is Integr ated Server Running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . server !!. get Save Path ( World Save Path . ROOT ). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . world !!. registry Key . value . path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġserver Info Ġ= Ġclient . current Server Entry !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠServer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver Info . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver Info . address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . world !!. registry Key . value . path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Serializable Ċ data Ġclass ĠCoordinates (@ Serializable ( Vec 3 d Serializer :: class ) Ġval Ġpos : ĠVec 3 d , Ġval Ġlabel : ĠString ) Ċ Ċ object ĠData Store Ġ{ ĊĠĠĠ Ġprivate Ġval Ġserializer Ġ= ĠJson Ġ{ ĊĠĠĠĠĠĠĠ Ġallow Structured Map Keys Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġcoordinate Cache Ġ= Ġhash Map Of < World Identifier , ĠArrayList < Coordinates >>() ĊĊĠĠĠ Ġfun Ġget Coordinates List ( identifier : ĠWorld Identifier ): ĠList < Coordinates > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( coordinate Cache [ identifier ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson File Ġ= Ġidentifier . get JSON File () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json File . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoordinate List : ĠArrayList < Coordinates > Ġ= Ġserializer . decode FromString ( json File . read Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoordinate Cache [ identifier ] Ġ= Ġcoordinate List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( coordinate Cache [ identifier ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoordinate Cache [ identifier ] Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcoordinate Cache [ identifier ] !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Coordinates ( identifier : ĠWorld Identifier , Ġcoordinates : ĠCoordinates ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlist Ġ= Ġcoordinate Cache [ identifier ] ĊĠĠĠĠĠĠĠ Ġif Ġ( list Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoordinate Cache [ identifier ] Ġ= Ġlist ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlist . add ( coordinates ) ĊĊĠĠĠĠĠĠĠ Ġsave ( identifier ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Coordinates ( identifier : ĠWorld Identifier , Ġcoordinates : ĠCoordinates ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcoordinate Cache [ identifier ] !!. remove ( coordinates ) ĊĊĠĠĠĠĠĠĠ Ġsave ( identifier ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave ( identifier : ĠWorld Identifier ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson File Ġ= Ġidentifier . get JSON File () ĊĠĠĠĠĠĠĠ Ġif Ġ(! json File . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson File . parent File ?. mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson File . createNew File () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġjson File . write Text ( serializer . encode ToString ( coordinate Cache [ identifier ])) ĊĠĠĠ Ġ} Ċ } Ċ