gpt4 book ai didi

java - 尝试检测玩家在我的 Minecraft mod 的库存中是否有特定元素

转载 作者:行者123 更新时间:2023-12-01 16:20:50 28 4
gpt4 key购买 nike

我正在制作我的《我的世界》模组,并尝试检测玩家是否拥有特定元素,如果拥有该元素就会给你带来效果。我试图通过使用 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 包中的类中创建此方法,这样我就可以随时调用它,而不是复制粘贴该方法

最佳答案

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

@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
}

简单来说,它不会检测玩家是否拥有该元素,而是仅在玩家拥有该元素时才运行代码。我所说的“我做错了”的意思是,这段代码应该放在元素的类中,这样它只有在元素位于你的库存中时才会触发。我不确定,但我认为如果将该元素交给僵尸等人,这不会起作用。

关于java - 尝试检测玩家在我的 Minecraft mod 的库存中是否有特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62287335/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com