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.3 kB · 97 lines
C
at master
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798#pragma once#include "compression.h"#include "InputOutputStream.h"using namespace std;
class FileEntry;class ConsoleSaveFile;
class RegionFile{// 4J Stu TEMP FOR TESTINGprivate: FileEntry *fileEntry;
private: static const int VERSION_GZIP = 1; static const int VERSION_DEFLATE = 2; static const int VERSION_XBOX = 3; static const int SECTOR_BYTES = 4096; static const int SECTOR_INTS = SECTOR_BYTES / 4;
static const int CHUNK_HEADER_SIZE = 8; static byteArray emptySector;
File *fileName; //HANDLE file; ConsoleSaveFile *m_saveFile;
int *offsets; int *chunkTimestamps; vector<bool> *sectorFree; int sizeDelta; __int64 _lastModified; bool m_bIsEmpty; // 4J added
public: RegionFile(ConsoleSaveFile *saveFile, File *path); ~RegionFile();
/* the modification date of the region file when it was first opened */ __int64 lastModified();
/* gets how much the region file has grown since it was last checked */ int getSizeDelta();
/* * gets an (uncompressed) stream representing the chunk data returns null if * the chunk is not found or an error occurs */ DataInputStream *getChunkDataInputStream(int x, int z); DataOutputStream *getChunkDataOutputStream(int x, int z);
class ChunkBuffer : public ByteArrayOutputStream { private: RegionFile *rf; int x, z; public: ChunkBuffer( RegionFile *rf, int x, int z ) : ByteArrayOutputStream(8096) { this->rf = rf; this->x = x; this->z = z; } void close() { rf->write(x,z,buf.data,count); } };
/* write a chunk at (x,z) with length bytes of data to disk */protected: void write(int x, int z, byte *data, int length);
/* write a chunk data to the region file at specified sector number */private: void write(int sectorNumber, byte *data, int length, unsigned int compLength); void zero(int sectorNumber, int length); // 4J added
/* is this an invalid chunk coordinate? */ bool outOfBounds(int x, int z);
int getOffset(int x, int z);
public: bool hasChunk(int x, int z);
private: void insertInitialSectors(); // 4J added void setOffset(int x, int z, int offset); void setTimestamp(int x, int z, int value);
public: void writeAllOffsets(); void close();};