Initlize files

This commit is contained in:
hasanalsamra 2016-08-26 14:01:06 +03:00
commit 6ea886de42
71 changed files with 2557 additions and 0 deletions

36
LICENSE.txt Normal file
View File

@ -0,0 +1,36 @@
McNodes:
Source code:
Copyright (C) 2016 Hasanalsamra - LGPL
---------------------------------------------------
Textures license:
Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Terms (^textures^):
You are free to:
Share — copy and redistribute the material in any medium or format
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
The licensor cannot revoke these freedoms as long as you follow the license terms.
Under the following terms:
Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
Notices:
You do not have to comply with the license for elements of the material in the public domain or where your use is permitted by an applicable exception or limitation.
No warranties are given. The license may not give you all of the permissions necessary for your intended use. For example, other rights such as publicity, privacy, or moral rights may limit how you use the material.
-- https://creativecommons.org/licenses/by-sa/4.0/ --
---------------------------------------------------
Help? minetest@hasanalsamra.tk

15
README.md Normal file
View File

@ -0,0 +1,15 @@
# Mcnodes
More custom nodes mod for minetest.
-- This mod adds a 3d chest, if you don't like it edit nodes.lua file and set the ChangeChest variable to 0
-- The large chest still have some problems will be solved in the next release.
-- Large chest can be disabled by changing LargeChest variable to 0 at nodes.lua file
-- Auto stairs can be disabled by changing AutoStairs variable to 0 at init.lua file
-- Will add a 3d mesh to locked and protected chest in the future.
# License
See LICENSE.txt file.

28
auto_stairs.lua Normal file
View File

@ -0,0 +1,28 @@
SetMcNodesAutoStairs('Quartz', 'mcnodes:stair_quartz', {"mcnodes_quartz_block_top.png", "mcnodes_quartz_block_bottom.png", "mcnodes_quartz_block.png", "mcnodes_quartz_block.png", "mcnodes_quartz_block.png", "mcnodes_quartz_block.png"})
SetMcNodesAutoStairs('Sandstone', 'stairs:stair_sandstone', {"default_sandstone.png"})
SetMcNodesAutoStairs('Smooth_sandstone_brick', 'mcnodes:stair_smooth_sandstone_brick', {"mcnodes_smooth_sandstone.png"})
SetMcNodesAutoStairs('Red_sandstone', 'mcnodes:stair_red_sandstone', {"default_sandstone.png^[colorize:#983800:200"})
SetMcNodesAutoStairs('Red_smooth_sandstone', 'mcnodes:stair_red_smooth_sandstone', {"mcnodes_smooth_sandstone.png^[colorize:#983800:200"})
SetMcNodesAutoStairs('Stone', 'stairs:stair_stone', {"default_stone.png"})
SetMcNodesAutoStairs('Cobble', 'stairs:stair_cobble', {"default_cobble.png"})
SetMcNodesAutoStairs('Desert_stonebrick', 'stairs:stair_desert_stonebrick', {"default_desert_stone_brick.png"})
SetMcNodesAutoStairs('Desert_stone', 'stairs:stair_desert_stone', {"default_desert_stone.png"})
SetMcNodesAutoStairs('Desert_cobble', 'stairs:stair_desert_cobble', {"default_desert_cobble.png"})
SetMcNodesAutoStairs('Brick', 'stairs:stair_brick', {"default_brick.png"})
SetMcNodesAutoStairs('Copperblock', 'stairs:stair_copperblock', {"default_copper_block.png"})
SetMcNodesAutoStairs('Goldblock', 'stairs:stair_goldblock', {"default_gold_block.png"})
SetMcNodesAutoStairs('Bronzeblock', 'stairs:stair_bronzeblock', {"default_bronze_block.png"})
SetMcNodesAutoStairs('Steelblock', 'stairs:stair_steelblock', {"default_steel_block.png"})
SetMcNodesAutoStairs('Straw', 'stairs:stair_straw', {"farming_straw.png"})
SetMcNodesAutoStairs('Obsidianbrick', 'stairs:stair_obsidianbrick', {"default_obsidian_brick.png"})
SetMcNodesAutoStairs('Obsidian', 'stairs:stair_obsidian', {"default_obsidian.png"})
SetMcNodesAutoStairs('Yellow_brick', 'mcnodes:stair_yellow_brick', {"mcnodes_yellow_brick.png"})
SetMcNodesAutoStairs('Blue_brick', 'mcnodes:stair_blue_brick', {"mcnodes_blue_brick.png"})
SetMcNodesAutoStairs('Grey_brick', 'mcnodes:stair_grey_brick', {"mcnodes_grey_brick.png"})
SetMcNodesAutoStairs('Acacia_wood', 'stairs:stair_acacia_wood', {"default_acacia_wood.png"})
SetMcNodesAutoStairs('Junglewood', 'stairs:stair_junglewood', {"default_junglewood.png"})
SetMcNodesAutoStairs('Aspen_wood', 'stairs:stair_aspen_wood', {"default_aspen_wood.png"})
SetMcNodesAutoStairs('Pine_wood', 'stairs:stair_pine_wood', {"default_pine_wood.png"})
SetMcNodesAutoStairs('Wood', 'stairs:stair_wood', {"default_wood.png"})
SetMcNodesAutoStairs('Sandstonebrick', 'stairs:stair_sandstonebrick', {"default_sandstone_brick.png"})
SetMcNodesAutoStairs('Stonebrick', 'stairs:stair_stonebrick', {"default_stone_brick.png"})

337
auto_stairs_functions.lua Normal file
View File

