1 local minecraftaliases
= true
4 if minetest
.get_modpath("intllib") then
7 S
= function(s
,a
,...)a
={a
,...}return s
:gsub("@(%d+)",function(n
)return a
[tonumber(n
)]end)end
10 local function handle_clear_command(giver
, receiver
)
11 if receiver
== "" then
14 local receiverref
= minetest
.get_player_by_name(receiver
)
15 if receiverref
== nil then
16 return false, S("Player @1 does not exist.", receiver
)
18 if receiverref
:get_inventory():is_empty("main") then
19 if giver
== receiver
then
20 return false, S("Your inventory is already clear.")
22 return false, S("@1's inventory is already clear.", receiver
)
25 if not giver
== receiver
then
26 minetest
.log("action", S("@1 cleared @2's inventory", giver
, receiver
))
28 for i
=0,receiverref
:get_inventory():get_size("main") do
29 receiverref
:get_inventory():set_stack("main", i
, nil)
31 if giver
== receiver
then
32 return true, S("Your inventory was cleared.")
34 minetest
.chat_send_player(receiver
, S("Your inventory was cleared."))
35 return true, S("@1's inventory was cleared.", receiver
)
39 local function handle_kill_command(suspect
, victim
)
40 if not minetest
.settings
:get_bool("damage_enabled") then
41 return false, S("Players can't be killed right now, damage has been disabled.")
43 local victimref
= minetest
.get_player_by_name(victim
)
44 if victimref
== nil then
45 return false, S("Player @1 does not exist.", victim
)
46 elseif victimref
:get_hp() <= 0 then
47 if suspect
== victim
then
48 return false, S("You are already dead")
50 return false, S("@1 is already dead", victim
)
53 if not suspect
== victim
then
54 minetest
.log("action", S("@1 killed @2", suspect
, victim
))
59 minetest
.register_privilege("clear", {
60 description
= S("Can use /clear"),
61 give_to_singleplayer
= false
63 minetest
.register_privilege("kill", {
64 description
= S("Can use /kill"),
65 give_to_singleplayer
= false,
67 minetest
.register_privilege("announce", {
68 description
= S("Can use /say"),
69 give_to_singleplayer
= false,
72 minetest
.register_chatcommand("clear", {
74 description
= S("Clear inventory of player"),
76 func
= function(name
, param
)
77 return handle_clear_command(name
, param
)
81 minetest
.register_chatcommand("kill", {
82 params
= S("[<name>]"),
83 description
= S("Kill player"),
85 func
= function(name
, param
)
88 return handle_kill_command(name
, name
)
90 return handle_kill_command(name
, param
)
95 minetest
.register_chatcommand("say", {
96 params
= S("<message>"),
97 description
= S("Send a message to every player"),
98 privs
= {announce
=true},
99 func
= function(name
, param
)
101 return false, S("Invalid usage, see /help say.")
103 minetest
.chat_send_all(("["..name
.."] "..param
))
108 minetest
.register_chatcommand("setblock", {
109 params
= S("<X>,<Y>,<Z> <NodeString>"),
110 description
= S("Set node at given position"),
111 privs
= {give
=true, interact
=true},
112 func
= function(name
, param
)
114 local nodestring
= nil
115 p
.x
, p
.y
, p
.z
, nodestring
= param
:match("^([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+) +(.+)$")
116 p
.x
, p
.y
, p
.z
= tonumber(p
.x
), tonumber(p
.y
), tonumber(p
.z
)
117 if p
.x
and p
.y
and p
.z
and nodestring
then
118 local itemstack
= ItemStack(nodestring
)
119 if itemstack
:is_empty() or not minetest
.registered_nodes
[itemstack
:get_name()] then
120 return false, S("Invalid node")
122 minetest
.set_node(p
, {name
=nodestring
})
123 return true, S("@1 spawned.", nodestring
)
125 return false, S("Invalid parameters (see /help setblock)")
129 minetest
.register_chatcommand("list", {
130 description
= "Show who is logged on",
133 func
= function(name
)
135 for _
, player
in ipairs(minetest
.get_connected_players()) do
136 players
= players
..player
:get_player_name().."\n"
138 minetest
.chat_send_player(name
, players
)
142 minetest
.register_chatcommand("seed", {
143 description
= "Displays the world seed",
146 func
= function(name
)
147 minetest
.chat_send_player(name
, minetest
.get_mapgen_setting("seed"))
151 local function register_chatcommand_alias(alias
, cmd
)
152 local def
= minetest
.chatcommands
[cmd
]
153 minetest
.register_chatcommand(alias
, def
)
156 if minecraftaliases
then
157 register_chatcommand_alias("?", "help")
158 register_chatcommand_alias("who", "list")
159 register_chatcommand_alias("pardon", "unban")
160 register_chatcommand_alias("stop", "shutdown")
161 register_chatcommand_alias("summon", "spawnentity")
162 register_chatcommand_alias("tell", "msg")
163 register_chatcommand_alias("w", "msg")
164 register_chatcommand_alias("tp", "teleport")
166 minetest
.register_chatcommand("banlist", {
167 description
= S("List bans"),
168 privs
= minetest
.chatcommands
["ban"].privs
,
169 func
= function(name
)
170 return true, S("Ban list: @1", core
.get_ban_list())