mirror of
https://github.com/minetest/minetest.git
synced 2024-12-23 22:52:25 +01:00
Fix NodeDef backwards compatibility to 5.3.0 (#11942)
1. Fixes crashes on older clients when [png is used as base image 2. Fixes liquid type assertion fails on debug builds
This commit is contained in:
parent
4c8c649779
commit
b2eb44afc5
@ -207,7 +207,17 @@ void TileDef::serialize(std::ostream &os, u16 protocol_version) const
|
|||||||
u8 version = 6;
|
u8 version = 6;
|
||||||
writeU8(os, version);
|
writeU8(os, version);
|
||||||
|
|
||||||
os << serializeString16(name);
|
if (protocol_version > 39) {
|
||||||
|
os << serializeString16(name);
|
||||||
|
} else {
|
||||||
|
// Before f018737, TextureSource::getTextureAverageColor did not handle
|
||||||
|
// missing textures. "[png" can be used as base texture, but is not known
|
||||||
|
// on older clients. Hence use "blank.png" to avoid this problem.
|
||||||
|
if (!name.empty() && name[0] == '[')
|
||||||
|
os << serializeString16("blank.png^" + name);
|
||||||
|
else
|
||||||
|
os << serializeString16(name);
|
||||||
|
}
|
||||||
animation.serialize(os, version);
|
animation.serialize(os, version);
|
||||||
bool has_scale = scale > 0;
|
bool has_scale = scale > 0;
|
||||||
u16 flags = 0;
|
u16 flags = 0;
|
||||||
@ -491,7 +501,16 @@ void ContentFeatures::serialize(std::ostream &os, u16 protocol_version) const
|
|||||||
writeU32(os, damage_per_second);
|
writeU32(os, damage_per_second);
|
||||||
|
|
||||||
// liquid
|
// liquid
|
||||||
writeU8(os, liquid_type);
|
LiquidType liquid_type_bc = liquid_type;
|
||||||
|
if (protocol_version <= 39) {
|
||||||
|
// Since commit 7f25823, liquid drawtypes can be used even with LIQUID_NONE
|
||||||
|
// solution: force liquid type accordingly to accepted values
|
||||||
|
if (drawtype == NDT_LIQUID)
|
||||||
|
liquid_type_bc = LIQUID_SOURCE;
|
||||||
|
else if (drawtype == NDT_FLOWINGLIQUID)
|
||||||
|
liquid_type_bc = LIQUID_FLOWING;
|
||||||
|
}
|
||||||
|
writeU8(os, liquid_type_bc);
|
||||||
os << serializeString16(liquid_alternative_flowing);
|
os << serializeString16(liquid_alternative_flowing);
|
||||||
os << serializeString16(liquid_alternative_source);
|
os << serializeString16(liquid_alternative_source);
|
||||||
writeU8(os, liquid_viscosity);
|
writeU8(os, liquid_viscosity);
|
||||||
|
Loading…
Reference in New Issue
Block a user