Class boomstick.Projectile

Projectile class from which custom projectiles can be created.

Usage:

    local myprojectile = boomstick.Projectile:new({
        _name = "Pellet",
        _item_name = "pellet",
        _entity_name = "boomstick:pellet",
    
        -- How fast our projectile will go (optional)
        _velocity = 50,
    
        -- How long until our projectile should despawn (optional)
        _lifetime = 2.5,
    
        -- How much damage each projectile will do
        _damage = 6,
    
        initial_properties = {
            -- Use a sprite for our projectile (instead of a mesh)
            visual = "sprite",
            textures = {"boomstick_projectile_pellet.png"},
    
            -- If we want our projectile to be able to hit things
            physical = true,
            collide_with_objects = true,
    
            -- How big our projectile looks
            visual_size = {y = 0.1, x = 0.1, z = 0.1},
    
            -- How big our projectile is for collision purposes
            collisionbox = {-0.01, 0, -0.01, 0.01, 0.01, 0.01}
        }
    })
    
    -- Register the entity with the Minetest engine
    minetest.register_entity("boomstick:pellet", PelletProjectile)
    

Functions

boomstick_api.Projectile:set_owner (player) Registers a callback function to be called when the projectile has a collision.
boomstick_api.Projectile:get_owner (func) Registers a callback function to be called when the projectile has a collision.
boomstick_api.Projectile:register_on_collision (func) Registers a callback function to be called when the projectile has a collision.
boomstick_api.Projectile:collision_is_projectile (collision) For determining whether or not a projectile collided with another projectile.
boomstick_api.Projectile:do_damage (collision) Deal damage to whatever object or node the projectile collided with.
boomstick_api.Projectile:get_velocity (player) Given a player look direction and a velocity value, create a vector that sends the projectile off in the direction the player is pointing.
boomstick_api.Projectile:get_acceleration (player, accuracy) Given a player position and an accuracy value, create a randomized vector for the projectiles acceleration
boomstick_api.Projectile:get_position (player, accuracy) Given a player position and an accuracy value, create a randomized position that the projectile should be spawned in at.


Functions

boomstick_api.Projectile:set_owner (player)
Registers a callback function to be called when the projectile has a collision. If you'd like certain behavior to happen when a projectile collides with something, you can pass another function as an argument to this function, and it will be executed when the projectile collides with something.

Note: Unless you're doing something special, the owner of the weapon should be the player who is holding it.

Parameters:

  • player ObjectRef An ObjectRef of the player that will own the weapon.
boomstick_api.Projectile:get_owner (func)
Registers a callback function to be called when the projectile has a collision. If you'd like certain behavior to happen when a projectile collides with something, you can pass another function as an argument to this function, and it will be executed when the projectile collides with something.

Note: It is usually not necesary to call this function directly to create a new weapon, unless you are extending the mod or making custom behavior.

Parameters:

  • func function Function to be executed on collision.
boomstick_api.Projectile:register_on_collision (func)
Registers a callback function to be called when the projectile has a collision. If you'd like certain behavior to happen when a projectile collides with something, you can pass another function as an argument to this function, and it will be executed when the projectile collides with something.

Parameters:

  • func function Function to be executed on collision.
boomstick_api.Projectile:collision_is_projectile (collision)
For determining whether or not a projectile collided with another projectile. Sometimes (especially with shotguns) projectiles will collide with one another. It is often necessary to check if a collision happened between two projectiles, so that we can do something (usually ignore it). Otherwise projectiles would deal damage to one another.

Parameters:

  • collision Collision object returned by Minetest

Returns:

    boolean whether or not the projectile collided with another projectile.
boomstick_api.Projectile:do_damage (collision)
Deal damage to whatever object or node the projectile collided with. This is how we actually make projectiles do damage when they hit their target.

Parameters:

  • collision Collision object returned by Minetest

Returns:

    bool whether or not the projectile collided with another projectile.
boomstick_api.Projectile:get_velocity (player)
Given a player look direction and a velocity value, create a vector that sends the projectile off in the direction the player is pointing.

Parameters:

  • player
    • A player ObjectRef. This is the player who fired the weapon.
boomstick_api.Projectile:get_acceleration (player, accuracy)
Given a player position and an accuracy value, create a randomized vector for the projectiles acceleration

Parameters:

  • player
    • A player ObjectRef. This is the player who fired the weapon.
  • accuracy
    • An accuracy value that will determine randomized acceleration spread
boomstick_api.Projectile:get_position (player, accuracy)
Given a player position and an accuracy value, create a randomized position that the projectile should be spawned in at.

Parameters:

  • player
    • A player ObjectRef. This is the player who fired the weapon.
  • accuracy
    • An accuracy value that will determine randomized acceleration spread
generated by LDoc 1.4.6