diff --git a/README.md b/README.md index baecb54..fb1988c 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ minetest_mods Various mods for minetest. +Copyright (C) 2012 Ken Bull For mods without their own README, consider these CC0 or WTFPL. diff --git a/home_positions/init.lua b/home_positions/init.lua index be8b7fa..6818dcb 100644 --- a/home_positions/init.lua +++ b/home_positions/init.lua @@ -49,4 +49,57 @@ minetest.register_chatcommand("where", { end, }) +-- bookmark player location +minetest.register_chatcommand("mark", { + params = "", + description = "mark your current location to be recalled later", + privs = {}, + func = function(name, param) + local player = minetest.env:get_player_by_name(name) + local pos = player:getpos() + + if param == nil or param == "" then + minetest.chat_send_player(name, "Missing parameter.") + end + + local bookmarks = player_data.get_player_data(name, "bookmarks") + if bookmarks == nil then + bookmarks = {} + end + bookmarks[param] = pos + + player_data.set_player_data(name, "bookmarks", bookmarks) + minetest.log("action", "Set mark '"..param.."' for player "..name.." to ("..pos.x..", "..pos.y..", "..pos.z..").") + minetest.chat_send_player(name, "Saved position ("..pos.x..", "..pos.y..", "..pos.z..") as "..param..".") + end, +}) + +-- go to a marked location +minetest.register_chatcommand("go", { + params = "[]", + description = "goes home or to a marked location", + privs = {}, + func = function(name, param) + local player = minetest.env:get_player_by_name(name) + local pos = {} + if param == nil or param == "" then + pos = player_data.get_player_data(name, "home_position") + if pos == nil then + minetest.chat_send_player(name, "Home position not set.") + return + end + else + local bookmarks = player_data.get_player_data(name, "bookmarks") + pos = bookmarks[param] + if pos == nil then + minetest.chat_send_player(name, "Mark '"..param.."' is not set.") + return + end + end + minetest.chat_send_player(name, "Teleporting to ("..pos.x..", "..pos.y..", "..pos.z..").") + player:setpos(pos) + end, +}) + + print("hello from "..minetest.get_current_modname().." at "..minetest.get_modpath(minetest.get_current_modname()).."!")