mirror of
https://github.com/minetest-mods/ropes.git
synced 2025-02-15 09:32:24 +01:00
API Update + new vine
- Defines biome in the vines_register function. Thus spawning.lua can be removed. - Vines destroy when a nearby( 3x3 ) leave is dug. They do not drop. To gather vines one still has to use the shears. - Soft depends on moretrees. Allows the overriding of the leave nodes. This is required for removing th vines when the leaves destruct. - Registered a new vine named "vines:jungle" Spawns on jungle tree trunks. Either on the moretrees jungles and the default jungletree nodes. - Textures for the jungle vines.
This commit is contained in:
@ -1,2 +1,3 @@
|
||||
default
|
||||
plants_lib
|
||||
moretrees?
|
||||
|
@ -1,8 +1,9 @@
|
||||
vines.register_vine = function( name, defs )
|
||||
vines.register_vine = function( name, defs, biome )
|
||||
--different properties for bottom and side vines.
|
||||
local drop_node = 'vines:'..name
|
||||
local drawtype = ''
|
||||
local selection_box
|
||||
if ( defs.is_side_vine ) then
|
||||
if ( biome.spawn_on_side ) then
|
||||
selection_box = {
|
||||
type = "wallmounted",
|
||||
}
|
||||
@ -15,7 +16,9 @@ vines.register_vine = function( name, defs )
|
||||
drawtype = 'plantlike'
|
||||
end
|
||||
|
||||
minetest.register_node("vines:"..name, {
|
||||
biome.spawn_plants = { "vines:"..name }
|
||||
|
||||
minetest.register_node( "vines:"..name, {
|
||||
description = defs.description,
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
@ -49,7 +52,7 @@ vines.register_vine = function( name, defs )
|
||||
end
|
||||
end,
|
||||
after_dig_node = function(pos, node, oldmetadata, user)
|
||||
vines.dig_vine( pos, node, user )
|
||||
vines.dig_vine( pos, drop_node, user )
|
||||
end
|
||||
})
|
||||
|
||||
@ -79,20 +82,48 @@ vines.register_vine = function( name, defs )
|
||||
minetest.remove_node( bottom )
|
||||
end
|
||||
end,
|
||||
after_dig_node = function(pos, node, oldmetadata, user)
|
||||
vines.dig_vine( pos, node, user )
|
||||
after_dig_node = function( pos, node, oldmetadata, user )
|
||||
vines.dig_vine( pos, drop_node, user )
|
||||
end
|
||||
})
|
||||
|
||||
plantslib:spawn_on_surfaces( biome )
|
||||
|
||||
local override_nodes = function( nodes, defs )
|
||||
function override( index, registered )
|
||||
local node = nodes[ index ]
|
||||
if index > #nodes then return registered end
|
||||
if minetest.registered_nodes[node] then
|
||||
print('overiding: '..node)
|
||||
minetest.override_item( node, defs )
|
||||
registered[#registered+1] = node
|
||||
end
|
||||
override( index+1, registered )
|
||||
end
|
||||
override( 1, {} )
|
||||
end
|
||||
|
||||
override_nodes( biome.spawn_surfaces,{
|
||||
after_destruct = function( pos )
|
||||
local pos_min = { x = pos.x -1, y = pos.y - 1, z = pos.z - 1 }
|
||||
local pos_max = { x = pos.x +1, y = pos.y + 1, z = pos.z + 1 }
|
||||
local positions = minetest.find_nodes_in_area( pos_min, pos_max, "group:vines" )
|
||||
for index, position in pairs(positions) do
|
||||
minetest.remove_node( position )
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
end
|
||||
|
||||
vines.dig_vine = function( pos, node, user )
|
||||
vines.dig_vine = function( pos, node_name, user )
|
||||
--only dig give the vine if shears are used
|
||||
if not user then return false end
|
||||
local wielded = user:get_wielded_item()
|
||||
if 'vines:shears' == wielded:get_name() then
|
||||
local inv = user:get_inventory()
|
||||
if inv then
|
||||
inv:add_item("main", ItemStack(node.name))
|
||||
inv:add_item("main", ItemStack( node_name ))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
47
spawning.lua
47
spawning.lua
@ -1,47 +0,0 @@
|
||||
plantslib:spawn_on_surfaces({
|
||||
avoid_nodes = {"vines:vine"},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_plants = {"vines:vine"},
|
||||
spawn_chance = 10,
|
||||
spawn_surfaces = {"default:dirt_with_grass","default:dirt"},
|
||||
spawn_on_bottom = true,
|
||||
plantlife_limit = -0.9,
|
||||
})
|
||||
|
||||
plantslib:spawn_on_surfaces({
|
||||
avoid_nodes = {"vines:root"},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_plants = {"vines:vine"},
|
||||
spawn_chance = 10,
|
||||
spawn_surfaces = {"default:dirt_with_grass","default:dirt"},
|
||||
spawn_on_bottom = true,
|
||||
plantlife_limit = -0.9,
|
||||
})
|
||||
|
||||
plantslib:spawn_on_surfaces({
|
||||
avoid_nodes = {"vines:vine", "vines:side"},
|
||||
avoid_radius = 3,
|
||||
spawn_delay = 300,
|
||||
spawn_plants = {"vines:side"},
|
||||
spawn_chance = 10,
|
||||
spawn_surfaces = {}, --TODO
|
||||
spawn_on_side = true,
|
||||
near_nodes = {"default:jungletree"},
|
||||
near_nodes_size = 5,
|
||||
plantlife_limit = -0.9,
|
||||
})
|
||||
|
||||
plantslib:spawn_on_surfaces({
|
||||
spawn_plants = {"vines:willow"},
|
||||
spawn_delay = 200,
|
||||
spawn_chance = 3,
|
||||
spawn_surfaces = {"moretrees:willow_leaves"},
|
||||
spawn_on_side = true,
|
||||
near_nodes = {"default:water_source"},
|
||||
near_nodes_size = 2,
|
||||
near_nodes_vertical = 5,
|
||||
near_nodes_count = 1,
|
||||
plantlife_limit = -0.9,
|
||||
})
|
BIN
textures/vines_jungle.png
Normal file
BIN
textures/vines_jungle.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 497 B |
BIN
textures/vines_jungle_rotten.png
Normal file
BIN
textures/vines_jungle_rotten.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 481 B |
103
vines.lua
103
vines.lua
@ -1,23 +1,102 @@
|
||||
vines.register_vine( 'vine', {
|
||||
description = "Vines",
|
||||
is_side_vine = false,
|
||||
average_length = 9
|
||||
})
|
||||
|
||||
vines.register_vine( 'root', {
|
||||
description = "Roots",
|
||||
is_side_vine = false,
|
||||
average_length = 5
|
||||
average_length = 9,
|
||||
},{
|
||||
avoid_nodes = {"vines:root_rotten"},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 10,
|
||||
spawn_surfaces = {
|
||||
"default:dirt_with_grass",
|
||||
"default:dirt"
|
||||
},
|
||||
spawn_on_bottom = true,
|
||||
plantlife_limit = -0.1,
|
||||
temp_max = -0.6,
|
||||
temp_min = 0.2,
|
||||
humidity_max = -0.7,
|
||||
humidity_min = 0.2,
|
||||
})
|
||||
|
||||
vines.register_vine( 'vine', {
|
||||
description = "Vines",
|
||||
average_length = 5,
|
||||
},{
|
||||
avoid_nodes = {"group:vines"},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 100,
|
||||
spawn_surfaces = {
|
||||
"default:leaves",
|
||||
"default:jungleleave",
|
||||
"moretrees:jungetree_leaves_red",
|
||||
"moretrees:jungetree_leaves_yellow",
|
||||
"moretrees:jungetree_leaves_green"
|
||||
},
|
||||
spawn_on_bottom = true,
|
||||
plantlife_limit = -0.9,
|
||||
humidity_max = -1,
|
||||
humidity_min = 0.8,
|
||||
temp_max = -0.5,
|
||||
temp_min = 0.3,
|
||||
})
|
||||
|
||||
vines.register_vine( 'side', {
|
||||
description = "Vines",
|
||||
is_side_vine = true,
|
||||
average_length = 7
|
||||
average_length = 7,
|
||||
},{
|
||||
avoid_nodes = {"group:vines"},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 100,
|
||||
spawn_surfaces = {
|
||||
"default:leaves",
|
||||
"default:jungleleave",
|
||||
"moretrees:jungetree_leaves_red",
|
||||
"moretrees:jungetree_leaves_yellow",
|
||||
"moretrees:jungetree_leaves_green"
|
||||
},
|
||||
spawn_on_side = true,
|
||||
plantlife_limit = -0.9,
|
||||
humidity_max = 1,
|
||||
humidity_min = 0.8,
|
||||
temp_min = 0.1,
|
||||
temp_max = 1,
|
||||
})
|
||||
|
||||
vines.register_vine( 'jungle', {
|
||||
description = "Jungle Vines",
|
||||
average_length = 7,
|
||||
},{
|
||||
avoid_nodes = {"group:vines"},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 100,
|
||||
spawn_surfaces = {
|
||||
"default:jungletree",
|
||||
"moretrees:jungletree_trunk"
|
||||
},
|
||||
spawn_on_side = true,
|
||||
plantlife_limit = -0.9,
|
||||
humidity_max = 1,
|
||||
humidity_min = 0.8,
|
||||
temp_min = 0.1,
|
||||
temp_max = 1,
|
||||
})
|
||||
|
||||
vines.register_vine( 'willow', {
|
||||
description = "Willow Vines",
|
||||
is_side_vine = true,
|
||||
average_length = 9
|
||||
average_length = 9,
|
||||
},{
|
||||
avoid_nodes = {"vines:willow", "vines:willow_rotten"},
|
||||
avoid_radius = 5,
|
||||
spawn_delay = 500,
|
||||
spawn_chance = 100,
|
||||
spawn_surfaces = {"moretrees:willow_leaves"},
|
||||
spawn_on_side = true,
|
||||
plantlife_limit = -0.9,
|
||||
humidity_max = 1,
|
||||
humidity_min = 0.8,
|
||||
temp_min = 0.1,
|
||||
temp_max = 1,
|
||||
})
|
||||
|
Reference in New Issue
Block a user