diff --git a/src/main/java/com/tiedup/remake/v2/bondage/TyingInteractionHelper.java b/src/main/java/com/tiedup/remake/v2/bondage/TyingInteractionHelper.java index 02e9939..99350de 100644 --- a/src/main/java/com/tiedup/remake/v2/bondage/TyingInteractionHelper.java +++ b/src/main/java/com/tiedup/remake/v2/bondage/TyingInteractionHelper.java @@ -85,9 +85,11 @@ public final class TyingInteractionHelper { TyingTask currentTask = playerState.getCurrentTyingTask(); if (currentTask == null + || !(currentTask instanceof V2TyingPlayerTask) || !currentTask.isSameTarget(target) || currentTask.isOutdated() || !ItemStack.matches(currentTask.getBind(), stack)) { + // Start new task (also handles case where existing task is V1 TyingPlayerTask) playerState.setCurrentTyingTask(newTask); newTask.start(); } else { @@ -97,7 +99,7 @@ public final class TyingInteractionHelper { newTask.update(); if (newTask.isStopped()) { - stack.shrink(1); + // Item already consumed by V2TyingPlayerTask.onComplete() — don't shrink again playerState.setCurrentTyingTask(null); TiedUpMod.LOGGER.info("[TyingInteraction] {} tied {}", player.getName().getString(), target.getName().getString()); }