2016年7月21日 星期四

如何製作Spigot Plugin 第二章 第一個插件(二)

如何製作Spigot Plugin 第第一個插件()

只在控制台上顯示文字是不是不過癮,我們可以更進一步讓玩家感受到,讓玩家登入遊戲時看到我們想表達的訊息。



在這裡我們採用事件(Event)來做觸發點,[PlayerJoinEvent]是一個經常使用到的事件,每個玩家進入遊戲一定會觸發的事件,而我們所做的是歡迎詞跟一些資訊的顯示,[Player]即是代表觸發該事件的玩家,我們可以從API中的方法取得各式各樣的玩家資訊。

服務器版本[Bukkit]內含有大量靜態(Static)的方法,未來我們經常會用到,其中[getBukkitVersion()]可以取的Bukkit的版本,而[getVersion()]則是取得Spigot的建構版本。
服務器玩家人數:基本上人數在登入服務器頁面就可以得知,不過也有部分服務器會隱藏該項訊息,我們採用的方法一樣也是[現有玩家人數/最大玩家數],最大玩家數是服務器的設定值,我們可以由[getMaxPlayers()]來取得,而現有玩家就是Online Players所已取得方式就是[getOnlinePlayers().size()]
玩家IP:既然是玩家IP自然我們要從[Player]內著手,在這裡我們利用[getAddress().getHostName()]取得玩家IP,當然我們也可以順手取得Port再加以完整的顯示。
Ping:在這裡我們無法從API中查獲,所以我們需要打開前下載的Spigot文件夾[Spigot-Server],當然您也可以用反編譯取得這就是NMS(net.minecraft.server)NMS是不穩定的除了版本號變更會需要再寫一次以支援新版外,有可能這個方法在新版就無法使用,所以開發插件我們會盡量避免NMS上的使用。在這裡我們轉型為[CraftPlayer]再由[getHandle().ping]取得該玩家的Ping值。
§?:在[String]內你看到我放入不少「§」符號,遊戲內文字也是有顏色,我們可以採用內建顏色對我們的文字上色,色碼表上對照所需的顏色,我們也可以運用[ChatColor]來作著色,這種方法可以明確的在編碼內告知著色內容問題是文字轉換還是會轉成符號,這樣在比較時很容易發生錯誤。



我們還需要為自己的事件進行註冊,讓服務器執行我們的製作辛()血,記得修改一下前面教學的內容創造自己的風格。




最後觀賞一下自己的作品,感受一下完成之後的喜悅~

沒有留言: