From dd4266680e383786e73d2803251e0503fcd12bed Mon Sep 17 00:00:00 2001 From: Maksim Date: Sat, 11 May 2019 22:20:34 +0200 Subject: [PATCH] Update default (part 2 of ?) and fix deprecated --- files/default/chests.lua | 56 +- files/default/craftitems.lua | 158 +- files/default/mapgen.lua | 4 +- files/default/nodes.lua | 1456 ++++++++++------- files/default/textures/default_book.png | Bin 258 -> 831 bytes .../default/textures/default_book_written.png | Bin 0 -> 1900 bytes files/default/textures/default_brick.png | Bin 524 -> 4799 bytes .../textures/default_charcoal_lump.png | Bin 737 -> 1621 bytes files/default/textures/default_clay.png | Bin 591 -> 5898 bytes files/default/textures/default_clay_brick.png | Bin 221 -> 1231 bytes files/default/textures/default_coal_block.png | Bin 953 -> 1751 bytes files/default/textures/default_coal_lump.png | Bin 329 -> 1416 bytes .../textures/default_glowstone_dust.png | Bin 213 -> 846 bytes files/default/textures/default_gravel.png | Bin 1328 -> 6512 bytes files/default/textures/default_jungletree.png | Bin 1033 -> 2088 bytes .../textures/default_jungletree_top.png | Bin 629 -> 5903 bytes files/default/textures/default_junglewood.png | Bin 324 -> 4398 bytes .../default/textures/default_ladder_wood.png | Bin 223 -> 874 bytes .../default/textures/default_lapis_block.png | Bin 1552 -> 5979 bytes files/default/textures/default_papyrus.png | Bin 240 -> 967 bytes files/default/textures/default_pine_tree.png | Bin 731 -> 1740 bytes .../textures/default_pine_tree_top.png | Bin 813 -> 5886 bytes files/default/textures/default_pine_wood.png | Bin 319 -> 3511 bytes files/default/textures/default_snowball.png | Bin 296 -> 1660 bytes files/default/textures/default_sulphur.png | Bin 226 -> 0 bytes files/default/trees.lua | 93 +- files/potions/potions/init.lua | 1 + files/vessels/README.txt | 22 - files/vessels/depends.txt | 1 - files/vessels/init.lua | 28 - .../vessels/textures/vessels_glass_bottle.png | Bin 228 -> 0 bytes .../textures/vessels_glass_bottle_inv.png | Bin 228 -> 0 bytes 32 files changed, 1142 insertions(+), 677 deletions(-) create mode 100644 files/default/textures/default_book_written.png delete mode 100644 files/default/textures/default_sulphur.png delete mode 100644 files/vessels/README.txt delete mode 100644 files/vessels/depends.txt delete mode 100644 files/vessels/init.lua delete mode 100644 files/vessels/textures/vessels_glass_bottle.png delete mode 100644 files/vessels/textures/vessels_glass_bottle_inv.png diff --git a/files/default/chests.lua b/files/default/chests.lua index 073e61b..d32ab19 100644 --- a/files/default/chests.lua +++ b/files/default/chests.lua @@ -27,20 +27,20 @@ local function get_chest_neighborpos(pos, param2, side) end local function hacky_swap_node(pos,name, param2) - local node = minetest.env:get_node(pos) - local meta = minetest.env:get_meta(pos) + local node = minetest.get_node(pos) + local meta = minetest.get_meta(pos) if node.name == name then return end node.name = name node.param2 = param2 or node.param2 local meta0 = meta:to_table() - minetest.env:set_node(pos,node) - meta = minetest.env:get_meta(pos) + minetest.set_node(pos,node) + meta = minetest.get_meta(pos) meta:from_table(meta0) end -default.chest_formspec = +default.chest_formspec = "size[9,9.75]".. "image_button_exit[8.4,-0.1;0.75,0.75;close.png;exit;;true;true;]".. "background[-0.19,-0.25;9.41,10.48;formspec_chest.png]".. @@ -62,7 +62,7 @@ function default.get_locked_chest_formspec(pos) meta:set_int("chest_inv_ver",chest_inv_vers) end local spos = pos.x .. "," .. pos.y .. "," ..pos.z - local formspec = + local formspec = "size[9,9.75]".. "image_button_exit[8.4,-0.1;0.75,0.75;close.png;exit;;true;true;]".. "background[-0.19,-0.25;9.41,10.48;formspec_chest.png]".. @@ -98,10 +98,10 @@ minetest.register_node("default:chest", { legacy_facedir_simple = true, sounds = default.node_sound_wood_defaults(), on_construct = function(pos) - local param2 = minetest.env:get_node(pos).param2 - local meta = minetest.env:get_meta(pos) - if minetest.env:get_node(get_chest_neighborpos(pos, param2, "right")).name == "default:chest" then - minetest.env:set_node(pos, {name="default:chest_right",param2=param2}) + local param2 = minetest.get_node(pos).param2 + local meta = minetest.get_meta(pos) + if minetest.get_node(get_chest_neighborpos(pos, param2, "right")).name == "default:chest" then + minetest.set_node(pos, {name="default:chest_right",param2=param2}) local p = get_chest_neighborpos(pos, param2, "right") meta:set_string("formspec", "size[9,11.5]".. @@ -112,7 +112,7 @@ minetest.register_node("default:chest", { "list[current_player;main;0,10.5;9,1;]") meta:set_string("infotext", "Large Chest") hacky_swap_node(p, "default:chest_left", param2) - local m = minetest.env:get_meta(p) + local m = minetest.get_meta(p) m:set_string("formspec", "size[9,11.5]".. "image_button_exit[8.4,-0.1;0.75,0.75;close.png;exit;;true;true;]".. @@ -121,8 +121,8 @@ minetest.register_node("default:chest", { "list[current_player;main;0,7;9,3;9]".. "list[current_player;main;0,10.5;9,1;]") m:set_string("infotext", "Large Chest") - elseif minetest.env:get_node(get_chest_neighborpos(pos, param2, "left")).name == "default:chest" then - minetest.env:set_node(pos, {name="default:chest_left",param2=param2}) + elseif minetest.get_node(get_chest_neighborpos(pos, param2, "left")).name == "default:chest" then + minetest.set_node(pos, {name="default:chest_left",param2=param2}) local p = get_chest_neighborpos(pos, param2, "left") meta:set_string("formspec", "size[9,11.5]".. @@ -133,7 +133,7 @@ minetest.register_node("default:chest", { "list[current_player;main;0,10.5;9,1;]") meta:set_string("infotext", "Large Chest") hacky_swap_node(p, "default:chest_right", param2) - local m = minetest.env:get_meta(p) + local m = minetest.get_meta(p) m:set_string("formspec", "size[9,11.5]".. "image_button_exit[8.4,-0.1;0.75,0.75;close.png;exit;;true;true;]".. @@ -155,7 +155,7 @@ minetest.register_node("default:chest", { inv:set_size("main", 9*3) end, after_dig_node = function(pos, oldnode, oldmetadata, digger) - local meta = minetest.env:get_meta(pos) + local meta = minetest.get_meta(pos) local meta2 = meta meta:from_table(oldmetadata) local inv = meta:get_inventory() @@ -163,7 +163,7 @@ minetest.register_node("default:chest", { local stack = inv:get_stack("main", i) if not stack:is_empty() then local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} - minetest.env:add_item(p, stack) + minetest.add_item(p, stack) end end meta:from_table(meta2:to_table()) @@ -197,16 +197,16 @@ minetest.register_node("default:chest_left", { drop = "default:chest", sounds = default.node_sound_wood_defaults(), on_destruct = function(pos) - local m = minetest.env:get_meta(pos) + local m = minetest.get_meta(pos) if m:get_string("infotext") == "Chest" then return end - local param2 = minetest.env:get_node(pos).param2 + local param2 = minetest.get_node(pos).param2 local p = get_chest_neighborpos(pos, param2, "left") - if not p or minetest.env:get_node(p).name ~= "default:chest_right" then + if not p or minetest.get_node(p).name ~= "default:chest_right" then return end - local meta = minetest.env:get_meta(p) + local meta = minetest.get_meta(p) meta:set_string("formspec", "size[9,8.5]".. "image_button_exit[8.4,-0.1;0.75,0.75;close.png;exit;;true;true;]".. @@ -217,7 +217,7 @@ minetest.register_node("default:chest_left", { hacky_swap_node(p, "default:chest") end, after_dig_node = function(pos, oldnode, oldmetadata, digger) - local meta = minetest.env:get_meta(pos) + local meta = minetest.get_meta(pos) local meta2 = meta meta:from_table(oldmetadata) local inv = meta:get_inventory() @@ -225,7 +225,7 @@ minetest.register_node("default:chest_left", { local stack = inv:get_stack("main", i) if not stack:is_empty() then local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} - minetest.env:add_item(p, stack) + minetest.add_item(p, stack) end end meta:from_table(meta2:to_table()) @@ -252,16 +252,16 @@ minetest.register_node("default:chest_right", { drop = "default:chest", sounds = default.node_sound_wood_defaults(), on_destruct = function(pos) - local m = minetest.env:get_meta(pos) + local m = minetest.get_meta(pos) if m:get_string("infotext") == "Chest" then return end - local param2 = minetest.env:get_node(pos).param2 + local param2 = minetest.get_node(pos).param2 local p = get_chest_neighborpos(pos, param2, "right") - if not p or minetest.env:get_node(p).name ~= "default:chest_left" then + if not p or minetest.get_node(p).name ~= "default:chest_left" then return end - local meta = minetest.env:get_meta(p) + local meta = minetest.get_meta(p) meta:set_string("formspec", "size[9,8.5]".. "image_button_exit[9,0;1,1;close.png;exit;;true;true;]".. @@ -272,7 +272,7 @@ minetest.register_node("default:chest_right", { hacky_swap_node(p, "default:chest") end, after_dig_node = function(pos, oldnode, oldmetadata, digger) - local meta = minetest.env:get_meta(pos) + local meta = minetest.get_meta(pos) local meta2 = meta meta:from_table(oldmetadata) local inv = meta:get_inventory() @@ -280,7 +280,7 @@ minetest.register_node("default:chest_right", { local stack = inv:get_stack("main", i) if not stack:is_empty() then local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} - minetest.env:add_item(p, stack) + minetest.add_item(p, stack) end end meta:from_table(meta2:to_table()) diff --git a/files/default/craftitems.lua b/files/default/craftitems.lua index f570f48..364d174 100644 --- a/files/default/craftitems.lua +++ b/files/default/craftitems.lua @@ -17,10 +17,162 @@ minetest.register_craftitem("default:paper", { groups = {misc = 1}, }) + + +local lpp = 14 -- Lines per book's page +local function book_on_use(itemstack, user) + local player_name = user:get_player_name() + local meta = itemstack:get_meta() + local title, text, owner = "", "", player_name + local page, page_max, lines, string = 1, 1, {}, "" + + -- Backwards compatibility + local old_data = minetest.deserialize(itemstack:get_metadata()) + if old_data then + meta:from_table({ fields = old_data }) + end + + local data = meta:to_table().fields + + if data.owner then + title = data.title + text = data.text + owner = data.owner + + for str in (text .. "\n"):gmatch("([^\n]*)[\n]") do + lines[#lines+1] = str + end + + if data.page then + page = data.page + page_max = data.page_max + + for i = ((lpp * page) - lpp) + 1, lpp * page do + if not lines[i] then break end + string = string .. lines[i] .. "\n" + end + end + end + + local formspec + if owner == player_name then + formspec = "size[8,8]" .. + "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]" + else + formspec = "size[8,8]" .. + "label[0.5,0.5;by " .. owner .. "]" .. + "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(string ~= "" and string or text) .. ";]" .. + "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(player_name, "default:book", formspec) + return itemstack +end + +local max_text_size = 10000 +local max_title_size = 80 +local short_title_size = 35 +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() + + if fields.save and fields.title and fields.text + 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 + data = stack:get_meta():to_table().fields + end + + if data and data.owner and data.owner ~= player:get_player_name() then + return + end + + if not data then data = {} end + data.title = fields.title:sub(1, max_title_size) + data.owner = player:get_player_name() + local short_title = data.title + -- Don't bother triming the title if the trailing dots would make it longer + if #short_title > short_title_size + 3 then + short_title = short_title:sub(1, short_title_size) .. "..." + end + data.description = "\""..short_title.."\" by "..data.owner + data.text = fields.text:sub(1, max_text_size) + data.text = data.text:gsub("\r\n", "\n"):gsub("\r", "\n") + data.page = 1 + data.page_max = math.ceil((#data.text:gsub("[^\n]", "") + 1) / lpp) + + if new_stack then + new_stack:get_meta():from_table({ fields = data }) + if inv:room_for_item("main", new_stack) then + inv:add_item("main", new_stack) + else + minetest.add_item(player:get_pos(), new_stack) + end + else + stack:get_meta():from_table({ fields = data }) + end + + elseif fields.book_next or fields.book_prev then + local data = stack:get_meta():to_table().fields + if not data or not data.page then + return + end + + data.page = tonumber(data.page) + data.page_max = tonumber(data.page_max) + + 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 + + stack:get_meta():from_table({fields = data}) + stack = book_on_use(stack, player) + end + + -- Update stack + player:set_wielded_item(stack) +end) + minetest.register_craftitem("default:book", { - description = "Book", - inventory_image = "default_book.png", - groups = {misc = 1}, + description = "Book", + inventory_image = "default_book.png", + groups = {book = 1, flammable = 3, misc = 1}, + on_use = book_on_use, +}) + +minetest.register_craftitem("default:book_written", { + description = "Book With Text", + inventory_image = "default_book_written.png", + groups = {book = 1, not_in_creative_inventory = 1, flammable = 3}, + stack_max = 1, + on_use = book_on_use, }) minetest.register_craftitem("default:coal_lump", { diff --git a/files/default/mapgen.lua b/files/default/mapgen.lua index 3491c89..c9f6038 100644 --- a/files/default/mapgen.lua +++ b/files/default/mapgen.lua @@ -1047,7 +1047,7 @@ function default.register_decorations() -- Emergent jungle tree -- Due to 32 node height, altitude is limited and prescence depends on chunksize - local chunksize = tonumber(minetest.get_mapgen_setting("chunksize")) +--[[ local chunksize = tonumber(minetest.get_mapgen_setting("chunksize")) if chunksize >= 5 then minetest.register_decoration({ name = "default:emergent_jungle_tree", @@ -1072,7 +1072,7 @@ function default.register_decorations() rotation = "random", place_offset_y = -4, }) - end + end]]-- -- Jungle tree and log diff --git a/files/default/nodes.lua b/files/default/nodes.lua index c782f9a..5f49ca4 100644 --- a/files/default/nodes.lua +++ b/files/default/nodes.lua @@ -5,143 +5,261 @@ -- minetest.register_node("default:stone", { - description = "Stone", - tiles = {"default_stone.png"}, - groups = {cracky = 3, stone = 1, building = 1, decorative = 1}, - drop = 'default:cobble', - legacy_mineral = true, - sounds = default.node_sound_stone_defaults(), + description = "Stone", + tiles = {"default_stone.png"}, + groups = {cracky = 3, stone = 1, building = 1, decorative = 1}, + drop = 'default:cobble', + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:cobble", { - description = "Cobblestone", - tiles = {"default_cobble.png"}, - groups = {cracky = 3, stone = 2, building = 1, decorative = 1}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:mossycobble", { - description = "Mossy Cobblestone", - tiles = {"default_mossycobble.png"}, - groups = {cracky = 3, building = 1, decorative = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Cobblestone", + tiles = {"default_cobble.png"}, + groups = {cracky = 3, stone = 2, building = 1, decorative = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:stonebrick", { - description = "Stone Brick", - tiles = {"default_stone_brick.png"}, - groups = {cracky = 3, stone = 1, building = 1, decorative = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Stone Brick", + paramtype2 = "facedir", + place_param2 = 0, + tiles = {"default_stone_brick.png"}, + is_ground_content = false, + groups = {cracky = 2, stone = 1, building = 1, decorative = 1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:mossycobble", { + description = "Mossy Cobblestone", + tiles = {"default_mossycobble.png"}, + is_ground_content = false, + groups = {cracky = 3, building = 1, decorative = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:stonebrickcarved", { - description = "Stone Brick Carved", - tiles = {"default_stonebrick_carved.png"}, - groups = {cracky = 3, stone = 1, building = 1, decorative = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Stone Brick Carved", + tiles = {"default_stonebrick_carved.png"}, + groups = {cracky = 3, stone = 1, building = 1, decorative = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:stonebrickcracked", { - description = "Stone Brick Cracked", - tiles = {"default_stonebrick_cracked.png"}, - groups = {cracky = 3, stone = 1, building = 1, decorative = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Stone Brick Cracked", + tiles = {"default_stonebrick_cracked.png"}, + groups = {cracky = 3, stone = 1, building = 1, decorative = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:stonebrickmossy", { - description = "Mossy Stone Brick", - tiles = {"default_stonebrick_mossy.png"}, - groups = {cracky = 3, stone = 1, building = 1, decorative = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Mossy Stone Brick", + tiles = {"default_stonebrick_mossy.png"}, + groups = {cracky = 3, stone = 1, building = 1, decorative = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:sandstone", { - description = "Sandstone", - tiles = {"default_sandstone_top.png", "default_sandstone_bottom.png", "default_sandstone_normal.png"}, - groups = {crumbly = 2,cracky = 2, building = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Sandstone", + tiles = {"default_sandstone_top.png", "default_sandstone_bottom.png", "default_sandstone_normal.png"}, + groups = {crumbly = 1, cracky = 3, building = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:sandstonesmooth", { - description = "Sandstone Smooth", - tiles = {"default_sandstone_top.png", "default_sandstone_bottom.png", "default_sandstone_smooth.png"}, - groups = {crumbly = 2,cracky = 2, building = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Smooth Sandstone", + tiles = {"default_sandstone_top.png", "default_sandstone_bottom.png", "default_sandstone_smooth.png"}, + groups = {crumbly = 2, cracky = 2, building = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:redsandstone", { - description = "Red SandStone", - tiles = {"default_redsandstone_top.png", "default_redsandstone_bottom.png", "default_redsandstone_normal.png"}, - groups = {crumbly = 2,cracky = 2, building = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Red SandStone", + tiles = {"default_redsandstone_top.png", "default_redsandstone_bottom.png", "default_redsandstone_normal.png"}, + groups = {crumbly = 2, cracky = 2, building = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:redsandstonesmooth", { - description = "Red SandStone Smooth", - tiles = {"default_redsandstone_top.png", "default_redsandstone_bottom.png", "default_redsandstone_smooth.png"}, - groups = {crumbly = 2,cracky = 2, building = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Red SandStone Smooth", + tiles = {"default_redsandstone_top.png", "default_redsandstone_bottom.png", "default_redsandstone_smooth.png"}, + groups = {crumbly = 2, cracky = 2, building = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:redsandstonecarved", { - description = "Red SandStone Carved", - tiles = {"default_redsandstone_top.png", "default_redsandstone_bottom.png", "default_redsandstone_carved.png"}, - groups = {crumbly = 2,cracky = 2, building = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Red SandStone Carved", + tiles = {"default_redsandstone_top.png", "default_redsandstone_bottom.png", "default_redsandstone_carved.png"}, + groups = {crumbly = 2, cracky = 2, building = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:bedrock", { - description = "Bedrock", - tiles = {"default_bedrock.png"}, - groups = {oddly_breakable_by_hand = 5, not_in_creative_inventory = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Bedrock", + tiles = {"default_bedrock.png"}, + groups = {oddly_breakable_by_hand = 5, not_in_creative_inventory = 1}, + sounds = default.node_sound_stone_defaults(), }) -minetest.register_node("default:gravel", { - description = "Gravel", - tiles = {"default_gravel.png"}, - groups = {crumbly = 2, falling_node = 1, building = 1}, - drop = { - max_items = 1, - items = { - {items = {'default:flint'},rarity = 7}, - {items = {'default:gravel'}} - } - }, - sounds = default.node_sound_dirt_defaults({ - footstep = {name="default_gravel_footstep", gain = 0.45}, - }), +minetest.register_node("default:obsidian", { + description = "Obsidian", + tiles = {"default_obsidian.png"}, + sounds = default.node_sound_stone_defaults(), + groups = {cracky = 4, level = 2, oddly_breakable_by_hand = 3, building = 1}, +}) +-- +-- Soft / Non-Stone +-- + +minetest.register_node("default:dirt", { + description = "Dirt", + tiles = {"default_dirt.png"}, + groups = {crumbly = 3, soil = 1, building = 1}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("default:dirt_with_grass", { + description = "Dirt with Grass", + tiles = {"default_grass.png", "default_dirt.png", "default_grass_side.png"}, + groups = {crumbly = 3, soil = 1, building = 1, spreading_dirt_type = 1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_grass_footstep", gain = 0.4}, + }), +}) + +minetest.register_node("default:dirt_with_grass_footsteps", { + description = "Dirt with Grass and Footsteps", + tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}, + groups = {crumbly = 3, soil = 1, not_in_creative_inventory = 1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults({ + footstep = {name = "default_grass_footstep", gain = 0.25}, + }), +}) + +minetest.register_node("default:dirt_with_dry_grass", { + description = "Dirt with Dry Grass", + tiles = {"default_dry_grass.png", "default_dirt.png", + "default_dry_grass_side.png"}, + groups = {crumbly = 3, soil = 1, building = 1, spreading_dirt_type = 1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults({ + footstep = {name = "default_grass_footstep", gain = 0.4}, + }), +}) + +minetest.register_node("default:dirt_with_snow", { + description = "Dirt with Snow", + tiles = {"default_snow.png", "default_dirt.png", + {name = "default_snow_side.png", + tileable_vertical = false}}, + groups = {crumbly = 3, soil = 1, building = 1, spreading_dirt_type = 1, snowy = 1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults({ + footstep = {name = "default_snow_footstep", gain = 0.4}, + }), }) minetest.register_node("default:sand", { - description = "Sand", - tiles = {"default_sand.png"}, - groups = {crumbly = 3, falling_node = 1, sand=1, building = 1}, - sounds = default.node_sound_sand_defaults(), + description = "Sand", + tiles = {"default_sand.png"}, + groups = {crumbly = 3, falling_node = 1, sand = 1, building = 1}, + sounds = default.node_sound_sand_defaults(), +}) + + +minetest.register_node("default:gravel", { + description = "Gravel", + tiles = {"default_gravel.png"}, + groups = {crumbly = 2, falling_node = 1, building = 1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain = 0.45}, + }), + drop = { + max_items = 1, + items = { + {items = {'default:flint'},rarity = 8}, + {items = {'default:gravel'}} + } + }, + }) minetest.register_node("default:redsand", { - description = "Red Sand", - tiles = {"default_red_sand.png"}, - groups = {crumbly = 3, falling_node = 1, redsand=1, building = 1}, - sounds = default.node_sound_sand_defaults(), + description = "Red Sand", + tiles = {"default_red_sand.png"}, + groups = {crumbly = 3, falling_node = 1, redsand=1, building = 1}, + sounds = default.node_sound_sand_defaults(), }) minetest.register_node("default:clay", { - description = "Clay", - tiles = {"default_clay.png"}, - groups = {crumbly = 3, building = 1}, - drop = 'default:clay_lump 4', - sounds = default.node_sound_dirt_defaults({ - footstep = "", - }), + description = "Clay", + tiles = {"default_clay.png"}, + groups = {crumbly = 3, building = 1}, + drop = 'default:clay_lump 4', + sounds = default.node_sound_dirt_defaults(), }) -minetest.register_node("default:brick", { - description = "Brick Block", - tiles = {"default_brick.png"}, - groups = {cracky = 3, building = 1}, - sounds = default.node_sound_stone_defaults(), + +minetest.register_node("default:snow", { + description = "Snow", + tiles = {"default_snow.png"}, + inventory_image = "default_snowball.png", + wield_image = "default_snowball.png", + paramtype = "light", + buildable_to = true, + floodable = true, + drawtype = "nodebox", + stack_max = 16, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.5+2/16, 0.5}, + }, + }, + groups = {crumbly = 3, falling_node = 1, snowy = 1, puts_out_fire = 1, misc = 1}, + sounds = default.node_sound_snow_defaults(), +-- on_use = snow_shoot_snowball, + on_construct = function(pos) + pos.y = pos.y - 1 + if minetest.get_node(pos).name == "default:dirt_with_grass" then + minetest.set_node(pos, {name = "default:dirt_with_snow"}) + end + end, +}) + +minetest.register_node("default:snowblock", { + description = "Snow Block", + tiles = {"default_snow.png"}, + groups = {crumbly = 3, building = 1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name = "default_snow_footstep", gain = 0.4}, + dug = {name = "default_snow_footstep", gain = 0.75}, + }), + drop = "default:snow 4", +}) + +-- 'is ground content = false' to avoid tunnels in sea ice or ice rivers +minetest.register_node("default:ice", { + description = "Ice", + drawtype = "glasslike", + tiles = {"default_ice.png"}, + is_ground_content = false, + paramtype = "light", + use_texture_alpha = true, + groups = {cracky = 3, puts_out_fire = 1, oddly_breakable_by_hand = 2, building = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("default:packedice", { + description = "Packed Ice", + drawtype = "glasslike", + tiles = {"default_ice_packed.png"}, + paramtype = "light", + use_texture_alpha = true, + groups = {cracky = 2, building = 1}, + sounds = default.node_sound_glass_defaults(), }) -- @@ -149,7 +267,7 @@ minetest.register_node("default:brick", { -- minetest.register_node("default:tree", { - description = "Tree", + description = "Apple Tree", tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"}, paramtype2 = "facedir", is_ground_content = false, @@ -160,7 +278,9 @@ minetest.register_node("default:tree", { }) minetest.register_node("default:wood", { - description = "Wooden Planks", + description = "Apple Wood Planks", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_wood.png"}, is_ground_content = false, material = "default:wood", @@ -169,15 +289,15 @@ minetest.register_node("default:wood", { }) minetest.register_node("default:sapling", { - description = "Sapling", + description = "Apple Tree Sapling", drawtype = "plantlike", - visual_scale = 1.0, tiles = {"default_sapling.png"}, inventory_image = "default_sapling.png", wield_image = "default_sapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, + on_timer = default.grow_sapling, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} @@ -231,7 +351,7 @@ minetest.register_node("default:apple", { fixed = {-3 / 16, -7 / 16, -3 / 16, 3 / 16, 4 / 16, 3 / 16} }, groups = {fleshy = 3, dig_immediate = 3, flammable = 2, - leafdecay = 3, leafdecay_drop = 1, foodstuffs = 1}, + leafdecay = 3, leafdecay_drop = 1, food_apple = 1, foodstuffs = 1}, on_use = minetest.item_eat(2), sounds = default.node_sound_leaves_defaults(), @@ -241,23 +361,24 @@ minetest.register_node("default:apple", { }) minetest.register_node("default:apple_gold", { - description = "Golden Apple", - drawtype = "plantlike", - visual_scale = 1.0, - tiles = {"default_apple_gold.png"}, - inventory_image = "default_apple_gold.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - selection_box = { + description = "Golden Apple", + drawtype = "plantlike", + visual_scale = 0.75, + tiles = {"default_apple_gold.png"}, + inventory_image = "default_apple_gold.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { type = "fixed", fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2} - }, - groups = {fleshy=3,dig_immediate=3, flammable = 2, foodstuffs = 1}, - on_use = minetest.item_eat(8), - sounds = default.node_sound_defaults(), + }, + groups = {fleshy = 3, dig_immediate = 3, flammable = 2, foodstuffs = 1}, + on_use = minetest.item_eat(8), + sounds = default.node_sound_defaults(), }) + minetest.register_node("default:jungletree", { description = "Jungle Tree", tiles = {"default_jungletree_top.png", "default_jungletree_top.png", @@ -271,15 +392,17 @@ minetest.register_node("default:jungletree", { }) minetest.register_node("default:junglewood", { - description = "Junglewood Planks", + description = "Jungle Wood Planks", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_junglewood.png"}, is_ground_content = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, + groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node("default:jungleleaves", { - description = "Jungle Leaves", + description = "Jungle Tree Leaves", drawtype = "allfaces_optional", waving = 1, visual_scale = 1.3, @@ -300,15 +423,15 @@ minetest.register_node("default:jungleleaves", { }) minetest.register_node("default:junglesapling", { - description = "Jungle Sapling", + description = "Jungle Tree Sapling", drawtype = "plantlike", - visual_scale = 1.0, tiles = {"default_junglesapling.png"}, inventory_image = "default_junglesapling.png", wield_image = "default_junglesapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, + on_timer = default.grow_sapling, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} @@ -316,24 +439,44 @@ minetest.register_node("default:junglesapling", { groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), + + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(300, 1500)) + end, + + on_place = function(itemstack, placer, pointed_thing) + itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, + "default:junglesapling", + -- minp, maxp to be checked, relative to sapling pos + -- minp_relative.y = 1 because sapling pos has been checked + {x = -2, y = 1, z = -2}, + {x = 2, y = 15, z = 2}, + -- maximum interval of interior volume check + 4) + + return itemstack + end, }) + minetest.register_node("default:pine_tree", { description = "Pine Tree", tiles = {"default_pine_tree_top.png", "default_pine_tree_top.png", "default_pine_tree.png"}, paramtype2 = "facedir", is_ground_content = false, - groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_wood_defaults(), on_place = minetest.rotate_node }) minetest.register_node("default:pine_wood", { description = "Pine Wood Planks", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_pine_wood.png"}, is_ground_content = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, + groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, sounds = default.node_sound_wood_defaults(), }) @@ -359,24 +502,42 @@ minetest.register_node("default:pine_needles",{ }) minetest.register_node("default:pine_sapling", { - description = "Pine Sapling", + description = "Pine Tree Sapling", drawtype = "plantlike", - visual_scale = 1.0, tiles = {"default_pine_sapling.png"}, inventory_image = "default_pine_sapling.png", wield_image = "default_pine_sapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, + on_timer = default.grow_sapling, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} }, - groups = {snappy = 2, dig_immediate = 3, flammable = 2, + groups = {snappy = 2, dig_immediate = 3, flammable = 3, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), + + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(300, 1500)) + end, + + on_place = function(itemstack, placer, pointed_thing) + itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, + "default:pine_sapling", + -- minp, maxp to be checked, relative to sapling pos + -- minp_relative.y = 1 because sapling pos has been checked + {x = -2, y = 1, z = -2}, + {x = 2, y = 14, z = 2}, + -- maximum interval of interior volume check + 4) + + return itemstack + end, }) + minetest.register_node("default:acacia_tree", { description = "Acacia Tree", tiles = {"default_acacia_tree_top.png", "default_acacia_tree_top.png", @@ -391,14 +552,16 @@ minetest.register_node("default:acacia_tree", { minetest.register_node("default:acacia_wood", { description = "Acacia Wood Planks", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_acacia_wood.png"}, is_ground_content = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, + groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node("default:acacia_leaves", { - description = "Acacia Leaves", + description = "Acacia Tree Leaves", drawtype = "allfaces_optional", visual_scale = 1.3, tiles = {"default_acacia_leaves.png"}, @@ -421,13 +584,13 @@ minetest.register_node("default:acacia_leaves", { minetest.register_node("default:acacia_sapling", { description = "Acacia Tree Sapling", drawtype = "plantlike", - visual_scale = 1.0, tiles = {"default_acacia_sapling.png"}, inventory_image = "default_acacia_sapling.png", wield_image = "default_acacia_sapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, + on_timer = default.grow_sapling, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} @@ -435,6 +598,260 @@ minetest.register_node("default:acacia_sapling", { groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), + + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(300, 1500)) + end, + + on_place = function(itemstack, placer, pointed_thing) + itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, + "default:acacia_sapling", + -- minp, maxp to be checked, relative to sapling pos + -- minp_relative.y = 1 because sapling pos has been checked + {x = -4, y = 1, z = -4}, + {x = 4, y = 7, z = 4}, + -- maximum interval of interior volume check + 4) + + return itemstack + end, +}) + +--[[minetest.register_node("default:aspen_tree", { + description = "Aspen Tree", + tiles = {"default_aspen_tree_top.png", "default_aspen_tree_top.png", + "default_aspen_tree.png"}, + paramtype2 = "facedir", + is_ground_content = false, + groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, + sounds = default.node_sound_wood_defaults(), + + on_place = minetest.rotate_node +}) + +minetest.register_node("default:aspen_wood", { + description = "Aspen Wood Planks", + paramtype2 = "facedir", + place_param2 = 0, + tiles = {"default_aspen_wood.png"}, + is_ground_content = false, + groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:aspen_leaves", { + description = "Aspen Tree Leaves", + drawtype = "allfaces_optional", + tiles = {"default_aspen_leaves.png"}, + waving = 1, + paramtype = "light", + is_ground_content = false, + groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, + drop = { + max_items = 1, + items = { + {items = {"default:aspen_sapling"}, rarity = 20}, + {items = {"default:aspen_leaves"}} + } + }, + sounds = default.node_sound_leaves_defaults(), + + after_place_node = default.after_place_leaves, +}) + +minetest.register_node("default:aspen_sapling", { + description = "Aspen Tree Sapling", + drawtype = "plantlike", + tiles = {"default_aspen_sapling.png"}, + inventory_image = "default_aspen_sapling.png", + wield_image = "default_aspen_sapling.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + on_timer = default.grow_sapling, + selection_box = { + type = "fixed", + fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 0.5, 3 / 16} + }, + groups = {snappy = 2, dig_immediate = 3, flammable = 3, + attached_node = 1, sapling = 1}, + sounds = default.node_sound_leaves_defaults(), + + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(300, 1500)) + end, + + on_place = function(itemstack, placer, pointed_thing) + itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, + "default:aspen_sapling", + -- minp, maxp to be checked, relative to sapling pos + -- minp_relative.y = 1 because sapling pos has been checked + {x = -2, y = 1, z = -2}, + {x = 2, y = 12, z = 2}, + -- maximum interval of interior volume check + 4) + + return itemstack + end, +})]] + +-- +-- Ores +-- + +minetest.register_node("default:stone_with_coal", { + description = "Coal Ore", + tiles = {"default_stone.png^default_mineral_coal.png"}, + groups = {cracky = 3, building = 1}, + drop = 'default:coal_lump', + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:stone_with_iron", { + description = "Iron Ore", + tiles = {"default_stone.png^default_mineral_iron.png"}, + groups = {cracky = 2, building = 1}, + drop = 'default:stone_with_iron', + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:steelblock", { + description = "Steel Block", + tiles = {"default_steel_block.png"}, + groups = {cracky = 1,level = 2, building = 1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:lapisblock", { + description = "Lapis Lazul Block", + tiles = {"default_lapis_block.png"}, + groups = {cracky = 1, building = 1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:stone_with_bluestone", { + description = "Bluestone Ore", + tiles = {"default_stone.png^default_mineral_bluestone.png"}, + groups = {cracky = 2, building = 1}, + drop = "mesecons:wire_00000000_off 5", + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:stone_with_lapis", { + description = "Lapis Lazuli Ore", + tiles = {"default_stone.png^default_mineral_lapis.png"}, + groups = {cracky = 2, building = 1}, + drop = { + max_items = 2, + items = { + {items = {'dye:blue 5'}, rarity = 16}, + {items = {'dye:blue 4'}, rarity = 12}, + {items = {'dye:blue 3'}, rarity = 8}, + {items = {'dye:blue 2'}, rarity = 6}, + {items = {'dye:blue 1'}, rarity = 1}, + } + }, + sounds = default.node_sound_stone_defaults(), +}) + + +minetest.register_node("default:stone_with_gold", { + description = "Gold Ore", + tiles = {"default_stone.png^default_mineral_gold.png"}, + groups = {cracky = 2, building = 1}, + drop = "default:stone_with_gold", + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:goldblock", { + description = "Gold Block", + tiles = {"default_gold_block.png"}, + is_ground_content = false, + groups = {cracky = 1, building = 1}, + sounds = default.node_sound_metal_defaults(), +}) + +minetest.register_node("default:stone_with_emerald", { + description = "Emerald Ore", + tiles = {"default_stone.png^default_mineral_emerald.png"}, + groups = {cracky = 2, building = 1}, + drop = "default:emerald", + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:emeraldblock", { + description = "Emerald Block", + tiles = {"default_emerald_block.png"}, + groups = {cracky = 1, building = 1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:stone_with_diamond", { + description = "Diamonds in Stone", + tiles = {"default_stone.png^default_mineral_diamond.png"}, + groups = {cracky = 1, building = 1}, + drop = "default:diamond", + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:diamondblock", { + description = "Diamond Block", + tiles = {"default_diamond_block.png"}, + is_ground_content = false, + groups = {cracky = 1, level = 3, building = 1}, + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node("default:junglegrass", { + description = "Jungle Grass", + drawtype = "plantlike", + waving = 1, + visual_scale = 1.3, + tiles = {"default_junglegrass.png"}, + inventory_image = "default_junglegrass.png", + wield_image = "default_junglegrass.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + drop = { + max_items = 1, + items = { + --{items = {'farming:seed_cotton'}, rarity = 8}, + {items = {'default:junglegrass'}}, + } + }, + buildable_to = true, + groups = {snappy = 3, flammable = 2, flora = 1, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, +}) + +minetest.register_node("default:grass", { + description = "Grass", + drawtype = "plantlike", + tiles = {"default_tallgrass.png"}, + inventory_image = "default_tallgrass.png", + wield_image = "default_tallgrass.png", + walkable = false, + buildable_to = true, + drop = { + max_items = 1, + items = { + {items = {'farming:seed_wheat'}, rarity = 5}, + {items = {'default:grass'}}, + } + }, + paramtype = "light", + groups = {snappy = 3, flammable = 3,attached_node=1,dig_immediate = 3, decorative=1, grass=1}, + sounds = default.node_sound_leaves_defaults(), + after_dig_node = function(pos, oldnode, oldmetadata, user) + local item = user:get_wielded_item() + if item:get_name() == "default:shears" then + user:get_inventory():add_item("main", ItemStack(oldnode.name)) + end + end }) -- @@ -444,13 +861,14 @@ minetest.register_node("default:acacia_sapling", { minetest.register_node("default:water_source", { description = "Water Source", drawtype = "liquid", + waving = 3, tiles = { { name = "default_water_source_animated.png", animation = { type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, + aspect_w = 32, + aspect_h = 32, length = 2.0, }, }, @@ -461,8 +879,8 @@ minetest.register_node("default:water_source", { name = "default_water_source_animated.png", animation = { type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, + aspect_w = 32, + aspect_h = 32, length = 2.0, }, backface_culling = false, @@ -489,6 +907,7 @@ minetest.register_node("default:water_source", { minetest.register_node("default:water_flowing", { description = "Flowing Water", drawtype = "flowingliquid", + waving = 3, tiles = {"default_water.png"}, special_tiles = { { @@ -496,8 +915,8 @@ minetest.register_node("default:water_flowing", { backface_culling = false, animation = { type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, + aspect_w = 32, + aspect_h = 32, length = 0.8, }, }, @@ -506,8 +925,8 @@ minetest.register_node("default:water_flowing", { backface_culling = true, animation = { type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, + aspect_w = 32, + aspect_h = 32, length = 0.8, }, }, @@ -527,11 +946,12 @@ minetest.register_node("default:water_flowing", { liquid_alternative_source = "default:water_source", liquid_viscosity = 1, post_effect_color = {a = 103, r = 30, g = 60, b = 90}, - groups = {water = 3, liquid = 3, puts_out_fire = 1, - not_in_creative_inventory = 1}, + groups = {water = 3, liquid = 3, not_in_creative_inventory = 1, + cools_lava = 1}, sounds = default.node_sound_water_defaults(), }) + minetest.register_node("default:river_water_source", { description = "River Water Source", drawtype = "liquid", @@ -540,8 +960,8 @@ minetest.register_node("default:river_water_source", { name = "default_river_water_source_animated.png", animation = { type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, + aspect_w = 32, + aspect_h = 32, length = 2.0, }, }, @@ -551,8 +971,8 @@ minetest.register_node("default:river_water_source", { name = "default_river_water_source_animated.png", animation = { type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, + aspect_w = 32, + aspect_h = 32, length = 2.0, }, backface_culling = false, @@ -574,7 +994,7 @@ minetest.register_node("default:river_water_source", { liquid_renewable = false, liquid_range = 2, post_effect_color = {a = 103, r = 30, g = 76, b = 90}, - groups = {water = 3, liquid = 3, puts_out_fire = 1, not_in_creative_inventory = 1}, + groups = {water = 3, liquid = 3, puts_out_fire = 1, cools_lava = 1, not_in_creative_inventory = 1}, sounds = default.node_sound_water_defaults(), }) @@ -588,8 +1008,8 @@ minetest.register_node("default:river_water_flowing", { backface_culling = false, animation = { type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, + aspect_w = 32, + aspect_h = 32, length = 0.8, }, }, @@ -598,8 +1018,8 @@ minetest.register_node("default:river_water_flowing", { backface_culling = true, animation = { type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, + aspect_w = 32, + aspect_h = 32, length = 0.8, }, }, @@ -621,8 +1041,8 @@ minetest.register_node("default:river_water_flowing", { liquid_renewable = false, liquid_range = 2, post_effect_color = {a = 103, r = 30, g = 76, b = 90}, - groups = {water = 3, liquid = 3, puts_out_fire = 1, - not_in_creative_inventory = 1}, + groups = {water = 3, liquid = 3, not_in_creative_inventory = 1, + cools_lava = 1}, sounds = default.node_sound_water_defaults(), }) @@ -635,8 +1055,8 @@ minetest.register_node("default:lava_source", { name = "default_lava_source_animated.png", animation = { type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, + aspect_w = 32, + aspect_h = 32, length = 3.0, }, }, @@ -647,8 +1067,8 @@ minetest.register_node("default:lava_source", { name = "default_lava_source_animated.png", animation = { type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, + aspect_w = 32, + aspect_h = 32, length = 3.0, }, backface_culling = false, @@ -683,8 +1103,8 @@ minetest.register_node("default:lava_flowing", { backface_culling = false, animation = { type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, + aspect_w = 32, + aspect_h = 32, length = 3.3, }, }, @@ -693,8 +1113,8 @@ minetest.register_node("default:lava_flowing", { backface_culling = true, animation = { type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, + aspect_w = 32, + aspect_h = 32, length = 3.3, }, }, @@ -721,116 +1141,117 @@ minetest.register_node("default:lava_flowing", { }) -- --- Ores +-- Tools / "Advanced" crafting / Non-"natural" -- -minetest.register_node("default:stone_with_coal", { - description = "Coal Ore", - tiles = {"default_stone.png^default_mineral_coal.png"}, - groups = {cracky = 3, building = 1}, - drop = 'default:coal_lump', - sounds = default.node_sound_stone_defaults(), +local bookshelf_formspec = + "size[8,7;]" .. + "list[context;books;0,0.3;8,2;]" .. + "list[current_player;main;0,2.85;8,1;]" .. + "list[current_player;main;0,4.08;8,3;8]" .. + "listring[context;books]" .. + "listring[current_player;main]" + +local function update_bookshelf(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local invlist = inv:get_list("books") + + local formspec = bookshelf_formspec + -- Inventory slots overlay + local bx, by = 0, 0.3 + local n_written, n_empty = 0, 0 + for i = 1, 16 do + if i == 9 then + bx = 0 + by = by + 1 + end + local stack = invlist[i] + if stack:is_empty() then + formspec = formspec --[[.. + "image[" .. bx .. "," .. by .. ";1,1;default_bookshelf_slot.png]"]]-- + else + local metatable = stack:get_meta():to_table() or {} + if metatable.fields and metatable.fields.text then + n_written = n_written + stack:get_count() + else + n_empty = n_empty + stack:get_count() + end + end + bx = bx + 1 + end + meta:set_string("formspec", formspec) + if n_written + n_empty == 0 then + meta:set_string("infotext", "Empty Bookshelf") + else + meta:set_string("infotext", "Bookshelf (" .. n_written .. + " written, " .. n_empty .. " empty books)") + end +end + +minetest.register_node("default:bookshelf", { + description = "Bookshelf", + tiles = {"default_wood.png", "default_wood.png", "default_wood.png", + "default_wood.png", "default_bookshelf.png", "default_bookshelf.png"}, + paramtype2 = "facedir", + is_ground_content = false, + groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, building = 1}, + sounds = default.node_sound_wood_defaults(), + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("books", 9 * 2) + update_bookshelf(pos) + end, + can_dig = function(pos,player) + local inv = minetest.get_meta(pos):get_inventory() + return inv:is_empty("books") + end, + allow_metadata_inventory_put = function(pos, listname, index, stack) + if minetest.get_item_group(stack:get_name(), "book") ~= 0 then + return stack:get_count() + end + return 0 + end, + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + minetest.log("action", player:get_player_name() .. + " moves stuff in bookshelf at " .. minetest.pos_to_string(pos)) + update_bookshelf(pos) + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name() .. + " puts stuff to bookshelf at " .. minetest.pos_to_string(pos)) + update_bookshelf(pos) + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name() .. + " takes stuff from bookshelf at " .. minetest.pos_to_string(pos)) + update_bookshelf(pos) + end, + on_blast = function(pos) + local drops = {} + default.get_inventory_drops(pos, "books", drops) + drops[#drops+1] = "default:bookshelf" + minetest.remove_node(pos) + return drops + end, }) -minetest.register_node("default:stone_with_iron", { - description = "Iron Ore", - tiles = {"default_stone.png^default_mineral_iron.png"}, - groups = {cracky = 2, building = 1}, - drop = 'default:stone_with_iron', - sounds = default.node_sound_stone_defaults(), -}) -minetest.register_node("default:stone_with_gold", { - description = "Gold Ore", - tiles = {"default_stone.png^default_mineral_gold.png"}, - groups = {cracky = 2, building = 1}, - drop = "default:stone_with_gold", - sounds = default.node_sound_stone_defaults(), -}) +-- +-- Plantlife (non-cubic) +-- -minetest.register_node("default:stone_with_bluestone", { - description = "Bluestone Ore", - tiles = {"default_stone.png^default_mineral_bluestone.png"}, - groups = {cracky = 2, building = 1}, - drop = "mesecons:wire_00000000_off 5", - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:stone_with_lapis", { - description = "Lapis Lazuli Ore", - tiles = {"default_stone.png^default_mineral_lapis.png"}, - groups = {cracky = 2, building = 1}, - drop = { - max_items = 2, - items = { - {items = {'dye:blue 5'}, rarity = 16}, - {items = {'dye:blue 4'}, rarity = 12}, - {items = {'dye:blue 3'}, rarity = 8}, - {items = {'dye:blue 2'}, rarity = 6}, - {items = {'dye:blue 1'}, rarity = 1}, - } - }, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:stone_with_emerald", { - description = "Emerald Ore", - tiles = {"default_stone.png^default_mineral_emerald.png"}, - groups = {cracky = 2, building = 1}, - drop = "default:emerald", --- drop = { --- max_items = 2, --- items = { --- {items="default:emerald", rarity = 5}, --- {items="default:emerald"}, --- }, --- }, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:stone_with_diamond", { - description = "Diamonds in Stone", - tiles = {"default_stone.png^default_mineral_diamond.png"}, - groups = {cracky = 1, building = 1}, - drop = "default:diamond", - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:junglegrass", { - description = "Jungle Grass", - drawtype = "plantlike", - waving = 1, - visual_scale = 1.3, - tiles = {"default_junglegrass.png"}, - inventory_image = "default_junglegrass.png", - wield_image = "default_junglegrass.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - drop = { - max_items = 1, - items = { - --{items = {'farming:seed_cotton'}, rarity = 8}, - {items = {'default:junglegrass'}}, - } - }, - buildable_to = true, - groups = {snappy = 3, flammable = 2, flora = 1, attached_node = 1}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, - }, -}) minetest.register_node("default:cactus", { - description = "Cactus", - drawtype = "nodebox", - tiles = {"default_cactus_top.png", "default_cactus_bottom.png", "default_cactus_side.png","default_cactus_side.png","default_cactus_side.png","default_cactus_side.png"}, - groups = {snappy = 1, choppy = 3, flammable = 2, decorative = 1}, - sounds = default.node_sound_wood_defaults(), - paramtype = "light", - node_box = { + description = "Cactus", + drawtype = "nodebox", + tiles = {"default_cactus_top.png", "default_cactus_bottom.png", "default_cactus_side.png","default_cactus_side.png","default_cactus_side.png","default_cactus_side.png"}, + groups = {snappy = 1, choppy = 3, flammable = 2, decorative = 1}, + sounds = default.node_sound_wood_defaults(), + paramtype = "light", + node_box = { type = "fixed", fixed = { {-7/16, -8/16, -7/16, 7/16, 8/16, 7/16}, -- Main Body @@ -839,13 +1260,13 @@ minetest.register_node("default:cactus", { {-7/16, -8/16, -8/16, -7/16, 8/16, 8/16}, -- Spikes {7/16, -8/16, 8/16, 7/16, 8/16, -8/16}, -- Spikes }, - }, - selection_box = { + }, + selection_box = { type = "fixed", fixed = { {-7/16, -8/16, -7/16, 7/16, 8/16, 7/16}, }, - }, + }, }) @@ -872,14 +1293,14 @@ minetest.register_node("default:papyrus", { }) minetest.register_node("default:reeds", { - description = "Sugarcane", - drawtype = "plantlike", - tiles = {"default_papyrus.png"}, - inventory_image = "default_sugar_cane.png", - wield_image = "default_sugar_cane.png", - paramtype = "light", - walkable = false, - node_box = { + description = "Sugarcane", + drawtype = "plantlike", + tiles = {"default_papyrus.png"}, + inventory_image = "default_sugar_cane.png", + wield_image = "default_sugar_cane.png", + paramtype = "light", + walkable = false, + node_box = { type = "fixed", fixed = { {-7/16, -8/16, -7/16, 7/16, 8/16, 7/16}, -- Main Body @@ -888,15 +1309,15 @@ minetest.register_node("default:reeds", { {-7/16, -8/16, -8/16, -7/16, 8/16, 8/16}, -- Spikes {7/16, -8/16, 8/16, 7/16, 8/16, -8/16}, -- Spikes }, - }, - selection_box = { + }, + selection_box = { type = "fixed", fixed = { {-7/16, -8/16, -7/16, 7/16, 8/16, 7/16}, }, - }, - groups = {snappy = 3, flammable = 2, materials = 1}, - sounds = default.node_sound_leaves_defaults(), + }, + groups = {snappy = 3, flammable = 2, materials = 1}, + sounds = default.node_sound_leaves_defaults(), }) -- @@ -904,70 +1325,53 @@ minetest.register_node("default:reeds", { -- minetest.register_node("default:quartz_ore", { - description = "Quartz Ore", - tiles = {"default_quartz_ore.png"}, - groups = {cracky = 3, stone = 1, building = 1}, - drop = 'default:quartz_crystal', - sounds = default.node_sound_stone_defaults(), + description = "Quartz Ore", + tiles = {"default_quartz_ore.png"}, + groups = {cracky = 3, stone = 1, building = 1}, + drop = 'default:quartz_crystal', + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:quartz_block", { - description = "Quartz Block", - tiles = {"default_quartz_block_top.png", "default_quartz_block_bottom.png", "default_quartz_block_side.png"}, - groups = {snappy = 1, bendy = 2,cracky = 1,level = 2, building = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Quartz Block", + tiles = {"default_quartz_block_top.png", "default_quartz_block_bottom.png", "default_quartz_block_side.png"}, + groups = {snappy = 1, bendy = 2,cracky = 1,level = 2, building = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:quartz_chiseled", { - description = "Chiseled Quartz", - tiles = {"default_quartz_chiseled_top.png", "default_quartz_chiseled_top.png", "default_quartz_chiseled_side.png"}, - groups = {snappy = 1,bendy=2,cracky = 1,level = 2, building = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Chiseled Quartz", + tiles = {"default_quartz_chiseled_top.png", "default_quartz_chiseled_top.png", "default_quartz_chiseled_side.png"}, + groups = {snappy = 1,bendy=2,cracky = 1,level = 2, building = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:quartz_pillar", { - description = "Quartz Pillar", - paramtype2 = "facedir", - on_place = minetest.rotate_node, - tiles = {"default_quartz_pillar_top.png", "default_quartz_pillar_top.png", "default_quartz_pillar_side.png"}, - groups = {snappy = 1,bendy=2,cracky = 1,level = 2, building = 1}, - sounds = default.node_sound_stone_defaults(), + description = "Quartz Pillar", + paramtype2 = "facedir", + on_place = minetest.rotate_node, + tiles = {"default_quartz_pillar_top.png", "default_quartz_pillar_top.png", "default_quartz_pillar_side.png"}, + groups = {snappy = 1,bendy=2,cracky = 1,level = 2, building = 1}, + sounds = default.node_sound_stone_defaults(), }) -minetest.register_node("default:bookshelf", { - description = "Bookshelf", - tiles = {"default_wood.png", "default_wood.png", "default_bookshelf.png"}, - groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, building = 1}, - sounds = default.node_sound_wood_defaults(), -}) minetest.register_node("default:slimeblock", { - description = "Slime Block", - drawtype = "nodebox", - paramtype = "light", - node_box = { + description = "Slime Block", + drawtype = "nodebox", + paramtype = "light", + node_box = { type = "fixed", fixed = { {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, } - }, - tiles = {"default_slimeblock.png"}, - paramtype = "light", - use_texture_alpha = true, - sunlight_propagates = true, - groups = {oddly_breakable_by_hand = 3,dig_immediate=2,bouncy=70,disable_jump=1, fall_damage_add_percent=-100, building = 1}, -}) - -minetest.register_node("default:glass", { - description = "Glass", - drawtype = "glasslike", - tiles = {"default_glass.png"}, - paramtype = "light", - sunlight_propagates = true, - groups = {cracky = 3, oddly_breakable_by_hand = 3, building = 1}, - sounds = default.node_sound_glass_defaults(), - drop = "", + }, + tiles = {"default_slimeblock.png"}, + paramtype = "light", + use_texture_alpha = true, + sunlight_propagates = true, + groups = {oddly_breakable_by_hand = 3,dig_immediate = 2,bouncy=70,disable_jump=1, fall_damage_add_percent=-100, building = 1}, }) minetest.register_node("default:ladder_wood", { @@ -994,23 +1398,23 @@ minetest.register_node("default:ladder_wood", { }) minetest.register_node("default:vine", { - description = "Vine", - drawtype = "signlike", - tiles = {"default_vine.png"}, - inventory_image = "default_vine.png", - wield_image = "default_vine.png", - paramtype = "light", - paramtype2 = "wallmounted", - walkable = false, - climbable = true, - selection_box = { + description = "Vine", + drawtype = "signlike", + tiles = {"default_vine.png"}, + inventory_image = "default_vine.png", + wield_image = "default_vine.png", + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + climbable = true, + selection_box = { type = "wallmounted", - }, - groups = {choppy = 2, oddly_breakable_by_hand = 3, flammable = 2, decorative = 1}, - legacy_wallmounted = true, - sounds = default.node_sound_leaves_defaults(), - drop = "", - after_dig_node = function(pos, oldnode, oldmetadata, user) + }, + groups = {choppy = 2, oddly_breakable_by_hand = 3, flammable = 2, decorative = 1}, + legacy_wallmounted = true, + sounds = default.node_sound_leaves_defaults(), + drop = "", + after_dig_node = function(pos, oldnode, oldmetadata, user) local item = user:get_wielded_item() if item:get_name() == "default:shears" then user:get_inventory():add_item("main", ItemStack(oldnode.name)) @@ -1021,13 +1425,13 @@ minetest.register_node("default:vine", { local pos2 = {x = pos.x, y = pos.y - down, z = pos.z} local node = minetest.get_node(pos2) if node.name == "default:vine" then - minetest.remove_node(pos2) - down = down + 1 + minetest.remove_node(pos2) + down = down + 1 else - next_find = false + next_find = false end end - end, + end, }) -- @@ -1042,162 +1446,60 @@ minetest.register_node("default:cloud", { groups = {not_in_creative_inventory = 1}, }) -minetest.register_node("default:steelblock", { - description = "Steel Block", - tiles = {"default_steel_block.png"}, - groups = {cracky = 1,level = 2, building = 1}, - sounds = default.node_sound_stone_defaults(), +minetest.register_node("default:glass", { + description = "Glass", + drawtype = "glasslike", + tiles = {"default_glass.png"}, + paramtype = "light", + sunlight_propagates = true, + groups = {cracky = 3, oddly_breakable_by_hand = 3, building = 1}, + sounds = default.node_sound_glass_defaults(), + drop = "", }) -minetest.register_node("default:goldblock", { - description = "Gold Block", - tiles = {"default_gold_block.png"}, - groups = {cracky = 1, building = 1}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:diamondblock", { - description = "Diamond Block", - tiles = {"default_diamond_block.png"}, - groups = {cracky = 1, level = 3, building = 1}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:lapisblock", { - description = "Lapis Lazul Block", - tiles = {"default_lapis_block.png"}, - groups = {cracky = 1, building = 1}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:emeraldblock", { - description = "Emerald Block", - tiles = {"default_emerald_block.png"}, - groups = {cracky = 1, building = 1}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:obsidian", { - description = "Obsidian", - tiles = {"default_obsidian.png"}, - sounds = default.node_sound_stone_defaults(), - groups = {cracky = 4, level = 2, oddly_breakable_by_hand = 3, building = 1}, -}) - --- --- Soft / Non-Stone --- - -minetest.register_node("default:dirt", { - description = "Dirt", - tiles = {"default_dirt.png"}, - groups = {crumbly = 3, soil = 1, building = 1}, - sounds = default.node_sound_dirt_defaults(), -}) - -minetest.register_node("default:dirt_with_grass", { - description = "Dirt with Grass", - tiles = {"default_grass.png", "default_dirt.png", "default_grass_side.png"}, - groups = {crumbly = 3, soil = 1, building = 1, spreading_dirt_type = 1}, - drop = 'default:dirt', - sounds = default.node_sound_dirt_defaults({ - footstep = {name="default_grass_footstep", gain = 0.4}, - }), -}) - -minetest.register_node("default:dirt_with_grass_footsteps", { - description = "Dirt with Grass and Footsteps", - tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}, - groups = {crumbly = 3, soil = 1, not_in_creative_inventory = 1}, - drop = 'default:dirt', - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_grass_footstep", gain = 0.25}, - }), -}) - -minetest.register_node("default:dirt_with_dry_grass", { - description = "Dirt with Dry Grass", - tiles = {"default_dry_grass.png", "default_dirt.png", - "default_dry_grass_side.png"}, - groups = {crumbly = 3, soil = 1, building = 1, spreading_dirt_type = 1}, - drop = 'default:dirt', - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_grass_footstep", gain = 0.4}, - }), -}) - -minetest.register_node("default:dirt_with_snow", { - description = "Dirt with Snow", - tiles = {"default_snow.png", "default_dirt.png", - {name = "default_snow_side.png", - tileable_vertical = false}}, - groups = {crumbly = 3, soil = 1, building = 1, spreading_dirt_type = 1, snowy = 1}, - drop = 'default:dirt', - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_snow_footstep", gain = 0.4}, - }), +minetest.register_node("default:brick", { + description = "Brick Block", + paramtype2 = "facedir", + place_param2 = 0, + tiles = {"default_brick.png"}, + is_ground_content = false, + groups = {cracky = 3, building = 1}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:dry_shrub", { - description = "Dry Shrub", - drawtype = "plantlike", - visual_scale = 1.0, - tiles = {"default_dry_shrub.png"}, - inventory_image = "default_dry_shrub.png", - wield_image = "default_dry_shrub.png", - paramtype = "light", - walkable = false, - groups = {snappy = 3, flammable = 3,attached_node=1, decorative = 1}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { + description = "Dry Shrub", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"default_dry_shrub.png"}, + paramtype = "light", + walkable = false, + groups = {snappy = 3, flammable = 3,attached_node=1, decorative = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { type = "fixed", fixed = {-1/3, -1/2, -1/3, 1/3, 1/6, 1/3}, - }, + }, }) -minetest.register_node("default:grass", { - description = "Grass", - drawtype = "plantlike", - tiles = {"default_tallgrass.png"}, - inventory_image = "default_tallgrass.png", - wield_image = "default_tallgrass.png", - walkable = false, - buildable_to = true, - drop = { - max_items = 1, - items = { - {items = {'farming:seed_wheat'}, rarity = 5}, - {items = {'default:grass'}}, - } - }, - paramtype = "light", - groups = {snappy = 3, flammable = 3,attached_node=1,dig_immediate=3, decorative=1, grass=1}, - sounds = default.node_sound_leaves_defaults(), - after_dig_node = function(pos, oldnode, oldmetadata, user) - local item = user:get_wielded_item() - if item:get_name() == "default:shears" then - user:get_inventory():add_item("main", ItemStack(oldnode.name)) - end - end -}) minetest.register_node("default:dry_grass", { - description = "Dry Grass", - drawtype = "plantlike", - tiles = {"default_dry_tallgrass.png"}, - inventory_image = "default_dry_tallgrass.png", - wield_image = "default_dry_tallgrass.png", - walkable = false, - buildable_to = true, - paramtype = "light", - groups = {snappy = 3, flammable = 3, attached_node=1, dig_immediate=3, decorative=1, grass=1}, - sounds = default.node_sound_leaves_defaults(), - after_dig_node = function(pos, oldnode, oldmetadata, user) + description = "Dry Grass", + drawtype = "plantlike", + tiles = {"default_dry_tallgrass.png"}, + inventory_image = "default_dry_tallgrass.png", + wield_image = "default_dry_tallgrass.png", + walkable = false, + buildable_to = true, + paramtype = "light", + groups = {snappy = 3, flammable = 3, attached_node=1, dig_immediate = 3, decorative=1, grass=1}, + sounds = default.node_sound_leaves_defaults(), + after_dig_node = function(pos, oldnode, oldmetadata, user) local item = user:get_wielded_item() if item:get_name() == "default:shears" then user:get_inventory():add_item("main", ItemStack(oldnode.name)) end - end + end }) minetest.register_node("default:glowstone", { @@ -1218,15 +1520,15 @@ minetest.register_node("default:glowstone", { }) minetest.register_node("default:sponge", { - description = "Sponge", - drawtype = "normal", - tiles = {"default_sponge.png"}, - paramtype = 'light', - walkable = true, - pointable = true, - diggable = true, - buildable_to = false, - groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, flammable = 3, building = 1}, + description = "Sponge", + drawtype = "normal", + tiles = {"default_sponge.png"}, + paramtype = 'light', + walkable = true, + pointable = true, + diggable = true, + buildable_to = false, + groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, flammable = 3, building = 1}, on_place = function(itemstack, placer, pointed_thing) local pn = placer:get_player_name() if pointed_thing.type ~= "node" then @@ -1239,133 +1541,113 @@ minetest.register_node("default:sponge", { local on_water = false local pos = pointed_thing.above -- verifier si il est dans l'eau ou a cotée - if string.find(minetest.env:get_node(pointed_thing.above).name, "water_source") - or string.find(minetest.env:get_node(pointed_thing.above).name, "water_flowing") then + if string.find(minetest.get_node(pointed_thing.above).name, "water_source") + or string.find(minetest.get_node(pointed_thing.above).name, "water_flowing") then on_water = true end for i=-1,1 do p = {x=pos.x+i, y=pos.y, z=pos.z} - n = minetest.env:get_node(p) + n = minetest.get_node(p) -- On verifie si il y a de l'eau if (n.name=="default:water_flowing") or (n.name == "default:water_source") then - on_water = true + on_water = true end end for i=-1,1 do p = {x=pos.x, y=pos.y+i, z=pos.z} - n = minetest.env:get_node(p) + n = minetest.get_node(p) -- On verifie si il y a de l'eau if (n.name=="default:water_flowing") or (n.name == "default:water_source") then - on_water = true + on_water = true end end for i=-1,1 do p = {x=pos.x, y=pos.y, z=pos.z+i} - n = minetest.env:get_node(p) + n = minetest.get_node(p) -- On verifie si il y a de l'eau if (n.name=="default:water_flowing") or (n.name == "default:water_source") then - on_water = true + on_water = true end end if on_water == true then - for i=-3,3 do + for i=-3,3 do for j=-3,3 do for k=-3,3 do - p = {x=pos.x+i, y=pos.y+j, z=pos.z+k} - n = minetest.env:get_node(p) - -- On Supprime l'eau - if (n.name=="default:water_flowing") or (n.name == "default:water_source")then - minetest.env:add_node(p, {name="air"}) + p = {x=pos.x+i, y=pos.y+j, z=pos.z+k} + n = minetest.get_node(p) + if (n.name=="default:water_flowing") or (n.name == "default:water_source")then + minetest.set_node(p, {name="air"}) change = true - end + end end end - end + end end p = {x=pos.x, y=pos.y, z=pos.z} - n = minetest.env:get_node(p) + n = minetest.get_node(p) if change == true then - minetest.env:add_node(pointed_thing.above, {name = "default:sponge_wet"}) + minetest.set_node(pointed_thing.above, {name = "default:sponge_wet"}) else - minetest.env:add_node(pointed_thing.above, {name = "default:sponge"}) + minetest.set_node(pointed_thing.above, {name = "default:sponge"}) end return itemstack - end + end }) minetest.register_node("default:sponge_wet", { - description = "Wet Sponge", - drawtype = "normal", - tiles = {"default_sponge_wet.png"}, - paramtype = 'light', - walkable = true, - pointable = true, - diggable = true, - buildable_to = false, - groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, not_in_creative_inventory = 1}, + description = "Wet Sponge", + drawtype = "normal", + tiles = {"default_sponge_wet.png"}, + paramtype = 'light', + walkable = true, + pointable = true, + diggable = true, + buildable_to = false, + groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, not_in_creative_inventory = 1}, }) -minetest.register_node("default:ice", { - description = "Ice", - drawtype = "glasslike", - tiles = {"default_ice.png"}, - is_ground_content = false, - paramtype = "light", - use_texture_alpha = true, - groups = {cracky = 3, puts_out_fire = 1, oddly_breakable_by_hand = 2, building = 1}, - sounds = default.node_sound_glass_defaults(), +-- +-- register trees for leafdecay +-- + +if minetest.get_mapgen_setting("mg_name") == "v6" then + default.register_leafdecay({ + trunks = {"default:tree"}, + leaves = {"default:apple", "default:leaves"}, + radius = 2, + }) + + default.register_leafdecay({ + trunks = {"default:jungletree"}, + leaves = {"default:jungleleaves"}, + radius = 3, + }) +else + default.register_leafdecay({ + trunks = {"default:tree"}, + leaves = {"default:apple", "default:leaves"}, + radius = 3, + }) + + default.register_leafdecay({ + trunks = {"default:jungletree"}, + leaves = {"default:jungleleaves"}, + radius = 2, + }) +end + +default.register_leafdecay({ + trunks = {"default:pine_tree"}, + leaves = {"default:pine_needles"}, + radius = 3, }) -minetest.register_node("default:packedice", { - description = "Packed Ice", - drawtype = "glasslike", - tiles = {"default_ice_packed.png"}, - paramtype = "light", - use_texture_alpha = true, - groups = {cracky = 2, building = 1}, - sounds = default.node_sound_glass_defaults(), -}) - -minetest.register_node("default:snow", { - description = "Snow", - tiles = {"default_snow.png"}, - inventory_image = "default_snowball.png", - wield_image = "default_snowball.png", - paramtype = "light", - buildable_to = true, - drawtype = "nodebox", - stack_max = 16, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, -0.5+2/16, 0.5}, - }, - }, - groups = {crumbly = 3, falling_node = 1, puts_out_fire = 1, misc = 1}, - sounds = default.node_sound_dirt_defaults({ - footstep = {name="default_grass_footstep", gain = 0.4}, - dug = {name = "default_snow_footstep", gain = 0.75}, - }), - on_use = snow_shoot_snowball, - on_construct = function(pos) - pos.y = pos.y - 1 - if minetest.env:get_node(pos).name == "default:dirt_with_grass" then - minetest.env:set_node(pos, {name="default:dirt_with_snow"}) - end - end, -}) - -minetest.register_node("default:snowblock", { - description = "Snow Block", - tiles = {"default_snow.png"}, - groups = {crumbly = 3, building = 1}, - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_snow_footstep", gain = 0.4}, - dug = {name = "default_snow_footstep", gain = 0.75}, - }), - drop = "default:snow 4", +default.register_leafdecay({ + trunks = {"default:acacia_tree"}, + leaves = {"default:acacia_leaves"}, + radius = 2, }) -- @@ -1389,22 +1671,22 @@ function AddGlass(desc, recipeitem, color) recipe = { {'default:glass', 'group:dye,'..recipeitem} } - }) + }) end -- Colored glass -AddGlass( "Glass Red", "basecolor_red", "_red") -AddGlass( "Glass Green", "unicolor_dark_green", "_green") -AddGlass( "Glass Blue", "basecolor_blue", "_blue") -AddGlass( "Glass Light Blue", "basecolor_cyan", "_light_blue") -AddGlass( "Glass Black", "basecolor_black", "_black") -AddGlass( "Glass White", "basecolor_white", "_white") -AddGlass( "Glass Yellow", "basecolor_yellow", "_yellow") -AddGlass( "Glass Brown", "unicolor_dark_orange", "_brown") -AddGlass( "Glass Orange", "excolor_orange", "_orange") -AddGlass( "Glass Pink", "unicolor_light_red", "_pink") -AddGlass( "Glass Gray", "unicolor_darkgrey", "_gray") -AddGlass( "Glass Lime", "basecolor_green", "_lime") -AddGlass( "Glass Silver", "basecolor_grey", "_silver") -AddGlass( "Glass Magenta", "basecolor_magenta", "_magenta") -AddGlass( "Glass Purple", "excolor_violet", "_purple") +AddGlass( "Glass Red", "basecolor_red", "_red") +AddGlass( "Glass Green", "unicolor_dark_green", "_green") +AddGlass( "Glass Blue", "basecolor_blue", "_blue") +AddGlass( "Glass Light Blue", "basecolor_cyan", "_light_blue") +AddGlass( "Glass Black", "basecolor_black", "_black") +AddGlass( "Glass White", "basecolor_white", "_white") +AddGlass( "Glass Yellow", "basecolor_yellow", "_yellow") +AddGlass( "Glass Brown", "unicolor_dark_orange", "_brown") +AddGlass( "Glass Orange", "excolor_orange", "_orange") +AddGlass( "Glass Pink", "unicolor_light_red", "_pink") +AddGlass( "Glass Gray", "unicolor_darkgrey", "_gray") +AddGlass( "Glass Lime", "basecolor_green", "_lime") +AddGlass( "Glass Silver", "basecolor_grey", "_silver") +AddGlass( "Glass Magenta", "basecolor_magenta", "_magenta") +AddGlass( "Glass Purple", "excolor_violet", "_purple") diff --git a/files/default/textures/default_book.png b/files/default/textures/default_book.png index a59ed1ea176e71abf73da7c6ed77dbfac308f3a1..2f1511d718aaa6d684920bd4bd4dbbffdecfb4d8 100644 GIT binary patch literal 831 zcmV-F1Hk-=P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-07I+fWomJucMHl)P{UrFqbh zc2Y9!q#uw%QV1b~kWribk-x-$;@?rVT_1NxKC)i-ajv8d8|C;~!fWZuB$6fU z-)7SFOT!3&za31o>yP`JVqP!zHw=FB=^%Ug`e9Sdy_K*FoQt)q{C$rXN7MDGX{RnY zS0v#4T*S%hLaC(K}?D6xldZMLveJoT7BH-ct zD0{lFE1?M9R>YPB5pbO^_>$1&u5te;*J*QYe9z6MZ~jSO0X}vDKJ;^bbS0r{u>0E*Zc!1;110I}<#X{c!Snwgib?Zviz|r}9t_uKsA0+GoNAa^NK;To6 zP;4D=nNuq?p^xXiBv z+~;68?t+(N3<)m5W!@5iV!@IGAK)^t1mM>}NDu*5B=`hJam~%&1C}I&0GDnAAh9Kc z1ed-NfW(jx0~`hCmH;G_gqYw0uL?kXN-z!1aV;Ska86eV_(vBL8B(XIdvtJffi>C8Z`&bsVjj&i?areng-`oN$4#&r%FO^!8v6T zdJoRgBxulRufRD)34;OWu!KQ@b40@6z&QdvIPfuJ#w3!-mSe*5Yr! z+B4pn*Rxn~_Q*4^hB4k?wsDzxqO6`t!u8~K+XI?j&se)AJw6mr+BJ#yvDe0v91|9$ z^)P6bO#k2dzL-n9Qt)0X*K4EJ@|jLEqYvKc46d_}-@wbuV7_&7D$sQdp00i_>zopr E097ns!~g&Q diff --git a/files/default/textures/default_book_written.png b/files/default/textures/default_book_written.png new file mode 100644 index 0000000000000000000000000000000000000000..c92e208dd7fea1b942bb4dda8b6b1df4bd3c7379 GIT binary patch literal 1900 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 Z{{x21g9K^6s#*X5002ovPDHLkV1kEWJuCnK literal 524 zcmV+n0`vWeP)FIyDcmPm?FcoAeqMf{8s-=C%^ZxZ)0 z(l73jn=nZZSrxKr5n8bD%K`x?5E>182Mq`+GK;Vqa%Q3Tr?)r2y0)y=87N@Q0EJXV zfQ-sR0br+IZ2;Ewa@n?0Qq%RC(lDg7+nGBa;pY_#VA>TeVBdt(_hI_CumJGEVFSyv1hoyw4j4)qz=f&TkGC`^%t8k?a)81tWI+{a zv|l&~sHA#*^?mSE4u^4E*P4gt;A`-#zPlLzAdKFGXR)DN4d6Nuc-U^=2PbL=m6Z(e z^i1D89t8#Xg4Lmbxefqo>dicCI~WHhq%@A_^XZgQy-OK}{_jX>n*IT7@)i*0|8Noj O0000F#p? diff --git a/files/default/textures/default_charcoal_lump.png b/files/default/textures/default_charcoal_lump.png index 90605e5cd34a5ed9d7772299bdb25f182024868c..18e8ca2c63574b6dc14999a0076f61bbed81070a 100644 GIT binary patch literal 1621 zcmV-b2CDgqP)A69@+dARHDT9Ty=U7ZMN+Bp?|iAQ~nj z8z>|lEG8c*4-6+F94I3j4Gak@CLS0S5gZv5Fe)K1Dk3y4B{nc7 zH!vqUG$|Aj4m~z2K{_r(JTMj%4@p5ZN4E5DY>(FAxt6Gc6@WJuyW-F-Jc# zG%h409~eqPG%F?@OhYvzAQ>wrA5%#>EG8Zp6%SleKrJXAaAQw%W>Fm&4<8&ABp?_s zDj*mY4ipg$CL$Rd7Z4j34-gItL_9A;JTMOp3Oh9_ab!>=9~m?)Bv(y692XGDfn%5e z0004WQchC9mNR03ZpkjsO-rW!r@1igMAu$M!b#{n{!60J|Ik`UPiDIEPKJQ>(A9g76?H7K>yO z5H18HS$5Xf{mS0nUZ>M2=1GhY+rO4fR@Q5KkkwA-==cUX&ELue0h=7w4*~Eyo#W%< zO8}VBCLevPTnw-XISMLk8$r;&^JKkbE}3u^+vF<(mw?>N-6Xcd^`aCcDoHgDwWze zI5=oDF2N!A*L#KS9RX9ClQmm8JH^#s z+N}rU@tsDkww>JVc>~xW-^D_+Y9zog;(-1AnwN1Lw+OpA`2_YUNv!s*V-k@AAA0EEab%G6<3A)~D6+{UD z*+|3z7VF!VZo00^`uUWu>j>QznIPME8rZ=|ng1E@dai5R_BGf;p;Y=am0HsEgi#ei zfSdw69AgYXEZ21`(*yvPSbCcJnh?V<#O_BxH6g}K04ckw3Avmp?6DJ2HNqL8(Zu*8 zU=#ZDfoDe*teb2UtLA;x?Xp6*iwxGA0T^}|2YmC2s^Bo7^gZs%Qvfvu{2}7}J2W%^ zGz^NaYno+QrvWfK$5C)UjiGGVtLZnU<6&A3L!%2v=B{`<@qXmKpcRxSwd6* zNR){nAO`SKG(BJC=K~;c0EpQfjsBfYgb0wO?Co?q|%66d@Ql5i%(K*YS=xp4)^#|9pW*1`7Ec zjWPwIGUOtEa>d&Sg`$|t;VEE1=9J?Fig?NZ)?cVR6Cj&VT(~?FW`XkmAfNLOq9UbH T^o5{M00000NkvXXu0mjftWSDG literal 737 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 d`e3v^006oI&r(nA36X4 diff --git a/files/default/textures/default_clay_brick.png b/files/default/textures/default_clay_brick.png index e99bec5b7708587f42504ef0ba46006e3dda5f3c..0be2c1fdc834da8f2abd0e49aee6c502faa5dc07 100644 GIT binary patch literal 1231 zcmV;=1Tg!FP)Q#z(jHiA1Ts!%tvR62-1D}y~LfIBF)Ry$21 z6(tY{P$L(3HztlmFLX5|b~Yt(G$eI3C3!d}aWo@&I3~7MJhW9jP$U;+E*@hp9(*|` zQzaN*Egf$&BV;TdOdu6ZA{J>dAW|k7R3;coAQfOM9VdW|WdHyG0d!JMQvg8b*k%9# z1Mo>iK~#7F?9WGH8!-?CQ2`iKsqNn*k-Yy|opTOb*8X*P`1|hN8*lnAJ=d|vKkNNQ z<2=T{>0>St*~j>6{RU4TsZx2d*Z8~LFZY(T1_`?M_+!1+Jd19PRc)1${WShm?+St@ zMx)hT&OLtr_pwej0;*z}QjyxviS=Ng~&o(oG5EJQ_PBVe$)(3TFSP4@Nn@$ZAA64i*JSYkBQ4W^3T!QnvFqE2gF2d%yqj7H_z{7o{fz2!M3v7uimfLWl?LB*+)Z!zgsp zjpR@ubSbrnpv^d?L;3Zytu?qJR5IxL~yu9I|?+Y;m1jFBNCW+ zLu%EF*Qs#aw^ASv5U77U8hyrqs2^v8s*bQ^5$6m`Y9|nr=(X znCIj&pxmf(NNCRs)+>{6!ek0ZVn9Q0F~4PwNI-e5Oevu`D_rc$*`goy{^6BK+^nL=OI z-g@sL4~I)`i#bCgIjV$20%2t13az~%4G2b41bQ4DDvZ-JIn2IW^2@hifZ~ERA`Jh<1kuZyKbo{6yk&3*}gIM2oBuyPHx$Qw)EbPL?VW^f96xIUMb)%AGtMf zfi3(@qM#2B_(K%3_lu>m3;ptnJ*!4@8q@yc_HC!i%a>@5OfW?BU&qnul@YeFxL(*E z#|BjSKTy9$Cqw8`h{K^r?B7tz9RaCXcN{_cJvtf2&=M@sT0gz9N=Q5yHKRl~Dt>}a z7ZK4J=Isrw=~u~FJeK``fle1o^w7CGS9}TZie$8uU!#*@9ji96o!&cocWsxg5r_XC z{Yk?bZF#sCoGUKF`$KdxV4**1l`+lv8+5wRIzFAhF%tZ1bk3rU{WEs2{sTH04o{!m t{t=xn=CglCa}NFs&G|p{`wdkv3IM4pR2l|e&2<0(002ovPDHLkV1nOHCq)1N literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy(g8jpuK)l4*A)}6k`al}mQU1I z$}v@~x6|o!Gu$5KaB|CuUqEGyB|(0{3=Yq3qyaevo-U3d6}Qfwa^!1J5MXf>o6-7z ze?+h0+!rTi?hBhu0Cu$EoD%x1uy&jMPi=xzY)-2mY8fcbp%K4_(YQlQrFfKK=4$Nb*4v$A{5?p4l{ zRU@T#pZ_S|hs#=pwOjr70ITP!E9N%u#bm)JS$zig>+4^?{q6bZ$6nE}s%8&hdi7Qg zv(UinlXJk8zrKF=t1GI&m7*h%RnCc=WFR7m0#N>5xpz570u$D2J?nn@d%4WXv(ACJ z=cs->fLHhR<#{D5sp->3-0M42&puz>E9=ym6L8XV&J5ryulb%CpHiM#(}l{OxIO0l zFw1y=i6H>;!;&QHIK}5xFx3Hdmh#8}lfG&I1w_IVx>*fm!|!=Nzr8y}h3RLi-(D%@ zkMe)N|Kl6=0kyNMyJyI~zTm2_Pp1c{&!|uJndQnK%kNk1aKd#YdDgBzy{5YU{jtw) zodV9`@#KwqRsX#$Dc>gKYMje zXK=3{(Mvz)$yZH!CcxtPSx*KT$YEX`*Qr~Aq?;XCA!_Cc)m`9D9VC*-;_K3{E_-8Q zt*@vj=b%1n_LiSNcX!Rdcl=AG+||!ay*wUCs|(rz&_QUuk-6Dk(xyY%y0c;?O!K2q-N+y0C0CB>-r(VZk~z+ ztLpp(akZLYz3OzK(|hf_e!jBToSA1-smV;|y$WxB3CWNwlUaRF($;nMnYzCIy1u5o zuFvzVCSrd+X0ubD6{%BaqI{Hnn2Y$<#eMA}@AsR#3!EWP9LfwBOfU8sol)>(?3jW( zkmn#VeZc3EM0!cD@1A)ns|w3`dfmyIxz@~C)V)@%@2pitp3M86>5NBN`@D9k?9!`N z=IdA0o#|TrRHf;)`n#&{CDG@+PI8Wes=py+FU3{2r~va(xfbXRoJ`&o02+$IepNbz zB<3N`NaBQv3BHO5$VO#n)jFPaf@5mmliI0M#dG$4*Ztf5nsb~_->*j{Ri(an>9wx+ zwVpcQUa5~B^##de{CMwkaUaf&N~v74UR8Qqb}9kxIfPe1J?rq~B+D}C1c)=eN?*w* zDTj~)&;(AvCFVf^V6B!sb-q0H+|J3mQP+>^Jbi!O=Qf{?vZgXBopeB1Uqw_u+>^r04N^ul<+IRXArls@ALltgnLDl`|MYeP7wn>o&h~9zhcXEHyySfEEoc}uX?~b`}=eK`8x3u>&V>^QF+6Y*RfAm zZuU)gV!x&z^xD6@|L}dxtJS-uss?o*;3C)VuCILZAUpO>6;`)jUu{Nz`qD>D4&(qx zRU_|!D_zx9KfbWyswB8nRwW0h?+c*%bl2y=qQA1MxK*vYRQ>sR<2?EGJ|_hL;96_f zGlRM=^R=$|$ew54i#KEgV@>w znvB1Yoa6O5-=_`|Z}pYuqzCKls#Mmxh^`c!nWk^tQ%&#`yvg2iyQas^$$X0_c@m57P%YPrNn&0I1IixEp{{xeGf5 tMlxLifU4O!Yu5U#44!PIKv;F}{(qa5(ek5S`MdxC002ovPDHLkV1gPNs$2j7 literal 953 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyCj)#!Tp1Y|nV6WEnVDIDfR%-n zm6Z($*xA_G**Q2kIDvqRlM4vAxwwIV2LyP5fRC3C2>AK<`S}F|1Ox>Ig@8a9h`>NZ zSXcxEM1ep|R7^}vTwGiN2qYyWfj~-9N=ix^2xNc=1Y~7p<$yq5PF`MK0SFX<2n3Xr zl$4c~Ra8_|RaMp0)YR40H8eCdH8r)hwRLoKbai$0_4N%53=9noO-)T#trOnMz`(TH z)5S4FLXwr?dfti~<}N+jd`i{Yl)$n?dzo*@U_4 zvICkL;vSve`Qfzu4%gJrQzVnVEWh+?`ccCN87DRLwtv(tG#8(9$naY0GeNZl>|*|# zr!3wnepyt8<;x$Q-yVj2H`6c0uU~qeZSk8eY46mIEx#N+#UbOCK>eL5C0@*DnNpOw ztAAB^yKY~5hO6H0?;NG2rTXEw<@c;A`N?5_?_t6E3EBMDA5J+f?8ES)WBmdL_iwv& zGV>+%&G?^0*OhZuyisI7@Mz}Dywl&zLKzNyaS>eWGF>yr_#vxpt^L;X{=1h++zu-! zdw9G7JmfBsm-s&7@oatTSN-fT)ZcX-XOueCEW zyna^ivpyJbZn3y_ zBk%BI&U5$A$kOZweAcX@cYYRv6(@8;}OD`+k}->0`Z z#yS^yk{G;6>_og~EpWxxp<&bG;?-I(<{mcLK^>y_#Z*FS< P^CE+%tDnm{r-UW|S9@=o diff --git a/files/default/textures/default_coal_lump.png b/files/default/textures/default_coal_lump.png index 31e3e5cace80a8870342a2b8e55f89f42c3421eb..4f5530c15c98b1202f7b7b8de849995062d88c70 100644 GIT binary patch literal 1416 zcmV;31$X+1P)I1qKEN2L}fT2nY!Y2?`1d3kwSj3=9no4Gs87#JBD85$ZI8yg!O92^}T9UdMYA0HneARr+jAtE9o zBO@auBqSvzB_<{&CnqN;C@3i@DJm)|D=RB3EG#W8EiNuDFE1}JFfcJOF)}hTGcz+Z zG&D6eH8wUjI5;>uIy#nfqXqx~00DGTPE!Ct=GbNc00f9hL_t(o!|m72lH|4#1mMi7 z0?7VbSqkgm_kTc#R?|ZgKb1bn5uTmx-kp^%ItcgtqEH9|MaTcS{BPhd3-G_|PXgq% z{;@j$48Ut`6X<|_fba+TKK~WsulDnX`?dBT1bBtJvy`#Sb-9mz=|2SUdX!})iPP9t z)-k^$`1`y*6(a5`YanI~=i=Vxml z2WlVHIp?yluB@CqwWXqe5a8980;|JLW32@*I*T}^8U~ZtD{542;vls*1L(gmQFIuqPj*I%uPzYV_g!yk(OLv6z z4*=D1KCBd_aX&8WeJtI$P%`MBhHsp50lf(QHI0vES)ISkr zXgaa2=185kDCMExZ(DGI5%|Zdfra;OfGYM+V=#l-uX=Dhyaj5Ogy(4voR8^+l2N#q znY2W-v3&hmd;wfQ>6SJub+4G+nexC$1{?gOV|`zQzdc0RTy(48mb0QEWa%b*Nz47T zg-(~3^<5EffV$do=C97(2(FEv%N&(F{eI-^(V|5nwp{x&V6lZ+o%84gZR_i7F;SwhjJf2ced}(zlhN?ejPv7%{z((sAy-9Ii>vn(ZL~gLIW=B*T9*i`{)Y ziGoJO>5wC>V*-zXO2~wuV(Q+>7KVUv!Z@Ktpi?rnbAJS^5wJzWOViXq!jPtH-KDT8 zicr?o-|pcJ5F(K@n~_@&V14xwmT5F29FPPb)AR&b5}IbRgWibby-5fHJ8&{jHUv@qK(6Mk#PaqTnp9yo6UUANz9o@-A)6P4}ZmFCPn;Lb$xyBjxP9+_iiclbo-rO6EOqKCk3 z7y=+|zqa5+*~hJMfYUq(Aa_s(Zx7#voWnircUqh?A{eN(`@5vMO(@-;3^ zP4t8<1wDSrk#*Q0q9>5GJ)hG0#h2Ol)(w=~Lawxfi7c}S4e7DIE#Rv`vo9U&E*HoW z9*ZU?Fp{FvOZXT0uSea!@YdrrhOvafI(!gf0g!lUt?4_%c3=9Sr=fat*EV8;G`+O1 z!jA#;cD9(xKyv01z4~;9X=`o==cUI1rI#DMSUvam@LC&$$#1 zf{f#11GR9V`ncWDfi4sk&<)HcE`=aq$BB8qUUL=zhzbaLMmHdBQay$Oh@h{lcAYAE zO2;FG0}*9c1+Wg$7eMu6UF|k|*BLS4Kow%^Dh^@^e0`s|J|1>~e1jNEkkaXNJ|hS& zG_Ni4!2v~rK<%azn~20{0=)thA`}7J`wIe(HK4Hl b{cnB&T&89b306Bd00000NkvXXu0mjf*M)r& diff --git a/files/default/textures/default_glowstone_dust.png b/files/default/textures/default_glowstone_dust.png index 4329ebe35238826251670dfd98a2c253ccdb695b..c065232add421e631128f9e0cb86fed2c85cbb23 100644 GIT binary patch literal 846 zcmV-U1F`&xP)%-^>8v&H#gY5zf5m1m@BJ zqm~MpjSQrh3Ba%facLBRcoA@D6^DHgqLm8Iz5$7U5Tlj}a%vP|TNjUn4{vA{t)B?4 zpa+qL4&%@Owx>_wxTA7G7eobg+WLm611JSf*dj;mnXQ^eif;oN`K%9LX0&avU#I?T+D9 zw^SwL`An6GE|T&4m&#ijS;KCjK1$S#F(g+4I#Z=)ObtnqE0U@T5iMRPPvup_v0qiS zB*bcn=Uv2xa5*!>Q+X-fa_%1R8yMpGrHXcnoc&N)Pl;#(LoAQ>^;RWSA9j2i*#-Do z6cO=j2LTdg0Kf9|Qgc_os&J`1jW;AM4qwoO|75T&!CpieFn{q?yVWgqsw|-eGYs>V z945OAd_y6x1`O8)muktt;v0f@fq%ZJeh=Y;0DeDJcIBNcFVc#4=ry1 zc?o_^Qy3l#&J731V3#;eSebmn5c&k4nORl}HpIGOI{}*{b!~qSKv8@5Fu>aD&O!xO zy#<(H&djNXl&L5L%xpUohS{Q){$pU&kb{-76j2dpf#Ai#4BlW2)yv*{@QtBBIM)zn zx+6 z);SJ>T>!py&m!g@<+`9rL;I5LVl$^0-Hf)BQWN)|RuIkBjO4ceL8|K0zu&69LqWux zaYpUzFFfj<>kFy?Hwm+g#VrXG2lr+Zj|at~Fo}n&j{%QWxKtMW9`~BH0}A**=af_a Y027)W$I&T*rT_o{07*qoM6N<$g4Y6gi~s-t literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^5DE5`U)qt+-U}@Ne6LEx(<(|L)XqKkOo9 z)5v&qTR7*|uQ3fhb*c9p+)ptp$Tr^je!Vn<%Sw5s>aiNe8C#hCJ6U)|0&QmSboFyt I=akR{0K2DAs{jB1 diff --git a/files/default/textures/default_gravel.png b/files/default/textures/default_gravel.png index 4bb78e8d48445fdf6d0341002f3f04267ea498d9..a6b578d58930477317c39e95ea6ca93ac1a2d31f 100644 GIT binary patch literal 6512 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 DLu#wR diff --git a/files/default/textures/default_jungletree_top.png b/files/default/textures/default_jungletree_top.png index 087bfdaad1cc19f2504ea3e0100a0a9f9d47fe51..f0bba9b6f97a8d7729a7a462424c02d21571a9cc 100644 GIT binary patch literal 5903 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 literal 629 zcmV-*0*d{KP)=(ov5i@meMqy9TbO=HnSM%|e@kgqH=Kb@Ygag+g-~o*IcHNfuZvf1T03)JKxR@j zw2)k$gHL5qGi_NqO+PARP%^27QM{OAs*hS@P%+znlCl5*0j5brK~#8NZPe#(>>v<8 zVWtA^+j~jRZSVhjcfe+qP4@i4)+gCxgx!8G;+$A7FD@st-#hp5A#yyP&u$MO7FaS> z?xfC6fGEaDR!q@Y7=wRKgjDr#KmVf0G^!){moM(Fla>(AW#O)E=?hD2UIgS7~p0XN3i1rHcQfw`eOj|r`G;E084cQ zIDvN{yfT`hp%nZGu!oC#7cStHXt|`6Pg6z0XuugLn{}&gGpHl{Dxm8kb5(_0*Lm+D z0ZD+69s!JNjN%G_F`PiUzvQjXVvaS9Kq<#OpDz|{tKUpHP2f|au2zV3jk(R{ z?JbQlo7J@eF;LDM^X>F;T2oc!&62yr3sX`u@bu)|@hEb+xb!oaaygOz=aC&O-40+) P00000NkvXXu0mjf`xFo! diff --git a/files/default/textures/default_junglewood.png b/files/default/textures/default_junglewood.png index c4007c38e4e82c4e9b6f409165f4f5e41d999ad9..c328d7a54af08edc86ea55a7bba88ad9bfe759e7 100644 GIT binary patch literal 4398 zcmV+}5z+36P)000p6NklaVqWW*(QL7F%*@QpXl4v^@}Kgp%4zH9y?X81QBP0P^sYU>oUZ%z zO#Q!?(m$W79Xh&s;K-(t<6FB9uI)UqX6V>vq&VPLB>E^rem-6I=eZ`h@Yi{l|9Ywx zbRS%Y0%W*i!SLhB9b+fA*%re;7h8~@!`~O0e>>YCf|0*3w76v7>c7r6zskiu{OQ}h zx_{5=&QfY{-&*jl;B*yh?l<@zH2NR6gdR2pczm0SKWq+m7M%M{{^#ikvNe}Pd0_7v zWOsRm_M-WqIe_xJTmt?g<7x_6>)*46Q(op`QigCA1V505-d(GZo#m7s@vV2)N)D2J z5dpIv(u`@)UaaZfwSuL--R}Okg=AYU*^zfWZqK82?1O`F42f@$_X2pAOX@uG&Hj#3iikU^ zcH$68eUpv9%DF~~3U{ePwE_|gGJ<5~X-imzdR8HTP>~h`>7Yc!{5Bi!E-%-jKyf$= z1=)X|QOy%_fZ&ONdb%w%c5I89p=Y;SCiLKs(_#ARnND(h38MkH3L+?Gbe?7+_(4cI zNddqO^d3eaZ}Z7F`2_Ych$;QrmQRWh1Bs*T%5L|rm2yB*F@W|;R8&kU^ZaqPK^qLX zP8as>Udb`?k|ZG&n@Y@2^cZf5o5%E$h&U-HDLPMe?T5x7p_ zIJ$#ODO$F>0WbkRxIi~*Lywyi97!a${<_lQEW)2j*0@~Gh}1sNCD#RcM+)#P>W09n^7OyFQN zn9VAgYG=^vOwIwS*IIIjL@9VzbRM<@iGk);AM=xKv_jD{YB?tOh4qUI(doNW^By!r zd85f`U_^%+?oW3tW}t1#7VyK6_4?TOp_E# z6R#xJ-)7?H*Dp>7CK1EkhDasHD{PvxxB3R#(UJfK4?4BkDoJrJZCZMH(=vQuW6#c&vc_2$w9eGJ&FF~$F4QJV z&fJ1CJC~dV3eFtlo|*;wS1hWK`GCg*D;MXJvrEpL-8J(eJOXq?4EvWaMDAO@kX?|y z&V07$C#DNUUKw?VaQj?{~6^6m~3~;8-)>;Qdy=npq(mnBvi=w*Dpf0Kc566A}3Err-Dw z7uSCUgGV;;(f_2h^7U^1ZCK0a{;y~2fwpkPMf9%%-|>Cx4F2Y@BM?py|KO}s&SCryOQSil0KwbMVGU25wmr#g5OL837UIvP0~OvH zvk-_L)@G=Jp)eLrvm^+mynn?p51+OLfa5+d1sg#ceuz{Hb?D5wQIg3A?flvjsba}6L|wX6Y)9- z?e$9!Q>19rGLc^@wP+{ukzfk&#vU+DG{NCvCITd5@Dd*4z=&RmFf9L;itqB^qG>0^ zJ#Z8~11wBcN&;b1{w3ij;V?{yrgUi{ww@th)rZ!k^i!P;VJuvOf^e1;WNAu86_gCZ@kmvWV zKZ)!fb?WORj$`S8khb8^PKw)2k~|*hC~F`5?nJ9mu$QM$yN^+n)kcb_SM@I&nvfb% zwH9L#n$xLY$~%)|fCUXcsDm>pTaKs$Fx@F1;5k~Zng}gME?v?RfZX}e$RHZrZB>*L zZEIb|;PMTmL}Em*P9vcU6wh>?Ob&qBnet2;L;K;k$E8Fb+MlhiPY>)M8u}~k2j#(~ zyxV8opuA87lZsPrxCuiRRfrYKc=m7=_5(VW{OKQ#o}3SVxBwH@bVI)m(O~YZlMBy$ zNibRf+*$zdBKrGR9t~%ATi<2;;i-H|5(#Ab*??gVAXukCZa@QE4%EJR*OpDJFD?JN zYmfb(5*&Emx_cYL9=zb#z`dB>1_N&2v)z$$uwjld5uGqu^ZBN7#&BG+M*k5%uRh`{ zSFW+Ubk*Ts2GfJQ>#4m-K>W+s*d4lZ4fjbfc-C;(|4O{*yd@7M43rix2WS86zO$(J zv)!Wn-#mC8HGZH!ZHxE6d-!}{IzK`DToL^I{s}@K~9i|`M zu$!l+qSBS^$ny$=9Z%cM&$H&BL|xZ&EMD}@umm^y4>rf$S) zJ?w1rqTt^1?czP4lT%hfrW0P5P+1WwzkS83E@oZ@>1s`eAOVs+I*HW+FcsbrT^hv* z-BurPpgbdEh2;=`vK}NB0<<$OK*z;j_!$ClNrfI+4tBnA+2K@HtY-q1(XPuwDxN5j z_{B<07z|-*O%O1!S8GgdN}EVKa*XX_r&$}Um*~I%X)dB61%1sT;KLe>{YA7V&)5l6 zCRA%w8js1^=8eP>YpoWLNljEpW-H1wBmSih7i*%XfmRYN*JIQSO=WnEXSLtIZkG!v zNHGlG@6=|q!ga^HhoeXtHO&MH*b~$0l+?Lbrtp2_c6;nX$dL<>;WQ%?O;IdRtb`tn z`F?=?btp-+kz96YSEG9B+(X{E^7tR$v{&rel<0d3nO%QOl5xhYy4jQT;A;41+!7+X zdnPv(?V?Y2Kt@x=LV`6bCc&+I^7$q>O$b=y_{OphAJO4)S`N|c2sOBfAEREmd;Q>VJf2&%hzSVoPn!ol{yfg zDVccho%7*otW~VWPs9Q+Bx52^_8NNga`44*K`C9K_dwRm(hFqz@9b{oM98LzwtxX% z?`FU!fP2*=?cynY^XBych{T}WV3REK+b(&yZr8W(+_&9(1_&l430xqU9+-;Q$tySS z-a><<0*3Z~=A^59K+u1wIDUgH_FLNL>VQ-sSkEh&q(eWEaVqg72DF9Reg8wHe|dHA z_jTc)WPm5*8T`w2o5qjt+K>BT#k2bXxj}z_>=N2u4*dC%i_97LQiCUL$&pe_`oxG# zpeq7p<2j5VxIaR#G2B3Hr}tKnhZWPrh-nx*OPYC$t1cWLHjR^&gEopH0uBTge6hez zY|8-8H|?dLh|KOeoHi)1hG>*_6f$*QcqC8Q6mIk_0s#lp?!uWB7He?cD1KR5^fa$g z>fRWZF!VEb*@D%nrC0?pihEJO>jfp>86izEGKpyUT))*OE&&???Nd-&9?WCrG5rSS<)LF4bMD1TrIZ{n+=0Ea&zju-2!fs zh>BuHpclNkA29FkV<9i@S7)>pYL^+M!*mE9aaEWP;X-!8@h%`lfKtNS5^^`Y{(xuK zf#ec`e7_nSDeMO~?DoFV&lc$HBM2Jbzj-BbU$e2BKr}WH>&oIWTvLLnysrE5mdVT$ z>9s~oH#pC`7Rcmaa4-acN4oZN(>!uE2;^{R3KcrK zgtCf{cJ(}JqAJ6bs!Orc%shf-PbXFRCobhkcWYUAQT0kas@an1>n;@E@=fD z`Y+|+b9v0dPa{o$W}_g9#k);s#ZIcCVehg97yTniz%s80id~b)yH^&u0VBlHl%b4} z`~802j?TStI}{X>Y^y^@-rQpVjTJ6r2SO86C3PlHXC`kHveoccIUB}5h@mE|&T-y5 zy^nZEG^EP%HQbXM;FS`g7LDDOh7Vjv>3GhY1O;pX!-qS>qx|@gAdf0Xa}Z8$(aE8J z@KOKxSRsG=c$vB2H@jWo04WU}S*m)G@HS>&k&&$>>Fu|VX!*-W<90vJv$gYReS825 WLM_UR`sfJLhhES-5Pm*{-jdMVmd_|9RJ%?;Hr-e?Ld`7X3Sg?#&v5i-!gie)u zL$8ZfmwQB*d_}8>Qj>Q;n|?=_eMXvnN27vJp?^%Qid3+TSCn@^v5;M|k6E37NwADo zt%*~pgifD(MVoj+ns-5-dPIU}FotR~oOwf>ctVG3G@W@ve`GF~b3K=JKb?9+dtfPZ zSRt5nK9g@bi)S&4W-y3lFNb6L=8kU8(T&tAnI0#00001bW%=J06^y0W&i*Im`OxIRCoczkW<24F&IVH zPR_}>W^Ehq#Vk6v4yGPM{a*W8!Oz-WF+OdvjB)&O}6W&z+P zINmd_%!nkQI%SRW3m^k13cY1s1jtsuw0r_Lck%&ijRw%r!s$&;=M_p_y>&pa8$r5t zl7M}y^#Ugk38KMiLJ6QHwI#Yfg|a@@K;`qP4IKbddja(ph)tWR&}nZ6cEGqbPU`il z?OC(Vdk1wOj%uYB?0MB{?E+rzv$ppF(#ETg&1Nq1`+b>J+MZBPU zK)(Ii?z^tu^K{<;tW*k+;?}HwA2@OsDnnp94{`IhZoGAH`j`+26K$}`XaQIoghf6% z&9OdMQA`OnG;qPO$a7tME8a=EeC2?Zgyz#O zKc9Nzx9Pmo13l0KJ$Um#5A;9}^gs{vKo9g_2j08xNZ9cN1ONa407*qoM6N<$g8HX| AApigX literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyiUB?$uK)l4U(*qk8K}Rc!K<&> zCdFSX+D$daL)FDtI@MR(!(6uc;zfO+V#bmnzhDN3XE)M-oE%RV$B>F!Zzp+kH5l-? z%>E+%zCPh>gv3&(ZA$xmPo9b9_3i7(Qt}q#l$^p`&-&x7cq`Kd=9u6WXICyUY000*vNkla9LwBiUv`OLvpI889ECDk%!5-NO!kCfKLk*dE$8#dW-QS1e zW>qUoEq?m9|KUFZ)AjtjgNkBBzu!Y_K<)O-f| z@>Q(wdwpk!-2j^SB+F_3BmaLFADt#;>ZN_fXMX&Lf2hEAK9BQLIo;)JF&iHI%6}X4 z-<5s_vQk1L?M^{Jx2rUAiX0_hx~5Z{`9*gRTGo^MtKvvovn8N0lZ`*?XJCh!f9m2R zJPR)C_3$b5k`CVd_~Vc7|KT5MfkgX$s#D8`y-L5azvpvmiMmZgMWqsj0sCfm8Uo5V zcbMb5CN=I718VPs0-2P;PDMCV5x#Qn>gUVj_3Gb@v-Bal+WiBJHl#xtEwmR?l zwF*E;z3rZ6VMjJ%>h-GjGly>lHO_rM&d1l~>J_xF$Ln|BJ@ecB>>LGO+nyma)fC-2 z1R;87n#g7*le|fn(5hgd{qfMw1u7&20Je#Ru~8=I2wXWv;a_U(s5Pb1d!Z{zIufhqm>4yWBqf@Ed>;&c&{x50(gn9UyRm+`4c?0O1Hn zXh0~+IG1)_mb(s=Ir&6`)c!bK9;f|9Y1WqjhE9c#fXMX1XTmlJtR1EV+%FOsN@bcd z%Hi~JJ0I(^nYwS+H}Ag7mGRtyR*w&gz4G6S_Ow}Gg53ZZY@DNogF-4vr6~}{{q)U; zeyNAs%QOuz*go%<(po*-wzkIQW2qBHK=(T!UHG*C?6f_cfD;l#ZyR|AJgSF|Hy^?4 z%N@A4xz3cES$r4$rRIMHsf;*?M3O52GJquyAiI?t5VoBmxGc+YYv*ZwT|i)%+kQKG zxjfcs&iRTQ>b$ch@z1J!CYwpep=MjloTJY%eH6>fx0Jv zt49H88nzXD#-S(k8XD$CUP1kQ>(V8=^yP~4V+DgEwoCzdGA6U{n&ubPYm<@$X-WK9 z01`h-VkTRcGNQz^OYhK*EqOUUWt;nYaz{gXes4c{MX@QQ3K#@(3KYI59Go)`nODWG zegv}DdVG{4mS@?k@pdLz{j?xGf zz`i%{Osub8*pppUCJ)1Jb^M)XEWuyf7_uFJYzIZ!i}I3Op;cVKI>7Hk0SRx)v`@>l~4@201T!|ic!qqjS8w1dl+{#-||K|98-=xG}(AqMJ|*{IlhE# zcnfSOK5H~j2{FdK*~MhvPv!FJd)pFDNeN_bN-iH46XF?F^CDlNBf)%pRf%kiY76aV z&YW_e0J;!Bq?O_mNdQd-q(UWk-Z-kVMaU_PiZEP6mzI(SE~XW=!GSr|!ebzd$%b9M z9U&zFk|7}KEDA)HDa{qxB%3oTs6ZV%3hc>V`g$tSk@>^|qU@C(#Z{7R4=lGv$h|j9 zCdnO?>2&amJR8sz<5kiIM>8iAjNA{M>k_M2K@vY}g(eSyc+)SYhv*(nJVM7sgmZYr z`ts%a_}ktOqQIpd&Nf*5BZX%q6NnP3p{lIm+BR&))0yq!sN-cLkqThjnQ@Y?7_T|q zioA+cq!O7KYUrZa#f4lMI{@O1QXoEYq;fhM3}J;aaheY=;4-a1JD*@U7kI@1C@%cW z!9Wi4Gvjop_D}^ZkF}4-XMiBr9q+hF!JBdw{V9`@+*?FScH-f=t>3Qu{oem(AHUoE z4WF63(x74EU5LZIQJc_utubOl>)RRMaRhwiFNb@V)aWEC4D%KnDwc(|06ue1Xw01H(qWq<(EX-c4B z1EBN(VnGWMu)_|!jTq%lj-$1p1k82%kUqjUgLlAi?Y?cJEYtbs@DR~$L)tD2N|tM9 zr%ZXeyOf$~zWnA7)A1Z7YwdkIl86NA;rn{{-s4L12gm?aMdAR0H&RLWB#?%k&QJm6 ziZ^@kiH%B9W+4}`%s6-xrNbTU<|Vm^UiCDUF_(Sq%dws%Yyg^>bUd`qr_1eexgdT~v(qd96Eey+CS(C%!*D(;d-3@>+t;zqfVU}h zvXNTd zc{s+_2&v}|0)o$-0n{kd$&L~dLfNv!W8nuy@`>#RfE$TI z{6dFd;!Q?@ZpI=Hg!+|jFgC^mW*fPmZCqm>;|v79rsc8B&yl0-kd?Y1%O)YA z4AlX6IMeOb{fXQGbfEo^>mROqUXcPqAZaoP%>;n>nK9r3Q#cm0kYS3D3XGG6rpXbg z09<|1=ELxQCwZ(N0BHh(UmM#EZ^UceA3c&`LVS`iifvUzQAB_l+COCbAqgFR^IE4D zj{pqVAO>#)7!(3T$W;L#!z3WUwg*+0S{;!9RxLbze>~nM-b<09=GY@9j~@JrA#nvv zF;@y{hf8`*QAJfq65z*8>G?q4tq7nlZF@THkGCV2_IlU$BLz|voH)Tq3RNh0H4$A9 zK%{w7q5;R{+arFxIC$(|_Gxd{PI3xx%^Oew`QMHuZ`o+_xDfh0{UWxhUqzm0jG zlo{K)9PdXIAMR3Rs`X}!6^Jqcs!Qb;Y7;s!pVKn8;3SwQ_9oKvOd`-AA?5;%om$XQ z!1hd;$l+Ycr-*}lyN+Wo^GoixWqR>21JUrnSck|?y>U%jGrP z`ZTFz?xh~?Q4Q5l9W2qr~<6Io>jkhb+9X2>_-_Hc0SR7fo1CA z?uqBrz10ijba>dtG4yySE3oysmT_5UyI$YEWa|9G-(3Ipf4;2z!a(r3eFnm23w{=O z#xoiYGbNx&jGkLl>9y|J7N=3({Pok}i|zW|nmHgejgkc2lEps?01sEr`#3_#^-vx% zS<2;5R^BXi?<1fbPpd)F;r>s(9qY95GXcS0%2K9havkmfqT;2pt{$eV zk9WWOZ@dXe)m1SZjbDs*Lpw!|>Sudb8)9c93BA*{+|I|F7wKXXvj__TF@+Ur^N9;6 zO!x$d3IgE->^??GyZFNtJAcW{rPY!nqtphh&tI1L-1lRY4#qD3>fii(%2Pc)Kfho2 zg>+VIktn;jm);L0n$6fAVlva|^yTI9-p8+Kmza*1sObza45@GJS|&l@76iE^I;gB* z0Lk=pST)p^+9mO8FWVh}B(<1w^oa0$dWzt1|M2vFzWVz2<@&pb+Rl&f_>BD#qg>^N zpGMx7Q;dsk>T;jsk^X%C)A?|pxpVbyNTofzj%@(4$5?>u4(J~OZ1KssTsaE}0MBKg z<9u31g!l_feF+VxK-o&jfKevyOowNIO(pu_=0ma`?jQHdRc_az1wR|4CG&cjzuR8{ zyuBNv_hh-<%6!?L*ASQ8(+LT{%}gp~YvZ6vnEk@(Bqj`QS&py#OtZQ~L|@x9mlh#@ zZ7L&q&QzHkfq9cwU;*?F5K*3&>yLH0ELYDrU;m#nKP8jyJ7AxsX9YH6SpL}C(=^|W zcD{Tp9+b)R6{F?8wmj$gDclTP{!g?IvHqat&SMj+0I)~llg#F$`!e=xSrOu&lPQHG zXgdO6J_wL8kN^?ECw(iKjQys}k6_(*)FkJWWlj}(C#GZDAG1|S``Oz=TOVl8`*`i! z%SYhyQL+wSJY^@U5*!9Qm06vIPa%Wy_Y$=-9NCX_AdVfdQy|M#VrmUSv=jaU?`+P7@0l zBn9cYHOmJ{nO7bOT=F38NkqM5KaPz|G?d3EHQO4??aEk~HYt0aM4y*Sx`27p6Ui-c zGKITsO9FU(w4m?Kqyz#dK=2pDKnc{yI;DzYwk?w=k^vzJLXb8f1u3ANj~Yw%10f)) zGl+_06+rD==_Rw^8nm`AQtQ-pOxy5WSc(upOGrR~ZClF;pah>p5JBb7Mo`i{N-&bS z^yaJ)=kL7S^z4&}TK6`p6Vz}uDyr!b6ynO>$}~xdM=1=6NKijVPy_Fvnz$0XVjE0? zD(_=HO=r+H4A|n0C9q_nH0uil%Yoz{1#c{jJ*47g*-K=as!00vZ?_UIQ$O9c-e+7u zxE2*jmZeC*7ITzro0-ZmSYxXtY)e=rJ)j3bh7AekGOkcw`suYzKuCb>Ne&qhIFStq z6nK!yCxHNDR4js2CR6DlN;N4!(D$-FElCrWLJ?q)Z9p?I4Drgc;KDV#bi3mOk1CYrZ0}%z(Hb#eVuEh`q@O)fM z0fz+wBmwATTGX?-2!msmWQmf1uz)Bn<`z?RHf$?_(1o&>0N6$xN?(cq31DD;Vayow zfzJg%5Cul?v!Q|`MQeKw(r{&!`Ss~T5 z5Zbc*0loI^GM{cUUgWBHfrQN6bX7UT7)XvlB1{qTz{s-MUIw2D8B7k+Ic%HOSl7gn zmgg`4r?0krT;?wu;O$BZIL_aG*uVSD{Ou-WW?=eao8LVz-;DNr?XC8SJ|PLf6O#3; z$@}@Kzu@we9m_>yd(krQt(EguOCdsIFh&At+kCQI7bl+!z!2_jCyJ33of3s>rGjYU&5~IF*sg2rz1mw{6Te9Z)mQR}Y zSFevge{^O(ekh=&cHVekJ98vRSQfdzW<>NxHk<%q(Kfcd7?i#51Fd0aDVeFv!nx`G zaR2f0^jqteUG-g=Z+boK<$7KIs$G?bS+7;CzT*=W*lYjOJ7i=Cz|)K8k3`q>Jf8p* zmNXp%sBpZ^eI5G<-b8h_0ufHBgcAURyfez&_cC%S-~8);w{0zl_ib&xWDfe`BH2Xr zxOZH`k?Cue?PSPLIO`4k;ucltrWa04#dm?0S3(>Gbs<0QxO3eW{pE9srU6 zh3kRLj8djDO3<4n1KBk)r`fWkfRN&0|2s+d^Z$75U%!9++w;f2t?Pzp6B}bt3P^n= zJIg)glsZKjOy8J4!h!P5ls`1Ca2H3|&Uq(t=BX3v{xUll<5e%U8>5Y-i?V+A9IQAVgEY-9(fbe(M*j)i|eLC z*R|sWXnW9jj`8BdztHyIS^kFUH0AT)DBT1t8LRJv0i;O@gv75c@!UB8wE)!X4L`Gu z>GlLt4`7~0nz3=X5)dI^UNlV_13&^;^Zus(o?i>zga_d|UQx<>PG7p5!m0Mrum43k z7-yk&_+2l*>)dtjnuomDnAq}mvpWI?Q_l*d&6`tvtdgWDgicVR;J8$=oT&5Iwz#_P zHoco)lgyi*1wFJ~SNcQI23QGHV4l_=K7M$7yhPtKI#k$8dlDX{MtvEFzoU29+j%OH z!&IfLG(I0KiMx;>Mlp< zCeVd9;%M4)91lG6PxZ#qJ*);87>6#LXU1q5r45ia1Fa>$7CCm7ZR@A${nmdZm##08 zEhMA*pa1^hkH7z4*S8NI?B}lm*uf2OfeT)_`CHDfkPyC1xU_l(fzg@Ig?0p`^29HO z=g^OXYsRZ(NhE;vKsrLXQ_?w$f6gFUCibPt{gynyS&&N5{{ zle6jPrcjGy0LmBJ_yC}6-f66zgl)ca#$u;B)b9d0a{S!5!u0rZ|8}?$S@D%glxPUCMbGGN;Peh4FbL%|Hk-%NuM!=^qys}S zJ@aAsz@$%1{36naR(65tx%J!58;_$&+xxhA+`a#rK3uY$HYG%x>5!*G)MM*WjeyP( zpsp&Yp^sm1ow0a*-3a6K_NCpxh<$bX6oY4kbUEyTBWk%&A%;F>Q!=%pb>nzH$~p$X zg)yMocDoes6;R@90xiT;IEHZOEiLismvSjT`M7|=N!KQ7~k z&WgCJdD~;^Z*K4N{1Q`Z>)<)>z77O2f@0$?dR9%s{E#1 zypSR!rm+i$}Fp##N=ur>yI4=Prqn|L?jG{4^r!NtFdG-1<7+?-U7)wd5 zr+HqtyETnEj>hRdqKlyl6)Z8i&^vVfa9|0OK>*YA<-9w**uD1LZV6$8T9h&M5lhK^ z2*I?i7S>HzH!(hjxDS!AL`g_ZY&vm>7k$4h_fMfa8+L=yw*n&!L5@KowvkGm5sVl+ z0TFN#(;Bwx2n41^F!WVejarR^Gg}aBFe^j7R4)SCdF|cdb6QL2qaXr^Uh?TB=+HqM z^(B^j^-c;e&IB=l*%VA0Lm<=$J*-btJ&e&-M8IZ6cj?Hniy3m5rye4~dVjkvw<0|t z2w~c?Mk5q~m|bk2k*1O6l%}hgw#WecK5jd(-Dto_8#Cq5`zfZi_jD8I$I!!AN0^r! z_u@7<=~Gvt_X^?9;}4dDz_)5wVRJ#ub4vnpT}($4DuK z+Dg9s-oJ&|5HH?;J-zt^jFP5x-=1i+C-rH2JLc$4}+)&{x3ei`fzZOc=8>QhLan9s)rhdXpja z>+k*D{&>ysJP55kh}L6n$I5ZDxjayx=6qdil`}xs;yhUa1eU$aw|Y~DRz*OTW6iO- zmgZqIOvw6{kEg0WUGjQnTCJ4LYt=>^Kxx(*fc=Bk7($Sd5;f$wlA=>F5%ml*xXfGi zL>ldo6Q!GW>!8}6s%Q@eLSR@A0*Gi0(u9KDbxX3CW6UBj3}I>^BEo56360fIx_QoW zc#Q!XAg4ruW$9`*m%;plync}};7zcX2=9;!qKp41N7JPgsRpu`^a?sEkXxgcWie_R zb0&vPZQou2^Y{LT4ovRK*B=0&zJGpsh8&U*k{G zhr9U)u7B`9yJ#2hUjz5o-~VS*hwVMe5vEJK?b<8UHKdq867rq*z#*>I-Wai`gFsM>O#(QApX zUZ>h}iLYOjzh$fAa+$?xu-0&y#AvA7bExHVkF#T^-*Ttoa;N2ThN)eUwPcaIW3JL} zn$2jR%WRUdW`dkGea+1PYf23E0s#~trY=Nd&g{xe%*>khna=zknm8WLG zjB4Bf0004WQchC zfE597G#dc8uA9kNvI7Sk*L-It0P9}>6EYKk_v3)Ltz{;FAA(5$#pQM|GXX4KY*c;k zAb>gqq_RdZGXX5GPRb76x}yKI2muL0GSdL-+71=N)oTcFAhWzXq(@axSSEwLMUQ^~ zxI=oZv?MH(`Ihz<0D$ZFkcpOAjJXb(Xqm;B>slr#8gpIGgag2JIR6}gu1h8q0R4dH zp992o%!C85A21UR5Z8HU64xOUY$)nFW`YgHU6)L-p@{2{2{sgWT{;u{gSf7DrkGwwQOf|)tQb!`oq83}P6yZ``ZW@J<1I?l-N2X=XJp}3AS^80}uFVtKoUO+#X z;5zYw-47h%1-l;@37L_1CZ2yIo6=@U>%5^iDvQ+ zl+HvmqrVT(%;@g}G?N3QGto>0@bhm*0FXBo`wq}I75fg*Hx>O3@HZ8AT{<%ykZU^w p0G$62z)e}_rV0Tpbx-8+BoZ&vhG)n@wws`^;#n7s-$nW5Hy4 zck+a^hYVVbJD9n8QWxZlGKQXTIdDX=JUU)|Z@I7Q7zQjF2Q3^2EE)(d90)KS2{0cDG9L>uAPX`e z3^XAPJ0=cBD-J>{5lAf%NiGmcE)hyE5==1@OfeKqG89cR6;3l2Pc#;m1nB$#00tyU zL_t&-83n+LavQf50MLUA>@HuTEGP9ell=dWwMm^QwnK^%xeoxHG^7cb9PuB@k&M}0 zI4p;)E);te?@UbhZR97*Yv>PRDAt!Nm{SeohJbNiPSTW?pL#-WqcgG^8^(Li~tw^{BvvV%nN#^qI~Y^ z+~9EVC$3Br84(&bc)R#t26&->cN>5g7Kt-1fRb|E*b3q{E(-I6msf=hTk5&W4GRDa zJPApoSXmfH0JMe!q$;!jz)J^!B9fwa*|KPjVHnKy;Z-n96W-Fs!(O@rxTWNQ63mqh zk0eciSHWaeVL-iM+cwT}7J&G&9|l&?Sug=W1_SJOJFetxqSI_!ygAAlL=+~IDQ8-P zpkOrsNKC$fMj$Xt3F*lM9RYg53UO!Hr{opBlrlnq)?m`|9q>$>7+SME^}-t5H@;ZC z;*|#%QEMF=zyOd^L}(2w6aargz=CH1h;_}mbnXBQ5cDTvf?EFqBH*!6VE1UP00zOr zL7314y(`d$&)@MGj7zZy(2{Kj!vMeoz*WM~yVd8Vcei$(Tl046p-YxN&s_+of@VZu2{2~q%hznWJ83@5gnb0%ll zHhgW3I{7yQE`SEiS`@gQIIX}z4KVnMtMf+&J<-XX20#uIF9UdI1MnNI0rVh1mUpX) z0HOk3HvpL}{q7G5XM86DA_-LPcWfwI3@57-4Fwtax@VE*NqxRS(xnz41Dg`S$!~b$ zafPRpvXzP%yh$kg1jZa2+(QqlR^jl>06 zO0vX^=?)V-?{;sSNUk1SKy2K8{Gg>Tjzcjnpmd#50dFQVUV*b{;N7uU@IOFQRJ?tw zwRcS1Bc9dDG=Y@fIG+({t(8)`mYNKb6r)w9-UEy5dM2wMMV7?^Sfy?5q6v3@rH5teWRWPp32wWqg1002tC0%o8T z05{~^8l(ho3j7O{F4dxiq3=3=u8V^YO?=onEC9=@0z^b9cxkOmtP$YfWD5X*Qf91V zQo>uo3$Spu&J#fU_C!GvKI4*Lo^WLNyZ`Va*x(U?1XR9SS(XB@EC6tXpY!O4w9B)9 zd2pXSQ$rzhA#u>X$+D9Rsbj~$z;`G}uW@A01H(uHdM#`Pc$csaV)?|nw*isqVL2WF zNSX_(4cjlj^uA>>tiV9|t|91wAC5n78)DngBqWJXFbN0HtB;Ql{DnsNXzL2FF|*=X zs=7-rkH?R3#K9B21GeASb)}Tp<23C78z7upNC2?gd78mufSkvX+)5lML+br}6Fs*q zOFX31{WO+s5Zx!P>q-{t*lv;$W1L`u^#QPI?HWM=E7=3|zNBF|`XJfc?{fjOX$63B zak>qx|ut~)pK>&zf*{o|bj^n@`0N{m*k%Pnsu5qbWz?ENY@CK62+X~!2 iK7igcOrz>_y81uKpz`irA7Cc{0000ThXJ0}xEE*eTO6iP7`OfnWtGZ#)Y7*91BP&OJ;Hyl$q9aK3U zg+Zn@0006iNkltMFXYUHe!e92Cd7zP9@g zxYkcs_(I4i66FG3fC{U2T;4m8h!7%G#{vlJs6@cn-r>2tbu}r@u>rG<>h0JG2nPl- z2@pE9tSbkKT4F8-fYQ?ng;P+3S2{-yZCwCqtsoGlH~=-#1S`W3*1bBJMWZN|08tYerrvmQ_(8$$1rL}R0rh6li*;N5>RKTCxSqA(L@c_W-&7|;j_|Xvp6}CIs zY)>>zmu%u=JoYH zjec)HyQbbxeICGo$*54;99pwmNN2V4#Pei8TQa@F)X|n*2%@M!{~u2!Pq64&*V_O9 N002ovPDHLkV1g~_CO!ZF diff --git a/files/default/textures/default_pine_tree_top.png b/files/default/textures/default_pine_tree_top.png index ce3bfe54d0fb0777ebe6d618570ad51477210f6f..985ebc8f85ddac3e708bf053e4a9c587c57115ac 100644 GIT binary patch literal 5886 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 UE~tQPr~m)}07*qoM6N<$g05pqzW@LL literal 813 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 R9IXHV002ovPDHLkV1nj8f9C)I diff --git a/files/default/textures/default_snowball.png b/files/default/textures/default_snowball.png index 7a765b28a75b099d0b3e07e870bc066b16fe80a3..1b8b66601b641d252b0916dea01f37f167f6eb54 100644 GIT binary patch literal 1660 zcmX|CeOQuL8-Gx{5{+3J*~l4TYANz4rYZ3#Q%vxK)U@!u(y55}qyi!i!X#5`TCU7= zuW5de%GQ*$z3U3~a=7(gQGTH2{FtBBD(%B$l9`w~+;;7c`~1#*&VB#x`**H$ol_Xb z2t=7-%m4sD(P`8O15!53)W|T}o4+Uo0K_ghk||_{hLBjiG(vnLFM&-Er|}K@06_K? z^W#}5Y#}y*&4IZPZoXZG!@`LW?zl&&Ybf8Joea|?0`^e}Ba$UaVRO% zjV+AFiqlfL86+`;`-_)km~SkDIP6~`!W0O{3=PBj^8{?H2f>5jit{nUk_CxLqzLNa zf07Lzgi96*`6Lh&i9`gEJAo(QfNtL2-k>WHBobW=5iS|0xWag`3pc}VgW_)vDm#NE zfcZk0$Hi`N#wYMHg%A!0ZWICksbXjs{I_3&^RHqy*C111(1QtTd}TPMT-e_~EF&V& z4@(d5_jL32^mHK-+yG$TmCP%B&eZVjYTu*~yS#8b9v_Q2cDSfwbe|o{1IE;S9P1(L z{CkT=vUraY8&lEto>G?&=A%w24F#pCsZE6_iN^ip-VE+cb>He#7GtT}{F0c_yX#Iz zF<36a+eFAYN$4dz0$B_vxXLhN`~w)-_Z^dAEVZ*LrcvK|ruTov#K`Y%TG>W;Om4Te zx`eN+=&k%kankcP_B4J%(Y@(ha~c%=!m-kwz19+aS$(*30N<1-O<%BXjD|owsQzys zdZ=b)6ohGLxr6uV%WSmEUHxJDxf( zL|M0V7{>^v4y|trhd2|RMi%3Sn~CJpqB8(shy8{j=n;Fh0APHIPW?PG`RrVUiaYMQ z^?u*2uiLJosJ7R)5RE=hw?;^I)9Fu$$|} zE=Ib$AfHH7jGz^JkI$w_IS+sYE+SK;k_(Uvz4pO=4Vhw zY#Rx6^K;S%S5@a7pT-HR@2$h-6a0m<&nb%c7hZWKpGz+($oqE2m$i+n)OThADXK%= z)V zRyz{ma;4$U@DUfG!-4lE+Ceh4#1}Wi1)Q4zTyY;6i1!LsN?lbMA`*#SVwz zr=4n9e(7V+s3AMB^Vcq3Re_h+UaWdNvTQJhfk>A#wj4x62L!!)Vx<{b$$C+Cr^S-? zQ!@~kS%EM-ED4Ly>9%JpThlO5Qvc3iqc6Bz%D9CMN+Zn)qL7WBavlw>Z2}xtMO|gm z1>Wv1#T;h+vuonD`|U;pNC2?5ZUQ>`&G!qBG}ZM?+b(1^x09MosE$1s{ocH*U)*gM zEo;=A0TYi<=1qK0L|xV;G3HIS#OA#Vb>H07k+Nt$A)yq7uXIt&irfpCuN`bGl`#ZF zrykvd`SI2PpL@+x#6iRaQcS*l_gc^Ga%HyciX!AgSf!<+jdF5b8LJw$#%PM3Ez$DM zOe1TWOM{HA^X?hFK0ROG(aEvDPYNB3wCKL+c4@V0XI=ZAsfL04#!JXai+x=21e#WC zymJzjOBr%=TUS_yANLusNxpD!{j$RItQ@vVt}wtd>b%h#J*WOh`o^b04`5Jl`Nie_ E33*WGL;wH) literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyDgizruK)l4&&bOwuBn-|WXZy{ zAaMBN#j|%n;PL0r@BaV){r~?gwwIHD>KRLd{DK)Ap4~_TayEIoIEGZ*I(y+ZUyA~d zYoK<7#^3+{=f-ugzTQ(U^!RX`V$0)f>*xQT-J4nYB~K+?)4B1FphD@&6B5&JkKXS&-(h`vRCZm`NEiQU{6n diff --git a/files/default/textures/default_sulphur.png b/files/default/textures/default_sulphur.png deleted file mode 100644 index 959680c67d464b94c4390d564b39d4c584c35624..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy5&=FTuK)l4*VWZEGc)t_^b83J ziHL|ODk|#g>N=%W-49g5SQ6wH%;50sMjDV);pyTSQgQ3$1hg=mlmIW zz=8eEF5WG(|MzT*=lgJ}+2XrG;TyFz?5ca#cPJ+AZPVPt{YB{B@qZQkf9i54eE7@M z@^xdqwxhn{0>$UWtULU&m^QBZ&>TdndP{Amy3|Ke&a6d&AWtC)lJ`K7c+XY XvV1vp|J{F}8yGxY{an^LB{Ts5@6J^# diff --git a/files/default/trees.lua b/files/default/trees.lua index 06eb5e4..de6c04e 100644 --- a/files/default/trees.lua +++ b/files/default/trees.lua @@ -73,18 +73,17 @@ function default.grow_sapling(pos) minetest.log("action", "An acacia sapling grows into a tree at ".. minetest.pos_to_string(pos)) default.grow_new_acacia_tree(pos) - elseif node.name == "default:emergent_jungle_sapling" then +--[[ elseif node.name == "default:emergent_jungle_sapling" then minetest.log("action", "An emergent jungle sapling grows into a tree at ".. minetest.pos_to_string(pos)) - default.grow_new_emergent_jungle_tree(pos) + default.grow_new_emergent_jungle_tree(pos)]] end end minetest.register_lbm({ name = "default:convert_saplings_to_node_timer", nodenames = {"default:sapling", "default:junglesapling", - "default:pine_sapling", "default:acacia_sapling", - "default:aspen_sapling"}, + "default:pine_sapling", "default:acacia_sapling"}, action = function(pos) minetest.get_node_timer(pos):start(math.random(300, 1500)) end @@ -388,12 +387,12 @@ end -- New emergent jungle tree -function default.grow_new_emergent_jungle_tree(pos) +--[[function default.grow_new_emergent_jungle_tree(pos) local path = minetest.get_modpath("default") .. "/schematics/emergent_jungle_tree_from_sapling.mts" minetest.place_schematic({x = pos.x - 3, y = pos.y - 5, z = pos.z - 3}, path, "random", nil, false) -end +end]] -- New pine tree @@ -455,3 +454,85 @@ function default.grow_large_cactus(pos) minetest.place_schematic({x = pos.x - 2, y = pos.y - 1, z = pos.z - 2}, path, "random", nil, false) end + + +-- +-- Sapling 'on place' function to check protection of node and resulting tree volume +-- + +function default.sapling_on_place(itemstack, placer, pointed_thing, + sapling_name, minp_relative, maxp_relative, interval) + -- Position of sapling + local pos = pointed_thing.under + local node = minetest.get_node_or_nil(pos) + local pdef = node and minetest.registered_nodes[node.name] + + if pdef and pdef.on_rightclick and + not (placer and placer:is_player() and + placer:get_player_control().sneak) then + return pdef.on_rightclick(pos, node, placer, itemstack, pointed_thing) + end + + if not pdef or not pdef.buildable_to then + pos = pointed_thing.above + node = minetest.get_node_or_nil(pos) + pdef = node and minetest.registered_nodes[node.name] + if not pdef or not pdef.buildable_to then + return itemstack + end + end + + local player_name = placer and placer:get_player_name() or "" + -- Check sapling position for protection + if minetest.is_protected(pos, player_name) then + minetest.record_protection_violation(pos, player_name) + return itemstack + end + -- Check tree volume for protection + if core.intersects_protection( + vector.add(pos, minp_relative), + vector.add(pos, maxp_relative), + player_name, + interval) then + minetest.record_protection_violation(pos, player_name) + -- Print extra information to explain + minetest.chat_send_player(player_name, + itemstack:get_definition().description .. " will intersect protection " .. + "on growth") + return itemstack + end + + minetest.log("action", player_name .. " places node " + .. sapling_name .. " at " .. minetest.pos_to_string(pos)) + + local take_item = not (creative and creative.is_enabled_for + and creative.is_enabled_for(player_name)) + local newnode = {name = sapling_name} + local ndef = minetest.registered_nodes[sapling_name] + minetest.set_node(pos, newnode) + + -- Run callback + if ndef and ndef.after_place_node then + -- Deepcopy place_to and pointed_thing because callback can modify it + if ndef.after_place_node(table.copy(pos), placer, + itemstack, table.copy(pointed_thing)) then + take_item = false + end + end + + -- Run script hook + for _, callback in ipairs(minetest.registered_on_placenodes) do + -- Deepcopy pos, node and pointed_thing because callback can modify them + if callback(table.copy(pos), table.copy(newnode), + placer, table.copy(node or {}), + itemstack, table.copy(pointed_thing)) then + take_item = false + end + end + + if take_item then + itemstack:take_item() + end + + return itemstack +end diff --git a/files/potions/potions/init.lua b/files/potions/potions/init.lua index aebeac7..1e6de3b 100644 --- a/files/potions/potions/init.lua +++ b/files/potions/potions/init.lua @@ -67,4 +67,5 @@ minetest.register_craftitem("potions:glass_bottle", { end, }) +minetest.register_alias("vessels:glass_bottle", "potions:glass_bottle") diff --git a/files/vessels/README.txt b/files/vessels/README.txt deleted file mode 100644 index e64d879..0000000 --- a/files/vessels/README.txt +++ /dev/null @@ -1,22 +0,0 @@ -MultiCraft mod: vessels -========================== - -Crafts -------- -Glass bottle (yields 4) - - G - G - - G - - -License of source code: ------------------------ -Copyright (C) 2012 Vanessa Ezekowitz -Version 2012-09-02 -Modifications by Perttu Ahola - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 3.0 of the License, or -(at your option) any later version. - -http://www.gnu.org/licenses/lgpl-3.0.html diff --git a/files/vessels/depends.txt b/files/vessels/depends.txt deleted file mode 100644 index 331d858..0000000 --- a/files/vessels/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/files/vessels/init.lua b/files/vessels/init.lua deleted file mode 100644 index edb4736..0000000 --- a/files/vessels/init.lua +++ /dev/null @@ -1,28 +0,0 @@ - - --- MultiCraft mod: vessels --- See README.txt for licensing and other information. - -minetest.register_node("vessels:glass_bottle", { - description = "Glass Bottle (empty)", - drawtype = "plantlike", - tiles = {"vessels_glass_bottle.png"}, - inventory_image = "vessels_glass_bottle_inv.png", - wield_image = "vessels_glass_bottle.png", - paramtype = "light", - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25} - }, - groups = {vessel=1,dig_immediate=3,attached_node=1,brewing = 1}, - sounds = default.node_sound_glass_defaults(), -}) - -minetest.register_craft( { - output = "vessels:glass_bottle 4", - recipe = { - { "default:glass", "", "default:glass" }, - { "", "default:glass", "" } - } -}) diff --git a/files/vessels/textures/vessels_glass_bottle.png b/files/vessels/textures/vessels_glass_bottle.png deleted file mode 100644 index 53642a961c3aecfc016277baa1e52461d636f600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv-2k5u*Z=?jU&-}6k!ZUo)NqrZ z_DXlvCr_T7S-OWvm&FxPlovnF3fU_aU1wjw%=#ftZ09;yWGK{OooYJ Y*)I9-GD5!&11)6mboFyt=akR{0P{Oa;{X5v diff --git a/files/vessels/textures/vessels_glass_bottle_inv.png b/files/vessels/textures/vessels_glass_bottle_inv.png deleted file mode 100644 index 53642a961c3aecfc016277baa1e52461d636f600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv-2k5u*Z=?jU&-}6k!ZUo)NqrZ z_DXlvCr_T7S-OWvm&FxPlovnF3fU_aU1wjw%=#ftZ09;yWGK{OooYJ Y*)I9-GD5!&11)6mboFyt=akR{0P{Oa;{X5v