]> git.lizzy.rs Git - minetest.git/blobdiff - src/serverremoteplayer.cpp
Add Client::getEnv() and remove some unnecessary wrappers
[minetest.git] / src / serverremoteplayer.cpp
index 8a81f1d2dd2519be19b7a62ff3f0ef95f816c148..667ece7f22c8b0ab85717115ed6ea8ac5bbcd631 100644 (file)
@@ -169,36 +169,32 @@ std::string ServerRemotePlayer::getStaticData()
        return "";
 }
 
-void ServerRemotePlayer::punch(ServerActiveObject *puncher,
+int ServerRemotePlayer::punch(v3f dir,
+               const ToolCapabilities *toolcap,
+               ServerActiveObject *puncher,
                float time_from_last_punch)
 {
-       if(!puncher)
-               return;
+       if(!toolcap)
+               return 0;
        
        // No effect if PvP disabled
        if(g_settings->getBool("enable_pvp") == false){
                if(puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER)
-                       return;
+                       return 0;
        }
        
        // "Material" groups of the player
-       std::map<std::string, int> groups;
-       groups["snappy"] = 1;
+       ItemGroupList groups;
        groups["choppy"] = 2;
+       groups["fleshy"] = 3;
 
-       IItemDefManager *idef = m_env->getGameDef()->idef();
-       ItemStack punchitem = puncher->getWieldedItem();
-       ToolCapabilities tp = punchitem.getToolCapabilities(idef);
-
-       HitParams hitparams = getHitParams(groups, &tp, time_from_last_punch);
+       HitParams hitparams = getHitParams(groups, toolcap, time_from_last_punch);
        
        actionstream<<"Player "<<getName()<<" punched by "
                        <<puncher->getDescription()<<", damage "<<hitparams.hp
                        <<" HP"<<std::endl;
        
        setHP(getHP() - hitparams.hp);
-       punchitem.addWear(hitparams.wear, idef);
-       puncher->setWieldedItem(punchitem);
        
        if(hitparams.hp != 0)
        {
@@ -211,6 +207,8 @@ void ServerRemotePlayer::punch(ServerActiveObject *puncher,
                ActiveObjectMessage aom(getId(), false, os.str());
                m_messages_out.push_back(aom);
        }
+
+       return hitparams.wear;
 }
 
 void ServerRemotePlayer::rightClick(ServerActiveObject *clicker)