Useful indeed !
Adding 'groups = {
book=1},' when registering the tool would allow for storage in bookshelves
Code: Select all
minetest.register_tool("serverguide:book", {
description = serverguide_Book_title,
inventory_image = "default_book.png",
-- Can be stored in bookshelves
groups = {book=1},
on_use = function(itemstack, user, pointed_thing)
serverguide_guide(user,1)
return itemstack
It would be great if
Internationalization Lib (intllib) was supported too !
I might try to do that soon if I find the time
EDIT : I looked again and made two other minor changes
- colorized the
book in yellow so it doesn't look like other books
- added an option 'add_to_inventory' at the beginning of the init.lua file and the corresponding if condition in the 'register_on_newplayer' function
( default value is minetest.setting_getbool("give_initial_stuff") so it does what is specified in minetest.conf, and can also be set to true or false to override it )
here is my complete file :
Code: Select all
-- add to inventory option
-- true : add to new player inventory
-- false : do not add...
-- minetest.setting_getbool("give_initial_stuff") : depend on the give_initial_stuff option in minetest.conf
local add_to_inventory = minetest.setting_getbool("give_initial_stuff")
local serverguide_Book_title="The server guide"
local serverguide_Tab_Text_1="Server info\n Type /guide to see this"
local serverguide_Tab_Text_2="Server Rules \nNo ask for privs or admin stuff \nNo swearing or bad names (like God, fuc...)\nNo griefing\nNo bad stealing or steal people's usernames\nNo hacking\nDon't mess up with moderators or admins"
local serverguide_Tab_Text_3="Rulers info (moderator or admins)"
local serverguide_Tab_Text_4="Commands:\nSet your home with /sethome say /home to teleport back \nSee who are online /status"
local serverguide_Tab_Text_5="Help info\nHelp you self\n Only call a moderator or admin if you\n get problems that you cant fix it by own"
local serverguide_Tab_1="Server"
local serverguide_Tab_2="Rules"
local serverguide_Tab_3="Rulers"
local serverguide_Tab_4="Commands"
local serverguide_Tab_5="Help"
local function serverguide_guide(user,text_to_show)
local text=""
if text_to_show==1 then text=serverguide_Tab_Text_1 end
if text_to_show==2 then text=serverguide_Tab_Text_2 end
if text_to_show==3 then text=serverguide_Tab_Text_3 end
if text_to_show==4 then text=serverguide_Tab_Text_4 end
if text_to_show==5 then text=serverguide_Tab_Text_5 end
local form="size[8.5,9]" ..default.gui_bg..default.gui_bg_img..
"button[0,0;1.5,1;tab1;" .. serverguide_Tab_1 .. "]" ..
"button[1.5,0;1.5,1;tab2;" .. serverguide_Tab_2 .. "]" ..
"button[3,0;1.5,1;tab3;" .. serverguide_Tab_3 .. "]" ..
"button[4.5,0;1.5,1;tab4;" .. serverguide_Tab_4 .. "]" ..
"button[6,0;1.5,1;tab5;" .. serverguide_Tab_5 .. "]" ..
"button_exit[7.5,0; 1,1;tab6;X]" ..
"label[0,1;"..text .."]"
minetest.show_formspec(user:get_player_name(), "serverguide",form)
end
minetest.register_on_player_receive_fields(function(player, form, pressed)
if form=="serverguide" then
if pressed.tab1 then serverguide_guide(player,1) end
if pressed.tab2 then serverguide_guide(player,2) end
if pressed.tab3 then serverguide_guide(player,3) end
if pressed.tab4 then serverguide_guide(player,4) end
if pressed.tab5 then serverguide_guide(player,5) end
end
end)
minetest.register_tool("serverguide:book", {
description = serverguide_Book_title,
inventory_image = "default_book.png^[colorize:#ffff00:100",
-- Can be stored in bookshelves
groups = {book=1},
on_use = function(itemstack, user, pointed_thing)
serverguide_guide(user,1)
return itemstack
end,
on_place = function(itemstack, placer, pointed_thing)
local pos = pointed_thing.under
local node = minetest.get_node_or_nil(pos)
local def = node and minetest.registered_nodes[node.name]
if not def or not def.buildable_to then
pos = pointed_thing.above
node = minetest.get_node_or_nil(pos)
def = node and minetest.registered_nodes[node.name]
if not def or not def.buildable_to then return itemstack end
end
if minetest.is_protected(pos, placer:get_player_name()) then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, {name = "serverguide:guide",param2 = fdir,})
itemstack:take_item()
return itemstack
end
})
minetest.register_alias("guide", "serverguide:book")
minetest.register_craft({output = "serverguide:book",recipe = {{"default:stick","default:stick"},}})
minetest.register_node("serverguide:guide", {
description = serverguide_Book_title,
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
drop="serverguide:book",
node_box = {
type = "fixed",
fixed = {0.35,-0.3,0.45,-0.35,-0.5,-0.45},
},
tiles = {
"default_gold_block.png^default_book.png",
"default_gold_block.png",
"default_gold_block.png",
"default_gold_block.png",
"default_gold_block.png",
"default_gold_block.png",},
groups = {cracky=1,oddly_breakable_by_hand=3},
sounds=default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", serverguide_Book_title)
end,
on_rightclick = function(pos, node, clicker)
serverguide_guide(clicker,1)
end
})
minetest.register_on_newplayer(function(player)
if add_to_inventory then
player:get_inventory():add_item("main", "serverguide:book")
end
end)
minetest.register_chatcommand("guide", {
params = "",
description = serverguide_Book_title,
func = function(name, param)
serverguide_guide(minetest.get_player_by_name(name),1)
return true
end
})
sorry for the long post ... (that's the end of it, I promise)