我要写一个Minecraft 1.18.2的Fabric模组,监听实体落地的事件,如果其落在耕地上,判断其是否穿戴有“摔落保护”附魔的靴子,是则阻止将耕地变为泥土,你有思路吗?
时间: 2023-04-12 18:01:21 浏览: 223
可以使用 Fabric API 提供的 EntityLandingCallback 接口来监听实体落地事件,然后通过判断实体所在的方块是否为耕地以及实体穿戴的靴子是否有“摔落保护”附魔来实现阻止耕地变为泥土的功能。具体实现可以参考以下代码:
```java
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.event.entity.EntityLandingCallback;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.util.ActionResult;
public class MyMod implements ModInitializer {
@Override
public void onInitialize() {
EntityLandingCallback.EVENT.register((entity, blockState) -> {
if (blockState.getBlock() instanceof FarmlandBlock) {
if (entity instanceof LivingEntity) {
ItemStack boots = ((LivingEntity) entity).getEquippedStack(EquipmentSlot.FEET);
if (EnchantmentHelper.getLevel(Enchantments.FEATHER_FALLING, boots) > 0) {
return ActionResult.FAIL; // 阻止耕地变为泥土
}
}
}
return ActionResult.PASS;
});
}
}
```
注意,以上代码仅为示例,需要根据具体需求进行修改和完善。
阅读全文