原代碼
從這章開始將不會把代碼打在文內
會直接引用Github上面放的原代碼。
1.這章大概要做的事
創建玩家各自的設置檔
使用/sethome 參數 ,保存多個座標到設置檔
使用/home 參數 ,讀取設置檔的座標,並發送過去。
創建玩家各自的對象(類似身分證,紀錄一些個人的東西)
並在玩家死亡時保存座標至對象裡面。
使用/back指令發送到該死亡座標。
2.創建事件監聽
首先到Spigot的說明書網站,找到需要的監聽。(說明書鏈接)
目前需要用到三種監聽事件。
玩家登錄。(在登錄時創建設置檔,還有玩家對象)
玩家註銷。(刪除玩家對象,可以節省內存)
玩家死亡。(紀錄死亡座標到玩家對象)
有關事件可以查找有evetn的地方。
第一個要找玩家登錄的事件,因為這事件只有玩家有。
可以到event.player裡面找,事件名稱的英文意思都蠻明顯的
,如果不確定可以點下去,看裡面的說明。
註銷也是在event.player裡面找。
第三個玩家死亡事件,因為不只有玩家會死。
所以要到event.entity實體有關的事件去找。
找完就創建一個文件夾listener,來存放有關事件監聽的對象。
還有創建PlayerListener對象。
在把剛剛查到的事件方法,加到PlayerListener裡面去。
代碼
在主類註冊此監聽對象(代碼)
3.創建個人對象和設置檔
個人對象類似身分證,但可以保存更多的東西。
創建一個playerdata文件夾來存放有關個人的東西。
在裡面創建PlayerData對象。
在PlayerData裡面加入一些設置。
首先加入設置檔的創建、讀取、還有保存功能。
在加入sethome、home、死亡存位置和/back回到死亡位置的方法。
代碼
4.把創建的個人對象存放至Map
當一個對象要在各種地方使用,通常都會存放到Map裡面,以方便獲取。
Map類似Excel只是他只有兩行。
我們可以利用第一行的值,來獲取第2行相對應的東西。
因為玩家UUID是唯一的(名子可以改),通常會用UUID來當關鍵字。
玩家1UUID | PlayerData |
玩家2UUID | PlayerData |
玩家3UUID | PlayerData |
先創建一個文件夾manager來存放Map相關的東西。
在裡面創建PlayerManger對象。
在PlayerManger加入一行靜態的Map,這樣Map就完成了。
5.把玩家對象和Map放置監聽使用
玩家登錄時創建PlayerData(代碼)
玩家註銷時移除PlayerData。
玩家死亡時保存死亡位置
6.創建指令
在指令對象裡面加入代碼,因為剛剛方法都寫在PlayerData對象裡面了
所以只要使用就好,順便發個消息讓用戶知道,有使用指令。
指令提示就不多說了。
代碼
7.測試是否有錯誤
登錄確實生成設置檔
因為圖片不好表示結果,就放個影片代替。