diff --git a/common/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java b/common/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java index 051c37dd..d63fee1a 100644 --- a/common/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java +++ b/common/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java @@ -47,6 +47,8 @@ import org.geysermc.floodgate.link.PlayerLinkLoader; import org.geysermc.floodgate.module.ConfigLoadedModule; import org.geysermc.floodgate.module.PostInitializeModule; import org.geysermc.floodgate.news.NewsChecker; +import org.geysermc.floodgate.util.FloodgateInfoHolder; +import org.geysermc.floodgate.util.GitProperties; import org.geysermc.floodgate.util.PrefixCheckTask; import org.geysermc.floodgate.util.TimeSyncerHolder; @@ -60,6 +62,9 @@ public class FloodgatePlatform { private FloodgateConfig config; private Injector guice; + @Inject + private GitProperties properties; + @Inject public FloodgatePlatform( FloodgateApi api, @@ -102,6 +107,11 @@ public class FloodgatePlatform { TimeSyncerHolder.init(); InstanceHolder.set(api, link, this.injector, packetHandlers, handshakeHandlers, KEY); + + // for Geyser dump + FloodgateInfoHolder.setGitProperties(properties.getProperties()); + + guice.getInstance(NewsChecker.class).start(); } public boolean enable(Module... postInitializeModules) { @@ -124,7 +134,6 @@ public class FloodgatePlatform { PrefixCheckTask.checkAndExecuteDelayed(config, logger); - guice.getInstance(NewsChecker.class).start(); return true; } diff --git a/common/src/main/java/org/geysermc/floodgate/module/CommonModule.java b/common/src/main/java/org/geysermc/floodgate/module/CommonModule.java index 344cbe1b..dc858ad5 100644 --- a/common/src/main/java/org/geysermc/floodgate/module/CommonModule.java +++ b/common/src/main/java/org/geysermc/floodgate/module/CommonModule.java @@ -61,6 +61,7 @@ import org.geysermc.floodgate.player.FloodgateHandshakeHandler; import org.geysermc.floodgate.pluginmessage.PluginMessageManager; import org.geysermc.floodgate.skin.SkinApplier; import org.geysermc.floodgate.skin.SkinUploadManager; +import org.geysermc.floodgate.util.GitProperties; import org.geysermc.floodgate.util.LanguageManager; @RequiredArgsConstructor @@ -175,11 +176,27 @@ public class CommonModule extends AbstractModule { @Provides @Singleton - public NewsChecker newsChecker(CommandUtil commandUtil, FloodgateLogger logger) { + public GitProperties gitProperties() { + return new GitProperties(); + } + + @Provides + @Singleton + public NewsChecker newsChecker( + CommandUtil commandUtil, + FloodgateLogger logger, + GitProperties properties) { // will be loaded after enabling, so we can use the link instance in InstanceHolder PlayerLink link = InstanceHolder.getPlayerLink(); logger.info(link.getName()); - return new NewsChecker(link, commandUtil, logger, null, -1); + + String branch = properties.getProperty("git.branch"); + String build = properties.getProperty("git.build.number"); + int buildNumber = -1; + if (build != null) { + buildNumber = Integer.parseInt(build); + } + return new NewsChecker(link, commandUtil, logger, branch, buildNumber); } @Provides diff --git a/common/src/main/java/org/geysermc/floodgate/news/NewsChecker.java b/common/src/main/java/org/geysermc/floodgate/news/NewsChecker.java index ceb61c35..a93c951f 100644 --- a/common/src/main/java/org/geysermc/floodgate/news/NewsChecker.java +++ b/common/src/main/java/org/geysermc/floodgate/news/NewsChecker.java @@ -173,7 +173,7 @@ public class NewsChecker { return; } - String fullDatabaseName = Constants.NEWS_PROJECT_NAME + link.getName(); + String fullDatabaseName = Constants.NEWS_PROJECT_NAME + '/' + link.getName(); if (!fullDatabaseName.equals(item.getProject())) { return; } diff --git a/common/src/main/java/org/geysermc/floodgate/util/GitProperties.java b/common/src/main/java/org/geysermc/floodgate/util/GitProperties.java new file mode 100644 index 00000000..66d33b53 --- /dev/null +++ b/common/src/main/java/org/geysermc/floodgate/util/GitProperties.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2019-2021 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/Floodgate + */ + +package org.geysermc.floodgate.util; + +import java.util.Properties; + +public class GitProperties { + private final Properties properties; + + public GitProperties() { + properties = Utils.readProperties("git.properties"); + } + + public Properties getProperties() { + return properties; + } + + public Object get(Object key) { + return properties.get(key); + } + + public String getProperty(String key) { + return properties.getProperty(key); + } + + public String getProperty(String key, String defaultValue) { + return properties.getProperty(key, defaultValue); + } + + public Object getOrDefault(Object key, Object defaultValue) { + return properties.getOrDefault(key, defaultValue); + } +} diff --git a/common/src/main/java/org/geysermc/floodgate/util/Utils.java b/common/src/main/java/org/geysermc/floodgate/util/Utils.java index 07c0c5c3..0871c920 100644 --- a/common/src/main/java/org/geysermc/floodgate/util/Utils.java +++ b/common/src/main/java/org/geysermc/floodgate/util/Utils.java @@ -39,6 +39,7 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.Properties; import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.regex.Pattern; @@ -84,6 +85,16 @@ public class Utils { return new BufferedReader(reader); } + public static Properties readProperties(String resourceFile) { + Properties properties = new Properties(); + try (InputStream is = Utils.class.getClassLoader().getResourceAsStream(resourceFile)) { + properties.load(is); + } catch (IOException e) { + e.printStackTrace(); + } + return properties; + } + public static String getLocale(Locale locale) { return locale.getLanguage() + "_" + locale.getCountry(); } diff --git a/pom.xml b/pom.xml index 708e053d..64e61093 100644 --- a/pom.xml +++ b/pom.xml @@ -98,6 +98,41 @@ + + pl.project13.maven + git-commit-id-plugin + 4.0.0 + + + get-the-git-infos + + revision + + + + + true + ${project.build.outputDirectory}/git.properties + properties + false + false + false + true + false + + git.user.* + git.*.user.* + git.closest.* + git.commit.id.describe + git.commit.id.describe-short + git.commit.message.short + + flat + + true + + +