|
25 | 25 |
|
26 | 26 | package org.geysermc.geyser.command.defaults; |
27 | 27 |
|
| 28 | +import com.fasterxml.jackson.databind.JsonNode; |
28 | 29 | import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec; |
29 | | -import org.geysermc.geyser.Constants; |
30 | 30 | import org.geysermc.geyser.GeyserImpl; |
31 | 31 | import org.geysermc.geyser.api.util.PlatformType; |
32 | 32 | import org.geysermc.geyser.command.GeyserCommand; |
|
37 | 37 | import org.geysermc.geyser.text.GeyserLocale; |
38 | 38 | import org.geysermc.geyser.util.WebUtils; |
39 | 39 |
|
40 | | -import java.net.URLEncoder; |
41 | | -import java.nio.charset.StandardCharsets; |
| 40 | +import java.io.IOException; |
42 | 41 | import java.util.List; |
43 | 42 |
|
44 | 43 | public class VersionCommand extends GeyserCommand { |
@@ -72,27 +71,36 @@ public void execute(GeyserSession session, GeyserCommandSource sender, String[] |
72 | 71 | GeyserImpl.NAME, GeyserImpl.VERSION, javaVersions, bedrockVersions)); |
73 | 72 |
|
74 | 73 | // Disable update checking in dev mode and for players in Geyser Standalone |
75 | | - if (GeyserImpl.getInstance().isProductionEnvironment() && !(!sender.isConsole() && geyser.getPlatformType() == PlatformType.STANDALONE)) { |
76 | | - sender.sendMessage(GeyserLocale.getPlayerLocaleString("geyser.commands.version.checking", sender.locale())); |
77 | | - try { |
78 | | - String buildXML = WebUtils.getBody("https://ci.opencollab.dev/job/GeyserMC/job/Geyser/job/" + |
79 | | - URLEncoder.encode(GeyserImpl.BRANCH, StandardCharsets.UTF_8) + "/lastSuccessfulBuild/api/xml?xpath=//buildNumber"); |
80 | | - if (buildXML.startsWith("<buildNumber>")) { |
81 | | - int latestBuildNum = Integer.parseInt(buildXML.replaceAll("<(\\\\)?(/)?buildNumber>", "").trim()); |
82 | | - int buildNum = this.geyser.buildNumber(); |
83 | | - if (latestBuildNum == buildNum) { |
84 | | - sender.sendMessage(GeyserLocale.getPlayerLocaleString("geyser.commands.version.no_updates", sender.locale())); |
85 | | - } else { |
86 | | - sender.sendMessage(GeyserLocale.getPlayerLocaleString("geyser.commands.version.outdated", |
87 | | - sender.locale(), (latestBuildNum - buildNum), Constants.GEYSER_DOWNLOAD_LOCATION)); |
88 | | - } |
89 | | - } else { |
90 | | - throw new AssertionError("buildNumber missing"); |
91 | | - } |
92 | | - } catch (Exception e) { |
93 | | - GeyserImpl.getInstance().getLogger().error(GeyserLocale.getLocaleStringLog("geyser.commands.version.failed"), e); |
94 | | - sender.sendMessage(ChatColor.RED + GeyserLocale.getPlayerLocaleString("geyser.commands.version.failed", sender.locale())); |
| 74 | + if (!GeyserImpl.getInstance().isProductionEnvironment() || (!sender.isConsole() && geyser.getPlatformType() == PlatformType.STANDALONE)) { |
| 75 | + return; |
| 76 | + } |
| 77 | + |
| 78 | + if (GeyserImpl.IS_DEV) { |
| 79 | + // TODO cloud use language string |
| 80 | + sender.sendMessage("You are running a development build of Geyser! Please report any bugs you find on our Discord server: %s" |
| 81 | + .formatted("https://discord.gg/geysermc")); |
| 82 | + //sender.sendMessage(GeyserLocale.getPlayerLocaleString("geyser.core.dev_build", sender.locale(), "https://discord.gg/geysermc")); |
| 83 | + return; |
| 84 | + } |
| 85 | + |
| 86 | + sender.sendMessage(GeyserLocale.getPlayerLocaleString("geyser.commands.version.checking", sender.locale())); |
| 87 | + try { |
| 88 | + int buildNumber = this.geyser.buildNumber(); |
| 89 | + JsonNode response = WebUtils.getJson("https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest"); |
| 90 | + int latestBuildNumber = response.get("build").asInt(); |
| 91 | + |
| 92 | + if (latestBuildNumber == buildNumber) { |
| 93 | + sender.sendMessage(GeyserLocale.getPlayerLocaleString("geyser.commands.version.no_updates", sender.locale())); |
| 94 | + return; |
95 | 95 | } |
| 96 | + |
| 97 | + sender.sendMessage(GeyserLocale.getPlayerLocaleString( |
| 98 | + "geyser.commands.version.outdated", |
| 99 | + sender.locale(), (latestBuildNumber - buildNumber), "https://geysermc.org/download" |
| 100 | + )); |
| 101 | + } catch (IOException e) { |
| 102 | + GeyserImpl.getInstance().getLogger().error(GeyserLocale.getLocaleStringLog("geyser.commands.version.failed"), e); |
| 103 | + sender.sendMessage(ChatColor.RED + GeyserLocale.getPlayerLocaleString("geyser.commands.version.failed", sender.locale())); |
96 | 104 | } |
97 | 105 | } |
98 | 106 |
|
|
0 commit comments