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]來作著色,這種方法可以明確的在編碼內告知著色內容問題是文字轉換還是會轉成符號,這樣在比較時很容易發生錯誤。



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




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

2016年7月17日 星期日

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

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

基本上我們的開發教學主要以最新版的Spigot為主,開發工具就不需要再多做教學必竟這不是重點,少說廢話我們直奔主題。



~上面的寫法不是必要的,不過使用得當可以在服務器中凸顯效果,不過有開過服務器的都知道服務器記錄檔是不會顯示顏色,只有在開啟的文字模式當下才有作用,如果覺得麻煩可以跳過這一部分。



接下來我們先建立所謂的Main Class,這部分跟獨立運作的Main Class有些不同,首先繼承[JavaPlugin.Class] 也就是Spigot的接口(可以想像這是個溝通的橋梁),開啟SpigotAPI檢查一下JavaPlugin內容,這裡我們需要重新定義方法來完成這個插件獨立的效果。

onLoad():當Spigot讀取資料時才會執行,可是這個方法不太常用到,必竟未完成讀取的資料呈現著不穩定的狀態,比如在尚未完成地圖載入時執行方塊的安置,這部分便會產生錯誤。
onEnable():在這裡啟動插件內所有需要運轉的內容是最好的,此時所有的插件、服務器地圖、資料也載入完畢,不過出現錯誤時插件會直接關閉,雖然不會關閉服務器,但是編輯的內容盡量以簡單為主,也有與其他插件衝突部分不過大多不是在這(大多數是指令名稱相同造成衝突)
onDisable():插件運用中可能會有需要儲存的部分,所以當服務器準備關閉時你會在這時後加入存檔的功能,不過在這裡不包含服務器過載、運算無線循環造成的死當。



雖然我們已經有Spigot接口並且執行一些程式碼,但是還需要有入場卷,這部分就像插件的身分證一樣。

name:插件名稱,有預設的設定檔會在同名的資料夾內。
mainMain Class的位置。
version:版本號,每次有變動最好加1號,這樣可以知道到底修改幾次。
description:簡單的敘述插件作用。




編譯後欣賞一下自己的作品,上面的圖有截斷過所以建議您立刻動手創出第一個插件吧!

2016年7月13日 星期三

Spigot 核心下載教學

Spigot 核心下載教學

有關於BUKKIT版權問題已經一陣子,大多數Bukkit 插件都已經轉成Spigot插件,其實Bukkit依然在開發而不是結束,Spigot其實是Bukkit其中的一個開發版本,當然版權問題依然是存在的所以我們不要自行發佈已經解碼的核心避免觸法,當然我在這提供的是怎樣下載也不會提供核心所以大家可以放心的看下去。



首先的第一步驟是下載GIT(git-scm.com),就算你看不懂英文麻煩點擊[Downloads for windows]基本上安裝也只要一直點擊[next]GIT是一個強大的專案助手想必您應該有修改後想反悔時去發現您已經無法回復當時的紀錄了,而GIT就是用來紀錄專案中各種變化建立變化節點,你隨時可以叫回任意節點,未來我們建立插件專案也會用到。



接下來第二步驟是下載BuildTools(www.spigotmc.org),目前這個解碼程式也是不斷更新,所以下載最新的版本就行了,不過在這我們是無法直接執行此檔來解開我們需要的核心檔,該檔案必須要在GIT環境下執行。



第三步驟,建立GIT環境,您一定會想安裝之後不是已經建立好了嗎?當然不是,每個GIT環境都是獨立的,我們先建立好資料夾接下來將下載的BuildTools.jar放進去,在程式集裡可以找到GIT GUI點擊執行,點擊連結文字[Create New Repository]選擇剛建立的資料夾開啟GIT專案介面,這個動作便完成將資料夾建立起GIT環境。



最後的步驟我們開啟文字模式,點擊[Git Bash]打開像是舊系統MS-DOS,好吧!有一部分的人可能只認識視窗介面不過這不是問題,我們只需要複製與貼上也可以輕鬆執行指令,不過在這裡記得打開網路,因為整個過程需要連線下載等,現在執行[java -jar BuildTools.jar]。




當整個程序跑出完成時間後你可以在資料夾發現核心craftbukkit以及spigot都出現在資料夾內,還包括NMSAPI也在裡面供我們查詢。