Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
2.0 kB · 65 lines
C++
at master
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465#include "stdafx.h"#include "InputOutputStream.h"#include "NbtIo.h"
CompoundTag *NbtIo::readCompressed(InputStream *in){ MemSect(26); // 4J - this was using a try/finally block DataInputStream dis = DataInputStream(in); // 4J - was new GZIPInputStream as well CompoundTag *ret = NbtIo::read((DataInput *)&dis); dis.close(); MemSect(0); return ret;}
void NbtIo::writeCompressed(CompoundTag *tag, OutputStream *out){ // 4J - this was using a try/finally block // 4J Stu - Buffer output in 1024 byte chunks so that we can allocate properly in the save file BufferedOutputStream bos = BufferedOutputStream( out, 1024 ); DataOutputStream dos = DataOutputStream(&bos); // 4J - was new GZIPOutputStream as well NbtIo::write(tag, &dos); dos.close();}
// Reads tags from a stream created from the input buffer. Doesn't free the data in the source buffer.CompoundTag *NbtIo::decompress(byteArray buffer){ ByteArrayInputStream bais = ByteArrayInputStream(buffer); // 4J - this was using a try/finally block DataInputStream in = DataInputStream(&bais); // 4J - was new GZIPInputStream as well CompoundTag *ret = NbtIo::read((DataInput *)&in); bais.reset(); // This stops the buffer referenced by the input stream from being freed when it goes out of context in.close(); return ret;}
byteArray NbtIo::compress(CompoundTag *tag){ // 4J - this was using a try/finally block ByteArrayOutputStream baos = ByteArrayOutputStream(); DataOutputStream dos = DataOutputStream(&baos); // 4J - was new GZIPOutputStream as well NbtIo::write(tag, &dos);
byteArray ret(baos.buf.length); System::arraycopy(baos.buf,0,&ret,0,baos.buf.length); dos.close(); return ret;}
CompoundTag *NbtIo::read(DataInput *dis){ Tag *tag = Tag::readNamedTag(dis);
if( tag->getId() == Tag::TAG_Compound ) return (CompoundTag *)tag;
if(tag!=NULL) delete tag; // Root tag must be a named compound tag return NULL;}
void NbtIo::write(CompoundTag *tag, DataOutput *dos){ Tag::writeNamedTag(tag, dos);}