SpigotupDateChecker เป็นไลบรารีที่เรียบง่าย แต่ทรงพลังในการเพิ่มตัวตรวจสอบการอัปเดตที่ทำงานได้อย่างสมบูรณ์แบบลงในปลั๊กอินของคุณ เลื่อนไปทางด้านล่างเพื่อข้อมูล maven, Javadocs และปลั๊กอินตัวอย่างที่สมบูรณ์!
ผู้แต่ง: mfnalex
ผู้มีส่วนร่วม: mrymo64
เธรด 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 >
โปรดทราบว่าคุณจะต้องแรเงาและย้ายผู้อัปเดตไปยังไฟล์. 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 ของฉัน หากปลั๊กอินทั้งสองแชร์ codebase เดียวกันและตัดสินใจเลือกรันไทม์ว่าจะปลดล็อกคุณสมบัติพรีเมี่ยมคุณสามารถรับสิ่งนี้ได้อย่างง่ายดาย:
ผู้ใช้เวอร์ชันฟรีจะได้รับลิงก์ไปยังทั้งสองเวอร์ชันดังนั้นพวกเขาจึงสามารถเห็นข้อดีของเวอร์ชันที่คุณชำระเงินของคุณในขณะที่เราไม่ต้องการส่งลิงค์เวอร์ชันฟรีไปยังผู้ใช้ที่ซื้อเวอร์ชันที่ชำระแล้ว ตัวตรวจสอบการอัปเดตใช้ตัวยึดทรัพยากรพรีเมี่ยมของ SpigotMC เพื่อตรวจสอบว่าเซิร์ฟเวอร์ใช้เวอร์ชันที่ชำระเงินหรือไม่ แต่คุณสามารถแทนที่การตรวจจับนี้โดยใช้ UpdateChecker#SetusingPaidversion (บูลีน)
เพื่อให้บรรลุเป้าหมายนี้คุณสามารถทำได้:
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-exmple
ห้องสมุด CustomBlockData ของฉันให้บริการ PersistentDataContainer สำหรับทุกบล็อกในโลกของคุณ - บันทึกข้อมูลทุกอย่างที่คุณต้องการในบล็อกได้อย่างง่ายดายโดยไม่จำเป็นต้องมีที่เก็บข้อมูลภายนอก!
เพิ่ม antistentDatatypes ใหม่จำนวนมากเพื่อใช้กับ PresententDataContainer ของ Bukkit
อย่าลังเลที่จะเข้าร่วม Discord ของฉันเพื่อขอความช่วยเหลือ