forked from Mirrorlandia_minetest/minetest
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.
This commit is contained in:
parent
111e7e1cc8
commit
00123ee04d
@ -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.
|
||||
|
@ -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 = {
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user