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;
}
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;
}
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);
}
}
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);
}
}
Aggregations