Added CPU & RAM information to /co status

This commit is contained in:
Intelli 2024-07-09 18:02:49 -06:00
parent e093970992
commit dbd8723752
7 changed files with 77 additions and 2 deletions

View File

@ -15,6 +15,7 @@ COMMAND_THROTTLED: "Please wait a moment and try again."
CONSUMER_ERROR: "Consumer queue processing already {paused|resumed}." CONSUMER_ERROR: "Consumer queue processing already {paused|resumed}."
CONSUMER_TOGGLED: "Consumer queue processing has been {paused|resumed}." CONSUMER_TOGGLED: "Consumer queue processing has been {paused|resumed}."
CONTAINER_HEADER: "Container Transactions" CONTAINER_HEADER: "Container Transactions"
CPU_CORES: "CPU cores."
DATABASE_BUSY: "Database busy. Please try again later." DATABASE_BUSY: "Database busy. Please try again later."
DATABASE_INDEX_ERROR: "Unable to validate database indexes." DATABASE_INDEX_ERROR: "Unable to validate database indexes."
DATABASE_LOCKED_1: "Database locked. Waiting up to 15 seconds..." DATABASE_LOCKED_1: "Database locked. Waiting up to 15 seconds..."
@ -23,7 +24,7 @@ DATABASE_LOCKED_3: "To disable database locking, set \"database-lock: false\"."
DATABASE_LOCKED_4: "Disabling database locking can result in data corruption." DATABASE_LOCKED_4: "Disabling database locking can result in data corruption."
DATABASE_UNREACHABLE: "Database is unreachable. Discarding data and shutting down." DATABASE_UNREACHABLE: "Database is unreachable. Discarding data and shutting down."
DEVELOPMENT_BRANCH: "Development branch detected, skipping patch scripts." DEVELOPMENT_BRANCH: "Development branch detected, skipping patch scripts."
DIRT_BLOCK: "Placed a dirt block under you." DIRT_BLOCK: "Placed a temporary safety block under you."
DISABLE_SUCCESS: "Success! Disabled {0}" DISABLE_SUCCESS: "Success! Disabled {0}"
ENABLE_FAILED: "{0} was unable to start." ENABLE_FAILED: "{0} was unable to start."
ENABLE_SUCCESS: "{0} has been successfully enabled!" ENABLE_SUCCESS: "{0} has been successfully enabled!"
@ -159,6 +160,7 @@ PURGE_REPAIRING: "Attempting to repair. This may take some time..."
PURGE_ROWS: "{0} {row|rows} of data deleted." PURGE_ROWS: "{0} {row|rows} of data deleted."
PURGE_STARTED: "Data purge started on \"{0}\"." PURGE_STARTED: "Data purge started on \"{0}\"."
PURGE_SUCCESS: "Data purge successful." PURGE_SUCCESS: "Data purge successful."
RAM_STATS: "{0}GB / {1}GB RAM"
RELOAD_STARTED: "Reloading configuration - please wait." RELOAD_STARTED: "Reloading configuration - please wait."
RELOAD_SUCCESS: "Configuration successfully reloaded." RELOAD_SUCCESS: "Configuration successfully reloaded."
ROLLBACK_ABORTED: "Rollback or restore aborted." ROLLBACK_ABORTED: "Rollback or restore aborted."
@ -180,6 +182,7 @@ STATUS_CONSUMER: "Consumer: {0} {item|items} in queue."
STATUS_DATABASE: "Database: Using {0}." STATUS_DATABASE: "Database: Using {0}."
STATUS_INTEGRATION: "{0}: Integration {enabled|disabled}." STATUS_INTEGRATION: "{0}: Integration {enabled|disabled}."
STATUS_LICENSE: "License: {0}" STATUS_LICENSE: "License: {0}"
STATUS_SYSTEM: "System: {0}"
STATUS_VERSION: "Version: {0}" STATUS_VERSION: "Version: {0}"
TELEPORTED: "Teleported to {0}." TELEPORTED: "Teleported to {0}."
TELEPORTED_SAFETY: "Teleported you to safety." TELEPORTED_SAFETY: "Teleported you to safety."

12
pom.xml
View File

