From 23bca008317e125659d4b97f29cf13da81a7aecd Mon Sep 17 00:00:00 2001 From: KrystilizeNevaDies <57762380+KrystilizeNevaDies@users.noreply.github.com> Date: Tue, 22 Sep 2020 01:31:45 +1000 Subject: Implement Dropspenser Hook (#4903) * Implement Dropspenser Hook Implemented a hook for dropspensing. HOOK_DROPSPENSE When plugin callback returns true then dropspense is cancelled * Update src/Bindings/PluginManager.h Co-authored-by: peterbell10 * Create OnDropSpense.lua * Fix indent * Forgot include Forgot to include the plugin manager. Although now im confused why it was working on my end without including the plugin manager * Update plugins.lua with dropspense * fix typos * haha notepad++ go brr Co-authored-by: peterbell10 --- Server/Plugins/APIDump/Classes/Plugins.lua | 4 ++++ Server/Plugins/APIDump/Hooks/OnDropSpense.lua | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 Server/Plugins/APIDump/Hooks/OnDropSpense.lua (limited to 'Server/Plugins') diff --git a/Server/Plugins/APIDump/Classes/Plugins.lua b/Server/Plugins/APIDump/Classes/Plugins.lua index bb9848667..63f4172e6 100644 --- a/Server/Plugins/APIDump/Classes/Plugins.lua +++ b/Server/Plugins/APIDump/Classes/Plugins.lua @@ -790,6 +790,10 @@ cPluginManager.AddHook(cPluginManager.HOOK_CHAT, OnChatMessage); { Notes = "Called when a hopper is pushing an item into the container it is aimed at.", }, + HOOK_DROPSPENSE = + { + Notes = "Called when a {{cDropSpenserEntity|DropSpenser}} is dropspensing an {{cItem|item}}.", + }, HOOK_KILLED = { Notes = "Called when an entity has been killed.", diff --git a/Server/Plugins/APIDump/Hooks/OnDropSpense.lua b/Server/Plugins/APIDump/Hooks/OnDropSpense.lua new file mode 100644 index 000000000..8a7e93abb --- /dev/null +++ b/Server/Plugins/APIDump/Hooks/OnDropSpense.lua @@ -0,0 +1,26 @@ +return +{ + HOOK_DROPSPENSE = + { + CalledWhen = "A dispenser or dropper is about to dispense/drop an item.", + DefaultFnName = "OnDropSpense", -- also used as pagename + Desc = [[ + This callback is called whenever a {{cDropSpenserEntity|dropspenser}} dropspenses an {{cItem|item}}. A plugin may decide to disallow + the move by returning true. + ]], + Params = + { + { Name = "World", Type = "{{cWorld}}", Notes = "World where the dropspenser resides" }, + { Name = "DropSpenser", Type = "{{cDropSpenserEntity}}", Notes = "The dropspenser that is pulling the item" }, + { Name = "SlotNum", Type = "number", Notes = "The slot of the dropspensed item in the dropspenser's {{cItemGrid|internal storage}}" }, + }, + Returns = [[ + If the function returns false or no value, the next plugin's callback is called. If the function + returns true, no other callback is called for this event and the dropspenser will not dropspense the item. + ]], + }, -- HOOK_DROPSPENSE +} + + + + -- cgit v1.2.3