feat(C-01): i18n subcommands — 33 translatable keys

Phase 2: Migrate all Component.literal() in 5 subcommand files.
- BindCommands, GagCommands, BlindfoldCommands, CollarCommands, AccessoryCommands
- Strip \u00a7a section signs, use .withStyle(ChatFormatting.GREEN)
- Add 33 keys to en_us.json (command.tiedup.*)
- Shared error key: command.tiedup.error.no_state
This commit is contained in:
NotEvil
2026-04-15 13:28:02 +02:00
parent 0662739fe0
commit 70965c2dda
6 changed files with 175 additions and 150 deletions

View File

@@ -11,6 +11,7 @@ import com.tiedup.remake.commands.CommandHelper;
import com.tiedup.remake.v2.bondage.CollarHelper; import com.tiedup.remake.v2.bondage.CollarHelper;
import com.tiedup.remake.core.SystemMessageManager; import com.tiedup.remake.core.SystemMessageManager;
import com.tiedup.remake.v2.bondage.datadriven.DataDrivenBondageItem; import com.tiedup.remake.v2.bondage.datadriven.DataDrivenBondageItem;
import net.minecraft.ChatFormatting;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import com.tiedup.remake.state.PlayerBindState; import com.tiedup.remake.state.PlayerBindState;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
@@ -111,7 +112,7 @@ public class AccessoryCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -119,9 +120,9 @@ public class AccessoryCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.accessory.already_earplugs",
" already has earplugs" targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -135,11 +136,10 @@ public class AccessoryCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.accessory.earplugs_on",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
" has been given earplugs" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
SystemMessageManager.sendToTarget( SystemMessageManager.sendToTarget(
@@ -159,7 +159,7 @@ public class AccessoryCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -167,9 +167,9 @@ public class AccessoryCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.accessory.no_earplugs",
" does not have earplugs" targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -182,11 +182,10 @@ public class AccessoryCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.accessory.earplugs_removed",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
"'s earplugs have been removed" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
SystemMessageManager.sendToPlayer( SystemMessageManager.sendToPlayer(
@@ -206,7 +205,7 @@ public class AccessoryCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -214,9 +213,9 @@ public class AccessoryCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.accessory.already_clothes",
" already has clothes" targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -230,11 +229,10 @@ public class AccessoryCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.accessory.clothes_on",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
" has been given clothes" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
@@ -249,7 +247,7 @@ public class AccessoryCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -257,9 +255,9 @@ public class AccessoryCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.accessory.no_clothes",
" is not wearing clothes" targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -276,10 +274,10 @@ public class AccessoryCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"Removed clothes from " + "command.tiedup.accessory.clothes_removed",
targetPlayer.getName().getString() targetPlayer.getName().getString()
), ).withStyle(ChatFormatting.GREEN),
true true
); );
return 1; return 1;
@@ -293,7 +291,7 @@ public class AccessoryCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -338,9 +336,9 @@ public class AccessoryCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.accessory.already_restrained",
" is already fully restrained" targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -353,13 +351,11 @@ public class AccessoryCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.accessory.fully_restrained",
targetPlayer.getName().getString() + targetPlayer.getName().getString(),
" has been fully restrained (" + finalApplied
finalApplied + ).withStyle(ChatFormatting.GREEN),
" items applied)"
),
true true
); );
SystemMessageManager.sendToPlayer( SystemMessageManager.sendToPlayer(
@@ -381,7 +377,7 @@ public class AccessoryCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -416,9 +412,7 @@ public class AccessoryCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable("command.tiedup.accessory.adjust_invalid_type")
"Invalid type. Use: gag, blindfold, or all"
)
); );
return 0; return 0;
} }
@@ -427,11 +421,10 @@ public class AccessoryCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.accessory.nothing_to_adjust",
" has no " + targetPlayer.getName().getString(),
type + type
" to adjust"
) )
); );
return 0; return 0;
@@ -451,15 +444,12 @@ public class AccessoryCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7aAdjusted " + "command.tiedup.accessory.adjusted",
items + items,
" for " + targetPlayer.getName().getString(),
targetPlayer.getName().getString() + valueStr
" to " + ).withStyle(ChatFormatting.GREEN),
valueStr +
" pixels"
),
true true
); );

View File

