diff --git a/init.lua b/init.lua index 8de7acd..9abca24 100644 --- a/init.lua +++ b/init.lua @@ -52,6 +52,8 @@ end local function set_compass_meta_color(meta, color) meta:set_int("waypoint_compass:color", color) + -- thanks to Boot@YL for suggesting this + meta:set_string("color", ("#%06X"):format(color)) end @@ -334,8 +336,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) color = math.max(math.min(color, 0xFFFFFF), 0x0) -- for some reason seems to work fine without this set_compass_meta_color(meta, color) -- print(dump(meta:to_table())) - -- thanks to Boot@YL for suggesting this - meta:set_string("color", ("#%06X"):format(color)) end local coords = coords_from_string(fields.coords) @@ -435,3 +435,33 @@ end minetest.register_on_craft(waypoint_compass_copy_meta) minetest.register_craft_predict(waypoint_compass_copy_meta) + +-- pos is {x=0,y=0,z=0} +-- owner_name is str +-- label is str +-- color is int in range [0,0xFFFFFF] +local error_val = nil --ItemStack('apple') -- used this for testing with //lua +local function make_compass(pos, owner_name, label, color) + local itemstack = ItemStack("waypoint_compass:compass") + local meta = itemstack:get_meta() + if not (pos or {}).x or + (type(owner_name) ~= 'string') or + (type(label) ~= 'string') then + return error_val + end + if not color or type(color) ~= 'number' or color < 0 or color > 0xFFFFFF then + return error_val + end + set_compass_meta_pos(meta, pos) + set_compass_meta_owner(meta, owner_name) + set_compass_meta_label(meta, label) + set_compass_meta_color(meta, color) + return itemstack +end + + +waypoint_compass = { + make_compass = make_compass, +} + +return waypoint_compass