local function on_place(itemstack, placer, pointed_thing) if not minetest.is_player(placer) then return minetest.item_place(itemstack, placer, pointed_thing) end local look_dir = placer:get_look_dir() if not vector.check(look_dir) then return minetest.item_place(itemstack, placer, pointed_thing) end local facedir = minetest.dir_to_facedir(look_dir) local aim_dir = pointed_thing.under - pointed_thing.above local param2 = 20 + math.random(0, 3) -- random rotation for the "upside-down" position if aim_dir.y == -1 then param2 = 0 elseif aim_dir.x == 1 then param2 = 16 elseif aim_dir.x == -1 then param2 = 12 elseif aim_dir.z == 1 then param2 = 8 elseif aim_dir.z == -1 then param2 = 4 end return minetest.item_place(itemstack, placer, pointed_thing, param2) end minetest.register_node("compass_rose:decal", { description = "Compass rose decal", drawtype = "nodebox", use_texture_alpha = "blend", tiles = { "compass_rose_decal.png", "blank.png", "blank.png", "blank.png", "blank.png", "blank.png", }, visual_scale = 3.0, is_ground_content = false, inventory_image = "compass_rose_decal.png", wield_image = "compass_rose_decal.png", paramtype = "light", paramtype2 = "facedir", walkable = false, climbable = false, sunlight_propagates = true, node_box = { type = "fixed", -- shift tiny bit upwards (0.49) to prevent z-fighting fixed = {-1.5/3, -0.5/3, -1.5/3, 1.5/3, -0.49/3, 1.5/3} }, selection_box = { type = "fixed", fixed = {-1.5, -0.45, -1.5, 1.5, -0.5, 1.5} }, groups = {choppy = 3, dig_immediate = 2}, on_place = on_place, on_rotate = false, -- probably disable rotations }) if core.get_modpath("alphabet") then minetest.register_craft({ type = "shaped", output = "compass_rose:decal", recipe = { {"", "alphabet:n", ""}, {"alphabet:w", "default:stone_block", "alphabet:e"}, {"", "alphabet:s", ""}, } }) end