Skip to content

Commit 901efc0

Browse files
authored
Refactor localization: move whisper and hover text to messages and standardize keys (#250)
1 parent 17bd77b commit 901efc0

File tree

8 files changed

+57
-44
lines changed

8 files changed

+57
-44
lines changed

PistonChat/src/main/java/net/pistonmaster/pistonchat/commands/MainCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
3535
sender.sendMessage(command.getPermissionMessage());
3636
}
3737

38-
String headerText = LegacyComponentSerializer.legacySection().serialize(plugin.getCommonTool().getLanguageMessage(plugin.getCommonTool().senderAudience(sender), "help-header", false));
38+
String headerText = LegacyComponentSerializer.legacySection().serialize(plugin.getCommonTool().getLanguageMessage(plugin.getCommonTool().senderAudience(sender), "helpHeader", false));
3939
ComponentBuilder builder = new ComponentBuilder(headerText).color(ChatColor.GOLD);
4040

4141
for (Map.Entry<String, Map<String, Object>> entry : plugin.getDescription().getCommands().entrySet()) {

PistonChat/src/main/java/net/pistonmaster/pistonchat/commands/ignore/IgnoreListCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,13 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
6868
if (page < plugin.getIgnoreTool().getIgnoredPlayers(player).size()) {
6969
showList(page, player);
7070
} else {
71-
plugin.getCommonTool().sendLanguageMessage(player, "page-not-exists");
71+
plugin.getCommonTool().sendLanguageMessage(player, "pageNotExists");
7272
}
7373
});
7474

7575
return true;
7676
} catch (NumberFormatException e) {
77-
plugin.getCommonTool().sendLanguageMessage(player, "not-a-number");
77+
plugin.getCommonTool().sendLanguageMessage(player, "notANumber");
7878
return false;
7979
}
8080
}

PistonChat/src/main/java/net/pistonmaster/pistonchat/commands/whisper/MessageCommandHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ public static void sendWhisper(PistonChat plugin, CommandSender sender, CommandS
1111
if (config.onlyHidePms) {
1212
plugin.getCommonTool().sendSender(sender, message, receiver);
1313
} else {
14-
plugin.getCommonTool().sendLanguageMessage(sender, "source-ignored");
14+
plugin.getCommonTool().sendLanguageMessage(sender, "sourceIgnored");
1515
}
1616
return;
1717
}
1818

1919
if (!config.allowPmIgnored && plugin.getIgnoreTool().isIgnored(receiver, sender)) {
20-
plugin.getCommonTool().sendLanguageMessage(sender, "target-ignored");
20+
plugin.getCommonTool().sendLanguageMessage(sender, "targetIgnored");
2121
return;
2222
}
2323

PistonChat/src/main/java/net/pistonmaster/pistonchat/config/PistonChatConfig.java

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,6 @@
88

99
@Configuration
1010
public class PistonChatConfig {
11-
@Comment("Whisper message formats using MiniMessage syntax")
12-
public WhisperConfig whisper = new WhisperConfig();
13-
14-
@Comment("Hover text shown when hovering over a player's name in chat")
15-
public String hoverText = "<gold>Message <dark_aqua><player_name>";
16-
1711
@Comment("Storage type: 'file' or 'mysql'")
1812
public String storage = "file";
1913

@@ -70,14 +64,6 @@ public class PistonChatConfig {
7064
"green", new PrefixConfig(">", "GREEN")
7165
));
7266

