2016-04-15 19:37:28 +02:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
Mobs Redo API
|
|
|
|
|
=============
|
|
|
|
|
|
|
|
|
|
Welcome to the world of mobs in minetest and hopefully an easy guide to defining
|
|
|
|
|
your own mobs and having them appear in your worlds.
|
|
|
|
|
|
|
|
|
|
|
2022-10-01 08:17:07 +02:00
|
|
|
|
Quick Note
|
|
|
|
|
----------
|
|
|
|
|
|
|
|
|
|
Since the mobs redo api checks for nodes around the mob to function, it relies on a
|
|
|
|
|
default node incase anything goes wrong, so in the default game this is default:dirt
|
|
|
|
|
but for any custom game please make sure the following line is registered with your
|
|
|
|
|
preferred dirt node of choice:
|
|
|
|
|
|
|
|
|
|
minetest.register_alias("mapgen_dirt", "mymod:my_dirt_node")
|
|
|
|
|
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
Registering Mobs
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
To register a mob and have it ready for use requires the following function:
|
|
|
|
|
|
|
|
|
|
mobs:register_mob(name, definition)
|
|
|
|
|
|
|
|
|
|
The 'name' of a mob usually starts with the mod name it's running from followed
|
|
|
|
|
by it's own name e.g.
|
|
|
|
|
|
|
|
|
|
"mobs_monster:sand_monster" or "mymod:totally_awesome_beast"
|
|
|
|
|
|
|
|
|
|
... and the 'definition' is a table which holds all of the settings and
|
|
|
|
|
functions needed for the mob to work properly which contains the following:
|
|
|
|
|
|
|
|
|
|
'type' holds the type of mob that inhabits your world e.g.
|
|
|
|
|
"animal" usually docile and walking around.
|
|
|
|
|
"monster" attacks player or npc on sight.
|
|
|
|
|
"npc" walk around and will defend themselves if hit first, they
|
|
|
|
|
kill monsters.
|
|
|
|
|
'hp_min' has the minimum health value the mob can spawn with.
|
|
|
|
|
'hp_max' has the maximum health value the mob can spawn with.
|
|
|
|
|
'armor' holds strength of mob, 100 is normal, lower is more powerful
|
|
|
|
|
and needs more hits and better weapons to kill.
|
2020-07-20 08:36:39 +02:00
|
|
|
|
'passive' when false allows animals to defend themselves when hit,
|
2018-01-26 12:13:59 +01:00
|
|
|
|
otherwise they amble onwards.
|
|
|
|
|
'walk_velocity' is the speed that your mob can walk around.
|
|
|
|
|
'run_velocity' is the speed your mob can run with, usually when attacking.
|
2019-04-30 12:27:26 +02:00
|
|
|
|
'stand_chance' has a 0-100 chance value your mob will stand from walking.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'walk_chance' has a 0-100 chance value your mob will walk from standing,
|
|
|
|
|
set to 0 for jumping mobs only.
|
2020-07-17 21:58:52 +02:00
|
|
|
|
'randomly_turn' if set to false then mob will not turn to face player or
|
|
|
|
|
randomly turn while walking or standing.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'jump' when true allows your mob to jump updwards.
|
|
|
|
|
'jump_height' holds the height your mob can jump, 0 to disable jumping.
|
2022-07-12 09:37:38 +02:00
|
|
|
|
'can_leap' when true obstacles like fences or pits wont stop a mob
|
|
|
|
|
from trying to jump out.
|
2018-01-27 16:29:15 +01:00
|
|
|
|
'stepheight' height of a block that your mob can easily walk up onto,
|
|
|
|
|
defaults to 1.1.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'fly' when true allows your mob to fly around instead of walking.
|
|
|
|
|
'fly_in' holds the node name that the mob flies (or swims) around
|
|
|
|
|
in e.g. "air" or "default:water_source".
|
2020-04-29 21:15:35 +02:00
|
|
|
|
'keep_flying' when true mobs like birds no longer stop and stand.
|
2019-01-24 12:14:25 +01:00
|
|
|
|
'stay_near' when set allows mobs the chance to stay around certain nodes.
|
|
|
|
|
'nodes' string or table of nodes to stay nearby e.g. "farming:straw"
|
|
|
|
|
'chance' chance of searching for above node(s), default is 10.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'runaway' if true causes animals to turn and run away when hit.
|
2018-09-14 18:13:40 +02:00
|
|
|
|
'pushable' when true mobs can be pushed by player or other mobs.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'view_range' how many nodes in distance the mob can see a player.
|
|
|
|
|
'damage' how many health points the mob does to a player or another
|
|
|
|
|
mob when melee attacking.
|
2021-05-15 10:33:35 +02:00
|
|
|
|
'damage_group' group in which damage is dealt, dedaults to "fleshy".
|
|
|
|
|
'damage_texture_modifier' applies texture modifier on hit e.g "^[brighten"
|
2023-03-13 11:55:25 +01:00
|
|
|
|
or default when enabled is "^[colorize:#c9900070".
|
2018-01-27 16:29:15 +01:00
|
|
|
|
'knock_back' when true has mobs falling backwards when hit, the greater
|
2018-01-26 12:13:59 +01:00
|
|
|
|
the damage the more they move back.
|
|
|
|
|
'fear_height' is how high a cliff or edge has to be before the mob stops
|
|
|
|
|
walking, 0 to turn off height fear.
|
|
|
|
|
'fall_speed' has the maximum speed the mob can fall at, default is -10.
|
|
|
|
|
'fall_damage' when true causes falling to inflict damage.
|
|
|
|
|
'water_damage' holds the damage per second infliced to mobs when standing in
|
|
|
|
|
water.
|
2020-12-06 10:53:02 +01:00
|
|
|
|
'air_damage' holds damage per second inflicted to mob when standing in air.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'lava_damage' holds the damage per second inflicted to mobs when standing
|
2021-04-05 09:52:48 +02:00
|
|
|
|
in lava.
|
|
|
|
|
'fire_damage' holds the damage per second inflicted to mobs when standing
|
2024-01-26 14:05:43 +01:00
|
|
|
|
'node_damage' True by default, will harm mobs when inside damage_per_second
|
|
|
|
|
nodes.
|
2021-04-05 09:52:48 +02:00
|
|
|
|
in fire.
|
|
|
|
|
|
2018-09-07 15:59:22 +02:00
|
|
|
|
'light_damage' holds the damage per second inflicted to mobs when light
|
|
|
|
|
level is between the min and max values below
|
|
|
|
|
'light_damage_min' minimum light value when mob is affected (default: 14)
|
|
|
|
|
'light_damage_max' maximum light value when mob is affected (default: 15)
|
2023-05-14 11:44:12 +02:00
|
|
|
|
When set to 16 then only natural light will kill mob.
|
2020-05-01 11:29:12 +02:00
|
|
|
|
'suffocation' when > 0 mobs will suffocate inside solid blocks and will be
|
|
|
|
|
hurt by the value given every second (0 to disable).
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'floats' when set to 1 mob will float in water, 0 has them sink.
|
|
|
|
|
'follow' mobs follow player when holding any of the items which appear
|
|
|
|
|
on this table, the same items can be fed to a mob to tame or
|
2021-03-23 18:09:26 +01:00
|
|
|
|
breed e.g. {"farming:wheat", "default:apple", "group:fish"}
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
'reach' is how far the mob can attack player when standing
|
|
|
|
|
nearby, default is 3 nodes.
|
|
|
|
|
'docile_by_day' when true has mobs wandering around during daylight
|
|
|
|
|
hours and only attacking player at night or when
|
|
|
|
|
provoked.
|
2018-10-01 10:20:27 +02:00
|
|
|
|
'attack_chance' 0 to 100 chance the mob will attack (default is 5).
|
2023-11-06 08:56:18 +01:00
|
|
|
|
'attack_patience' Time in seconds before mob gives up attacking if
|
|
|
|
|
player isn't seen (Defaults to 11).
|
2018-06-27 10:44:00 +02:00
|
|
|
|
'attack_monsters' when true mob will attack monsters.
|
|
|
|
|
'attack_animals' when true mob will attack animals.
|
|
|
|
|
'attack_npcs' when true mob will attack npcs within range.
|
|
|
|
|
'attack_players' when true mob will attack players nearby.
|
2024-03-01 17:01:18 +01:00
|
|
|
|
'attack_ignore' string or table of mob names not to attack.
|
2018-06-27 10:44:00 +02:00
|
|
|
|
'owner_loyal' when true non-docile tamed mobs attack anything player
|
2018-01-26 12:13:59 +01:00
|
|
|
|
punches when nearby.
|
|
|
|
|
'group_attack' when true has same mob type grouping together to attack
|
|
|
|
|
offender.
|
2020-05-13 09:12:56 +02:00
|
|
|
|
'group_helper' string containing mob name that attacks alongside
|
|
|
|
|
current mob when group attacking.
|
|
|
|
|
mob is attacking in groups.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'attack_type' tells the api what a mob does when attacking the player
|
|
|
|
|
or another mob:
|
|
|
|
|
'dogfight' is a melee attack when player is within mob reach.
|
|
|
|
|
'shoot' has mob shoot pre-defined arrows at player when inside
|
|
|
|
|
view_range.
|
|
|
|
|
'dogshoot' has melee attack when inside reach and shoot attack
|
|
|
|
|
when inside view_range.
|
2018-03-12 12:32:21 +01:00
|
|
|
|
'explode' causes mob to stop and explode when inside reach.
|
|
|
|
|
'explosion_radius' the radius of explosion node destruction,
|
|
|
|
|
defaults to 1
|
|
|
|
|
'explosion_damage_radius' the radius of explosion entity & player damage,
|
|
|
|
|
defaults to explosion_radius * 2
|
|
|
|
|
'explosion_timer' number of seconds before mob explodes while its target
|
|
|
|
|
is still inside reach or explosion_damage_radius,
|
|
|
|
|
defaults to 3.
|
|
|
|
|
'allow_fuse_reset' Allow 'explode' attack_type to reset fuse and resume
|
|
|
|
|
chasing if target leaves the blast radius or line of
|
|
|
|
|
sight. Defaults to true.
|
|
|
|
|
'stop_to_explode' When set to true (default), mob must stop and wait for
|
|
|
|
|
explosion_timer in order to explode. If false, mob will
|
|
|
|
|
continue chasing.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'arrow' holds the pre-defined arrow object to shoot when
|
|
|
|
|
attacking.
|
2021-08-01 19:58:21 +02:00
|
|
|
|
'arrow_override' function that allows tweaking of arrow entity from
|
|
|
|
|
inside mob definition (self) passed to function.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'dogshoot_switch' allows switching between attack types by using timers
|
|
|
|
|
(1 for shoot, 2 for dogfight)
|
|
|
|
|
'dogshoot_count_max' contains how many seconds before switching from
|
|
|
|
|
dogfight to shoot.
|
2018-01-27 16:29:15 +01:00
|
|
|
|
'dogshoot_count2_max' contains how many seconds before switching from shoot
|
2018-01-26 12:13:59 +01:00
|
|
|
|
to dogfight.
|
|
|
|
|
'shoot_interval' has the number of seconds between shots.
|
2023-11-16 11:00:10 +01:00
|
|
|
|
'shoot_offset' holds the y position added as to where the
|
2018-01-26 12:13:59 +01:00
|
|
|
|
arrow/fireball appears on mob.
|
2023-11-16 11:00:10 +01:00
|
|
|
|
'homing' When True arrows will follow player when visible.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'specific_attack' has a table of entity names that mob can also attack
|
|
|
|
|
e.g. {"player", "mobs_animal:chicken"}.
|
2023-03-26 09:31:40 +02:00
|
|
|
|
'friendly_fire` when set to false, mobs will not be able to harm other
|
|
|
|
|
mobs of the same type with friendly fire arrows.
|
|
|
|
|
Defaults to true.
|
2023-07-15 09:58:18 +02:00
|
|
|
|
'runaway_from' contains a table with mob names or nodesto run away
|
|
|
|
|
from, add "player" to list to runaway from player also.
|
2021-03-10 09:14:42 +01:00
|
|
|
|
'ignore_invisibility' When true mob will still be able to see and attack
|
|
|
|
|
player even if invisible (invisibility mod only).
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'blood_amount' contains the number of blood droplets to appear when
|
|
|
|
|
mob is hit.
|
|
|
|
|
'blood_texture' has the texture name to use for droplets e.g.
|
|
|
|
|
"mobs_blood.png", or table {"blood1.png", "blood2.png"}
|
|
|
|
|
'pathfinding' set to 1 for mobs to use pathfinder feature to locate
|
|
|
|
|
player, set to 2 so they can build/break also (only
|
|
|
|
|
works with dogfight attack and when 'mobs_griefing'
|
2018-11-01 10:49:15 +01:00
|
|
|
|
in minetest.conf is not false). Adding {unbreakable=1}
|
|
|
|
|
to node groups stops them being broken by mobs.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'immune_to' is a table that holds specific damage when being hit by
|
|
|
|
|
certain items e.g.
|
|
|
|
|
{"default:sword_wood", 0} -- causes no damage.
|
|
|
|
|
{"default:gold_lump", -10} -- heals by 10 health points.
|
|
|
|
|
{"default:coal_block", 20} -- 20 damage when hit on head with coal blocks.
|
2018-05-30 11:55:39 +02:00
|
|
|
|
{"all"} -- stops all weapons causing damage apart from those on list.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
'makes_footstep_sound' when true you can hear mobs walking.
|
|
|
|
|
'sounds' this is a table with sounds of the mob
|
|
|
|
|
'distance' maximum distance sounds can be heard, default is 10.
|
|
|
|
|
'random' random sound that plays during gameplay.
|
|
|
|
|
'war_cry' what you hear when mob starts to attack player.
|
|
|
|
|
'attack' what you hear when being attacked.
|
|
|
|
|
'shoot_attack' sound played when mob shoots.
|
|
|
|
|
'damage' sound heard when mob is hurt.
|
|
|
|
|
'death' played when mob is killed.
|
|
|
|
|
'jump' played when mob jumps.
|
2018-03-12 12:32:21 +01:00
|
|
|
|
'fuse' sound played when mob explode timer starts.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'explode' sound played when mob explodes.
|
|
|
|
|
|
|
|
|
|
'drops' table of items that are dropped when mob is killed, fields are:
|
|
|
|
|
'name' name of item to drop.
|
|
|
|
|
'chance' chance of drop, 1 for always, 2 for 1-in-2 chance etc.
|
2018-09-04 17:42:33 +02:00
|
|
|
|
'min' minimum number of items dropped, set to 0 for rare drops.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'max' maximum number of items dropped.
|
2018-09-05 11:33:17 +02:00
|
|
|
|
Note: If weapon has {fire=1} damage group set then cooked items will drop.
|
2019-09-12 10:44:45 +02:00
|
|
|
|
Note2: A function can now be passed which can also return drops table, e.g.
|
|
|
|
|
drops = function(pos)
|
|
|
|
|
-- do something
|
|
|
|
|
return { {name = "farming:bread"}, {name = "default:dirt", chance = 2} }
|
|
|
|
|
end
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
'visual' holds the look of the mob you wish to create:
|
|
|
|
|
'cube' looks like a normal node
|
|
|
|
|
'sprite' sprite which looks same from all angles.
|
|
|
|
|
'upright_sprite' flat model standing upright.
|
|
|
|
|
'wielditem' how it looks when player holds it in hand.
|
|
|
|
|
'mesh' uses separate object file to define mob.
|
|
|
|
|
'visual_size' has the size of the mob, defaults to {x = 1, y = 1}
|
2018-01-27 16:29:15 +01:00
|
|
|
|
'collisionbox' has the box in which mob can be interacted with the
|
2018-01-26 12:13:59 +01:00
|
|
|
|
world e.g. {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}
|
2018-01-27 16:29:15 +01:00
|
|
|
|
'selectionbox' has the box in which player can interact with mob
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'textures' holds a table list of textures to be used for mob, or you
|
|
|
|
|
could use multiple lists inside another table for random
|
|
|
|
|
selection e.g. { {"texture1.png"}, {"texture2.png"} }
|
|
|
|
|
'child_texture' holds the texture table for when baby mobs are used.
|
|
|
|
|
'gotten_texture' holds the texture table for when self.gotten value is
|
|
|
|
|
true, used for milking cows or shearing sheep.
|
2020-05-16 15:43:03 +02:00
|
|
|
|
'texture_mods' holds a string which overlays a texture on top of the
|
|
|
|
|
mob texture e.g. "^saddle.png"
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'mesh' holds the name of the external object used for mob model
|
|
|
|
|
e.g. "mobs_cow.b3d"
|
|
|
|
|
'gotten_mesh" holds the name of the external object used for when
|
|
|
|
|
self.gotten is true for mobs.
|
|
|
|
|
'rotate' custom model rotation, 0 = front, 90 = side, 180 = back,
|
|
|
|
|
270 = other side.
|
2020-01-09 10:38:46 +01:00
|
|
|
|
'glow' has mob glow without light source, 0 to 15 or nil to disable
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'double_melee_attack' when true has the api choose between 'punch' and
|
2018-08-03 10:43:50 +02:00
|
|
|
|
'punch2' animations. [DEPRECATED]
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
2020-08-19 13:07:44 +02:00
|
|
|
|
'animation' holds a table containing animation names and settings for use with
|
|
|
|
|
mesh models:
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'stand_start' start frame for when mob stands still.
|
|
|
|
|
'stand_end' end frame of stand animation.
|
|
|
|
|
'stand_speed' speed of animation in frames per second.
|
|
|
|
|
'walk_start' when mob is walking around.
|
|
|
|
|
'walk_end'
|
|
|
|
|
'walk_speed'
|
|
|
|
|
'run_start' when a mob runs or attacks.
|
|
|
|
|
'run_end'
|
|
|
|
|
'run_speed'
|
|
|
|
|
'fly_start' when a mob is flying.
|
|
|
|
|
'fly_end'
|
|
|
|
|
'fly_speed'
|
2022-07-12 09:37:38 +02:00
|
|
|
|
'jump_start' when a mob is jumping
|
|
|
|
|
'jump_end'
|
|
|
|
|
'jump_speed'
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'punch_start' when a mob melee attacks.
|
|
|
|
|
'punch_end'
|
|
|
|
|
'punch_speed'
|
|
|
|
|
'punch2_start' alternative melee attack animation.
|
|
|
|
|
'punch2_end'
|
|
|
|
|
'punch2_speed'
|
|
|
|
|
'shoot_start' shooting animation.
|
|
|
|
|
'shoot_end'
|
|
|
|
|
'shoot_speed'
|
2023-03-13 12:52:59 +01:00
|
|
|
|
'injured_start' when hit or damaged > 1 hp (if not set then 'walk' is used)
|
|
|
|
|
'injured_end'
|
|
|
|
|
'injured_speed'
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'die_start' death animation
|
|
|
|
|
'die_end'
|
|
|
|
|
'die_speed'
|
|
|
|
|
'die_loop' when set to false stops the animation looping.
|
2020-12-06 09:55:17 +01:00
|
|
|
|
'die_rotate' if true mob spins during death animation.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
Using '_loop = false' setting will stop any of the above animations from
|
|
|
|
|
looping.
|
|
|
|
|
|
|
|
|
|
'speed_normal' is used for animation speed for compatibility with some
|
|
|
|
|
older mobs.
|
|
|
|
|
|
2018-08-03 10:43:50 +02:00
|
|
|
|
Note: Up to 5 different animations can be used per action e.g.
|
|
|
|
|
stand_start, stand_end, stand1_start, stand1_end .. up to stand4_start
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
Node Replacement
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
Mobs can look around for specific nodes as they walk and replace them to mimic
|
|
|
|
|
eating.
|
|
|
|
|
|
|
|
|
|
'replace_what' group of items to replace e.g.
|
|
|
|
|
{"farming:wheat_8", "farming:carrot_8"}
|
|
|
|
|
or you can use the specific options of what, with and
|
|
|
|
|
y offset by using this instead:
|
|
|
|
|
{
|
|
|
|
|
{"group:grass", "air", 0},
|
|
|
|
|
{"default:dirt_with_grass", "default:dirt", -1}
|
|
|
|
|
}
|
|
|
|
|
'replace_with' replace with what e.g. "air" or in chickens case "mobs:egg"
|
|
|
|
|
'replace_rate' how random should the replace rate be (typically 10)
|
|
|
|
|
'replace_offset' +/- value to check specific node to replace
|
|
|
|
|
|
|
|
|
|
'on_replace(self, pos, oldnode, newnode)' is called when mob is about to
|
|
|
|
|
replace a node.
|
|
|
|
|
'self' ObjectRef of mob
|
|
|
|
|
'pos' Position of node to replace
|
|
|
|
|
'oldnode' Current node
|
|
|
|
|
'newnode' What the node will become after replacing
|
|
|
|
|
|
|
|
|
|
If false is returned, the mob will not replace the node.
|
|
|
|
|
|
|
|
|
|
By default, replacing sets self.gotten to true and resets the object
|
2018-11-29 13:14:54 +01:00
|
|
|
|
properties. (DEPRECATED, use on_replace to make changes).
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Custom Definition Functions
|
|
|
|
|
---------------------------
|
|
|
|
|
|
|
|
|
|
Along with the above mob registry settings we can also use custom functions to
|
|
|
|
|
enhance mob functionality and have them do many interesting things:
|
|
|
|
|
|
|
|
|
|
'on_rightclick' its same as in minetest.register_entity()
|
|
|
|
|
'on_blast' is called when an explosion happens near mob when using TNT
|
2023-02-17 10:33:44 +01:00
|
|
|
|
functions, parameters are (damage) and returns
|
2018-01-26 12:13:59 +01:00
|
|
|
|
(do_damage, do_knockback, drops)
|
|
|
|
|
'on_spawn' is a custom function that runs on mob spawn with 'self' as
|
|
|
|
|
variable, return true at end of function to run only once.
|
|
|
|
|
'after_activate' is a custom function that runs once mob has been activated
|
|
|
|
|
with these paramaters (self, staticdata, def, dtime)
|
|
|
|
|
'on_breed' called when two similar mobs breed, paramaters are
|
|
|
|
|
(parent1, parent2) objects, return false to stop child from
|
|
|
|
|
being resized and owner/tamed flags and child textures being
|
|
|
|
|
applied. Function itself must spawn new child mob.
|
|
|
|
|
'on_grown' is called when a child mob has grown up, only paramater is
|
|
|
|
|
(self).
|
|
|
|
|
'do_punch' called when mob is punched with paramaters (self, hitter,
|
|
|
|
|
time_from_last_punch, tool_capabilities, direction), return
|
|
|
|
|
false to stop punch damage and knockback from taking place.
|
|
|
|
|
'custom_attack' when set this function is called instead of the normal mob
|
2020-06-19 17:07:29 +02:00
|
|
|
|
melee attack, parameters are (self, to_attack) and if true
|
|
|
|
|
is returned normal attack function continued.
|
2020-06-20 11:07:32 +02:00
|
|
|
|
'on_die' a function that is called when mob is killed (self, pos), also
|
|
|
|
|
has access to self.cause_of_death table.
|
2024-04-26 12:07:08 +02:00
|
|
|
|
'on_death' Official engine version of above when mob killed (self, killer),
|
|
|
|
|
'killer' is only returned if player killed the mob.
|
2020-12-06 10:53:02 +01:00
|
|
|
|
'on_flop' function called when flying or swimmimng mob is no longer in
|
|
|
|
|
air/water, (self) paramater and return true to skip the built
|
|
|
|
|
in api flop feature.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'do_custom' a custom function that is called every tick while mob is
|
|
|
|
|
active and which has access to all of the self.* variables
|
|
|
|
|
e.g. (self.health for health or self.standing_in for node
|
|
|
|
|
status), return with 'false' to skip remainder of mob API.
|
2024-08-03 12:35:28 +02:00
|
|
|
|
'on_sound' (self, def) called when mob is inside the hearing distance of
|
|
|
|
|
a sound, passes a def table containing:
|
|
|
|
|
'sound' the sound being played,
|
2024-08-04 09:25:48 +02:00
|
|
|
|
'pos' position the sound originated,
|
2024-08-03 12:35:28 +02:00
|
|
|
|
'gain' original gain of sound,
|
|
|
|
|
'distance' distance of mob from sound source,
|
2024-08-04 09:25:48 +02:00
|
|
|
|
'loudness' how loud sound is to mob (0 = cant hear, 1.0 = near sound), this
|
|
|
|
|
would be used as the main value inside on_sound function,
|
2024-08-03 12:35:28 +02:00
|
|
|
|
'player' player name sound originated,
|
2024-08-04 09:25:48 +02:00
|
|
|
|
'object' object reference sound originated,
|
|
|
|
|
'max_hear_distance' max distance sound can be heard from source.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Internal Variables
|
|
|
|
|
------------------
|
|
|
|
|
|
|
|
|
|
The mob api also has some preset variables and functions that it will remember
|
|
|
|
|
for each mob.
|
|
|
|
|
|
2023-08-17 08:30:28 +02:00
|
|
|
|
'self._cmi_is_mob' Used to determine wether entity is a mobs redo mob when True.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'self.health' contains current health of mob (cannot exceed
|
|
|
|
|
self.hp_max)
|
|
|
|
|
'self.texture_list' contains list of all mob textures
|
|
|
|
|
'self.child_texture' contains mob child texture when growing up
|
|
|
|
|
'self.base_texture' contains current skin texture which was randomly
|
|
|
|
|
selected from textures list
|
2023-04-03 09:08:37 +02:00
|
|
|
|
'self.texture_mods' contains a list of textures to overlay above the mobs
|
|
|
|
|
base texture (used for horse saddle)
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'self.gotten' this is used for obtaining milk from cow and wool from
|
|
|
|
|
sheep
|
|
|
|
|
'self.horny' when animal fed enough it is set to true and animal can
|
|
|
|
|
breed with same animal
|
|
|
|
|
'self.hornytimer' background timer that controls breeding functions and
|
|
|
|
|
mob childhood timings
|
|
|
|
|
'self.child' used for when breeding animals have child, will use
|
|
|
|
|
child_texture and be half size
|
|
|
|
|
'self.owner' string used to set owner of npc mobs, typically used for
|
|
|
|
|
dogs
|
|
|
|
|
'self.order' set to "follow" or "stand" so that npc will follow owner
|
|
|
|
|
or stand it's ground
|
2023-10-05 14:07:02 +02:00
|
|
|
|
'self._nametag' contains the name of the mob which it can show above
|
2023-04-03 09:08:37 +02:00
|
|
|
|
'self.pause_timer' used to stop mob thinking when punched so that knockback
|
|
|
|
|
can take effect.
|
|
|
|
|
'self.disable_falling' currently used on spider mob when climbing walls, stops
|
|
|
|
|
the mob from experiencing gravity when true.
|
2020-12-05 13:06:34 +01:00
|
|
|
|
'self.state' Current mob state.
|
|
|
|
|
"stand": no movement (except turning around)
|
|
|
|
|
"walk": walk or move around aimlessly
|
|
|
|
|
"attack": chase and attack enemy
|
|
|
|
|
"runaway": flee from target
|
|
|
|
|
"flop": bounce around aimlessly
|
|
|
|
|
(for swimming mobs that have stranded)
|
|
|
|
|
"die": during death
|
2023-05-18 12:19:28 +02:00
|
|
|
|
'self.standing_on' Node name mob is standing on.
|
|
|
|
|
'self.standing_in' Node name mob is standing inside.
|
|
|
|
|
'self.looking_at' Node name in front of mob.
|
|
|
|
|
'self.looking_above'Node name in front/above mob.
|
|
|
|
|
'self.facing_fence' True if mob facing node containing "wall", "fence", "gate"
|
|
|
|
|
in it's name.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
|
2023-10-08 17:44:42 +02:00
|
|
|
|
Internal Functions
|
|
|
|
|
------------------
|
|
|
|
|
|
|
|
|
|
Each mob contains a set of functions that can be called for use internally or from
|
|
|
|
|
another mod entirely, replace mob_class with the mob entity variable:
|
|
|
|
|
|
|
|
|
|
mob_class:mob_sound(sound) -- play sound at mob position
|
2024-05-25 08:50:16 +02:00
|
|
|
|
mob_class:do_attack(player [, force]) -- if not already attacking, attack object given,
|
|
|
|
|
forced being true stops attacking current target and focuses on one given
|
2023-11-05 17:30:05 +01:00
|
|
|
|
mob_class:stop_attack() -- stops mob attacking
|
2023-10-08 17:44:42 +02:00
|
|
|
|
mob_class:collision() -- checks for player collision with mob and returns {x, z} vector
|
|
|
|
|
mob_class:set_velocity(velocity) -- move at velocity in the facing direction
|
|
|
|
|
mob_class:get_velocity() -- returns mob speed value
|
|
|
|
|
mob_class:set_yaw(yaw, delay) -- change mob yaw, delay is for smooth rotation (default:0)
|
|
|
|
|
mob_class:yaw_to_pos(pos, delay) -- rotates mod to look at position and returns new yaw
|
|
|
|
|
mob_class:set_animation(animation, force) -- set mob animation
|
2023-11-05 17:30:05 +01:00
|
|
|
|
mob_class:line_of_sight(pos1, pos2) -- internal line of sight function
|
2023-10-08 17:44:42 +02:00
|
|
|
|
mob_class:attempt_flight_correction(override) -- check for stuck flying mobs and fix
|
|
|
|
|
mob_class:update_tag(newname) -- update nametag or give new name
|
|
|
|
|
mob_class:do_jump() -- check if mob can jump then jump
|
|
|
|
|
mob_class:follow_holding(clicker) -- return True if mob likes what player is holding
|
|
|
|
|
mob_class:day_docile() -- return True if mob docile during current daytime
|
|
|
|
|
mob_class:mob_expire(pos, dtime) -- check if mob is to despawn
|
|
|
|
|
mob_class:get_nodes() -- get specific nodes around mob
|
|
|
|
|
mob_class:on_blast(damage) -- function called when mob in blast area
|
2024-05-24 18:28:35 +02:00
|
|
|
|
mob_class:is_inside(itemtable) -- returns True is mob collisionbox inside any node/group
|
|
|
|
|
in table
|
|
|
|
|
mob_class:go_to(pos) -- makes mob go to that position or nearby
|
2023-10-08 17:44:42 +02:00
|
|
|
|
|
|
|
|
|
|
2020-06-22 22:24:06 +02:00
|
|
|
|
Adding Mobs in World
|
|
|
|
|
--------------------
|
|
|
|
|
|
|
|
|
|
mobs:add_mob(pos, {
|
|
|
|
|
name = "mobs_animal:chicken",
|
|
|
|
|
child = true,
|
|
|
|
|
owner = "singleplayer",
|
|
|
|
|
nametag = "Bessy",
|
|
|
|
|
ignore_count = true -- ignores mob count per map area
|
|
|
|
|
})
|
|
|
|
|
|
2020-06-25 10:33:59 +02:00
|
|
|
|
Returns false if mob could not be added, returns mob object if spawned ok.
|
|
|
|
|
|
2020-06-22 22:24:06 +02:00
|
|
|
|
|
2020-07-25 11:52:29 +02:00
|
|
|
|
Removing Mob from World
|
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
|
|
mobs:remove(self, decrease)
|
|
|
|
|
|
|
|
|
|
Removes mob 'self' from the world and if 'decrease' is true then the mob counter
|
|
|
|
|
will also be decreased by one.
|
|
|
|
|
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
Spawning Mobs in World
|
|
|
|
|
----------------------
|
|
|
|
|
|
2020-01-09 10:38:46 +01:00
|
|
|
|
mobs:spawn({
|
|
|
|
|
name = "mobs_monster:tree_monster",
|
|
|
|
|
nodes = {"group:leaves"},
|
|
|
|
|
max_light = 7,
|
|
|
|
|
})
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
2020-01-09 10:38:46 +01:00
|
|
|
|
Spawn functions require the following settings, some of which already have a
|
|
|
|
|
default setting and can be omitted:
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
'name' is the name of the animal/monster
|
|
|
|
|
'nodes' is a list of nodenames on that the animal/monster can
|
2020-01-09 10:38:46 +01:00
|
|
|
|
spawn on top of (defaults to {"group:dirt", "group:stone"}
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'neighbors' is a list of nodenames on that the animal/monster will
|
2020-01-09 10:38:46 +01:00
|
|
|
|
spawn beside (default is {"air"})
|
|
|
|
|
'interval' is same as in register_abm() (default is 30)
|
|
|
|
|
'chance' is same as in register_abm() (default is 5000)
|
|
|
|
|
'min_light' is the minimum light level (default is 0)
|
|
|
|
|
'max_light' is the maximum light (default is 15)
|
|
|
|
|
'min_height' is the minimum height a mob can spawn (default: -31000)
|
|
|
|
|
'max_height' is the maximum height a mob can spawn (default is 31000)
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'active_object_count' number of this type of mob to spawn at one time inside
|
2020-01-09 10:38:46 +01:00
|
|
|
|
map area (default is 1)
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'day_toggle' true for day spawning, false for night or nil for
|
|
|
|
|
anytime
|
|
|
|
|
'on_spawn' is a custom function which runs after mob has spawned
|
|
|
|
|
and gives self and pos values.
|
2020-09-04 14:59:14 +02:00
|
|
|
|
'on_map_load' when true mobs will have a chance of spawning only
|
|
|
|
|
when new areas of map are loaded, interval will not be
|
|
|
|
|
used.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
2020-01-09 10:38:46 +01:00
|
|
|
|
The older spawn functions are still active and working but have no defaults like
|
|
|
|
|
the mobs:spawn, so it is recommended to use the above instead.
|
|
|
|
|
|
|
|
|
|
mobs:register_spawn(name, nodes, max_light, min_light, chance,
|
|
|
|
|
active_object_count, max_height, day_toggle)
|
|
|
|
|
|
2022-05-21 09:04:38 +02:00
|
|
|
|
mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, interval,
|
2020-01-09 10:38:46 +01:00
|
|
|
|
chance, active_object_count, min_height, max_height, day_toggle, on_spawn)
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
A simpler way to handle mob spawns has been added with the mobs:spawn(def)
|
|
|
|
|
command which uses above names to make settings clearer:
|
2016-08-03 10:34:36 +02:00
|
|
|
|
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
For each mob that spawns with this function is a field in mobs.spawning_mobs.
|
|
|
|
|
It tells if the mob should spawn or not. Default is true. So other mods can
|
|
|
|
|
only use the API of this mod by disabling the spawning of the default mobs in
|
|
|
|
|
this mod.
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
|
|
|
|
|
2018-03-22 10:32:17 +01:00
|
|
|
|
mobs:spawn_abm_check(pos, node, name)
|
|
|
|
|
|
|
|
|
|
This global function can be changed to contain additional checks for mobs to
|
|
|
|
|
spawn e.g. mobs that spawn only in specific areas and the like. By returning
|
|
|
|
|
true the mob will not spawn.
|
|
|
|
|
|
|
|
|
|
'pos' holds the position of the spawning mob
|
|
|
|
|
'node' contains the node the mob is spawning on top of
|
|
|
|
|
'name' is the name of the animal/monster
|
|
|
|
|
|
|
|
|
|
|
2023-10-08 17:44:42 +02:00
|
|
|
|
mobs:node_ok(pos, fallback)
|
|
|
|
|
|
|
|
|
|
This global function gets the node at pos and if not registered will return the
|
|
|
|
|
fallback node instead.
|
|
|
|
|
|
|
|
|
|
|
2020-06-20 11:07:32 +02:00
|
|
|
|
Particle Effects
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
mobs:effect(pos, amount, texture, min_size, max_size, radius, gravity, glow, fall)
|
|
|
|
|
|
|
|
|
|
This function provides a quick way to spawn particles as an effect.
|
|
|
|
|
|
|
|
|
|
'pos' center position of particle effect.
|
|
|
|
|
'amount' how many particles.
|
|
|
|
|
'texture' texture filename to use for effect.
|
|
|
|
|
'min_size' smallest particle size.
|
|
|
|
|
'max_size' largest particle size.
|
|
|
|
|
'radius' how far particles spread outward from center.
|
|
|
|
|
'gravity' gravity applied to particles once they spawn.
|
|
|
|
|
'glow' number between 1 and 15 for glowing particles.
|
|
|
|
|
'fall' when true particles fall, false has them rising, nil has them scatter.
|
|
|
|
|
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
Making Arrows
|
|
|
|
|
-------------
|
2016-04-15 19:51:18 +02:00
|
|
|
|
|
2016-04-15 19:37:28 +02:00
|
|
|
|
mobs:register_arrow(name, definition)
|
|
|
|
|
|
|
|
|
|
This function registers a arrow for mobs with the attack type shoot.
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'name' is the name of the arrow
|
|
|
|
|
'definition' is a table with the following values:
|
|
|
|
|
'visual' same is in minetest.register_entity()
|
|
|
|
|
'visual_size' same is in minetest.register_entity()
|
|
|
|
|
'textures' same is in minetest.register_entity()
|
2021-05-04 09:02:43 +02:00
|
|
|
|
'collide_with_objects' same as above
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'velocity' the velocity of the arrow
|
|
|
|
|
'drop' if set to true any arrows hitting a node will drop as item
|
|
|
|
|
'hit_player' a function that is called when the arrow hits a player;
|
|
|
|
|
this function should hurt the player, the parameters are
|
|
|
|
|
(self, player)
|
|
|
|
|
'hit_mob' a function that is called when the arrow hits a mob;
|
|
|
|
|
this function should hurt the mob, the parameters are
|
|
|
|
|
(self, player)
|
2020-04-29 16:01:21 +02:00
|
|
|
|
'hit_object' a function that is called when the arrow hits an object;
|
|
|
|
|
this function parameters are (self, player)
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'hit_node' a function that is called when the arrow hits a node, the
|
|
|
|
|
parameters are (self, pos, node)
|
|
|
|
|
'tail' when set to 1 adds a trail or tail to mob arrows
|
|
|
|
|
'tail_texture' texture string used for above effect
|
|
|
|
|
'tail_size' has size for above texture (defaults to between 5 and 10)
|
|
|
|
|
'expire' contains float value for how long tail appears for
|
|
|
|
|
(defaults to 0.25)
|
|
|
|
|
'glow' has value for how brightly tail glows 1 to 10 (default is
|
|
|
|
|
0 for no glow)
|
|
|
|
|
'rotate' integer value in degrees to rotate arrow
|
|
|
|
|
'on_step' is a custom function when arrow is active, nil for
|
2023-12-05 09:23:04 +01:00
|
|
|
|
default. (self, dtime, moveresult)
|
2018-09-09 12:11:08 +02:00
|
|
|
|
'on_punch' is a custom function when arrow is punched, nil by default
|
2020-06-20 11:07:32 +02:00
|
|
|
|
'collisionbox' is hitbox table for arrow, {-.1,-.1,-.1,.1,.1,.1} by default.
|
|
|
|
|
'lifetime' contains float value for how many seconds arrow exists in
|
|
|
|
|
world before being removed (default is 4.5 seconds).
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Spawn Eggs
|
|
|
|
|
----------
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2017-07-02 12:12:15 +02:00
|
|
|
|
mobs:register_egg(name, description, background, addegg, no_creative)
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2020-01-31 21:24:38 +01:00
|
|
|
|
This function registers a spawn egg which can be used to properly spawn in a mob.
|
|
|
|
|
Animals are spawned as tamed unless sneak/shift is held while spawning.
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'name' this is the name of your new mob to spawn e.g. "mob:sheep"
|
|
|
|
|
'description' the name of the new egg you are creating e.g. "Spawn Sheep"
|
|
|
|
|
'background' the texture displayed for the egg in inventory
|
|
|
|
|
'addegg' would you like an egg image in front of your texture (1 = yes,
|
|
|
|
|
0 = no)
|
|
|
|
|
'no_creative' when set to true this stops spawn egg appearing in creative
|
|
|
|
|
mode for destructive mobs like Dungeon Masters.
|
|
|
|
|
|
2016-04-15 19:51:18 +02:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
Explosion Function
|
|
|
|
|
------------------
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2017-07-13 11:16:24 +02:00
|
|
|
|
mobs:explosion(pos, radius) -- DEPRECATED!!! use mobs:boom() instead
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2022-09-22 09:04:58 +02:00
|
|
|
|
mobs:boom(self, pos, radius, damage_radius, texture)
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'self' mob entity
|
|
|
|
|
'pos' centre position of explosion
|
|
|
|
|
'radius' radius of explosion (typically set to 3)
|
2022-09-22 09:04:58 +02:00
|
|
|
|
'damage_radius' radius of damage around explosion
|
|
|
|
|
'texture' particle texture during explosion, defaults to "tnt_smoke.png"
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
This function generates an explosion which removes nodes in a specific radius
|
|
|
|
|
and damages any entity caught inside the blast radius. Protection will limit
|
|
|
|
|
node destruction but not entity damage.
|
2016-04-15 19:51:18 +02:00
|
|
|
|
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
Capturing Mobs
|
|
|
|
|
--------------
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso,
|
|
|
|
|
force_take, replacewith)
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
This function is generally called inside the on_rightclick section of the mob
|
|
|
|
|
api code, it provides a chance of capturing the mob by hand, using the net or
|
|
|
|
|
lasso items, and can also have the player take the mob by force if tamed and
|
|
|
|
|
replace with another item entirely.
|
2016-04-15 19:51:18 +02:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'self' mob information
|
|
|
|
|
'clicker' player information
|
|
|
|
|
'chance_hand' chance of capturing mob by hand (1 to 100) 0 to disable
|
|
|
|
|
'chance_net' chance of capturing mob using net (1 to 100) 0 to disable
|
|
|
|
|
'chance_lasso' chance of capturing mob using magic lasso (1 to 100) 0 to
|
|
|
|
|
disable
|
|
|
|
|
'force_take' take mob by force, even if tamed (true or false)
|
|
|
|
|
'replacewith' once captured replace mob with this item instead (overrides
|
|
|
|
|
new mob eggs with saved information)
|
|
|
|
|
|
2018-12-20 12:14:10 +01:00
|
|
|
|
mobs:force_capture(self, clicker)
|
|
|
|
|
|
|
|
|
|
Same as above but does no checks, it simply captures any and all mobs and places
|
|
|
|
|
inside a spawn egg containing all of the mob information.
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
Feeding and Taming/Breeding
|
|
|
|
|
---------------------------
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2017-07-02 12:12:15 +02:00
|
|
|
|
mobs:feed_tame(self, clicker, feed_count, breed, tame)
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
This function allows the mob to be fed the item inside self.follow be it apple,
|
|
|
|
|
wheat or whatever a set number of times and be tamed or bred as a result.
|
|
|
|
|
Will return true when mob is fed with item it likes.
|
|
|
|
|
|
|
|
|
|
'self' mob information
|
|
|
|
|
'clicker' player information
|
|
|
|
|
'feed_count' number of times mob must be fed to tame or breed
|
|
|
|
|
'breed' true or false stating if mob can be bred and a child created
|
|
|
|
|
afterwards
|
|
|
|
|
'tame' true or false stating if mob can be tamed so player can pick
|
|
|
|
|
them up
|
2016-04-15 19:37:28 +02:00
|
|
|
|
|
2016-09-26 13:10:48 +02:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
Protecting Mobs
|
|
|
|
|
---------------
|
2016-09-26 13:10:48 +02:00
|
|
|
|
|
2016-11-08 17:11:00 +01:00
|
|
|
|
mobs:protect(self, clicker)
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
This function can be used to right-click any tamed mob with mobs:protector item,
|
|
|
|
|
this will protect the mob from harm inside of a protected area from other
|
|
|
|
|
players. Will return true when mob right-clicked with mobs:protector item.
|
2016-11-08 17:11:00 +01:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'self' mob information
|
|
|
|
|
'clicker' player information
|
2016-11-08 17:11:00 +01:00
|
|
|
|
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
Riding Mobs
|
|
|
|
|
-----------
|
|
|
|
|
|
|
|
|
|
Mobs can now be ridden by players and the following shows its functions and
|
|
|
|
|
usage:
|
2016-12-29 13:28:25 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mobs:attach(self, player)
|
|
|
|
|
|
|
|
|
|
This function attaches a player to the mob so it can be ridden.
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'self' mob information
|
|
|
|
|
'player' player information
|
2016-12-29 13:28:25 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mobs:detach(player, offset)
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
This function will detach the player currently riding a mob to an offset
|
|
|
|
|
position.
|
2016-12-29 13:28:25 +01:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'player' player information
|
|
|
|
|
'offset' position table containing offset values
|
2016-12-29 13:28:25 +01:00
|
|
|
|
|
|
|
|
|
|
2016-12-29 16:28:53 +01:00
|
|
|
|
mobs:drive(self, move_animation, stand_animation, can_fly, dtime)
|
2016-12-29 13:28:25 +01:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
This function allows an attached player to move the mob around and animate it at
|
|
|
|
|
same time.
|
2016-12-29 13:28:25 +01:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'self' mob information
|
|
|
|
|
'move_animation' string containing movement animation e.g. "walk"
|
|
|
|
|
'stand_animation' string containing standing animation e.g. "stand"
|
|
|
|
|
'can_fly' if true then jump and sneak controls will allow mob to fly
|
|
|
|
|
up and down
|
|
|
|
|
'dtime' tick time used inside drive function
|
2016-12-29 13:28:25 +01:00
|
|
|
|
|
|
|
|
|
|
2017-02-21 16:01:36 +01:00
|
|
|
|
mobs:fly(self, dtime, speed, can_shoot, arrow_entity, move_animation, stand_animation)
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
This function allows an attached player to fly the mob around using directional
|
|
|
|
|
controls.
|
2017-02-21 16:01:36 +01:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'self' mob information
|
|
|
|
|
'dtime' tick time used inside fly function
|
|
|
|
|
'speed' speed of flight
|
|
|
|
|
'can_shoot' true if mob can fire arrow (sneak and left mouse button
|
|
|
|
|
fires)
|
|
|
|
|
'arrow_entity' name of arrow entity used for firing
|
|
|
|
|
'move_animation' string containing name of pre-defined animation e.g. "walk"
|
|
|
|
|
or "fly" etc.
|
|
|
|
|
'stand_animation' string containing name of pre-defined animation e.g.
|
|
|
|
|
"stand" or "blink" etc.
|
2017-02-21 16:01:36 +01:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
Note: animation names above are from the pre-defined animation lists inside mob
|
|
|
|
|
registry without extensions.
|
2017-07-02 19:56:18 +02:00
|
|
|
|
|
2017-02-21 16:01:36 +01:00
|
|
|
|
|
2017-05-27 22:29:46 +02:00
|
|
|
|
mobs:set_animation(self, name)
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
This function sets the current animation for mob, defaulting to "stand" if not
|
|
|
|
|
found.
|
2017-05-27 22:29:46 +02:00
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'self' mob information
|
|
|
|
|
'name' name of animation
|
2017-05-27 22:29:46 +02:00
|
|
|
|
|
|
|
|
|
|
2016-12-29 13:28:25 +01:00
|
|
|
|
Certain variables need to be set before using the above functions:
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'self.v2' toggle switch used to define below values for the
|
|
|
|
|
first time
|
|
|
|
|
'self.max_speed_forward' max speed mob can move forward
|
|
|
|
|
'self.max_speed_reverse' max speed mob can move backwards
|
|
|
|
|
'self.accel' acceleration speed
|
|
|
|
|
'self.terrain_type' integer containing terrain mob can walk on
|
|
|
|
|
(1 = water, 2 or 3 = land)
|
|
|
|
|
'self.driver_attach_at' position offset for attaching player to mob
|
|
|
|
|
'self.driver_eye_offset' position offset for attached player view
|
|
|
|
|
'self.driver_scale' sets driver scale for mobs larger than {x=1, y=1}
|
|
|
|
|
|
|
|
|
|
|
2019-05-08 17:14:49 +02:00
|
|
|
|
mobs:line_of_sight(self, pos1, pos2, stepsize) [DEPRECATED]
|
2018-08-08 11:33:23 +02:00
|
|
|
|
|
|
|
|
|
This function is for use within the mobs definition for special use cases and
|
|
|
|
|
returns true if a mob can see the player or victim.
|
|
|
|
|
|
|
|
|
|
...'self' mob information
|
|
|
|
|
'pos1' position of mob
|
|
|
|
|
'pos2' position of vistim or player
|
|
|
|
|
'stepsize' usually set to 1
|
|
|
|
|
|
2019-05-08 17:14:49 +02:00
|
|
|
|
Use this instead:
|
|
|
|
|
|
2023-10-08 17:44:42 +02:00
|
|
|
|
entity:line_of_sight(pos1, pos2, stepsize)
|
2019-05-08 17:14:49 +02:00
|
|
|
|
|
2018-08-08 11:33:23 +02:00
|
|
|
|
|
2020-10-29 11:46:59 +01:00
|
|
|
|
mobs:can_spawn(pos, name)
|
|
|
|
|
|
|
|
|
|
This function checks the surrounding area at [pos] to see if there is enough empty
|
|
|
|
|
space to spawn mob [name], if so then a new position is returned for use,
|
|
|
|
|
otherwise nil is returned.
|
|
|
|
|
|
|
|
|
|
|
2022-01-18 07:41:29 +01:00
|
|
|
|
mobs:is_node_dangerous(mob_object, nodename)
|
2022-01-15 10:41:21 +01:00
|
|
|
|
|
2022-01-18 07:41:29 +01:00
|
|
|
|
This function returns true if the node name given is harmful to the mob (mob_object),
|
|
|
|
|
it is mainly used when a mob is near a node it has to avoid.
|
2022-01-15 10:41:21 +01:00
|
|
|
|
|
|
|
|
|
|
2022-11-15 11:39:59 +01:00
|
|
|
|
Looting Level
|
|
|
|
|
-------------
|
|
|
|
|
|
|
|
|
|
If a tool is used with 'looting_level' defined under tool_capabilities then mobs can drop
|
|
|
|
|
extra items per level up to a maximum of 3 levels. 'looting_level' can also be read from
|
|
|
|
|
the tools own meta to override the default.
|
|
|
|
|
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
External Settings for "minetest.conf"
|
|
|
|
|
------------------------------------
|
|
|
|
|
|
2023-07-30 12:56:08 +02:00
|
|
|
|
'mob_log_spawn' When True will log spawning position of mobs.
|
2023-05-19 09:46:37 +02:00
|
|
|
|
'mob_node_timer_interval' How often mobs get nodes around them (0.25 is default)
|
|
|
|
|
for every 1/4 second.
|
|
|
|
|
'mob_main_timer_interval' How often mobs run main functions (1.0 is default) for
|
|
|
|
|
every one second.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'enable_damage' if true monsters will attack players (default is true)
|
|
|
|
|
'only_peaceful_mobs' if true only animals will spawn in game (default is
|
|
|
|
|
false)
|
2023-05-26 15:04:50 +02:00
|
|
|
|
'mobs_attack_creatura' When True mobs redo mobs will attack Creatura mod mobs.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'mobs_disable_blood' if false blood effects appear when mob is hit (default
|
|
|
|
|
is false)
|
2023-03-13 11:55:25 +01:00
|
|
|
|
'mob_hit_effect' False by default, when True and mobs are hit then
|
|
|
|
|
damage_texture_modifier is used to highlight mob.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'mobs_spawn_protected' if set to false then mobs will not spawn in protected
|
|
|
|
|
areas (default is true)
|
2021-07-14 16:53:20 +02:00
|
|
|
|
'mobs_spawn_monster_protected' if set to false then monsters will not spawn in
|
|
|
|
|
protected areas (default is true)
|
2018-05-23 09:41:10 +02:00
|
|
|
|
'remove_far_mobs' if true then untamed mobs that are outside players
|
|
|
|
|
visual range will be removed (default is true)
|
2018-01-26 12:13:59 +01:00
|
|
|
|
'mobname' can change specific mob chance rate (0 to disable) and
|
|
|
|
|
spawn number e.g. mobs_animal:cow = 1000,5
|
|
|
|
|
'mob_difficulty' sets difficulty level (health and hit damage
|
|
|
|
|
multiplied by this number), defaults to 1.0.
|
|
|
|
|
'mob_chance_multiplier' multiplies chance of all mobs spawning and can be set
|
|
|
|
|
to 0.5 to have mobs spawn more or 2.0 to spawn less.
|
|
|
|
|
e.g. 1 in 7000 * 0.5 = 1 in 3500 so better odds of
|
|
|
|
|
spawning.
|
|
|
|
|
'mobs_spawn' if false then mobs no longer spawn without spawner or
|
|
|
|
|
spawn egg.
|
|
|
|
|
'mobs_drop_items' when false mobs no longer drop items when they die.
|
|
|
|
|
'mobs_griefing' when false mobs cannot break blocks when using either
|
|
|
|
|
pathfinding level 2, replace functions or mobs:boom
|
2024-08-03 12:35:28 +02:00
|
|
|
|
'mobs_can_hear' True by default, allows mobs to hear sound around them.
|
2018-01-26 12:13:59 +01:00
|
|
|
|
function.
|
2020-05-01 20:30:29 +02:00
|
|
|
|
'mob_nospawn_range' Minimum range a mob can spawn near player (def: 12)
|
2020-05-16 11:44:38 +02:00
|
|
|
|
'mob_active_limit' Number of active mobs in game, 0 for unlimited
|
2020-11-30 15:43:49 +01:00
|
|
|
|
'mob_area_spawn' When true will check surrounding area the size of the
|
|
|
|
|
mob for obstructions before spawning, otherwise it
|
|
|
|
|
defaults to checking the height of the mob only.
|
2021-06-01 15:17:25 +02:00
|
|
|
|
'mob_smooth_rotate' Enables smooth rotation when mobs turn by default.
|
2023-03-12 12:35:21 +01:00
|
|
|
|
'mob_height_fix' Enabled by default, increases smaller mob heights so they wont
|
|
|
|
|
glitch through certain nodes.
|
2023-02-27 19:13:32 +01:00
|
|
|
|
'mob_pathfinding_enable' Enable pathfinding.
|
|
|
|
|
'mob_pathfinding_stuck_timeout' How long before stuck mobs start searching. (default 3.0)
|
|
|
|
|
'mob_pathfinding_stuck_path_timeout' How long will mob follow path before giving up. (default 5.0)
|
|
|
|
|
'mob_pathfinding_algorithm' Which pathfinding algorithm to use Dijkstra (default), A*_noprefetch (AStar_noprefetch) or A* (AStar)
|
|
|
|
|
(A* names differ cause Minetest doesn´t allow "*" in settings)
|
|
|
|
|
'mob_pathfinding_searchdistance' max search distance from search positions (default 16)
|
|
|
|
|
'mob_pathfinding_max_jump' max jump height for pathfinding (default 4)
|
|
|
|
|
'mob_pathfinding_max_drop' max drop height for pathfinding (default 6)
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
Players can override the spawn chance for each mob registered by adding a line
|
|
|
|
|
to their minetest.conf file with a new value, the lower the value the more each
|
|
|
|
|
mob will spawn e.g.
|
|
|
|
|
|
2019-06-30 11:35:34 +02:00
|
|
|
|
mobs_animal:sheep 11000
|
|
|
|
|
mobs_monster:sand_monster 100
|
|
|
|
|
|
|
|
|
|
...you can also change how many of a certain mob appear in an active mapblock by
|
|
|
|
|
adding a comma and then a new value e.g.
|
|
|
|
|
|
2020-09-05 09:59:09 +02:00
|
|
|
|
mobs_animal:cow = 8000,4 <-- 4 cows per mapblock at 8000 spawn chance
|
|
|
|
|
mobs_monster:dirt_monster = ,20 <-- 20 dirt monsters per mapblock
|
2018-01-26 12:13:59 +01:00
|
|
|
|
|
|
|
|
|
|
2024-08-11 09:17:02 +02:00
|
|
|
|
Node Sounds
|
|
|
|
|
-----------
|
|
|
|
|
|
|
|
|
|
Mobs Redo will detect wether the Default mod or MineClone/VoxeLibre mod is active and
|
|
|
|
|
store whichever sound set is available inside the following to save any mob mobs
|
|
|
|
|
having to detect it themselves:
|
|
|
|
|
|
|
|
|
|
mobs.node_sound_defaults()
|
|
|
|
|
mobs.node_sound_stone_defaults()
|
|
|
|
|
mobs.node_sound_dirt_defaults()
|
|
|
|
|
mobs.node_sound_sand_defaults()
|
|
|
|
|
mobs.node_sound_gravel_defaults()
|
|
|
|
|
mobs.node_sound_wood_defaults()
|
|
|
|
|
mobs.node_sound_leaves_defaults()
|
|
|
|
|
mobs.node_sound_ice_defaults()
|
|
|
|
|
mobs.node_sound_metal_defaults()
|
|
|
|
|
mobs.node_sound_water_defaults()
|
|
|
|
|
mobs.node_sound_snow_defaults()
|
2024-08-11 09:41:25 +02:00
|
|
|
|
mobs.node_sound_glass_defaults()
|
2024-08-11 09:17:02 +02:00
|
|
|
|
|
|
|
|
|
|
2018-01-26 12:13:59 +01:00
|
|
|
|
Rideable Horse Example Mob
|
|
|
|
|
--------------------------
|
2016-12-29 13:28:25 +01:00
|
|
|
|
|
2024-08-11 09:17:02 +02:00
|
|
|
|
See mob_horse mod https://codeberg.org/tenplus1/mob_horse
|