aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-07-22 18:51:49 +0300
committerPerttu Ahola <celeron55@gmail.com>2011-07-22 18:51:49 +0300
commitf706644a50b9bc62de39f571b044c7f7c55078e4 (patch)
tree09c766137687a1c28f1a3e787ceacbb166dcd24c /src
parent2b39be44e45cbd0b00eb954d06d55d8164f311a4 (diff)
downloadminetest-f706644a50b9bc62de39f571b044c7f7c55078e4.tar.gz
minetest-f706644a50b9bc62de39f571b044c7f7c55078e4.tar.bz2
minetest-f706644a50b9bc62de39f571b044c7f7c55078e4.zip
Fixed the problem of <=r548 clients fucking up maps on >=r549 servers. Also, already fucked up maps are now loaded correctly.
Diffstat (limited to 'src')
-rw-r--r--src/mapnode.cpp38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/mapnode.cpp b/src/mapnode.cpp
index b9dfd35b0..1e9b64989 100644
--- a/src/mapnode.cpp
+++ b/src/mapnode.cpp
@@ -267,10 +267,10 @@ void MapNode::serialize(u8 *dest, u8 version)
{
// In these versions, CONTENT_IGNORE and CONTENT_AIR
// are 255 and 254
- if(d == CONTENT_IGNORE)
- d = 255;
- else if(d == CONTENT_AIR)
- d = 254;
+ if(actual_d == CONTENT_IGNORE)
+ actual_d = 255;
+ else if(actual_d == CONTENT_AIR)
+ actual_d = 254;
}
if(version == 0)
@@ -317,17 +317,25 @@ void MapNode::deSerialize(u8 *source, u8 version)
d = source[0];
param = source[1];
param2 = source[2];
-
- // Convert from old version to new
- if(version <= 18)
- {
- // In these versions, CONTENT_IGNORE and CONTENT_AIR
- // are 255 and 254
- if(d == 255)
- d = CONTENT_IGNORE;
- else if(d == 254)
- d = CONTENT_AIR;
- }
+ }
+
+ // Convert from old version to new
+ if(version <= 18)
+ {
+ // In these versions, CONTENT_IGNORE and CONTENT_AIR
+ // are 255 and 254
+ if(d == 255)
+ d = CONTENT_IGNORE;
+ else if(d == 254)
+ d = CONTENT_AIR;
+ }
+ // version 19 is fucked up with sometimes the old values and sometimes not
+ if(version == 19)
+ {
+ if(d == 255)
+ d = CONTENT_IGNORE;
+ else if(d == 254)
+ d = CONTENT_AIR;
}
}