zlovespancakes-minetest-mod.../rope/init.lua

99 lines
2.4 KiB
Lua

--------------------------------------------------------------------------------
-- Rope
--------------------------------------------------------------------------------
-- Climbable ropes which can be extended or cut
--
-- (c)2012 Fernando Zapata (ZLovesPancakes, Franz.ZPT)
-- Code licensed under GNU GPLv2
-- http://www.gnu.org/licenses/gpl-2.0.html
-- Content licensed under CC BY-SA 3.0
-- http://creativecommons.org/licenses/by-sa/3.0/
--------------------------------------------------------------------------------
------------------------------------------------------- Node Definition --------
minetest.register_node( 'rope:rope', {
description = 'Rope',
drawtype = 'nodebox',
tiles = { 'rope_rope.png' },
paramtype = 'light',
is_ground_content = true,
walkable = false,
climbable = true,
groups = { snappy = 1, oddly_breakable_by_hand = 1 },
node_box = {
type = 'fixed',
fixed = { -0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625 }
},
selection_box = {
type = 'fixed',
fixed = { -0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625 }
},
on_place = function( stack, user, point )
if point.type ~= 'node' then return stack end
local pos = point.under
local node = minetest.env:get_node( pos )
if node.name ~= 'rope:rope' then
pos = point.above
node = minetest.env:get_node( pos )
end
while node.name == 'rope:rope' do
pos.y = pos.y - 1
node = minetest.env:get_node( pos )
end
if node.name ~= 'air' then
minetest.chat_send_player(
user:get_player_name(),
"The rope can't be longer!" )
return stack
else
point.under = pos
point.above = pos
end
return minetest.item_place( stack, user, point )
end,
on_dig = function( pos, node, user )
local code = minetest.node_dig( pos, node, user )
local count = 0
local inv = user:get_inventory()
local posb = pos
posb.y = posb.y - 1
local nodeb = minetest.env:get_node( posb )
while nodeb.name == 'rope:rope' do
minetest.env:remove_node( posb )
count = count + 1
posb.y = posb.y - 1
nodeb = minetest.env:get_node( posb )
end
inv:add_item( 'main', 'rope:rope ' .. count )
return code
end
})
------------------------------------------------------- Crafting Recipe --------
minetest.register_craft({
output = 'rope:rope 4',
recipe = {
{ 'default:junglegrass' },
{ 'default:junglegrass' },
{ 'default:junglegrass' },
}
})
--------------------------------------------------------------------------------