diff options
author | worktycho <work.tycho@gmail.com> | 2014-03-14 15:34:29 +0100 |
---|---|---|
committer | worktycho <work.tycho@gmail.com> | 2014-03-14 15:34:29 +0100 |
commit | b8cffe569f8bf6e3379f1c45d9e32a986efac25e (patch) | |
tree | 4688783dbca9b7a6f0ef662926d07e4c5edc25d6 /src/WorldStorage/FireworksSerializer.cpp | |
parent | cPlugin:BindConsoleCommand can be called statically. (diff) | |
parent | Merge branch 'master' into warnings (diff) | |
download | cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.tar cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.tar.gz cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.tar.bz2 cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.tar.lz cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.tar.xz cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.tar.zst cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.zip |
Diffstat (limited to 'src/WorldStorage/FireworksSerializer.cpp')
-rw-r--r-- | src/WorldStorage/FireworksSerializer.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/WorldStorage/FireworksSerializer.cpp b/src/WorldStorage/FireworksSerializer.cpp index 1f05b470d..3c97ae0a2 100644 --- a/src/WorldStorage/FireworksSerializer.cpp +++ b/src/WorldStorage/FireworksSerializer.cpp @@ -90,30 +90,34 @@ void cFireworkItem::ParseFromNBT(cFireworkItem & a_FireworkItem, const cParsedNB if (ExplosionName == "Colors") { // Divide by four as data length returned in bytes - int DataLength = a_NBT.GetDataLength(explosiontag) / 4; + int DataLength = a_NBT.GetDataLength(explosiontag); + // round to the next highest multiple of four + DataLength -= DataLength % 4; if (DataLength == 0) { continue; } - const int * ColourData = (const int *)(a_NBT.GetData(explosiontag)); - for (int i = 0; i < DataLength; i++) + const char * ColourData = (a_NBT.GetData(explosiontag)); + for (int i = 0; i < DataLength; i += 4 /* Size of network int*/) { - a_FireworkItem.m_Colours.push_back(ntohl(ColourData[i])); + a_FireworkItem.m_Colours.push_back(GetBEInt(ColourData + i)); } } else if (ExplosionName == "FadeColors") { int DataLength = a_NBT.GetDataLength(explosiontag) / 4; + // round to the next highest multiple of four + DataLength -= DataLength % 4; if (DataLength == 0) { continue; } - const int * FadeColourData = (const int *)(a_NBT.GetData(explosiontag)); - for (int i = 0; i < DataLength; i++) + const char * FadeColourData = (a_NBT.GetData(explosiontag)); + for (int i = 0; i < DataLength; i += 4 /* Size of network int*/) { - a_FireworkItem.m_FadeColours.push_back(ntohl(FadeColourData[i])); + a_FireworkItem.m_FadeColours.push_back(GetBEInt(FadeColourData + i)); } } } |