@ -0,0 +1,337 @@
function McNodesGetMainStairNode(pos)
nodeName = minetest.get_node_or_nil(pos).name
if string.find(nodeName, '_outer') ~= nil then
node = string.gsub(nodeName, '_outer', '')
elseif string.find(nodeName, '_inner') ~= nil then
node = string.gsub(nodeName, '_inner', '')
end
return node
end
function McNodesAddInnerOrOuterName(pos, mode)
nodeName = minetest.get_node_or_nil(pos).name
if string.find(nodeName, 'mcnodes:') == 1 then
node = minetest.get_node_or_nil(pos).name .. '_' .. mode
else
local NumToRemove = string.find(nodeName, ':')
node = 'mcnodes:' .. string.sub(nodeName, NumToRemove+1) .. '_' .. mode
end
return node
end
function RegisterAlias(NodeName, FullStairNodeName)
minetest.register_alias('mcnodes:stair_' .. string.lower(NodeName), FullStairNodeName)
end
function SetMcNodesAutoStairs(NodeName, FullStairNodeName, Tiles)
InnerStairNodeName = "mcnodes:stair_" .. string.lower(NodeName) .. "_inner"
OuterStairNodeName = "mcnodes:stair_" .. string.lower(NodeName) .. "_outer"
minetest.register_node("mcnodes:stair_" .. string.lower(NodeName) .. "_outer", {
description = NodeName .. " outer stair",
drawtype = "nodebox",
tiles = Tiles,
groups = {outerstair = 1, cracky = 3, not_in_creative_inventory = 1},
drop = FullStairNodeName,
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {{-0.5, -0.5, -0.5, 0.5, 0, 0.5},{0, 0, 0, -0.5, 0.5, 0.5},},
},
})
minetest.register_node("mcnodes:stair_" .. string.lower(NodeName) .. "_inner", {
description = NodeName .. " inner stair",
drawtype = "nodebox",
tiles = Tiles,
groups = {innerstair = 1, cracky = 3, not_in_creative_inventory = 1},
drop = FullStairNodeName,
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {{-0.5, -0.5, -0.5, 0.5, 0, 0.5},{-0.5, 0, 0, 0.5, 0.5, 0.5},{0, -0.5, -0.5, -0.5, 0.5, 0.5},},
},
})
if string.find(FullStairNodeName, 'mcnodes:') == nil then
RegisterAlias(NodeName, FullStairNodeName)
end
end
function McNodesSetStairNode(pos, node, secparam)
if McNodesCheckNode(node) ~= false then
if secparam == (nil or '') then
return minetest.set_node(pos, {name=node})
else
return minetest.set_node(pos, {name=node, param2 = secparam})
end
else
return false
end
end
function CheckAutoStair(pos)
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name, 'innerstair') == 1 or minetest.get_node_group(minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name, 'outerstair') == 1 then
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name, 'outerstair') == 1 then
local newpos = {x=pos.x-1, y=pos.y, z=pos.z}
minetest.set_node(newpos, {name=McNodesGetMainStairNode(newpos), param2 = '1'})
elseif minetest.get_node_group(minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name, 'innerstair') == 1 then
local newpos = {x=pos.x-1, y=pos.y, z=pos.z}
minetest.set_node(newpos, {name=McNodesGetMainStairNode(newpos), param2 = '3'})
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name, 'innerstair') == 1 or minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name, 'outerstair') == 1 then
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name, 'outerstair') == 1 then
local newpos = {x=pos.x, y=pos.y, z=pos.z+1}
minetest.set_node(newpos, {name=McNodesGetMainStairNode(newpos), param2 = '2'})
elseif minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name, 'innerstair') == 1 then
local newpos = {x=pos.x, y=pos.y, z=pos.z+1}
minetest.set_node(newpos, {name=McNodesGetMainStairNode(newpos), param2 = '0'})
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name, 'innerstair') == 1 or minetest.get_node_group(minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name, 'outerstair') == 1 then
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name, 'outerstair') == 1 then
local newpos = {x=pos.x+1, y=pos.y, z=pos.z}
minetest.set_node(newpos, {name=McNodesGetMainStairNode(newpos), param2 = '3'})
elseif minetest.get_node_group(minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name, 'innerstair') == 1 then
local newpos = {x=pos.x+1, y=pos.y, z=pos.z}
minetest.set_node(newpos, {name=McNodesGetMainStairNode(newpos), param2 = '1'})
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name, 'innerstair') == 1 or minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name, 'outerstair') == 1 then
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name, 'outerstair') == 1 then
local newpos = {x=pos.x, y=pos.y, z=pos.z-1}
minetest.set_node(newpos, {name=McNodesGetMainStairNode(newpos), param2 = '0'})
elseif minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name, 'innerstair') == 1 then
local newpos = {x=pos.x, y=pos.y, z=pos.z-1}
minetest.set_node(newpos, {name=McNodesGetMainStairNode(newpos), param2 = '2'})
end
end
end
minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing)
if minetest.get_node_group(newnode.name, 'stair') == 1 then
--minetest.chat_send_all('F-Rotation: ' .. getNodeFRotation(pos) .. ' Y-axis: ' .. getNodeYaxis(pos))
done = 0
-- Inner
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name, 'stair') == 1 then
local newpos = {x=pos.x-1, y=pos.y, z=pos.z}
if getNodeYaxis(newpos) == '180' and getNodeYaxis(pos) == '90' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'inner'))
elseif getNodeYaxis(newpos) == '180' and getNodeYaxis(pos) == '270' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'inner'), 3)
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name, 'stair') == 1 then
local newpos = {x=pos.x, y=pos.y, z=pos.z+1}
if getNodeYaxis(newpos) == '90' and getNodeYaxis(pos) == '0' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'inner'), 1)
elseif getNodeYaxis(newpos) == '90' and getNodeYaxis(pos) == '180' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'inner'), 0)
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name, 'stair') == 1 then
local newpos = {x=pos.x+1, y=pos.y, z=pos.z}
if getNodeYaxis(newpos) == '0' and getNodeYaxis(pos) == '270' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'inner'), 2)
elseif getNodeYaxis(newpos) == '0' and getNodeYaxis(pos) == '90' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'inner'), 1)
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name, 'stair') == 1 then
local newpos = {x=pos.x, y=pos.y, z=pos.z-1}
if getNodeYaxis(newpos) == '270' and getNodeYaxis(pos) == '180' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'inner'), 3)
elseif getNodeYaxis(newpos) == '270' and getNodeYaxis(pos) == '0' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'inner'), 2)
end
end
-- Outer
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name, 'stair') == 1 then
local newpos = {x=pos.x-1, y=pos.y, z=pos.z}
if getNodeYaxis(newpos) == '0' and getNodeYaxis(pos) == '270' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'outer'), 2)
elseif getNodeYaxis(newpos) == '0' and getNodeYaxis(pos) == '90' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'outer'), 1)
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name, 'stair') == 1 then
local newpos = {x=pos.x, y=pos.y, z=pos.z+1}
if getNodeYaxis(newpos) == '270' and getNodeYaxis(pos) == '0' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'outer'), 2)
elseif getNodeYaxis(newpos) == '270' and getNodeYaxis(pos) == '180' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'outer'), 3)
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name, 'stair') == 1 then
local newpos = {x=pos.x+1, y=pos.y, z=pos.z}
if getNodeYaxis(newpos) == '180' and getNodeYaxis(pos) == '90' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'outer'), 0)
elseif getNodeYaxis(newpos) == '180' and getNodeYaxis(pos) == '270' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'outer'), 3)
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name, 'stair') == 1 then
local newpos = {x=pos.x, y=pos.y, z=pos.z-1}
if getNodeYaxis(newpos) == '90' and getNodeYaxis(pos) == '0' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'outer'), 1)
elseif getNodeYaxis(newpos) == '90' and getNodeYaxis(pos) == '180' then
McNodesSetStairNode(newpos, McNodesAddInnerOrOuterName(newpos, 'outer'), 0)
end
end
-- Change to outer or inner directly after place
-- State 1
-- Inner
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name, 'stair') == 1 and minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name, 'stair') == 1 then
local newpos = {x=pos.x-1, y=pos.y, z=pos.z}
local zmonewpos = {x=pos.x, y=pos.y, z=pos.z-1}
if getNodeYaxis(newpos) == '90' and getNodeYaxis(zmonewpos) == '0' and (getNodeYaxis(pos) == '0' or getNodeYaxis(pos) == '90') then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'inner'), 1)
done = 1
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name, 'stair') == 1 and minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name, 'stair') == 1 then
local newpos = {x=pos.x+1, y=pos.y, z=pos.z}
local zmonewpos = {x=pos.x, y=pos.y, z=pos.z-1}
if getNodeYaxis(newpos) == '90' and getNodeYaxis(zmonewpos) == '180' and (getNodeYaxis(pos) == '180' or getNodeYaxis(pos) == '90') then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'inner'), 0)
done = 1
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name, 'stair') == 1 and minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name, 'stair') == 1 then
local newpos = {x=pos.x+1, y=pos.y, z=pos.z}
local zponewpos = {x=pos.x, y=pos.y, z=pos.z+1}
if getNodeYaxis(newpos) == '270' and getNodeYaxis(zponewpos) == '180' and (getNodeYaxis(pos) == '180' or getNodeYaxis(pos) == '270') then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'inner'), 3)
done = 1
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name, 'stair') == 1 and minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name, 'stair') == 1 then
local newpos = {x=pos.x-1, y=pos.y, z=pos.z}
local zponewpos = {x=pos.x, y=pos.y, z=pos.z+1}
if getNodeYaxis(newpos) == '270' and getNodeYaxis(zponewpos) == '0' and (getNodeYaxis(pos) == '0' or getNodeYaxis(pos) == '270') then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'inner'), 2)
done = 1
end
end
-- Outer
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name, 'stair') == 1 and minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name, 'stair') == 1 then
local newpos = {x=pos.x-1, y=pos.y, z=pos.z}
local zmonewpos = {x=pos.x, y=pos.y, z=pos.z-1}
if getNodeYaxis(newpos) == '270' and getNodeYaxis(zmonewpos) == '180' and (getNodeYaxis(pos) == '180' or getNodeYaxis(pos) == '270') then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'outer'), 3)
done = 1
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name, 'stair') == 1 and minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name, 'stair') == 1 then
local newpos = {x=pos.x+1, y=pos.y, z=pos.z}
local zmonewpos = {x=pos.x, y=pos.y, z=pos.z-1}
if getNodeYaxis(newpos) == '270' and getNodeYaxis(zmonewpos) == '0' and (getNodeYaxis(pos) == '0' or getNodeYaxis(pos) == '270') then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'outer'), 2)
done = 1
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name, 'stair') == 1 and minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name, 'stair') == 1 then
local newpos = {x=pos.x+1, y=pos.y, z=pos.z}
local zponewpos = {x=pos.x, y=pos.y, z=pos.z+1}
if getNodeYaxis(newpos) == '90' and getNodeYaxis(zponewpos) == '0' and (getNodeYaxis(pos) == '0' or getNodeYaxis(pos) == '90') then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'outer'), 1)
done = 1
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name, 'stair') == 1 and minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name, 'stair') == 1 then
local newpos = {x=pos.x-1, y=pos.y, z=pos.z}
local zponewpos = {x=pos.x, y=pos.y, z=pos.z+1}
if getNodeYaxis(newpos) == '90' and getNodeYaxis(zponewpos) == '180' and (getNodeYaxis(pos) == '180' or getNodeYaxis(pos) == '90') then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'outer'), 0)
done = 1
end
end
-- State 2
-- Outer/Inner
if done ~= 1 then
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name, 'stair') == 1 then
local newpos = {x=pos.x-1, y=pos.y, z=pos.z}
if getNodeYaxis(pos) == '180' and getNodeYaxis(newpos) == '270' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'outer'), 3)
elseif getNodeYaxis(pos) == '0' and getNodeYaxis(newpos) == '270' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'inner'), 2)
elseif getNodeYaxis(pos) == '180' and getNodeYaxis(newpos) == '90' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'outer'), 0)
elseif getNodeYaxis(pos) == '0' and getNodeYaxis(newpos) == '90' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'inner'), 1)
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name, 'stair') == 1 then
local newpos = {x=pos.x+1, y=pos.y, z=pos.z}
if getNodeYaxis(pos) == '0' and getNodeYaxis(newpos) == '270' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'outer'), 2)
elseif getNodeYaxis(pos) == '180' and getNodeYaxis(newpos) == '270' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'inner'), 3)
elseif getNodeYaxis(pos) == '0' and getNodeYaxis(newpos) == '90' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'outer'), 1)
elseif getNodeYaxis(pos) == '180' and getNodeYaxis(newpos) == '90' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'inner'), 0)
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name, 'stair') == 1 then
local newpos = {x=pos.x, y=pos.y, z=pos.z-1}
if getNodeYaxis(pos) == '270' and getNodeYaxis(newpos) == '180' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'outer'), 3)
elseif getNodeYaxis(pos) == '90' and getNodeYaxis(newpos) == '180' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'inner'), 0)
elseif getNodeYaxis(pos) == '270' and getNodeYaxis(newpos) == '0' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'outer'), 2)
elseif getNodeYaxis(pos) == '90' and getNodeYaxis(newpos) == '0' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'inner'), 1)
end
end
if minetest.get_node_group(minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name, 'stair') == 1 then
local newpos = {x=pos.x, y=pos.y, z=pos.z+1}
if getNodeYaxis(pos) == '90' and getNodeYaxis(newpos) == '180' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'outer'), 0)
elseif getNodeYaxis(pos) == '270' and getNodeYaxis(newpos) == '180' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'inner'), 3)
elseif getNodeYaxis(pos) == '90' and getNodeYaxis(newpos) == '0' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'outer'), 1)
elseif getNodeYaxis(pos) == '270' and getNodeYaxis(newpos) == '0' then
McNodesSetStairNode(pos, McNodesAddInnerOrOuterName(pos, 'inner'), 2)
end
end
end
end
end)
minetest.register_on_dignode(function(pos, oldnode, digger)
if minetest.get_node_group(oldnode.name, 'stair') == 1 then
CheckAutoStair(pos)
end
end)

136
chest.lua Normal file
View File

