Fix strange placement behavior for non-default Stairs+ nodes (#168)

Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
This commit is contained in:
Oblomov 2020-12-28 03:27:58 +01:00 committed by GitHub
parent 0c2c3ad4ef
commit ff7e85094f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 4 deletions

View File

@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
### Fixed ### Fixed
- [Fixed strange placement behavior for non-default Stairs+ nodes.](https://github.com/minetest-mods/moreblocks/pull/168)
- [Fixed stairs placement over oddly-shaped nodes.](https://github.com/minetest-mods/moreblocks/pull/166) - [Fixed stairs placement over oddly-shaped nodes.](https://github.com/minetest-mods/moreblocks/pull/166)
## [2.1.0] - 2020-12-14 ## [2.1.0] - 2020-12-14

View File

@ -30,16 +30,25 @@ local wall_right_dirmap = {9, 18, 7, 12}
local wall_left_dirmap = {11, 16, 5, 14} local wall_left_dirmap = {11, 16, 5, 14}
local ceil_dirmap = {20, 23, 22, 21} local ceil_dirmap = {20, 23, 22, 21}
-- extract the stairsplus category from a node name
-- assumes the name is in the form mod_name:category_original_ndoe_name
local function name_to_category(name)
local colon = name:find(":") or 0
colon = colon + 1
local under = name:find("_", colon)
return name:sub(colon, under)
end
stairsplus.rotate_node_aux = function(itemstack, placer, pointed_thing) stairsplus.rotate_node_aux = function(itemstack, placer, pointed_thing)
local sneak = placer and placer:get_player_control().sneak local sneak = placer and placer:get_player_control().sneak
local aux = placer and placer:get_player_control().aux1 local aux = placer and placer:get_player_control().aux1
-- namestring for what we are placing, up to the first _ (exclusive) -- category for what we are placing
local item_prefix = itemstack:get_name():gsub("_.*$", "") local item_prefix = name_to_category(itemstack:get_name())
-- namestring for what we are placing against -- category for what we are placing against
local under = pointed_thing.under local under = pointed_thing.under
local under_node = minetest.get_node(under) local under_node = minetest.get_node(under)
local under_prefix = under_node and under_node.name:gsub("_.*$", "") local under_prefix = under_node and name_to_category(under_node.name)
local same_cat = item_prefix == under_prefix local same_cat = item_prefix == under_prefix