SpigotupDatecheckerは、プラグインに完全に機能する更新チェッカーを追加するためのシンプルだが強力なライブラリです。 Maven情報、Javadocs、および完全なサンプルプラグインについては、下部までずっとスクロールしてください!
著者:MFNALEX
貢献者:mrnemo64
関連するspigotmcスレッド
マニュアルおよび繰り返しの更新チェックを発行し、特定のプレイヤーに撮影メッセージとして結果を送信したり、コンソールに印刷したりすることができます。
すべてのチェックは非同期に行われます。チェックが完了すると、カスタムイベントが呼び出されます。更新チェッカー自体はそれに耳を傾け、特定の許可を得て、参加者またはプレーヤーについてオペレーターに自動的に通知することができます。
もちろん、新しいバージョンが検出されたら、updatecheckeventを聴くために自分の好きなことをすることもできます。
また、プラグインが無料で有料版の両方として利用可能である場合、2つのダウンロードリンクを定義することもでき、寄付ページとchangelogにリンクを追加できます。
最新バージョンが自分でチェックされるAPIエンドポイントなど、これらすべてのリンクを提供するか、更新チェッカーのプラグインのSPIGOTMCリソースIDを提供して、それらのリンクを自動的に取得するだけです。
バージョン情報を取得するためにサポートされているAPIエンドポイント:
UpdateCheckerは私の公開リポジトリで入手できます。
< 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 >
また、UpdateCheckerをシェードして.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: " ))
}
}
}
パッケージを再配置しないと、UpdateCheckerが例外をスローするため、再配置してください!
機能するupdatecheckerを取得するには、これですでに十分です。
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
}
}
上記のコードは、新しいバージョンが利用可能になったらコンソールにメッセージを印刷し、サーバーに参加するすべてのOPにメッセージを送信します。新しいバージョンが見つからない場合、メッセージは送信されません。
もちろん、使用できるオプションはもっとたくさんあります。例えば:
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
}
}
プラグインの2つのバージョンがあると想像してください。 1つの無料バージョンと、AngelChest FreeやAngelChest Plusプラグインなど、追加機能を備えた有料バージョン。両方のプラグインが同じコードベースを共有し、プレミアム機能のロックを解除するかどうかランタイムのみを決定する場合、このようなものを簡単に取得できます。
無料版のユーザーは両方のバージョンへのリンクを取得するため、有料版をすでに購入したユーザーに無料版のリンクを送信したくありませんが、有料版の利点を確認できます。更新チェッカーは、SPIGOTMCのプレミアムリソースプレースホルダーを使用して、サーバーが有料版を使用しているかどうかを検出しますが、 UpdateChecker#SetusingPaidversion(Boolean)を使用してこの検出をオーバーライドすることもできます。
これを達成するために、これを行うことができます:
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 ();
}
}
無料版のユーザーには、両方のリンクが表示されます。
ただし、有料版のユーザーは、上部のスクリーンショットのように、有料版のダウンロードリンクのみを取得します。
消費者を使用して、アップデートチェッカーの動作を変更できます。
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 ();
}
}
私の公開リポジトリで公開されている.jarは、アラトリを介して実行され、ファイルサイズを約30%削減しました。マイナスのパフォーマンスには影響しません。使用済みの難読化設定は、無料のプラグインと有料プラグインの両方でSPIGOTMCで許可されています。
自分で構築したい場合は、pom.xml(現在167〜192行目)のmaven-exec-pluginパーツをコメントしてください。
Javadocsはこちらから入手できます:https://hub.jeff-media.com/javadocs/spigotupdatechecker/
プラグインの例:https://github.com/jeff-media-gbr/spigot-updatechecker-example
私のcustomblockdataライブラリは、外部ストレージが必要なく、ブロック内のすべての情報を簡単に保存してください。
BukkitのPersistentDatacontainerで使用する新しいPersistentDatatypesを大量に追加します。
助けを求めて私の不一致にお気軽に参加してください。