@ -69,6 +69,8 @@
<exclude>org.intellij:*</exclude> <exclude>org.intellij:*</exclude>
<exclude>org.jetbrains:*</exclude> <exclude>org.jetbrains:*</exclude>
<exclude>org.slf4j:*</exclude> <exclude>org.slf4j:*</exclude>
<exclude>org.apache.logging.log4j:*</exclude>
<exclude>net.java.dev.jna:*</exclude>
</excludes> </excludes>
</artifactSet> </artifactSet>
<relocations> <relocations>
@ -152,5 +154,15 @@
<artifactId>HikariCP</artifactId> <artifactId>HikariCP</artifactId>
<version>5.0.1</version> <version>5.0.1</version>
</dependency> </dependency>
<dependency>
<groupId>org.jhardware</groupId>
<artifactId>jHardware</artifactId>
<version>0.8.6</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.23.1</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -54,7 +54,6 @@ public class StatusCommand {
} }
/* /*
CoreProtect show RAM usage
Items processed (since server start) Items processed (since server start)
Items processed (last 60 minutes) Items processed (last 60 minutes)
*/ */
@ -102,6 +101,42 @@ public class StatusCommand {
e.printStackTrace(); e.printStackTrace();
} }
try {
String cpuInfo = "";
if (ConfigHandler.processorInfo != null) {
String modelName = ConfigHandler.processorInfo.getModelName();
if (modelName.contains(" CPU")) {
String[] split = ConfigHandler.processorInfo.getModelName().split(" CPU")[0].split(" ");
modelName = split[split.length - 1];
}
else if (modelName.contains(" Processor")) {
String[] split = ConfigHandler.processorInfo.getModelName().split(" Processor")[0].split(" ");
modelName = split[split.length - 1];
}
String cpuSpeed = ConfigHandler.processorInfo.getMhz();
cpuSpeed = String.format("%.2f", Double.valueOf(cpuSpeed) / 1000.0);
cpuInfo = modelName + " " + Runtime.getRuntime().availableProcessors() + " x " + cpuSpeed + "GHz.";
}
else {
cpuInfo = "x" + Runtime.getRuntime().availableProcessors() + " " + Phrase.build(Phrase.CPU_CORES);
}
int mb = 1024 * 1024;
Runtime runtime = Runtime.getRuntime();
String usedRAM = String.format("%.2f", Double.valueOf((runtime.totalMemory() - runtime.freeMemory()) / mb) / 1000.0);
String totalRAM = String.format("%.2f", Double.valueOf(runtime.maxMemory() / mb) / 1000.0);
String systemInformation = Phrase.build(Phrase.RAM_STATS, usedRAM, totalRAM);
if (cpuInfo.length() > 0) {
systemInformation = cpuInfo + " (" + systemInformation + ")";
}
Chat.sendMessage(player, Color.DARK_AQUA + Phrase.build(Phrase.STATUS_SYSTEM, Color.WHITE, systemInformation));
}
catch (Exception e) {
e.printStackTrace();
}
// Functions.sendMessage(player, Color.DARK_AQUA + "Website: " + Color.WHITE + "www.coreprotect.net/updates/"); // Functions.sendMessage(player, Color.DARK_AQUA + "Website: " + Color.WHITE + "www.coreprotect.net/updates/");
// Functions.sendMessage(player, Color.DARK_AQUA + Phrase.build(Phrase.LINK_DISCORD, Color.WHITE + "www.coreprotect.net/discord/").replaceFirst(":", ":" + Color.WHITE)); // Functions.sendMessage(player, Color.DARK_AQUA + Phrase.build(Phrase.LINK_DISCORD, Color.WHITE + "www.coreprotect.net/discord/").replaceFirst(":", ":" + Color.WHITE));

View File

