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 {@Overridepublic 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.