From 420b5842d43ea4aece62401763eb58b956eb4dd1 Mon Sep 17 00:00:00 2001 From: wsor4035 <24964441+wsor4035@users.noreply.github.com> Date: Sun, 3 Dec 2023 16:27:40 -0500 Subject: [PATCH] add _drop key, fixes https://github.com/mt-mods/controls/issues/3 --- init.lua | 38 ++++++++++++++++++++++++++++++++++++++ readme.md | 11 +++++++++-- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index c38f0dc..595888a 100644 --- a/init.lua +++ b/init.lua @@ -76,6 +76,44 @@ minetest.register_globalstep(function(dtime) end end) +--special keys +minetest.register_on_mods_loaded(function() + for name, def in pairs(minetest.registered_nodes) do + local old_node_drop = def.on_drop + local on_drop = function(itemstack, dropper, ...) + for _, callback in pairs(controls.registered_on_press) do + callback(dropper, "_drop") + end + return old_node_drop(itemstack, dropper, unpack({...})) + end + minetest.override_item(name, { + on_drop = on_drop + }) + end + + local old_reg_node = minetest.register_node + function minetest.register_node(name, def) + if def.on_drop then + local old_node_drop = def.on_drop + def.on_drop = function(itemstack, dropper, ...) + for _, callback in pairs(controls.registered_on_press) do + callback(dropper, "_drop") + end + return old_node_drop(itemstack, dropper, unpack({...})) + end + else + def.on_drop = function(itemstack, dropper, ...) + for _, callback in pairs(controls.registered_on_press) do + callback(dropper, "_drop") + end + return minetest.item_drop(itemstack, dropper, unpack({...})) + end + end + + old_reg_node(name, def) + end +end) + --tests if(controls.testsmode) then dofile(controls.modpath .. "/test.lua") diff --git a/readme.md b/readme.md index 108f4a1..6f7b860 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,5 @@ # api -note: supports all keys minetest does - ```lua controls.register_on_press(function(player, key) -- called on key down @@ -22,4 +20,13 @@ controls.register_on_release(function(player, key, length) -- @key: key pressed -- @length: length of time key was held in seconds end) +``` + +# keys + +supports all the keys minetest does + +special keys: +``` +@_drop: called when a player drops an item ``` \ No newline at end of file