在我完成銀錠的製作後我好奇Minecraft中的事件偵測器是怎麼運行的,所以打算開心的專案研究一下
我們在註冊物品的時候我們有用到事件巴士Event Bus,我們可以在事件巴士中增加事件偵測器,透過偵測器我們可以在遊戲中出現特定的情況或玩家執行特定操作的時候觸發指定的程式碼。
我會開一個新的專案,把這部分的程式碼放在其他部分,與我的工業模組分開。
我們可以在程式中加入一個監視玩家右鍵活動的程式,我們的目標是在玩家手持控制桿點右鍵的時候射出九支成九宮格的箭矢。
我們先加入右鍵監視功能
public class RightClick {
@SubscribeEvent
public static void RightClick(PlayerInteractEvent.RightClickItem event) {
if (!event.getLevel().isClientSide) {
Player player = event.getEntity();
Component t = Component.literal("RightClick");
player.sendSystemMessage(t);}
}
}
public static void RightClick(PlayerInteractEvent.RightClickItem event)
首先我們要先了解右鍵監視是RightClickItem的功能,是PlayerInteractEvent的其中一個功能,處理玩家的動作偵測,RightClickItem在當玩家手持(主手)物品右鍵時會被觸發。
if (!event.getLevel().isClientSide)
接著我們要確定偵測啟動的事件是發生在伺服器端而不是客戶端,因為伺服器端相較客戶端更方便安全
Player player = event.getEntity();
我們還需獲取觸發事件的玩家實例,event.getEntity()可以取得觸發事件的玩家實體
剩下的明天講