iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
Software Development

成為童年的英雄,Minecraft Java 模組製作系列 第 18

Minecraft Mod 模組製作 [DAY18] 右鍵偵測 神奇桿桿(二)

  • 分享至 

  • xImage
  •  

程式碼

public class RightClick {
    @SubscribeEvent
    public static void RightClick(PlayerInteractEvent.RightClickItem event) {
        if (!event.getLevel().isClientSide) {
            Player player = event.getEntity();
            Component rightClickMessage = Component.literal("RightClick");
            player.sendSystemMessage(rightClickMessage);
            Component leverMessage = Component.literal("This is a Lever");
            ItemStack HeldItem = player.getItemInHand(InteractionHand.MAIN_HAND);
            if (!HeldItem.isEmpty() && HeldItem.getItem() == Items.LEVER) {
                    player.sendSystemMessage(leverMessage);
                double x = player.getX();
                double y = player.getY()+player.getEyeHeight();
                double z = player.getZ();
                float speed = 3.0F;

                for (int i = -1; i <= 1; i++) {
                    for (int j = -1; j <= 1; j++) {
                        Arrow arrow = new Arrow(player.level, x, y, z);
                        arrow.shootFromRotation(player, player.getXRot()+i*5,player.getYRot()+j*5, 1F,5F, 1F);
                        player.level.addFreshEntity(arrow);
                    }
                }
            }
        }
     }
}

解說

Component rightClickMessage = Component.literal("RightClick");

我希望在玩家點及右鍵的時候向玩家傳遞一個訊息,這樣我才知道右鍵偵測有發揮效果。
這段程式碼執行了以下操作:
創建一個名稱為 rightClickMessage 的新變數,用於儲存文字訊息。
使用 Component.literal("RightClick") 創建了一個 Component 物件,其中包含文字訊息 "RightClick"。

player.sendSystemMessage(rightClickMessage);

這段程式碼可以向觸發事件的玩家傳遞系統訊息,內容是"RightClick"。

Component leverMessage = Component.literal("This is a Lever");

我在玩家持有控制桿且點及右鍵的時候,傳一個系統訊息給玩家,內容是"This is a Lever"。

ItemStack HeldItem = player.getItemInHand(InteractionHand.MAIN_HAND);

ItemStack HeldItem: 這行程式碼宣告了一個名稱為 HeldItem 的變數,其型別是 ItemStack。在 Minecraft Forge 中,ItemStack 是一個用於表示物品堆疊的類別,包含有關物品的各種信息,如物品的類型、數量、耐久度等。

player.getItemInHand(InteractionHand.MAIN_HAND): 這部分程式碼是實際取得玩家手上所持物品的部分。它使用了 player 變數,這個變數應該是代表遊戲中的玩家實例。getItemInHand 方法用於獲取玩家手中的物品,並且通過 InteractionHand.MAIN_HAND 指定是主手持有的物品。在 Minecraft 中,玩家有兩只手,主手和副手,這裡使用主手。

剩下的明天說


上一篇
Minecraft Mod 模組製作 [DAY17] 右鍵偵測 神奇桿桿(一)
下一篇
Minecraft Mod 模組製作 [DAY19] 右鍵偵測 神奇桿桿(三)
系列文
成為童年的英雄,Minecraft Java 模組製作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言