---book is item
---craftable
---save metadata of text
---reload text
---write to make permenant
-
+--this is the gui for un-inked books
local open_book_gui = function(itemstack, user)
+ minetest.sound_play("book_open", {to_player=user:get_player_name()})
local meta = itemstack:get_meta()
local book_text = meta:get_string("book.book_text")
if book_text == "" then
minetest.show_formspec(user:get_player_name(), "book.book_gui", book_writing_formspec)
end
+
+--this is the gui for permenantly written books
local open_book_inked_gui = function(itemstack, user)
+ minetest.sound_play("book_open", {to_player=user:get_player_name()})
local meta = itemstack:get_meta()
local book_text = meta:get_string("book.book_text")
"style_type[textarea;textcolor=black;border=false;noclip=false]"..
"textarea[0.3,0;9,0.5;;;"..book_title.."]"..
"textarea[0.3,0.3;9,9;;;"..book_text.."]"..
- "button_exit[4,8.3;1,1;close;close]"
-
+ "button_exit[4,8.3;1,1;book.book_close;close]"
minetest.show_formspec(user:get_player_name(), "book.book_gui", book_writing_formspec)
end
+
+--handle the book gui
minetest.register_on_player_receive_fields(function(player, formname, fields)
if not formname == "book.book_gui" then return end
player:set_wielded_item(itemstack)
minetest.close_formspec(player:get_player_name(), "book.book_gui")
+ minetest.sound_play("book_write", {to_player=player:get_player_name()})
elseif fields["book.book_ink"] and fields["book.book_text"] and fields["book.book_text"] then
local itemstack = ItemStack("book:book_written")
local meta = itemstack:get_meta()
meta:set_string("book.book_text", fields["book.book_text"])
meta:set_string("book.book_title", fields["book.book_title"])
meta:set_string("description", fields["book.book_title"])
-
player:set_wielded_item(itemstack)
minetest.close_formspec(player:get_player_name(), "book.book_gui")
+ minetest.sound_play("book_close", {to_player=player:get_player_name()})
+ elseif fields["book.book_close"] then
+ minetest.sound_play("book_close", {to_player=player:get_player_name()})
end
end)
-
+--this is the book item
minetest.register_craftitem("book:book",{
description = "Book",
groups = {book = 1, written = 0},
inventory_image = "book.png",
on_place = function(itemstack, user, pointed_thing)
- print("make books placable on the ground")
+ if not pointed_thing.type == "node" then
+ return
+ end
+ local sneak = user:get_player_control().sneak
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, user, pointed_thing)
+ return
+ end
+ --print("make books placable on the ground")
open_book_gui(itemstack, user)
end,
end,
})
+--permenantly written books
minetest.register_craftitem("book:book_written",{
description = "Book",
groups = {book = 1, written = 1},
inventory_image = "book_written.png",
on_place = function(itemstack, user, pointed_thing)
- print("make books placable on the ground")
+ if not pointed_thing.type == "node" then
+ return
+ end
+ local sneak = user:get_player_control().sneak
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, user, pointed_thing)
+ return
+ end
+ --print("make books placable on the ground")
open_book_inked_gui(itemstack, user)
end,
end,
})
+--change this to paper
minetest.register_craft({
output = "book:book",
recipe = {
- {"main:wood","weather:snowball","main:wood"},
- {"main:wood","weather:snowball","main:wood"},
- {"main:wood","weather:snowball","main:wood"},
+ {"main:wood","main:wood","main:wood"},
+ {"main:paper","main:paper","main:paper"},
+ {"main:wood","main:wood","main:wood"},
}
})
--book book book