1
0

denotch map converter can now parse without creating segfaults or unknown tag errors.

git-svn-id: http://mc-server.googlecode.com/svn/trunk@31 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
admin@omencraft.com 2011-10-31 02:56:12 +00:00
parent 2e7781f7f0
commit 20d391764c
3 changed files with 17 additions and 3 deletions

View File

@ -74,7 +74,7 @@ int main () {
quicksort(toffarr, 0, 1023); //sort the array from smallest to larget offset locations so we only have to read through the file once.
for ( short ia = 0; ia < 1024; ia++ ) {//a region file can hold a maximum of 1024 chunks (32*32)
if (ia < 35 ) { //only run chunk # 3
if (ia < 3500 ) { //only run chunk # 3
if (toffarr[ia] < 8192) { //offsets of less than 8192 are impossible. 0 means there is no chunk in a particular location.
if (toffarr[ia] > 0) { cout << "ERROR 2s31 IN COLLECTED CHUNK OFFSETS " << toffarr[ia]; fclose(f); return false; } //values between 0 and 8192 should be impossible.
//This file does not contain the max 1024 chunks, skip until we get to the first
@ -130,7 +130,7 @@ int main () {
//testing of nbtparser.
cNBTData* NBTData = new cNBTData(BlockData, (int)DestSize);
NBTData->ParseData();
//NBTData->PrintData();
NBTData->PrintData();
NBTData->OpenCompound("");
NBTData->OpenCompound("Level"); // You need to open the right compounds before you can access the data in it

View File

@ -46,7 +46,7 @@ cNBTData::cNBTData( char* a_Buffer, unsigned int a_BufferSize )
tm = false; //tm to true will print more information for test mode
if (m_BufferSize == 82659) {
tm = true;
// tm = true;
}
m_CurrentCompound = this;
@ -552,12 +552,26 @@ void cNBTData::ParseList( bool a_bNamed )
OpenList( Name );
for(int i = 0; i < Length && m_Index < m_BufferSize; i++)
{
if( (int)TagType == 6 ) {
cNBTData::ParseDouble( false );
} else if( (int)TagType == 5 ) {
cNBTData::ParseFloat( false );
} else
if( m_ParseFunctions[ TagType ] )
{
(*this.*m_ParseFunctions[ TagType ] )(false);
m_Index++;
}
}
if (tm) {
printf("List Done Name, tag, length: %s, %i, %i\n", Name.c_str(), (int)TagType, Length);
}
CloseList();
}

Binary file not shown.