package com.tiedup.remake.state; import net.minecraft.world.entity.player.Player; /** * Active coercion interface for kidnapped entities. * *

Covers tightening binds, chloroform, electric shocks, * and forceful item removal by another entity.

* * @see IRestrainableEntity * @see IRestrainable */ // C6-V2: takeBondageItemBy narrowed from IRestrainable to IRestrainableEntity public interface ICoercible extends IRestrainableEntity { // SPECIAL INTERACTIONS /** * Tighten binds on this entity (increase resistance). * Called when master uses paddle/whip on slave. * *

Effects:

* * * @param tightener The player tightening the binds */ void tighten(Player tightener); /** * Apply chloroform effect to this entity. * *

Effects (from original):

* * * @param duration Effect duration in ticks */ void applyChloroform(int duration); /** * Shock this kidnapped entity. * Uses default damage and no message. * *

Effects:

* */ void shockKidnapped(); /** * Shock this kidnapped entity with custom message and damage. * * @param messageAddon Additional message to send to the entity * @param damage Damage amount to apply */ void shockKidnapped(String messageAddon, float damage); /** * Another entity takes a bondage item from this entity. * Used when master removes items from slave. * * C6-V2: Narrowed from IRestrainable to IRestrainableEntity (only uses identity methods) * This allows NPCs to take items from Players or other NPCs * * @param taker The IRestrainableEntity taking the item * @param slotIndex The slot index (0-5: bind, gag, blindfold, earplugs, collar, clothes) */ void takeBondageItemBy(IRestrainableEntity taker, int slotIndex); // COLLAR TIMERS /** * Force-stops and clears any active auto-shock collar timer. * *

Called when:

* */ default void resetAutoShockTimer() { // Default no-op (NPCs don't have timers by default) // PlayerBindState overrides this to clear timer } }