@ -19,6 +19,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.jutils.jhardware.model.ProcessorInfo;
import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource; import com.zaxxer.hikari.HikariDataSource;
@ -55,6 +56,7 @@ public class ConfigHandler extends Queue {
public static int maximumPoolSize = 10; public static int maximumPoolSize = 10;
public static HikariDataSource hikariDataSource = null; public static HikariDataSource hikariDataSource = null;
public static final ProcessorInfo processorInfo = Util.getProcessorInfo();
public static final boolean isSpigot = Util.isSpigot(); public static final boolean isSpigot = Util.isSpigot();
public static final boolean isPaper = Util.isPaper(); public static final boolean isPaper = Util.isPaper();
public static final boolean isFolia = Util.isFolia(); public static final boolean isFolia = Util.isFolia();

View File

@ -44,6 +44,7 @@ public class Language {
phrases.put(Phrase.CONSUMER_ERROR, "Consumer queue processing already {paused|resumed}."); phrases.put(Phrase.CONSUMER_ERROR, "Consumer queue processing already {paused|resumed}.");
phrases.put(Phrase.CONSUMER_TOGGLED, "Consumer queue processing has been {paused|resumed}."); phrases.put(Phrase.CONSUMER_TOGGLED, "Consumer queue processing has been {paused|resumed}.");
phrases.put(Phrase.CONTAINER_HEADER, "Container Transactions"); phrases.put(Phrase.CONTAINER_HEADER, "Container Transactions");
phrases.put(Phrase.CPU_CORES, "CPU cores.");
phrases.put(Phrase.DATABASE_BUSY, "Database busy. Please try again later."); phrases.put(Phrase.DATABASE_BUSY, "Database busy. Please try again later.");
phrases.put(Phrase.DATABASE_INDEX_ERROR, "Unable to validate database indexes."); phrases.put(Phrase.DATABASE_INDEX_ERROR, "Unable to validate database indexes.");
phrases.put(Phrase.DATABASE_LOCKED_1, "Database locked. Waiting up to 15 seconds..."); phrases.put(Phrase.DATABASE_LOCKED_1, "Database locked. Waiting up to 15 seconds...");
@ -188,6 +189,7 @@ public class Language {
phrases.put(Phrase.PURGE_ROWS, "{0} {row|rows} of data deleted."); phrases.put(Phrase.PURGE_ROWS, "{0} {row|rows} of data deleted.");
phrases.put(Phrase.PURGE_STARTED, "Data purge started on \"{0}\"."); phrases.put(Phrase.PURGE_STARTED, "Data purge started on \"{0}\".");
phrases.put(Phrase.PURGE_SUCCESS, "Data purge successful."); phrases.put(Phrase.PURGE_SUCCESS, "Data purge successful.");
phrases.put(Phrase.RAM_STATS, "{0}GB / {1}GB RAM");
phrases.put(Phrase.RELOAD_STARTED, "Reloading configuration - please wait."); phrases.put(Phrase.RELOAD_STARTED, "Reloading configuration - please wait.");
phrases.put(Phrase.RELOAD_SUCCESS, "Configuration successfully reloaded."); phrases.put(Phrase.RELOAD_SUCCESS, "Configuration successfully reloaded.");
phrases.put(Phrase.ROLLBACK_ABORTED, "Rollback or restore aborted."); phrases.put(Phrase.ROLLBACK_ABORTED, "Rollback or restore aborted.");
@ -209,6 +211,7 @@ public class Language {
phrases.put(Phrase.STATUS_DATABASE, "Database: Using {0}."); phrases.put(Phrase.STATUS_DATABASE, "Database: Using {0}.");
phrases.put(Phrase.STATUS_INTEGRATION, "{0}: Integration {enabled|disabled}."); phrases.put(Phrase.STATUS_INTEGRATION, "{0}: Integration {enabled|disabled}.");
phrases.put(Phrase.STATUS_LICENSE, "License: {0}"); phrases.put(Phrase.STATUS_LICENSE, "License: {0}");
phrases.put(Phrase.STATUS_SYSTEM, "System: {0}");
phrases.put(Phrase.STATUS_VERSION, "Version: {0}"); phrases.put(Phrase.STATUS_VERSION, "Version: {0}");
phrases.put(Phrase.TELEPORTED, "Teleported to {0}."); phrases.put(Phrase.TELEPORTED, "Teleported to {0}.");
phrases.put(Phrase.TELEPORTED_SAFETY, "Teleported you to safety."); phrases.put(Phrase.TELEPORTED_SAFETY, "Teleported you to safety.");

View File

@ -27,6 +27,7 @@ public enum Phrase {
CONSUMER_ERROR, CONSUMER_ERROR,
CONSUMER_TOGGLED, CONSUMER_TOGGLED,
CONTAINER_HEADER, CONTAINER_HEADER,
CPU_CORES,
DATABASE_BUSY, DATABASE_BUSY,
DATABASE_INDEX_ERROR, DATABASE_INDEX_ERROR,
DATABASE_LOCKED_1, DATABASE_LOCKED_1,
@ -171,6 +172,7 @@ public enum Phrase {
PURGE_ROWS, PURGE_ROWS,
PURGE_STARTED, PURGE_STARTED,
PURGE_SUCCESS, PURGE_SUCCESS,
RAM_STATS,
RELOAD_STARTED, RELOAD_STARTED,
RELOAD_SUCCESS, RELOAD_SUCCESS,
ROLLBACK_ABORTED, ROLLBACK_ABORTED,
@ -192,6 +194,7 @@ public enum Phrase {
STATUS_DATABASE, STATUS_DATABASE,
STATUS_INTEGRATION, STATUS_INTEGRATION,
STATUS_LICENSE, STATUS_LICENSE,
STATUS_SYSTEM,
STATUS_VERSION, STATUS_VERSION,
TELEPORTED, TELEPORTED,
TELEPORTED_SAFETY, TELEPORTED_SAFETY,

View File

@ -21,6 +21,8 @@ import java.util.Set;
import java.util.SortedSet; import java.util.SortedSet;
import java.util.TreeSet; import java.util.TreeSet;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.config.Configurator;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
@ -51,6 +53,8 @@ import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import org.bukkit.util.io.BukkitObjectOutputStream; import org.bukkit.util.io.BukkitObjectOutputStream;
import org.jutils.jhardware.HardwareInfo;
import org.jutils.jhardware.model.ProcessorInfo;
import net.coreprotect.CoreProtect; import net.coreprotect.CoreProtect;
import net.coreprotect.bukkit.BukkitAdapter; import net.coreprotect.bukkit.BukkitAdapter;
@ -112,6 +116,19 @@ public class Util extends Queue {
return name; return name;
} }
public static ProcessorInfo getProcessorInfo() {
ProcessorInfo result = null;
try {
Configurator.setLevel("com.profesorfalken.jsensors.manager.unix.UnixSensorsManager", Level.WARN);
result = HardwareInfo.getProcessorInfo();
}
catch (Exception e) {
// unable to read processor information
}
return result;
}
public static int getBlockId(Material material) { public static int getBlockId(Material material) {
if (material == null) { if (material == null) {
material = Material.AIR; material = Material.AIR;