Always return the ItemStack for on_rightclick and on_place to comply with the api.

master
Tim 2016-08-05 21:33:53 +02:00
parent a2b7ebc6f2
commit 73a29be691
6 changed files with 25 additions and 13 deletions

View File

@ -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", {

View File

@ -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()

View File

@ -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)

View File

@ -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
})

View File

@ -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
})

View File

@ -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}