]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/content_sao.cpp
Don't leak textures all over the place
[dragonfireclient.git] / src / content_sao.cpp
index e9b5782a9b53b93dfde890e53eb63ea00b43ee53..7526e03533bc1829bea4f9f9c5111f6ec99dce37 100644 (file)
@@ -292,13 +292,6 @@ class ItemSAO : public ServerActiveObject
                        ServerActiveObject *puncher,
                        float time_from_last_punch)
        {
-               // Directly delete item in creative mode
-               if(g_settings->getBool("creative_mode") == true)
-               {
-                       m_removed = true;
-                       return 0;
-               }
-               
                // Take item into inventory
                ItemStack item = createItemStack();
                Inventory *inv = puncher->getInventory();
@@ -383,9 +376,9 @@ LuaEntitySAO::~LuaEntitySAO()
        }
 }
 
-void LuaEntitySAO::addedToEnvironment()
+void LuaEntitySAO::addedToEnvironment(u32 dtime_s)
 {
-       ServerActiveObject::addedToEnvironment();
+       ServerActiveObject::addedToEnvironment(dtime_s);
        
        // Create entity from name
        lua_State *L = m_env->getLua();
@@ -397,7 +390,7 @@ void LuaEntitySAO::addedToEnvironment()
                // Initialize HP from properties
                m_hp = m_prop.hp_max;
                // Activate entity, supplying serialized state
-               scriptapi_luaentity_activate(L, m_id, m_init_state.c_str());
+               scriptapi_luaentity_activate(L, m_id, m_init_state.c_str(), dtime_s);
        }
 }
 
@@ -764,6 +757,8 @@ PlayerSAO::PlayerSAO(ServerEnvironment *env_, Player *player_, u16 peer_id_,
        m_last_good_position(0,0,0),
        m_last_good_position_age(0),
        m_time_from_last_punch(0),
+       m_nocheat_dig_pos(32767, 32767, 32767),
+       m_nocheat_dig_time(0),
        m_wield_index(0),
        m_position_not_sent(false),
        m_armor_groups_sent(false),
@@ -810,9 +805,9 @@ std::string PlayerSAO::getDescription()
 }
 
 // Called after id has been set and has been inserted in environment
-void PlayerSAO::addedToEnvironment()
+void PlayerSAO::addedToEnvironment(u32 dtime_s)
 {
-       ServerActiveObject::addedToEnvironment();
+       ServerActiveObject::addedToEnvironment(dtime_s);
        ServerActiveObject::setBasePosition(m_player->getPosition());
        m_player->setPlayerSAO(this);
        m_player->peer_id = m_peer_id;
@@ -874,8 +869,9 @@ void PlayerSAO::step(float dtime, bool send_recommended)
        }
 
        m_time_from_last_punch += dtime;
+       m_nocheat_dig_time += dtime;
        
-       if(m_is_singleplayer)
+       if(m_is_singleplayer || g_settings->getBool("disable_anticheat"))
        {
                m_last_good_position = m_player->getPosition();
                m_last_good_position_age = 0;
@@ -888,7 +884,8 @@ void PlayerSAO::step(float dtime, bool send_recommended)
                        NOTE: Actually the server should handle player physics like the
                        client does and compare player's position to what is calculated
                        on our side. This is required when eg. players fly due to an
-                       explosion.
+                       explosion. Altough a node-based alternative might be possible
+                       too, and much more lightweight.
                */
 
                float player_max_speed = 0;
@@ -1139,16 +1136,6 @@ void PlayerSAO::disconnected()
        }
 }
 
-void PlayerSAO::createCreativeInventory()
-{
-       if(m_inventory != &m_player->inventory)
-               delete m_inventory;
-
-       m_inventory = new Inventory(m_player->inventory);
-       m_inventory->clearContents();
-       scriptapi_get_creative_inventory(m_env->getLua(), this);
-}
-
 std::string PlayerSAO::getPropertyPacket()
 {
        m_prop.is_visible = (getHP() != 0);