NeoForge-1.20.4Mod开发教程之工具

本篇教程参考为Flandre芙兰NeoForge1.20.4Mod开发的视频,这篇教程是我边学边总结的,与其说是教程更像我的学习笔记,如有不清楚的地方,大家可以在评论区提问。在我力所能及的范围内,我都会解答的。

创建RubyPickaxe类

public class RubyPickaxe extends PickaxeItem {
    public RubyPickaxe() {
        super(ModItemTiers.RUBY,2,-2,new Properties());
    }
}

这个类与上个教程的RubySword差不多,其余的工具如斧子,锄头和铲子只有继承的类是不同的

public PickaxeItem(Tier tier, int attackDamageModifier, float attackSpeedModifier, Item.Properties properties) {
         super((float)attackDamageModifier, attackSpeedModifier, tier, BlockTags.MINEABLE_WITH_PICKAXE, properties);
    }

继承的PickaxeItem类中的BlockTags.MINEABLE_WITH_PICKAXE规定了哪些方块可以用镐子挖掘。这是通过标签来实现的,之后的教程会介绍

类介绍

DiggerItem

这个类实现了 Minecraft 中用于表示具有可挖掘功能的工具。其主要功能是根据工具的材质、速度、攻击力以及可挖掘的方块类型来定义一个可以用于挖掘的工具。通过该类,你可以创建自定义的工具,如镐子、铲子、斧子等,并为它们定义自定义的行为和属性。

构造方法接收以下参数:

  • attackDamageModifier:攻击伤害的增益值。

  • attackSpeedModifier:攻击速度的增益值。

  • tier:工具材质(继承自 Tier)。

  • blocks:工具可以挖掘的方块标签(TagKey<Block>)。

  • properties:工具的额外属性(Item.Properties)。

在构造方法中:

  • this.blocks 存储了工具能够挖掘的方块类型。

  • this.speed 使用材质提供的挖掘速度(通过 tier.getSpeed())。

  • this.attackDamageBaseline 计算攻击伤害的基础值。

  • 构建了一个 defaultModifiers,用于存储该工具的默认属性修改器,包含攻击力和攻击速度的修改。

public float getDestroySpeed(ItemStack stack, BlockState state):返回工具挖掘某个方块时的速度,基于该方块是否在工具的可挖掘范围内

public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker):工具攻击敌人时,造成伤害并减少耐久

public boolean mineBlock(ItemStack stack, Level level, BlockState state, BlockPos pos, LivingEntity entityLiving):工具破坏方块时,减少耐久

public Multimap<Attribute, AttributeModifier> getDefaultAttributeModifiers(EquipmentSlot equipmentSlot):返回工具的默认属性修改器(如攻击伤害、攻击速度)以便在装备槽中应用

public float getAttackDamage():返回工具的基础攻击伤害

@Deprecated public boolean isCorrectToolForDrops(BlockState block):检查该工具是否能正确挖掘某个方块(已弃用)

public boolean isCorrectToolForDrops(ItemStack stack, BlockState state):检查工具是否能正确挖掘某个方块,且工具的材质等级符合挖掘需求

© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容