Paper command

Co-authored-by: Zach Brown <1254957+zachbr@users.noreply.github.com>
This commit is contained in:
Jason Penilla
2016-02-29 21:02:09 -06:00
parent a0389538ec
commit bd7282c66d
11 changed files with 586 additions and 11 deletions

View File

@ -991,6 +991,7 @@ public final class CraftServer implements Server {
this.commandMap.clearCommands();
this.reloadData();
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
@ -2737,6 +2738,34 @@ public final class CraftServer implements Server {
// Paper end
// Paper start
@SuppressWarnings({"rawtypes", "unchecked"})
public static java.nio.file.Path dumpHeap(java.nio.file.Path dir, String name) {
try {
java.nio.file.Files.createDirectories(dir);
javax.management.MBeanServer server = java.lang.management.ManagementFactory.getPlatformMBeanServer();
java.nio.file.Path file;
try {
Class clazz = Class.forName("openj9.lang.management.OpenJ9DiagnosticsMXBean");
Object openj9Mbean = java.lang.management.ManagementFactory.newPlatformMXBeanProxy(server, "openj9.lang.management:type=OpenJ9Diagnostics", clazz);
java.lang.reflect.Method m = clazz.getMethod("triggerDumpToFile", String.class, String.class);
file = dir.resolve(name + ".phd");
m.invoke(openj9Mbean, "heap", file.toString());
} catch (ClassNotFoundException e) {
Class clazz = Class.forName("com.sun.management.HotSpotDiagnosticMXBean");
Object hotspotMBean = java.lang.management.ManagementFactory.newPlatformMXBeanProxy(server, "com.sun.management:type=HotSpotDiagnostic", clazz);
java.lang.reflect.Method m = clazz.getMethod("dumpHeap", String.class, boolean.class);
file = dir.resolve(name + ".hprof");
m.invoke(hotspotMBean, file.toString(), true);
}
return file;
} catch (Throwable t) {
Bukkit.getLogger().log(Level.SEVERE, "Could not write heap", t);
return null;
}
}
private Iterable<? extends net.kyori.adventure.audience.Audience> adventure$audiences;
@Override
public Iterable<? extends net.kyori.adventure.audience.Audience> audiences() {