SPIGOTUPDATECHECKER هي مكتبة بسيطة ولكنها قوية لإضافة مدقق تحديث يعمل بشكل مثالي إلى المكونات الإضافية الخاصة بك. قم بالتمرير على طول الطريق إلى الأسفل للحصول على معلومات Maven و Javadocs و Plugin مثال كامل!
المؤلف: Mfnalex
المساهمون: mrnemo64
ذات صلة spigotmc الموضوع
يمكنك إصدار شيكات التحديث اليدوي والمتكرر وإرسال النتيجة كرسالة Ingame إلى لاعبين محددين و/أو طباعتها إلى وحدة التحكم.
تتم جميع الشيكات بشكل غير متزامن. عند الانتهاء من الشيك ، يتم استدعاء حدث مخصص. يستمع مدقق التحديث نفسه إلى ذلك ويمكنه إخطار المشغلين تلقائيًا على الانضمام أو اللاعبين بإذن محدد.
بالطبع ، يمكنك أيضًا الاستماع إلى updatecheckevent بنفسك للقيام بكل ما تريده بمجرد اكتشاف إصدار جديد.
من الممكن أيضًا تحديد رابطين للتنزيل إذا كان المكون الإضافي الخاص بك متاحًا كإصدار مجاني ومدفوع ، ويمكنك إضافة روابط إلى صفحة التبرع الخاصة بك و changelog.
يمكنك إما توفير كل هذه الروابط ، بما في ذلك نقطة نهاية API حيث يتم فحص أحدث إصدار بنفسك ، أو فقط توفير معرف مورد SpigOTMC الخاص بك لمؤشر التحديث للحصول على هذه الروابط تلقائيًا.
نقاط نهاية 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
}
}
تخيل الآن أن لديك نسختين من البرنامج المساعد الخاص بك. إصدار مجاني واحد وإصدار مدفوع مع ميزات إضافية ، مثل ملحق Angelchest Free و AngelChest Plus. إذا شارك كلا الإضافيين نفس قاعدة الكود وقرر فقط وقت التشغيل سواءً كنت ستحفل الميزات الممتازة ، فيمكنك بسهولة الحصول على شيء مثل هذا العمل:
سيحصل مستخدمو الإصدار المجاني على روابط لكلا الإصدارين ، حتى يتمكنوا من رؤية مزايا الإصدار المدفوع ، بينما لا نريد إرسال رابط الإصدار المجاني إلى المستخدمين الذين اشتروا الإصدار المدفوع بالفعل. يستخدم Checker Update Advate 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 المنشور في مستودعتي العامة من خلال Allatori لتقليل حجم الملف بنسبة 30 ٪ تقريبًا. لا يؤثر على الأداء بأي طريقة سلبية. يُسمح بإعدادات التشويش المستخدمة على spigoTMC لكل من الإضافات المجانية والمدفوعة.
إذا كنت ترغب في بنائه بنفسك ، فما عليك سوى التعليق على جزء Maven-Exec-plugin في pom.xml الخاص بك (الخطوط حاليًا من 167 إلى 192).
Javadocs متوفرة هنا: https://hub.jeff-media.com/javadocs/spigotupdatechecker/
مثال البرنامج المساعد: https://github.com/jeff-media-gbr/spigot updatechecker-example
توفر مكتبة CustomBlockData الخاصة بي مستمدة DersistentDataContainer لكل كتلة في عالمك - احفظ بسهولة كل المعلومات التي تحبها داخل الكتل ، دون الحاجة إلى أي تخزين خارجي!
يضيف طنًا من الأنماط الجديدة التي يجب استخدامها مع Bukkit's PercistentDataContainer.
لا تتردد في الانضمام إلى Discord للحصول على المساعدة.