forked from minetest-mods/moreblocks
		
	Fix strange placement behavior for non-default Stairs+ nodes (#168)
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
This commit is contained in:
		| @@ -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 | ||||||
|   | |||||||
| @@ -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 | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user