2015-04-13 11:06:55 +02:00

144 lines
3.3 KiB
Lua

-- Bee
mobs:register_mob("mobs:bee", {
type = "monster",
hp_min = 1,
hp_max = 2,
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.2, 0.2},
visual = "mesh",
mesh = "mobs_bee.x",
textures = {"mobs_bee.png"},
makes_footstep_sound = false,
monsterdetect = false,
walk_velocity = 1,
run_velocity = 6,
view_range = 12,
armor = 100,
damage = 4,
attack_type = "dogfight",
owner = "", -- rnd
lifetimer = 200, -- rnd
gravity = 0.2, -- rnd
drops = {
{name = "mobs:med_cooked",
chance = 1,
min = 1,
max = 2,},
},
drawtype = "front",
water_damage = 1,
lava_damage = 1,
light_damage = 0,
animation = {
speed_normal = 15,
stand_start = 0,
stand_end = 30,
walk_start = 35,
walk_end = 65,
},
on_rightclick = function(self, clicker)
if clicker:is_player() and clicker:get_inventory() then
clicker:get_inventory():add_item("main", "mobs:bee")
self.object:remove()
end
end,
jump = true,
step = 1,
passive = false,
})
mobs:register_spawn("mobs:bee", {"group:flower", "default:dirt_with_grass","default:dirt"}, 20, -1, 700, 10, 31000)
minetest.register_craftitem("mobs:bee", {
description = "bee",
inventory_image = "mobs_bee_inv.png",
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.above then
local obj = minetest.env:add_entity(pointed_thing.above, "mobs:bee") -- rnd
local entity = obj:get_luaentity();
entity.owner = placer:get_player_name();
itemstack:take_item()
end
return itemstack
end,
})
-- Honey
minetest.register_craftitem("mobs:honey", {
description = "Honey",
inventory_image = "mobs_honey_inv.png",
on_use = minetest.item_eat(6),
})
minetest.register_craft({
type = "cooking",
output = "mobs:honey", --rnd "mobs:med_cooked",
recipe = "mobs:bee",
cooktime = 5,
})
-- Beehive
minetest.register_node("mobs:beehive", {
description = "Beehive",
drawtype = "plantlike",
visual_scale = 1.0,
tiles ={"mobs_beehive.png"},
inventory_image = "mobs_beehive.png",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
groups = {fleshy=3,dig_immediate=3},
on_use = minetest.item_eat(4),
sounds = default.node_sound_defaults(),
after_place_node = function(pos, placer, itemstack)
if placer:is_player() then
minetest.set_node(pos, {name="mobs:beehive", param2=1})
local meta = minetest.get_meta(pos);meta:set_string("owner",placer:get_player_name())
local obj = minetest.env:add_entity(pos, "mobs:bee")-- rnd
local entity = obj:get_luaentity();
entity.owner = placer:get_player_name();
end
end,
})
minetest.register_abm({
nodenames = "mobs:beehive",
neighbors = {"air"},
interval = 20,
chance = 5,
action = function(pos, node, active_object_count, active_object_count_wider)
if active_object_count_wider > 30 then -- no more than 30 bees
return
end
local objs = minetest.env:get_objects_inside_radius(pos,8)
local meta = minetest.get_meta(pos);local owner = meta:get_string("owner");
local calm = false
for _, o in pairs(objs) do
if (o:is_player()) then
if o:get_player_name()==owner then calm = true break end
end
end
if not calm then
local obj = minetest.env:add_entity(pos, "mobs:bee")
local entity = obj:get_luaentity();
entity.owner = owner;
end
end
})
minetest.register_craft({
output = "mobs:beehive",
recipe = {
{"mobs:bee","mobs:bee","mobs:bee"},
}
})