-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
* 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.
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);
API_FCT(dig_node);
API_FCT(get_inventory);
API_FCT(set_keypress);
+ API_FCT(drop_selected_item);
}
// 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);
};