Search in sources :

Example 1 with AsyncTask

use of cn.nukkit.scheduler.AsyncTask in project Nukkit by Nukkit.

the class DebugPasteCommand method execute.

@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
    if (!this.testPermission(sender)) {
        return true;
    }
    Server server = Server.getInstance();
    server.getScheduler().scheduleAsyncTask(new AsyncTask() {

        @Override
        public void onRun() {
            try {
                new StatusCommand("status").execute(server.getConsoleSender(), "status", new String[] {});
                String dataPath = server.getDataPath();
                String nukkitYML = HastebinUtility.upload(new File(dataPath, "nukkit.yml"));
                String serverProperties = HastebinUtility.upload(new File(dataPath, "server.properties"));
                String latestLog = HastebinUtility.upload(new File(dataPath, "server.log"));
                String threadDump = HastebinUtility.upload(Utils.getAllThreadDumps());
                StringBuilder b = new StringBuilder();
                b.append("# Files\n");
                b.append("links.nukkit_yml: ").append(nukkitYML).append('\n');
                b.append("links.server_properties: ").append(serverProperties).append('\n');
                b.append("links.server_log: ").append(latestLog).append('\n');
                b.append("links.thread_dump: ").append(threadDump).append('\n');
                b.append("\n# Server Information\n");
                b.append("version.api: ").append(server.getApiVersion()).append('\n');
                b.append("version.nukkit: ").append(server.getNukkitVersion()).append('\n');
                b.append("version.minecraft: ").append(server.getVersion()).append('\n');
                b.append("version.protocol: ").append(ProtocolInfo.CURRENT_PROTOCOL).append('\n');
                b.append("plugins:");
                for (Plugin plugin : server.getPluginManager().getPlugins().values()) {
                    boolean enabled = plugin.isEnabled();
                    String name = plugin.getName();
                    PluginDescription desc = plugin.getDescription();
                    String version = desc.getVersion();
                    b.append("\n  ").append(name).append(":\n    ").append("version: '").append(version).append('\'').append("\n    enabled: ").append(enabled);
                }
                b.append("\n\n# Java Details\n");
                Runtime runtime = Runtime.getRuntime();
                b.append("memory.free: ").append(runtime.freeMemory()).append('\n');
                b.append("memory.max: ").append(runtime.maxMemory()).append('\n');
                b.append("cpu.runtime: ").append(ManagementFactory.getRuntimeMXBean().getUptime()).append('\n');
                b.append("cpu.processors: ").append(runtime.availableProcessors()).append('\n');
                b.append("java.specification.version: '").append(System.getProperty("java.specification.version")).append("'\n");
                b.append("java.vendor: '").append(System.getProperty("java.vendor")).append("'\n");
                b.append("java.version: '").append(System.getProperty("java.version")).append("'\n");
                b.append("os.arch: '").append(System.getProperty("os.arch")).append("'\n");
                b.append("os.name: '").append(System.getProperty("os.name")).append("'\n");
                b.append("os.version: '").append(System.getProperty("os.version")).append("'\n\n");
                b.append("\n# Create a ticket: https://github.com/NukkitX/Nukkit/issues/new");
                String link = HastebinUtility.upload(b.toString());
                sender.sendMessage(link);
            } catch (IOException e) {
                MainLogger.getLogger().logException(e);
            }
        }
    });
    return true;
}
Also used : Server(cn.nukkit.Server) AsyncTask(cn.nukkit.scheduler.AsyncTask) IOException(java.io.IOException) File(java.io.File) PluginDescription(cn.nukkit.plugin.PluginDescription) Plugin(cn.nukkit.plugin.Plugin)

Example 2 with AsyncTask

use of cn.nukkit.scheduler.AsyncTask in project Nukkit by Nukkit.

the class Level method processChunkRequest.

private void processChunkRequest() {
    this.timings.syncChunkSendTimer.startTiming();
    for (Long index : ImmutableList.copyOf(this.chunkSendQueue.keySet())) {
        if (this.chunkSendTasks.containsKey(index)) {
            continue;
        }
        int x = getHashX(index);
        int z = getHashZ(index);
        this.chunkSendTasks.put(index, Boolean.TRUE);
        BaseFullChunk chunk = getChunk(x, z);
        if (chunk != null) {
            BatchPacket packet = chunk.getChunkPacket();
            if (packet != null) {
                this.sendChunk(x, z, index, packet);
                continue;
            }
        }
        this.timings.syncChunkSendPrepareTimer.startTiming();
        AsyncTask task = this.provider.requestChunkTask(x, z);
        if (task != null) {
            this.server.getScheduler().scheduleAsyncTask(task);
        }
        this.timings.syncChunkSendPrepareTimer.stopTiming();
    }
    this.timings.syncChunkSendTimer.stopTiming();
}
Also used : BaseFullChunk(cn.nukkit.level.format.generic.BaseFullChunk) AsyncTask(cn.nukkit.scheduler.AsyncTask)

Aggregations

AsyncTask (cn.nukkit.scheduler.AsyncTask)2 Server (cn.nukkit.Server)1 BaseFullChunk (cn.nukkit.level.format.generic.BaseFullChunk)1 Plugin (cn.nukkit.plugin.Plugin)1 PluginDescription (cn.nukkit.plugin.PluginDescription)1 File (java.io.File)1 IOException (java.io.IOException)1