Fix Lint broken by b662a4577d692329b9ca83525e6039f2ddcd1ac1
[oweals/minetest.git] / src / content_cao.cpp
index e829fc7614dd85d8dfaa863c33e900bc224364f5..2a4acd37344a4ff0ae092323e7998932ee864ffd 100644 (file)
@@ -933,23 +933,30 @@ void GenericCAO::addToScene(scene::ISceneManager *smgr,
                        errorstream<<"GenericCAO::addToScene(): Could not load mesh "<<m_prop.mesh<<std::endl;
        }
        else if(m_prop.visual == "wielditem") {
-               infostream<<"GenericCAO::addToScene(): wielditem"<<std::endl;
-               infostream<<"textures: "<<m_prop.textures.size()<<std::endl;
-               if(m_prop.textures.size() >= 1){
-                       infostream<<"textures[0]: "<<m_prop.textures[0]<<std::endl;
-                       IItemDefManager *idef = m_client->idef();
-                       ItemStack item(m_prop.textures[0], 1, 0, "", idef);
-
-                       m_wield_meshnode = new WieldMeshSceneNode(
-                                       smgr->getRootSceneNode(), smgr, -1);
-                       m_wield_meshnode->setItem(item, m_client);
-
-                       m_wield_meshnode->setScale(v3f(m_prop.visual_size.X/2,
-                                       m_prop.visual_size.Y/2,
-                                       m_prop.visual_size.X/2));
-                       u8 li = m_last_light;
-                       m_wield_meshnode->setColor(video::SColor(255,li,li,li));
+               ItemStack item;
+               infostream << "GenericCAO::addToScene(): wielditem" << std::endl;
+               if (m_prop.wield_item == "") {
+                       // Old format, only textures are specified.
+                       infostream << "textures: " << m_prop.textures.size() << std::endl;
+                       if (m_prop.textures.size() >= 1) {
+                               infostream << "textures[0]: " << m_prop.textures[0]
+                                       << std::endl;
+                               IItemDefManager *idef = m_client->idef();
+                               item = ItemStack(m_prop.textures[0], 1, 0, idef);
+                       }
+               } else {
+                       infostream << "serialized form: " << m_prop.wield_item << std::endl;
+                       item.deSerialize(m_prop.wield_item, m_client->idef());
                }
+               m_wield_meshnode = new WieldMeshSceneNode(smgr->getRootSceneNode(),
+                       smgr, -1);
+               m_wield_meshnode->setItem(item, m_client);
+
+               m_wield_meshnode->setScale(
+                       v3f(m_prop.visual_size.X / 2, m_prop.visual_size.Y / 2,
+                               m_prop.visual_size.X / 2));
+               u8 li = m_last_light;
+               m_wield_meshnode->setColor(video::SColor(255, li, li, li));
        } else {
                infostream<<"GenericCAO::addToScene(): \""<<m_prop.visual
                                <<"\" not supported"<<std::endl;
@@ -1306,7 +1313,7 @@ void GenericCAO::updateTexturePos()
        }
 }
 
-void GenericCAO::updateTextures(const std::string mod)
+void GenericCAO::updateTextures(std::string mod)
 {
        ITextureSource *tsrc = m_client->tsrc();
 
@@ -1645,6 +1652,7 @@ void GenericCAO::processMessage(const std::string &data)
                // these are sent inverted so we get true when the server sends nothing
                bool sneak = !readU8(is);
                bool sneak_glitch = !readU8(is);
+               bool new_move = !readU8(is);
 
 
                if(m_is_local_player)
@@ -1655,6 +1663,7 @@ void GenericCAO::processMessage(const std::string &data)
                        player->physics_override_gravity = override_gravity;
                        player->physics_override_sneak = sneak;
                        player->physics_override_sneak_glitch = sneak_glitch;
+                       player->physics_override_new_move = new_move;
                }
        } else if (cmd == GENERIC_CMD_SET_ANIMATION) {
                // TODO: change frames send as v2s32 value
@@ -1779,7 +1788,7 @@ void GenericCAO::processMessage(const std::string &data)
        } else {
                warningstream << FUNCTION_NAME
                        << ": unknown command or outdated client \""
-                       << cmd << std::endl;
+                       << +cmd << "\"" << std::endl;
        }
 }