2013-02-23 19:06:57 +01:00
|
|
|
/*
|
2013-03-17 12:16:57 +01:00
|
|
|
Minetest
|
2013-02-23 19:06:57 +01:00
|
|
|
Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU Lesser General Public License as published by
|
|
|
|
the Free Software Foundation; either version 2.1 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU Lesser General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Lesser General Public License along
|
|
|
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
*/
|
|
|
|
|
2017-08-17 22:19:39 +02:00
|
|
|
#pragma once
|
2013-02-23 19:06:57 +01:00
|
|
|
|
2013-08-11 04:09:45 +02:00
|
|
|
#include "lua_api/l_base.h"
|
|
|
|
#include "irrlichttypes.h"
|
2013-02-23 19:06:57 +01:00
|
|
|
|
2013-05-25 00:51:02 +02:00
|
|
|
class ServerActiveObject;
|
|
|
|
class LuaEntitySAO;
|
|
|
|
class PlayerSAO;
|
2016-10-08 10:38:04 +02:00
|
|
|
class RemotePlayer;
|
2013-02-23 19:06:57 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
ObjectRef
|
|
|
|
*/
|
|
|
|
|
2013-08-11 04:09:45 +02:00
|
|
|
class ObjectRef : public ModApiBase {
|
2013-02-23 19:06:57 +01:00
|
|
|
public:
|
2017-06-19 23:54:58 +02:00
|
|
|
ObjectRef(ServerActiveObject *object);
|
|
|
|
|
2017-08-19 22:23:47 +02:00
|
|
|
~ObjectRef() = default;
|
2017-06-19 23:54:58 +02:00
|
|
|
|
|
|
|
// Creates an ObjectRef and leaves it on top of stack
|
|
|
|
// Not callable from Lua; all references are created on the C side.
|
|
|
|
static void create(lua_State *L, ServerActiveObject *object);
|
|
|
|
|
|
|
|
static void set_null(lua_State *L);
|
|
|
|
|
|
|
|
static void Register(lua_State *L);
|
|
|
|
|
2013-02-23 19:06:57 +01:00
|
|
|
static ObjectRef *checkobject(lua_State *L, int narg);
|
|
|
|
|
|
|
|
static ServerActiveObject* getobject(ObjectRef *ref);
|
|
|
|
private:
|
2017-06-19 23:54:58 +02:00
|
|
|
ServerActiveObject *m_object = nullptr;
|
|
|
|
static const char className[];
|
2018-07-01 12:31:49 +02:00
|
|
|
static luaL_Reg methods[];
|
2017-06-19 23:54:58 +02:00
|
|
|
|
|
|
|
|
2013-02-23 19:06:57 +01:00
|
|
|
static LuaEntitySAO* getluaobject(ObjectRef *ref);
|
|
|
|
|
|
|
|
static PlayerSAO* getplayersao(ObjectRef *ref);
|
|
|
|
|
2016-10-08 19:08:23 +02:00
|
|
|
static RemotePlayer *getplayer(ObjectRef *ref);
|
2013-02-23 19:06:57 +01:00
|
|
|
|
|
|
|
// Exported functions
|
|
|
|
|
|
|
|
// garbage collector
|
|
|
|
static int gc_object(lua_State *L);
|
|
|
|
|
|
|
|
// remove(self)
|
|
|
|
static int l_remove(lua_State *L);
|
|
|
|
|
2017-01-16 14:08:59 +01:00
|
|
|
// get_pos(self)
|
2013-02-23 19:06:57 +01:00
|
|
|
// returns: {x=num, y=num, z=num}
|
2017-01-16 14:08:59 +01:00
|
|
|
static int l_get_pos(lua_State *L);
|
2013-02-23 19:06:57 +01:00
|
|
|
|
2017-01-16 14:08:59 +01:00
|
|
|
// set_pos(self, pos)
|
|
|
|
static int l_set_pos(lua_State *L);
|
2013-02-23 19:06:57 +01:00
|
|
|
|
2017-01-16 14:08:59 +01:00
|
|
|
// move_to(self, pos, continuous=false)
|
|
|
|
static int l_move_to(lua_State *L);
|
2013-02-23 19:06:57 +01:00
|
|
|
|
|
|
|
// punch(self, puncher, time_from_last_punch, tool_capabilities, dir)
|
|
|
|
static int l_punch(lua_State *L);
|
|
|
|
|
|
|
|
// right_click(self, clicker); clicker = an another ObjectRef
|
|
|
|
static int l_right_click(lua_State *L);
|
|
|
|
|
|
|
|
// set_hp(self, hp)
|
|
|
|
// hp = number of hitpoints (2 * number of hearts)
|
|
|
|
// returns: nil
|
|
|
|
static int l_set_hp(lua_State *L);
|
|
|
|
|
|
|
|
// get_hp(self)
|
|
|
|
// returns: number of hitpoints (2 * number of hearts)
|
|
|
|
// 0 if not applicable to this type of object
|
|
|
|
static int l_get_hp(lua_State *L);
|
|
|
|
|
|
|
|
// get_inventory(self)
|
|
|
|
static int l_get_inventory(lua_State *L);
|
|
|
|
|
|
|
|
// get_wield_list(self)
|
|
|
|
static int l_get_wield_list(lua_State *L);
|
|
|
|
|
|
|
|
// get_wield_index(self)
|
|
|
|
static int l_get_wield_index(lua_State *L);
|
|
|
|
|
|
|
|
// get_wielded_item(self)
|
|
|
|
static int l_get_wielded_item(lua_State *L);
|
|
|
|
|
|
|
|
// set_wielded_item(self, itemstack or itemstring or table or nil)
|
|
|
|
static int l_set_wielded_item(lua_State *L);
|
|
|
|
|
|
|
|
// set_armor_groups(self, groups)
|
|
|
|
static int l_set_armor_groups(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// get_armor_groups(self)
|
|
|
|
static int l_get_armor_groups(lua_State *L);
|
|
|
|
|
2013-12-03 18:51:15 +01:00
|
|
|
// set_physics_override(self, physics_override_speed, physics_override_jump,
|
2017-04-05 13:18:22 +02:00
|
|
|
// physics_override_gravity, sneak, sneak_glitch, new_move)
|
2013-04-05 13:03:28 +02:00
|
|
|
static int l_set_physics_override(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// get_physics_override(self)
|
|
|
|
static int l_get_physics_override(lua_State *L);
|
|
|
|
|
2015-02-21 22:38:53 +01:00
|
|
|
// set_animation(self, frame_range, frame_speed, frame_blend, frame_loop)
|
2013-02-23 19:06:57 +01:00
|
|
|
static int l_set_animation(lua_State *L);
|
|
|
|
|
2017-09-01 11:15:12 +02:00
|
|
|
// set_animation_frame_speed(self, frame_speed)
|
|
|
|
static int l_set_animation_frame_speed(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// get_animation(self)
|
|
|
|
static int l_get_animation(lua_State *L);
|
|
|
|
|
2013-02-23 19:06:57 +01:00
|
|
|
// set_bone_position(self, std::string bone, v3f position, v3f rotation)
|
|
|
|
static int l_set_bone_position(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// get_bone_position(self, bone)
|
|
|
|
static int l_get_bone_position(lua_State *L);
|
|
|
|
|
2013-02-23 19:06:57 +01:00
|
|
|
// set_attach(self, parent, bone, position, rotation)
|
|
|
|
static int l_set_attach(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// get_attach(self)
|
|
|
|
static int l_get_attach(lua_State *L);
|
|
|
|
|
2013-02-23 19:06:57 +01:00
|
|
|
// set_detach(self)
|
|
|
|
static int l_set_detach(lua_State *L);
|
|
|
|
|
|
|
|
// set_properties(self, properties)
|
|
|
|
static int l_set_properties(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// get_properties(self)
|
|
|
|
static int l_get_properties(lua_State *L);
|
|
|
|
|
2015-05-12 05:49:14 +02:00
|
|
|
// is_player(self)
|
|
|
|
static int l_is_player(lua_State *L);
|
|
|
|
|
2013-02-23 19:06:57 +01:00
|
|
|
/* LuaEntitySAO-only */
|
|
|
|
|
2017-01-16 14:08:59 +01:00
|
|
|
// set_velocity(self, {x=num, y=num, z=num})
|
|
|
|
static int l_set_velocity(lua_State *L);
|
2013-02-23 19:06:57 +01:00
|
|
|
|
2018-03-31 14:48:38 +02:00
|
|
|
// add_velocity(self, {x=num, y=num, z=num})
|
|
|
|
static int l_add_velocity(lua_State *L);
|
|
|
|
|
2017-01-16 14:08:59 +01:00
|
|
|
// get_velocity(self)
|
|
|
|
static int l_get_velocity(lua_State *L);
|
2013-02-23 19:06:57 +01:00
|
|
|
|
2017-01-16 14:08:59 +01:00
|
|
|
// set_acceleration(self, {x=num, y=num, z=num})
|
|
|
|
static int l_set_acceleration(lua_State *L);
|
2013-02-23 19:06:57 +01:00
|
|
|
|
2017-01-16 14:08:59 +01:00
|
|
|
// get_acceleration(self)
|
|
|
|
static int l_get_acceleration(lua_State *L);
|
2013-02-23 19:06:57 +01:00
|
|
|
|
2017-01-16 14:08:59 +01:00
|
|
|
// set_yaw(self, radians)
|
|
|
|
static int l_set_yaw(lua_State *L);
|
2013-02-23 19:06:57 +01:00
|
|
|
|
2017-01-16 14:08:59 +01:00
|
|
|
// get_yaw(self)
|
|
|
|
static int l_get_yaw(lua_State *L);
|
2013-02-23 19:06:57 +01:00
|
|
|
|
2017-01-16 14:08:59 +01:00
|
|
|
// set_texture_mod(self, mod)
|
|
|
|
static int l_set_texture_mod(lua_State *L);
|
2017-01-14 19:32:10 +01:00
|
|
|
|
|
|
|
// l_get_texture_mod(self)
|
|
|
|
static int l_get_texture_mod(lua_State *L);
|
2013-02-23 19:06:57 +01:00
|
|
|
|
2017-01-16 14:08:59 +01:00
|
|
|
// set_sprite(self, p={x=0,y=0}, num_frames=1, framelength=0.2,
|
2013-02-23 19:06:57 +01:00
|
|
|
// select_horiz_by_yawpitch=false)
|
2017-01-16 14:08:59 +01:00
|
|
|
static int l_set_sprite(lua_State *L);
|
2013-02-23 19:06:57 +01:00
|
|
|
|
|
|
|
// DEPRECATED
|
|
|
|
// get_entity_name(self)
|
|
|
|
static int l_get_entity_name(lua_State *L);
|
|
|
|
|
|
|
|
// get_luaentity(self)
|
|
|
|
static int l_get_luaentity(lua_State *L);
|
|
|
|
|
|
|
|
/* Player-only */
|
|
|
|
|
2013-11-17 08:57:40 +01:00
|
|
|
// is_player_connected(self)
|
|
|
|
static int l_is_player_connected(lua_State *L);
|
|
|
|
|
2013-02-23 19:06:57 +01:00
|
|
|
// get_player_name(self)
|
|
|
|
static int l_get_player_name(lua_State *L);
|
|
|
|
|
2015-06-25 14:57:10 +02:00
|
|
|
// get_player_velocity(self)
|
|
|
|
static int l_get_player_velocity(lua_State *L);
|
|
|
|
|
2013-02-23 19:06:57 +01:00
|
|
|
// get_look_dir(self)
|
|
|
|
static int l_get_look_dir(lua_State *L);
|
|
|
|
|
2016-06-17 21:57:27 +02:00
|
|
|
// DEPRECATED
|
2013-02-23 19:06:57 +01:00
|
|
|
// get_look_pitch(self)
|
|
|
|
static int l_get_look_pitch(lua_State *L);
|
|
|
|
|
2016-06-17 21:57:27 +02:00
|
|
|
// DEPRECATED
|
2013-02-23 19:06:57 +01:00
|
|
|
// get_look_yaw(self)
|
|
|
|
static int l_get_look_yaw(lua_State *L);
|
|
|
|
|
2016-06-17 21:57:27 +02:00
|
|
|
// get_look_pitch2(self)
|
|
|
|
static int l_get_look_vertical(lua_State *L);
|
|
|
|
|
|
|
|
// get_look_yaw2(self)
|
|
|
|
static int l_get_look_horizontal(lua_State *L);
|
|
|
|
|
|
|
|
// set_look_vertical(self, radians)
|
|
|
|
static int l_set_look_vertical(lua_State *L);
|
|
|
|
|
|
|
|
// set_look_horizontal(self, radians)
|
|
|
|
static int l_set_look_horizontal(lua_State *L);
|
|
|
|
|
|
|
|
// DEPRECATED
|
2013-03-17 12:16:57 +01:00
|
|
|
// set_look_pitch(self, radians)
|
|
|
|
static int l_set_look_pitch(lua_State *L);
|
|
|
|
|
2016-06-17 21:57:27 +02:00
|
|
|
// DEPRECATED
|
2013-03-17 12:16:57 +01:00
|
|
|
// set_look_yaw(self, radians)
|
|
|
|
static int l_set_look_yaw(lua_State *L);
|
|
|
|
|
2013-07-19 19:50:33 +02:00
|
|
|
// set_breath(self, breath)
|
|
|
|
static int l_set_breath(lua_State *L);
|
|
|
|
|
|
|
|
// get_breath(self, breath)
|
|
|
|
static int l_get_breath(lua_State *L);
|
|
|
|
|
2017-01-27 08:59:30 +01:00
|
|
|
// set_attribute(self, attribute, value)
|
|
|
|
static int l_set_attribute(lua_State *L);
|
|
|
|
|
|
|
|
// get_attribute(self, attribute)
|
|
|
|
static int l_get_attribute(lua_State *L);
|
|
|
|
|
2018-04-06 10:52:29 +02:00
|
|
|
// get_meta(self)
|
|
|
|
static int l_get_meta(lua_State *L);
|
|
|
|
|
2013-02-23 19:06:57 +01:00
|
|
|
// set_inventory_formspec(self, formspec)
|
|
|
|
static int l_set_inventory_formspec(lua_State *L);
|
|
|
|
|
|
|
|
// get_inventory_formspec(self) -> formspec
|
|
|
|
static int l_get_inventory_formspec(lua_State *L);
|
|
|
|
|
2018-03-28 17:04:41 +02:00
|
|
|
// set_formspec_prepend(self, formspec)
|
|
|
|
static int l_set_formspec_prepend(lua_State *L);
|
|
|
|
|
|
|
|
// get_formspec_prepend(self) -> formspec
|
|
|
|
static int l_get_formspec_prepend(lua_State *L);
|
|
|
|
|
2013-02-23 19:06:57 +01:00
|
|
|
// get_player_control(self)
|
|
|
|
static int l_get_player_control(lua_State *L);
|
|
|
|
|
|
|
|
// get_player_control_bits(self)
|
|
|
|
static int l_get_player_control_bits(lua_State *L);
|
|
|
|
|
2013-04-11 20:23:38 +02:00
|
|
|
// hud_add(self, id, form)
|
|
|
|
static int l_hud_add(lua_State *L);
|
|
|
|
|
|
|
|
// hud_rm(self, id)
|
2013-04-14 00:20:22 +02:00
|
|
|
static int l_hud_remove(lua_State *L);
|
2013-04-11 20:23:38 +02:00
|
|
|
|
|
|
|
// hud_change(self, id, stat, data)
|
|
|
|
static int l_hud_change(lua_State *L);
|
|
|
|
|
2013-05-25 00:51:02 +02:00
|
|
|
// hud_get_next_id(self)
|
|
|
|
static u32 hud_get_next_id(lua_State *L);
|
|
|
|
|
2013-04-11 20:23:38 +02:00
|
|
|
// hud_get(self, id)
|
|
|
|
static int l_hud_get(lua_State *L);
|
|
|
|
|
2013-04-26 01:27:22 +02:00
|
|
|
// hud_set_flags(self, flags)
|
|
|
|
static int l_hud_set_flags(lua_State *L);
|
2013-04-24 12:52:46 +02:00
|
|
|
|
2014-04-28 23:41:27 +02:00
|
|
|
// hud_get_flags()
|
|
|
|
static int l_hud_get_flags(lua_State *L);
|
|
|
|
|
2013-05-04 02:08:52 +02:00
|
|
|
// hud_set_hotbar_itemcount(self, hotbar_itemcount)
|
|
|
|
static int l_hud_set_hotbar_itemcount(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// hud_get_hotbar_itemcount(self)
|
|
|
|
static int l_hud_get_hotbar_itemcount(lua_State *L);
|
|
|
|
|
2013-09-03 19:51:40 +02:00
|
|
|
// hud_set_hotbar_image(self, name)
|
|
|
|
static int l_hud_set_hotbar_image(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// hud_get_hotbar_image(self)
|
|
|
|
static int l_hud_get_hotbar_image(lua_State *L);
|
|
|
|
|
2013-09-03 19:51:40 +02:00
|
|
|
// hud_set_hotbar_selected_image(self, name)
|
|
|
|
static int l_hud_set_hotbar_selected_image(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// hud_get_hotbar_selected_image(self)
|
|
|
|
static int l_hud_get_hotbar_selected_image(lua_State *L);
|
|
|
|
|
2017-04-28 04:06:49 +02:00
|
|
|
// set_sky(self, bgcolor, type, list, clouds = true)
|
2013-05-02 22:52:50 +02:00
|
|
|
static int l_set_sky(lua_State *L);
|
|
|
|
|
2017-04-28 04:06:49 +02:00
|
|
|
// get_sky(self)
|
2015-05-26 14:10:08 +02:00
|
|
|
static int l_get_sky(lua_State *L);
|
|
|
|
|
2017-03-17 10:39:47 +01:00
|
|
|
// set_clouds(self, {density=, color=, ambient=, height=, thickness=, speed=})
|
|
|
|
static int l_set_clouds(lua_State *L);
|
|
|
|
|
|
|
|
// get_clouds(self)
|
|
|
|
static int l_get_clouds(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// override_day_night_ratio(self, type)
|
2013-10-18 10:53:19 +02:00
|
|
|
static int l_override_day_night_ratio(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// get_day_night_ratio(self)
|
|
|
|
static int l_get_day_night_ratio(lua_State *L);
|
|
|
|
|
2014-04-11 15:32:46 +02:00
|
|
|
// set_local_animation(self, {stand/idle}, {walk}, {dig}, {walk+dig}, frame_speed)
|
2014-01-08 13:47:53 +01:00
|
|
|
static int l_set_local_animation(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// get_local_animation(self)
|
|
|
|
static int l_get_local_animation(lua_State *L);
|
|
|
|
|
2014-04-11 15:32:46 +02:00
|
|
|
// set_eye_offset(self, v3f first pv, v3f third pv)
|
|
|
|
static int l_set_eye_offset(lua_State *L);
|
|
|
|
|
2015-05-26 14:10:08 +02:00
|
|
|
// get_eye_offset(self)
|
|
|
|
static int l_get_eye_offset(lua_State *L);
|
|
|
|
|
2015-05-15 21:46:56 +02:00
|
|
|
// set_nametag_attributes(self, attributes)
|
|
|
|
static int l_set_nametag_attributes(lua_State *L);
|
2015-05-14 15:54:54 +02:00
|
|
|
|
2015-05-15 21:46:56 +02:00
|
|
|
// get_nametag_attributes(self)
|
|
|
|
static int l_get_nametag_attributes(lua_State *L);
|
2015-05-14 15:54:54 +02:00
|
|
|
|
2013-02-23 19:06:57 +01:00
|
|
|
};
|