Builtin/game/item: Add `place_param2` nodedef field
authorAuke Kok <sofar@foo-projects.org>
Mon, 30 May 2016 22:07:09 +0000 (15:07 -0700)
committerparamat <mat.gregory@virginmedia.com>
Fri, 17 Jun 2016 03:41:20 +0000 (04:41 +0100)
This allows a nodedef to specify a fixed value for param2 to be
used for all normal placements.

There are several uses for this:

- nodes that require param2 to be set to a non-zero value for
  internal mod use. E.g. leafdecay could use this to detect that
  leaves are played by players.
- force wallmounted or facedir value at placement at placement

This overrides any player look direction or other on-the-fly
param2 setting during placement.

builtin/game/item.lua
doc/lua_api.txt

index 36c2c1a68cbb71e40420d8c07c9dd5e779540b62..26ff8225c15715361399406778ffa79d6b2174a7 100644 (file)
@@ -250,7 +250,9 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2)
        local newnode = {name = def.name, param1 = 0, param2 = param2}
 
        -- Calculate direction for wall mounted stuff like torches and signs
-       if def.paramtype2 == 'wallmounted' and not param2 then
+       if def.place_param2 ~= nil then
+               newnode.param2 = def.place_param2
+       elseif def.paramtype2 == 'wallmounted' and not param2 then
                local dir = {
                        x = under.x - above.x,
                        y = under.y - above.y,
index d89b0bf7b107d3a0b417bbd1902fb1837d0b23d2..ed8f8504e9a7d3a98a0badea67e2115912aa81e1 100644 (file)
@@ -3528,6 +3528,7 @@ Definition tables
         ^ paramtype = "light" allows light to propagate from or through the node with light value
         ^ falling by 1 per node. This line is essential for a light source node to spread its light. ]]
         paramtype2 = "none", -- See "Nodes"
+        place_param2 = nil, -- Force value for param2 when player places node
         is_ground_content = true, -- If false, the cave generator will not carve through this
         sunlight_propagates = false, -- If true, sunlight will go infinitely through this
         walkable = true, -- If true, objects collide with node