Search in sources :

Example 21 with Level

use of cn.nukkit.level.Level in project Nukkit by Nukkit.

the class StatusCommand method execute.

@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
    if (!this.testPermission(sender)) {
        return true;
    }
    Server server = sender.getServer();
    sender.sendMessage(TextFormat.GREEN + "---- " + TextFormat.WHITE + "Server status" + TextFormat.GREEN + " ----");
    long time = (System.currentTimeMillis() - Nukkit.START_TIME) / 1000;
    int seconds = NukkitMath.floorDouble(time % 60);
    int minutes = NukkitMath.floorDouble((time % 3600) / 60);
    int hours = NukkitMath.floorDouble(time % (3600 * 24) / 3600);
    int days = NukkitMath.floorDouble(time / (3600 * 24));
    String upTimeString = TextFormat.RED + "" + days + TextFormat.GOLD + " days " + TextFormat.RED + hours + TextFormat.GOLD + " hours " + TextFormat.RED + minutes + TextFormat.GOLD + " minutes " + TextFormat.RED + seconds + TextFormat.GOLD + " seconds";
    sender.sendMessage(TextFormat.GOLD + "Uptime: " + upTimeString);
    TextFormat tpsColor = TextFormat.GREEN;
    float tps = server.getTicksPerSecond();
    if (tps < 17) {
        tpsColor = TextFormat.GOLD;
    } else if (tps < 12) {
        tpsColor = TextFormat.RED;
    }
    sender.sendMessage(TextFormat.GOLD + "Current TPS: " + tpsColor + NukkitMath.round(tps, 2));
    sender.sendMessage(TextFormat.GOLD + "Load: " + tpsColor + server.getTickUsage() + "%");
    sender.sendMessage(TextFormat.GOLD + "Network upload: " + TextFormat.GREEN + NukkitMath.round((server.getNetwork().getUpload() / 1024 * 1000), 2) + " kB/s");
    sender.sendMessage(TextFormat.GOLD + "Network download: " + TextFormat.GREEN + NukkitMath.round((server.getNetwork().getDownload() / 1024 * 1000), 2) + " kB/s");
    sender.sendMessage(TextFormat.GOLD + "Thread count: " + TextFormat.GREEN + Thread.getAllStackTraces().size());
    Runtime runtime = Runtime.getRuntime();
    double totalMB = NukkitMath.round(((double) runtime.totalMemory()) / 1024 / 1024, 2);
    double usedMB = NukkitMath.round((double) (runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024, 2);
    double maxMB = NukkitMath.round(((double) runtime.maxMemory()) / 1024 / 1024, 2);
    double usage = usedMB / maxMB * 100;
    TextFormat usageColor = TextFormat.GREEN;
    if (usage > 85) {
        usageColor = TextFormat.GOLD;
    }
    sender.sendMessage(TextFormat.GOLD + "Used memory: " + usageColor + usedMB + " MB. (" + NukkitMath.round(usage, 2) + "%)");
    sender.sendMessage(TextFormat.GOLD + "Total memory: " + TextFormat.RED + totalMB + " MB.");
    sender.sendMessage(TextFormat.GOLD + "Maximum VM memory: " + TextFormat.RED + maxMB + " MB.");
    sender.sendMessage(TextFormat.GOLD + "Available processors: " + TextFormat.GREEN + runtime.availableProcessors());
    TextFormat playerColor = TextFormat.GREEN;
    if (((float) server.getOnlinePlayers().size() / (float) server.getMaxPlayers()) > 0.85) {
        playerColor = TextFormat.GOLD;
    }
    sender.sendMessage(TextFormat.GOLD + "Players: " + playerColor + server.getOnlinePlayers().size() + TextFormat.GREEN + " online, " + TextFormat.RED + server.getMaxPlayers() + TextFormat.GREEN + " max. ");
    for (Level level : server.getLevels().values()) {
        sender.sendMessage(TextFormat.GOLD + "World \"" + level.getFolderName() + "\"" + (!Objects.equals(level.getFolderName(), level.getName()) ? " (" + level.getName() + ")" : "") + ": " + TextFormat.RED + level.getChunks().size() + TextFormat.GREEN + " chunks, " + TextFormat.RED + level.getEntities().length + TextFormat.GREEN + " entities, " + TextFormat.RED + level.getBlockEntities().size() + TextFormat.GREEN + " blockEntities." + " Time " + ((level.getTickRate() > 1 || level.getTickRateTime() > 40) ? TextFormat.RED : TextFormat.YELLOW) + NukkitMath.round(level.getTickRateTime(), 2) + "ms" + (level.getTickRate() > 1 ? " (tick rate " + level.getTickRate() + ")" : ""));
    }
    return true;
}
Also used : Server(cn.nukkit.Server) TextFormat(cn.nukkit.utils.TextFormat) Level(cn.nukkit.level.Level)

Example 22 with Level

use of cn.nukkit.level.Level in project Nukkit by Nukkit.

the class TimeCommand method execute.

