203 lines
7.0 KiB
Plaintext
203 lines
7.0 KiB
Plaintext
Mob Core API Documentation
|
|
|
|
Entity definition
|
|
---------------------
|
|
|
|
minetest.register_entity("mod:name",{
|
|
|
|
-- required minetest api props
|
|
|
|
initial_properties = {
|
|
physical = true,
|
|
collide_with_objects = true,
|
|
collisionbox = {...},
|
|
visual = "mesh",
|
|
mesh = "...",
|
|
textures = {...},
|
|
},
|
|
|
|
-- required mob_core props (refer to mobkits documentation for required mobkit props)
|
|
|
|
fall_damage = [bool] If true, the mob will take fall damage (true by default)
|
|
igniter_damage = [bool] If true, the mob will take fire/lava damage (true by default)
|
|
follow = [table/string] Table of items mob should follow (will also accept a single string)
|
|
immune_to = [table] Table of items mob can't take damage from
|
|
reach = [num] The distance from the center of the mobs hitbox in which it can hit another mob
|
|
damage = [num] The amount of damage the mob does in the fleshy group (2 damage = 1 player heart)
|
|
knockback = [num] How much knockback the mob deals to other mobs or players
|
|
defend_owner = [bool] If true, when the mobs owner punches another mob, the mob will be stored in the self.owner_target variable
|
|
drops = [table] Table of items mob can drop. Example:
|
|
{
|
|
{name = "my_mob:meat_raw", chance = 1, min = 1, max = 3}
|
|
}
|
|
|
|
-- Obstacle Avoidance
|
|
obstacle_avoidance_range = [num] Multiplier for how far ahead the mob checks for obstacles.
|
|
surface_avoidance_range = [num] How close (in nodes) from the center of the mobs hitbox it will get to the water surface
|
|
floor_avoidance_range = [num] How close (in nodes) from the center of the mobs hitbox it will get to the water floor
|
|
|
|
-- For mobs that use mob_core.growth()
|
|
scale_stage1 = [num] Multiplier for how big the mob will be at growth stage 1 (default: 0.25)
|
|
scale_stage2 = [num] Multiplier for how big the mob will be at growth stage 2 (default: 0.5)
|
|
scale_stage3 = [num] Multiplier for how big the mob will be at growth stage 3 (default: 0.75)
|
|
|
|
-- For mobs that have unique textures for males, females, and children
|
|
female_textures = [table] Texture/Textures for female mobs
|
|
male_textures = [table] Texture/Textures for male mobs
|
|
child_textures = [table] Texture/Textures for child mobs
|
|
})
|
|
|
|
------------
|
|
Misc Functions (not specific to mobs but useful for new functions)
|
|
------------
|
|
|
|
function mob_core.find_val(tbl, val)
|
|
-- tbl: table
|
|
-- val: any value
|
|
-- return true if tbl contains val
|
|
|
|
|
|
------------
|
|
1. Required Functions
|
|
------------
|
|
|
|
function mob_core.on_step(self, dtime, moveresult)
|
|
-- REQUIRED, many functions will not work if this is not used
|
|
|
|
function mob_core.on_activate(self, staticdata, dtime_s)
|
|
-- REQUIRED, many functions will not work if this is not used
|
|
|
|
------------
|
|
2. Utility Functions
|
|
------------
|
|
|
|
These functions are used to get/set attributes quickly, as well as easily manage mobs
|
|
|
|
function mob_core.set_scale(self, scale)
|
|
-- Sets mobs scale (visual and collisionbox)
|
|
-- self: luaentity
|
|
-- scale: multiplier for moba current scale
|
|
|
|
function mob_core.set_owner(self, name)
|
|
-- Sets mobs owner
|
|
-- self: luaentity
|
|
-- name: name of player to set as owner
|
|
|
|
function mob_core.spawn_child(pos, mob)
|
|
-- Spawns a child mob
|
|
-- pos: position
|
|
-- mob: name of the mob to be spawned
|
|
|
|
mob_core.follow_holding(self, player)
|
|
-- Check if player is holding an item the mob follows
|
|
-- self: luaentity
|
|
-- player: player
|
|
|
|
function mob_core.shared_owner(self, object)
|
|
-- self: luaentity
|
|
-- object: luaentity or userdata
|
|
-- returns true if self and object have the same owner
|
|
|
|
function mob_core.is_mobkit_mob(object)
|
|
-- object: luaentity or userdata
|
|
-- returns true if object uses mobkit
|
|
|
|
function mob_core.register_spawn({
|
|
name = [string] mob name
|
|
nodes = [table] list of nodes to spawn mob on
|
|
min_light = [number] minimum light level
|
|
max_light = [number] maximum ligth level
|
|
min_height = [number] minimum world heigh
|
|
max_height = [number] maximum world heigh
|
|
min_rad = [number] minimum radius around player
|
|
max_rad = [number] maximum radius around player
|
|
group = [number] amount of mobs to spawn
|
|
}, interval, chance)
|
|
-- interval: how often (in seconds) to attempt spawning
|
|
-- chance: chance to attempt spawning
|
|
-- mob_core.registered_spawns[name].last_pos can be used to find the last position the mob/mobs were spawned
|
|
|
|
function mob_core.register_on_spawn(name, func, ...)
|
|
-- name: name of a mob
|
|
-- func: function
|
|
-- ...: params of func
|
|
-- func is called when 'name' is spawned
|
|
-- Ex: mob_core.register_on_spawn("my_mobs:alligator", minetest.chat_send_all, "an alligator has spawned")
|
|
|
|
------------
|
|
3. Interaction Functions
|
|
------------
|
|
|
|
These functions are used for player -> mob interactions, like right-clicking and punches
|
|
|
|
function mob_core.mount(self, clicker)
|
|
-- self: luaentity
|
|
-- clicker: player
|
|
|
|
function mob_core.mount(self, clicker, capture_tool, capture_chance, wear, force_take)
|
|
-- self: luaentity
|
|
-- clicker: player
|
|
-- capture_tool: itemstring
|
|
-- capture_chance: 1 / x chance
|
|
-- wear: amount of wear to be added to tool
|
|
-- force_take: boolean, true means any player can catch mob
|
|
|
|
function mob_core.feed_tame(self, clicker, feed_count, tame, breed)
|
|
-- self: luaentity
|
|
-- clicker: player
|
|
-- feed_count: amount of feeds to reach full hp
|
|
-- tame: bool, if true mob will be tamed when feed_count is met
|
|
-- breed: bool, if true self.breed_mode variable will be set to true when feed_count is met
|
|
|
|
function mob_core.protect(self, clicker, force_protect)
|
|
-- self: luaentity
|
|
-- clicker: player
|
|
-- force_protect: bool, if true any player can protect mob
|
|
|
|
|
|
function mob_core.nametag(self, clicker, force_name)
|
|
-- self: luaentity
|
|
-- clicker: player
|
|
-- force_protect: bool, if true any player can name mob
|
|
|
|
------------
|
|
4. Built-in behaviors
|
|
------------
|
|
|
|
function mob_core.item_drop(self)
|
|
-- self: luaentity
|
|
-- Mob drops items based on self.drops
|
|
|
|
function mob_core.on_die(self)
|
|
-- self: luaentity
|
|
-- Basic mob death (falls over, drops items, disappears)
|
|
|
|
function mob_core.fly_to_next_waypoint(self, tpos, speed_factor)
|
|
-- mob flies to tpos while avoiding obstacles
|
|
-- speed_factor: multiplier for self.max_speed
|
|
|
|
function mob_core.swim_to_next_waypoint(self, tpos, speed_factor)
|
|
-- mob swims to tpos while avoiding obstacles
|
|
-- speed_factor: multiplier for self.max_speed
|
|
|
|
function mob_core.goto_next_waypoint(self, tpos, speed_factor)
|
|
-- same was mobkit.goto_next_waypoint, but allows for walking into water
|
|
-- speed_factor: multiplier for self.max_speed
|
|
|
|
|
|
------------
|
|
5. Pathfinding
|
|
------------
|
|
|
|
function mob_core.find_path_lite(pos, tpos, width)
|
|
-- pos: position
|
|
-- tpos: position
|
|
-- wdith: number
|
|
-- Finds a path from pos to tpos, and adjusts away from walls to account for width
|
|
-- Note: This doesn't always return a path with appropriate width, but is faster than mob_core.find_path()
|
|
|
|
function mob_core.find_path(self, tpos)
|
|
-- self: luaentity
|
|
-- tpos: position
|
|
-- Finds a path to tpos, accounting for mob width
|
|
-- Note: This may not find a path 100% of the time |