From 54faeaedd76643de0eed0cf29bdb45ea059ad89f Mon Sep 17 00:00:00 2001
From: OptimisticDeving <173472493+OptimisticDeving@users.noreply.github.com>
Date: Mon, 17 Feb 2025 04:07:48 +0000
Subject: [PATCH] Re-add CPU model detection and add GPU model detection via
OSHI
---
pom.xml | 8 +++++
.../extras/commands/CommandServerInfo.java | 33 +++++++++++++++++++
2 files changed, 41 insertions(+)
diff --git a/pom.xml b/pom.xml
index f2370b9..62aac3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,6 +18,14 @@
1.20.4-R0.1-SNAPSHOT
provided
+
+
+ com.github.oshi
+ oshi-core
+ 6.4.5
+
+ provided
+
diff --git a/src/main/java/pw/kaboom/extras/commands/CommandServerInfo.java b/src/main/java/pw/kaboom/extras/commands/CommandServerInfo.java
index 3befce4..c2d8376 100644
--- a/src/main/java/pw/kaboom/extras/commands/CommandServerInfo.java
+++ b/src/main/java/pw/kaboom/extras/commands/CommandServerInfo.java
@@ -5,12 +5,35 @@ import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
+import oshi.SystemInfo;
+import oshi.hardware.GraphicsCard;
+import oshi.hardware.HardwareAbstractionLayer;
import javax.annotation.Nonnull;
import java.lang.management.ManagementFactory;
import java.net.InetAddress;
public final class CommandServerInfo implements CommandExecutor {
+ private static final String[] GPU_DEVICES;
+ private static final String PROCESSOR_NAME;
+
+ static {
+ // No need to store this in a static variable as it would
+ // just waste memory & won't be accessed outside construction
+ // anyway.
+
+ final SystemInfo systemInfo = new SystemInfo();
+ final HardwareAbstractionLayer hardware = systemInfo.getHardware();
+
+ GPU_DEVICES = hardware.getGraphicsCards()
+ .stream()
+ .map(GraphicsCard::getName)
+ .toArray(String[]::new);
+ PROCESSOR_NAME = hardware.getProcessor()
+ .getProcessorIdentifier()
+ .getName();
+ }
+
private void sendInfoMessage(final CommandSender target, final String description,
final String value) {
target.sendMessage(
@@ -50,6 +73,8 @@ public final class CommandServerInfo implements CommandExecutor {
+ ManagementFactory.getRuntimeMXBean().getVmVersion()
);
+ sendInfoMessage(sender, "CPU model", PROCESSOR_NAME);
+
sendInfoMessage(sender, "CPU cores",
String.valueOf(Runtime.getRuntime().availableProcessors())
);
@@ -57,6 +82,14 @@ public final class CommandServerInfo implements CommandExecutor {
String.valueOf(ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage())
);
+ for (int i = 0; i < GPU_DEVICES.length; i++) {
+ sendInfoMessage(
+ sender,
+ "GPU device (" + i + ")",
+ GPU_DEVICES[i]
+ );
+ }
+
final long heapUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
final long nonHeapUsage = ManagementFactory.getMemoryMXBean()
.getNonHeapMemoryUsage().getUsed();