forked from GeyserMC/Geyser
Fix duplicate info and add more info to dumps (#1058)
* Fix duplicate info and add more info to dumps * Add gui to standalone dump info
This commit is contained in:
parent
964432e4f8
commit
b7f0780a56
8 changed files with 86 additions and 3 deletions
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
package org.geysermc.platform.bungeecord;
|
package org.geysermc.platform.bungeecord;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.md_5.bungee.api.plugin.Plugin;
|
import net.md_5.bungee.api.plugin.Plugin;
|
||||||
|
@ -39,6 +40,7 @@ import java.nio.file.Paths;
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
public class GeyserBungeeConfiguration extends GeyserJacksonConfiguration {
|
public class GeyserBungeeConfiguration extends GeyserJacksonConfiguration {
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
private Path floodgateKey;
|
private Path floodgateKey;
|
||||||
|
|
||||||
public void loadFloodgate(GeyserBungeePlugin plugin, Configuration configuration) {
|
public void loadFloodgate(GeyserBungeePlugin plugin, Configuration configuration) {
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
package org.geysermc.platform.spigot;
|
package org.geysermc.platform.spigot;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
@ -43,6 +44,7 @@ public class GeyserSpigotConfiguration extends GeyserJacksonConfiguration {
|
||||||
@JsonProperty("floodgate-key-file")
|
@JsonProperty("floodgate-key-file")
|
||||||
private String floodgateKeyFile;
|
private String floodgateKeyFile;
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
private Path floodgateKey;
|
private Path floodgateKey;
|
||||||
|
|
||||||
public void loadFloodgate(GeyserSpigotPlugin plugin) {
|
public void loadFloodgate(GeyserSpigotPlugin plugin) {
|
||||||
|
|
|
@ -177,6 +177,6 @@ public class GeyserStandaloneBootstrap implements GeyserBootstrap {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BootstrapDumpInfo getDumpInfo() {
|
public BootstrapDumpInfo getDumpInfo() {
|
||||||
return new BootstrapDumpInfo();
|
return new GeyserStandaloneDumpInfo(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*
|
||||||
|
* @author GeyserMC
|
||||||
|
* @link https://github.com/GeyserMC/Geyser
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.geysermc.platform.standalone;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.geysermc.connector.dump.BootstrapDumpInfo;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class GeyserStandaloneDumpInfo extends BootstrapDumpInfo {
|
||||||
|
|
||||||
|
private boolean isGui;
|
||||||
|
|
||||||
|
GeyserStandaloneDumpInfo(GeyserStandaloneBootstrap bootstrap) {
|
||||||
|
super();
|
||||||
|
this.isGui = bootstrap.isUseGui();
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
package org.geysermc.platform.velocity;
|
package org.geysermc.platform.velocity;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.velocitypowered.api.plugin.PluginContainer;
|
import com.velocitypowered.api.plugin.PluginContainer;
|
||||||
|
@ -45,6 +46,7 @@ public class GeyserVelocityConfiguration extends GeyserJacksonConfiguration {
|
||||||
@JsonProperty("floodgate-key-file")
|
@JsonProperty("floodgate-key-file")
|
||||||
private String floodgateKeyFile;
|
private String floodgateKeyFile;
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
private Path floodgateKey;
|
private Path floodgateKey;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
package org.geysermc.connector.configuration;
|
package org.geysermc.connector.configuration;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import org.geysermc.connector.GeyserLogger;
|
import org.geysermc.connector.GeyserLogger;
|
||||||
|
|
||||||
import org.geysermc.connector.utils.LanguageUtils;
|
import org.geysermc.connector.utils.LanguageUtils;
|
||||||
|
@ -46,10 +47,13 @@ public interface GeyserConfiguration {
|
||||||
|
|
||||||
boolean isCommandSuggestions();
|
boolean isCommandSuggestions();
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
boolean isPassthroughMotd();
|
boolean isPassthroughMotd();
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
boolean isPassthroughPlayerCounts();
|
boolean isPassthroughPlayerCounts();
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
boolean isLegacyPingPassthrough();
|
boolean isLegacyPingPassthrough();
|
||||||
|
|
||||||
int getPingPassthroughInterval();
|
int getPingPassthroughInterval();
|
||||||
|
|
|
@ -27,11 +27,15 @@
|
||||||
package org.geysermc.connector.dump;
|
package org.geysermc.connector.dump;
|
||||||
|
|
||||||
import com.github.steveice10.mc.protocol.MinecraftConstants;
|
import com.github.steveice10.mc.protocol.MinecraftConstants;
|
||||||
|
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||||
|
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.geysermc.connector.GeyserConnector;
|
import org.geysermc.connector.GeyserConnector;
|
||||||
import org.geysermc.connector.configuration.GeyserConfiguration;
|
import org.geysermc.connector.configuration.GeyserConfiguration;
|
||||||
|
import org.geysermc.connector.network.session.GeyserSession;
|
||||||
import org.geysermc.connector.utils.DockerCheck;
|
import org.geysermc.connector.utils.DockerCheck;
|
||||||
import org.geysermc.connector.utils.FileUtils;
|
import org.geysermc.connector.utils.FileUtils;
|
||||||
|
import org.geysermc.floodgate.util.DeviceOS;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
@ -46,9 +50,13 @@ public class DumpInfo {
|
||||||
private final DumpInfo.VersionInfo versionInfo;
|
private final DumpInfo.VersionInfo versionInfo;
|
||||||
private Properties gitInfo;
|
private Properties gitInfo;
|
||||||
private final GeyserConfiguration config;
|
private final GeyserConfiguration config;
|
||||||
|
private Object2IntMap<DeviceOS> userPlatforms;
|
||||||
|
private RamInfo ramInfo;
|
||||||
private final BootstrapDumpInfo bootstrapInfo;
|
private final BootstrapDumpInfo bootstrapInfo;
|
||||||
|
|
||||||
public DumpInfo() {
|
public DumpInfo() {
|
||||||
|
this.versionInfo = new DumpInfo.VersionInfo();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.gitInfo = new Properties();
|
this.gitInfo = new Properties();
|
||||||
this.gitInfo.load(FileUtils.getResource("git.properties"));
|
this.gitInfo.load(FileUtils.getResource("git.properties"));
|
||||||
|
@ -56,7 +64,14 @@ public class DumpInfo {
|
||||||
|
|
||||||
this.config = GeyserConnector.getInstance().getConfig();
|
this.config = GeyserConnector.getInstance().getConfig();
|
||||||
|
|
||||||
this.versionInfo = new DumpInfo.VersionInfo();
|
this.ramInfo = new DumpInfo.RamInfo();
|
||||||
|
|
||||||
|
this.userPlatforms = new Object2IntOpenHashMap();
|
||||||
|
for (GeyserSession session : GeyserConnector.getInstance().getPlayers()) {
|
||||||
|
DeviceOS device = session.getClientData().getDeviceOS();
|
||||||
|
userPlatforms.put(device, userPlatforms.getOrDefault(device, 0) + 1);
|
||||||
|
}
|
||||||
|
|
||||||
this.bootstrapInfo = GeyserConnector.getInstance().getBootstrap().getDumpInfo();
|
this.bootstrapInfo = GeyserConnector.getInstance().getBootstrap().getDumpInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,6 +83,7 @@ public class DumpInfo {
|
||||||
private final String javaVersion;
|
private final String javaVersion;
|
||||||
private final String architecture;
|
private final String architecture;
|
||||||
private final String operatingSystem;
|
private final String operatingSystem;
|
||||||
|
private final String operatingSystemVersion;
|
||||||
|
|
||||||
private final NetworkInfo network;
|
private final NetworkInfo network;
|
||||||
private final MCInfo mcInfo;
|
private final MCInfo mcInfo;
|
||||||
|
@ -78,6 +94,7 @@ public class DumpInfo {
|
||||||
this.javaVersion = System.getProperty("java.version");
|
this.javaVersion = System.getProperty("java.version");
|
||||||
this.architecture = System.getProperty("os.arch"); // Usually gives Java architecture but still may be helpful.
|
this.architecture = System.getProperty("os.arch"); // Usually gives Java architecture but still may be helpful.
|
||||||
this.operatingSystem = System.getProperty("os.name");
|
this.operatingSystem = System.getProperty("os.name");
|
||||||
|
this.operatingSystemVersion = System.getProperty("os.version");
|
||||||
|
|
||||||
this.network = new NetworkInfo();
|
this.network = new NetworkInfo();
|
||||||
this.mcInfo = new MCInfo();
|
this.mcInfo = new MCInfo();
|
||||||
|
@ -122,4 +139,20 @@ public class DumpInfo {
|
||||||
this.javaProtocol = MinecraftConstants.PROTOCOL_VERSION;
|
this.javaProtocol = MinecraftConstants.PROTOCOL_VERSION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public static class RamInfo {
|
||||||
|
|
||||||
|
private final long free;
|
||||||
|
private final long total;
|
||||||
|
private final long max;
|
||||||
|
|
||||||
|
RamInfo() {
|
||||||
|
final long MEGABYTE = 1024L * 1024L;
|
||||||
|
|
||||||
|
this.free = Runtime.getRuntime().freeMemory() / MEGABYTE;
|
||||||
|
this.total = Runtime.getRuntime().totalMemory() / MEGABYTE;
|
||||||
|
this.max = Runtime.getRuntime().maxMemory() / MEGABYTE;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue