]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
Added minetest.drop_selected_item(), Improved AutoEject
authorElias Fleckenstein <eliasfleckenstein@web.de>
Mon, 5 Oct 2020 20:33:32 +0000 (22:33 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Mon, 5 Oct 2020 20:33:32 +0000 (22:33 +0200)
clientmods/dragonfire/inventory/autoeject.lua
doc/client_lua_api.txt
src/script/lua_api/l_client.cpp
src/script/lua_api/l_client.h

index bd2eb0d47043058c96e611dd131b14bc1f21537f..5e61b1ef9fc3d26750e91ae36c7a5946e1868152 100644 (file)
@@ -1,23 +1,14 @@
-local old_index
-
 minetest.register_globalstep(function()
-       if inventory_mod.nodrop then
-               inventory_mod.nodrop = false
-               return
-       end
-       local player = minetest.localplayer
-       if old_index then
-               player:set_wield_index(old_index)
-               minetest.set_keypress("drop", false)
-               old_index = nil
-       elseif minetest.settings:get_bool("autoeject") then
+       if minetest.settings:get_bool("autoeject") then
+               local player = minetest.localplayer
                local list = (minetest.settings:get("eject_items") or ""):split(",")
                local inventory = minetest.get_inventory("current_player")
                for index, stack in pairs(inventory.main) do
                        if table.indexof(list, stack:get_name()) ~= -1 then
-                               old_index = player:get_wield_index()
+                               local old_index = player:get_wield_index()
                                player:set_wield_index(index - 1)
-                               minetest.set_keypress("drop", true) -- causes to drop tools selected using autotool sometimes, just 
+                               minetest.drop_selected_item()
+                               player:set_wield_index(old_index)
                                return
                        end
                end
index 636fc63c7680e3442bb4be0d3862d6e551dabcdb..85fe1005df2d56769d9ff5c921b1702faa1d1636 100644 (file)
@@ -876,6 +876,8 @@ Call these functions only at load time!
     * Alias for `minetest.send_chat_message("/" .. cmd .. " " .. param)`
 * `minetest.clear_out_chat_queue()`
     * Clears the out chat queue
+* `minetest.drop_selected_item()`
+    * Drops the selected item
 * `minetest.localplayer`
     * Reference to the LocalPlayer object. See [`LocalPlayer`](#localplayer) class reference for methods.
 
index b9a8f77a87bab396ed6ee146cf237d922dd90621..56ce6471c4411f508e724165e6ea5bc8643299f2 100644 (file)
@@ -496,6 +496,13 @@ int ModApiClient::l_set_keypress(lua_State *L)
        return 1;
 }
 
+// drop_selected_item()
+int ModApiClient::l_drop_selected_item(lua_State *L)
+{
+       g_game->dropSelectedItem();
+       return 0;
+}
+
 void ModApiClient::Initialize(lua_State *L, int top)
 {
        API_FCT(get_current_modname);
@@ -528,4 +535,5 @@ void ModApiClient::Initialize(lua_State *L, int top)
        API_FCT(dig_node);
        API_FCT(get_inventory);
        API_FCT(set_keypress);
+       API_FCT(drop_selected_item);
 }
index 1ea57f9ee2f8321c281cd69bd922320c9b9dd426..ebce7c02a7e8c532a8ebe43b622e66b7eb75d232 100644 (file)
@@ -117,8 +117,11 @@ class ModApiClient : public ModApiBase
        // get_inventory(location)
        static int l_get_inventory(lua_State *L);
        
-       // l_set_keypress(key_setting, pressed)
+       // set_keypress(key_setting, pressed)
        static int l_set_keypress(lua_State *L);
+       
+       // drop_selected_item()
+       static int l_drop_selected_item(lua_State *L);
 public:        
        static void Initialize(lua_State *L, int top);
 };