Add extended tooltip
This commit is contained in:
parent
d50eddda4e
commit
a8bb37a750
29
init.lua
29
init.lua
@ -1,8 +1,31 @@
|
|||||||
local NEWLINE = "\n"
|
local NEWLINE = "\n"
|
||||||
|
local DESCRIPTION = "Command Tool"
|
||||||
|
local MAX_CMD_TOOLTIP_LEN = 48
|
||||||
|
|
||||||
|
local split_commands = function(commands_string)
|
||||||
|
return string.split(commands_string, NEWLINE)
|
||||||
|
end
|
||||||
|
|
||||||
local set_commands = function(itemstack, commands_string)
|
local set_commands = function(itemstack, commands_string)
|
||||||
local meta = itemstack:get_meta()
|
local meta = itemstack:get_meta()
|
||||||
meta:set_string("cmd", commands_string)
|
meta:set_string("cmd", commands_string)
|
||||||
|
local cmds = split_commands(commands_string)
|
||||||
|
local first_cmd
|
||||||
|
if #cmds >= 1 then
|
||||||
|
first_cmd = cmds[1]
|
||||||
|
if string.len(first_cmd) > MAX_CMD_TOOLTIP_LEN then
|
||||||
|
first_cmd = string.sub(first_cmd, 1, MAX_CMD_TOOLTIP_LEN) .. " (…)"
|
||||||
|
end
|
||||||
|
local tooltip = DESCRIPTION .. NEWLINE .. first_cmd
|
||||||
|
if #cmds == 2 then
|
||||||
|
tooltip = tooltip .. NEWLINE .. string.format("… and %d more command", #cmds - 1)
|
||||||
|
elseif #cmds > 2 then
|
||||||
|
tooltip = tooltip .. NEWLINE .. string.format("… and %d more commands", #cmds - 1)
|
||||||
|
end
|
||||||
|
meta:set_string("description", tooltip)
|
||||||
|
else
|
||||||
|
meta:set_string("description", "")
|
||||||
|
end
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -10,7 +33,7 @@ end
|
|||||||
local get_commands = function(itemstack)
|
local get_commands = function(itemstack)
|
||||||
local meta = itemstack:get_meta()
|
local meta = itemstack:get_meta()
|
||||||
local cmd_str = meta:get_string("cmd")
|
local cmd_str = meta:get_string("cmd")
|
||||||
local cmds = string.split(cmd_str, NEWLINE)
|
local cmds = split_commands(cmd_str)
|
||||||
return cmds
|
return cmds
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -74,14 +97,14 @@ local open_command_configuration = function(itemstack, player, pointed_thing)
|
|||||||
end
|
end
|
||||||
local formspec =
|
local formspec =
|
||||||
"size[6,6]"..
|
"size[6,6]"..
|
||||||
"textarea[0.25,0;6,4;commands;Commands:;"..minetest.formspec_escape(commands_str).."]"..
|
"textarea[0.25,0;6,5;commands;Commands:;"..minetest.formspec_escape(commands_str).."]"..
|
||||||
"button_exit[0.5,5;2,1;ok;OK]"..
|
"button_exit[0.5,5;2,1;ok;OK]"..
|
||||||
"button_exit[3.5,5;2,1;cancel;Cancel]"
|
"button_exit[3.5,5;2,1;cancel;Cancel]"
|
||||||
minetest.show_formspec(player_name, "cmdtool", formspec)
|
minetest.show_formspec(player_name, "cmdtool", formspec)
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_tool("cmdtool:cmdtool", {
|
minetest.register_tool("cmdtool:cmdtool", {
|
||||||
description = "Command Tool",
|
description = DESCRIPTION,
|
||||||
inventory_image = "cmdtool_cmdtool.png",
|
inventory_image = "cmdtool_cmdtool.png",
|
||||||
wield_imagee = "cmdtool_cmdtool.png",
|
wield_imagee = "cmdtool_cmdtool.png",
|
||||||
on_use = execute_command,
|
on_use = execute_command,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user