mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2024-12-25 02:00:37 +01:00
crabman77
306efd836c
add egg for pumpking, pumpboom, ent mobs add textures pumpboom, ent inv resize texture shark inv and rename
235 lines
6.0 KiB
Lua
Executable File
235 lines
6.0 KiB
Lua
Executable File
|
|
-- Chicken by JK Murray
|
|
|
|
mobs:register_mob("mobs:chicken", {
|
|
-- animal, monster, npc, barbarian
|
|
type = "animal",
|
|
-- is it aggressive
|
|
passive = true,
|
|
-- health & armor
|
|
hp_min = 5,
|
|
hp_max = 10,
|
|
armor = 200,
|
|
-- textures and model
|
|
collisionbox = {-0.3, -0.75, -0.3, 0.3, 0.1, 0.3},
|
|
visual = "mesh",
|
|
mesh = "mobs_chicken.x",
|
|
-- seems a lot of textures but this fixes the problem with the model
|
|
textures = {
|
|
{"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png",
|
|
"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png"},
|
|
{"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png",
|
|
"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png"},
|
|
},
|
|
child_texture = {
|
|
{"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png",
|
|
"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png"},
|
|
},
|
|
blood_texture = "mobs_blood.png",
|
|
-- sounds
|
|
makes_footstep_sound = true,
|
|
sounds = {
|
|
random = "mobs_chicken",
|
|
},
|
|
-- speed and jump
|
|
walk_velocity = 1,
|
|
jump = true,
|
|
-- drops raw chicken when dead
|
|
drops = {
|
|
{name = "mobs:chicken_raw",
|
|
chance = 1, min = 2, max = 2},
|
|
},
|
|
-- damaged by
|
|
water_damage = 1,
|
|
lava_damage = 5,
|
|
light_damage = 0,
|
|
fall_damage = 0,
|
|
fall_speed = -8,
|
|
fear_height = 5,
|
|
-- model animation
|
|
animation = {
|
|
speed_normal = 15,
|
|
stand_start = 0,
|
|
stand_end = 1, -- 20
|
|
walk_start = 20,
|
|
walk_end = 40,
|
|
},
|
|
-- follows wheat
|
|
follow = {"farming:seed_wheat", "farming:seed_cotton"},
|
|
view_range = 5,
|
|
|
|
on_rightclick = function(self, clicker)
|
|
mobs:feed_tame(self, clicker, 8, true, true)
|
|
mobs:capture_mob(self, clicker, 30, 50, 80, false, nil)
|
|
end,
|
|
|
|
do_custom = function(self)
|
|
if not self.child
|
|
and math.random(1, 500) == 1 then
|
|
local pos = self.object:getpos()
|
|
minetest.add_item(pos, "mobs:egg")
|
|
minetest.sound_play("default_place_node_hard", {
|
|
pos = pos,
|
|
gain = 1.0,
|
|
max_hear_distance = 5,
|
|
})
|
|
end
|
|
end,
|
|
})
|
|
-- spawn on default or bamboo grass between 8 and 20 light, 1 in 10000 change, 1 chicken in area up to 31000 in height
|
|
mobs:spawn_specific("mobs:chicken", {"default:dirt_with_grass"}, {"air"}, 8, 20, 30, 10000, 2, -31000, 31000, true)
|
|
-- register spawn egg
|
|
mobs:register_egg("mobs:chicken", "Chicken", "mobs_chicken_inv.png", 1)
|
|
-- egg entity
|
|
|
|
mobs:register_arrow("mobs:egg_entity", {
|
|
visual = "sprite",
|
|
visual_size = {x=.5, y=.5},
|
|
textures = {"mobs_chicken_egg.png"},
|
|
velocity = 6,
|
|
|
|
hit_player = function(self, player)
|
|
player:punch(self.object, 1.0, {
|
|
full_punch_interval = 1.0,
|
|
damage_groups = {fleshy = 1},
|
|
}, nil)
|
|
end,
|
|
|
|
hit_mob = function(self, player)
|
|
player:punch(self.object, 1.0, {
|
|
full_punch_interval = 1.0,
|
|
damage_groups = {fleshy = 1},
|
|
}, nil)
|
|
end,
|
|
|
|
hit_node = function(self, pos, node)
|
|
|
|
local num = math.random(1, 10)
|
|
if num == 1 then
|
|
pos.y = pos.y + 1
|
|
local nod = minetest.get_node_or_nil(pos)
|
|
if not nod
|
|
or not minetest.registered_nodes[nod.name]
|
|
or minetest.registered_nodes[nod.name].walkable == true then
|
|
return
|
|
end
|
|
local mob = minetest.add_entity(pos, "mobs:chicken")
|
|
local ent2 = mob:get_luaentity()
|
|
mob:set_properties({
|
|
textures = ent2.child_texture[1],
|
|
visual_size = {
|
|
x = ent2.base_size.x / 2,
|
|
y = ent2.base_size.y / 2
|
|
},
|
|
collisionbox = {
|
|
ent2.base_colbox[1] / 2,
|
|
ent2.base_colbox[2] / 2,
|
|
ent2.base_colbox[3] / 2,
|
|
ent2.base_colbox[4] / 2,
|
|
ent2.base_colbox[5] / 2,
|
|
ent2.base_colbox[6] / 2
|
|
},
|
|
})
|
|
ent2.child = true
|
|
ent2.tamed = true
|
|
ent2.owner = self.playername
|
|
end
|
|
end
|
|
})
|
|
|
|
-- snowball throwing item
|
|
|
|
local egg_GRAVITY = 9
|
|
local egg_VELOCITY = 19
|
|
|
|
-- shoot snowball
|
|
local mobs_shoot_egg = function (item, player, pointed_thing)
|
|
local playerpos = player:getpos()
|
|
minetest.sound_play("default_place_node_hard", {
|
|
pos = playerpos,
|
|
gain = 1.0,
|
|
max_hear_distance = 5,
|
|
})
|
|
local obj = minetest.add_entity({
|
|
x = playerpos.x,
|
|
y = playerpos.y +1.5,
|
|
z = playerpos.z
|
|
}, "mobs:egg_entity")
|
|
local ent = obj:get_luaentity()
|
|
local dir = player:get_look_dir()
|
|
ent.velocity = egg_VELOCITY -- needed for api internal timing
|
|
ent.switch = 1 -- needed so that egg doesn't despawn straight away
|
|
obj:setvelocity({
|
|
x = dir.x * egg_VELOCITY,
|
|
y = dir.y * egg_VELOCITY,
|
|
z = dir.z * egg_VELOCITY
|
|
})
|
|
obj:setacceleration({
|
|
x = dir.x * -3,
|
|
y = -egg_GRAVITY,
|
|
z = dir.z * -3
|
|
})
|
|
-- pass player name to egg for chick ownership
|
|
local ent2 = obj:get_luaentity()
|
|
ent2.playername = player:get_player_name()
|
|
item:take_item()
|
|
return item
|
|
end
|
|
|
|
-- egg
|
|
minetest.register_node("mobs:egg", {
|
|
description = "Chicken Egg",
|
|
tiles = {"mobs_chicken_egg.png"},
|
|
inventory_image = "mobs_chicken_egg.png",
|
|
visual_scale = 0.7,
|
|
drawtype = "plantlike",
|
|
wield_image = "mobs_chicken_egg.png",
|
|
paramtype = "light",
|
|
walkable = false,
|
|
is_ground_content = true,
|
|
sunlight_propagates = true,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2}
|
|
},
|
|
groups = {snappy = 2, dig_immediate = 3},
|
|
after_place_node = function(pos, placer, itemstack)
|
|
if placer:is_player() then
|
|
minetest.set_node(pos, {name = "mobs:egg", param2 = 1})
|
|
end
|
|
end,
|
|
on_use = mobs_shoot_egg
|
|
})
|
|
|
|
-- fried egg
|
|
minetest.register_craftitem("mobs:chicken_egg_fried", {
|
|
description = "Fried Egg",
|
|
inventory_image = "mobs_chicken_egg_fried.png",
|
|
on_use = minetest.item_eat(2),
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
recipe = "mobs:egg",
|
|
output = "mobs:chicken_egg_fried",
|
|
})
|
|
|
|
-- raw chicken
|
|
minetest.register_craftitem("mobs:chicken_raw", {
|
|
description = "Raw Chicken",
|
|
inventory_image = "mobs_chicken_raw.png",
|
|
on_use = minetest.item_eat(2),
|
|
})
|
|
|
|
-- cooked chicken
|
|
minetest.register_craftitem("mobs:chicken_cooked", {
|
|
description = "Cooked Chicken",
|
|
inventory_image = "mobs_chicken_cooked.png",
|
|
on_use = minetest.item_eat(4), -- Modif MFF
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
recipe = "mobs:chicken_raw",
|
|
output = "mobs:chicken_cooked",
|
|
}) |