From a71fc96bad60464848b4cd7a3b7a98c2f0dcb5ff Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 25 Jul 2015 23:10:15 -0500 Subject: [PATCH] Add books_plus, give locked book to new players --- mods/books_plus/depends.txt | 1 + mods/books_plus/init.lua | 171 ++++++++++++++++++++++++ mods/books_plus/textures/booklocked.png | Bin 0 -> 3113 bytes mods/give_initial_stuff/init.lua | 1 + 4 files changed, 173 insertions(+) create mode 100755 mods/books_plus/depends.txt create mode 100755 mods/books_plus/init.lua create mode 100755 mods/books_plus/textures/booklocked.png diff --git a/mods/books_plus/depends.txt b/mods/books_plus/depends.txt new file mode 100755 index 0000000..331d858 --- /dev/null +++ b/mods/books_plus/depends.txt @@ -0,0 +1 @@ +default \ No newline at end of file diff --git a/mods/books_plus/init.lua b/mods/books_plus/init.lua new file mode 100755 index 0000000..7a05e93 --- /dev/null +++ b/mods/books_plus/init.lua @@ -0,0 +1,171 @@ + --= Book (use to read or write to) + + minetest.register_craftitem("books_plus:booklocked", { + description = "Locked Book", + inventory_image = "booklocked.png", + groups = {book=1,locked_book=1}, + stack_max = 1, + on_use = function(itemstack, user, pointed_thing) + local player_name = user:get_player_name() + local data = minetest.deserialize(itemstack:get_metadata()) + local title, text, owner = "", "", player_name + if data then + title, text, owner = data.title, data.text, data.owner + + end + local formspec + if owner == player_name or owner=="" then + formspec = "size[8,8]"..default.gui_bg.. -- default.gui_bg_img.. + "field[0.5,1;7.5,0;title;Title:;".. + minetest.formspec_escape(title).."]".. + "textarea[0.5,1.5;7.5,7;text;Contents:;".. + minetest.formspec_escape(text).."]".. + "button_exit[2.5,7.5;3,1;save;Save]" + minetest.show_formspec(user:get_player_name(), "default:book", formspec) + else + formspec = "size[8,8]"..default.gui_bg.. -- default.gui_bg_img.. + "button_exit[7,0.25;1,0.5;close;x]".. + "label[0.5,0;"..minetest.formspec_escape(title).."]".. + "label[0.5,0.5;by "..owner.."]".. + "textarea[0.5,1.5;7.5,7;text;;".. + minetest.formspec_escape(text).."]" + minetest.show_formspec(user:get_player_name(), "default:lockedbook", formspec) + end + end, + }) + + minetest.register_on_player_receive_fields(function(player, form_name, fields) + if form_name ~= "default:book" or not fields.save then + return + end + + local stack = player:get_wielded_item() + local empty_book=minetest.get_item_group(stack:get_name(), "empty_book") == 1 + local book_written=minetest.get_item_group(stack:get_name(), "book") == 1 + if (not empty_book) and (not book_written) then + return + end + print("fields1:"..dump(fields)) + print("data1:"..dump(data)) + local data = minetest.deserialize(stack:get_metadata()) + if not data then data = {} end + data.title, data.text, data.owner = + fields.title, fields.text, player:get_player_name() + if empty_book then + if (fields.title=="" and fields.text=="") then + return + end + if stack:get_count()>1 then + local stack2=ItemStack("books_plus:written_book") + playerinv=player:get_inventory() + if playerinv:room_for_item("main", stack2) then + stack2:set_metadata(minetest.serialize(data)) + stack:take_item(1) + playerinv:add_item("main", stack2) + player:set_wielded_item(stack) + end + else + local stack2=ItemStack("books_plus:written_book") + stack2:set_metadata(minetest.serialize(data)) + player:set_wielded_item(stack2) + end + + else + print("fields:"..dump(fields)) + print("data:"..dump(data)) + + if fields.title=="" and fields.text=="" then + if minetest.get_item_group(stack:get_name(), "locked_book") == 1 then + data.owner="" + else + stack:replace("default:book") + end + end + stack:set_metadata(minetest.serialize(data)) + player:set_wielded_item(stack) + + end + end) + +minetest.register_craft({ + type = "shapeless", + output = "default:book", + recipe = {"books_plus:written_book", "dye:white"}, +}) +--[[ +minetest.register_node("books_plus:writing_table", { + tiles = { + "default_wood.png", + "default_wood.png", + "default_wood.png", + "default_wood.png", + "default_wood.png", + "default_wood.png" + }, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {-0.5, 0.3125, -0.5, 0.5, 0.5, 0.5}, -- NodeBox9 + {0.375, -0.5, -0.5, 0.5, 0.3125, -0.375}, -- NodeBox11 + {0.375, -0.5, 0.375, 0.5, 0.3125, 0.5}, -- NodeBox12 + {-0.5, -0.5, 0.375, -0.375, 0.3125, 0.5}, -- NodeBox14 + {-0.5, -0.5, -0.5, -0.375, 0.375, -0.375}, -- NodeBox15 + } + } +}) +--]] + minetest.register_craftitem(":default:book", { + description = "Book", + inventory_image = "default_book.png", + groups = {empty_book=1}, + stack_max = 99, + on_use = function(itemstack, user, pointed_thing) + local title="" + local text = "" + local formspec + + formspec = "size[8,8]"..default.gui_bg.. -- default.gui_bg_img.. + "field[0.5,1;7.5,0;title;Title:;".. + minetest.formspec_escape(title).."]".. + "textarea[0.5,1.5;7.5,7;text;Contents:;".. + minetest.formspec_escape(text).."]".. + "button_exit[2.5,7.5;3,1;save;Save]" + minetest.show_formspec(user:get_player_name(), "default:book", formspec) + end, + }) + minetest.register_craftitem("books_plus:written_book", { + description = "Book written", + inventory_image = "default_book.png", + groups = {book=1}, + stack_max = 1, + on_use = function(itemstack, user, pointed_thing) + local player_name = user:get_player_name() + local data = minetest.deserialize(itemstack:get_metadata()) + local title="" + local text = "" + if data then + title, text = data.title, data.text + end + local formspec + + formspec = "size[8,8]"..default.gui_bg.. -- default.gui_bg_img.. + "field[0.5,1;7.5,0;title;Title:;".. + minetest.formspec_escape(title).."]".. + "textarea[0.5,1.5;7.5,7;text;Contents:;".. + minetest.formspec_escape(text).."]".. + "button_exit[2.5,7.5;3,1;save;Save]" + minetest.show_formspec(user:get_player_name(), "default:book", formspec) + + + end, + }) + + +minetest.register_craft({ + type ="shapeless", + output = "books_plus:booklocked", + recipe ={'default:book', "default:steel_ingot"}, + +}) \ No newline at end of file diff --git a/mods/books_plus/textures/booklocked.png b/mods/books_plus/textures/booklocked.png new file mode 100755 index 0000000000000000000000000000000000000000..4114ccd3c45e2198f061637e961dc9612e9c35bc GIT binary patch literal 3113 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 Di$la} literal 0 HcmV?d00001 diff --git a/mods/give_initial_stuff/init.lua b/mods/give_initial_stuff/init.lua index 6788289..7744fa9 100755 --- a/mods/give_initial_stuff/init.lua +++ b/mods/give_initial_stuff/init.lua @@ -5,6 +5,7 @@ minetest.register_on_newplayer(function(player) player:get_inventory():add_item('main', 'default:torch 25') player:get_inventory():add_item('main', 'default:tree 3') player:get_inventory():add_item('main', 'default:axe_steel') + player:get_inventory():add_item('main', 'books_plus:booklocked') if minetest.get_modpath("landrush") ~= nil then player:get_inventory():add_item('main', 'landrush:landclaim 4') end