[Cobblemon] 训练师属性库

[Cobblemon] 训练师属性库

将Minecraft的属性与Cobblemon集成。

基础库

将 Minecraft 的属性系统与 Cobblemon 集成。

诸如捕捉几率、闪光几率和每次战斗获得的经验等都可以修改。

主要设计用于搭配 Accessories 或 Curios 使用,不过这些属性在装备到盔甲上时也会生效。(但工具除外)

如果我真有一天决定不再偷懒,我也会把它移植到 Forge 上。

随便用,随便在哪用。

特性

当前支持的属性:

  • 宝可梦经验加成(+ 各种类型)
  • 捕捉几率加成(+ 各种类型)
  • 闪光几率加成(+ 各种类型)
  • 隐藏特性几率加成(+ 各种类型)
  • 会心捕捉几率加成(+ 各种类型)
  • 生成几率加成(+ 各种类型)
  • 额外个体值(+ 各种类型 / 针对特定属性)

示例

class MudkipCharm() : AccessoryItem(
    Item.Settings().component(
        DataComponentTypes.ATTRIBUTE_MODIFIERS as ComponentType<AttributeModifiersComponent>,
        AttributeModifiersComponent.builder()
            .add(
                Registries.ATTRIBUTE.getEntry(TrainerAttributes.TYPED_SPAWN_CHANCE_ATTRIBUTE.getAttributeOfType(
                    ElementalTypes.FIRE
                )),
                EntityAttributeModifier(
                    TrainerAttributes.TYPED_SPAWN_CHANCE_ATTRIBUTE.getIdentifierOfTypedAttribute(ElementalTypes.FIRE),
                    5.50,
                    EntityAttributeModifier.Operation.ADD_MULTIPLIED_BASE
                ),
                AttributeModifierSlot.ANY
            )
            .add(
                Registries.ATTRIBUTE.getEntry(TrainerAttributes.TYPED_BONUS_IVS_ATTRIBUTE.getAttributeOfType(
                    ElementalTypes.WATER
                )),
                EntityAttributeModifier(
                    TrainerAttributes.TYPED_BONUS_IVS_ATTRIBUTE.getIdentifierOfTypedAttribute(ElementalTypes.WATER),
                    5.0,
                    EntityAttributeModifier.Operation.ADD_VALUE
                ),
                AttributeModifierSlot.ANY
            )
            .add(
                Registries.ATTRIBUTE.getEntry(TrainerAttributes.STAT_BONUS_IVS_ATTRIBUTE.getAttributeOfStat(Stats.HP)),
                EntityAttributeModifier(
                    TrainerAttributes.STAT_BONUS_IVS_ATTRIBUTE.getIdentifierOfStatAttribute(Stats.HP),
                    5.0,
                    EntityAttributeModifier.Operation.ADD_VALUE
                ),
                AttributeModifierSlot.ANY
            )
            .add(
                Registries.ATTRIBUTE.getEntry(TrainerAttributes.BONUS_IVS_ATTRIBUTE),
                EntityAttributeModifier(
                    TrainerAttributesLib.getIdentifier("bonus_ivs"),
                    5.0,
                    EntityAttributeModifier.Operation.ADD_VALUE
                ),
                AttributeModifierSlot.ANY
            )
            .add(
                Registries.ATTRIBUTE.getEntry(TrainerAttributes.CATCH_CHANCE_BOOST_ATTRIBUTE),
                EntityAttributeModifier(
                    TrainerAttributesLib.getIdentifier("catch_chance_boost"),
                    0.05,
                    EntityAttributeModifier.Operation.ADD_MULTIPLIED_BASE
                ),
                AttributeModifierSlot.ANY
            )
            .add(
                Registries.ATTRIBUTE.getEntry(
                    TrainerAttributes.TYPED_CATCH_CHANCE_BOOST_ATTRIBUTE.getAttributeOfType(ElementalTypes.WATER)
                ),
                EntityAttributeModifier(
                    TrainerAttributes.TYPED_CATCH_CHANCE_BOOST_ATTRIBUTE.getIdentifierOfTypedAttribute(ElementalTypes.WATER),
                    0.10,
                    EntityAttributeModifier.Operation.ADD_MULTIPLIED_BASE
                ),
                AttributeModifierSlot.ANY
            )
            .build()
    )
) {
}