Expose server build information
Co-authored-by: Professor Bloodstone <git@bloodstone.dev> Co-authored-by: Mark Vainomaa <mikroskeem@mikroskeem.eu> Co-authored-by: masmc05 <masmc05@gmail.com> Co-authored-by: Riley Park <rileysebastianpark@gmail.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package com.destroystokyo.paper.util;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
@NullMarked
|
||||
public interface VersionFetcher {
|
||||
|
||||
/**
|
||||
* Amount of time to cache results for in milliseconds
|
||||
* <p>
|
||||
* Negative values will never cache.
|
||||
*
|
||||
* @return cache time
|
||||
*/
|
||||
long getCacheTime();
|
||||
|
||||
/**
|
||||
* Gets the version message to cache and show to command senders.
|
||||
*
|
||||
* <p>NOTE: This is run in a new thread separate from that of the command processing thread</p>
|
||||
*
|
||||
* @param serverVersion the current version of the server (will match {@link Bukkit#getVersion()})
|
||||
* @return the message to show when requesting a version
|
||||
*/
|
||||
Component getVersionMessage(String serverVersion);
|
||||
|
||||
@ApiStatus.Internal
|
||||
class DummyVersionFetcher implements VersionFetcher {
|
||||
|
||||
@Override
|
||||
public long getCacheTime() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component getVersionMessage(final String serverVersion) {
|
||||
Bukkit.getLogger().warning("Version provider has not been set, cannot check for updates!");
|
||||
Bukkit.getLogger().info("Override the default implementation of org.bukkit.UnsafeValues#getVersionFetcher()");
|
||||
new Throwable().printStackTrace();
|
||||
return Component.text("Unable to check for updates. No version provider set.", NamedTextColor.RED);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user