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:
parent
2e7781f7f0
commit
20d391764c
@ -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
|
||||
|
||||
|
@ -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.
Loading…
Reference in New Issue
Block a user