@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
    if (args.length < 1) {
        sender.sendMessage(new TranslationContainer("commands.generic.usage", this.usageMessage));
        return false;
    }
    if ("start".equals(args[0])) {
        if (!sender.hasPermission("nukkit.command.time.start")) {
            sender.sendMessage(new TranslationContainer(TextFormat.RED + "%commands.generic.permission"));
            return true;
        }
        for (Level level : sender.getServer().getLevels().values()) {
            level.checkTime();
            level.startTime();
            level.checkTime();
        }
        Command.broadcastCommandMessage(sender, "Restarted the time");
        return true;
    } else if ("stop".equals(args[0])) {
        if (!sender.hasPermission("nukkit.command.time.stop")) {
            sender.sendMessage(new TranslationContainer(TextFormat.RED + "%commands.generic.permission"));
            return true;
        }
        for (Level level : sender.getServer().getLevels().values()) {
            level.checkTime();
            level.stopTime();
            level.checkTime();
        }
        Command.broadcastCommandMessage(sender, "Stopped the time");
        return true;
    } else if ("query".equals(args[0])) {
        if (!sender.hasPermission("nukkit.command.time.query")) {
            sender.sendMessage(new TranslationContainer(TextFormat.RED + "%commands.generic.permission"));
            return true;
        }
        Level level;
        if (sender instanceof Player) {
            level = ((Player) sender).getLevel();
        } else {
            level = sender.getServer().getDefaultLevel();
        }
        sender.sendMessage(new TranslationContainer("commands.time.query", String.valueOf(level.getTime())));
        return true;
    }
    if (args.length < 2) {
        sender.sendMessage(new TranslationContainer("commands.generic.usage", this.usageMessage));
        return false;
    }
    if ("set".equals(args[0])) {
        if (!sender.hasPermission("nukkit.command.time.set")) {
            sender.sendMessage(new TranslationContainer(TextFormat.RED + "%commands.generic.permission"));
            return true;
        }
        int value;
        if ("day".equals(args[1])) {
            value = Level.TIME_DAY;
        } else if ("night".equals(args[1])) {
            value = Level.TIME_NIGHT;
        } else {
            try {
                value = Math.max(0, Integer.parseInt(args[1]));
            } catch (Exception e) {
                sender.sendMessage(new TranslationContainer("commands.generic.usage", this.usageMessage));
                return true;
            }
        }
        for (Level level : sender.getServer().getLevels().values()) {
            level.checkTime();
            level.setTime(value);
            level.checkTime();
        }
        Command.broadcastCommandMessage(sender, new TranslationContainer("commands.time.set", String.valueOf(value)));
    } else if ("add".equals(args[0])) {
        if (!sender.hasPermission("nukkit.command.time.add")) {
            sender.sendMessage(new TranslationContainer(TextFormat.RED + "%commands.generic.permission"));
            return true;
        }
        int value;
        try {
            value = Math.max(0, Integer.parseInt(args[1]));
        } catch (Exception e) {
            sender.sendMessage(new TranslationContainer("commands.generic.usage", this.usageMessage));
            return true;
        }
        for (Level level : sender.getServer().getLevels().values()) {
            level.checkTime();
            level.setTime(level.getTime() + value);
            level.checkTime();
        }
        Command.broadcastCommandMessage(sender, new TranslationContainer("commands.time.added", String.valueOf(value)));
    } else {
        sender.sendMessage(new TranslationContainer("commands.generic.usage", this.usageMessage));
    }
    return true;
}
Also used : Player(cn.nukkit.Player) TranslationContainer(cn.nukkit.lang.TranslationContainer) Level(cn.nukkit.level.Level)

Example 23 with Level

use of cn.nukkit.level.Level in project Nukkit by Nukkit.

the class GenerationTask method onCompletion.

@Override
public void onCompletion(Server server) {
    Level level = server.getLevel(this.levelId);
    if (level != null) {
        if (!this.state) {
            level.registerGenerator();
            return;
        }
        BaseFullChunk chunk = this.chunk.clone();
        if (chunk == null) {
            return;
        }
        level.generateChunkCallback(chunk.getX(), chunk.getZ(), chunk);
    }
}
Also used : BaseFullChunk(cn.nukkit.level.format.generic.BaseFullChunk) Level(cn.nukkit.level.Level)

Example 24 with Level

use of cn.nukkit.level.Level in project Nukkit by Nukkit.

the class LightPopulationTask method onCompletion.

@Override
public void onCompletion(Server server) {
    Level level = server.getLevel(this.levelId);
    BaseFullChunk chunk = this.chunk.clone();
    if (level != null) {
        if (chunk == null) {
            return;
        }
        level.generateChunkCallback(chunk.getX(), chunk.getZ(), chunk);
    }
}
Also used : BaseFullChunk(cn.nukkit.level.format.generic.BaseFullChunk) Level(cn.nukkit.level.Level)

Aggregations

Level (cn.nukkit.level.Level)24 Player (cn.nukkit.Player)6 TranslationContainer (cn.nukkit.lang.TranslationContainer)6 BlockEventPacket (cn.nukkit.network.protocol.BlockEventPacket)6 BaseFullChunk (cn.nukkit.level.format.generic.BaseFullChunk)3 BlockEnderChest (cn.nukkit.block.BlockEnderChest)2 LevelLoadEvent (cn.nukkit.event.level.LevelLoadEvent)2 Vector3 (cn.nukkit.math.Vector3)2 DecimalFormat (java.text.DecimalFormat)2 Server (cn.nukkit.Server)1 LevelInitEvent (cn.nukkit.event.level.LevelInitEvent)1 QueryRegenerateEvent (cn.nukkit.event.server.QueryRegenerateEvent)1 Position (cn.nukkit.level.Position)1 SourceInterface (cn.nukkit.network.SourceInterface)1 ContainerClosePacket (cn.nukkit.network.protocol.ContainerClosePacket)1 ContainerOpenPacket (cn.nukkit.network.protocol.ContainerOpenPacket)1 BanEntry (cn.nukkit.permission.BanEntry)1 TextFormat (cn.nukkit.utils.TextFormat)1 Random (java.util.Random)1