SpigotupDateChecker est une bibliothèque simple mais puissante pour ajouter un vérificateur de mise à jour parfaitement fonctionnel à vos plugins. Faites défiler jusqu'au bas pour les informations Maven, les Javadocs et un exemple complet du plugin!
Auteur: mfnalex
Contributeurs: MRNEMO64
Fil SpigotMC connexe
Vous pouvez émettre des vérifications de mise à jour manuelles et répétées et envoyer le résultat sous forme de message en jeu à des joueurs spécifiques et / ou les imprimer sur la console.
Tous les chèques sont effectués de manière asynchrone. Lorsque le chèque est effectué, un événement personnalisé est appelé. Le vérificateur de mise à jour lui-même l'écoute et peut informer automatiquement les opérateurs de jointure ou de joueurs avec une autorisation spécifique.
Bien sûr, vous pouvez également écouter le UpdateCkevent vous-même pour faire ce que vous voulez une fois qu'une nouvelle version est détectée.
Il est également possible de définir deux liens de téléchargement si votre plugin est disponible en tant que version gratuite et payante, et vous pouvez ajouter des liens vers votre page de don et Changelog.
Vous pouvez soit fournir tous ces liens, y compris au point de terminaison de l'API où la dernière version est vérifiée vous-même, soit simplement fournir l'ID de ressource SPIGOTMC de votre plugin pour le vérificateur de mise à jour pour obtenir ces liens automatiquement.
Points de terminaison API pris en charge pour récupérer les informations de version:
Le UpdateChecker est disponible dans mon référentiel public:
< repositories >
< repository >
< id >jeff-media-public</ id >
< url >https://repo.jeff-media.com/public/</ url >
</ repository >
</ repositories >
< dependencies >
< dependency >
< groupId >com.jeff_media</ groupId >
< artifactId >SpigotUpdateChecker</ artifactId >
< version >3.0.3</ version >
< scope >compile</ scope >
</ dependency >
</ dependencies >
Veuillez noter que vous devrez également ombrer et déplacer le UpdateChecker dans votre fichier .jar:
< build >
...
< plugins >
...
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-shade-plugin</ artifactId >
< version >3.3.0</ version >
< configuration >
< relocations >
<!-- Using the maven-shade-plugin to shade and relocate the UpdateChecker -->
<!-- Replace "your.package" with your plugin's package name -->
< relocation >
< pattern >com.jeff_media.updatechecker</ pattern >
< shadedPattern >your.package.updatechecker</ shadedPattern >
</ relocation >
</ relocations >
</ configuration >
< executions >
< execution >
< phase >package</ phase >
< goals >
< goal >shade</ goal >
</ goals >
</ execution >
</ executions >
</ plugin >
</ plugins >
</ build >
plugins {
id( " com.github.johnrengelman.shadow " ) version " x.x.x " // Used for shading
}
repositories {
maven(url = " https://repo.jeff-media.com/public/ " )
}
dependencies {
implementation( " com.jeff_media:SpigotUpdateChecker:3.0.3 " )
}
tasks.named< ShadowJar >( " shadowJar " ) {
dependencies {
relocate( " com.jeff_media " , " your.package.lib " ) {
include(dependency( " com.jeff_media: " ))
}
}
}
Ne pas déplacer le package fera que le UpdateChecker lance une exception, alors le déplacer!
Pour obtenir un UpdateChecker fonctionnel, cela suffit déjà:
public class MyPlugin extends JavaPlugin {
// To get the Resource ID, look at the number at the end of the URL of your plugin's SpigotMC page
private static final String SPIGOT_RESOURCE_ID = "59773" ;
@ Override
public void onEnable () {
new UpdateChecker ( this , UpdateCheckSource . SPIGOT , SPIGOT_RESOURCE_ID ) // You can also use Spiget instead of Spigot - Spiget's API is usually much faster up to date.
. checkEveryXHours ( 24 ) // Check every 24 hours
. checkNow (); // And check right now
}
}
Le code ci-dessus imprimera un message à la console une fois qu'une nouvelle version est disponible et enverra également un message à chaque OP rejoignant le serveur. Si aucune nouvelle version n'est trouvée, aucun message ne sera envoyé.
Bien sûr, il existe de nombreuses autres options que vous pouvez utiliser. Par exemple:
import com . jeff_media . updatechecker . UpdateCheckSource ;
public class MyPlugin extends JavaPlugin {
private static final String SPIGOT_RESOURCE_ID = "59773" ;
@ Override
public void onEnable () {
new UpdateChecker ( this , UpdateCheckSource . CUSTOM_URL , "https://api.jeff-media.de/chestsort/latest-version.txt" ) // A link to a URL that contains the latest version as String
. setDownloadLink ( "https://www.chestsort.de" ) // You can either use a custom URL or the Spigot Resource ID
. setDonationLink ( "https://paypal.me/mfnalex" )
. setChangelogLink ( SPIGOT_RESOURCE_ID ) // Same as for the Download link: URL or Spigot Resource ID
. setNotifyOpsOnJoin ( true ) // Notify OPs on Join when a new version is found (default)
. setNotifyByPermissionOnJoin ( "myplugin.updatechecker" ) // Also notify people on join with this permission
. setUserAgent ( new UserAgentBuilder (). addPluginNameAndVersion ())
. checkEveryXHours ( 0.5 ) // Check every 30 minutes
. checkNow (); // And check right now
}
}
Imaginez maintenant que vous avez deux versions de votre plugin. Une version gratuite et une version payante avec des fonctionnalités supplémentaires, comme mon plugin AngelChest Free et AngelChest Plus. Si les deux plugins partagent la même base de code et ne décident que de l'exécution de déverrouiller les fonctionnalités premium, vous pouvez facilement obtenir quelque chose comme ça en marche:
Les utilisateurs de la version gratuite obtiendront des liens vers les deux versions, afin qu'ils puissent voir les avantages de votre version payante, alors que nous ne voulons pas envoyer le lien de version gratuite aux utilisateurs qui ont déjà acheté la version payante. Le vérificateur de mise à jour utilise les espaces réservés de ressources premium de SpigotMC pour détecter si un serveur utilise la version payante, mais vous pouvez également remplacer cette détection à l'aide de UpdateChecker # SetUsingPaidVersion (Boolean) .
Pour y parvenir, vous pouvez simplement le faire:
import com . jeff_media . updatechecker . UpdateCheckSource ;
public class MyPlugin extends JavaPlugin {
private static final int ANGELCHEST_FREE = 60383 ;
private static final int ANGELCHEST_PLUS = 88214 ;
private final boolean usingPaidVersion = howEverYouDetectIt ();
@ Override
public void onEnable () {
new UpdateChecker ( this , UpdateCheckSource . CUSTOM_URL , "https://api.jeff-media.de/angelchest/latest-version.txt" )
. setFreeDownloadLink ( ANGELCHEST_FREE )
. setPaidDownloadLink ( ANGELCHEST_PLUS )
. setNameFreeVersion ( "Free" ) // Optional. It's the suffix for the download links
. setNamePaidVersion ( "Plus" ) // when both links are shown.
. checkNow ();
}
}
Les utilisateurs de la version gratuite verront désormais les deux liens:
Les utilisateurs de la version payante n'obtiendront cependant que le lien de téléchargement de la version payante, tout comme dans les captures d'écran en haut.
Vous pouvez utiliser les consommateurs pour modifier le comportement du vérificateur de mise à jour.
import com . jeff_media . updatechecker . UpdateCheckSource ;
public class MyPlugin extends JavaPlugin {
@ Override
public void onEnable () {
new UpdateChecker ( this , UpdateCheckSource . CUSTOM_URL , "https://api.jeff-media.de/angelchest/latest-version.txt" )
. setDownloadLink ( "https://www.chestsort.de" )
. onSuccess (( commandSenders , latestVersion ) -> {
for ( CommandSender sender : commandSenders ) {
sender . sendMessage ( "This code will run after the update check was successfull." );
}
})
. onFail (( commandSenders , exception ) -> {
for ( CommandSender sender : commandSenders ) {
sender . sendMessage ( "This code will run after the update check failed." );
}
})
. setNotifyRequesters ( false ) // Do not show the default messages, instead only run our custom consumers
. checkNow ();
}
}
Le .Jar publié dans mon référentiel public a été exécuté via Alllate pour diminuer la taille du fichier d'environ 30%. Cela n'affecte pas les performances de manière négative. Les paramètres d'obscurcissement utilisés sont autorisés sur SPIGOTMC pour les plugins gratuits et payants.
Si vous aimez le construire vous-même , commentez simplement la partie Maven-Exec-Plugin dans votre pom.xml (actuellement les lignes 167 à 192).
Les javadocs sont disponibles ici: https://hub.jeff-media.com/javadocs/spigotupdatechecker/
Exemple de plugin: https://github.com/jeff-media-gbr/spigot-updatechecker-example
Ma bibliothèque CustomBlockData fournit un PersistantDatacontainer pour chaque bloc de votre monde - enregistrez facilement toutes les informations que vous aimez à l'intérieur des blocs, sans aucun stockage externe nécessaire!
Ajoute une tonne de nouveaux datatypes persistants à utiliser avec PersistentDatacontainer persistant de Bukkit.
N'hésitez pas à rejoindre ma discorde pour obtenir de l'aide.