package Ġrh mod ding . tick omp iler . api Ċ Ċ import Ġrh mod ding . tick omp iler . game put ter . Game P utter Ċ import Ġrh mod ding . tick omp iler . util . get Directories Ċ import Ġjava . io .* Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . Byte Order Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Paths ĊĊ Ċ object ĠPack Command Ġ: ĠCommand (" pack ", Ġ" p ") Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġcommand Info : ĠCommand Info Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommand Info ("< input Ġdir > Ġ< base Ġfile > Ġ[ output Ġfile ]", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" Pack Ġbinary Ġand Ġtempo Ġfiles Ġfrom Ġa Ġspecified Ġdirectory Ġinto Ġthe Ġoutput Ġfile , Ġusing Ġthe Ġspecified Ġbase Ġfile .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġbase Ġfile Ġcan Ġbe Ġobtained Ġfrom Ġextraction .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Files Ġmust Ġbe Ġwith Ġthe Ġfile Ġextension Ġ. bin Ġ( little - endian ) Ġor Ġ. temp o ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġoutput Ġfile Ġwill Ġbe Ġoverwritten Ġwithout Ġwarning .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" If Ġthe Ġoutput Ġis Ġnot Ġspecified , Ġit Ġwill Ġdefault Ġto Ġ\" C 0 0 . bin \" ."), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ()) ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( args : ĠList < String >, Ġflags Obj : ĠCommands . Flags , Ġflags : ĠList < String >, ĠindexOf First Argument : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput : ĠPrint Stream ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdirs Ġ= Ġget Directories ( flags Obj , Ġargs , Ġ{ Ġit . endsWith (". bin ") Ġ|| Ġit . endsWith (". temp o ") Ġ}, Ġ"", Ġtrue ). input ĊĠĠĠĠĠĠĠ Ġval Ġbase Ġ= ĠFiles . read All Bytes ( Paths . get ( args [ indexOf First Argument Ġ+ Ġ 1 ])) ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġbase . size ĊĠĠĠĠĠĠĠ Ġval Ġbase Buffer Ġ= ĠByteBuffer . wrap ( base ). order ( Byte Order . LIT TLE _ ENDIAN ) ĊĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ Ġval Ġput ter Ġ= ĠGame P utter ĊĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġdirs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . println (" Pack ing Ġ${ file . name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontents Ġ= ĠFiles . read All Bytes ( file . to Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġints Ġ= Ġif Ġ( file . path . endsWith (". bin ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ter . put Game ( base Buffer , ĠByteBuffer . wrap ( contents ). order ( Byte Order . LIT TLE _ ENDIAN ), Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ter . put Temp o ( base Buffer , Ġcontents . toString ( Charset . forName (" UTF - 8 ")), Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ+= Ġints . size Ġ* Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbyte Buffer Ġ= ĠByteBuffer . allocate ( ints . size Ġ* Ġ 4 ). order ( Byte Order . LIT TLE _ ENDIAN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġint Buf Ġ= Ġbyte Buffer . as Int Buffer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint Buf . put ( ints . to IntArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarr Ġ= ĠByteArray ( ints . size Ġ* Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbyte Buffer [ arr , Ġ 0 , Ġints . size Ġ* Ġ 4 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . write ( arr ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( when Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠindexOf First Argument Ġ+ Ġ 2 Ġ< Ġargs . size Ġ-> Ġargs [ indexOf First Argument Ġ+ Ġ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" C 0 0 . bin " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġf os Ġ= ĠFileOutputStream ( file ) ĊĠĠĠĠĠĠĠ Ġf os . write ( base Buffer . array ()) ĊĠĠĠĠĠĠĠ Ġf os . write ( out . toByteArray ()) ĊĠĠĠĠĠĠĠ Ġf os . close () ĊĠĠĠ Ġ} Ċ Ċ }