summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDániel Juhász <juhdanad@gmail.com>2017-02-18 20:26:19 +0100
committerparamat <mat.gregory@virginmedia.com>2017-02-18 22:47:24 +0000
commit00123ee04d19ecc98e0a6a9255e5697a78167360 (patch)
tree7b960732fde6ca3d3f5db4ae80c5332b3f80713b
parent111e7e1cc8316e4812e85fddc579feaeedecbb58 (diff)
downloadminetest-00123ee04d19ecc98e0a6a9255e5697a78167360.tar.gz
minetest-00123ee04d19ecc98e0a6a9255e5697a78167360.tar.bz2
minetest-00123ee04d19ecc98e0a6a9255e5697a78167360.zip
Fixes for colorwallmounted and colorfacedir nodes
Correct node placement prediction for attached colorwallmounted nodes. Correct placement direction for colorfacedir and colorwallmounted nodes. Correct detatch mechanism for attached colorwallmounted nodes.
-rw-r--r--builtin/game/falling.lua3
-rw-r--r--builtin/game/item.lua6
-rw-r--r--src/game.cpp3
3 files changed, 8 insertions, 4 deletions
diff --git a/builtin/game/falling.lua b/builtin/game/falling.lua
index 39a74008c..5ef5289be 100644
--- a/builtin/game/falling.lua
+++ b/builtin/game/falling.lua
@@ -134,7 +134,8 @@ end
function builtin_shared.check_attached_node(p, n)
local def = core.registered_nodes[n.name]
local d = {x = 0, y = 0, z = 0}
- if def.paramtype2 == "wallmounted" then
+ if def.paramtype2 == "wallmounted" or
+ def.paramtype2 == "colorwallmounted" then
-- The fallback vector here is in case 'wallmounted to dir' is nil due
-- to voxelmanip placing a wallmounted node without resetting a
-- pre-existing param2 value that is out-of-range for wallmounted.
diff --git a/builtin/game/item.lua b/builtin/game/item.lua
index a8dc51d61..38ef1714f 100644
--- a/builtin/game/item.lua
+++ b/builtin/game/item.lua
@@ -262,7 +262,8 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2)
-- Calculate direction for wall mounted stuff like torches and signs
if def.place_param2 ~= nil then
newnode.param2 = def.place_param2
- elseif def.paramtype2 == 'wallmounted' and not param2 then
+ elseif (def.paramtype2 == 'wallmounted' or
+ def.paramtype2 == 'colorwallmounted') and not param2 then
local dir = {
x = under.x - above.x,
y = under.y - above.y,
@@ -270,7 +271,8 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2)
}
newnode.param2 = core.dir_to_wallmounted(dir)
-- Calculate the direction for furnaces and chests and stuff
- elseif def.paramtype2 == 'facedir' and not param2 then
+ elseif (def.paramtype2 == 'facedir' or
+ def.paramtype2 == 'colorfacedir') and not param2 then
local placer_pos = placer:getpos()
if placer_pos then
local dir = {
diff --git a/src/game.cpp b/src/game.cpp
index 1735737de..55b2ccec9 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -884,7 +884,8 @@ bool nodePlacementPrediction(Client &client,
};
v3s16 pp;
- if (nodedef->get(id).param_type_2 == CPT2_WALLMOUNTED)
+ if (nodedef->get(id).param_type_2 == CPT2_WALLMOUNTED ||
+ nodedef->get(id).param_type_2 == CPT2_COLORED_WALLMOUNTED)
pp = p + wallmounted_dirs[param2];
else
pp = p + v3s16(0, -1, 0);