add tame and riding to ostrich
parent
903a57bf57
commit
7117a31a7d
|
@ -50,9 +50,91 @@ mobs:register_mob("desert_life:ostrich", {
|
||||||
},
|
},
|
||||||
follow = {"farming:seed_wheat", "farming:seed_cotton"},
|
follow = {"farming:seed_wheat", "farming:seed_cotton"},
|
||||||
view_range = 5,
|
view_range = 5,
|
||||||
replace_what = {'group:flora', 'group:plant'},
|
replace_what = {'group:flora', 'group:plant'},
|
||||||
replace_with = 'air',
|
replace_with = 'air',
|
||||||
replace_rate = 1,
|
replace_rate = 1,
|
||||||
|
do_custom = function(self, dtime)
|
||||||
|
|
||||||
|
-- set needed values if not already present
|
||||||
|
if not self.v2 then
|
||||||
|
self.v2 = 0
|
||||||
|
self.max_speed_forward = 6
|
||||||
|
self.max_speed_reverse = 2
|
||||||
|
self.accel = 6
|
||||||
|
self.terrain_type = 3
|
||||||
|
self.driver_attach_at = {x = 0, y = y_off, z = -2}
|
||||||
|
self.driver_eye_offset = {x = 0, y = 3, z = 0}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- if driver present allow control of horse
|
||||||
|
if self.driver then
|
||||||
|
|
||||||
|
mobs.drive(self, "walk", "stand", false, dtime)
|
||||||
|
|
||||||
|
return false -- skip rest of mob functions
|
||||||
|
end
|
||||||
|
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- make sure player is clicking
|
||||||
|
if not clicker or not clicker:is_player() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- feed, tame or heal horse
|
||||||
|
if mobs:feed_tame(self, clicker, 10, true, true) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- applying protection rune
|
||||||
|
if mobs:protect(self, clicker) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- make sure tamed horse is being clicked by owner only
|
||||||
|
if self.tamed and self.owner == clicker:get_player_name() then
|
||||||
|
|
||||||
|
local inv = clicker:get_inventory()
|
||||||
|
local tool = clicker:get_wielded_item()
|
||||||
|
local item = tool:get_name()
|
||||||
|
|
||||||
|
-- detatch player already riding horse
|
||||||
|
if self.driver and clicker == self.driver then
|
||||||
|
|
||||||
|
mobs.detach(clicker, {x = 1, y = 0, z = 1})
|
||||||
|
|
||||||
|
-- add saddle back to inventory
|
||||||
|
if inv:room_for_item("main", "mobs:saddle") then
|
||||||
|
inv:add_item("main", "mobs:saddle")
|
||||||
|
else
|
||||||
|
minetest.add_item(clicker:get_pos(), "mobs:saddle")
|
||||||
|
end
|
||||||
|
|
||||||
|
self.saddle = nil
|
||||||
|
|
||||||
|
-- attach player to horse
|
||||||
|
elseif (not self.driver and not self.child
|
||||||
|
and clicker:get_wielded_item():get_name() == "mobs:saddle")
|
||||||
|
or self.saddle then
|
||||||
|
|
||||||
|
self.object:set_properties({stepheight = 1.1})
|
||||||
|
mobs.attach(self, clicker)
|
||||||
|
|
||||||
|
-- take saddle from inventory
|
||||||
|
if not self.saddle then
|
||||||
|
inv:remove_item("main", "mobs:saddle")
|
||||||
|
end
|
||||||
|
|
||||||
|
self.saddle = true
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
-- used to capture horse with magic lasso
|
||||||
|
mobs:capture_mob(self, clicker, 0, 0, 80, false, nil)
|
||||||
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
mobs:spawn({
|
mobs:spawn({
|
||||||
|
@ -64,3 +146,6 @@ mobs:spawn({
|
||||||
chance = 10000,
|
chance = 10000,
|
||||||
active_object_count = 5,
|
active_object_count = 5,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
mobs:register_egg("desert_life:ostrich", "Ostrich", "wool.png^[multiply:#40230f", 1)
|
||||||
|
|
Loading…
Reference in New Issue