Translated using Weblate (German)
[oweals/minetest.git] / builtin / game / chatcommands.lua
index 883aaef4becfc7afc2d8a635ac73d1e632bf90b8..6a35c034e9268036cc23633f26d4b63ae715afd4 100644 (file)
@@ -436,6 +436,31 @@ core.register_chatcommand("set", {
        end,
 })
 
+local function emergeblocks_callback(pos, action, num_calls_remaining, ctx)
+       if ctx.total_blocks == 0 then
+               ctx.total_blocks   = num_calls_remaining + 1
+               ctx.current_blocks = 0
+       end
+       ctx.current_blocks = ctx.current_blocks + 1
+
+       if ctx.current_blocks == ctx.total_blocks then
+               core.chat_send_player(ctx.requestor_name,
+                       string.format("Finished emerging %d blocks in %.2fms.",
+                       ctx.total_blocks, (os.clock() - ctx.start_time) * 1000))
+       end
+end
+
+local function emergeblocks_progress_update(ctx)
+       if ctx.current_blocks ~= ctx.total_blocks then
+               core.chat_send_player(ctx.requestor_name,
+                       string.format("emergeblocks update: %d/%d blocks emerged (%.1f%%)",
+                       ctx.current_blocks, ctx.total_blocks,
+                       (ctx.current_blocks / ctx.total_blocks) * 100))
+
+               core.after(2, emergeblocks_progress_update, ctx)
+       end
+end
+
 core.register_chatcommand("emergeblocks", {
        params = "(here [radius]) | (<pos1> <pos2>)",
        description = "starts loading (or generating, if inexistent) map blocks "
@@ -447,7 +472,16 @@ core.register_chatcommand("emergeblocks", {
                        return false, p2
                end
 
-               core.emerge_area(p1, p2)
+               local context = {
+                       current_blocks = 0,
+                       total_blocks   = 0,
+                       start_time     = os.clock(),
+                       requestor_name = name
+               }
+
+               core.emerge_area(p1, p2, emergeblocks_callback, context)
+               core.after(2, emergeblocks_progress_update, context)
+
                return true, "Started emerge of area ranging from " ..
                        core.pos_to_string(p1, 1) .. " to " .. core.pos_to_string(p2, 1)
        end,
@@ -710,7 +744,7 @@ core.register_chatcommand("time", {
                        local hour = (current_time - minutes) / 60
                        return true, ("Current time is %d:%02d"):format(hour, minutes)
                end
-               local player_privs = minetest.get_player_privs(name)
+               local player_privs = core.get_player_privs(name)
                if not player_privs.settime then
                        return false, "You don't have permission to run this command " ..
                                "(missing privilege: settime)."