summaryrefslogtreecommitdiff
path: root/api.txt
diff options
context:
space:
mode:
authorTenPlus1 <kinsellaja@yahoo.com>2016-12-30 11:34:07 +0000
committerTenPlus1 <kinsellaja@yahoo.com>2016-12-30 11:34:07 +0000
commit3fb24110bc6860d2347e6f948c62bf6aae69ca74 (patch)
treec991977119798ad07d03d63e51fec7ea3f035862 /api.txt
parentef1240d5377b8ec70838c258aeca56af5d076bf2 (diff)
update api's ride horse example
Diffstat (limited to 'api.txt')
-rw-r--r--api.txt89
1 files changed, 54 insertions, 35 deletions
diff --git a/api.txt b/api.txt
index 209d3f3..139aa9e 100644
--- a/api.txt
+++ b/api.txt
@@ -314,10 +314,14 @@ mobs:register_mob("mob_horse:horse", {
mesh = "mobs_horse.x",
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.25, 0.4},
animation = {
- speed_normal = 15, speed_run = 30,
- stand_start = 25, stand_end = 75,
- walk_start = 75, walk_end = 100,
- run_start = 75, run_end = 100,
+ speed_normal = 15,
+ speed_run = 30,
+ stand_start = 25,
+ stand_end = 75,
+ walk_start = 75,
+ walk_end = 100,
+ run_start = 75,
+ run_end = 100,
},
textures = {
{"mobs_horse.png"},
@@ -342,9 +346,9 @@ mobs:register_mob("mob_horse:horse", {
{name = "mobs:meat_raw", chance = 1, min = 2, max = 3}
},
- -- custom function uses self.v2 toggle to set ride variables
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
@@ -355,55 +359,70 @@ mobs:register_mob("mob_horse:horse", {
self.driver_eye_offset = {x = 0, y = 3, z = 0}
end
- -- when riding mob call drive function to control
+ -- 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)
+ on_die = function(self, pos)
- -- check for actual player
- if not clicker or not clicker:is_player() then
- return
- end
+ -- drop saddle when horse is killed while riding
+ -- also detach from horse properly
+ if self.driver then
+ minetest.add_item(pos, "mobs:saddle")
+ mobs.detach(self.driver, {x = 1, y = 0, z = 1})
+ end
- -- used to feed, tame and heal mob
- if mobs:feed_tame(self, clicker, 10, true, true) then
- return
- end
+ end,
- -- check if mob has been tamed and player is owner
- if self.tamed and self.owner == clicker:get_player_name() then
+ on_rightclick = function(self, clicker)
- local inv = clicker:get_inventory()
+ -- make sure player is clicking
+ if not clicker or not clicker:is_player() then
+ return
+ end
- -- detach player when riding mob (add saddle to inventory)
- if self.driver and clicker == self.driver then
+ -- feed, tame or heal horse
+ if mobs:feed_tame(self, clicker, 10, true, true) then
+ return
+ end
- mobs.detach(clicker, {x = 1, y = 0, z = 1})
+ -- make sure tamed horse is being clicked by owner only
+ if self.tamed and self.owner == clicker:get_player_name() then
- if inv:room_for_item("main", "mobs:saddle") then
- inv:add_item("main", "mobs:saddle")
- else
- minetest.add_item(clicker.getpos(), "mobs:saddle")
- end
+ local inv = clicker:get_inventory()
- -- attach player to mob if not riding (take saddle from inventory)
- elseif not self.driver then
+ -- detatch player already riding horse
+ if self.driver and clicker == self.driver then
- if clicker:get_wielded_item():get_name() == "mobs:saddle" then
+ mobs.detach(clicker, {x = 1, y = 0, z = 1})
- self.object:set_properties({stepheight = 1.1})
- mobs.attach(self, clicker)
- inv:remove_item("main", "mobs:saddle")
- end
+ -- 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.getpos(), "mobs:saddle")
end
- end
- mobs:capture_mob(self, clicker, 0, 0, 80, false, nil)
+ -- attach player to horse
+ elseif not self.driver
+ and clicker:get_wielded_item():get_name() == "mobs:saddle" then
+
+ self.object:set_properties({stepheight = 1.1})
+ mobs.attach(self, clicker)
+
+ -- take saddle from inventory
+ inv:remove_item("main", "mobs:saddle")
+ end
end
+
+ -- used to capture horse with magic lasso
+ mobs:capture_mob(self, clicker, 0, 0, 80, false, nil)
+ end
})