原生构建与系统进阶 - Junye-666/RideBattleLib_NeoForge_1.21.1 GitHub Wiki

除 Builder 外,也可以使用底层原生构建。

RiderConfig / FormConfig 原生构建

public static final RiderConfig CONFIG = new RiderConfig(RIDER_ID)
        .setMainDriverItem(Items.IRON_LEGGINGS, EquipmentSlot.LEGS)
        .setAuxDriverItem(Items.BRICK, EquipmentSlot.OFFHAND)
        .addMainDriverSlot(CORE_SLOT, List.of(Items.IRON_INGOT, Items.GOLD_INGOT), true, true)
        .addAuxDriverSlot(ENERGY_SLOT, List.of(Items.REDSTONE), true, false);

public static final FormConfig BASE_FORM = new FormConfig(BASE_FORM_ID)
        .setTriggerType(TriggerType.KEY)
        .setArmor(Items.IRON_HELMET, Items.IRON_CHESTPLATE, null, Items.IRON_BOOTS)
        .addAttribute(Attributes.MAX_HEALTH, 8.0, AttributeModifier.Operation.ADD_VALUE)
        .addEffect(MobEffects.NIGHT_VISION, 0)
        .addRequiredItem(CORE_SLOT, Items.IRON_INGOT)
        .setShouldPause(true)
        .addGrantedItem(Items.IRON_SWORD);

public static void init() {
    CONFIG.addForm(BASE_FORM);
    CONFIG.setBaseForm(BASE_FORM_ID);

    RiderRegistry.registerRider(CONFIG);
}

注册时机推荐在 commonSetup:

private void commonSetup(FMLCommonSetupEvent event) {
    event.enqueueWork(MyRiderClass::init);
}

FormConfig 复制

FormConfig.copy() 与 FormConfig.copyWithoutItemsAndSkills() 可用于创建趋同形态。

FormConfig FORM_A = FormBuilder.create(formIdA)
        .armor(Items.IRON_HELMET, Items.IRON_CHESTPLATE, null, Items.IRON_BOOTS)
        .addRequiredItem(slotA, itemA)
        .build();

FormConfig FORM_B = FORM_A.copy(formIdB)
        .addRequiredItem(slotB, itemB);

riderConfigA.addForm(FORM_A);
riderConfigB.addForm(FORM_B);