@ -0,0 +1,136 @@
if LargeChest == '1' then
local large_chest_formspec =
"size[13,11]" ..
default.gui_bg ..
default.gui_bg_img ..
default.gui_slots ..
"list[current_name;main;0,0.3;13,6;]" ..
"list[current_player;main;2.5,6.85;8,1;]" ..
"list[current_player;main;2.5,8.08;8,3;8]" ..
"listring[current_name;main]" ..
"listring[current_player;main]" ..
default.get_hotbar_bg(2.5,6.85)
minetest.register_node("mcnodes:large_chest", {
description = "Large chest",
drawtype = "mesh",
mesh = "mcnodes_large_chest.obj",
tiles = {"mcnodes_large_chest.png"},
groups = {choppy = 2, oddly_breakable_by_hand = 2, not_in_creative_inventory = 1},
paramtype = "light",
paramtype2 = "facedir",
visual_scale = "1",
drop = {
max_items = 2,
items = {
{items = {'default:chest'}},
{items = {'default:chest'}}
}
},
selection_box = {type = "fixed", fixed = {1.36, 0.357, 0.415, -0.359, -0.50, -0.44}},
collision_box = {type = "fixed", fixed = {1.36, 0.357, 0.415, -0.359, -0.50, -0.44}},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", large_chest_formspec)
meta:set_string("infotext", "Large chest")
local inv = meta:get_inventory()
inv:set_size("main", 13*11)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
on_blast = function(pos)
local drops = {}
default.get_inventory_drops(pos, "main", drops)
drops[#drops+1] = "default:chest"
minetest.remove_node(pos)
return drops
end,
--collision_box = {type = "fixed", fixed = {0.5, 0.5, 0.5, -0.5, -0.51, -1.5}},
})
minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing)
placer_pos = placer:getpos()
if newnode.name == "default:chest" then
local node = minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z})
lookdir = placer:get_look_dir()
facedir = minetest.dir_to_facedir(lookdir)
if minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name == "default:chest" or minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name == "default:chest" or minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name == "default:chest" or minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name == "default:chest" then
done = '0'
if done == '0' then
if minetest.get_node_or_nil({x=pos.x+1, y=pos.y, z=pos.z}).name == "default:chest" then
MainNodeOn = 'XP'
NewNodeRotation = getNodeYaxis(pos)
minetest.remove_node({x=pos.x+1, y=pos.y, z=pos.z})
minetest.remove_node(pos)
if placer_pos.z < pos.z then
minetest.set_node(pos, {name="mcnodes:large_chest", param2 = facedir})
else
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name="mcnodes:large_chest", param2 = facedir})
end
done = '1'
end
end
if done == '0' then
if minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z+1}).name == "default:chest" then
MainNodeOn = 'ZP'
minetest.remove_node({x=pos.x, y=pos.y, z=pos.z+1})
minetest.remove_node(pos)
if placer_pos.x < pos.x then
minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name="mcnodes:large_chest", param2 = facedir})
else
minetest.set_node(pos, {name="mcnodes:large_chest", param2 = facedir})
end
done = '1'
end
end
if done == '0' then
if minetest.get_node_or_nil({x=pos.x-1, y=pos.y, z=pos.z}).name == "default:chest" then
MainNodeOn = 'XN'
minetest.remove_node({x=pos.x-1, y=pos.y, z=pos.z})
minetest.remove_node(pos)
if placer_pos.z > pos.z then
minetest.set_node(pos, {name="mcnodes:large_chest", param2 = facedir})
else
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name="mcnodes:large_chest", param2 = facedir})
end
done = '1'
end
end
if done == '0' then
if minetest.get_node_or_nil({x=pos.x, y=pos.y, z=pos.z-1}).name == "default:chest" then
MainNodeOn = 'ZN'
minetest.remove_node({x=pos.x, y=pos.y, z=pos.z-1})
minetest.remove_node(pos)
if placer_pos.x > pos.x then
minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name="mcnodes:large_chest", param2 = facedir})
else
minetest.set_node(pos, {name="mcnodes:large_chest", param2 = facedir})
end
done = '1'
end
end
--minetest.chat_send_all('State: ' .. MainNodeOn .. ', Y-axis: ' .. NewNodeRotation)
end
end
end)
end

440
crafting.lua Normal file
View File

