339 lines
No EOL
10 KiB
Lua
339 lines
No EOL
10 KiB
Lua
function ma_pops_furniture.register_hedge(name, def)
|
|
|
|
-- register nodes
|
|
if minetest.get_modpath("default") then
|
|
def.sounds = def.sounds or default.node_sound_leaves_defaults()
|
|
end
|
|
|
|
minetest.register_node(name, {
|
|
description = def.description or "Hedge",
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
tiles = {def.texture},
|
|
groups = def.groups or
|
|
{snappy = 3, flammable = 2, leaves = 1, hedge = 1},
|
|
waving = 1,
|
|
node_box = {
|
|
type = "connected",
|
|
fixed = {{-5/16, -0.5, -5/16, 5/16, 5/16, 5/16}},
|
|
connect_left = {{-0.5, -0.5, -5/16, -5/16, 5/16, 5/16}},
|
|
connect_right = {{5/16, -0.5, -5/16, 0.5, 5/16, 5/16}},
|
|
connect_front = {{-5/16, -0.5, -0.5, 5/16, 5/16, -5/16}},
|
|
connect_back = {{-5/16, -0.5, 5/16, 5/16, 5/16, 0.5}},
|
|
},
|
|
connects_to = {"group:fence", "group:wood", "group:tree", "group:hedge"},
|
|
light_source = def.light_source or 0,
|
|
sounds = def.sounds,
|
|
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
|
local pos_under = {x = pos.x, y = pos.y - 1, z = pos.z}
|
|
local pos_above = {x = pos.x, y = pos.y + 1, z = pos.z}
|
|
local node_under = string.gsub(minetest.get_node(pos_under).name, "_full$", "")
|
|
local node_above = string.gsub(minetest.get_node(pos_above).name, "_full$", "")
|
|
|
|
if minetest.get_item_group(node_under, "hedge") == 1 then
|
|
minetest.set_node(pos_under, {name = node_under .. "_full"})
|
|
end
|
|
if minetest.get_item_group(node_above, "hedge") == 1 then
|
|
minetest.set_node(pos, {name = name .. "_full"})
|
|
end
|
|
end,
|
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
|
local pos_under = {x = pos.x, y = pos.y - 1, z = pos.z}
|
|
local node_under = string.gsub(minetest.get_node(pos_under).name, "_full$", "")
|
|
if minetest.get_item_group(node_under, "hedge") == 1 and
|
|
digger and digger:is_player() then
|
|
minetest.set_node(pos_under, {name = node_under})
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_node(name .. "_full", {
|
|
description = def.description or "Hedge",
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
tiles = {def.texture},
|
|
groups = def.groups or
|
|
{snappy = 3, flammable = 2, leaves = 1, hedge = 1,
|
|
not_in_creative_inventory = 1},
|
|
waving = 1,
|
|
node_box = {
|
|
type = "connected",
|
|
fixed = {{-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}},
|
|
connect_left = {{-0.5, -0.5, -5/16, -5/16, 0.5, 5/16}},
|
|
connect_right = {{5/16, -0.5, -5/16, 0.5, 0.5, 5/16}},
|
|
connect_front = {{-5/16, -0.5, -0.5, 5/16, 0.5, -5/16}},
|
|
connect_back = {{-5/16, -0.5, 5/16, 5/16, 0.5, 0.5}},
|
|
},
|
|
connects_to = {"group:fence", "group:wood", "group:tree", "group:hedge"},
|
|
light_source = def.light_source or 0,
|
|
sounds = def.sounds,
|
|
drop = name,
|
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
|
local pos_under = {x = pos.x, y = pos.y - 1, z = pos.z}
|
|
local node_under = string.gsub(minetest.get_node(pos_under).name, "_full$", "")
|
|
if minetest.get_item_group(node_under, "hedge") == 1 and
|
|
digger and digger:is_player() then
|
|
minetest.set_node(pos_under, {name = node_under})
|
|
end
|
|
end,
|
|
})
|
|
|
|
-- register crafting recipe
|
|
minetest.register_craft({
|
|
output = name .. " 4",
|
|
recipe = {
|
|
{def.material, def.material, def.material},
|
|
{def.material, def.material, def.material},
|
|
}
|
|
})
|
|
end
|
|
|
|
|
|
-- register hedges if default mod found
|
|
if minetest.get_modpath("default") then
|
|
|
|
ma_pops_furniture.register_hedge("ma_pops_furniture:apple_hedge", {
|
|
description = "Apple Hedge",
|
|
texture = "default_leaves.png",
|
|
material = "default:leaves",
|
|
})
|
|
|
|
ma_pops_furniture.register_hedge("ma_pops_furniture:jungle_hedge", {
|
|
description = "Jungle Hedge",
|
|
texture = "default_jungleleaves.png",
|
|
material = "default:jungleleaves",
|
|
})
|
|
|
|
ma_pops_furniture.register_hedge("ma_pops_furniture:pine_hedge", {
|
|
description = "Pine Hedge",
|
|
texture = "default_pine_needles.png",
|
|
material = "default:pine_needles",
|
|
})
|
|
|
|
ma_pops_furniture.register_hedge("ma_pops_furniture:acacia_hedge", {
|
|
description = "Acacia Hedge",
|
|
texture = "default_acacia_leaves.png",
|
|
material = "default:acacia_leaves",
|
|
})
|
|
|
|
ma_pops_furniture.register_hedge("ma_pops_furniture:aspen_hedge", {
|
|
description = "Aspen Hedge",
|
|
texture = "default_aspen_leaves.png",
|
|
material = "default:aspen_leaves",
|
|
})
|
|
|
|
end
|
|
|
|
|
|
-- alternative recipes using bush leaves
|
|
minetest.register_craft({
|
|
output = "hedges:apple_hedge 4",
|
|
recipe = {
|
|
{"default:bush_leaves", "default:bush_leaves", "default:bush_leaves"},
|
|
{"default:bush_leaves", "default:bush_leaves", "default:bush_leaves"},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "hedges:acacia_hedge 4",
|
|
recipe = {
|
|
{"default:acacia_bush_leaves", "default:acacia_bush_leaves", "default:acacia_bush_leaves"},
|
|
{"default:acacia_bush_leaves", "default:acacia_bush_leaves", "default:acacia_bush_leaves"},
|
|
}
|
|
})
|
|
|
|
minetest.register_node('ma_pops_furniture:birdbath', {
|
|
description = 'Birdbath',
|
|
drawtype = 'mesh',
|
|
mesh = 'FM_birdbath.obj',
|
|
tiles = {{name='default_stone.png'},{name='default_water_source_animated.png', animation={type='vertical_frames', aspect_w=16, aspect_h=16, length=2.0}}},
|
|
groups = {cracky=2, oddly_breakable_by_hand=5, furniture=1},
|
|
paramtype = 'light',
|
|
paramtype2 = 'facedir',
|
|
sounds = moditems.STONE_SOUNDS,
|
|
})
|
|
|
|
minetest.register_node('ma_pops_furniture:doorbell', {
|
|
description = 'Doorbell',
|
|
drawtype = 'nodebox',
|
|
tiles = {
|
|
"mp_db_top.png",
|
|
"mp_db_top.png",
|
|
"mp_db_right.png",
|
|
"mp_db_left.png",
|
|
"default_wood.png",
|
|
"mp_db_front.png"
|
|
},
|
|
groups = {cracky=2, oddly_breakable_by_hand=5, furniture=1},
|
|
paramtype = 'light',
|
|
paramtype2 = 'facedir',
|
|
sounds = moditems.STONE_SOUNDS,
|
|
on_rightclick = function(pos, node, clicker, itemstack)
|
|
node.name = "ma_pops_furniture:doorbell_ring"
|
|
minetest.swap_node(pos, node)
|
|
-- one second ring.
|
|
minetest.get_node_timer(pos):start(1.0)
|
|
end,
|
|
sounds = moditems.STONE_SOUNDS,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.125, -0.375, 0.4375, 0.125, -0.125, 0.5},
|
|
{-0.0625, -0.3125, 0.375, 0.0625, -0.1875, 0.4375},
|
|
},
|
|
}
|
|
})
|
|
|
|
minetest.register_node('ma_pops_furniture:doorbell_ring', {
|
|
description = 'Doorbell (ring)',
|
|
drawtype = 'nodebox',
|
|
tiles = {
|
|
"mp_db_top.png",
|
|
"mp_db_top.png",
|
|
"mp_db_right.png",
|
|
"mp_db_left.png",
|
|
"default_wood.png",
|
|
"mp_db_front.png"
|
|
},
|
|
groups = {cracky=2, oddly_breakable_by_hand=5, furniture=1, not_in_creative_inventory=1},
|
|
drop = 'ma_pops_furniture:doorbell',
|
|
on_timer = function(pos,elapsed)
|
|
local node = minetest.get_node(pos)
|
|
node.name = "ma_pops_furniture:doorbell"
|
|
minetest.swap_node(pos, node)
|
|
end,
|
|
paramtype = 'light',
|
|
paramtype2 = 'facedir',
|
|
sounds = moditems.STONE_SOUNDS,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.125, -0.375, 0.4375, 0.125, -0.125, 0.5},
|
|
{-0.0625, -0.3125, 0.375, 0.0625, -0.1875, 0.4375},
|
|
},
|
|
}
|
|
})
|
|
|
|
|
|
minetest.register_node('ma_pops_furniture:stone_path_1', {
|
|
description = 'Stone Path',
|
|
drawtype = 'mesh',
|
|
mesh = 'FM_stone_path_1.obj',
|
|
tiles = {'default_stone.png'},
|
|
groups = {cracky=2, oddly_breakable_by_hand=5, furniture=1},
|
|
paramtype = 'light',
|
|
paramtype2 = 'facedir',
|
|
sounds = moditems.STONE_SOUNDS,
|
|
selection_box = {
|
|
type = 'fixed',
|
|
fixed = {-.5, -.5, -.5, .5, -.4, .5},
|
|
},
|
|
collision_box = {
|
|
type = 'fixed',
|
|
fixed = {-.5, -.5, -.5, .5, -.4, .5},
|
|
},
|
|
on_place = function(itemstack, placer, pointed_thing)
|
|
local stack = ItemStack("ma_pops_furniture:stone_path_" .. math.random(1,4))
|
|
local ret = minetest.item_place(stack, placer, pointed_thing)
|
|
return ItemStack("ma_pops_furniture:stone_path_1 " ..
|
|
itemstack:get_count() - (1 - ret:get_count()))
|
|
end,
|
|
})
|
|
|
|
for i = 2, 4 do
|
|
minetest.register_node('ma_pops_furniture:stone_path_'..i, {
|
|
description = 'Stone Path',
|
|
drawtype = 'mesh',
|
|
mesh = 'FM_stone_path_'..i..'.obj',
|
|
tiles = {'default_stone.png'},
|
|
groups = {cracky=2, oddly_breakable_by_hand=5, furniture=1, not_in_creative_inventory=1},
|
|
paramtype = 'light',
|
|
paramtype2 = 'facedir',
|
|
sounds = moditems.STONE_SOUNDS,
|
|
drop = 'ma_pops_furniture:stone_path_1',
|
|
selection_box = {
|
|
type = 'fixed',
|
|
fixed = {-.5, -.5, -.5, .5, -.4, .5},
|
|
},
|
|
collision_box = {
|
|
type = 'fixed',
|
|
fixed = {-.5, -.5, -.5, .5, -.4, .5},
|
|
},
|
|
})
|
|
end
|
|
|
|
minetest.register_node("ma_pops_furniture:outdoor_lamp", {
|
|
description = "Outdoor Lamp",
|
|
tiles = {
|
|
"default_stone.png",
|
|
"default_stone.png^mp_light_off.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
sounds = moditems.STONE_SOUNDS,
|
|
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:outdoor_lamp_on"
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.125, 0.25, -0.125, 0.125, 0.5, 0.125},
|
|
},
|
|
}
|
|
})
|
|
|
|
minetest.register_node("ma_pops_furniture:outdoor_lamp_on", {
|
|
description = "Outdoor Lamp On",
|
|
tiles = {
|
|
"default_stone.png",
|
|
"default_stone.png^mp_light_on.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
light_source = 14,
|
|
drop = 'ma_pops_furniture:outdoor_lamp',
|
|
sounds = moditems.STONE_SOUNDS,
|
|
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:outdoor_lamp"
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, not_in_creative_inventory = 1},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.125, 0.25, -0.125, 0.125, 0.5, 0.125},
|
|
},
|
|
}
|
|
})
|
|
|
|
minetest.register_node("ma_pops_furniture:trampoline", {
|
|
description = "Trampoline",
|
|
tiles = {"mp_trampoline_top.png", "default_coal_block.png", "mp_trampoline_side.png"},
|
|
drawtype="nodebox",
|
|
paramtype2="facedir",
|
|
paramtype="light",
|
|
groups = {cracky=3, oddly_breakable_by_hand=1, fall_damage_add_percent=-80, bouncy=90},
|
|
sounds = {wood = {name="xdecor_bouncy", gain=0.8}},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.3125, -0.5, 0.5, 0, 0.5}, -- NodeBox1
|
|
{0.1875, -0.5, 0.1875, 0.5, -0.3125, 0.5}, -- NodeBox2
|
|
{-0.5, -0.5, 0.1875, -0.1875, -0.3125, 0.5}, -- NodeBox3
|
|
{-0.5, -0.5, -0.5, -0.1875, -0.3125, -0.1875}, -- NodeBox4
|
|
{0.1875, -0.5, -0.5, 0.5, -0.3125, -0.1875}, -- NodeBox5
|
|
},
|
|
}
|
|
}) |