mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 10:03:45 +01:00
Add get_wielded_item
This commit is contained in:
parent
44ca9c9cb2
commit
88df9fb5b6
@ -60,6 +60,28 @@ end)
|
|||||||
|
|
||||||
core.register_on_punchnode(function(pos, node)
|
core.register_on_punchnode(function(pos, node)
|
||||||
print("The local player punched a node!")
|
print("The local player punched a node!")
|
||||||
|
local itemstack = core.get_wielded_item()
|
||||||
|
--[[
|
||||||
|
-- getters
|
||||||
|
print(dump(itemstack:is_empty()))
|
||||||
|
print(dump(itemstack:get_name()))
|
||||||
|
print(dump(itemstack:get_count()))
|
||||||
|
print(dump(itemstack:get_wear()))
|
||||||
|
print(dump(itemstack:get_meta()))
|
||||||
|
print(dump(itemstack:get_metadata()))
|
||||||
|
print(dump(itemstack:is_known()))
|
||||||
|
--print(dump(itemstack:get_definition()))
|
||||||
|
print(dump(itemstack:get_tool_capabilities()))
|
||||||
|
print(dump(itemstack:to_string()))
|
||||||
|
print(dump(itemstack:to_table()))
|
||||||
|
-- setters
|
||||||
|
print(dump(itemstack:set_name("default:dirt")))
|
||||||
|
print(dump(itemstack:set_count("95")))
|
||||||
|
print(dump(itemstack:set_wear(934)))
|
||||||
|
print(dump(itemstack:get_meta()))
|
||||||
|
print(dump(itemstack:get_metadata()))
|
||||||
|
--]]
|
||||||
|
print(dump(itemstack:to_table()))
|
||||||
print("pos:" .. dump(pos))
|
print("pos:" .. dump(pos))
|
||||||
print("node:" .. dump(node))
|
print("node:" .. dump(node))
|
||||||
return false
|
return false
|
||||||
|
@ -721,6 +721,7 @@ Call these functions only at load time!
|
|||||||
* `minetest.after(time, func, ...)`
|
* `minetest.after(time, func, ...)`
|
||||||
* Call the function `func` after `time` seconds, may be fractional
|
* Call the function `func` after `time` seconds, may be fractional
|
||||||
* Optional: Variable number of arguments that are passed to `func`
|
* Optional: Variable number of arguments that are passed to `func`
|
||||||
|
|
||||||
### Map
|
### Map
|
||||||
* `minetest.get_node(pos)`
|
* `minetest.get_node(pos)`
|
||||||
* Returns the node at the given position as table in the format
|
* Returns the node at the given position as table in the format
|
||||||
@ -728,6 +729,11 @@ Call these functions only at load time!
|
|||||||
for unloaded areas.
|
for unloaded areas.
|
||||||
* `minetest.get_node_or_nil(pos)`
|
* `minetest.get_node_or_nil(pos)`
|
||||||
* Same as `get_node` but returns `nil` for unloaded areas.
|
* Same as `get_node` but returns `nil` for unloaded areas.
|
||||||
|
|
||||||
|
### Player
|
||||||
|
* `minetest.get_wielded_item()`
|
||||||
|
* Returns the itemstack the local player is holding
|
||||||
|
|
||||||
### Misc.
|
### Misc.
|
||||||
* `minetest.parse_json(string[, nullvalue])`: returns something
|
* `minetest.parse_json(string[, nullvalue])`: returns something
|
||||||
* Convert a string containing JSON data into the Lua equivalent
|
* Convert a string containing JSON data into the Lua equivalent
|
||||||
|
@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#define GAMEDEF_HEADER
|
#define GAMEDEF_HEADER
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
#include "irrlichttypes.h"
|
#include "irrlichttypes.h"
|
||||||
|
|
||||||
class IItemDefManager;
|
class IItemDefManager;
|
||||||
|
@ -25,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "lua_api/l_storage.h"
|
#include "lua_api/l_storage.h"
|
||||||
#include "lua_api/l_sound.h"
|
#include "lua_api/l_sound.h"
|
||||||
#include "lua_api/l_util.h"
|
#include "lua_api/l_util.h"
|
||||||
|
#include "lua_api/l_item.h"
|
||||||
|
|
||||||
ClientScripting::ClientScripting(Client *client):
|
ClientScripting::ClientScripting(Client *client):
|
||||||
ScriptApiBase()
|
ScriptApiBase()
|
||||||
@ -55,4 +56,6 @@ void ClientScripting::InitializeModApi(lua_State *L, int top)
|
|||||||
ModApiClient::Initialize(L, top);
|
ModApiClient::Initialize(L, top);
|
||||||
ModApiSound::Initialize(L, top);
|
ModApiSound::Initialize(L, top);
|
||||||
ModApiStorage::Initialize(L, top);
|
ModApiStorage::Initialize(L, top);
|
||||||
|
|
||||||
|
LuaItemStack::Register(L);
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "common/c_converter.h"
|
#include "common/c_converter.h"
|
||||||
#include "common/c_types.h"
|
#include "common/c_types.h"
|
||||||
#include "nodedef.h"
|
#include "nodedef.h"
|
||||||
#include "itemdef.h"
|
|
||||||
#include "object_properties.h"
|
#include "object_properties.h"
|
||||||
#include "cpp_api/s_node.h"
|
#include "cpp_api/s_node.h"
|
||||||
#include "lua_api/l_object.h"
|
#include "lua_api/l_object.h"
|
||||||
@ -784,7 +783,7 @@ bool string_to_enum(const EnumString *spec, int &result,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
ItemStack read_item(lua_State* L, int index,Server* srv)
|
ItemStack read_item(lua_State* L, int index, IItemDefManager *idef)
|
||||||
{
|
{
|
||||||
if(index < 0)
|
if(index < 0)
|
||||||
index = lua_gettop(L) + 1 + index;
|
index = lua_gettop(L) + 1 + index;
|
||||||
@ -803,7 +802,6 @@ ItemStack read_item(lua_State* L, int index,Server* srv)
|
|||||||
{
|
{
|
||||||
// Convert from itemstring
|
// Convert from itemstring
|
||||||
std::string itemstring = lua_tostring(L, index);
|
std::string itemstring = lua_tostring(L, index);
|
||||||
IItemDefManager *idef = srv->idef();
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ItemStack item;
|
ItemStack item;
|
||||||
@ -820,7 +818,6 @@ ItemStack read_item(lua_State* L, int index,Server* srv)
|
|||||||
else if(lua_istable(L, index))
|
else if(lua_istable(L, index))
|
||||||
{
|
{
|
||||||
// Convert from table
|
// Convert from table
|
||||||
IItemDefManager *idef = srv->idef();
|
|
||||||
std::string name = getstringfield_default(L, index, "name", "");
|
std::string name = getstringfield_default(L, index, "name", "");
|
||||||
int count = getintfield_default(L, index, "count", 1);
|
int count = getintfield_default(L, index, "count", 1);
|
||||||
int wear = getintfield_default(L, index, "wear", 0);
|
int wear = getintfield_default(L, index, "wear", 0);
|
||||||
@ -1187,7 +1184,7 @@ std::vector<ItemStack> read_items(lua_State *L, int index, Server *srv)
|
|||||||
if (items.size() < (u32) key) {
|
if (items.size() < (u32) key) {
|
||||||
items.resize(key);
|
items.resize(key);
|
||||||
}
|
}
|
||||||
items[key - 1] = read_item(L, -1, srv);
|
items[key - 1] = read_item(L, -1, srv->idef());
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
}
|
}
|
||||||
return items;
|
return items;
|
||||||
|
@ -38,6 +38,7 @@ extern "C" {
|
|||||||
#include "irrlichttypes_bloated.h"
|
#include "irrlichttypes_bloated.h"
|
||||||
#include "util/string.h"
|
#include "util/string.h"
|
||||||
#include "itemgroup.h"
|
#include "itemgroup.h"
|
||||||
|
#include "itemdef.h"
|
||||||
|
|
||||||
namespace Json { class Value; }
|
namespace Json { class Value; }
|
||||||
|
|
||||||
@ -77,7 +78,7 @@ void push_dig_params (lua_State *L,
|
|||||||
void push_hit_params (lua_State *L,
|
void push_hit_params (lua_State *L,
|
||||||
const HitParams ¶ms);
|
const HitParams ¶ms);
|
||||||
|
|
||||||
ItemStack read_item (lua_State *L, int index, Server *srv);
|
ItemStack read_item (lua_State *L, int index, IItemDefManager *idef);
|
||||||
|
|
||||||
struct TileAnimationParams read_animation_definition(lua_State *L, int index);
|
struct TileAnimationParams read_animation_definition(lua_State *L, int index);
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ bool ScriptApiItem::item_OnDrop(ItemStack &item,
|
|||||||
PCALL_RES(lua_pcall(L, 3, 1, error_handler));
|
PCALL_RES(lua_pcall(L, 3, 1, error_handler));
|
||||||
if (!lua_isnil(L, -1)) {
|
if (!lua_isnil(L, -1)) {
|
||||||
try {
|
try {
|
||||||
item = read_item(L,-1, getServer());
|
item = read_item(L, -1, getServer()->idef());
|
||||||
} catch (LuaError &e) {
|
} catch (LuaError &e) {
|
||||||
throw LuaError(std::string(e.what()) + ". item=" + item.name);
|
throw LuaError(std::string(e.what()) + ". item=" + item.name);
|
||||||
}
|
}
|
||||||
@ -74,7 +74,7 @@ bool ScriptApiItem::item_OnPlace(ItemStack &item,
|
|||||||
PCALL_RES(lua_pcall(L, 3, 1, error_handler));
|
PCALL_RES(lua_pcall(L, 3, 1, error_handler));
|
||||||
if (!lua_isnil(L, -1)) {
|
if (!lua_isnil(L, -1)) {
|
||||||
try {
|
try {
|
||||||
item = read_item(L,-1, getServer());
|
item = read_item(L, -1, getServer()->idef());
|
||||||
} catch (LuaError &e) {
|
} catch (LuaError &e) {
|
||||||
throw LuaError(std::string(e.what()) + ". item=" + item.name);
|
throw LuaError(std::string(e.what()) + ". item=" + item.name);
|
||||||
}
|
}
|
||||||
@ -101,7 +101,7 @@ bool ScriptApiItem::item_OnUse(ItemStack &item,
|
|||||||
PCALL_RES(lua_pcall(L, 3, 1, error_handler));
|
PCALL_RES(lua_pcall(L, 3, 1, error_handler));
|
||||||
if(!lua_isnil(L, -1)) {
|
if(!lua_isnil(L, -1)) {
|
||||||
try {
|
try {
|
||||||
item = read_item(L,-1, getServer());
|
item = read_item(L, -1, getServer()->idef());
|
||||||
} catch (LuaError &e) {
|
} catch (LuaError &e) {
|
||||||
throw LuaError(std::string(e.what()) + ". item=" + item.name);
|
throw LuaError(std::string(e.what()) + ". item=" + item.name);
|
||||||
}
|
}
|
||||||
@ -127,7 +127,7 @@ bool ScriptApiItem::item_OnSecondaryUse(ItemStack &item, ServerActiveObject *use
|
|||||||
PCALL_RES(lua_pcall(L, 3, 1, error_handler));
|
PCALL_RES(lua_pcall(L, 3, 1, error_handler));
|
||||||
if (!lua_isnil(L, -1)) {
|
if (!lua_isnil(L, -1)) {
|
||||||
try {
|
try {
|
||||||
item = read_item(L, -1, getServer());
|
item = read_item(L, -1, getServer()->idef());
|
||||||
} catch (LuaError &e) {
|
} catch (LuaError &e) {
|
||||||
throw LuaError(std::string(e.what()) + ". item=" + item.name);
|
throw LuaError(std::string(e.what()) + ". item=" + item.name);
|
||||||
}
|
}
|
||||||
@ -159,7 +159,7 @@ bool ScriptApiItem::item_OnCraft(ItemStack &item, ServerActiveObject *user,
|
|||||||
PCALL_RES(lua_pcall(L, 4, 1, error_handler));
|
PCALL_RES(lua_pcall(L, 4, 1, error_handler));
|
||||||
if (!lua_isnil(L, -1)) {
|
if (!lua_isnil(L, -1)) {
|
||||||
try {
|
try {
|
||||||
item = read_item(L,-1, getServer());
|
item = read_item(L, -1, getServer()->idef());
|
||||||
} catch (LuaError &e) {
|
} catch (LuaError &e) {
|
||||||
throw LuaError(std::string(e.what()) + ". item=" + item.name);
|
throw LuaError(std::string(e.what()) + ". item=" + item.name);
|
||||||
}
|
}
|
||||||
@ -191,7 +191,7 @@ bool ScriptApiItem::item_CraftPredict(ItemStack &item, ServerActiveObject *user,
|
|||||||
PCALL_RES(lua_pcall(L, 4, 1, error_handler));
|
PCALL_RES(lua_pcall(L, 4, 1, error_handler));
|
||||||
if (!lua_isnil(L, -1)) {
|
if (!lua_isnil(L, -1)) {
|
||||||
try {
|
try {
|
||||||
item = read_item(L,-1, getServer());
|
item = read_item(L, -1, getServer()->idef());
|
||||||
} catch (LuaError &e) {
|
} catch (LuaError &e) {
|
||||||
throw LuaError(std::string(e.what()) + ". item=" + item.name);
|
throw LuaError(std::string(e.what()) + ". item=" + item.name);
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,12 @@ Client *ModApiBase::getClient(lua_State *L)
|
|||||||
return getScriptApiBase(L)->getClient();
|
return getScriptApiBase(L)->getClient();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
IGameDef *ModApiBase::getGameDef(lua_State *L)
|
||||||
|
{
|
||||||
|
return getScriptApiBase(L)->getGameDef();
|
||||||
|
}
|
||||||
|
|
||||||
Environment *ModApiBase::getEnv(lua_State *L)
|
Environment *ModApiBase::getEnv(lua_State *L)
|
||||||
{
|
{
|
||||||
return getScriptApiBase(L)->getEnv();
|
return getScriptApiBase(L)->getEnv();
|
||||||
|
@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
#include "common/c_types.h"
|
#include "common/c_types.h"
|
||||||
#include "common/c_internal.h"
|
#include "common/c_internal.h"
|
||||||
|
#include "gamedef.h"
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include <lua.h>
|
#include <lua.h>
|
||||||
@ -46,6 +47,8 @@ public:
|
|||||||
static Client* getClient(lua_State *L);
|
static Client* getClient(lua_State *L);
|
||||||
#endif // !SERVER
|
#endif // !SERVER
|
||||||
|
|
||||||
|
static IGameDef* getGameDef(lua_State *L);
|
||||||
|
|
||||||
static Environment* getEnv(lua_State *L);
|
static Environment* getEnv(lua_State *L);
|
||||||
static GUIEngine* getGuiEngine(lua_State *L);
|
static GUIEngine* getGuiEngine(lua_State *L);
|
||||||
// When we are not loading the mod, this function returns "."
|
// When we are not loading the mod, this function returns "."
|
||||||
|
@ -25,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "gettext.h"
|
#include "gettext.h"
|
||||||
#include "common/c_converter.h"
|
#include "common/c_converter.h"
|
||||||
#include "common/c_content.h"
|
#include "common/c_content.h"
|
||||||
|
#include "lua_api/l_item.h"
|
||||||
|
|
||||||
int ModApiClient::l_get_current_modname(lua_State *L)
|
int ModApiClient::l_get_current_modname(lua_State *L)
|
||||||
{
|
{
|
||||||
@ -132,6 +133,23 @@ int ModApiClient::l_get_node_or_nil(lua_State *L)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ModApiClient::l_get_wielded_item(lua_State *L)
|
||||||
|
{
|
||||||
|
Client *client = getClient(L);
|
||||||
|
|
||||||
|
Inventory local_inventory(client->idef());
|
||||||
|
client->getLocalInventory(local_inventory);
|
||||||
|
|
||||||
|
InventoryList *mlist = local_inventory.getList("main");
|
||||||
|
|
||||||
|
if (mlist && client->getPlayerItem() < mlist->getSize()) {
|
||||||
|
LuaItemStack::create(L, mlist->getItem(client->getPlayerItem()));
|
||||||
|
} else {
|
||||||
|
LuaItemStack::create(L, ItemStack());
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
void ModApiClient::Initialize(lua_State *L, int top)
|
void ModApiClient::Initialize(lua_State *L, int top)
|
||||||
{
|
{
|
||||||
API_FCT(get_current_modname);
|
API_FCT(get_current_modname);
|
||||||
@ -143,4 +161,5 @@ void ModApiClient::Initialize(lua_State *L, int top)
|
|||||||
API_FCT(gettext);
|
API_FCT(gettext);
|
||||||
API_FCT(get_node);
|
API_FCT(get_node);
|
||||||
API_FCT(get_node_or_nil);
|
API_FCT(get_node_or_nil);
|
||||||
|
API_FCT(get_wielded_item);
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,8 @@ private:
|
|||||||
// get_node_or_nil(pos)
|
// get_node_or_nil(pos)
|
||||||
static int l_get_node_or_nil(lua_State *L);
|
static int l_get_node_or_nil(lua_State *L);
|
||||||
|
|
||||||
|
// get_wielded_item()
|
||||||
|
static int l_get_wielded_item(lua_State *L);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void Initialize(lua_State *L, int top);
|
static void Initialize(lua_State *L, int top);
|
||||||
|
@ -472,7 +472,7 @@ int ModApiEnvMod::l_add_item(lua_State *L)
|
|||||||
// pos
|
// pos
|
||||||
//v3f pos = checkFloatPos(L, 1);
|
//v3f pos = checkFloatPos(L, 1);
|
||||||
// item
|
// item
|
||||||
ItemStack item = read_item(L, 2,getServer(L));
|
ItemStack item = read_item(L, 2,getServer(L)->idef());
|
||||||
if(item.empty() || !item.isKnown(getServer(L)->idef()))
|
if(item.empty() || !item.isKnown(getServer(L)->idef()))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ int InvRef::l_set_stack(lua_State *L)
|
|||||||
InvRef *ref = checkobject(L, 1);
|
InvRef *ref = checkobject(L, 1);
|
||||||
const char *listname = luaL_checkstring(L, 2);
|
const char *listname = luaL_checkstring(L, 2);
|
||||||
int i = luaL_checknumber(L, 3) - 1;
|
int i = luaL_checknumber(L, 3) - 1;
|
||||||
ItemStack newitem = read_item(L, 4, getServer(L));
|
ItemStack newitem = read_item(L, 4, getServer(L)->idef());
|
||||||
InventoryList *list = getlist(L, ref, listname);
|
InventoryList *list = getlist(L, ref, listname);
|
||||||
if(list != NULL && i >= 0 && i < (int) list->getSize()){
|
if(list != NULL && i >= 0 && i < (int) list->getSize()){
|
||||||
list->changeItem(i, newitem);
|
list->changeItem(i, newitem);
|
||||||
@ -295,7 +295,7 @@ int InvRef::l_add_item(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
InvRef *ref = checkobject(L, 1);
|
InvRef *ref = checkobject(L, 1);
|
||||||
const char *listname = luaL_checkstring(L, 2);
|
const char *listname = luaL_checkstring(L, 2);
|
||||||
ItemStack item = read_item(L, 3, getServer(L));
|
ItemStack item = read_item(L, 3, getServer(L)->idef());
|
||||||
InventoryList *list = getlist(L, ref, listname);
|
InventoryList *list = getlist(L, ref, listname);
|
||||||
if(list){
|
if(list){
|
||||||
ItemStack leftover = list->addItem(item);
|
ItemStack leftover = list->addItem(item);
|
||||||
@ -315,7 +315,7 @@ int InvRef::l_room_for_item(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
InvRef *ref = checkobject(L, 1);
|
InvRef *ref = checkobject(L, 1);
|
||||||
const char *listname = luaL_checkstring(L, 2);
|
const char *listname = luaL_checkstring(L, 2);
|
||||||
ItemStack item = read_item(L, 3, getServer(L));
|
ItemStack item = read_item(L, 3, getServer(L)->idef());
|
||||||
InventoryList *list = getlist(L, ref, listname);
|
InventoryList *list = getlist(L, ref, listname);
|
||||||
if(list){
|
if(list){
|
||||||
lua_pushboolean(L, list->roomForItem(item));
|
lua_pushboolean(L, list->roomForItem(item));
|
||||||
@ -332,7 +332,7 @@ int InvRef::l_contains_item(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
InvRef *ref = checkobject(L, 1);
|
InvRef *ref = checkobject(L, 1);
|
||||||
const char *listname = luaL_checkstring(L, 2);
|
const char *listname = luaL_checkstring(L, 2);
|
||||||
ItemStack item = read_item(L, 3, getServer(L));
|
ItemStack item = read_item(L, 3, getServer(L)->idef());
|
||||||
InventoryList *list = getlist(L, ref, listname);
|
InventoryList *list = getlist(L, ref, listname);
|
||||||
if(list){
|
if(list){
|
||||||
lua_pushboolean(L, list->containsItem(item));
|
lua_pushboolean(L, list->containsItem(item));
|
||||||
@ -349,7 +349,7 @@ int InvRef::l_remove_item(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
InvRef *ref = checkobject(L, 1);
|
InvRef *ref = checkobject(L, 1);
|
||||||
const char *listname = luaL_checkstring(L, 2);
|
const char *listname = luaL_checkstring(L, 2);
|
||||||
ItemStack item = read_item(L, 3, getServer(L));
|
ItemStack item = read_item(L, 3, getServer(L)->idef());
|
||||||
InventoryList *list = getlist(L, ref, listname);
|
InventoryList *list = getlist(L, ref, listname);
|
||||||
if(list){
|
if(list){
|
||||||
ItemStack removed = list->removeItem(item);
|
ItemStack removed = list->removeItem(item);
|
||||||
|
@ -190,7 +190,7 @@ int LuaItemStack::l_replace(lua_State *L)
|
|||||||
{
|
{
|
||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
LuaItemStack *o = checkobject(L, 1);
|
LuaItemStack *o = checkobject(L, 1);
|
||||||
o->m_stack = read_item(L,2,getServer(L));
|
o->m_stack = read_item(L, 2, getGameDef(L)->idef());
|
||||||
lua_pushboolean(L, true);
|
lua_pushboolean(L, true);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -250,7 +250,7 @@ int LuaItemStack::l_get_stack_max(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
LuaItemStack *o = checkobject(L, 1);
|
LuaItemStack *o = checkobject(L, 1);
|
||||||
ItemStack &item = o->m_stack;
|
ItemStack &item = o->m_stack;
|
||||||
lua_pushinteger(L, item.getStackMax(getServer(L)->idef()));
|
lua_pushinteger(L, item.getStackMax(getGameDef(L)->idef()));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -260,7 +260,7 @@ int LuaItemStack::l_get_free_space(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
LuaItemStack *o = checkobject(L, 1);
|
LuaItemStack *o = checkobject(L, 1);
|
||||||
ItemStack &item = o->m_stack;
|
ItemStack &item = o->m_stack;
|
||||||
lua_pushinteger(L, item.freeSpace(getServer(L)->idef()));
|
lua_pushinteger(L, item.freeSpace(getGameDef(L)->idef()));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -271,7 +271,7 @@ int LuaItemStack::l_is_known(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
LuaItemStack *o = checkobject(L, 1);
|
LuaItemStack *o = checkobject(L, 1);
|
||||||
ItemStack &item = o->m_stack;
|
ItemStack &item = o->m_stack;
|
||||||
bool is_known = item.isKnown(getServer(L)->idef());
|
bool is_known = item.isKnown(getGameDef(L)->idef());
|
||||||
lua_pushboolean(L, is_known);
|
lua_pushboolean(L, is_known);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -307,7 +307,7 @@ int LuaItemStack::l_get_tool_capabilities(lua_State *L)
|
|||||||
LuaItemStack *o = checkobject(L, 1);
|
LuaItemStack *o = checkobject(L, 1);
|
||||||
ItemStack &item = o->m_stack;
|
ItemStack &item = o->m_stack;
|
||||||
const ToolCapabilities &prop =
|
const ToolCapabilities &prop =
|
||||||
item.getToolCapabilities(getServer(L)->idef());
|
item.getToolCapabilities(getGameDef(L)->idef());
|
||||||
push_tool_capabilities(L, prop);
|
push_tool_capabilities(L, prop);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -322,7 +322,7 @@ int LuaItemStack::l_add_wear(lua_State *L)
|
|||||||
LuaItemStack *o = checkobject(L, 1);
|
LuaItemStack *o = checkobject(L, 1);
|
||||||
ItemStack &item = o->m_stack;
|
ItemStack &item = o->m_stack;
|
||||||
int amount = lua_tointeger(L, 2);
|
int amount = lua_tointeger(L, 2);
|
||||||
bool result = item.addWear(amount, getServer(L)->idef());
|
bool result = item.addWear(amount, getGameDef(L)->idef());
|
||||||
lua_pushboolean(L, result);
|
lua_pushboolean(L, result);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -334,8 +334,8 @@ int LuaItemStack::l_add_item(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
LuaItemStack *o = checkobject(L, 1);
|
LuaItemStack *o = checkobject(L, 1);
|
||||||
ItemStack &item = o->m_stack;
|
ItemStack &item = o->m_stack;
|
||||||
ItemStack newitem = read_item(L,-1, getServer(L));
|
ItemStack newitem = read_item(L, -1, getGameDef(L)->idef());
|
||||||
ItemStack leftover = item.addItem(newitem, getServer(L)->idef());
|
ItemStack leftover = item.addItem(newitem, getGameDef(L)->idef());
|
||||||
create(L, leftover);
|
create(L, leftover);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -348,9 +348,9 @@ int LuaItemStack::l_item_fits(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
LuaItemStack *o = checkobject(L, 1);
|
LuaItemStack *o = checkobject(L, 1);
|
||||||
ItemStack &item = o->m_stack;
|
ItemStack &item = o->m_stack;
|
||||||
ItemStack newitem = read_item(L, 2, getServer(L));
|
ItemStack newitem = read_item(L, 2, getGameDef(L)->idef());
|
||||||
ItemStack restitem;
|
ItemStack restitem;
|
||||||
bool fits = item.itemFits(newitem, &restitem, getServer(L)->idef());
|
bool fits = item.itemFits(newitem, &restitem, getGameDef(L)->idef());
|
||||||
lua_pushboolean(L, fits); // first return value
|
lua_pushboolean(L, fits); // first return value
|
||||||
create(L, restitem); // second return value
|
create(L, restitem); // second return value
|
||||||
return 2;
|
return 2;
|
||||||
@ -407,7 +407,7 @@ ItemStack& LuaItemStack::getItem()
|
|||||||
int LuaItemStack::create_object(lua_State *L)
|
int LuaItemStack::create_object(lua_State *L)
|
||||||
{
|
{
|
||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
ItemStack item = read_item(L, 1, getServer(L));
|
ItemStack item = read_item(L, 1, getGameDef(L)->idef());
|
||||||
LuaItemStack *o = new LuaItemStack(item);
|
LuaItemStack *o = new LuaItemStack(item);
|
||||||
*(void **)(lua_newuserdata(L, sizeof(void *))) = o;
|
*(void **)(lua_newuserdata(L, sizeof(void *))) = o;
|
||||||
luaL_getmetatable(L, className);
|
luaL_getmetatable(L, className);
|
||||||
@ -596,7 +596,7 @@ int ModApiItemMod::l_get_content_id(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
std::string name = luaL_checkstring(L, 1);
|
std::string name = luaL_checkstring(L, 1);
|
||||||
|
|
||||||
INodeDefManager *ndef = getServer(L)->getNodeDefManager();
|
INodeDefManager *ndef = getGameDef(L)->getNodeDefManager();
|
||||||
content_t c = ndef->getId(name);
|
content_t c = ndef->getId(name);
|
||||||
|
|
||||||
lua_pushinteger(L, c);
|
lua_pushinteger(L, c);
|
||||||
@ -609,7 +609,7 @@ int ModApiItemMod::l_get_name_from_content_id(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
content_t c = luaL_checkint(L, 1);
|
content_t c = luaL_checkint(L, 1);
|
||||||
|
|
||||||
INodeDefManager *ndef = getServer(L)->getNodeDefManager();
|
INodeDefManager *ndef = getGameDef(L)->getNodeDefManager();
|
||||||
const char *name = ndef->get(c).name.c_str();
|
const char *name = ndef->get(c).name.c_str();
|
||||||
|
|
||||||
lua_pushstring(L, name);
|
lua_pushstring(L, name);
|
||||||
|
@ -364,7 +364,7 @@ int ObjectRef::l_set_wielded_item(lua_State *L)
|
|||||||
ServerActiveObject *co = getobject(ref);
|
ServerActiveObject *co = getobject(ref);
|
||||||
if (co == NULL) return 0;
|
if (co == NULL) return 0;
|
||||||
// Do it
|
// Do it
|
||||||
ItemStack item = read_item(L, 2, getServer(L));
|
ItemStack item = read_item(L, 2, getServer(L)->idef());
|
||||||
bool success = co->setWieldedItem(item);
|
bool success = co->setWieldedItem(item);
|
||||||
if (success && co->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
if (success && co->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
||||||
getServer(L)->SendInventory(((PlayerSAO*)co));
|
getServer(L)->SendInventory(((PlayerSAO*)co));
|
||||||
|
Loading…
Reference in New Issue
Block a user