Registration ------------ creatura.register_mob(name, mob definition) Mob Definition uses almost all entity definition params { max_health = 10 -- Maximum Health damage = 0 -- Damage dealt by mob speed = 4 -- Maximum Speed tracking_range = 16 -- Maximum range for finding entities/blocks despawn_after = 1500 -- Despawn after being active for this amount of time max_fall = 8 -- How far a mob can fall before taking damage (set to 0 to disable fall damage) turn_rate = 7 -- Turn Rate in rad/s bouyancy_multiplier = 1 -- Multiplier for bouyancy effects (set to 0 to disable bouyancy) hydrodynamics_multiplier = 1 -- Multiplier for hydroynamic effects (set to 0 to disable hydrodynamics) hitbox = { -- Hitbox params (Uses custom registration to force get_pos() to always return bottom of box) width = 0.5, (total width = width * 2. A width of 0.5 results in a box with a total width of 1) height = 1 (total height of box) } animations = { anim = {range = {x = 1, y = 10}, speed = 30, frame_blend = 0.3, loop = true} } drops = { {name = (itemstring), min = 1, max = 3, chance = 1}, } follow = { "farming:seed_wheat", "farming:seed_cotton" } utility_stack = { -- Every second, all utilities in the stack are evaluated -- Whichever utilitiy's get_score function returns the highest number will be executed -- If multiple utilities have the same score, the one with the highest index is executed [1] = { `utility` -- name of utility to evaluate `get_score` -- function (only accepts `self` as an arg) that returns a number } } activate_func = function(self, staticdata, dtime_s) -- called upon activation step_func = function(self, dtime, moveresult) -- called every server step death_func = function(self) -- called when mobs health drops to/below 0 } Lua Entity Methods ------------------ `move(pos, method, speed, animation)` - `pos`: position to move to - `method`: method used to move to `pos` - `speed`: multiplier for `speed` - `animation`: animation to play while moving `halt()` - stops movement `turn_to(yaw[, turn_rate])` - `yaw`: yaw (in radians) to turn to - `turn_rate`: turn rate in rad/s (default: 10) -- likely to be deprecated `set_gravity(gravity)` - `gravity`: vertical acceleration rate `set_forward_velocity(speed)` - `speed`: rate in m/s to travel forward at `set_vertical_velocity(speed)` - `speed`: rate in m/s to travel vertically at `apply_knockback(dir, power)` - `dir`: direction vector - `power`: multiplier for dir `punch_target(target)` - applies 'damage' to 'target' `hurt(damage)` - `damage`: number to subtract from health (ignores armor) `heal(health)` - `health`: number to add to health `get_center_pos()` - returns position at center of hitbox `pos_in_box(pos[, size])` - returns true if 'pos' is within hitbox - `size`: width of box to check in (optional) `animate(anim)` - sets animation to `anim` `set_texture(id, tbl)` - `id`: table index - `tbl`: table of textures `set_scale(x)` - `x`: multiplier for base scale (0.5 sets scale to half, 2 sets scale to double) `fix_attached_scale(parent)` - sets scale to appropriate value when attached to 'parent' - `parent`: object `memorize(id, val)` -- stores `val` to staticdata - `id`: key for table - `val`: value to store `forget(id)` -- removes `id` from staticdata `recall(id)` -- returns value of `id` from staticdata `timer(n)` -- returns true avery `n` seconds `get_hitbox()` -- returns current hitbox `get_height()` -- returns current height `get_visual_size()` -- returns current visual size `follow_wielded_item(player)` -- returns itemstack, item name of `player`s wielded item if item is in 'follow' `get_target(target)` -- returns if `target` is alive, if mob has a line of sight with `target`, `target`s position