试图在我的Minecraft mod中检测玩家的库存中是否有特定物品

问题描述 投票:0回答:1

我正在制作我的Minecraft模组,并试图检测玩家是否有特定物品,如果有,这会给你带来效果。我正在尝试通过使用PlayerTickEvent来执行此操作,但是我不知道如何使用它,因为我以前从未使用过它。我之前使用过一个检查附魔插槽已更改的函数,所以我尝试了一下,但是没有用。有任何想法吗?这是我最初尝试的代码:

@SubscribeEvent
    public void testItemFunction(LivingEquipmentChangeEvent event)
    {
        boolean itemIsInInventory;
        Object player = event.getEntityLiving();
        if (event.getEntityLiving() instanceof EntityLivingBase)
        {
            EntityEquipmentSlot slotChanged = event.getSlot();
            if (slotChanged.getSlotIndex() > -1 && slotChanged.getSlotIndex() < 36)
            {
                if(slotChanged != null && slotChanged.() == ModItems.TEST_ITEM)
                {
                    itemIsInInventory = true;
                }
            }
        else
        {
             itemIsInInventory = false;
        }
    }

而不是设置和删除效果,而是更改变量itemIsInInventory,因为我在util包中的类中创建了此方法,因此我可以在需要时调用它,而无需复制粘贴该方法

java eclipse minecraft minecraft-forge
1个回答
0
投票

我找到了一个简单得多的答案,但可能不适用于某些事情。我前一阵子发现了它,但是它似乎没有用,所以我寻找了另一种解决方案,但是现在我回到了它,我意识到我做错了。这是代码:

@Override
    public void onUpdate(ItemStack itemstack, World world, Entity entity, int i, boolean flag)
    {
        //Runs the method every tick the item is in the player's inventory
        ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(MobEffects.INVISIBILITY, 10, 0, false, false));
        //Gives the entity with the item the invisibility effect for half a second every tick
    }

简单地说,不是检测玩家是否拥有该物品,而是仅在玩家拥有该物品时运行代码。

© www.soinside.com 2019 - 2024. All rights reserved.