]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/nodedef.cpp
Add disable_jump and fall_damage_add_percent node groups
[dragonfireclient.git] / src / nodedef.cpp
index 1b85a9558e606e2fbd144bc0e6ab2bbece8f5fa0..d644dc229d2c4af9f3fbf3edc073aba6f818aaee 100644 (file)
@@ -216,7 +216,7 @@ void ContentFeatures::reset()
 
 void ContentFeatures::serialize(std::ostream &os)
 {
-       writeU8(os, 4); // version
+       writeU8(os, 5); // version
        os<<serializeString(name);
        writeU16(os, groups.size());
        for(ItemGroupList::const_iterator
@@ -267,7 +267,7 @@ void ContentFeatures::serialize(std::ostream &os)
 void ContentFeatures::deSerialize(std::istream &is)
 {
        int version = readU8(is);
-       if(version != 4 && version != 3)
+       if(version != 5)
                throw SerializationError("unsupported ContentFeatures version");
        name = deSerializeString(is);
        groups.clear();
@@ -281,22 +281,12 @@ void ContentFeatures::deSerialize(std::istream &is)
        visual_scale = readF1000(is);
        if(readU8(is) != 6)
                throw SerializationError("unsupported tile count");
-       for(u32 i=0; i<6; i++){
-               if(version == 4)
-                       tiledef[i].deSerialize(is);
-               else if(version == 3) // Allow connecting to older servers
-                       tiledef[i].name = deSerializeString(is);
-       }
+       for(u32 i=0; i<6; i++)
+               tiledef[i].deSerialize(is);
        if(readU8(is) != CF_SPECIAL_COUNT)
                throw SerializationError("unsupported CF_SPECIAL_COUNT");
-       for(u32 i=0; i<CF_SPECIAL_COUNT; i++){
-               if(version == 4){
-                       tiledef_special[i].deSerialize(is);
-               } else if(version == 3){ // Allow connecting to older servers
-                       tiledef_special[i].name = deSerializeString(is);
-                       tiledef_special[i].backface_culling = readU8(is);
-               }
-       }
+       for(u32 i=0; i<CF_SPECIAL_COUNT; i++)
+               tiledef_special[i].deSerialize(is);
        alpha = readU8(is);
        post_effect_color.setAlpha(readU8(is));
        post_effect_color.setRed(readU8(is));
@@ -387,18 +377,9 @@ class CNodeDefManager: public IWritableNodeDefManager
                }
        }
        // CONTENT_IGNORE = not found
-       content_t getFreeId(bool require_full_param2)
+       content_t getFreeId()
        {
-               // If allowed, first search in the large 4-bit-param2 pool
-               if(!require_full_param2){
-                       for(u16 i=0x800; i<=0xfff; i++){
-                               const ContentFeatures &f = m_content_features[i];
-                               if(f.name == "")
-                                       return i;
-                       }
-               }
-               // Then search from the small 8-bit-param2 pool
-               for(u16 i=0; i<=125; i++){
+               for(u32 i=0; i<=0xffff; i++){
                        const ContentFeatures &f = m_content_features[i];
                        if(f.name == "")
                                return i;
@@ -502,16 +483,8 @@ class CNodeDefManager: public IWritableNodeDefManager
                u16 id = CONTENT_IGNORE;
                bool found = m_name_id_mapping.getId(name, id);  // ignore aliases
                if(!found){
-                       // Determine if full param2 is required
-                       bool require_full_param2 = (
-                               def.param_type_2 == CPT2_FULL
-                               ||
-                               def.param_type_2 == CPT2_FLOWINGLIQUID
-                               ||
-                               def.legacy_wallmounted
-                       );
                        // Get some id
-                       id = getFreeId(require_full_param2);
+                       id = getFreeId();
                        if(id == CONTENT_IGNORE)
                                return CONTENT_IGNORE;
                        if(name != "")
@@ -583,8 +556,6 @@ class CNodeDefManager: public IWritableNodeDefManager
                                        f->solidness = 0;
                                } else {
                                        f->solidness = 1;
-                                       if(f->alpha == 255)
-                                               f->solidness = 2;
                                        f->backface_culling = false;
                                }
                                break;