forked from Mirrorlandia_minetest/minetest
parent
3f271564e0
commit
2c4cf508a9
@ -14,6 +14,9 @@ print("Server version: " .. server_info.protocol_version)
|
|||||||
print("Server ip: " .. server_info.ip)
|
print("Server ip: " .. server_info.ip)
|
||||||
print("Server address: " .. server_info.address)
|
print("Server address: " .. server_info.address)
|
||||||
print("Server port: " .. server_info.port)
|
print("Server port: " .. server_info.port)
|
||||||
|
|
||||||
|
print("CSM restrictions: " .. dump(core.get_csm_restrictions()))
|
||||||
|
|
||||||
mod_channel = core.mod_channel_join("experimental_preview")
|
mod_channel = core.mod_channel_join("experimental_preview")
|
||||||
|
|
||||||
core.after(4, function()
|
core.after(4, function()
|
||||||
|
@ -649,6 +649,11 @@ Minetest namespace reference
|
|||||||
* `minetest.sha1(data, [raw])`: returns the sha1 hash of data
|
* `minetest.sha1(data, [raw])`: returns the sha1 hash of data
|
||||||
* `data`: string of data to hash
|
* `data`: string of data to hash
|
||||||
* `raw`: return raw bytes instead of hex digits, default: false
|
* `raw`: return raw bytes instead of hex digits, default: false
|
||||||
|
* `minetest.get_csm_restrictions()`: returns a table of `Flags` indicating the
|
||||||
|
restrictions applied to the current mod.
|
||||||
|
* If a flag in this table is set to true, the feature is RESTRICTED.
|
||||||
|
* Possible flags: `load_client_mods`, `chat_messages`, `read_itemdefs`,
|
||||||
|
`read_nodedefs`, `lookup_nodes`, `read_playerinfo`
|
||||||
|
|
||||||
### Logging
|
### Logging
|
||||||
* `minetest.debug(...)`
|
* `minetest.debug(...)`
|
||||||
|
@ -410,6 +410,11 @@ public:
|
|||||||
return m_address_name;
|
return m_address_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline u64 getCSMRestrictionFlags() const
|
||||||
|
{
|
||||||
|
return m_csm_restriction_flags;
|
||||||
|
}
|
||||||
|
|
||||||
inline bool checkCSMRestrictionFlag(CSMRestrictionFlags flag) const
|
inline bool checkCSMRestrictionFlag(CSMRestrictionFlags flag) const
|
||||||
{
|
{
|
||||||
return m_csm_restriction_flags & flag;
|
return m_csm_restriction_flags & flag;
|
||||||
|
@ -39,6 +39,27 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#define checkCSMRestrictionFlag(flag) \
|
#define checkCSMRestrictionFlag(flag) \
|
||||||
( getClient(L)->checkCSMRestrictionFlag(CSMRestrictionFlags::flag) )
|
( getClient(L)->checkCSMRestrictionFlag(CSMRestrictionFlags::flag) )
|
||||||
|
|
||||||
|
// Not the same as FlagDesc, which contains an `u32 flag`
|
||||||
|
struct CSMFlagDesc {
|
||||||
|
const char *name;
|
||||||
|
u64 flag;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
FIXME: This should eventually be moved somewhere else
|
||||||
|
It also needs to be kept in sync with the definition of CSMRestrictionFlags
|
||||||
|
in network/networkprotocol.h
|
||||||
|
*/
|
||||||
|
const static CSMFlagDesc flagdesc_csm_restriction[] = {
|
||||||
|
{"load_client_mods", CSM_RF_LOAD_CLIENT_MODS},
|
||||||
|
{"chat_messages", CSM_RF_CHAT_MESSAGES},
|
||||||
|
{"read_itemdefs", CSM_RF_READ_ITEMDEFS},
|
||||||
|
{"read_nodedefs", CSM_RF_READ_NODEDEFS},
|
||||||
|
{"lookup_nodes", CSM_RF_LOOKUP_NODES},
|
||||||
|
{"read_playerinfo", CSM_RF_READ_PLAYERINFO},
|
||||||
|
{NULL, 0}
|
||||||
|
};
|
||||||
|
|
||||||
// get_current_modname()
|
// get_current_modname()
|
||||||
int ModApiClient::l_get_current_modname(lua_State *L)
|
int ModApiClient::l_get_current_modname(lua_State *L)
|
||||||
{
|
{
|
||||||
@ -363,6 +384,19 @@ int ModApiClient::l_get_builtin_path(lua_State *L)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get_csm_restrictions()
|
||||||
|
int ModApiClient::l_get_csm_restrictions(lua_State *L)
|
||||||
|
{
|
||||||
|
u64 flags = getClient(L)->getCSMRestrictionFlags();
|
||||||
|
const CSMFlagDesc *flagdesc = flagdesc_csm_restriction;
|
||||||
|
|
||||||
|
lua_newtable(L);
|
||||||
|
for (int i = 0; flagdesc[i].name; i++) {
|
||||||
|
setboolfield(L, -1, flagdesc[i].name, !!(flags & flagdesc[i].flag));
|
||||||
|
}
|
||||||
|
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);
|
||||||
@ -389,4 +423,5 @@ void ModApiClient::Initialize(lua_State *L, int top)
|
|||||||
API_FCT(get_privilege_list);
|
API_FCT(get_privilege_list);
|
||||||
API_FCT(get_builtin_path);
|
API_FCT(get_builtin_path);
|
||||||
API_FCT(get_language);
|
API_FCT(get_language);
|
||||||
|
API_FCT(get_csm_restrictions);
|
||||||
}
|
}
|
||||||
|
@ -96,6 +96,9 @@ private:
|
|||||||
// get_builtin_path()
|
// get_builtin_path()
|
||||||
static int l_get_builtin_path(lua_State *L);
|
static int l_get_builtin_path(lua_State *L);
|
||||||
|
|
||||||
|
// get_csm_restrictions()
|
||||||
|
static int l_get_csm_restrictions(lua_State *L);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void Initialize(lua_State *L, int top);
|
static void Initialize(lua_State *L, int top);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user