Add ability to specify coordinates for /spawnentity
authorMarcin <beyondlimits@10g.pl>
Thu, 25 Jun 2015 16:14:01 +0000 (18:14 +0200)
committerest31 <MTest31@outlook.com>
Sat, 18 Jul 2015 06:35:36 +0000 (08:35 +0200)
builtin/game/chatcommands.lua

index d656f1c9172029b5fa0b3ef0f39bc7840ce708d4..6c8ca8699f63d3bf69c2c77b5f7aa07f9a3e9e28 100644 (file)
@@ -530,22 +530,29 @@ core.register_chatcommand("giveme", {
 })
 
 core.register_chatcommand("spawnentity", {
-       params = "<EntityName>",
-       description = "Spawn entity at your position",
+       params = "<EntityName> [<X>,<Y>,<Z>]",
+       description = "Spawn entity at given (or your) position",
        privs = {give=true, interact=true},
        func = function(name, param)
-               local entityname = string.match(param, "(.+)$")
+               local entityname, p = string.match(param, "^([^ ]+) *(.*)$")
                if not entityname then
                        return false, "EntityName required"
                end
-               core.log("action", ("/spawnentity invoked, entityname=%q")
-                               :format(entityname))
+               core.log("action", ("%s invokes /spawnentity, entityname=%q")
+                               :format(name, entityname))
                local player = core.get_player_by_name(name)
                if player == nil then
                        core.log("error", "Unable to spawn entity, player is nil")
                        return false, "Unable to spawn entity, player is nil"
                end
-               local p = player:getpos()
+               if p == "" then
+                       p = player:getpos()
+               else
+                       p = core.string_to_pos(p)
+                       if p == nil then
+                               return false, "Invalid parameters ('" .. param .. "')"
+                       end
+               end
                p.y = p.y + 1
                core.add_entity(p, entityname)
                return true, ("%q spawned."):format(entityname)