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();