@ -0,0 +1,440 @@
minetest.register_craft({
output = 'mcnodes:quartz_block 1',
recipe = {
{'', '', ''},
{'mcnodes:quartz_item', 'mcnodes:quartz_item', ''},
{'mcnodes:quartz_item', 'mcnodes:quartz_item', ''},
}
})
minetest.register_craft({
output = 'mcnodes:quartz_block_chiseled 1',
recipe = {
{'', '', ''},
{'', 'mcnodes:slab_quartz', ''},
{'', 'mcnodes:slab_quartz', ''},
}
})
minetest.register_craft({
output = 'mcnodes:quartz_block_pillar 2',
recipe = {
{'', '', ''},
{'', 'mcnodes:quartz_block', ''},
{'', 'mcnodes:quartz_block', ''},
}
})
minetest.register_craft({
output = 'mcnodes:diorite 2',
recipe = {
{'', '', ''},
{'default:cobble', 'mcnodes:quartz_item', ''},
{'mcnodes:quartz_item', 'default:cobble', ''},
}
})
minetest.register_craft({
output = 'mcnodes:granite 1',
recipe = {
{'', '', ''},
{'mcnodes:diorite', 'mcnodes:quartz_item', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:smooth_andesite 4',
recipe = {
{'', '', ''},
{'mcnodes:andesite', 'mcnodes:andesite', ''},
{'mcnodes:andesite', 'mcnodes:andesite', ''},
}
})
minetest.register_craft({
output = 'mcnodes:smooth_diorite 4',
recipe = {
{'', '', ''},
{'mcnodes:diorite', 'mcnodes:diorite', ''},
{'mcnodes:diorite', 'mcnodes:diorite', ''},
}
})
minetest.register_craft({
output = 'mcnodes:smooth_granite 4',
recipe = {
{'', '', ''},
{'mcnodes:granite', 'mcnodes:granite', ''},
{'mcnodes:granite', 'mcnodes:granite', ''},
}
})
minetest.register_craft({
output = 'mcnodes:andesite 2',
recipe = {
{'', '', ''},
{'mcnodes:diorite', 'default:cobble', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:blue_brick 1',
recipe = {
{'', '', ''},
{'default:brick', 'dye:blue', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:yellow_brick 1',
recipe = {
{'', '', ''},
{'default:brick', 'dye:yellow', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:grey_brick 1',
recipe = {
{'', '', ''},
{'default:brick', 'dye:grey', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:smooth_sandstone 9',
recipe = {
{'default:sandstone', 'default:sandstone', 'default:sandstone'},
{'default:sandstone', 'default:sandstone', 'default:sandstone'},
{'default:sandstone', 'default:sandstone', 'default:sandstone'},
}
})
minetest.register_craft({
output = 'mcnodes:chiseled_sandstone 1',
recipe = {
{'', '', ''},
{'', 'stairs:slab_sandstone', ''},
{'', 'stairs:slab_sandstone', ''},
}
})
minetest.register_craft({
output = 'mcnodes:red_sand 1',
recipe = {
{'', '', ''},
{'', '', ''},
{'default:sand', 'dye:red', ''},
}
})
minetest.register_craft({
output = 'mcnodes:red_sandstone 1',
recipe = {
{'', '', ''},
{'mcnodes:red_sand', 'mcnodes:red_sand', ''},
{'mcnodes:red_sand', 'mcnodes:red_sand', ''},
}
})
minetest.register_craft({
output = 'mcnodes:smooth_red_sandstone 9',
recipe = {
{'mcnodes:red_sandstone', 'mcnodes:red_sandstone', 'mcnodes:red_sandstone'},
{'mcnodes:red_sandstone', 'mcnodes:red_sandstone', 'mcnodes:red_sandstone'},
{'mcnodes:red_sandstone', 'mcnodes:red_sandstone', 'mcnodes:red_sandstone'},
}
})
minetest.register_craft({
output = 'mcnodes:chiseled_red_sandstone 1',
recipe = {
{'', '', ''},
{'', 'mcnodes:slab_red_sandstone', ''},
{'', 'mcnodes:slab_red_sandstone', ''},
}
})
minetest.register_craft({
type = "cooking",
output = "mcnodes:hardened_clay",
recipe = "default:clay",
})
minetest.register_craft({
output = 'mcnodes:white_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:white', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:orange_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:orange', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:magenta_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:magenta', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:yellow_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:yellow', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:lime_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:dark_green', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:pink_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:pink', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:grey_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:grey', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:cyan_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:cyan', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:blue_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:blue', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:brown_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:brown', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:green_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:green', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:red_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:red', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:black_hardened_clay 8',
recipe = {
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'dye:black', 'mcnodes:hardened_clay'},
{'mcnodes:hardened_clay', 'mcnodes:hardened_clay', 'mcnodes:hardened_clay'},
}
})
minetest.register_craft({
output = 'mcnodes:anvil 1',
recipe = {
{'default:steelblock', 'default:steelblock', 'default:steelblock'},
{'', 'default:steel_ingot', ''},
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
}
})
minetest.register_craft({
output = 'mcnodes:black_carpet 8',
recipe = {
{'', '', ''},
{'wool:black', 'wool:black', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:blue_carpet 8',
recipe = {
{'', '', ''},
{'wool:blue', 'wool:blue', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:brown_carpet 8',
recipe = {
{'', '', ''},
{'wool:brown', 'wool:brown', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:cyan_carpet 8',
recipe = {
{'', '', ''},
{'wool:cyan', 'wool:cyan', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:green_carpet 8',
recipe = {
{'', '', ''},
{'wool:green', 'wool:green', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:grey_carpet 8',
recipe = {
{'', '', ''},
{'wool:grey', 'wool:grey', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:magenta_carpet 8',
recipe = {
{'', '', ''},
{'wool:magenta', 'wool:magenta', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:orange_carpet 8',
recipe = {
{'', '', ''},
{'wool:orange', 'wool:orange', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:red_carpet 8',
recipe = {
{'', '', ''},
{'wool:red', 'wool:red', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:white_carpet 8',
recipe = {
{'', '', ''},
{'wool:white', 'wool:white', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:yellow_carpet 8',
recipe = {
{'', '', ''},
{'wool:yellow', 'wool:yellow', ''},
{'', '', ''},
}
})
minetest.register_craft({
output = 'mcnodes:lapis_lazuli_block 1',
recipe = {
{'dye:blue', 'dye:blue', 'dye:blue'},
{'dye:blue', 'dye:blue', 'dye:blue'},
{'dye:blue', 'dye:blue', 'dye:blue'},
}
})
minetest.register_craft({
output = 'dye:blue 9',
recipe = {
{'', '', ''},
{'', 'mcnodes:lapis_lazuli_block', ''},
{'', '', ''},
}
})
minetest.register_craft({
type = "cooking",
output = "dye:blue",
recipe = "mcnodes:lapis_lazuli_ore",
})
minetest.register_craft({
output = 'mcnodes:emerald_block',
recipe = {
{'mcnodes:emerald_item', 'mcnodes:emerald_item', 'mcnodes:emerald_item'},
{'mcnodes:emerald_item', 'mcnodes:emerald_item', 'mcnodes:emerald_item'},
{'mcnodes:emerald_item', 'mcnodes:emerald_item', 'mcnodes:emerald_item'},
}
})
minetest.register_craft({
type = "cooking",
output = "mcnodes:emerald_item",
recipe = "mcnodes:emerald_ore",
})
minetest.register_craft({
output = 'mcnodes:emerald_item 9',
recipe = {
{'', '', ''},
{'', 'mcnodes:emerald_block', ''},
{'', '', ''},
}
})

3
depends.txt Normal file
View File

@ -0,0 +1,3 @@
default
dye
wool

28
functions.general.lua Normal file
View File

@ -0,0 +1,28 @@
function McNodesCheckNode(node)
if not ItemStack(node):is_known() then
return false
elseif ItemStack(node):is_known() then
return node
end
end
function getNodeYaxis(pos)
-- Taken from Krock's answer: https://forum.minetest.net/viewtopic.php?f=47&t=15276#p227580
local node = minetest.get_node(vector.new(pos))
local dir = minetest.facedir_to_dir(node.param2 % 4)
angle = '0'
if dir.z == 1 then
angle = '90'
elseif dir.x == -1 then
angle = '180'
elseif dir.z == -1 then
angle = '270'
end
return angle
end
function getNodeFRotation(pos)
local FRotation = minetest.get_node(pos).param2 % 32
return FRotation
end

34
hand.lua Normal file
View File

@ -0,0 +1,34 @@
local hand = "wieldhand.png"
local tool_cap = {
full_punch_interval = 1.0,
max_drop_level = 0,
groupcaps = {
fleshy = {times={[2]=2.00, [3]=1.00}, uses=0, maxlevel=1},
crumbly = {times={[2]=3.00, [3]=0.70}, uses=0, maxlevel=1},
snappy = {times={[3]=0.40}, uses=0, maxlevel=1},
oddly_breakable_by_hand = {times={[1]=7.00,[2]=4.00,[3]=1.40}, uses=0, maxlevel=3},
}
}
if minetest.setting_getbool("creative_mode") then
tool_cap = {
full_punch_interval = 0.5,
max_drop_level = 3,
groupcaps = {
crumbly = {times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
cracky = {times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
snappy = {times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
choppy = {times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
oddly_breakable_by_hand = {times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
},
damage_groups = {fleshy = 10},
}
end
minetest.after(0, function()
minetest.register_item(":", {
type = "none",
wield_image = hand,
wield_scale = {x=1.2,y=1.0,z=3.0},
tool_capabilities = tool_cap,
})
end)

29
init.lua Normal file
View File

@ -0,0 +1,29 @@
AutoStairs = '1'
dofile(minetest.get_modpath("mcnodes").."/functions.general.lua")
dofile(minetest.get_modpath("mcnodes").."/nodes.lua")
dofile(minetest.get_modpath("mcnodes").."/mesh_nodes.lua")
dofile(minetest.get_modpath("mcnodes").."/items.lua")
dofile(minetest.get_modpath("mcnodes").."/stairs_functions.lua")
dofile(minetest.get_modpath("mcnodes").."/stairs.lua")
dofile(minetest.get_modpath("mcnodes").."/crafting.lua")
--dofile(minetest.get_modpath("mcnodes").."/hand.lua")
dofile(minetest.get_modpath("mcnodes").."/chest.lua")
dofile(minetest.get_modpath("mcnodes").."/register_ores.lua")
dofile(minetest.get_modpath("mcnodes").."/register_biome.lua")
dofile(minetest.get_modpath("mcnodes").."/replaced_nodes.lua")
if AutoStairs == '1' then
dofile(minetest.get_modpath("mcnodes").."/auto_stairs_functions.lua")
dofile(minetest.get_modpath("mcnodes").."/auto_stairs.lua")
end

14
items.lua Normal file
View File

@ -0,0 +1,14 @@
minetest.register_craftitem("mcnodes:quartz_item", {
description = "Quartz",
inventory_image = "mcnodes_quartz_item.png",
})
minetest.register_craftitem(":dye:blue", {
description = "Lapis lazuli",
inventory_image = "mcnodes_lapis_item.png",
})
minetest.register_craftitem("mcnodes:emerald_item", {
description = "Emerald",
inventory_image = "mcnodes_emerald_item.png",
})

14
mesh_nodes.lua Normal file
View File

@ -0,0 +1,14 @@
minetest.register_node("mcnodes:anvil", {
description = "Anvil",
drawtype = "mesh",
mesh = "mcnodes_anvil.obj",
tiles = {"mcnodes_anvil.png"},
groups = {cracky = 3},
paramtype = "light",
paramtype2 = "facedir",
visual_scale = "1",
drop = 'mcnodes:anvil',
--selection_box = {type = "fixed", fixed = {0.3, 0.3, 0.48, -0.32, -0.48, -0.49}},
selection_box = {type = "fixed", fixed = {0.493, 0.31, 0.32, -0.495, -0.485, -0.32}},
collision_box = {type = "fixed", fixed = {0.493, 0.31, 0.32, -0.495, -0.485, -0.32}},
})

308
models/mcnodes_anvil.obj Normal file
View File

@ -0,0 +1,308 @@
# Blender v2.74 (sub 0) OBJ File: 'mcnodes_anvil.blend'
# www.blender.org
mtllib mcnodes_anvil.mtl
o Anvil_Cube.002
v -0.414199 -0.495341 -0.250276
v -0.414199 -0.313725 -0.250276
v -0.414199 -0.313725 -0.196709
v -0.414199 -0.495341 -0.196709
v -0.330428 -0.495341 -0.250276
v -0.330428 -0.313725 -0.250276
v -0.330428 -0.313725 -0.196709
v -0.330428 -0.495341 -0.196709
v -0.330428 -0.283408 -0.196709
v -0.414199 -0.495341 -0.047169
v -0.414199 -0.313725 -0.047169
v -0.330428 -0.495341 -0.047169
v -0.330428 -0.313725 -0.047169
v -0.330428 -0.283408 -0.047169
v -0.262672 -0.313725 -0.250276
v -0.262672 -0.313725 -0.196709
v -0.262672 -0.495341 -0.196709
v -0.262672 -0.495341 -0.250276
v -0.262672 -0.283408 -0.196709
v -0.262672 -0.283408 -0.081116
v -0.262672 -0.495341 -0.047169
v -0.262672 -0.045308 -0.081116
v -0.414199 -0.495341 0.250276
v -0.414199 -0.313725 0.250276
v -0.414199 -0.313725 0.000000
v -0.414199 -0.495341 0.000000
v -0.414199 -0.313725 0.196709
v -0.414199 -0.495341 0.196709
v -0.330428 -0.495341 0.250276
v -0.330428 -0.313725 0.250276
v -0.330428 -0.313725 0.000000
v -0.330428 -0.495341 0.000000
v -0.330428 -0.313725 0.196709
v -0.330428 -0.495341 0.196709
v -0.330428 -0.283408 0.000000
v -0.330428 -0.283408 0.196709
v -0.414199 -0.495341 0.047169
v -0.414199 -0.313725 0.047169
v -0.330428 -0.495341 0.047169
v -0.330428 -0.313725 0.047169
v -0.330428 -0.283408 0.047169
v -0.262672 -0.313725 0.250276
v -0.262672 -0.313725 0.000000
v -0.262672 -0.495341 0.000000
v -0.262672 -0.313725 0.196709
v -0.262672 -0.495341 0.196709
v -0.262672 -0.495341 0.250276
v -0.262672 -0.283408 0.000000
v -0.262672 -0.283408 0.196709
v -0.262672 -0.283408 0.081116
v -0.262672 -0.495341 0.047169
v -0.262672 -0.045308 0.000000
v -0.262672 -0.045308 0.081116
v 0.494274 -0.047699 -0.319056
v 0.494274 0.310285 -0.319056
v -0.494274 -0.047699 -0.319056
v -0.494274 0.310285 -0.319056
v 0.494274 -0.047699 0.319056
v 0.494274 0.310285 0.319056
v -0.494274 -0.047699 0.319056
v -0.494274 0.310285 0.319056
v 0.414199 -0.495341 -0.250276
v 0.414199 -0.313725 -0.250276
v -0.000000 -0.313725 -0.250276
v -0.000000 -0.495341 -0.250276
v 0.414199 -0.313725 -0.196709
v -0.000000 -0.495341 -0.196709
v 0.414199 -0.495341 -0.196709
v -0.000000 -0.313725 -0.196709
v 0.330428 -0.495341 -0.250276
v 0.330428 -0.313725 -0.250276
v 0.330428 -0.313725 -0.196709
v 0.330428 -0.495341 -0.196709
v -0.000000 -0.283408 -0.196709
v 0.330428 -0.283408 -0.196709
v 0.414199 -0.495341 -0.047169
v -0.000000 -0.313725 -0.047169
v 0.414199 -0.313725 -0.047169
v -0.000000 -0.495341 -0.047169
v 0.330428 -0.495341 -0.047169
v 0.330428 -0.313725 -0.047169
v -0.000000 -0.283408 -0.081116
v 0.330428 -0.283408 -0.047169
v 0.262672 -0.313725 -0.250276
v 0.262672 -0.313725 -0.196709
v 0.262672 -0.495341 -0.196709
v 0.262672 -0.495341 -0.250276
v 0.262672 -0.283408 -0.196709
v 0.262672 -0.283408 -0.081116
v 0.262672 -0.495341 -0.047169
v -0.000000 -0.045308 -0.081116
v 0.262672 -0.045308 -0.081116
v 0.414199 -0.495341 0.250276
v 0.414199 -0.313725 0.250276
v 0.000000 -0.313725 0.250276
v 0.000000 -0.495341 0.250276
v 0.414199 -0.313725 -0.000000
v 0.414199 -0.495341 -0.000000
v -0.000000 -0.313725 -0.000000
v -0.000000 -0.495341 -0.000000
v 0.414199 -0.313725 0.196709
v 0.000000 -0.495341 0.196709
v 0.414199 -0.495341 0.196709
v 0.000000 -0.313725 0.196709
v 0.330428 -0.495341 0.250276
v 0.330428 -0.313725 0.250276
v 0.330428 -0.313725 -0.000000
v 0.330428 -0.495341 -0.000000
v 0.330428 -0.313725 0.196709
v 0.330428 -0.495341 0.196709
v 0.000000 -0.283408 0.196709
v -0.000000 -0.283408 -0.000000
v 0.330428 -0.283408 -0.000000
v 0.330428 -0.283408 0.196709
v 0.414199 -0.495341 0.047169
v -0.000000 -0.313725 0.047169
v 0.414199 -0.313725 0.047169
v -0.000000 -0.495341 0.047169
v 0.330428 -0.495341 0.047169
v 0.330428 -0.313725 0.047169
v 0.000000 -0.283408 0.081116
v 0.330428 -0.283408 0.047169
v 0.262672 -0.313725 0.250276
v 0.262672 -0.313725 -0.000000
v 0.262672 -0.495341 -0.000000
v 0.262672 -0.313725 0.196709
v 0.262672 -0.495341 0.196709
v 0.262672 -0.495341 0.250276
v 0.262672 -0.283408 -0.000000
v 0.262672 -0.283408 0.196709
v 0.262672 -0.283408 0.081116
v 0.262672 -0.495341 0.047169
v 0.000000 -0.045308 0.081116
v -0.000000 -0.045308 -0.000000
v 0.262672 -0.045308 -0.000000
v 0.262672 -0.045308 0.081116
vt 0.179478 0.647660
vt 0.354990 0.647660
vt 0.354990 0.823172
vt 0.179478 0.823172
vt 0.002838 0.646788
vt 0.177185 0.646788
vt 0.177185 0.822300
vt 0.002838 0.822300
vt 0.179478 0.998684
vt 0.355374 0.823172
vt 0.354990 0.998684
vt 0.531420 0.821682
vt 0.355301 0.821682
vt 0.355301 0.645138
vt 0.531420 0.645138
vt 0.354990 0.471664
vt 0.355374 0.647660
vt 0.179478 0.471664
vt 0.999962 0.823691
vt 0.999962 0.999965
vt 0.718114 0.999965
vt 0.718114 0.823691
vn -1.000000 -0.000000 0.000000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 1.000000 -0.000000
vn 0.000000 0.000000 1.000000
vn 1.000000 -0.000000 -0.000000
usemtl None
s off
f 3/1/1 2/2/1 1/3/1 4/4/1
f 8/1/2 4/2/2 1/3/2 5/4/2
f 15/1/3 64/2/3 65/3/3 18/4/3
f 13/1/4 11/2/4 25/3/4 31/4/4
f 6/1/4 2/2/4 3/3/4 7/4/4
f 12/1/2 10/2/2 4/3/2 8/4/2
f 11/1/1 3/2/1 4/3/1 10/4/1
f 21/1/2 12/2/2 8/3/2 17/4/2
f 15/1/4 6/2/4 7/3/4 16/4/4
f 16/1/3 7/2/3 9/3/3 19/4/3
f 2/1/3 6/2/3 5/3/3 1/4/3
f 17/1/2 8/2/2 5/3/2 18/4/2
f 20/1/4 14/2/4 35/3/4 48/4/4
f 13/1/1 31/2/1 35/3/1 14/4/1
f 7/1/1 13/2/1 14/3/1 9/4/1
f 19/1/4 9/2/4 14/3/4 20/4/4
f 44/1/2 32/2/2 12/3/2 21/4/2
f 25/1/1 11/2/1 10/3/1 26/4/1
f 32/1/2 26/2/2 10/3/2 12/4/2
f 7/1/4 3/2/4 11/3/4 13/4/4
f 100/1/2 44/2/2 21/3/2 79/4/2
f 74/1/4 19/2/4 20/3/4 82/4/4
f 20/1/1 48/2/1 52/3/1 22/4/1
f 67/1/2 17/2/2 18/3/2 65/4/2
f 69/1/3 16/2/3 19/3/3 74/4/3
f 64/1/4 15/2/4 16/3/4 69/4/4
f 79/1/2 21/2/2 17/3/2 67/4/2
f 6/1/3 15/2/3 18/3/3 5/4/3
f 91/1/4 22/2/4 52/3/4 134/4/4
f 82/1/3 20/2/3 22/3/3 91/4/3
f 27/1/1 28/2/1 23/3/1 24/4/1
f 34/1/2 29/2/2 23/3/2 28/4/2
f 42/1/5 47/2/5 96/3/5 95/4/5
f 40/1/4 31/2/4 25/3/4 38/4/4
f 30/1/4 33/2/4 27/3/4 24/4/4
f 39/1/2 34/2/2 28/3/2 37/4/2
f 38/1/1 37/2/1 28/3/1 27/4/1
f 51/1/2 46/2/2 34/3/2 39/4/2
f 42/1/4 45/2/4 33/3/4 30/4/4
f 45/1/5 49/2/5 36/3/5 33/4/5
f 24/1/5 23/2/5 29/3/5 30/4/5
f 46/1/2 47/2/2 29/3/2 34/4/2
f 50/1/4 48/2/4 35/3/4 41/4/4
f 43/1/3 48/2/3 112/3/3 99/4/3
f 40/1/1 41/2/1 35/3/1 31/4/1
f 33/1/1 36/2/1 41/3/1 40/4/1
f 49/1/4 50/2/4 41/3/4 36/4/4
f 44/1/2 51/2/2 39/3/2 32/4/2
f 25/1/1 26/2/1 37/3/1 38/4/1
f 32/1/2 39/2/2 37/3/2 26/4/2
f 33/1/4 40/2/4 38/3/4 27/4/4
f 100/1/2 118/2/2 51/3/2 44/4/2
f 111/1/4 121/2/4 50/3/4 49/4/4
f 31/1/3 35/2/3 48/3/3 43/4/3
f 50/1/1 53/2/1 52/3/1 48/4/1
f 102/1/2 96/2/2 47/3/2 46/4/2
f 104/1/5 111/2/5 49/3/5 45/4/5
f 95/1/4 104/2/4 45/3/4 42/4/4
f 118/1/2 102/2/2 46/3/2 51/4/2
f 30/1/5 29/2/5 47/3/5 42/4/5
f 133/1/4 134/2/4 52/3/4 53/4/4
f 48/1/3 52/2/3 134/3/3 112/4/3
f 121/1/5 133/2/5 53/3/5 50/4/5
f 55/5/3 54/6/3 56/7/3 57/8/3
f 57/9/1 56/4/1 60/10/1 61/11/1
f 61/12/5 60/13/5 58/14/5 59/15/5
f 59/16/6 58/17/6 54/1/6 55/18/6
f 54/1/2 58/17/2 60/10/2 56/4/2
f 59/19/4 55/20/4 57/21/4 61/22/4
f 66/1/6 68/2/6 62/3/6 63/4/6
f 73/1/2 70/2/2 62/3/2 68/4/2
f 84/1/3 87/2/3 65/3/3 64/4/3
f 81/1/4 107/2/4 97/3/4 78/4/4
f 71/1/4 72/2/4 66/3/4 63/4/4
f 80/1/2 73/2/2 68/3/2 76/4/2
f 78/1/6 76/2/6 68/3/6 66/4/6
f 90/1/2 86/2/2 73/3/2 80/4/2
f 84/1/4 85/2/4 72/3/4 71/4/4
f 85/1/3 88/2/3 75/3/3 72/4/3
f 63/1/3 62/2/3 70/3/3 71/4/3
f 86/1/2 87/2/2 70/3/2 73/4/2
f 89/1/4 129/2/4 113/3/4 83/4/4
f 77/1/1 82/2/1 74/3/1 69/4/1
f 81/1/6 83/2/6 113/3/6 107/4/6
f 72/1/6 75/2/6 83/3/6 81/4/6
f 99/1/1 112/2/1 82/3/1 77/4/1
f 88/1/4 89/2/4 83/3/4 75/4/4
f 125/1/2 90/2/2 80/3/2 108/4/2
f 97/1/6 98/2/6 76/3/6 78/4/6
f 108/1/2 80/2/2 76/3/2 98/4/2
f 72/1/4 81/2/4 78/3/4 66/4/4
f 100/1/2 79/2/2 90/3/2 125/4/2
f 74/1/4 82/2/4 89/3/4 88/4/4
f 89/1/6 92/2/6 135/3/6 129/4/6
f 67/1/2 65/2/2 87/3/2 86/4/2
f 69/1/3 74/2/3 88/3/3 85/4/3
f 64/1/4 69/2/4 85/3/4 84/4/4
f 79/1/2 67/2/2 86/3/2 90/4/2
f 71/1/3 70/2/3 87/3/3 84/4/3
f 91/1/4 134/2/4 135/3/4 92/4/4
f 112/1/1 134/2/1 91/3/1 82/4/1
f 82/1/3 91/2/3 92/3/3 89/4/3
f 101/1/6 94/2/6 93/3/6 103/4/6
f 110/1/2 103/2/2 93/3/2 105/4/2
f 123/1/5 95/2/5 96/3/5 128/4/5
f 120/1/4 117/2/4 97/3/4 107/4/4
f 106/1/4 94/2/4 101/3/4 109/4/4
f 119/1/2 115/2/2 103/3/2 110/4/2
f 117/1/6 101/2/6 103/3/6 115/4/6
f 132/1/2 119/2/2 110/3/2 127/4/2
f 123/1/4 106/2/4 109/3/4 126/4/4
f 126/1/5 109/2/5 114/3/5 130/4/5
f 94/1/5 106/2/5 105/3/5 93/4/5
f 127/1/2 110/2/2 105/3/2 128/4/2
f 131/1/4 122/2/4 113/3/4 129/4/4
f 124/1/3 99/2/3 112/3/3 129/4/3
f 116/1/1 104/2/1 111/3/1 121/4/1
f 120/1/6 107/2/6 113/3/6 122/4/6
f 109/1/6 120/2/6 122/3/6 114/4/6
f 99/1/1 116/2/1 121/3/1 112/4/1
f 130/1/4 114/2/4 122/3/4 131/4/4
f 125/1/2 108/2/2 119/3/2 132/4/2
f 97/1/6 117/2/6 115/3/6 98/4/6
f 108/1/2 98/2/2 115/3/2 119/4/2
f 109/1/4 101/2/4 117/3/4 120/4/4
f 100/1/2 125/2/2 132/3/2 118/4/2
f 111/1/4 130/2/4 131/3/4 121/4/4
f 107/1/3 124/2/3 129/3/3 113/4/3
f 131/1/6 129/2/6 135/3/6 136/4/6
f 102/1/2 127/2/2 128/3/2 96/4/2
f 104/1/5 126/2/5 130/3/5 111/4/5
f 95/1/4 123/2/4 126/3/4 104/4/4
f 118/1/2 132/2/2 127/3/2 102/4/2
f 106/1/5 123/2/5 128/3/5 105/4/5
f 133/1/4 136/2/4 135/3/4 134/4/4
f 129/1/3 112/2/3 134/3/3 135/4/3
f 112/1/1 121/2/1 133/3/1 134/4/1
f 121/1/5 131/2/5 136/3/5 133/4/5

View File

@ -0,0 +1,105 @@
# Blender v2.74 (sub 0) OBJ File: 'mcnodes_chest.blend'
# www.blender.org
mtllib default_chest.mtl
o Chest
v 0.429587 -0.500587 0.455401
v 0.429587 0.358587 0.455401
v -0.429587 -0.500587 0.455401
v -0.429587 0.358587 0.455401
v 0.429587 -0.500587 -0.403773
v 0.429587 0.358587 -0.403773
v -0.429587 -0.500587 -0.403773
v -0.429587 0.358587 -0.403773
v 0.429587 0.088644 0.455401
v -0.429587 0.088644 0.455401
v -0.429587 0.088644 -0.403773
v 0.429587 0.088644 -0.403773
v 0.054702 -0.017228 -0.403842
v 0.054702 0.198663 -0.403842
v -0.054702 -0.017228 -0.403842
v -0.054702 0.198663 -0.403842
v 0.054702 -0.017228 -0.455401
v 0.054702 0.198663 -0.455401
v -0.054702 -0.017228 -0.455401
v -0.054702 0.198663 -0.455401
vt 0.656221 0.484414
vt 0.437466 0.484414
vt 0.437466 0.328177
vt 0.656221 0.328177
vt 0.000015 0.484374
vt 0.218749 0.484374
vt 0.218749 0.328221
vt 0.000015 0.328221
vt 0.218825 0.484376
vt 0.218825 0.328204
vt 0.874916 0.484361
vt 0.656361 0.484361
vt 0.656361 0.328196
vt 0.874916 0.328196
vt 0.437618 0.484420
vt 0.437618 0.703143
vt 0.656223 0.703143
vt 0.437583 1.000009
vt 0.218998 1.000009
vt 0.218848 0.781307
vt 0.437433 0.781307
vt 0.875034 0.781209
vt 0.656262 0.781209
vt 0.656262 0.703266
vt 0.875034 0.703266
vt 0.000015 0.781229
vt 0.218749 0.781229
vt 0.218749 0.703264
vt 0.000015 0.703264
vt 0.656221 0.781292
vt 0.437984 0.781292
vt 0.437984 0.703261
vt 0.656221 0.703261
vt 0.093709 0.999995
vt 0.062525 0.999995
vt 0.062525 0.937615
vt 0.093709 0.937615
vt 0.046865 1.000072
vt 0.062568 1.000072
vt 0.062568 0.937564
vt 0.046865 0.937564
vt 0.046890 0.999970
vt 0.031269 0.999970
vt 0.031269 0.937548
vt 0.046890 0.937548
vt 0.062515 0.921897
vt 0.031265 0.921897
vt 0.062515 0.937528
vt 0.031243 0.937542
vt 0.000021 0.937542
vt 0.000021 0.921918
vt 0.031243 0.921918
vt 0.437503 0.781322
vt 0.437503 0.703210
vt 0.218797 0.703210
vt 0.000024 1.000025
vt 0.031224 1.000025
vn 0.000000 0.000000 1.000000
vn -1.000000 -0.000000 0.000000
vn -0.000000 0.000000 -1.000000
vn 1.000000 0.000000 -0.000000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 1.000000 -0.000000
usemtl None
s off
f 9/1/1 10/2/1 3/3/1 1/4/1
f 10/5/2 11/6/2 7/7/2 3/8/2
f 11/9/3 12/2/3 5/3/3 7/10/3
f 12/11/4 9/12/4 1/13/4 5/14/4
f 1/1/5 3/15/5 7/16/5 5/17/5
f 6/18/6 8/19/6 4/20/6 2/21/6
f 6/22/4 2/23/4 9/24/4 12/25/4
f 4/26/2 8/27/2 11/28/2 10/29/2
f 2/30/1 4/31/1 10/32/1 9/33/1
f 14/34/1 16/35/1 15/36/1 13/37/1
f 16/38/2 20/39/2 19/40/2 15/41/2
f 18/42/4 14/43/4 13/44/4 17/45/4
f 13/46/5 15/47/5 19/44/5 17/48/5
f 18/49/6 20/50/6 16/51/6 14/52/6
f 8/20/3 6/53/3 12/54/3 11/55/3
f 19/50/3 20/56/3 18/57/3 17/49/3

View File

@ -0,0 +1,109 @@
# Blender v2.74 (sub 0) OBJ File: 'mcnodes_chest.blend'
# www.blender.org
mtllib mcnodes_large_chest.mtl
o Large_chest
v 0.359174 -0.500965 0.417158
v 0.359174 0.358209 0.417158
v -1.359174 -0.500965 0.417158
v -1.359174 0.358209 0.417158
v 0.359174 -0.500965 -0.442016
v 0.359174 0.358209 -0.442016
v -1.359174 -0.500965 -0.442016
v -1.359174 0.358209 -0.442016
v 0.359174 0.088266 0.417158
v -1.359174 0.088266 0.417158
v -1.359174 0.088266 -0.442016
v 0.359174 0.088266 -0.442016
v -0.445298 -0.017606 -0.442085
v -0.445298 0.198285 -0.442085
v -0.554702 -0.017606 -0.442085
v -0.554702 0.198285 -0.442085
v -0.445298 -0.017606 -0.493645
v -0.445298 0.198285 -0.493645
v -0.554702 -0.017606 -0.493645
v -0.554702 0.198285 -0.493645
v 0.359174 0.358209 -0.442016
v -1.359174 0.358209 -0.442016
v -1.359174 0.088266 -0.442016
v 0.359174 0.088266 -0.442016
v -0.554702 0.198285 -0.493645
v -0.554702 -0.017606 -0.493645
v -0.445298 0.198285 -0.493645
v -0.445298 -0.017606 -0.493645
vt 0.453166 0.484501
vt 0.687480 0.484501
vt 0.687480 0.328376
vt 0.453166 0.328376
vt 0.343794 0.484501
vt 0.453118 0.484501
vt 0.453118 0.328283
vt 0.343794 0.328283
vt 0.343725 0.484630
vt 0.109388 0.484630
vt 0.109388 0.328156
vt 0.343725 0.328156
vt 0.109496 0.484357
vt 0.000021 0.484357
vt 0.000021 0.328231
vt 0.109496 0.328231
vt 0.343819 0.703215
vt 0.578160 0.703215
vt 0.578159 0.484495
vt 0.109435 0.781259
vt 0.343723 0.781259
vt 0.343723 1.000004
vt 0.109435 1.000005
vt 0.109431 0.781414
vt 0.000021 0.781414
vt 0.000021 0.703232
vt 0.109431 0.703232
vt 0.343794 0.781525
vt 0.453118 0.781525
vt 0.453118 0.703193
vt 0.453108 0.781255
vt 0.687504 0.781255
vt 0.687504 0.703246
vt 0.015639 1.000326
vt 0.031259 1.000326
vt 0.031259 0.937564
vt 0.015639 0.937564
vt 0.039067 1.000011
vt 0.046884 1.000011
vt 0.046884 0.937688
vt 0.039067 0.937688
vt 0.031237 1.000035
vt 0.031237 0.937569
vt 0.039080 0.937569
vt 0.031266 0.921901
vt 0.015618 0.921901
vt -0.000001 0.921931
vt 0.015607 0.937532
vt -0.000001 0.937532
vt 0.343775 0.781279
vt 0.015680 0.999982
vt -0.000033 0.999982
vt 0.015680 0.937507
vn 0.000000 -0.000000 1.000000
vn -1.000000 0.000000 0.000000
vn -0.000000 -0.000000 -1.000000
vn 1.000000 0.000000 -0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 -0.000000
usemtl None
s off
f 9/1/1 10/2/1 3/3/1 1/4/1
f 10/5/2 11/6/2 7/7/2 3/8/2
f 11/9/3 12/10/3 5/11/3 7/12/3
f 12/13/4 9/14/4 1/15/4 5/16/4
f 1/17/5 3/18/5 7/19/5 5/5/5
f 6/20/6 8/21/6 4/22/6 2/23/6
f 6/24/4 2/25/4 9/26/4 12/27/4
f 4/28/2 8/29/2 11/30/2 10/17/2
f 2/31/1 4/32/1 10/33/1 9/30/1
f 14/34/1 16/35/1 15/36/1 13/37/1
f 16/38/2 20/39/2 19/40/2 15/41/2
f 18/38/4 14/42/4 13/43/4 17/44/4
f 13/37/5 15/36/5 19/45/5 17/46/5
f 18/47/6 20/46/6 16/48/6 14/49/6
f 22/50/3 21/20/3 24/27/3 23/17/3
f 25/51/3 27/52/3 28/49/3 26/53/3

113
models/mcnodes_stair.obj Normal file
View File

@ -0,0 +1,113 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib stairs.mtl
o stairs_top
v -0.500000 0.000000 -0.500000
v -0.500000 0.000000 0.000000
v 0.500000 0.000000 0.000000
v 0.500000 0.000000 -0.500000
v -0.500000 0.500000 0.000000
v 0.500000 0.500000 0.000000
v -0.500000 0.500000 0.500000
v 0.500000 0.500000 0.500000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 0.500000
vt 0.000000 0.500000
vt 1.000000 1.000000
vt 0.000000 1.000000
vn 0.000000 1.000000 0.000000
g stairs_top
usemtl None
s off
f 4/1/1 1/2/1 2/3/1 3/4/1
f 7/5/1 8/6/1 6/4/1 5/3/1
o stairs_bottom
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vn 0.000000 -1.000000 -0.000000
g stairs_bottom
usemtl None
s off
f 11/7/2 9/8/2 10/9/2 12/10/2
o stairs_right
v -0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 0.000000 0.000000
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.000000
v -0.500000 0.500000 0.500000
vt 0.000000 0.500000
vt 0.000000 0.000000
vt 0.500000 0.500000
vt 1.000000 1.000000
vt 0.500000 1.000000
vt 1.000000 0.000000
vn -1.000000 0.000000 0.000000
g stairs_right
usemtl None
s off
f 13/11/3 14/12/3 15/13/3
f 15/13/3 18/14/3 17/15/3
f 14/12/3 16/16/3 18/14/3
o stairs_left
v 0.500000 0.000000 0.000000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.000000
v 0.500000 0.500000 0.500000
vt 0.500000 0.500000
vt 1.000000 0.000000
vt 1.000000 0.500000
vt 0.500000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vn 1.000000 0.000000 0.000000
g stairs_left
usemtl None
s off
f 19/17/4 20/18/4 21/19/4
f 19/17/4 23/20/4 24/21/4
f 20/18/4 24/21/4 22/22/4
o stairs_back
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 0.500000 0.500000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vn 0.000000 -0.000000 1.000000
g stairs_back
usemtl None
s off
f 26/23/5 28/24/5 27/25/5 25/26/5
o stairs_front
v -0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 0.000000 0.000000
v 0.500000 0.000000 0.000000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
v -0.500000 0.500000 0.000000
v 0.500000 0.500000 0.000000
vt 1.000000 0.000000
vt 1.000000 0.500000
vt 0.000000 0.500000
vt 0.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vn 0.000000 0.000000 -1.000000
g stairs_front
usemtl None
s off
f 30/27/6 29/28/6 34/29/6 33/30/6
f 31/28/6 35/31/6 36/32/6 32/29/6

422
nodes.lua Normal file
View File

@ -0,0 +1,422 @@
ChangeChest = '1'
LargeChest = '1'
minetest.register_node("mcnodes:quartz_block", {
description = "Quartz block",
tiles = {"mcnodes_quartz_block_top.png", "mcnodes_quartz_block_bottom.png", "mcnodes_quartz_block.png", "mcnodes_quartz_block.png", "mcnodes_quartz_block.png", "mcnodes_quartz_block.png"},
groups = {cracky = 3},
drop = 'mcnodes:quartz_block',
})
minetest.register_node("mcnodes:quartz_block_chiseled", {
description = "Chiseled quartz block",
tiles = {"mcnodes_quartz_block_chiseled_top.png", "mcnodes_quartz_block_chiseled_top.png", "mcnodes_quartz_block_chiseled.png", "mcnodes_quartz_block_chiseled.png", "mcnodes_quartz_block_chiseled.png", "mcnodes_quartz_block_chiseled.png"},
groups = {cracky = 3},
drop = 'mcnodes:quartz_block_chiseled',
})
minetest.register_node("mcnodes:quartz_block_pillar", {
description = "Pillar quartz block",
tiles = {"mcnodes_quartz_block_pillar_top.png", "mcnodes_quartz_block_pillar_top.png", "mcnodes_quartz_block_pillar.png", "mcnodes_quartz_block_pillar.png", "mcnodes_quartz_block_pillar.png", "mcnodes_quartz_block_pillar.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {cracky = 3},
drop = 'mcnodes:quartz_block_pillar',
on_place = minetest.rotate_node
})
minetest.register_node("mcnodes:quartz_ore", {
description = "Quartz ore",
tiles = {"mcnodes_quartz_ore.png"},
groups = {cracky = 3},
drop = 'mcnodes:quartz_item',
})
minetest.register_node("mcnodes:diorite", {
description = "Diorite block",
tiles = {"mcnodes_diorite.png"},
groups = {cracky = 3},
drop = 'mcnodes:diorite',
})
minetest.register_node("mcnodes:smooth_diorite", {
description = "Smooth diorite block",
tiles = {"mcnodes_diorite_smooth.png"},
groups = {cracky = 3},
drop = 'mcnodes:smooth_diorite',
})
minetest.register_node("mcnodes:granite", {
description = "Granite block",
tiles = {"mcnodes_granite.png"},
groups = {cracky = 3},
drop = 'mcnodes:granite',
})
minetest.register_node("mcnodes:smooth_granite", {
description = "Smooth granite block",
tiles = {"mcnodes_granite_smooth.png"},
groups = {cracky = 3},
drop = 'mcnodes:smooth_granite',
})
minetest.register_node("mcnodes:andesite", {
description = "Andesite block",
tiles = {"mcnodes_andesite.png"},
groups = {cracky = 3},
drop = 'mcnodes:andesite',
})
minetest.register_node("mcnodes:smooth_andesite", {
description = "Smooth andesite block",
tiles = {"mcnodes_andesite_smooth.png"},
groups = {cracky = 3},
drop = 'mcnodes:smooth_andesite',
})
minetest.register_node("mcnodes:blue_brick", {
description = "Blue brick",
tiles = {"mcnodes_blue_brick.png"},
groups = {cracky = 3},
drop = 'mcnodes:blue_brick',
})
minetest.register_node("mcnodes:yellow_brick", {
description = "Yellow brick",
tiles = {"mcnodes_yellow_brick.png"},
groups = {cracky = 3},
drop = 'mcnodes:yellow_brick',
})
minetest.register_node("mcnodes:grey_brick", {
description = "Grey brick",
tiles = {"mcnodes_grey_brick.png"},
groups = {cracky = 3},
drop = 'mcnodes:grey_brick',
})
minetest.register_node("mcnodes:smooth_sandstone", {
description = "Smooth sandstone",
tiles = {"mcnodes_sandstone_top.png", "mcnodes_sandstone_bottom.png", "mcnodes_smooth_sandstone.png", "mcnodes_smooth_sandstone.png"},
groups = {cracky = 3},
drop = 'mcnodes:smooth_sandstone',
})
minetest.register_node("mcnodes:chiseled_sandstone", {
description = "Chiseled sandstone",
tiles = {"mcnodes_sandstone_top.png", "mcnodes_sandstone_bottom.png", "mcnodes_chiseled_sandstone.png", "mcnodes_chiseled_sandstone.png"},
groups = {cracky = 3},
drop = 'mcnodes:chiseled_sandstone',
})
minetest.register_node("mcnodes:red_sand", {
description = "Red sand",
tiles = {"default_sand.png^[colorize:#983800:200"},
groups = {crumbly = 3, falling_node = 1, sand = 1},
drop = 'mcnodes:red_sand',
sounds = default.node_sound_sand_defaults(),
alpha = 160,
})
minetest.register_node("mcnodes:red_sandstone", {
description = "Red sandstone",
tiles = {"mcnodes_sandstone_top.png^[colorize:#983800:200", "mcnodes_sandstone_bottom.png^[colorize:#983800:200", "default_sandstone.png^[colorize:#983800:200", "default_sandstone.png^[colorize:#983800:200"},
groups = {cracky = 3},
drop = 'mcnodes:red_sandstone',
})
minetest.register_node("mcnodes:smooth_red_sandstone", {
description = "Smooth red sandstone",
tiles = {"mcnodes_sandstone_top.png^[colorize:#983800:200", "mcnodes_sandstone_bottom.png^[colorize:#983800:200", "mcnodes_smooth_sandstone.png^[colorize:#983800:200", "mcnodes_smooth_sandstone.png^[colorize:#983800:200"},
groups = {cracky = 3},
drop = 'mcnodes:smooth_red_sandstone',
})
minetest.register_node("mcnodes:chiseled_red_sandstone", {
description = "Chiseled red sandstone",
tiles = {"mcnodes_sandstone_top.png^[colorize:#983800:200", "mcnodes_sandstone_bottom.png^[colorize:#983800:200", "mcnodes_smooth_sandstone.png^[colorize:#983800:200^mcnodes_red_chiseled_sandstone.png", "mcnodes_smooth_sandstone.png^[colorize:#983800:200^mcnodes_red_chiseled_sandstone.png"},
groups = {cracky = 3},
drop = 'mcnodes:chiseled_red_sandstone',
})
minetest.register_node("mcnodes:hardened_clay", {
description = "Hardened clay",
tiles = {"mcnodes_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:hardened_clay',
})
minetest.register_node("mcnodes:black_hardened_clay", {
description = "Black hardened clay",
tiles = {"mcnodes_black_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:black_hardened_clay',
})
minetest.register_node("mcnodes:blue_hardened_clay", {
description = "Blue hardened clay",
tiles = {"mcnodes_blue_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:blue_hardened_clay',
})
minetest.register_node("mcnodes:brown_hardened_clay", {
description = "Brown hardened clay",
tiles = {"mcnodes_brown_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:brown_hardened_clay',
})
minetest.register_node("mcnodes:cyan_hardened_clay", {
description = "Cyan hardened clay",
tiles = {"mcnodes_cyan_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:cyan_hardened_clay',
})
minetest.register_node("mcnodes:grey_hardened_clay", {
description = "Grey hardened clay",
tiles = {"mcnodes_grey_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:grey_hardened_clay',
})
minetest.register_node("mcnodes:green_hardened_clay", {
description = "Green hardened clay",
tiles = {"mcnodes_green_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:green_hardened_clay',
})
minetest.register_node("mcnodes:lime_hardened_clay", {
description = "Lime hardened clay",
tiles = {"mcnodes_lime_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:lime_hardened_clay',
})
minetest.register_node("mcnodes:magenta_hardened_clay", {
description = "Magenta hardened clay",
tiles = {"mcnodes_magenta_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:magenta_hardened_clay',
})
minetest.register_node("mcnodes:orange_hardened_clay", {
description = "Orange hardened clay",
tiles = {"mcnodes_orange_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:orange_hardened_clay',
})
minetest.register_node("mcnodes:pink_hardened_clay", {
description = "Pink hardened clay",
tiles = {"mcnodes_pink_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:pink_hardened_clay',
})
minetest.register_node("mcnodes:red_hardened_clay", {
description = "Red hardened clay",
tiles = {"mcnodes_red_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:red_hardened_clay',
})
minetest.register_node("mcnodes:white_hardened_clay", {
description = "White hardened clay",
tiles = {"mcnodes_white_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:white_hardened_clay',
})
minetest.register_node("mcnodes:yellow_hardened_clay", {
description = "Yellow hardened clay",
tiles = {"mcnodes_yellow_hardened_clay.png"},
groups = {cracky = 3},
drop = 'mcnodes:yellow_hardened_clay',
})
minetest.register_node("mcnodes:black_carpet", {
description = "Black carpet",
drawtype = "nodebox",
tiles = {"wool_black.png"},
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
})
minetest.register_node("mcnodes:blue_carpet", {
description = "Blue carpet",
drawtype = "nodebox",
tiles = {"wool_blue.png"},
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
})
minetest.register_node("mcnodes:brown_carpet", {
description = "Brown carpet",
drawtype = "nodebox",
tiles = {"wool_brown.png"},
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
})
minetest.register_node("mcnodes:cyan_carpet", {
description = "Cyan carpet",
drawtype = "nodebox",
tiles = {"wool_cyan.png"},
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
})
minetest.register_node("mcnodes:green_carpet", {
description = "Green carpet",
drawtype = "nodebox",
tiles = {"wool_green.png"},
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
})
minetest.register_node("mcnodes:grey_carpet", {
description = "Grey carpet",
drawtype = "nodebox",
tiles = {"wool_grey.png"},
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
})
minetest.register_node("mcnodes:magenta_carpet", {
description = "Magenta carpet",
drawtype = "nodebox",
tiles = {"wool_magenta.png"},
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
})
minetest.register_node("mcnodes:orange_carpet", {
description = "Orange carpet",
drawtype = "nodebox",
tiles = {"wool_orange.png"},
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
})
minetest.register_node("mcnodes:red_carpet", {
description = "Red carpet",
drawtype = "nodebox",
tiles = {"wool_red.png"},
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
})
minetest.register_node("mcnodes:white_carpet", {
description = "White carpet",
drawtype = "nodebox",
tiles = {"wool_white.png"},
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
})
minetest.register_node("mcnodes:yellow_carpet", {
description = "Yellow carpet",
drawtype = "nodebox",
tiles = {"wool_yellow.png"},
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
})
minetest.register_node("mcnodes:lapis_lazuli_ore", {
description = "Lapis lazuli ore",
tiles = {"default_stone.png^mcnodes_lapis_ore.png"},
groups = {cracky = 3},
drop = 'dye:blue 3',
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("mcnodes:lapis_lazuli_block", {
description = "Lapis lazuli block",
tiles = {"mcnodes_lapis_block.png"},
groups = {cracky = 3},
drop = 'mcnodes:lapis_lazuli_block',
})
minetest.register_node("mcnodes:emerald_ore", {
description = "Emerald ore",
tiles = {"default_stone.png^mcnodes_emerald_ore.png"},
groups = {cracky = 1},
drop = 'mcnodes:emerald_item',
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("mcnodes:emerald_block", {
description = "Emerald block",
tiles = {"mcnodes_emerald_block.png"},
groups = {cracky = 1},
drop = 'mcnodes:emerald_block',
})

12
register_biome.lua Normal file
View File

@ -0,0 +1,12 @@
minetest.register_biome({
name = "red desert",
node_top = "mcnodes:red_sand",
depth_top = 3,
node_filler = "mcnodes:red_sand",
depth_filler = 1,
node_stone = "mcnodes:red_sandstone",
y_min = 5,
y_max = 31000,
heat_point = 95,
humidity_point = 30,
})

78
register_ores.lua Normal file
View File

@ -0,0 +1,78 @@
minetest.register_ore({
ore_type = "scatter",
ore = "mcnodes:emerald_ore",
wherein = "default:stone",
clust_scarcity = 18 * 18 * 18,
clust_num_ores = 3,
clust_size = 2,
y_min = -31000,
y_max = -80,
})
minetest.register_ore({
ore_type = "scatter",
ore = "mcnodes:lapis_lazuli_ore",
wherein = "default:stone",
clust_scarcity = 13 * 13 * 13,
clust_num_ores = 5,
clust_size = 3,
y_min = -31000,
y_max = -70,
})
minetest.register_ore({
ore_type = "blob",
ore = "mcnodes:diorite",
wherein = {"default:stone"},
clust_scarcity = 16 * 16 * 16,
clust_size = 5,
y_min = -31000,
y_max = 31000,
noise_threshold = 0.0,
noise_params = {
offset = 0.5,
scale = 0.2,
spread = {x = 5, y = 5, z = 5},
seed = 766,
octaves = 1,
persist = 0.0
},
})
minetest.register_ore({
ore_type = "blob",
ore = "mcnodes:andesite",
wherein = {"default:stone"},
clust_scarcity = 16 * 16 * 16,
clust_size = 5,
y_min = -31000,
y_max = 31000,
noise_threshold = 0.0,
noise_params = {
offset = 0.5,
scale = 0.2,
spread = {x = 5, y = 5, z = 5},
seed = 766,
octaves = 1,
persist = 0.0
},
})
minetest.register_ore({
ore_type = "blob",
ore = "mcnodes:granite",
wherein = {"default:stone"},
clust_scarcity = 16 * 16 * 16,
clust_size = 5,
y_min = -31000,
y_max = 31000,
noise_threshold = 0.0,
noise_params = {
offset = 0.5,
scale = 0.2,
spread = {x = 5, y = 5, z = 5},
seed = 766,
octaves = 1,
persist = 0.0
},
})

63
replaced_nodes.lua Normal file
View File

@ -0,0 +1,63 @@
if ChangeChest == '1' then
local chest_formspec =
"size[8,9]" ..
default.gui_bg ..
default.gui_bg_img ..
default.gui_slots ..
"list[current_name;main;0,0.3;8,4;]" ..
"list[current_player;main;0,4.85;8,1;]" ..
"list[current_player;main;0,6.08;8,3;8]" ..
"listring[current_name;main]" ..
"listring[current_player;main]" ..
default.get_hotbar_bg(0,4.85)
minetest.register_node(":default:chest", {
description = "Chest",
drawtype = "mesh",
mesh = "mcnodes_default_chest.obj",
tiles = {"mcnodes_default_chest.png"},
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_wood_defaults(),
selection_box = {type = "fixed", fixed = {0.43, 0.357, 0.457, -0.43, -0.499, -0.403}},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", chest_formspec)
meta:set_string("infotext", "Chest")
local inv = meta:get_inventory()
inv:set_size("main", 8*4)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
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 chest at " .. minetest.pos_to_string(pos))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name() ..
" moves " .. stack:get_name() ..
" to chest at " .. minetest.pos_to_string(pos))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name() ..
" takes " .. stack:get_name() ..
" from chest at " .. minetest.pos_to_string(pos))
end,
on_blast = function(pos)
local drops = {}
default.get_inventory_drops(pos, "main", drops)
drops[#drops+1] = "default:chest"
minetest.remove_node(pos)
return drops
end,
})
end

7
stairs.lua Normal file
View File

@ -0,0 +1,7 @@
mcnodes.register_stair_and_slab("quartz", "mcnodes:quartz_block", {cracky = 3}, {"mcnodes_quartz_block.png"}, "Quartz stair", "Quartz slab", default.node_sound_stone_defaults())
mcnodes.register_stair_and_slab("blue_brick", "mcnodes:blue_brick", {cracky = 3}, {"mcnodes_blue_brick.png"}, "Blue brick stair", "Blue brick slab", default.node_sound_stone_defaults())
mcnodes.register_stair_and_slab("yellow_brick", "mcnodes:yellow_brick", {cracky = 3}, {"mcnodes_yellow_brick.png"}, "Yellow brick stair", "Yellow brick slab", default.node_sound_stone_defaults())
mcnodes.register_stair_and_slab("grey_brick", "mcnodes:grey_brick", {cracky = 3}, {"mcnodes_grey_brick.png"}, "Grey brick stair", "Grey brick slab", default.node_sound_stone_defaults())
mcnodes.register_stair_and_slab("smooth_sandstone_brick", "mcnodes:smooth_sandstone", {cracky = 3}, {"mcnodes_smooth_sandstone.png"}, "Smooth sandstone stair", "Smooth sandstone slab", default.node_sound_stone_defaults())
mcnodes.register_stair_and_slab("red_sandstone", "mcnodes:red_sandstone", {cracky = 3}, {"default_sandstone.png^[colorize:#983800:200"}, "Red sandstone stair", "Red sandstone slab", default.node_sound_stone_defaults())
mcnodes.register_stair_and_slab("red_smooth_sandstone", "mcnodes:red_smooth_sandstone", {cracky = 3}, {"mcnodes_smooth_sandstone.png^[colorize:#983800:200"}, "Red smooth sandstone stair", "Red smooth sandstone slab", default.node_sound_stone_defaults())

226
stairs_functions.lua Normal file
View File

@ -0,0 +1,226 @@
mcnodes = {}
function mcnodes.register_stair(subname, recipeitem, groups, images, description, sounds)
groups.stair = 1
minetest.register_node(":mcnodes:stair_" .. subname, {
description = description,
drawtype = "mesh",
mesh = "mcnodes_stair.obj",
tiles = images,
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
groups = groups,
sounds = sounds,
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
{-0.5, 0, 0, 0.5, 0.5, 0.5},
},
},
collision_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
{-0.5, 0, 0, 0.5, 0.5, 0.5},
},
},
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then
return itemstack
end
local p0 = pointed_thing.under
local p1 = pointed_thing.above
local param2 = 0
local placer_pos = placer:getpos()
if placer_pos then
local dir = {
x = p1.x - placer_pos.x,
y = p1.y - placer_pos.y,
z = p1.z - placer_pos.z
}
param2 = minetest.dir_to_facedir(dir)
end
if p0.y - 1 == p1.y then
param2 = param2 + 20
if param2 == 21 then
param2 = 23
elseif param2 == 23 then
param2 = 21
end
end
return minetest.item_place(itemstack, placer, pointed_thing, param2)
end,
})
if replace then
minetest.register_node(":mcnodes:stair_" .. subname .. "upside_down", {
replace_name = "mcnodes:stair_" .. subname,
groups = {slabs_replace = 1},
})
end
minetest.register_craft({
output = 'mcnodes:stair_' .. subname .. ' 6',
recipe = {
{recipeitem, "", ""},
{recipeitem, recipeitem, ""},
{recipeitem, recipeitem, recipeitem},
},
})
minetest.register_craft({
output = 'mcnodes:stair_' .. subname .. ' 6',
recipe = {
{"", "", recipeitem},
{"", recipeitem, recipeitem},
{recipeitem, recipeitem, recipeitem},
},
})
end
function mcnodes.register_slab(subname, recipeitem, groups, images, description, sounds)
groups.slab = 1
minetest.register_node(":mcnodes:slab_" .. subname, {
description = description,
drawtype = "nodebox",
tiles = images,
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
groups = groups,
sounds = sounds,
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
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 p0 = pointed_thing.under
local p1 = pointed_thing.above
local n0 = minetest.get_node(p0)
local n1 = minetest.get_node(p1)
local param2 = 0
local n0_is_upside_down = (n0.name == "mcnodes:slab_" .. subname and
n0.param2 >= 20)
if n0.name == "mcnodes:slab_" .. subname and not n0_is_upside_down and
p0.y + 1 == p1.y then
slabpos = p0
slabnode = n0
elseif n1.name == "mcnodes:slab_" .. subname then
slabpos = p1
slabnode = n1
end
if slabpos then
-- Remove the slab at slabpos
minetest.remove_node(slabpos)
-- Make a fake stack of a single item and try to place it
local fakestack = ItemStack(recipeitem)
fakestack:set_count(itemstack:get_count())
pointed_thing.above = slabpos
local success
fakestack, success = minetest.item_place(fakestack, placer,
pointed_thing)
-- If the item was taken from the fake stack, decrement original
if success then
itemstack:set_count(fakestack:get_count())
-- Else put old node back
else
minetest.set_node(slabpos, slabnode)
end
return itemstack
end
-- Upside down slabs
if p0.y - 1 == p1.y then
-- Turn into full block if pointing at a existing slab
if n0_is_upside_down then
-- Remove the slab at the position of the slab
minetest.remove_node(p0)
-- Make a fake stack of a single item and try to place it
local fakestack = ItemStack(recipeitem)
fakestack:set_count(itemstack:get_count())
pointed_thing.above = p0
local success
fakestack, success = minetest.item_place(fakestack, placer,
pointed_thing)
-- If the item was taken from the fake stack, decrement original
if success then
itemstack:set_count(fakestack:get_count())
-- Else put old node back
else
minetest.set_node(p0, n0)
end
return itemstack
end
-- Place upside down slab
param2 = 20
end
-- If pointing at the side of a upside down slab
if n0_is_upside_down and p0.y + 1 ~= p1.y then
param2 = 20
end
return minetest.item_place(itemstack, placer, pointed_thing, param2)
end,
})
-- for replace ABM
if replace then
minetest.register_node(":mcnodes:slab_" .. subname .. "upside_down", {
replace_name = "mcnodes:slab_".. subname,
groups = {slabs_replace = 1},
})
end
minetest.register_craft({
output = 'mcnodes:slab_' .. subname .. ' 6',
recipe = {
{recipeitem, recipeitem, recipeitem},
},
})
end
if replace then
minetest.register_abm({
nodenames = {"group:slabs_replace"},
interval = 16,
chance = 1,
action = function(pos, node)
node.name = minetest.registered_nodes[node.name].replace_name
node.param2 = node.param2 + 20
if node.param2 == 21 then
node.param2 = 23
elseif node.param2 == 23 then
node.param2 = 21
end
minetest.set_node(pos, node)
end,
})
end
function mcnodes.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds)
mcnodes.register_stair(subname, recipeitem, groups, images, desc_stair, sounds)
mcnodes.register_slab(subname, recipeitem, groups, images, desc_slab, sounds)
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 849 B

BIN
textures/mcnodes_anvil.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 926 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 953 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 817 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 995 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 964 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 707 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 807 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B

BIN
textures/wieldhand.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B