我的世界Minecraft 1.19 Mod開發(fā)教程分享-13-自定義按鍵
創(chuàng)建文件夾和目錄
創(chuàng)建如下的目錄結構
tutorialmod\util\KeyBinding.java

在KeyBind加入如下的代碼:
KeyMapping是一個處理鍵盤和鼠標輸入的類,可以讓你綁定按鍵
第一參數(shù)是string類型的,對按鍵的描述
第二參數(shù)是KeyConflictContext,處理按鍵沖突,用于判斷按鍵是在某個位置,這里選擇的是游戲中

第三參數(shù)是InputConstants.Type是一個枚舉,表示輸入的設備,這里是鍵盤

第四個參數(shù)是綁定的按鍵,這里是字母o,

第五個參數(shù)是category

添加翻譯
這里的兩個名稱對應了我們之前的設置的名稱。


注冊自定義的按鍵
創(chuàng)建如下的目錄?
tutorialmod/event/ClientEvents

在該類中加入如下的代碼
Mod.EventBusSubscriber注解表示在總線上注冊事件的監(jiān)聽器,表示該類方法訂閱了總線的靜態(tài)方法。
其中 bus表示是那個條總線,mod或者是forge
modid 表示監(jiān)聽的那個mod
value 表示在那個服務器有效,例如Dist.Client表示客戶端。
SubscribeEvent注解標記事件處理的注解,表示訂閱了某個事件總線上的某個事件,在該事件發(fā)布時候,會被調用。
僅修飾靜態(tài)方法。
必須有一個事件參數(shù)
沒有返回值
KeyBinding.DRINKING_KEY.consumeClick() 是按鍵被按下。
InputEvent.Key 是鍵盤按鍵相關的事件,在鍵盤按下后會觸發(fā)。
RegisterKeyMappingsEvent是注冊鍵盤映射的事件,盡在客戶端,mod總線上觸發(fā)。
按住Ctrl點擊key

發(fā)現(xiàn)這個事件僅僅在客戶端執(zhí)行。注冊在forge總線

所以在這里通過Minecraft獲得player必定是當前的操作的玩家。

在RegisterKeyMappingsEvent類中,我們同樣可以看到,這個事件在Mod總線上,并且盡在客戶端執(zhí)行。


測試
可以看到注冊成功了

每按一次o就有一條消息
