3 local storage = minetest.get_mod_storage("karaoke")
6 function karaoke.remaining()
10 function karaoke.sing(title)
11 local text = storage:get_string(title)
14 return false, "Song not found"
17 lines = text:split("\n")
21 minetest.register_chatcommand("kedit", {
22 func = function(param)
23 minetest.show_formspec("karaoke", [[
25 field[0.5,0.3;8.5,1;title;Song Title;]] .. param .. [[]
26 textarea[0.5,1.1;8.5,4;text;Song Text;]] .. storage:get_string(param) .. [[]
27 button_exit[3.3,4.5;2,1;save;Save]
32 minetest.register_chatcommand("kdelete", {
33 func = function(param)
34 storage:set_string(param, "")
35 return true, "Song deleted: " .. param
39 minetest.register_chatcommand("ksing", {
43 minetest.register_chatcommand("kcancel", {
49 minetest.register_chatcommand("klist", {
53 for k in pairs(storage:to_table().fields) do
54 table.insert(songs, k)
57 return true, table.concat(songs, ", ")
61 minetest.register_on_formspec_input(function(formname, fields)
62 if formname == "karaoke" and fields.title and fields.text and fields.title ~= "" and fields.text ~= "" then
63 storage:set_string(fields.title, fields.text)
64 print("Song saved: " .. fields.title)
68 minetest.register_globalstep(function(dtime)
73 local line = table.remove(lines, 1)
76 minetest.send_chat_message("/me " .. minetest.colorize("#C609FF", line) .. "")
77 etime = line:len() * 0.1