Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • Illuna-Minetest/plantlife_modpack
1 result
Show changes
Adds climbable vines that are spawned on trees.
-- support for i18n
local S = plantlife_i18n.gettext
vines.register_vine = function( name, defs, biome ) vines.register_vine = function( name, defs, biome )
local biome = biome
local groups = { vines=1, snappy=3, flammable=2 } local groups = { vines=1, snappy=3, flammable=2 }
local vine_name_end = 'vines:'..name..'_end' local vine_name_end = 'vines:'..name..'_end'
...@@ -61,9 +63,8 @@ vines.register_vine = function( name, defs, biome ) ...@@ -61,9 +63,8 @@ vines.register_vine = function( name, defs, biome )
end end
}) })
minetest.register_node( vine_name_middle, { minetest.register_node( vine_name_middle, {
description = "Matured "..defs.description, description = S("Matured").." "..defs.description,
walkable = false, walkable = false,
climbable = true, climbable = true,
drop = "", drop = "",
...@@ -79,12 +80,9 @@ vines.register_vine = function( name, defs, biome ) ...@@ -79,12 +80,9 @@ vines.register_vine = function( name, defs, biome )
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
selection_box = selection_box, selection_box = selection_box,
on_destruct = function( pos ) on_destruct = function( pos )
local node = minetest.get_node( pos )
local bottom = {x=pos.x, y=pos.y-1, z=pos.z} local bottom = {x=pos.x, y=pos.y-1, z=pos.z}
local bottom_node = minetest.get_node( bottom ) local bottom_node = minetest.get_node( bottom )
if minetest.get_item_group( bottom_node.name, "vines") > 0 then if minetest.get_item_group( bottom_node.name, "vines") > 0 then
-- Calling `remove_node` directly would cause
-- a stack overflow for really long vines.
minetest.after( 0, minetest.remove_node, bottom ) minetest.after( 0, minetest.remove_node, bottom )
end end
end, end,
...@@ -95,12 +93,12 @@ vines.register_vine = function( name, defs, biome ) ...@@ -95,12 +93,12 @@ vines.register_vine = function( name, defs, biome )
biome_lib:spawn_on_surfaces( biome ) biome_lib:spawn_on_surfaces( biome )
local override_nodes = function( nodes, defs ) local override_nodes = function( nodes, def )
local function override( index, registered ) local function override( index, registered )
local node = nodes[ index ] local node = nodes[ index ]
if index > #nodes then return registered end if index > #nodes then return registered end
if minetest.registered_nodes[node] then if minetest.registered_nodes[node] then
minetest.override_item( node, defs ) minetest.override_item( node, def )
registered[#registered+1] = node registered[#registered+1] = node
end end
override( index+1, registered ) override( index+1, registered )
...@@ -109,7 +107,7 @@ vines.register_vine = function( name, defs, biome ) ...@@ -109,7 +107,7 @@ vines.register_vine = function( name, defs, biome )
end end
override_nodes( biome.spawn_surfaces,{ override_nodes( biome.spawn_surfaces,{
after_destruct = function( pos ) on_destruct = function( pos )
local pos_min = { x = pos.x -1, y = pos.y - 1, z = pos.z - 1 } 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 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" ) local positions = minetest.find_nodes_in_area( pos_min, pos_max, "group:vines" )
...@@ -125,7 +123,7 @@ vines.dig_vine = function( pos, node_name, user ) ...@@ -125,7 +123,7 @@ vines.dig_vine = function( pos, node_name, user )
--only dig give the vine if shears are used --only dig give the vine if shears are used
if not user then return false end if not user then return false end
local wielded = user:get_wielded_item() local wielded = user:get_wielded_item()
if 'vines:shears' == wielded:get_name() then if 'vines:shears' == wielded:get_name() then
local inv = user:get_inventory() local inv = user:get_inventory()
if inv then if inv then
inv:add_item("main", ItemStack( node_name )) inv:add_item("main", ItemStack( node_name ))
......
...@@ -3,6 +3,9 @@ vines = { ...@@ -3,6 +3,9 @@ vines = {
recipes = {} recipes = {}
} }
-- support for i18n
local S = plantlife_i18n.gettext
dofile( minetest.get_modpath( vines.name ) .. "/functions.lua" ) dofile( minetest.get_modpath( vines.name ) .. "/functions.lua" )
dofile( minetest.get_modpath( vines.name ) .. "/aliases.lua" ) dofile( minetest.get_modpath( vines.name ) .. "/aliases.lua" )
dofile( minetest.get_modpath( vines.name ) .. "/recipes.lua" ) dofile( minetest.get_modpath( vines.name ) .. "/recipes.lua" )
...@@ -11,4 +14,4 @@ dofile( minetest.get_modpath( vines.name ) .. "/nodes.lua" ) ...@@ -11,4 +14,4 @@ dofile( minetest.get_modpath( vines.name ) .. "/nodes.lua" )
dofile( minetest.get_modpath( vines.name ) .. "/shear.lua" ) dofile( minetest.get_modpath( vines.name ) .. "/shear.lua" )
dofile( minetest.get_modpath( vines.name ) .. "/vines.lua" ) dofile( minetest.get_modpath( vines.name ) .. "/vines.lua" )
print("[Vines] Loaded!") print(S("[Vines] Loaded!"))
name = vines
-- support for i18n
local S = plantlife_i18n.gettext
minetest.register_node("vines:rope_block", { minetest.register_node("vines:rope_block", {
description = "Rope", description = S("Rope"),
sunlight_propagates = true, sunlight_propagates = true,
paramtype = "light", paramtype = "light",
tiles = { tiles = {
...@@ -30,7 +33,7 @@ minetest.register_node("vines:rope_block", { ...@@ -30,7 +33,7 @@ minetest.register_node("vines:rope_block", {
}) })
minetest.register_node("vines:rope", { minetest.register_node("vines:rope", {
description = "Rope", description = S("Rope"),
walkable = false, walkable = false,
climbable = true, climbable = true,
sunlight_propagates = true, sunlight_propagates = true,
...@@ -47,7 +50,7 @@ minetest.register_node("vines:rope", { ...@@ -47,7 +50,7 @@ minetest.register_node("vines:rope", {
}) })
minetest.register_node("vines:rope_end", { minetest.register_node("vines:rope_end", {
description = "Rope", description = S("Rope"),
walkable = false, walkable = false,
climbable = true, climbable = true,
sunlight_propagates = true, sunlight_propagates = true,
...@@ -58,7 +61,7 @@ minetest.register_node("vines:rope_end", { ...@@ -58,7 +61,7 @@ minetest.register_node("vines:rope_end", {
groups = {flammable=2, not_in_creative_inventory=1}, groups = {flammable=2, not_in_creative_inventory=1},
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
after_place_node = function(pos) after_place_node = function(pos)
yesh = {x = pos.x, y= pos.y-1, z=pos.z} local yesh = {x = pos.x, y= pos.y-1, z=pos.z}
minetest.add_node(yesh, {name="vines:rope"}) minetest.add_node(yesh, {name="vines:rope"})
end, end,
selection_box = { selection_box = {
......
vines.recipes['rope_block'] = { vines.recipes['rope_block'] = {
{'', 'default:wood', ''}, {'', 'group:wood', ''},
{'', 'group:vines', ''}, {'', 'group:vines', ''},
{'', 'group:vines', ''} {'', 'group:vines', ''}
} }
vines.recipes['shears'] = { vines.recipes['shears'] = {
{'', 'default:steel_ingot', ''}, {'', 'default:steel_ingot', ''},
{'default:stick', 'default:wood', 'default:steel_ingot'}, {'group:stick', 'group:wood', 'default:steel_ingot'},
{'', '', 'default:stick'} {'', '', 'group:stick'}
} }
vines/screenshot.png

185 KiB

-- support for i18n
local S = plantlife_i18n.gettext
minetest.register_tool("vines:shears", { minetest.register_tool("vines:shears", {
description = "Shears", description = S("Shears"),
inventory_image = "vines_shears.png", inventory_image = "vines_shears.png",
wield_image = "vines_shears.png", wield_image = "vines_shears.png",
stack_max = 1, stack_max = 1,
...@@ -8,8 +11,8 @@ minetest.register_tool("vines:shears", { ...@@ -8,8 +11,8 @@ minetest.register_tool("vines:shears", {
full_punch_interval = 1.0, full_punch_interval = 1.0,
max_drop_level=0, max_drop_level=0,
groupcaps={ groupcaps={
snappy={times={[3]=0.2}, maxwear=0.05, maxlevel=3}, snappy={times={[3]=0.2}, uses=60, maxlevel=3},
wool={times={[3]=0.2}, maxwear=0.05, maxlevel=3} wool={times={[3]=0.2}, uses=60, maxlevel=3}
} }
}, },
}) })
-- support for i18n
local S = plantlife_i18n.gettext
vines.register_vine( 'root', { vines.register_vine( 'root', {
description = "Roots", description = S("Roots"),
average_length = 9, average_length = 9,
},{ },{
choose_random_wall = true, choose_random_wall = true,
...@@ -17,7 +20,7 @@ vines.register_vine( 'root', { ...@@ -17,7 +20,7 @@ vines.register_vine( 'root', {
}) })
vines.register_vine( 'vine', { vines.register_vine( 'vine', {
description = "Vines", description = S("Vines"),
average_length = 5, average_length = 5,
},{ },{
choose_random_wall = true, choose_random_wall = true,
...@@ -26,6 +29,7 @@ vines.register_vine( 'vine', { ...@@ -26,6 +29,7 @@ vines.register_vine( 'vine', {
spawn_delay = 500, spawn_delay = 500,
spawn_chance = 100, spawn_chance = 100,
spawn_surfaces = { spawn_surfaces = {
"default:leaves",
"default:jungleleaves", "default:jungleleaves",
"moretrees:jungletree_leaves_red", "moretrees:jungletree_leaves_red",
"moretrees:jungletree_leaves_yellow", "moretrees:jungletree_leaves_yellow",
...@@ -37,16 +41,16 @@ vines.register_vine( 'vine', { ...@@ -37,16 +41,16 @@ vines.register_vine( 'vine', {
}) })
vines.register_vine( 'side', { vines.register_vine( 'side', {
description = "Vines", description = S("Vines"),
average_length = 6, average_length = 6,
},{ },{
choose_random_wall = true, choose_random_wall = true,
avoid_nodes = {"group:vines", "default:apple"}, avoid_nodes = {"group:vines", "default:apple"},
choose_random_wall = true,
avoid_radius = 3, avoid_radius = 3,
spawn_delay = 500, spawn_delay = 500,
spawn_chance = 100, spawn_chance = 100,
spawn_surfaces = { spawn_surfaces = {
"default:leaves",
"default:jungleleaves", "default:jungleleaves",
"moretrees:jungletree_leaves_red", "moretrees:jungletree_leaves_red",
"moretrees:jungletree_leaves_yellow", "moretrees:jungletree_leaves_yellow",
...@@ -58,7 +62,7 @@ vines.register_vine( 'side', { ...@@ -58,7 +62,7 @@ vines.register_vine( 'side', {
}) })
vines.register_vine( "jungle", { vines.register_vine( "jungle", {
description = "Jungle Vines", description = S("Jungle Vines"),
average_length = 7, average_length = 7,
},{ },{
choose_random_wall = true, choose_random_wall = true,
...@@ -85,7 +89,7 @@ vines.register_vine( "jungle", { ...@@ -85,7 +89,7 @@ vines.register_vine( "jungle", {
}) })
vines.register_vine( 'willow', { vines.register_vine( 'willow', {
description = "Willow Vines", description = S("Willow Vines"),
average_length = 9, average_length = 9,
},{ },{
choose_random_wall = true, choose_random_wall = true,
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
default default
biome_lib biome_lib
\ No newline at end of file plantlife_i18n
This diff is collapsed.