73-
@Configuration
74-
public static class WhisperConfig {
75-
@Comment("Format shown to the receiver of a whisper")
76-
public String from = "<light_purple><player_name> whispers: <message>";
77-
@Comment("Format shown to the sender of a whisper")
78-
public String to = "<light_purple>You whisper to <player_name>: <message>";
79-
}
80-
8167
@Configuration
8268
public static class MySQLConfig {
8369
@Comment("MySQL server hostname")
@@ -97,6 +83,10 @@ public static class MessagesConfig {
9783
@Comment("The prefix can also be set to just \"&6\"")
9884
public String format = "[<dark_green>PistonChat</dark_green>] <gold><message>";
9985
public String helpHeader = "---[<dark_green>PistonChat</dark_green>]---";
86+
public String whisperFrom = "<light_purple><player_name> whispers: <message>";
87+
public String whisperTo = "<light_purple>You whisper to <player_name>: <message>";
88+
@Comment("Hover text shown when hovering over a player's name in chat")
89+
public String hoverText = "<gold>Message <dark_aqua><player_name>";
10090
public String playeronly = "You need to be a player to do this.";
10191
public String notonline = "This player is not online.";
10292
public String nooneignored = "No players ignored.";

PistonChat/src/main/java/net/pistonmaster/pistonchat/tools/CommonTool.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public void sendWhisperTo(CommandSender sender, String message, CommandSender re
5757
if (config.onlyHidePms) {
5858
sendSender(sender, message, receiver);
5959
} else {
60-
sendLanguageMessage(sender, "whispering-disabled");
60+
sendLanguageMessage(sender, "whisperingDisabled");
6161
}
6262
return;
6363
}
@@ -87,7 +87,8 @@ public void sendWhisperTo(CommandSender sender, String message, CommandSender re
8787
public void sendSender(CommandSender sender, String message, CommandSender receiver) {
8888
Audience senderAudience = senderAudience(sender);
8989
Audience receiverAudience = senderAudience(receiver);
90-
String senderString = plugin.getPluginConfig().whisper.to;
90+
Player player = sender instanceof Player p ? p : null;
91+
String senderString = getMessageByKey("whisperTo", player);
9192
TagResolver tagResolver = TagResolver.resolver(
9293
MiniPlaceholdersHook.relationalGlobalPlaceholders(plugin),
9394
Placeholder.unparsed("message", message),
@@ -100,14 +101,15 @@ public void sendSender(CommandSender sender, String message, CommandSender recei
100101
private void sendReceiver(CommandSender sender, String message, CommandSender receiver) {
101102
Audience senderAudience = senderAudience(sender);
102103
Audience receiverAudience = senderAudience(receiver);
103-
String senderString = plugin.getPluginConfig().whisper.from;
104+
Player player = receiver instanceof Player p ? p : null;
105+
String receiverString = getMessageByKey("whisperFrom", player);
104106
TagResolver tagResolver = TagResolver.resolver(
105107
MiniPlaceholdersHook.relationalGlobalPlaceholders(plugin),
106108
Placeholder.unparsed("message", message),
107109
getDisplayNameResolver(sender)
108110
);
109111

110-
receiverAudience.sendMessage(MiniMessage.miniMessage().deserialize(senderString, MiniPlaceholdersHook.getRelationalAudience(plugin, senderAudience, receiverAudience), tagResolver));
112+
receiverAudience.sendMessage(MiniMessage.miniMessage().deserialize(receiverString, MiniPlaceholdersHook.getRelationalAudience(plugin, senderAudience, receiverAudience), tagResolver));
111113
}
112114

113115
public Component getLanguageMessage(Audience audience, String messageKey, boolean prefix, TagResolver... tagResolvers) {
@@ -190,7 +192,7 @@ public void sendChatMessage(Player chatter, String message, Player receiver, @Nu
190192
: getFormat(chatter, relationalAudience, miniPlaceholderResolver);
191193

192194
if (receiver.hasPermission("pistonchat.playernamereply")) {
193-
String hoverText = plugin.getPluginConfig().hoverText;
195+
String hoverText = getMessageByKey("hoverText", receiver);
194196

195197
formatComponent = formatComponent
196198
.clickEvent(ClickEvent.suggestCommand("/w %s ".formatted(chatter.getName())))

PistonChat/src/main/java/net/pistonmaster/pistonchat/utils/MessageKeyResolver.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ private MessageKeyResolver() {
2020
*/
2121
public static String getMessageByKey(PistonChatConfig.MessagesConfig messages, String key) {
2222
return switch (key) {
23-
case "help-header" -> messages.helpHeader;
23+
case "helpHeader" -> messages.helpHeader;
24+
case "whisperFrom" -> messages.whisperFrom;
25+
case "whisperTo" -> messages.whisperTo;
26+
case "hoverText" -> messages.hoverText;
2427
case "playeronly" -> messages.playeronly;
2528
case "notonline" -> messages.notonline;
2629
case "nooneignored" -> messages.nooneignored;
@@ -30,11 +33,11 @@ public static String getMessageByKey(PistonChatConfig.MessagesConfig messages, S
3033
case "pmsoff" -> messages.pmsoff;
3134
case "pmself" -> messages.pmself;
3235
case "chatisoff" -> messages.chatisoff;
33-
case "source-ignored" -> messages.sourceIgnored;
34-
case "target-ignored" -> messages.targetIgnored;
35-
case "page-not-exists" -> messages.pageNotExists;
36-
case "not-a-number" -> messages.notANumber;
37-
case "whispering-disabled" -> messages.whisperingDisabled;
36+
case "sourceIgnored" -> messages.sourceIgnored;
37+
case "targetIgnored" -> messages.targetIgnored;
38+
case "pageNotExists" -> messages.pageNotExists;
39+
case "notANumber" -> messages.notANumber;
40+
case "whisperingDisabled" -> messages.whisperingDisabled;
3841
case "ignore" -> messages.ignore;
3942
case "unignore" -> messages.unignore;
4043
case "ignorehard" -> messages.ignorehard;

PistonChat/src/test/java/net/pistonmaster/pistonchat/commands/whisper/MessageCommandHelperTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ void sendWhisperWhenSenderIsIgnoredAndNotOnlyHidePms() {
6666

6767
MessageCommandHelper.sendWhisper(mockPlugin, mockSender, mockReceiver, "hello");
6868

69-
// Sender should get "source-ignored" message
70-
verify(mockCommonTool).sendLanguageMessage(mockSender, "source-ignored");
69+
// Sender should get "sourceIgnored" message
70+
verify(mockCommonTool).sendLanguageMessage(mockSender, "sourceIgnored");
7171
verify(mockCommonTool, never()).sendWhisperTo(any(), any(), any());
7272
verify(mockCommonTool, never()).sendSender(any(), any(), any());
7373
}
@@ -80,8 +80,8 @@ void sendWhisperWhenReceiverIsIgnoredBySenderAndNotAllowed() {
8080

8181
MessageCommandHelper.sendWhisper(mockPlugin, mockSender, mockReceiver, "hello");
8282

83-
// Sender should get "target-ignored" message
84-
verify(mockCommonTool).sendLanguageMessage(mockSender, "target-ignored");
83+
// Sender should get "targetIgnored" message
84+
verify(mockCommonTool).sendLanguageMessage(mockSender, "targetIgnored");
8585
verify(mockCommonTool, never()).sendWhisperTo(any(), any(), any());
8686
}
8787

PistonChat/src/test/java/net/pistonmaster/pistonchat/utils/MessageKeyResolverTest.java

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,25 @@ void setUp() {
2020
@Test
2121
void getHelpHeader() {
2222
messages.helpHeader = "Test Help Header";
23-
assertEquals("Test Help Header", MessageKeyResolver.getMessageByKey(messages, "help-header"));
23+
assertEquals("Test Help Header", MessageKeyResolver.getMessageByKey(messages, "helpHeader"));
24+
}
25+
26+
@Test
27+
void getWhisperFrom() {
28+
messages.whisperFrom = "From: <message>";
29+
assertEquals("From: <message>", MessageKeyResolver.getMessageByKey(messages, "whisperFrom"));
30+
}
31+
32+
@Test
33+
void getWhisperTo() {
34+
messages.whisperTo = "To: <message>";
35+
assertEquals("To: <message>", MessageKeyResolver.getMessageByKey(messages, "whisperTo"));
36+
}
37+
38+
@Test
39+
void getHoverText() {
40+
messages.hoverText = "Hover: <player_name>";
41+
assertEquals("Hover: <player_name>", MessageKeyResolver.getMessageByKey(messages, "hoverText"));
2442
}
2543

2644
@Test
@@ -80,31 +98,31 @@ void getChatIsOff() {
8098
@Test
8199
void getSourceIgnored() {
82100
messages.sourceIgnored = "You are ignored by this person";
83-
assertEquals("You are ignored by this person", MessageKeyResolver.getMessageByKey(messages, "source-ignored"));
101+
assertEquals("You are ignored by this person", MessageKeyResolver.getMessageByKey(messages, "sourceIgnored"));
84102
}
85103

86104
@Test
87105
void getTargetIgnored() {
88106
messages.targetIgnored = "You ignore this person";
89-
assertEquals("You ignore this person", MessageKeyResolver.getMessageByKey(messages, "target-ignored"));
107+
assertEquals("You ignore this person", MessageKeyResolver.getMessageByKey(messages, "targetIgnored"));
90108
}
91109

92110
@Test
93111
void getPageNotExists() {
94112
messages.pageNotExists = "Page does not exist";
95-
assertEquals("Page does not exist", MessageKeyResolver.getMessageByKey(messages, "page-not-exists"));
113+
assertEquals("Page does not exist", MessageKeyResolver.getMessageByKey(messages, "pageNotExists"));
96114
}
97115

98116
@Test
99117
void getNotANumber() {
100118
messages.notANumber = "Not a valid number";
101-
assertEquals("Not a valid number", MessageKeyResolver.getMessageByKey(messages, "not-a-number"));
119+
assertEquals("Not a valid number", MessageKeyResolver.getMessageByKey(messages, "notANumber"));
102120
}
103121

104122
@Test
105123
void getWhisperingDisabled() {
106124
messages.whisperingDisabled = "Whispering is disabled";
107-
assertEquals("Whispering is disabled", MessageKeyResolver.getMessageByKey(messages, "whispering-disabled"));
125+
assertEquals("Whispering is disabled", MessageKeyResolver.getMessageByKey(messages, "whisperingDisabled"));
108126
}
109127

110128
@Test
@@ -156,10 +174,10 @@ void emptyKeyThrowsException() {
156174

157175
@ParameterizedTest
158176
@ValueSource(strings = {
159-
"help-header", "playeronly", "notonline", "nooneignored",
177+
"helpHeader", "whisperFrom", "whisperTo", "hoverText", "playeronly", "notonline", "nooneignored",
160178
"chaton", "chatoff", "pmson", "pmsoff", "pmself", "chatisoff",
161-
"source-ignored", "target-ignored", "page-not-exists", "not-a-number",
162-
"whispering-disabled", "ignore", "unignore", "ignorehard",
179+
"sourceIgnored", "targetIgnored", "pageNotExists", "notANumber",
180+
"whisperingDisabled", "ignore", "unignore", "ignorehard",
163181
"unignorehard", "ignorelistcleared"
164182
})
165183
void allKeysReturnNonNull(String key) {
@@ -173,7 +191,7 @@ void defaultMessagesAreUsed() {
173191

174192
// These should match the defaults defined in PistonChatConfig.MessagesConfig
175193
assertEquals("---[<dark_green>PistonChat</dark_green>]---",
176-
MessageKeyResolver.getMessageByKey(defaultMessages, "help-header"));
194+
MessageKeyResolver.getMessageByKey(defaultMessages, "helpHeader"));
177195
assertEquals("You need to be a player to do this.",
178196
MessageKeyResolver.getMessageByKey(defaultMessages, "playeronly"));
179197
assertEquals("This player is not online.",

0 commit comments

Comments
 (0)