SpigotUpDatechecker ist eine einfache, aber leistungsstarke Bibliothek, um Ihren Plugins einen perfekt funktionierenden Update -Checker hinzuzufügen. Scrollen Sie ganz nach unten für Maven -Informationen, Javadocs und ein vollständiges Beispiel -Plugin!
Autor: mfnalex
Mitwirkende: mrnemo64
Verwandter Spigotmc -Thread
Sie können manuelle und wiederholte Update -Überprüfungen ausstellen und das Ergebnis als Ingame -Nachricht an bestimmte Spieler senden und/oder lassen sie in die Konsole gedruckt.
Alle Schecks werden asynchron durchgeführt. Wenn der Scheck abgeschlossen ist, wird ein benutzerdefiniertes Ereignis aufgerufen. Der Update -Checker selbst hört ihm an und kann die Betreiber bei Join oder Spielern automatisch mit einer bestimmten Berechtigung benachrichtigen.
Natürlich können Sie auch das UpdateCeckevent selbst anhören, um zu tun, was Sie mögen, sobald eine neue Version erkannt wird.
Es ist auch möglich, zwei Download -Links zu definieren, wenn Ihr Plugin als kostenlose und bezahlte Version verfügbar ist, und Sie können Links zu Ihrer Spendenseite und Ihrem Changelog hinzufügen.
Sie können entweder alle diese Links angeben, einschließlich des API -Endpunkts, an dem die neueste Version selbst überprüft wird, oder einfach die SpigotMC -Ressourcen -ID Ihres Plugins für den Update -Checker bereitstellen, um diese Links automatisch zu erhalten.
Unterstützte API -Endpunkte zum Abrufen von Versionsinformationen:
Der UpdateChecker ist in meinem öffentlichen Repository verfügbar:
< 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 >
Bitte beachten Sie, dass Sie auch den UpdateChecker in Ihre .JAR -Datei beschatten und umziehen müssen:
< 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: " ))
}
}
}
Wenn Sie das Paket nicht umziehen, wird der UpdateCecker eine Ausnahme ausgelöst. Umziehen Sie es also!
Um ein funktionierendes UpdateChecker zu erhalten, reicht dies bereits aus:
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
}
}
Der obige Code druckt eine Nachricht an die Konsole, sobald eine neue Version verfügbar ist, und sendet eine Nachricht an jeden OP, der sich dem Server anschließt. Wenn keine neue Version gefunden wird, wird keine Nachricht gesendet.
Natürlich gibt es viele weitere Optionen, die Sie verwenden können. Zum Beispiel:
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
}
}
Stellen Sie sich jetzt vor, Sie haben zwei Versionen Ihres Plugins. Eine kostenlose Version und eine kostenpflichtige Version mit zusätzlichen Funktionen, wie mein Angelchest Free und Angelchest Plus Plugin. Wenn beide Plugins dieselbe Codebasis teilen und sich nur für die Laufzeit entscheiden, ob die Premium -Funktionen freigeschaltet werden, können Sie leicht so etwas bearbeiten:
Benutzer der kostenlosen Version erhalten Links zu beiden Versionen, sodass sie die Vorteile Ihrer kostenpflichtigen Version sehen können, während wir den Link für kostenlose Versionen nicht an Benutzer senden möchten, die die kostenpflichtige Version bereits gekauft haben. Der Update -Checker verwendet die Premium -Ressourcen -Platzhalter von SpigotMC, um festzustellen, ob ein Server die kostenpflichtige Version verwendet. Sie können diese Erkennung jedoch auch mithilfe von UpdateCecker#setUStoUtPaidversion (boolean) überschreiben.
Um dies zu erreichen, können Sie dies einfach tun:
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 ();
}
}
Benutzer der kostenlosen Version sehen nun beide Links:
Benutzer der kostenpflichtigen Version erhalten jedoch nur den Download -Link der kostenpflichtigen Version, genau wie in den Screenshots oben.
Sie können Verbraucher verwenden, um das Verhalten des Update Checker zu ändern.
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 ();
}
}
Der in meinem öffentliche Repository veröffentlichte .jar wurde durch Allatori durchgeführt, um die Dateigröße um etwa 30%zu verringern. Es wirkt sich nicht negativ auf die Leistung aus. Die gebrauchten Verschleiftungseinstellungen sind auf SpigotMC sowohl für kostenlose als auch für kostenpflichtige Plugins zulässig.
Wenn Sie es selbst bauen möchten , kommentieren Sie einfach den Teil Maven-exec-Plugin in Ihrem pom.xml (derzeit Linien 167 bis 192).
Javadocs sind hier verfügbar
Beispiel Plugin: https://github.com/jeff-media-gbr/spigot-updatechecker-example
Meine CustomBlockData -Bibliothek bietet für jeden Block in Ihrer Welt einen persistentenDatacontainer - speichern Sie problemlos alle Informationen, die Sie in Blöcken mögen, ohne dass ein externer Speicher erforderlich ist!
Fügt eine Menge neuer persistentDatatypen hinzu, die Sie mit Bukkits persistentDatacontainer verwenden können.
Fühlen Sie sich frei, mich meiner Zwietracht zu verbinden, um Hilfe zu erhalten.