Make core.item_place_node return position of placed node. (#7713)
authorBluebird <bluebird.greycoat@gmail.com>
Wed, 18 Dec 2019 18:21:24 +0000 (12:21 -0600)
committersfan5 <sfan5@live.de>
Wed, 18 Dec 2019 18:21:24 +0000 (19:21 +0100)
builtin/game/item.lua
doc/lua_api.txt

index 00c1912fc254b9a6fb0dda76dae02e2a4b8c3436..ef47cd66d5afccdc7fcdf026b682e35277dfb6ca 100644 (file)
@@ -259,7 +259,7 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2,
                prevent_after_place)
        local def = itemstack:get_definition()
        if def.type ~= "node" or pointed_thing.type ~= "node" then
-               return itemstack, false
+               return itemstack, nil
        end
 
        local under = pointed_thing.under
@@ -272,7 +272,7 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2,
        if not oldnode_under or not oldnode_above then
                log("info", playername .. " tried to place"
                        .. " node in unloaded position " .. core.pos_to_string(above))
-               return itemstack, false
+               return itemstack, nil
        end
 
        local olddef_under = core.registered_nodes[oldnode_under.name]
@@ -284,7 +284,7 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2,
                log("info", playername .. " tried to place"
                        .. " node in invalid position " .. core.pos_to_string(above)
                        .. ", replacing " .. oldnode_above.name)
-               return itemstack, false
+               return itemstack, nil
        end
 
        -- Place above pointed node
@@ -302,7 +302,7 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2,
                                .. " at protected position "
                                .. core.pos_to_string(place_to))
                core.record_protection_violation(place_to, playername)
-               return itemstack
+               return itemstack, nil
        end
 
        log("action", playername .. " places node "
@@ -361,7 +361,7 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2,
                not builtin_shared.check_attached_node(place_to, newnode) then
                log("action", "attached node " .. def.name ..
                        " can not be placed at " .. core.pos_to_string(place_to))
-               return itemstack, false
+               return itemstack, nil
        end
 
        -- Add node and update
@@ -395,7 +395,7 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2,
        if take_item then
                itemstack:take_item()
        end
-       return itemstack, true
+       return itemstack, place_to
 end
 
 -- deprecated, item_place does not call this
@@ -416,7 +416,7 @@ function core.item_place(itemstack, placer, pointed_thing, param2)
                local nn = n.name
                if core.registered_nodes[nn] and core.registered_nodes[nn].on_rightclick then
                        return core.registered_nodes[nn].on_rightclick(pointed_thing.under, n,
-                                       placer, itemstack, pointed_thing) or itemstack, false
+                                       placer, itemstack, pointed_thing) or itemstack, nil
                end
        end
 
@@ -424,7 +424,7 @@ function core.item_place(itemstack, placer, pointed_thing, param2)
        if itemstack:get_definition().type == "node" then
                return core.item_place_node(itemstack, placer, pointed_thing, param2)
        end
-       return itemstack
+       return itemstack, nil
 end
 
 function core.item_secondary_use(itemstack, placer)
index ca59aad958db41bea2c84052e640e6ace5c8968f..7663b5c9e8f66c5f28eefaec3a44bf40e1d8e970 100644 (file)
@@ -4859,7 +4859,8 @@ Defaults for the `on_place` and `on_drop` item definition functions
     * `param2` overrides `facedir` and wallmounted `param2`
     * `prevent_after_place`: if set to `true`, `after_place_node` is not called
       for the newly placed node to prevent a callback and placement loop
-    * returns `itemstack, success`
+    * returns `itemstack, position`
+      * `position`: the location the node was placed to. `nil` if nothing was placed.
 * `minetest.item_place_object(itemstack, placer, pointed_thing)`
     * Place item as-is
     * returns the leftover itemstack
@@ -4869,7 +4870,8 @@ Defaults for the `on_place` and `on_drop` item definition functions
     * Calls `on_rightclick` of `pointed_thing.under` if defined instead
     * **Note**: is not called when wielded item overrides `on_place`
     * `param2` overrides facedir and wallmounted `param2`
-    * returns `itemstack, success`
+    * returns `itemstack, position`
+      * `position`: the location the node was placed to. `nil` if nothing was placed.
 * `minetest.item_drop(itemstack, dropper, pos)`
     * Drop the item
     * returns the leftover itemstack