diff --git a/src/main/java/com/tiedup/remake/client/animation/tick/AnimationTickHandler.java b/src/main/java/com/tiedup/remake/client/animation/tick/AnimationTickHandler.java index 13d84b4..4e3dd17 100644 --- a/src/main/java/com/tiedup/remake/client/animation/tick/AnimationTickHandler.java +++ b/src/main/java/com/tiedup/remake/client/animation/tick/AnimationTickHandler.java @@ -201,11 +201,11 @@ public class AnimationTickHandler { context, allOwnedParts ); - // Clear V1 tracking so transition back works + // Clear legacy tracking so transition back works AnimationStateRegistry.getLastAnimId().remove(uuid); } // No V2 items with GLB models — nothing to animate. - // V1 items without data-driven definitions are not animated. + // Items without data-driven GLB definitions are not animated. } else if (wasTied) { // Was tied, now free - stop all animations if (GltfAnimationApplier.hasActiveState(player)) { diff --git a/src/main/java/com/tiedup/remake/client/animation/tick/NpcAnimationTickHandler.java b/src/main/java/com/tiedup/remake/client/animation/tick/NpcAnimationTickHandler.java index 828c994..da664d6 100644 --- a/src/main/java/com/tiedup/remake/client/animation/tick/NpcAnimationTickHandler.java +++ b/src/main/java/com/tiedup/remake/client/animation/tick/NpcAnimationTickHandler.java @@ -82,7 +82,7 @@ public class NpcAnimationTickHandler { * (base posture) and an item layer (GLB-driven bones). Sitting and kneeling are * handled by the context resolver, so the V2 path now covers all postures. * - *

V1 fallback: if no V2 GLB model is found, falls back to JSON-based + *

