From 73a29be691c1251c7a7655a483d17fec67de3eee Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 5 Aug 2016 21:33:53 +0200 Subject: [PATCH] Always return the ItemStack for on_rightclick and on_place to comply with the api. --- cooking.lua | 6 +++--- itemframe.lua | 4 +++- mailbox.lua | 3 ++- mechanisms.lua | 7 +++++-- nodes.lua | 14 +++++++++----- rope.lua | 4 +++- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/cooking.lua b/cooking.lua index 64c8f6c..46629ec 100644 --- a/cooking.lua +++ b/cooking.lua @@ -52,7 +52,7 @@ function cauldron.filling(pos, node, clicker, itemstack) else minetest.chat_send_player(clicker:get_player_name(), "No room in your inventory to add a bucket of water.") - return + return itemstack end else itemstack:replace("bucket:bucket_water") @@ -128,15 +128,15 @@ function cauldron.take_soup(pos, node, clicker, itemstack) else minetest.chat_send_player(clicker:get_player_name(), "No room in your inventory to add a bowl of soup.") - return + return itemstack end else itemstack:replace("xdecor:bowl_soup 1") end minetest.set_node(pos, {name="xdecor:cauldron_empty", param2=node.param2}) - return itemstack end + return itemstack end xdecor.register("cauldron_empty", { diff --git a/itemframe.lua b/itemframe.lua index 66d690c..39d400a 100644 --- a/itemframe.lua +++ b/itemframe.lua @@ -71,7 +71,9 @@ function itemframe.rightclick(pos, node, clicker, itemstack) local meta = minetest.get_meta(pos) local player = clicker:get_player_name() local owner = meta:get_string("owner") - if player ~= owner or not itemstack then return end + if player ~= owner or not itemstack then + return itemstack + end drop_item(pos, node) local itemstring = itemstack:take_item():to_string() diff --git a/mailbox.lua b/mailbox.lua index fb7a3c8..ec1d874 100644 --- a/mailbox.lua +++ b/mailbox.lua @@ -96,7 +96,7 @@ function mailbox.after_place_node(pos, placer) inv:set_size("drop", 1) end -function mailbox.rightclick(pos, _, clicker) +function mailbox.rightclick(pos, node, clicker, itemstack, pointed_thing) local meta = minetest.get_meta(pos) local player = clicker:get_player_name() local owner = meta:get_string("owner") @@ -106,6 +106,7 @@ function mailbox.rightclick(pos, _, clicker) else minetest.show_formspec(player, "xdecor:mailbox", mailbox:formspec(pos, owner, 0)) end + return itemstack end function mailbox.put(pos, listname, _, stack, player) diff --git a/mechanisms.lua b/mechanisms.lua index f7f79a3..4686302 100644 --- a/mechanisms.lua +++ b/mechanisms.lua @@ -92,8 +92,10 @@ xdecor.register("lever_off", { sounds = default.node_sound_stone_defaults(), sunlight_propagates = true, on_rotate = screwdriver.rotate_simple, - on_rightclick = function(pos, node, clicker) - if not doors.get then return end + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + if not doors.get then + return itemstack + end local minp = {x=pos.x-2, y=pos.y-1, z=pos.z-2} local maxp = {x=pos.x+2, y=pos.y+1, z=pos.z+2} local doors = minetest.find_nodes_in_area(minp, maxp, "group:door") @@ -101,6 +103,7 @@ xdecor.register("lever_off", { for i = 1, #doors do door_toggle(pos, doors[i], clicker) end + return itemstack end }) diff --git a/nodes.lua b/nodes.lua index d21584a..0e5bea2 100644 --- a/nodes.lua +++ b/nodes.lua @@ -141,9 +141,10 @@ xdecor.register("chair", { {11, 0, 3, 2, 6, 2}, {3, 6, 3, 10, 2, 8} }), can_dig = xdecor.sit_dig, - on_rightclick = function(pos, node, clicker, _, pointed_thing) + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) pos.y = pos.y + 0 -- Sitting position. xdecor.sit(pos, node, clicker, pointed_thing) + return itemstack end }) @@ -175,8 +176,9 @@ for _, c in pairs({"red"}) do -- Add more curtains colors simply here. paramtype2 = "wallmounted", groups = {dig_immediate=3, flammable=3}, selection_box = {type="wallmounted"}, - on_rightclick = function(pos, node) + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) minetest.set_node(pos, {name="xdecor:curtain_open_"..c, param2=node.param2}) + return itemstack end }) @@ -188,8 +190,9 @@ for _, c in pairs({"red"}) do -- Add more curtains colors simply here. groups = {dig_immediate=3, flammable=3, not_in_creative_inventory=1}, selection_box = {type="wallmounted"}, drop = "xdecor:curtain_"..c, - on_rightclick = function(pos, node) + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) minetest.set_node(pos, {name="xdecor:curtain_"..c, param2=node.param2}) + return itemstack end }) @@ -207,9 +210,10 @@ xdecor.register("cushion", { on_place = minetest.rotate_node, node_box = xdecor.nodebox.slab_y(0.5), can_dig = xdecor.sit_dig, - on_rightclick = function(pos, node, clicker, _, pointed_thing) + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) pos.y = pos.y + 0 -- Sitting position. xdecor.sit(pos, node, clicker, pointed_thing) + return itemstack end }) @@ -372,8 +376,8 @@ xdecor.register("painting_1", { end if not minetest.setting_getbool("creative_mode") then itemstack:take_item() - return itemstack end + return itemstack end }) diff --git a/rope.lua b/rope.lua index 189f476..3dbbede 100644 --- a/rope.lua +++ b/rope.lua @@ -12,7 +12,9 @@ function rope.place(itemstack, placer, pointed_thing) local pos = pointed_thing.above local oldnode = minetest.get_node(pos) local stackname = itemstack:get_name() - if minetest.is_protected(pos, placer:get_player_name()) then return end + if minetest.is_protected(pos, placer:get_player_name()) then + return itemstack + end while oldnode.name == "air" and not itemstack:is_empty() do local newnode = {name = stackname, param1 = 0} -- 2.44.0