Various small improvements (#7)
* Crafting recipe for item is now shapeless * Item now uses right click to open in MineClone (otherwise still left click) * Added `personal_log_teleport` privilege (and `personal_log_teleport_privilege` setting to enable), in case you only want people to teleport to places they've already been to and saved in the log, and not use `/teleport` * Replaced `priviledge` with `privilege` everywhere it's misspelled * Tested in both MineClone and Minetest Game
This commit is contained in:
parent
ad6c6b1138
commit
994c1a263d
78
init.lua
78
init.lua
@ -18,6 +18,8 @@ local ccompass_recalibration_allowed = minetest.settings:get_bool("ccompass_reca
|
|||||||
local ccompass_restrict_target = minetest.settings:get_bool("ccompass_restrict_target", false)
|
local ccompass_restrict_target = minetest.settings:get_bool("ccompass_restrict_target", false)
|
||||||
local ccompass_description_prefix = "^Compass to "
|
local ccompass_description_prefix = "^Compass to "
|
||||||
|
|
||||||
|
local personal_log_teleport_privilege = minetest.settings:get_bool("personal_log_teleport_privilege", false)
|
||||||
|
|
||||||
local S = minetest.get_translator(modname)
|
local S = minetest.get_translator(modname)
|
||||||
|
|
||||||
local categories = {
|
local categories = {
|
||||||
@ -52,6 +54,26 @@ if mcl_formspec_modpath then
|
|||||||
mcl_formspec_itemslot = mcl_formspec.get_itemslot_bg
|
mcl_formspec_itemslot = mcl_formspec.get_itemslot_bg
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if personal_log_teleport_privilege then
|
||||||
|
minetest.register_privilege("personal_log_teleport", {
|
||||||
|
description =S("Allows the player to teleport using the personal log"),
|
||||||
|
give_to_singleplayer = false,
|
||||||
|
give_to_admin = true,
|
||||||
|
})
|
||||||
|
privs = {personal_log_teleport=true}
|
||||||
|
end
|
||||||
|
|
||||||
|
local function can_teleport(player)
|
||||||
|
local player_name = player:get_player_name()
|
||||||
|
if minetest.check_player_privs(player_name, "teleport") then
|
||||||
|
return true
|
||||||
|
elseif personal_log_teleport_privilege and minetest.check_player_privs(player_name, "personal_log_teleport") then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
--------------------------------------------------------
|
--------------------------------------------------------
|
||||||
-- Data store
|
-- Data store
|
||||||
|
|
||||||
@ -530,8 +552,7 @@ local function make_personal_log_formspec(player)
|
|||||||
.."button[4.5,0;2,0.5;move_up;"..S("Move Up").."]"
|
.."button[4.5,0;2,0.5;move_up;"..S("Move Up").."]"
|
||||||
.."button[4.5,0.75;2,0.5;move_down;"..S("Move Down").."]"
|
.."button[4.5,0.75;2,0.5;move_down;"..S("Move Down").."]"
|
||||||
.."button[7,0;2,0.5;delete;"..S("Delete") .."]"
|
.."button[7,0;2,0.5;delete;"..S("Delete") .."]"
|
||||||
|
if category_index == LOCATION_CATEGORY and can_teleport(player) then
|
||||||
if category_index == LOCATION_CATEGORY and minetest.check_player_privs(player_name, "teleport") then
|
|
||||||
formspec[#formspec+1] = "button[7,0.75;2,0.5;teleport;"..S("Teleport") .."]"
|
formspec[#formspec+1] = "button[7,0.75;2,0.5;teleport;"..S("Teleport") .."]"
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -634,7 +655,7 @@ local function on_player_receive_fields(player, fields, update_callback)
|
|||||||
if fields.teleport
|
if fields.teleport
|
||||||
and category == LOCATION_CATEGORY
|
and category == LOCATION_CATEGORY
|
||||||
and valid_entry_selected
|
and valid_entry_selected
|
||||||
and minetest.check_player_privs(player_name, "teleport") then
|
and (can_teleport(player)) then
|
||||||
local pos_string = modstore:get_string(player_name .. "_category_" .. category .. "_entry_" .. entry_selected .. "_topic")
|
local pos_string = modstore:get_string(player_name .. "_category_" .. category .. "_entry_" .. entry_selected .. "_topic")
|
||||||
local pos = minetest.string_to_pos(pos_string)
|
local pos = minetest.string_to_pos(pos_string)
|
||||||
if pos then
|
if pos then
|
||||||
@ -742,20 +763,41 @@ local craftable_setting = minetest.settings:get_bool("personal_log_craftable_ite
|
|||||||
|
|
||||||
if craftable_setting or not (unified_inventory_modpath or sfinv_modpath or sfinv_buttons_modpath) then
|
if craftable_setting or not (unified_inventory_modpath or sfinv_modpath or sfinv_buttons_modpath) then
|
||||||
|
|
||||||
minetest.register_craftitem("personal_log:book", {
|
local attributes = {
|
||||||
description = S("Personal Log"),
|
description = S("Personal Log"),
|
||||||
inventory_image = "personal_log_open_book.png",
|
inventory_image = "personal_log_open_book.png",
|
||||||
groups = {book = 1, flammable = 3},
|
groups = {book = 1, flammable = 3},
|
||||||
on_use = function(itemstack, user, pointed_thing)
|
}
|
||||||
local name = user:get_player_name()
|
|
||||||
minetest.show_formspec(name,"personal_log:root", make_personal_log_formspec(user))
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
if mcl_formspec_modpath then
|
||||||
output = "personal_log:book",
|
attributes.on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
recipe = {{book_unwritten, book_unwritten}}
|
local name = user:get_player_name()
|
||||||
})
|
minetest.show_formspec(name,"personal_log:root", make_personal_log_formspec(user))
|
||||||
|
end
|
||||||
|
attributes.on_place = function(itemstack, user, pointed_thing)
|
||||||
|
if not user:get_player_control().sneak then
|
||||||
|
local new_stack = mcl_util.call_on_rightclick(itemstack, user, pointed_thing)
|
||||||
|
if new_stack then
|
||||||
|
return new_stack
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local name = user:get_player_name()
|
||||||
|
minetest.show_formspec(name,"personal_log:root", make_personal_log_formspec(user))
|
||||||
|
end
|
||||||
|
else
|
||||||
|
attributes.on_use = function(itemstack, user, pointed_thing)
|
||||||
|
local name = user:get_player_name()
|
||||||
|
minetest.show_formspec(name,"personal_log:root", make_personal_log_formspec(user))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_craftitem("personal_log:book", attributes)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "personal_log:book",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe = {book_unwritten, book_unwritten}
|
||||||
|
})
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -763,7 +805,8 @@ end
|
|||||||
-- Chat command
|
-- Chat command
|
||||||
|
|
||||||
local chat_command = minetest.settings:get_bool("personal_log_chat_command", false)
|
local chat_command = minetest.settings:get_bool("personal_log_chat_command", false)
|
||||||
local chat_command_priv = minetest.settings:get_bool("personal_log_chat_command_priviledge", false)
|
local chat_command_priv = minetest.settings:get_bool("personal_log_chat_command_privilege", false)
|
||||||
|
or minetest.settings:get_bool("personal_log_chat_command_priviledge", false) -- backwards compat
|
||||||
|
|
||||||
if chat_command then
|
if chat_command then
|
||||||
|
|
||||||
@ -818,3 +861,4 @@ end
|
|||||||
personal_log.add_general_entry = function(player_name, content, general_topic)
|
personal_log.add_general_entry = function(player_name, content, general_topic)
|
||||||
add_entry_for_player(player_name, GENERAL_CATEGORY, content, general_topic)
|
add_entry_for_player(player_name, GENERAL_CATEGORY, content, general_topic)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
personal_log_inventory_button (Access via a button in SFInv/Unified Inventory) bool true
|
personal_log_inventory_button (Access via a button in SFInv/Unified Inventory) bool true
|
||||||
personal_log_craftable_item (Access via a craftable item) bool false
|
personal_log_craftable_item (Access via a craftable item) bool false
|
||||||
personal_log_chat_command (Allow the /log chat command to open the log) bool false
|
personal_log_chat_command (Allow the /log chat command to open the log) bool false
|
||||||
personal_log_chat_command_priviledge (The personal_log privilege is required to access the log via chat command) bool false
|
personal_log_chat_command_privilege (The personal_log privilege is required to access the log via chat command) bool false
|
||||||
|
|
||||||
|
# True if the "personal_log_teleport" privilege is required to teleport, if false, the "teleport" privilege is used instead.
|
||||||
|
personal_log_teleport_privilege (Add personal_log_teleport privilege) bool false
|
Loading…
x
Reference in New Issue
Block a user