@@ -6,6 +6,7 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.tiedup.remake.commands.CommandHelper; import com.tiedup.remake.commands.CommandHelper;
import com.tiedup.remake.core.SystemMessageManager; import com.tiedup.remake.core.SystemMessageManager;
import com.tiedup.remake.v2.bondage.datadriven.DataDrivenBondageItem; import com.tiedup.remake.v2.bondage.datadriven.DataDrivenBondageItem;
import net.minecraft.ChatFormatting;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import com.tiedup.remake.state.PlayerBindState; import com.tiedup.remake.state.PlayerBindState;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
@@ -51,7 +52,7 @@ public class BindCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -59,9 +60,9 @@ public class BindCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.bind.already_tied",
" is already tied up" targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -76,11 +77,10 @@ public class BindCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.bind.tied",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
" has been tied up" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
SystemMessageManager.sendTiedUp( SystemMessageManager.sendTiedUp(
@@ -99,7 +99,7 @@ public class BindCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -112,9 +112,9 @@ public class BindCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.bind.not_restrained",
" is not restrained" targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -149,11 +149,10 @@ public class BindCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.bind.freed",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
" has been freed from all restraints" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
SystemMessageManager.sendFreed(targetPlayer); SystemMessageManager.sendFreed(targetPlayer);

View File

@@ -6,6 +6,7 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.tiedup.remake.commands.CommandHelper; import com.tiedup.remake.commands.CommandHelper;
import com.tiedup.remake.core.SystemMessageManager; import com.tiedup.remake.core.SystemMessageManager;
import com.tiedup.remake.v2.bondage.datadriven.DataDrivenBondageItem; import com.tiedup.remake.v2.bondage.datadriven.DataDrivenBondageItem;
import net.minecraft.ChatFormatting;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import com.tiedup.remake.state.PlayerBindState; import com.tiedup.remake.state.PlayerBindState;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
@@ -51,7 +52,7 @@ public class BlindfoldCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -59,9 +60,9 @@ public class BlindfoldCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.blindfold.already_blindfolded",
" is already blindfolded" targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -76,11 +77,10 @@ public class BlindfoldCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.blindfold.blindfolded",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
" has been blindfolded" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
SystemMessageManager.sendToTarget( SystemMessageManager.sendToTarget(
@@ -100,7 +100,7 @@ public class BlindfoldCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -108,9 +108,9 @@ public class BlindfoldCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.blindfold.not_blindfolded",
" is not blindfolded" targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -123,11 +123,10 @@ public class BlindfoldCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.blindfold.removed",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
"'s blindfold has been removed" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
SystemMessageManager.sendToTarget( SystemMessageManager.sendToTarget(

View File

@@ -9,6 +9,7 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.tiedup.remake.commands.CommandHelper; import com.tiedup.remake.commands.CommandHelper;
import com.tiedup.remake.core.SystemMessageManager; import com.tiedup.remake.core.SystemMessageManager;
import com.tiedup.remake.v2.bondage.datadriven.DataDrivenBondageItem; import com.tiedup.remake.v2.bondage.datadriven.DataDrivenBondageItem;
import net.minecraft.ChatFormatting;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import com.tiedup.remake.state.PlayerBindState; import com.tiedup.remake.state.PlayerBindState;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
@@ -76,7 +77,7 @@ public class CollarCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -84,9 +85,9 @@ public class CollarCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.collar.already_collared",
" already has a collar" targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -106,11 +107,10 @@ public class CollarCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.collar.collared",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
" has been collared" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
SystemMessageManager.sendToTarget( SystemMessageManager.sendToTarget(
@@ -130,7 +130,7 @@ public class CollarCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -138,9 +138,9 @@ public class CollarCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.collar.no_collar",
" does not have a collar" targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -153,11 +153,10 @@ public class CollarCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.collar.removed",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
"'s collar has been removed" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
SystemMessageManager.sendToTarget( SystemMessageManager.sendToTarget(
@@ -177,7 +176,7 @@ public class CollarCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -222,11 +221,10 @@ public class CollarCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.collar.enslaved",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
" has been enslaved" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
SystemMessageManager.sendEnslaved( SystemMessageManager.sendEnslaved(
@@ -245,7 +243,7 @@ public class CollarCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -253,8 +251,9 @@ public class CollarCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + " is not captured" "command.tiedup.collar.not_captured",
targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -273,11 +272,10 @@ public class CollarCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.collar.freed",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
" has been freed from slavery" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
SystemMessageManager.sendFreed(targetPlayer); SystemMessageManager.sendFreed(targetPlayer);

View File

@@ -6,6 +6,7 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.tiedup.remake.commands.CommandHelper; import com.tiedup.remake.commands.CommandHelper;
import com.tiedup.remake.core.SystemMessageManager; import com.tiedup.remake.core.SystemMessageManager;
import com.tiedup.remake.v2.bondage.datadriven.DataDrivenBondageItem; import com.tiedup.remake.v2.bondage.datadriven.DataDrivenBondageItem;
import net.minecraft.ChatFormatting;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import com.tiedup.remake.state.PlayerBindState; import com.tiedup.remake.state.PlayerBindState;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
@@ -51,7 +52,7 @@ public class GagCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -59,9 +60,9 @@ public class GagCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + "command.tiedup.gag.already_gagged",
" is already gagged" targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -76,11 +77,10 @@ public class GagCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.gag.gagged",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
" has been gagged" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
SystemMessageManager.sendGagged( SystemMessageManager.sendGagged(
@@ -99,7 +99,7 @@ public class GagCommands {
if (state == null) { if (state == null) {
context context
.getSource() .getSource()
.sendFailure(Component.literal("Failed to get player state")); .sendFailure(Component.translatable("command.tiedup.error.no_state"));
return 0; return 0;
} }
@@ -107,8 +107,9 @@ public class GagCommands {
context context
.getSource() .getSource()
.sendFailure( .sendFailure(
Component.literal( Component.translatable(
targetPlayer.getName().getString() + " is not gagged" "command.tiedup.gag.not_gagged",
targetPlayer.getName().getString()
) )
); );
return 0; return 0;
@@ -121,11 +122,10 @@ public class GagCommands {
.getSource() .getSource()
.sendSuccess( .sendSuccess(
() -> () ->
Component.literal( Component.translatable(
"\u00a7a" + "command.tiedup.gag.removed",
targetPlayer.getName().getString() + targetPlayer.getName().getString()
"'s gag has been removed" ).withStyle(ChatFormatting.GREEN),
),
true true
); );
SystemMessageManager.sendToTarget( SystemMessageManager.sendToTarget(

View File

@@ -771,5 +771,44 @@
"msg.tiedup.system.info": "%1$s", "msg.tiedup.system.info": "%1$s",
"msg.tiedup.system.warning": "%1$s", "msg.tiedup.system.warning": "%1$s",
"msg.tiedup.system.error": "%1$s", "msg.tiedup.system.error": "%1$s",
"msg.tiedup.system.resistance_suffix": " (Resistance: %1$s)" "msg.tiedup.system.resistance_suffix": " (Resistance: %1$s)",
"command.tiedup.error.no_state": "Failed to get player state",
"command.tiedup.bind.already_tied": "%1$s is already tied up",
"command.tiedup.bind.tied": "%1$s has been tied up",
"command.tiedup.bind.not_restrained": "%1$s is not restrained",
"command.tiedup.bind.freed": "%1$s has been freed from all restraints",
"command.tiedup.gag.already_gagged": "%1$s is already gagged",
"command.tiedup.gag.gagged": "%1$s has been gagged",
"command.tiedup.gag.not_gagged": "%1$s is not gagged",
"command.tiedup.gag.removed": "%1$s's gag has been removed",
"command.tiedup.blindfold.already_blindfolded": "%1$s is already blindfolded",
"command.tiedup.blindfold.blindfolded": "%1$s has been blindfolded",
"command.tiedup.blindfold.not_blindfolded": "%1$s is not blindfolded",
"command.tiedup.blindfold.removed": "%1$s's blindfold has been removed",
"command.tiedup.collar.already_collared": "%1$s already has a collar",
"command.tiedup.collar.collared": "%1$s has been collared",
"command.tiedup.collar.no_collar": "%1$s does not have a collar",
"command.tiedup.collar.removed": "%1$s's collar has been removed",
"command.tiedup.collar.enslaved": "%1$s has been enslaved",
"command.tiedup.collar.not_captured": "%1$s is not captured",
"command.tiedup.collar.freed": "%1$s has been freed from slavery",
"command.tiedup.accessory.already_earplugs": "%1$s already has earplugs",
"command.tiedup.accessory.earplugs_on": "%1$s has been given earplugs",
"command.tiedup.accessory.no_earplugs": "%1$s does not have earplugs",
"command.tiedup.accessory.earplugs_removed": "%1$s's earplugs have been removed",
"command.tiedup.accessory.already_clothes": "%1$s already has clothes",
"command.tiedup.accessory.clothes_on": "%1$s has been given clothes",
"command.tiedup.accessory.no_clothes": "%1$s is not wearing clothes",
"command.tiedup.accessory.clothes_removed": "Removed clothes from %1$s",
"command.tiedup.accessory.already_restrained": "%1$s is already fully restrained",
"command.tiedup.accessory.fully_restrained": "%1$s has been fully restrained (%2$s items applied)",
"command.tiedup.accessory.adjust_invalid_type": "Invalid type. Use: gag, blindfold, or all",
"command.tiedup.accessory.nothing_to_adjust": "%1$s has no %2$s to adjust",
"command.tiedup.accessory.adjusted": "Adjusted %1$s for %2$s to %3$s pixels"
} }