-- Nodes will be called :{stair,slab,panel,micro}_ if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then stairsplus_expect_infinite_stacks = false else stairsplus_expect_infinite_stacks = true end -- These vales are in order: facedir in degrees = 90, 0, 270, 180, 90 local dirs1 = { 21, 20, 23, 22, 21 } local dirs2 = { 15, 8, 17, 6, 15 } local dirs3 = { 14, 11, 16, 5, 14 } stairsplus_can_it_stack = function(itemstack, placer, pointed_thing) return false --[[ if pointed_thing.type ~= "node" then return itemstack end -- If it's being placed on an another similar one, replace it with -- a full block local slabpos = nil local slabnode = nil local p1 = pointed_thing.above p1 = {x = p1.x, y = p1.y - 1, z = p1.z} local n1 = minetest.env:get_node(p1) if n1.name == modname .. ":slab_" .. subname then slabpos = p1 slabnode = n1 end if slabpos then -- Remove the slab at slabpos minetest.env:remove_node(slabpos) -- Make a fake stack of a single item and try to place it local fakestack = ItemStack(recipeitem) pointed_thing.above = slabpos fakestack = minetest.item_place(fakestack, placer, pointed_thing) -- If the item was taken from the fake stack, decrement original if not fakestack or fakestack:is_empty() then itemstack:take_item(1) -- Else put old node back else minetest.env:set_node(slabpos, slabnode) end return itemstack end if n1.name == modname .. ":slab_" .. subname .. "_quarter" then slabpos = p1 slabnode = n1 end if slabpos then -- Remove the slab at slabpos minetest.env:remove_node(slabpos) -- Make a fake stack of a single item and try to place it local fakestack = ItemStack(modname .. ":slab_" .. subname .. "_three_quarter") pointed_thing.above = slabpos fakestack = minetest.item_place(fakestack, placer, pointed_thing) -- If the item was taken from the fake stack, decrement original if not fakestack or fakestack:is_empty() then itemstack:take_item(1) -- Else put old node back else minetest.env:set_node(slabpos, slabnode) end return itemstack end -- Otherwise place regularly return minetest.item_place(itemstack, placer, pointed_thing) ]]-- end local function get_nodedef_field(nodename, fieldname) if not minetest.registered_nodes[nodename] then return nil end return minetest.registered_nodes[nodename][fieldname] end --[[ function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end ]]-- function stairsplus_rotate_and_place(itemstack, placer, pointed_thing) if not moreblocks.node_is_owned(pointed_thing.under, placer) then local keys=placer:get_player_control() minetest.rotate_and_place(itemstack, placer, pointed_thing, stairsplus_expect_infinite_stacks, {force_wall = keys.sneak}) end return itemstack end function register_stair_slab_panel_micro(modname, subname, recipeitem, groups, images, description, drop, light) if show_stairsplus_creative_inv then groups.not_in_creative_inventory = 0 else groups.not_in_creative_inventory = 1 end register_stair(modname, subname, recipeitem, groups, images, description, drop, light) register_slab( modname, subname, recipeitem, groups, images, description, drop, light) register_panel(modname, subname, recipeitem, groups, images, description, drop, light) register_micro(modname, subname, recipeitem, groups, images, description, drop, light) register_6dfacedir_conversion(modname, subname) end -- Default stairs/slabs/panels/microblocks. register_stair_slab_panel_micro("moreblocks", "wood", "default:wood", {snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3}, {"default_wood.png"}, "Wooden", "wood", 0) register_stair_slab_panel_micro("moreblocks", "stone", "default:stone", {cracky=3}, {"default_stone.png"}, "Stone", "cobble", 0) register_stair_slab_panel_micro("moreblocks", "cobble", "default:cobble", {cracky=3}, {"default_cobble.png"}, "Cobblestone", "cobble", 0) register_stair_slab_panel_micro("moreblocks", "mossycobble", "default:mossycobble", {cracky=3}, {"default_mossycobble.png"}, "Mossy Cobblestone", "mossycobble", 0) register_stair_slab_panel_micro("moreblocks", "brick", "default:brick"/* Minetest Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com> 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 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DATABASE_LEVELDB_HEADER #define DATABASE_LEVELDB_HEADER #include "config.h" #if USE_LEVELDB #include "database.h" #include "leveldb/db.h" #include <string> class Database_LevelDB : public Database { public: Database_LevelDB(const std::string &savedir); ~Database_LevelDB(); bool saveBlock(const v3s16 &pos, const std::string &data); void loadBlock(const v3s16 &pos, std::string *block); bool deleteBlock(const v3s16 &pos); void listAllLoadableBlocks(std::vector<v3s16> &dst); private: leveldb::DB *m_database; }; #endif // USE_LEVELDB #endif Jungle Wood", "jungle_wood", 0) register_stair_slab_panel_micro("moreblocks", "junglewood", "default:junglewood", {snappy=1, choppy=2, oddly_breakable_by_hand=2,flammable=3}, {"default_junglewood.png"}, "Jungle Wood", "jungle_wood", 0) register_stair_slab_panel_micro("moreblocks", "plankstone", "moreblocks:plankstone", {cracky=3}, {"moreblocks_plankstone.png", "moreblocks_plankstone.png", "moreblocks_plankstone.png", "moreblocks_plankstone.png", "moreblocks_plankstone.png^[transformR90", "moreblocks_plankstone.png^[transformR90"}, "Plankstone", "plankstone", 0) register_stair_slab_panel_micro("moreblocks", "coal_checker", "moreblocks:coal_checker", {cracky=3}, {"moreblocks_coal_checker.png", "moreblocks_coal_checker.png", "moreblocks_coal_checker.png", "moreblocks_coal_checker.png", "moreblocks_coal_checker.png^[transformR90", "moreblocks_coal_checker.png^[transformR90"}, "Coal Checker", "coal_checker", 0) register_stair_slab_panel_micro("moreblocks", "iron_checker", "moreblocks:iron_checker", {cracky=3}, {"moreblocks_iron_checker.png", "moreblocks_iron_checker.png", "moreblocks_iron_checker.png", "moreblocks_iron_checker.png", "moreblocks_iron_checker.png^[transformR90", "moreblocks_iron_checker.png^[transformR90"}, "Iron Checker", "iron_checker", 0) register_stair_slab_panel_micro("moreblocks", "cactus_checker", "moreblocks:cactus_checker", {cracky=3}, {"moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png^[transformR90", "moreblocks_cactus_checker.png^[transformR90"}, "Cactus Checker", "cactus_checker", 0) register_stair_slab_panel_micro("moreblocks", "coal_stone", "moreblocks:coal_stone", {cracky=3}, {"moreblocks_coal_stone.png"}, "Coal Stone", "coal_stone", 0) register_stair_slab_panel_micro("moreblocks", "iron_stone", "moreblocks:iron_stone", {cracky=3}, {"moreblocks_iron_stone.png"}, "Iron Stone", "iron_stone", 0) register_stair_slab_panel_micro("moreblocks", "glow_glass", "moreblocks:glow_glass", {snappy=2,cracky=3,oddly_breakable_by_hand=3}, {"moreblocks_glow_glass_stairsplus.png"}, "Glow Glass", "glow_glass", 11) register_stair_slab_panel_micro("moreblocks", "super_glow_glass", "moreblocks:super_glow_glass", {snappy=2, cracky=3, oddly_breakable_by_hand=3}, {"moreblocks_super_glow_glass_stairsplus.png"}, "Super Glow Glass", "super_glow_glass", 15) register_stair_slab_panel_micro("moreblocks", "coal_glass", "moreblocks:coal_glass", {snappy=2, cracky=3, oddly_breakable_by_hand=3}, {"moreblocks_coal_glass_stairsplus.png"}, "Coal Glass", "coal_glass", 0) register_stair_slab_panel_micro("moreblocks", "iron_glass", "moreblocks:iron_glass", {snappy=2, cracky=3, oddly_breakable_by_hand=3}, {"moreblocks_iron_glass_stairsplus.png"}, "Iron Glass", "iron_glass", 0) register_stair_slab_panel_micro("moreblocks", "wood_tile", "moreblocks:wood_tile", {snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3}, {"moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png^[transformR90", "moreblocks_wood_tile.png^[transformR90"}, "Wooden Tile", "wood_tile", 0) register_stair_slab_panel_micro("moreblocks", "wood_tile_center", "moreblocks:wood_tile_center", {snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3}, {"moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png^[transformR90", "moreblocks_wood_tile_center.png^[transformR90"}, "Centered Wooden Tile", "wood_tile_center", 0) register_stair_slab_panel_micro("moreblocks", "wood_tile_full", "moreblocks:wood_tile_full", {snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3}, {"moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png^[transformR90", "moreblocks_wood_tile_full.png^[transformR90"}, "Full Wooden Tile", "wood_tile_full", 0)