mod-kpgmobs/init.lua

1094 lines
25 KiB
Lua

dofile(minetest.get_modpath("kpgmobs").."/api.lua")
minetest.register_node("kpgmobs:uley", {
description = "Uley",
drawtype = "plantlike",
visual_scale = 1.0,
tiles ={"uley.png"},
inventory_image = "uley.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
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="kpgmobs:uley", param2=1})
minetest.env:add_entity(pos, "kpgmobs:bee")
end
end,
})
minetest.register_craft({
output = 'kpgmobs:uley',
recipe = {
{'kpgmobs:bee','kpgmobs:bee','kpgmobs:bee'},
}
})
--HORSE go go goooo :)
local horse = {
physical = true,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
visual = "mesh",
stepheight = 1.1,
visual_size = {x=1,y=1},
mesh = "mobs_horseh1.x",
textures = {"mobs_horseh1.png"},
driver = nil,
v = 0,
}
local function is_ground(pos)
local nn = minetest.get_node(pos).name
return minetest.get_item_group(nn, "crumbly") ~= 0
end
local function get_sign(i)
if i == 0 then
return 0
else
return i/math.abs(i)
end
end
local function get_velocity(v, yaw, y)
local x = math.cos(yaw)*v
local z = math.sin(yaw)*v
return {x=x, y=y, z=z}
end
local function get_v(v)
return math.sqrt(v.x^2+v.z^2)
end
function horse:on_rightclick(clicker)
if not clicker or not clicker:is_player() then
return
end
if self.driver and clicker == self.driver then
self.driver = nil
clicker:set_detach()
elseif not self.driver then
self.driver = clicker
clicker:set_attach(self.object, "", {x=0,y=5,z=0}, {x=0,y=0,z=0})
self.object:setyaw(clicker:get_look_yaw())
end
end
function horse:on_activate(staticdata, dtime_s)
self.object:set_armor_groups({immortal=1})
if staticdata then
self.v = tonumber(staticdata)
end
end
function horse:get_staticdata()
return tostring(v)
end
function horse:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
self.object:remove()
if puncher and puncher:is_player() then
puncher:get_inventory():add_item("main", "kpgmobs:horseh1")
end
end
function horse:on_step(dtime)
self.v = get_v(self.object:getvelocity())*get_sign(self.v)
if self.driver then
local ctrl = self.driver:get_player_control()
if ctrl.up then
self.v = self.v+2
end
if ctrl.down then
self.v = self.v-0.1
end
if ctrl.left then
self.object:setyaw(self.object:getyaw()+math.pi/120+dtime*math.pi/120)
end
if ctrl.right then
self.object:setyaw(self.object:getyaw()-math.pi/120-dtime*math.pi/120)
end
if ctrl.jump then
local p = self.object:getpos()
p.y = p.y-0.5
if is_ground(p) then
local pos = self.object:getpos()
pos.y = math.floor(pos.y)+4
self.object:setpos(pos)
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0))
end
end
end
local s = get_sign(self.v)
self.v = self.v - 0.02*s
if s ~= get_sign(self.v) then
self.object:setvelocity({x=0, y=0, z=0})
self.v = 0
return
end
if math.abs(self.v) > 4.5 then
self.v = 4.5*get_sign(self.v)
end
local p = self.object:getpos()
p.y = p.y-0.5
if not is_ground(p) then
if minetest.registered_nodes[minetest.get_node(p).name].walkable then
self.v = 0
end
self.object:setacceleration({x=0, y=-10, z=0})
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y))
else
p.y = p.y+1
if is_ground(p) then
self.object:setacceleration({x=0, y=3, z=0})
local y = self.object:getvelocity().y
if y > 2 then
y = 2
end
if y < 0 then
self.object:setacceleration({x=0, y=10, z=0})
end
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), y))
else
self.object:setacceleration({x=0, y=0, z=0})
if math.abs(self.object:getvelocity().y) < 1 then
local pos = self.object:getpos()
pos.y = math.floor(pos.y)+0.5
self.object:setpos(pos)
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0))
else
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y))
end
end
end
end
--horse white
local horsepeg = {
physical = true,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
visual = "mesh",
stepheight = 1.1,
visual_size = {x=1,y=1},
mesh = "mobs_horseh1.x",
textures = {"mobs_horsepegh1.png"},
driver = nil,
v = 0,
}
local function is_ground(pos)
local nn = minetest.get_node(pos).name
return minetest.get_item_group(nn, "crumbly") ~= 0
end
local function get_sign(i)
if i == 0 then
return 0
else
return i/math.abs(i)
end
end
local function get_velocity(v, yaw, y)
local x = math.cos(yaw)*v
local z = math.sin(yaw)*v
return {x=x, y=y, z=z}
end
local function get_v(v)
return math.sqrt(v.x^2+v.z^2)
end
function horsepeg:on_rightclick(clicker)
if not clicker or not clicker:is_player() then
return
end
if self.driver and clicker == self.driver then
self.driver = nil
clicker:set_detach()
elseif not self.driver then
self.driver = clicker
clicker:set_attach(self.object, "", {x=0,y=5,z=0}, {x=0,y=0,z=0})
self.object:setyaw(clicker:get_look_yaw())
end
end
function horsepeg:on_activate(staticdata, dtime_s)
self.object:set_armor_groups({immortal=1})
if staticdata then
self.v = tonumber(staticdata)
end
end
function horsepeg:get_staticdata()
return tostring(v)
end
function horsepeg:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
self.object:remove()
if puncher and puncher:is_player() then
puncher:get_inventory():add_item("main", "kpgmobs:horsepegh1")
end
end
function horsepeg:on_step(dtime)
self.v = get_v(self.object:getvelocity())*get_sign(self.v)
if self.driver then
local ctrl = self.driver:get_player_control()
if ctrl.up then
self.v = self.v+2
end
if ctrl.down then
self.v = self.v-0.1
end
if ctrl.left then
self.object:setyaw(self.object:getyaw()+math.pi/120+dtime*math.pi/120)
end
if ctrl.right then
self.object:setyaw(self.object:getyaw()-math.pi/120-dtime*math.pi/120)
end
if ctrl.jump then
local p = self.object:getpos()
p.y = p.y-0.5
if is_ground(p) then
local pos = self.object:getpos()
pos.y = math.floor(pos.y)+4
self.object:setpos(pos)
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0))
end
end
end
local s = get_sign(self.v)
self.v = self.v - 0.02*s
if s ~= get_sign(self.v) then
self.object:setvelocity({x=0, y=0, z=0})
self.v = 0
return
end
if math.abs(self.v) > 4.5 then
self.v = 4.5*get_sign(self.v)
end
local p = self.object:getpos()
p.y = p.y-0.5
if not is_ground(p) then
if minetest.registered_nodes[minetest.get_node(p).name].walkable then
self.v = 0
end
self.object:setacceleration({x=0, y=-10, z=0})
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y))
else
p.y = p.y+1
if is_ground(p) then
self.object:setacceleration({x=0, y=3, z=0})
local y = self.object:getvelocity().y
if y > 2 then
y = 2
end
if y < 0 then
self.object:setacceleration({x=0, y=10, z=0})
end
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), y))
else
self.object:setacceleration({x=0, y=0, z=0})
if math.abs(self.object:getvelocity().y) < 1 then
local pos = self.object:getpos()
pos.y = math.floor(pos.y)+0.5
self.object:setpos(pos)
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0))
else
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y))
end
end
end
end
--horse arabik
local horseara = {
physical = true,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
visual = "mesh",
stepheight = 1.1,
visual_size = {x=1,y=1},
mesh = "mobs_horseh1.x",
textures = {"mobs_horsearah1.png"},
driver = nil,
v = 0,
}
local function is_ground(pos)
local nn = minetest.get_node(pos).name
return minetest.get_item_group(nn, "crumbly") ~= 0
end
local function get_sign(i)
if i == 0 then
return 0
else
return i/math.abs(i)
end
end
local function get_velocity(v, yaw, y)
local x = math.cos(yaw)*v
local z = math.sin(yaw)*v
return {x=x, y=y, z=z}
end
local function get_v(v)
return math.sqrt(v.x^2+v.z^2)
end
function horseara:on_rightclick(clicker)
if not clicker or not clicker:is_player() then
return
end
if self.driver and clicker == self.driver then
self.driver = nil
clicker:set_detach()
elseif not self.driver then
self.driver = clicker
clicker:set_attach(self.object, "", {x=0,y=5,z=0}, {x=0,y=0,z=0})
self.object:setyaw(clicker:get_look_yaw())
end
end
function horseara:on_activate(staticdata, dtime_s)
self.object:set_armor_groups({immortal=1})
if staticdata then
self.v = tonumber(staticdata)
end
end
function horseara:get_staticdata()
return tostring(v)
end
function horseara:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
self.object:remove()
if puncher and puncher:is_player() then
puncher:get_inventory():add_item("main", "kpgmobs:horsearah1")
end
end
function horseara:on_step(dtime)
self.v = get_v(self.object:getvelocity())*get_sign(self.v)
if self.driver then
local ctrl = self.driver:get_player_control()
if ctrl.up then
self.v = self.v+3
end
if ctrl.down then
self.v = self.v-0.1
end
if ctrl.left then
self.object:setyaw(self.object:getyaw()+math.pi/120+dtime*math.pi/120)
end
if ctrl.right then
self.object:setyaw(self.object:getyaw()-math.pi/120-dtime*math.pi/120)
end
if ctrl.jump then
local p = self.object:getpos()
p.y = p.y-0.5
if is_ground(p) then
local pos = self.object:getpos()
pos.y = math.floor(pos.y)+4
self.object:setpos(pos)
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0))
end
end
end
local s = get_sign(self.v)
self.v = self.v - 0.02*s
if s ~= get_sign(self.v) then
self.object:setvelocity({x=0, y=0, z=0})
self.v = 0
return
end
if math.abs(self.v) > 4.5 then
self.v = 4.5*get_sign(self.v)
end
local p = self.object:getpos()
p.y = p.y-0.5
if not is_ground(p) then
if minetest.registered_nodes[minetest.get_node(p).name].walkable then
self.v = 0
end
self.object:setacceleration({x=0, y=-10, z=0})
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y))
else
p.y = p.y+1
if is_ground(p) then
self.object:setacceleration({x=0, y=3, z=0})
local y = self.object:getvelocity().y
if y > 2 then
y = 2
end
if y < 0 then
self.object:setacceleration({x=0, y=10, z=0})
end
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), y))
else
self.object:setacceleration({x=0, y=0, z=0})
if math.abs(self.object:getvelocity().y) < 1 then
local pos = self.object:getpos()
pos.y = math.floor(pos.y)+0.5
self.object:setpos(pos)
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0))
else
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y))
end
end
end
end
--END HORSE
kpgmobs:register_mob("kpgmobs:sheep", {
type = "animal",
hp_max = 5,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
textures = {"mobs_sheep.png"},
visual = "mesh",
mesh = "mobs_sheep.x",
makes_footstep_sound = true,
walk_velocity = 1,
armor = 200,
drops = {
{name = "kpgmobs:meat_raw",
chance = 1,
min = 2,
max = 3,},
},
drawtype = "front",
water_damage = 1,
lava_damage = 5,
light_damage = 0,
sounds = {
random = "mobs_sheep",
},
animation = {
speed_normal = 15,
stand_start = 0,
stand_end = 80,
walk_start = 81,
walk_end = 100,
},
follow = "farming:wheat",
view_range = 5,
on_rightclick = function(self, clicker)
local item = clicker:get_wielded_item()
if item:get_name() == "farming:wheat" then
if not self.tamed then
if not minetest.setting_getbool("creative_mode") then
item:take_item()
clicker:set_wielded_item(item)
end
self.tamed = true
elseif self.naked then
if not minetest.setting_getbool("creative_mode") then
item:take_item()
clicker:set_wielded_item(item)
end
self.food = (self.food or 0) + 1
if self.food >= 8 then
self.food = 0
self.naked = false
self.object:set_properties({
textures = {"mobs_sheep.png"},
mesh = "mobs_sheep.x",
})
end
end
return
end
if clicker:get_inventory() and not self.naked then
self.naked = true
if minetest.registered_items["wool:white"] then
clicker:get_inventory():add_item("main", ItemStack("wool:white "..math.random(1,3)))
end
self.object:set_properties({
textures = {"mobs_sheep_shaved.png"},
mesh = "mobs_sheep_shaved.x",
})
end
end,
})
kpgmobs:register_spawn("kpgmobs:sheep", {"default:dirt_with_grass"}, 20, 8, 9000, 1, 31000)
minetest.register_craftitem("kpgmobs:meat_raw", {
description = "Raw Meat",
inventory_image = "mobs_meat_raw.png",
})
minetest.register_craftitem("kpgmobs:meat", {
description = "Meat",
inventory_image = "mobs_meat.png",
on_use = minetest.item_eat(8),
})
minetest.register_craft({
type = "cooking",
output = "kpgmobs:meat",
recipe = "kpgmobs:meat_raw",
cooktime = 5,
})
kpgmobs:register_mob("kpgmobs:rat", {
type = "animal",
hp_max = 1,
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.2, 0.2},
visual = "mesh",
mesh = "mobs_rat.x",
textures = {"mobs_rat.png"},
makes_footstep_sound = false,
walk_velocity = 1,
armor = 200,
drops = {},
drawtype = "front",
water_damage = 0,
lava_damage = 1,
light_damage = 0,
on_rightclick = function(self, clicker)
if clicker:is_player() and clicker:get_inventory() then
clicker:get_inventory():add_item("main", "kpgmobs:rat")
self.object:remove()
end
end,
})
kpgmobs:register_spawn("kpgmobs:rat", {"default:dirt_with_grass", "default:stone"}, 20, -1, 7000, 1, 31000)
minetest.register_craftitem("kpgmobs:rat", {
description = "Rat",
inventory_image = "mobs_rat_inventory.png",
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.above then
minetest.env:add_entity(pointed_thing.above, "kpgmobs:rat")
itemstack:take_item()
end
return itemstack
end,
})
minetest.register_craftitem("kpgmobs:rat_cooked", {
description = "Cooked Rat",
inventory_image = "mobs_cooked_rat.png",
on_use = minetest.item_eat(3),
})
kpgmobs:register_mob("kpgmobs:bee", {
type = "animal",
hp_max = 1,
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,
walk_velocity = 1,
armor = 200,
drops = {
{name = "kpgmobs:med_cooked",
chance = 1,
min = 1,
max = 2,},
},
drawtype = "front",
water_damage = 0,
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", "kpgmobs:bee")
self.object:remove()
end
end,
})
kpgmobs:register_spawn("kpgmobs:bee", {"default:dirt_with_grass"}, 20, -1, 7000, 1, 31000)
minetest.register_craftitem("kpgmobs:bee", {
description = "bee",
inventory_image = "mobs_bee_inventar.png",
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.above then
minetest.env:add_entity(pointed_thing.above, "kpgmobs:bee")
itemstack:take_item()
end
return itemstack
end,
})
minetest.register_craftitem("kpgmobs:med_cooked", {
description = "Cooked med",
inventory_image = "mobs_med_inventar.png",
on_use = minetest.item_eat(6),
})
minetest.register_craft({
type = "cooking",
output = "kpgmobs:med_cooked",
recipe = "kpgmobs:bee",
cooktime = 5,
})
kpgmobs:register_mob("kpgmobs:deer", {
type = "animal",
hp_max = 5,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
textures = {"mobs_deer.png"},
visual = "mesh",
mesh = "mobs_deer2.x",
makes_footstep_sound = true,
walk_velocity = 1,
armor = 200,
drops = {
{name = "kpgmobs:meat_raw",
chance = 1,
min = 2,
max = 3,},
},
drawtype = "front",
water_damage = 1,
lava_damage = 5,
light_damage = 0,
animation = {
speed_normal = 15,
stand_start = 25,
stand_end = 75,
walk_start = 75,
walk_end = 100,
},
follow = "farming:wheat",
view_range = 5,
})
kpgmobs:register_spawn("kpgmobs:deer", {"default:dirt_with_grass"}, 20, 8, 9000, 1, 31000)
kpgmobs:register_mob("kpgmobs:horse", {
type = "animal",
hp_max = 5,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
textures = {"mobs_horse.png"},
visual = "mesh",
mesh = "mobs_horse.x",
makes_footstep_sound = true,
walk_velocity = 1,
armor = 200,
drops = {
{name = "kpgmobs:meat_raw",
chance = 1,
min = 2,
max = 3,},
},
drawtype = "front",
water_damage = 1,
lava_damage = 5,
light_damage = 0,
animation = {
speed_normal = 15,
stand_start = 25,
stand_end = 75,
walk_start = 75,
walk_end = 100,
},
follow = "farming:wheat",
view_range = 5,
on_rightclick = function(self, clicker)
if clicker:is_player() and clicker:get_inventory() then
clicker:get_inventory():add_item("main", "kpgmobs:horseh1")
self.object:remove()
end
end,
})
kpgmobs:register_spawn("kpgmobs:horse", {"default:dirt_with_grass"}, 20, 8, 9000, 1, 31000)
minetest.register_craftitem("kpgmobs:horseh1", {
description = "Horse",
inventory_image = "mobs_horse_inventar.png",
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.above then
minetest.env:add_entity(pointed_thing.above, "kpgmobs:horseh1")
itemstack:take_item()
end
return itemstack
end,
})
minetest.register_entity("kpgmobs:horseh1", horse)
minetest.register_craftitem("kpgmobs:horsepegh1", {
description = "HorseWhite",
inventory_image = "mobs_horse_inventar.png",
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.above then
minetest.env:add_entity(pointed_thing.above, "kpgmobs:horsepegh1")
itemstack:take_item()
end
return itemstack
end,
})
minetest.register_entity("kpgmobs:horsepegh1", horsepeg)
minetest.register_craftitem("kpgmobs:horsearah1", {
description = "HorseBlack",
inventory_image = "mobs_horse_inventar.png",
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.above then
minetest.env:add_entity(pointed_thing.above, "kpgmobs:horsearah1")
itemstack:take_item()
end
return itemstack
end,
})
minetest.register_entity("kpgmobs:horsearah1", horseara)
kpgmobs:register_mob("kpgmobs:wolf", {
type = "monster",
hp_max = 5,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
textures = {"mobs_wolf.png"},
visual = "mesh",
mesh = "mobs_wolf.x",
makes_footstep_sound = true,
view_range = 7,
walk_velocity = 2,
run_velocity = 3,
damage = 2,
armor = 200,
attack_type = "dogfight",
drops = {
{name = "kpgmobs:meat_raw",
chance = 1,
min = 2,
max = 3,},
},
drawtype = "front",
water_damage = 1,
lava_damage = 5,
light_damage = 2,
on_rightclick = nil,
animation = {
speed_normal = 15,
speed_run = 15,
stand_start = 10,
stand_end = 20,
walk_start = 75,
walk_end = 100,
run_start = 100,
run_end = 130,
punch_start = 135,
punch_end = 155,
},
})
kpgmobs:register_spawn("kpgmobs:wolf", {"default:dirt_with_grass","default:dirt","default:desert_sand"}, 10, -1, 11000, 3, 31000)
kpgmobs:register_mob("kpgmobs:pumba", {
type = "animal",
hp_max = 5,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
textures = {"mobs_pumba.png"},
visual = "mesh",
mesh = "mobs_pumba.x",
makes_footstep_sound = true,
walk_velocity = 2,
armor = 200,
drops = {
{name = "kpgmobs:meat_raw",
chance = 1,
min = 2,
max = 3,},
},
drawtype = "front",
water_damage = 1,
lava_damage = 5,
light_damage = 0,
animation = {
speed_normal = 15,
stand_start = 25,
stand_end = 55,
walk_start = 70,
walk_end = 100,
},
follow = "farming:wheat",
view_range = 5,
})
kpgmobs:register_spawn("kpgmobs:pumba", {"default:desert_sand"}, 20, 8, 9000, 1, 31000)
kpgmobs:register_mob("kpgmobs:horse3", {
type = "animal",
hp_max = 5,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
textures = {"mobs_horseara.png"},
visual = "mesh",
mesh = "mobs_horse.x",
makes_footstep_sound = true,
walk_velocity = 1,
armor = 200,
drops = {
{name = "kpgmobs:meat_raw",
chance = 1,
min = 2,
max = 3,},
},
drawtype = "front",
water_damage = 1,
lava_damage = 5,
light_damage = 0,
animation = {
speed_normal = 15,
stand_start = 25,
stand_end = 75,
walk_start = 75,
walk_end = 100,
},
follow = "farming:wheat",
view_range = 5,
on_rightclick = function(self, clicker)
if clicker:is_player() and clicker:get_inventory() then
clicker:get_inventory():add_item("main", "kpgmobs:horsearah1")
self.object:remove()
end
end,
})
kpgmobs:register_spawn("kpgmobs:horse3", {"default:desert_sand"}, 20, 8, 9000, 1, 31000)
kpgmobs:register_mob("kpgmobs:horse2", {
type = "animal",
hp_max = 5,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
textures = {"mobs_horsepeg.png"},
visual = "mesh",
mesh = "mobs_horse.x",
makes_footstep_sound = true,
walk_velocity = 1,
armor = 200,
drops = {
{name = "kpgmobs:meat_raw",
chance = 1,
min = 2,
max = 3,},
},
drawtype = "front",
water_damage = 1,
lava_damage = 5,
light_damage = 0,
animation = {
speed_normal = 15,
stand_start = 25,
stand_end = 75,
walk_start = 75,
walk_end = 100,
},
follow = "farming:wheat",
view_range = 5,
on_rightclick = function(self, clicker)
if clicker:is_player() and clicker:get_inventory() then
clicker:get_inventory():add_item("main", "kpgmobs:horsepegh1")
self.object:remove()
end
end,
})
kpgmobs:register_spawn("kpgmobs:horse2", {"default:dirt_with_grass"}, 20, 8, 10000, 1, 31000)
kpgmobs:register_mob("kpgmobs:jeraf", {
type = "animal",
hp_max = 5,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
textures = {"mobs_jeraf.png"},
visual = "mesh",
mesh = "mobs_jeraf.x",
makes_footstep_sound = true,
walk_velocity = 2,
armor = 200,
drops = {
{name = "kpgmobs:meat_raw",
chance = 1,
min = 2,
max = 3,},
},
drawtype = "front",
water_damage = 1,
lava_damage = 5,
light_damage = 0,
animation = {
speed_normal = 15,
stand_start = 0,
stand_end = 30,
walk_start = 70,
walk_end = 100,
},
follow = "farming:wheat",
view_range = 5,
})
kpgmobs:register_spawn("kpgmobs:jeraf", {"default:desert_sand"}, 20, 8, 9000, 1, 31000)
kpgmobs:register_mob("kpgmobs:medved", {
type = "animal",
hp_max = 5,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
textures = {"mobs_medved.png"},
visual = "mesh",
mesh = "mobs_medved.x",
makes_footstep_sound = true,
view_range = 7,
walk_velocity = 1,
run_velocity = 2,
damage = 10,
armor = 200,
attack_type = "dogfight",
drops = {
{name = "kpgmobs:meat_raw",
chance = 1,
min = 5,
max = 10,},
},
drawtype = "front",
water_damage = 1,
lava_damage = 5,
light_damage = 0,
on_rightclick = nil,
animation = {
speed_normal = 15,
speed_run = 15,
stand_start = 0,
stand_end = 30,
walk_start = 35,
walk_end = 65,
run_start = 105,
run_end = 135,
punch_start = 70,
punch_end = 100,
},
})
kpgmobs:register_spawn("kpgmobs:medved", {"default:dirt_with_grass","default:dirt","default:desert_sand"}, 20, 0, 11000, 3, 31000)
kpgmobs:register_mob("kpgmobs:cow", {
type = "animal",
hp_max = 5,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
textures = {"mobs_cow.png"},
visual = "mesh",
mesh = "mobs_cow.x",
makes_footstep_sound = true,
view_range = 7,
walk_velocity = 1,
run_velocity = 2,
damage = 10,
armor = 200,
drops = {
{name = "kpgmobs:meat_raw",
chance = 1,
min = 5,
max = 10,},
},
drawtype = "front",
water_damage = 1,
lava_damage = 5,
light_damage = 0,
follow = "farming:wheat",
view_range = 5,
-- ADDED TenPlus1 (right-clicking cow with empty bucket gives bucket of milk and moo sound)
on_rightclick = function(self, clicker)
tool = clicker:get_wielded_item():get_name()
if tool == "bucket:bucket_empty" then
if self.milked then
minetest.sound_play("cow", {
object = self.object,
gain = 1.0, -- default
max_hear_distance = 32, -- default
loop = false,
})
do return end
end
clicker:get_inventory():remove_item("main", "bucket:bucket_empty")
clicker:get_inventory():add_item("main", "kpgmobs:bucket_milk")
if math.random(1,2) > 1 then self.milked = true end
end
end,
animation = {
speed_normal = 15,
speed_run = 15,
stand_start = 0,
stand_end = 30,
walk_start = 35,
walk_end = 65,
run_start = 105,
run_end = 135,
punch_start = 70,
punch_end = 100,
},
})
kpgmobs:register_spawn("kpgmobs:cow", {"default:dirt_with_grass","default:dirt","default:desert_sand"}, 20, 0, 11000, 3, 31000)
-- ADDED Tenplus1 (Bucket of Milk gives 4 hearts and returns empty bucket)
minetest.register_craftitem("kpgmobs:bucket_milk", {
description = "Bucket of Milk",
inventory_image = "bucket_milk.png",
on_use = minetest.item_eat(8, "bucket:bucket_empty"),
})
if minetest.setting_get("log_mods") then
minetest.log("action", "kpgmobs loaded")
end