原生构建与系统进阶 - 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);