merge master of minetest/minetest_game

This commit is contained in:
tchncs 2016-03-29 16:08:55 +02:00
commit 0b4aa7b59c
15 changed files with 383 additions and 211 deletions

View file

@ -11,14 +11,24 @@ minetest.register_craftitem("default:paper", {
inventory_image = "default_paper.png",
})
local function book_on_use(itemstack, user, pointed_thing)
local function book_on_use(itemstack, user)
local player_name = user:get_player_name()
local data = minetest.deserialize(itemstack:get_metadata())
local title, text, owner = "", "", player_name
local formspec, title, text, owner = "", "", "", player_name
local page, page_max, cpp = 1, 1, 650
if data then
title, text, owner = data.title, data.text, data.owner
title = data.title
text = data.text
owner = data.owner
if data.page then
page = data.page
page_max = data.page_max
cpp = data.chars_per_page
end
end
local formspec
if owner == player_name then
formspec = "size[8,8]" .. default.gui_bg ..
default.gui_bg_img ..
@ -31,48 +41,81 @@ local function book_on_use(itemstack, user, pointed_thing)
formspec = "size[8,8]" .. default.gui_bg ..
default.gui_bg_img ..
"label[0.5,0.5;by " .. owner .. "]" ..
"label[0.5,0;" .. minetest.formspec_escape(title) .. "]" ..
"textarea[0.5,1.5;7.5,7;text;;" ..
minetest.formspec_escape(text) .. "]"
"tablecolumns[color;text]" ..
"tableoptions[background=#00000000;highlight=#00000000;border=false]" ..
"table[0.4,0;7,0.5;title;#FFFF00," .. minetest.formspec_escape(title) .. "]" ..
"textarea[0.5,1.5;7.5,7;;" .. minetest.formspec_escape(text:sub(
(cpp * page) - cpp, cpp * page)) .. ";]" ..
"button[2.4,7.6;0.8,0.8;book_prev;<]" ..
"label[3.2,7.7;Page " .. page .. " of " .. page_max .. "]" ..
"button[4.9,7.6;0.8,0.8;book_next;>]"
end
minetest.show_formspec(user:get_player_name(), "default:book", formspec)
minetest.show_formspec(player_name, "default:book", formspec)
end
minetest.register_on_player_receive_fields(function(player, form_name, fields)
if form_name ~= "default:book" or not fields.save or
fields.title == "" or fields.text == "" then
return
end
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "default:book" then return end
local inv = player:get_inventory()
local stack = player:get_wielded_item()
local new_stack, data
if stack:get_name() ~= "default:book_written" then
local count = stack:get_count()
if count == 1 then
stack:set_name("default:book_written")
if fields.save and fields.title ~= "" and fields.text ~= "" then
local new_stack, data
if stack:get_name() ~= "default:book_written" then
local count = stack:get_count()
if count == 1 then
stack:set_name("default:book_written")
else
stack:set_count(count - 1)
new_stack = ItemStack("default:book_written")
end
else
stack:set_count(count - 1)
new_stack = ItemStack("default:book_written")
data = minetest.deserialize(stack:get_metadata())
end
else
data = minetest.deserialize(stack:get_metadata())
end
if not data then data = {} end
data.title = fields.title
data.text = fields.text
data.owner = player:get_player_name()
local data_str = minetest.serialize(data)
if new_stack then
new_stack:set_metadata(data_str)
if inv:room_for_item("main", new_stack) then
inv:add_item("main", new_stack)
if not data then data = {} end
data.title = fields.title
data.text = fields.text
data.text_len = fields.text:len()
data.page = 1
data.chars_per_page = 650
data.page_max = math.ceil(data.text_len / data.chars_per_page)
data.owner = player:get_player_name()
local data_str = minetest.serialize(data)
if new_stack then
new_stack:set_metadata(data_str)
if inv:room_for_item("main", new_stack) then
inv:add_item("main", new_stack)
else
minetest.add_item(player:getpos(), new_stack)
end
else
minetest.add_item(player:getpos(), new_stack)
stack:set_metadata(data_str)
end
else
player:set_wielded_item(stack)
elseif fields.book_next or fields.book_prev then
local data = minetest.deserialize(stack:get_metadata())
if not data.page then return end
if fields.book_next then
data.page = data.page + 1
if data.page > data.page_max then
data.page = 1
end
else
data.page = data.page - 1
if data.page == 0 then
data.page = data.page_max
end
end
local data_str = minetest.serialize(data)
stack:set_metadata(data_str)
book_on_use(stack, player)
end
player:set_wielded_item(stack)
end)
minetest.register_craftitem("default:book", {

View file

@ -40,9 +40,9 @@ end
function default.node_sound_sand_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_sand_footstep", gain = 0.2}
{name = "default_sand_footstep", gain = 0.12}
table.dug = table.dug or
{name = "default_sand_footstep", gain = 0.4}
{name = "default_sand_footstep", gain = 0.24}
table.place = table.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)

View file

@ -1204,7 +1204,6 @@ function default.register_decorations()
y_max = 31000,
schematic = minetest.get_modpath("default").."/schematics/aspen_tree.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({

View file

@ -14,7 +14,7 @@ language (for example pinewood and pine wood) the underscore form should be used
Stone
-----
(1. Material 2. Cobble variant 3. Brick variant [4. Modified forms])
(1. Material 2. Cobble variant 3. Brick variant 4. Modified forms)
default:stone
default:cobble
@ -33,7 +33,7 @@ default:obsidianbrick
Soft / Non-Stone
----------------
(1. Material [2. Modified forms])
(1. Material 2. Modified forms)
default:dirt
default:dirt_with_grass
@ -55,7 +55,7 @@ default:ice
Trees
-----
(1. Trunk 2. Fabricated trunk 3. Leaves 4. Sapling [5. Fruits])
(1. Trunk 2. Fabricated trunk 3. Leaves 4. Sapling 5. Fruits)
default:tree
default:wood
@ -82,9 +82,10 @@ default:aspen_tree
default:aspen_wood
default:aspen_leaves
default:aspen_sapling
Ores
----
(1. In stone 2. Block)
(1. In stone 2. Blocks)
default:stone_with_coal
default:coalblock
@ -107,6 +108,7 @@ default:diamondblock
Plantlife (non-cubic)
---------------------
default:cactus
default:papyrus
default:dry_shrub
@ -139,6 +141,7 @@ default:lava_flowing
Tools / "Advanced" crafting / Non-"natural"
-------------------------------------------
default:torch
default:chest
@ -169,6 +172,7 @@ default:meselamp
Misc
----
default:cloud
default:nyancat
default:nyancat_rainbow
@ -884,7 +888,7 @@ minetest.register_node("default:cactus", {
tiles = {"default_cactus_top.png", "default_cactus_top.png",
"default_cactus_side.png"},
paramtype2 = "facedir",
groups = {snappy = 1, choppy = 3, flammable = 2},
groups = {snappy = 1, choppy = 3},
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node,
})
@ -942,7 +946,7 @@ minetest.register_node("default:junglegrass", {
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flammable = 2, flora = 1, attached_node = 1},
groups = {snappy = 3, flora = 1, attached_node = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
@ -963,7 +967,7 @@ minetest.register_node("default:grass_1", {
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flammable = 3, flora = 1, attached_node = 1},
groups = {snappy = 3, flora = 1, attached_node = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
@ -992,8 +996,8 @@ for i = 2, 5 do
walkable = false,
buildable_to = true,
drop = "default:grass_1",
groups = {snappy = 3, flammable = 3, flora = 1,
attached_node = 1, not_in_creative_inventory = 1},
groups = {snappy = 3, flora = 1, attached_node = 1,
not_in_creative_inventory = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
@ -1667,7 +1671,7 @@ end
register_sign("wood", "Wooden", {
sounds = default.node_sound_wood_defaults(),
groups = {choppy = 2, attached_node = 1, flammable = 2}
groups = {choppy = 2, attached_node = 1, flammable = 2, oddly_breakable_by_hand = 3}
})
register_sign("steel", "Steel", {

View file

@ -403,7 +403,7 @@ function default.grow_new_jungle_tree(pos)
local path = minetest.get_modpath("default") ..
"/schematics/jungle_tree_from_sapling.mts"
minetest.place_schematic({x = pos.x - 2, y = pos.y - 1, z = pos.z - 2},
path, "0", nil, false)
path, "random", nil, false)
end