Legacy fallback: if no GLB model is found, falls back to JSON-based * PlayerAnimator animations via {@link BondageAnimationManager}. */ private static void updateNpcAnimation(AbstractTiedUpNpc entity) { @@ -120,7 +120,7 @@ public class NpcAnimationTickHandler { ); lastNpcAnimId.remove(uuid); } else { - // V1 fallback: JSON-based PlayerAnimator animations + // Legacy fallback: JSON-based PlayerAnimator animations if (GltfAnimationApplier.hasActiveState(entity)) { GltfAnimationApplier.clearV2Animation(entity); } @@ -148,7 +148,7 @@ public class NpcAnimationTickHandler { } /** - * Build animation ID for an NPC from its current state (V1 path). + * Build animation ID for an NPC from its current state (legacy JSON path). */ private static String buildNpcAnimationId(AbstractTiedUpNpc entity) { // Determine position prefix for SIT/KNEEL poses @@ -175,7 +175,7 @@ public class NpcAnimationTickHandler { BodyRegionV2.LEGS ); - // V1 fallback: if no V2 regions set but NPC has a bind, derive from bind mode NBT + // Legacy fallback: if no V2 regions set but NPC has a bind, derive from bind mode NBT if (!armsBound && !legsBound && BindModeHelper.isBindItem(bind)) { armsBound = BindModeHelper.hasArmsBound(bind); legsBound = BindModeHelper.hasLegsBound(bind); diff --git a/src/main/java/com/tiedup/remake/compat/mca/event/MCACompatEvents.java b/src/main/java/com/tiedup/remake/compat/mca/event/MCACompatEvents.java index 3de34fb..a2d9a11 100644 --- a/src/main/java/com/tiedup/remake/compat/mca/event/MCACompatEvents.java +++ b/src/main/java/com/tiedup/remake/compat/mca/event/MCACompatEvents.java @@ -215,7 +215,7 @@ public class MCACompatEvents { IBondageState state = MCACompat.getKidnappedState(livingTarget); if (state != null) { // Priority: Untie > Ungag > Unblindfold > etc. - // This mimics EntityDamsel logic or ItemBind.interactLivingEntity logic for untying + // This mimics EntityDamsel logic or TyingInteractionHelper logic for untying // No collar ownership check — any player can untie MCA villagers by design // (MCA villagers use a separate relationship system, not TiedUp collars) diff --git a/src/main/java/com/tiedup/remake/core/SettingsAccessor.java b/src/main/java/com/tiedup/remake/core/SettingsAccessor.java index aa377c3..089c14d 100644 --- a/src/main/java/com/tiedup/remake/core/SettingsAccessor.java +++ b/src/main/java/com/tiedup/remake/core/SettingsAccessor.java @@ -160,7 +160,7 @@ public class SettingsAccessor { *

BUG-003 fix: Previously, {@code IHasResistance.getBaseResistance()} * called {@code ModGameRules.getResistance()} which only knew 4 types (rope, gag, * blindfold, collar) and returned hardcoded 100 for the other 10 types. Meanwhile - * the old BindVariant.getResistance() read from ModConfig which had all 14 types. + * the old {@code BindVariant.getResistance()} (now removed) read from ModConfig which had all 14 types. * This caused a display-vs-struggle desync (display: 250, struggle: 100). * Now both paths use this method. * diff --git a/src/main/java/com/tiedup/remake/events/camp/CampChestHandler.java b/src/main/java/com/tiedup/remake/events/camp/CampChestHandler.java index fd57829..0eb6082 100644 --- a/src/main/java/com/tiedup/remake/events/camp/CampChestHandler.java +++ b/src/main/java/com/tiedup/remake/events/camp/CampChestHandler.java @@ -89,8 +89,8 @@ public class CampChestHandler { if (entity instanceof Player player) { player.displayClientMessage( - Component.literal( - "This chest is locked by the camp!" + Component.translatable( + "msg.tiedup.event.chest_locked_by_camp" ).withStyle(ChatFormatting.RED), true ); diff --git a/src/main/java/com/tiedup/remake/events/camp/CampManagementHandler.java b/src/main/java/com/tiedup/remake/events/camp/CampManagementHandler.java index b6f550b..b2560b2 100644 --- a/src/main/java/com/tiedup/remake/events/camp/CampManagementHandler.java +++ b/src/main/java/com/tiedup/remake/events/camp/CampManagementHandler.java @@ -286,10 +286,9 @@ public class CampManagementHandler { .getPlayer(prisonerId); if (player != null) { player.sendSystemMessage( - Component.literal( - "A new maid, " + - maidName + - ", has arrived. Work resumes." + Component.translatable( + "msg.tiedup.event.new_maid_arrived", + maidName ).withStyle(ChatFormatting.GOLD) ); } diff --git a/src/main/java/com/tiedup/remake/events/camp/CampNpcProtectionHandler.java b/src/main/java/com/tiedup/remake/events/camp/CampNpcProtectionHandler.java index 9162606..b498f87 100644 --- a/src/main/java/com/tiedup/remake/events/camp/CampNpcProtectionHandler.java +++ b/src/main/java/com/tiedup/remake/events/camp/CampNpcProtectionHandler.java @@ -75,10 +75,10 @@ public class CampNpcProtectionHandler { // Send warning message to player player.sendSystemMessage( - Component.literal( + Component.translatable( isTrader - ? "The camp defends their leader! You are now under attack!" - : "The camp defends their servant! You are now under attack!" + ? "msg.tiedup.event.camp_defends_trader" + : "msg.tiedup.event.camp_defends_maid" ).withStyle(ChatFormatting.RED, ChatFormatting.BOLD) ); } diff --git a/src/main/java/com/tiedup/remake/events/combat/GraceEventHandler.java b/src/main/java/com/tiedup/remake/events/combat/GraceEventHandler.java index 4a9879f..09021e9 100644 --- a/src/main/java/com/tiedup/remake/events/combat/GraceEventHandler.java +++ b/src/main/java/com/tiedup/remake/events/combat/GraceEventHandler.java @@ -48,8 +48,8 @@ public class GraceEventHandler { record.setProtectionExpiry(0); player.displayClientMessage( - Component.literal( - "You attacked a kidnapper - protection lost!" + Component.translatable( + "msg.tiedup.event.grace_lost" ).withStyle(ChatFormatting.RED), true ); diff --git a/src/main/java/com/tiedup/remake/events/combat/LaborAttackPunishmentHandler.java b/src/main/java/com/tiedup/remake/events/combat/LaborAttackPunishmentHandler.java index 9363db1..468932c 100644 --- a/src/main/java/com/tiedup/remake/events/combat/LaborAttackPunishmentHandler.java +++ b/src/main/java/com/tiedup/remake/events/combat/LaborAttackPunishmentHandler.java @@ -209,12 +209,10 @@ public class LaborAttackPunishmentHandler { manager.increaseDebt(prisoner.getUUID(), DEBT_INCREASE_PER_ATTACK); prisoner.sendSystemMessage( - Component.literal( - String.format( - "Your debt has increased by %d emeralds for attacking %s!", - DEBT_INCREASE_PER_ATTACK, - targetName - ) + Component.translatable( + "msg.tiedup.event.debt_increased", + DEBT_INCREASE_PER_ATTACK, + targetName ).withStyle(ChatFormatting.RED, ChatFormatting.BOLD) ); } @@ -282,8 +280,8 @@ public class LaborAttackPunishmentHandler { // 4. Warning message prisoner.sendSystemMessage( - Component.literal( - "Your task has been marked as failed. You will not be paid for your work." + Component.translatable( + "msg.tiedup.event.task_failed" ).withStyle(ChatFormatting.DARK_RED) ); @@ -315,8 +313,8 @@ public class LaborAttackPunishmentHandler { laborRecord.setEscortMaidId(null); prisoner.sendSystemMessage( - Component.literal( - "You have been returned to your cell for your insolence!" + Component.translatable( + "msg.tiedup.event.returned_to_cell" ).withStyle(ChatFormatting.RED, ChatFormatting.BOLD) ); diff --git a/src/main/java/com/tiedup/remake/events/lifecycle/PlayerStateEventHandler.java b/src/main/java/com/tiedup/remake/events/lifecycle/PlayerStateEventHandler.java index 8117699..66451ca 100644 --- a/src/main/java/com/tiedup/remake/events/lifecycle/PlayerStateEventHandler.java +++ b/src/main/java/com/tiedup/remake/events/lifecycle/PlayerStateEventHandler.java @@ -363,8 +363,8 @@ public class PlayerStateEventHandler { // Send death escape message if applicable if (pendingDeathEscapeMessage.remove(player.getUUID())) { player.sendSystemMessage( - net.minecraft.network.chat.Component.literal( - "You died and escaped captivity. Your items remain in the camp chest." + net.minecraft.network.chat.Component.translatable( + "msg.tiedup.event.death_escape" ).withStyle(net.minecraft.ChatFormatting.YELLOW) ); } diff --git a/src/main/java/com/tiedup/remake/events/restriction/BondageItemRestrictionHandler.java b/src/main/java/com/tiedup/remake/events/restriction/BondageItemRestrictionHandler.java index a4b404b..7e28925 100644 --- a/src/main/java/com/tiedup/remake/events/restriction/BondageItemRestrictionHandler.java +++ b/src/main/java/com/tiedup/remake/events/restriction/BondageItemRestrictionHandler.java @@ -473,7 +473,7 @@ public class BondageItemRestrictionHandler { if (state != null && state.isGagged()) { event.setCanceled(true); player.displayClientMessage( - Component.literal("You can't eat with a gag on.").withStyle( + Component.translatable("msg.tiedup.event.cant_eat_gagged").withStyle( ChatFormatting.RED ), true diff --git a/src/main/java/com/tiedup/remake/events/restriction/LaborToolProtectionHandler.java b/src/main/java/com/tiedup/remake/events/restriction/LaborToolProtectionHandler.java index baffc57..048d001 100644 --- a/src/main/java/com/tiedup/remake/events/restriction/LaborToolProtectionHandler.java +++ b/src/main/java/com/tiedup/remake/events/restriction/LaborToolProtectionHandler.java @@ -79,7 +79,7 @@ public class LaborToolProtectionHandler { ); } else { player.displayClientMessage( - Component.literal("You cannot drop labor tools!"), + Component.translatable("msg.tiedup.event.cant_drop_labor_tools"), true ); } @@ -124,7 +124,7 @@ public class LaborToolProtectionHandler { ); } else { player.displayClientMessage( - Component.literal("You cannot store labor tools!"), + Component.translatable("msg.tiedup.event.cant_store_labor_tools"), true ); } diff --git a/src/main/java/com/tiedup/remake/events/system/ChatEventHandler.java b/src/main/java/com/tiedup/remake/events/system/ChatEventHandler.java index 411e808..b6c066d 100644 --- a/src/main/java/com/tiedup/remake/events/system/ChatEventHandler.java +++ b/src/main/java/com/tiedup/remake/events/system/ChatEventHandler.java @@ -63,7 +63,7 @@ public class ChatEventHandler { if (!gagStack.isEmpty() && isGagItem) { String originalMessage = event.getRawText(); - // V2: get material from component, V1 fallback: from ItemGag + // V2: get material from GaggingComponent GagMaterial material = null; if (gaggingComp != null) { material = gaggingComp.getMaterial(); diff --git a/src/main/java/com/tiedup/remake/items/base/ItemOwnerTarget.java b/src/main/java/com/tiedup/remake/items/base/ItemOwnerTarget.java index b368982..7f4b508 100644 --- a/src/main/java/com/tiedup/remake/items/base/ItemOwnerTarget.java +++ b/src/main/java/com/tiedup/remake/items/base/ItemOwnerTarget.java @@ -157,7 +157,7 @@ public abstract class ItemOwnerTarget extends Item { ) { if (hasOwner(stack)) { tooltip.add( - Component.literal("Owner: ") + Component.translatable("item.tiedup.owner_target.owner") .withStyle(ChatFormatting.GOLD) .append( Component.literal(getOwnerName(stack)).withStyle( @@ -167,8 +167,8 @@ public abstract class ItemOwnerTarget extends Item { ); } else { tooltip.add( - Component.literal( - "Unclaimed (" + unclaimedHint + ")" + Component.translatable( + "item.tiedup.owner_target.unclaimed", unclaimedHint ).withStyle(ChatFormatting.GRAY) ); } diff --git a/src/main/java/com/tiedup/remake/minigame/StruggleSessionManager.java b/src/main/java/com/tiedup/remake/minigame/StruggleSessionManager.java index 654ed9a..8cdb6ed 100644 --- a/src/main/java/com/tiedup/remake/minigame/StruggleSessionManager.java +++ b/src/main/java/com/tiedup/remake/minigame/StruggleSessionManager.java @@ -46,8 +46,8 @@ public class StruggleSessionManager { > continuousSessions = new ConcurrentHashMap<>(); /** - * Mapping from legacy V1 slot indices to V2 BodyRegionV2. - * Used to convert V1 session targetSlot ordinals to V2 regions. + * Mapping from legacy slot indices to V2 BodyRegionV2. + * Used to convert legacy session targetSlot ordinals to V2 regions. * Index: 0=ARMS, 1=MOUTH, 2=EYES, 3=EARS, 4=NECK, 5=TORSO, 6=HANDS. */ private static final BodyRegionV2[] SLOT_TO_REGION = { @@ -611,7 +611,7 @@ public class StruggleSessionManager { } if (session.isAccessoryStruggle()) { - // Handle accessory resistance update (V1 path -- slot index is legacy ordinal) + // Handle accessory resistance update (legacy slot-index path) Integer slotIndex = session.getTargetSlot(); if ( slotIndex == null || @@ -680,7 +680,7 @@ public class StruggleSessionManager { if (session.isV2Struggle()) { com.tiedup.remake.v2.BodyRegionV2 region = session.getTargetRegion(); - // BUG-001 fix: break lock before unequip (consistent with V1 accessory escape) + // BUG-001 fix: break lock before unequip (consistent with legacy accessory escape) ItemStack stackInRegion = com.tiedup.remake.v2.bondage.capability.V2EquipmentHelper.getInRegion( player, @@ -718,7 +718,7 @@ public class StruggleSessionManager { } } } else { - // Handle accessory escape (V1 path -- slot index is legacy ordinal) + // Handle accessory escape (legacy slot-index path) Integer slotIndex = session.getTargetSlot(); if ( slotIndex != null && diff --git a/src/main/java/com/tiedup/remake/network/minigame/PacketLockpickAttempt.java b/src/main/java/com/tiedup/remake/network/minigame/PacketLockpickAttempt.java index 6cf0b64..482c6c2 100644 --- a/src/main/java/com/tiedup/remake/network/minigame/PacketLockpickAttempt.java +++ b/src/main/java/com/tiedup/remake/network/minigame/PacketLockpickAttempt.java @@ -345,8 +345,8 @@ public class PacketLockpickAttempt { jammed = true; player.sendSystemMessage( - Component.literal( - "The lock jammed! Only struggle can open it now." + Component.translatable( + "msg.tiedup.network.lock_jammed" ).withStyle(ChatFormatting.RED) ); diff --git a/src/main/java/com/tiedup/remake/network/personality/PacketSlaveBeingFreed.java b/src/main/java/com/tiedup/remake/network/personality/PacketSlaveBeingFreed.java index 301a96b..6681858 100644 --- a/src/main/java/com/tiedup/remake/network/personality/PacketSlaveBeingFreed.java +++ b/src/main/java/com/tiedup/remake/network/personality/PacketSlaveBeingFreed.java @@ -85,7 +85,7 @@ public class PacketSlaveBeingFreed { // Build alert message Component message = Component.literal("") .append( - Component.literal("[WARNING] ").withStyle( + Component.translatable("msg.tiedup.network.warning_prefix").withStyle( ChatFormatting.RED, ChatFormatting.BOLD ) @@ -96,14 +96,18 @@ public class PacketSlaveBeingFreed { ) ) .append( - Component.literal(" is trying to free ").withStyle( + Component.translatable("msg.tiedup.network.is_trying_to_free").withStyle( ChatFormatting.RED ) ) .append( Component.literal(slaveName).withStyle(ChatFormatting.YELLOW) ) - .append(Component.literal(" at ").withStyle(ChatFormatting.RED)) + .append( + Component.translatable("msg.tiedup.network.at_location").withStyle( + ChatFormatting.RED + ) + ) .append( Component.literal( "[" + x + ", " + y + ", " + z + "]" diff --git a/src/main/java/com/tiedup/remake/network/trader/PacketBuyCaptive.java b/src/main/java/com/tiedup/remake/network/trader/PacketBuyCaptive.java index ac1d891..fcef76d 100644 --- a/src/main/java/com/tiedup/remake/network/trader/PacketBuyCaptive.java +++ b/src/main/java/com/tiedup/remake/network/trader/PacketBuyCaptive.java @@ -77,7 +77,7 @@ public class PacketBuyCaptive { Entity traderEntity = level.getEntity(traderEntityId); if (!(traderEntity instanceof EntitySlaveTrader trader)) { buyer.sendSystemMessage( - Component.literal("Trader not found.").withStyle( + Component.translatable("msg.tiedup.network.trader_not_found").withStyle( ChatFormatting.RED ) ); @@ -92,7 +92,7 @@ public class PacketBuyCaptive { // Verify player has token if (!EntityKidnapper.hasTokenInInventory(buyer)) { buyer.sendSystemMessage( - Component.literal("You need a token to trade.").withStyle( + Component.translatable("msg.tiedup.network.need_token").withStyle( ChatFormatting.RED ) ); @@ -103,7 +103,7 @@ public class PacketBuyCaptive { UUID campId = trader.getCampUUID(); if (campId == null) { buyer.sendSystemMessage( - Component.literal("This trader has no camp.").withStyle( + Component.translatable("msg.tiedup.network.trader_no_camp").withStyle( ChatFormatting.RED ) ); @@ -114,7 +114,7 @@ public class PacketBuyCaptive { CampOwnership.CampData campData = ownership.getCamp(campId); if (campData == null) { buyer.sendSystemMessage( - Component.literal("Camp not found.").withStyle( + Component.translatable("msg.tiedup.network.camp_not_found").withStyle( ChatFormatting.RED ) ); @@ -137,7 +137,7 @@ public class PacketBuyCaptive { if (targetCell == null) { buyer.sendSystemMessage( - Component.literal("Captive not found in camp.").withStyle( + Component.translatable("msg.tiedup.network.captive_not_in_camp").withStyle( ChatFormatting.RED ) ); @@ -170,7 +170,7 @@ public class PacketBuyCaptive { if (kidnappedState == null || !kidnappedState.isForSell()) { buyer.sendSystemMessage( - Component.literal("This captive is not for sale.").withStyle( + Component.translatable("msg.tiedup.network.captive_not_for_sale").withStyle( ChatFormatting.RED ) ); @@ -181,7 +181,7 @@ public class PacketBuyCaptive { ItemTask price = kidnappedState.getSalePrice(); if (price == null) { buyer.sendSystemMessage( - Component.literal("Price not set for this captive.").withStyle( + Component.translatable("msg.tiedup.network.price_not_set").withStyle( ChatFormatting.RED ) ); @@ -194,14 +194,11 @@ public class PacketBuyCaptive { if (available < required) { buyer.sendSystemMessage( - Component.literal( - "You need " + - required + - "x " + - price.getItem().getDescription().getString() + - " (have " + - available + - ")" + Component.translatable( + "msg.tiedup.network.not_enough_items", + required, + price.getItem().getDescription().getString(), + available ).withStyle(ChatFormatting.RED) ); return; @@ -229,8 +226,8 @@ public class PacketBuyCaptive { ); buyer.sendSystemMessage( - Component.literal( - "Purchase complete! The maid will deliver your captive." + Component.translatable( + "msg.tiedup.network.purchase_maid_delivery" ).withStyle(ChatFormatting.GREEN) ); } else { diff --git a/src/main/java/com/tiedup/remake/personality/ToolMode.java b/src/main/java/com/tiedup/remake/personality/ToolMode.java index f16e739..132e328 100644 --- a/src/main/java/com/tiedup/remake/personality/ToolMode.java +++ b/src/main/java/com/tiedup/remake/personality/ToolMode.java @@ -23,7 +23,7 @@ public enum ToolMode { /** AxeItem - chop wood near master */ WOODCUTTING, - /** IBondageItem (BIND type) - capture untied damsels */ + /** ARMS-region bondage item - capture untied damsels */ CAPTURE; /** diff --git a/src/main/java/com/tiedup/remake/state/IBondageState.java b/src/main/java/com/tiedup/remake/state/IBondageState.java index 73e430b..50d7d59 100644 --- a/src/main/java/com/tiedup/remake/state/IBondageState.java +++ b/src/main/java/com/tiedup/remake/state/IBondageState.java @@ -195,7 +195,7 @@ public interface IBondageState extends ICapturable { /** * Check if gag item has gagging sound effect. - * @return true if gag implements ItemGaggingEffect + * @return true if gag has a GaggingComponent */ boolean hasGaggingEffect(); diff --git a/src/main/java/com/tiedup/remake/state/components/PlayerEquipment.java b/src/main/java/com/tiedup/remake/state/components/PlayerEquipment.java index 8cac7a5..a94aec9 100644 --- a/src/main/java/com/tiedup/remake/state/components/PlayerEquipment.java +++ b/src/main/java/com/tiedup/remake/state/components/PlayerEquipment.java @@ -19,8 +19,8 @@ import net.minecraft.world.item.ItemStack; * Risk: MEDIUM (core equipment system) * * Epic 5F: Uses V2EquipmentHelper. - * Uses low-level setInRegion for equips because V1 items (IBondageItem) do not - * implement IV2BondageItem, so V2EquipmentHelper.equipItem() would reject them. + * Uses low-level setInRegion for equips because force-equip paths (commands, NPC AI, + * NBT restore) should bypass V2EquipmentManager conflict resolution. */ public class PlayerEquipment { @@ -423,14 +423,11 @@ public class PlayerEquipment { // ========== Low-level V2 equipment operations ========== /** - * Low-level equip: writes to V2 capability, calls IBondageItem lifecycle hooks, syncs. + * Low-level equip: writes to V2 capability, calls IV2BondageItem lifecycle hooks, syncs. * - *

INTENTIONALLY bypasses V2EquipmentManager.tryEquip() because: - *

+ *

INTENTIONALLY bypasses V2EquipmentManager.tryEquip() because all callers + * (commands, NPC AI, NBT restore) are force-equip paths that should not be subject + * to V2 conflict resolution (SMELL-003 reviewed — bypass is by design). *

Basic safety (isRegionOccupied, canEquip) is still checked here.

*/ private void equipInRegion(BodyRegionV2 region, ItemStack stack) { @@ -444,7 +441,7 @@ public class PlayerEquipment { // Check if already occupied if (equip.isRegionOccupied(region)) return; - // Check canEquip via V1 IBondageItem interface + // Check canEquip via IV2BondageItem interface if (stack.getItem() instanceof IV2BondageItem bondageItem) { if (!bondageItem.canEquip(stack, player)) return; } diff --git a/src/main/java/com/tiedup/remake/tasks/TyingPlayerTask.java b/src/main/java/com/tiedup/remake/tasks/TyingPlayerTask.java index 7da3492..14e81d2 100644 --- a/src/main/java/com/tiedup/remake/tasks/TyingPlayerTask.java +++ b/src/main/java/com/tiedup/remake/tasks/TyingPlayerTask.java @@ -143,7 +143,7 @@ public class TyingPlayerTask extends TyingTask { /** * Send progress packets to both kidnapper and target (if players). - * Called every tick from ItemBind or RestraintTaskTickHandler. + * Called every tick from RestraintTaskTickHandler. */ @Override public void sendProgressPackets() { diff --git a/src/main/java/com/tiedup/remake/util/EquipmentInteractionHelper.java b/src/main/java/com/tiedup/remake/util/EquipmentInteractionHelper.java index fa1acde..11ac884 100644 --- a/src/main/java/com/tiedup/remake/util/EquipmentInteractionHelper.java +++ b/src/main/java/com/tiedup/remake/util/EquipmentInteractionHelper.java @@ -16,8 +16,8 @@ import org.jetbrains.annotations.Nullable; /** * Helper class for common bondage equipment interaction logic. * - * This class extracts the duplicated interactLivingEntity pattern - * from ItemGag, ItemBlindfold, ItemMittens, ItemEarplugs, and ItemCollar. + * This class extracts the common interactLivingEntity pattern + * for bondage equipment items (gags, blindfolds, mittens, earplugs, collars). */ public class EquipmentInteractionHelper { diff --git a/src/main/java/com/tiedup/remake/v2/bondage/BindModeHelper.java b/src/main/java/com/tiedup/remake/v2/bondage/BindModeHelper.java index 62f6fde..88325f6 100644 --- a/src/main/java/com/tiedup/remake/v2/bondage/BindModeHelper.java +++ b/src/main/java/com/tiedup/remake/v2/bondage/BindModeHelper.java @@ -32,7 +32,7 @@ public final class BindModeHelper { ); /** - * Check if the given stack is a bind item (V2 ARMS-region item or V1 ItemBind). + * Check if the given stack is a bind item (ARMS-region data-driven item). */ public static boolean isBindItem(ItemStack stack) { if (stack.isEmpty()) return false; diff --git a/src/main/java/com/tiedup/remake/v2/bondage/CollarHelper.java b/src/main/java/com/tiedup/remake/v2/bondage/CollarHelper.java index 37ba240..0a1275b 100644 --- a/src/main/java/com/tiedup/remake/v2/bondage/CollarHelper.java +++ b/src/main/java/com/tiedup/remake/v2/bondage/CollarHelper.java @@ -24,8 +24,8 @@ import net.minecraft.world.phys.AABB; import org.jetbrains.annotations.Nullable; /** - * Static utility for collar operations bridging V1 (ItemCollar subclasses) - * and V2 (data-driven items with OwnershipComponent). + * Static utility for collar operations using V2 data-driven items + * with OwnershipComponent. */ public final class CollarHelper { diff --git a/src/main/java/com/tiedup/remake/v2/bondage/PoseTypeHelper.java b/src/main/java/com/tiedup/remake/v2/bondage/PoseTypeHelper.java index 5bad5a8..94c1218 100644 --- a/src/main/java/com/tiedup/remake/v2/bondage/PoseTypeHelper.java +++ b/src/main/java/com/tiedup/remake/v2/bondage/PoseTypeHelper.java @@ -6,10 +6,10 @@ import com.tiedup.remake.v2.bondage.datadriven.DataDrivenItemRegistry; import net.minecraft.world.item.ItemStack; /** - * Resolves the {@link PoseType} for any bondage item stack (V1 or V2). + * Resolves the {@link PoseType} for any bondage item stack. * - *

V2 items read from the data-driven definition's {@code pose_type} field. - * V1 items fall back to {@code ItemBind.getPoseType()}.

+ *

Reads from the data-driven definition's {@code pose_type} field, + * falling back to {@link PoseType#STANDARD} if absent.

*/ public final class PoseTypeHelper { 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 5117419..371f7fe 100644 --- a/src/main/java/com/tiedup/remake/v2/bondage/TyingInteractionHelper.java +++ b/src/main/java/com/tiedup/remake/v2/bondage/TyingInteractionHelper.java @@ -20,8 +20,8 @@ import net.minecraft.world.item.ItemStack; /** * Handles the tying interaction flow for V2 data-driven ARMS items. * - *

Extracted from {@code ItemBind.interactLivingEntity()} to support - * the same tying task flow for data-driven items.

+ *

Originally extracted from the former {@code ItemBind.interactLivingEntity()}, + * now the canonical tying flow for all data-driven ARMS items.

*/ public final class TyingInteractionHelper { diff --git a/src/main/resources/assets/tiedup/lang/en_us.json b/src/main/resources/assets/tiedup/lang/en_us.json index 4d0ae87..4c886df 100644 --- a/src/main/resources/assets/tiedup/lang/en_us.json +++ b/src/main/resources/assets/tiedup/lang/en_us.json @@ -968,5 +968,35 @@ "item.tiedup.leather_mittens": "Leather Mittens", "item.tiedup.ball_gag_3d": "Ball Gag", "item.tiedup.taser": "Taser", - "item.tiedup.debug_wand": "Debug Wand" + "item.tiedup.debug_wand": "Debug Wand", + + "msg.tiedup.event.cant_drop_labor_tools": "You cannot drop labor tools!", + "msg.tiedup.event.cant_store_labor_tools": "You cannot store labor tools!", + "msg.tiedup.event.cant_eat_gagged": "You can't eat with a gag on.", + "msg.tiedup.event.death_escape": "You died and escaped captivity. Your items remain in the camp chest.", + "msg.tiedup.event.debt_increased": "Your debt has increased by %1$s emeralds for attacking %2$s!", + "msg.tiedup.event.task_failed": "Your task has been marked as failed. You will not be paid for your work.", + "msg.tiedup.event.returned_to_cell": "You have been returned to your cell for your insolence!", + "msg.tiedup.event.grace_lost": "You attacked a kidnapper - protection lost!", + "msg.tiedup.event.camp_defends_trader": "The camp defends their leader! You are now under attack!", + "msg.tiedup.event.camp_defends_maid": "The camp defends their servant! You are now under attack!", + "msg.tiedup.event.chest_locked_by_camp": "This chest is locked by the camp!", + "msg.tiedup.event.new_maid_arrived": "A new maid, %1$s, has arrived. Work resumes.", + + "msg.tiedup.network.trader_not_found": "Trader not found.", + "msg.tiedup.network.need_token": "You need a token to trade.", + "msg.tiedup.network.trader_no_camp": "This trader has no camp.", + "msg.tiedup.network.camp_not_found": "Camp not found.", + "msg.tiedup.network.captive_not_in_camp": "Captive not found in camp.", + "msg.tiedup.network.captive_not_for_sale": "This captive is not for sale.", + "msg.tiedup.network.price_not_set": "Price not set for this captive.", + "msg.tiedup.network.not_enough_items": "You need %1$sx %2$s (have %3$s)", + "msg.tiedup.network.purchase_maid_delivery": "Purchase complete! The maid will deliver your captive.", + "msg.tiedup.network.lock_jammed": "The lock jammed! Only struggle can open it now.", + "msg.tiedup.network.warning_prefix": "[WARNING] ", + "msg.tiedup.network.is_trying_to_free": " is trying to free ", + "msg.tiedup.network.at_location": " at ", + + "item.tiedup.owner_target.owner": "Owner: ", + "item.tiedup.owner_target.unclaimed": "Unclaimed (%1$s)" }