Adaptive Trigger API
Resource packs should be used for adaptive trigger effects based on item identities, tags, or serialized data-component values. The Java API is available when an effect needs custom code or cannot be expressed with resource-pack matching.
Register effects during Controlify pre-initialization:
public final class MyControlifyEntrypoint implements ControlifyEntrypoint {
@Override
public void onControlifyPreInit(PreInitContext context) {
TriggerEffectApi.registerUseItemEffect(
DataComponents.CHARGED_PROJECTILES,
projectiles -> new DualsenseTriggerEffect.Feedback(
(byte) 3,
(byte) Math.min(8, projectiles.items().size() + 1)
)
);
}
}TriggerEffectApi has use-item and swing-item overloads for:
- A
DataComponentType<T>and aFunction<? super T, DualsenseTriggerEffect>, for effects computed from the component value. - A
DataComponentType<?>and a constantDualsenseTriggerEffect. - An
Itemand a constantDualsenseTriggerEffect.
Use registerUseItemEffect for the input bound to Use Item and registerSwingItemEffect for the input bound to Attack.
Priority
Resource-pack rules are always evaluated before Java registrations, allowing users and pack authors to override mod-provided effects. Among Java registrations, component functions are checked in registration order before the exact-item fallback. Registering the same component or item again replaces its previous effect.
Use a resource-pack off rule when an effect should be explicitly disabled. An off result returned from Java also disables the trigger, but is only reached when no resource rule matched.