Skip to content

Commit e77a578

Browse files
whisper coloring and chat color hack fix
1 parent 8b441a7 commit e77a578

File tree

13 files changed

+86
-169
lines changed

13 files changed

+86
-169
lines changed

LICENSE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2022 keinBkeinT
3+
Copyright (c) 2022 0b0t
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ the changes take effect.
4545
- **spoilers** - enables or disables spoilers, is **disabled** by default.
4646
- **whispers** - enables or disables whisper changes, is **enabled** by default.
4747
- **newcommands** - enables or disables new whisper commands, is **enabled** by default.
48-
- **whisperlog** - enables or disables whisper logging (whisper logs are saved in /ChatCo/whisperlog.txt), is **
48+
- **whisperlog** - enables or disables whisper logging (whisper logs are saved in /ChatCo/whisperlog.txt, is **
4949
disabled**
5050
by default.)
5151

pom.xml

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>org.zeroBzeroT.chatCo</groupId>
77
<artifactId>ChatCoPlus</artifactId>
8-
<version>1.0.2</version>
8+
<version>1.0.3</version>
99
<packaging>jar</packaging>
1010
<name>${project.artifactId}</name>
1111

@@ -112,18 +112,6 @@
112112
<version>${minecraft.version}-R0.1-SNAPSHOT</version>
113113
<scope>provided</scope>
114114
</dependency>
115-
<dependency>
116-
<groupId>org.powermock</groupId>
117-
<artifactId>powermock-module-junit4</artifactId>
118-
<version>2.0.9</version>
119-
<scope>test</scope>
120-
</dependency>
121-
<dependency>
122-
<groupId>org.powermock</groupId>
123-
<artifactId>powermock-api-mockito2</artifactId>
124-
<version>2.0.9</version>
125-
<scope>test</scope>
126-
</dependency>
127115
<dependency>
128116
<groupId>org.bstats</groupId>
129117
<artifactId>bstats-bukkit</artifactId>

src/main/java/org/zeroBzeroT/chatCo/ChatPlayer.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@
99
import java.util.UUID;
1010

1111
public class ChatPlayer {
12-
public final Player player;
12+
public final String name;
1313
public final UUID playerUUID;
1414
public boolean chatDisabled;
1515
public boolean tellsDisabled;
1616
public String LastMessenger;
1717
public String LastReceiver;
18-
private File IgnoreList;
18+
private File IgnoresFile;
1919
private List<String> ignores;
2020

2121
public ChatPlayer(final Player p) throws IOException {
22-
player = p;
22+
name = p.getName();
2323
playerUUID = p.getUniqueId();
2424
chatDisabled = false;
2525
tellsDisabled = false;
@@ -32,31 +32,31 @@ public ChatPlayer(final Player p) throws IOException {
3232

3333
@SuppressWarnings("ResultOfMethodCallIgnored")
3434
public void saveIgnoreList(final String p) throws IOException {
35-
File oldIgnores = new File(Main.dataFolder, "/ignorelists/" + this.player.getName() + ".txt");
36-
this.IgnoreList = new File(Main.dataFolder, "/ignorelists/" + this.playerUUID + ".txt");
35+
File oldIgnores = new File(Main.dataFolder, "/ignorelists/" + this.name + ".txt");
36+
this.IgnoresFile = new File(Main.dataFolder, "/ignorelists/" + this.playerUUID + ".txt");
3737

3838
if (oldIgnores.exists()) {
39-
oldIgnores.renameTo(this.IgnoreList);
39+
oldIgnores.renameTo(this.IgnoresFile);
4040
}
4141

42-
if (!this.IgnoreList.exists()) {
43-
this.IgnoreList.getParentFile().mkdir();
44-
final FileWriter fwo = new FileWriter(this.IgnoreList, true);
42+
if (!this.IgnoresFile.exists()) {
43+
this.IgnoresFile.getParentFile().mkdir();
44+
final FileWriter fwo = new FileWriter(this.IgnoresFile, true);
4545
final BufferedWriter bwo = new BufferedWriter(fwo);
4646
bwo.close();
4747
}
4848

4949
if (!p.isEmpty()) {
5050
if (!this.isIgnored(p)) {
51-
final FileWriter fwo = new FileWriter(this.IgnoreList, true);
51+
final FileWriter fwo = new FileWriter(this.IgnoresFile, true);
5252
final BufferedWriter bwo = new BufferedWriter(fwo);
5353
bwo.write(p);
5454
bwo.newLine();
5555
bwo.close();
5656
} else {
5757
this.ignores.remove(p);
5858
this.ignores.remove("");
59-
final FileWriter fwo = new FileWriter(this.IgnoreList);
59+
final FileWriter fwo = new FileWriter(this.IgnoresFile);
6060
final BufferedWriter bwo = new BufferedWriter(fwo);
6161

6262
for (final String print : this.ignores) {
@@ -72,7 +72,7 @@ public void saveIgnoreList(final String p) throws IOException {
7272
}
7373

7474
public void unIgnoreAll() throws IOException {
75-
final FileWriter fwo = new FileWriter(this.IgnoreList, false);
75+
final FileWriter fwo = new FileWriter(this.IgnoresFile, false);
7676
final BufferedWriter bwo = new BufferedWriter(fwo);
7777
bwo.flush();
7878
bwo.close();
@@ -105,7 +105,7 @@ public void setLastReceiver(final Player sender) {
105105
}
106106

107107
private void updateIgnoreList() throws IOException {
108-
final FileInputStream file = new FileInputStream(this.IgnoreList);
108+
final FileInputStream file = new FileInputStream(this.IgnoresFile);
109109
final InputStreamReader fileReader = new InputStreamReader(file);
110110
final BufferedReader inIgnores = new BufferedReader(fileReader);
111111
String data = inIgnores.readLine();
@@ -123,7 +123,7 @@ public boolean isIgnored(final String p) {
123123
return this.ignores.contains(p);
124124
}
125125

126-
public List<String> getIgnoreList() {
126+
public List<String> getIgnoresFile() {
127127
return this.ignores;
128128
}
129129
}

src/main/java/org/zeroBzeroT/chatCo/Components.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/main/java/org/zeroBzeroT/chatCo/Main.java

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
package org.zeroBzeroT.chatCo;
22

3-
import net.kyori.adventure.audience.Audience;
43
import net.kyori.adventure.text.Component;
5-
import net.kyori.adventure.text.TextComponent;
6-
import net.kyori.adventure.text.event.ClickEvent;
7-
import net.kyori.adventure.text.event.HoverEvent;
8-
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
4+
import net.kyori.adventure.text.format.NamedTextColor;
5+
import net.kyori.adventure.text.format.TextDecoration;
96
import org.bstats.bukkit.Metrics;
107
import org.bukkit.Bukkit;
11-
import org.bukkit.ChatColor;
128
import org.bukkit.command.Command;
139
import org.bukkit.command.CommandSender;
1410
import org.bukkit.entity.Player;
@@ -125,16 +121,16 @@ public boolean onCommand(final @NotNull CommandSender sender, final @NotNull Com
125121
if (sender instanceof Player) {
126122
if (cmd.getName().equalsIgnoreCase("togglechat") && getConfig().getBoolean("toggleChatEnabled", true)) {
127123
if (toggleChat((Player) sender)) {
128-
sender.sendMessage(ChatColor.RED + "Your chat is now disabled until you type /togglechat or relog.");
124+
sender.sendMessage(Component.text("Your chat is now disabled until you type /togglechat or relog.", NamedTextColor.RED));
129125
} else {
130-
sender.sendMessage(ChatColor.RED + "Your chat has been re-enabled, type /togglechat to disable it again.");
126+
sender.sendMessage(Component.text("Your chat has been re-enabled, type /togglechat to disable it again.", NamedTextColor.RED));
131127
}
132128
return true;
133129
} else if (cmd.getName().equalsIgnoreCase("toggletells")) {
134130
if (toggleTells((Player) sender)) {
135-
sender.sendMessage(ChatColor.RED + "You will no longer receive tells, type /toggletells to see them again.");
131+
sender.sendMessage(Component.text("You will no longer receive tells, type /toggletells to see them again.", NamedTextColor.RED));
136132
} else {
137-
sender.sendMessage(ChatColor.RED + "You now receive tells, type /toggletells to disable them again.");
133+
sender.sendMessage(Component.text("You now receive tells, type /toggletells to disable them again.", NamedTextColor.RED));
138134
}
139135
return true;
140136
} else if (cmd.getName().equalsIgnoreCase("unignoreall") && getConfig().getBoolean("ignoresEnabled", true)) {
@@ -147,19 +143,19 @@ public boolean onCommand(final @NotNull CommandSender sender, final @NotNull Com
147143
} else if (cmd.getName().equalsIgnoreCase("ignore") && getConfig().getBoolean("ignoresEnabled", true)) {
148144
try {
149145
if (args.length < 1) {
150-
sender.sendMessage(ChatColor.RED + "You forgot to type the name of the player.");
146+
sender.sendMessage(Component.text("You forgot to type the name of the player.", NamedTextColor.RED));
151147
return true;
152148
}
153149

154150
if (args[0].length() > 16) {
155-
sender.sendMessage(ChatColor.RED + "You entered an invalid player name.");
151+
sender.sendMessage(Component.text("You entered an invalid player name.", NamedTextColor.RED));
156152
return true;
157153
}
158154

159155
final Player ignorable = Bukkit.getServer().getPlayer(args[0]);
160156

161157
if (ignorable == null) {
162-
sender.sendMessage(ChatColor.RED + "You have entered a player who does not exist or is offline.");
158+
sender.sendMessage(Component.text("You have entered a player who does not exist or is offline.", NamedTextColor.RED));
163159
return true;
164160
}
165161

@@ -169,15 +165,16 @@ public boolean onCommand(final @NotNull CommandSender sender, final @NotNull Com
169165
e.printStackTrace();
170166
}
171167
} else if (cmd.getName().equalsIgnoreCase("ignorelist") && getConfig().getBoolean("ignoresEnabled", true)) {
172-
sender.sendMessage(ChatColor.YELLOW + "Ignored players:");
168+
sender.sendMessage(Component.text("Ignored players:", NamedTextColor.YELLOW));
173169
int i = 0;
174170

175-
for (final String ignores : getChatPlayer((Player) sender).getIgnoreList()) {
176-
sender.sendMessage(ChatColor.YELLOW + "" + ChatColor.ITALIC + ignores);
171+
for (final String ignores : getChatPlayer((Player) sender).getIgnoresFile()) {
172+
sender.sendMessage(Component.text(ignores, NamedTextColor.YELLOW, TextDecoration.ITALIC));
173+
++i;
177174
++i;
178175
}
179176

180-
sender.sendMessage(ChatColor.YELLOW + "" + i + " players ignored.");
177+
sender.sendMessage(Component.text("You have " + i + " players ignored.", NamedTextColor.YELLOW));
181178
return true;
182179
}
183180
}
@@ -240,7 +237,7 @@ public boolean onCommand(final @NotNull CommandSender sender, final @NotNull Com
240237

241238
public ChatPlayer getChatPlayer(final Player p) {
242239
for (final ChatPlayer chatPlayer : playerList) {
243-
if (chatPlayer.playerUUID.equals(p .getUniqueId())) {
240+
if (chatPlayer.playerUUID.equals(p.getUniqueId())) {
244241
return chatPlayer;
245242
}
246243
}
@@ -274,26 +271,25 @@ private boolean toggleTells(final Player p) {
274271
}
275272

276273
private void ignorePlayer(final Player p, final String target) throws IOException {
277-
String message = ChatColor.YELLOW + "Chat messages from " + target + " will be ";
274+
Component message = Component.text("Chat messages from " + target + " will be ");
278275

279276
if (getChatPlayer(p).isIgnored(target)) {
280-
message += "shown.";
277+
message = message.append(Component.text("shown."));
281278
} else {
282-
message += "hidden.";
279+
message = message.append(Component.text("hidden."));
283280
}
284281

285-
p.sendMessage(message);
282+
p.sendMessage(message.color(NamedTextColor.YELLOW));
286283
getChatPlayer(p).saveIgnoreList(target);
287284
}
288285

289286
private void unIgnoreAll(final Player p) throws IOException {
290287
getChatPlayer(p).unIgnoreAll();
291-
String message = ChatColor.YELLOW + "Ignore list deleted.";
292-
p.sendMessage(message);
288+
p.sendMessage(Component.text("Ignore list deleted.", NamedTextColor.YELLOW));
293289
}
294290

295291
public void remove(Player player) {
296-
playerList.removeIf(p -> p.player.equals(player));
292+
playerList.removeIf(p -> p.playerUUID.equals(player.getUniqueId()));
297293
}
298294
}
299295

src/main/java/org/zeroBzeroT/chatCo/PublicChat.java

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@
1818
import org.bukkit.event.player.PlayerQuitEvent;
1919

2020
import java.io.File;
21-
22-
import static org.zeroBzeroT.chatCo.Components.mm;
21+
import java.util.Objects;
2322

2423
public class PublicChat implements Listener {
2524
public final Main plugin;
@@ -33,7 +32,7 @@ public PublicChat(final Main plugin) {
3332

3433
public String replacePrefixColors(String message, final Player player) {
3534
for (ChatColor color : ChatColor.values()) {
36-
if (plugin.getConfig().getString("ChatCo.chatPrefixes." + color.name()) != null && message.startsWith(plugin.getConfig().getString("ChatCo.chatPrefixes." + color.name()))) {
35+
if (plugin.getConfig().getString("ChatCo.chatPrefixes." + color.name()) != null && message.startsWith(Objects.requireNonNull(plugin.getConfig().getString("ChatCo.chatPrefixes." + color.name())))) {
3736

3837
// check for global or player permission
3938
if (permissionConfig.getBoolean("ChatCo.chatPrefixes." + color.name(), false) || player.hasPermission("ChatCo.chatPrefixes." + color.name())) {
@@ -50,32 +49,28 @@ public String replacePrefixColors(String message, final Player player) {
5049

5150
public String replaceInlineColors(String message, final Player player) {
5251
for (ChatColor color : ChatColor.values()) {
53-
if ((permissionConfig.getBoolean("ChatCo.chatColors." + color.name(), false) || player.hasPermission("ChatCo.chatColors." + color.name()))
54-
&& plugin.getConfig().getString("ChatCo.chatColors." + color.name()) != null) {
55-
message = message.replace(plugin.getConfig().getString("ChatCo.chatColors." + color.name()), color.toString());
52+
if ((permissionConfig.getBoolean("ChatCo.chatColors." + color.name(), false) || player.hasPermission("ChatCo.chatColors." + color.name())) && plugin.getConfig().getString("ChatCo.chatColors." + color.name()) != null) {
53+
message = message.replace(Objects.requireNonNull(plugin.getConfig().getString("ChatCo.chatColors." + color.name())), color.toString());
5654
}
5755
}
5856

5957
return message;
6058
}
6159

6260
/**
63-
* @url https://docs.advntr.dev/text.html
61+
* See <a href="https://docs.advntr.dev/text.html">Text (Chat Components)</a>
6462
*/
6563
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
6664
public void onAsyncChat(AsyncChatEvent event) {
67-
// Set format to the plain message, since the player is not needed
68-
//String oldFormat = event.getFormat();
69-
//event.setFormat("%2$s");
70-
7165
// Plain message
7266
final Player player = event.getPlayer();
67+
7368
String legacyMessage = LegacyComponentSerializer.legacyAmpersand().serialize(event.message());
7469
legacyMessage = replacePrefixColors(legacyMessage, player);
7570
legacyMessage = replaceInlineColors(legacyMessage, player);
7671

7772
// Do not send empty messages
78-
if (ChatColor.stripColor(legacyMessage).trim().isEmpty()) {
73+
if (legacyMessage.trim().isEmpty()) {
7974
event.setCancelled(true);
8075
return;
8176
}
@@ -91,12 +86,8 @@ public void onAsyncChat(AsyncChatEvent event) {
9186
sender = sender.hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, Component.text("Whisper to " + player.getName())));
9287
}
9388

94-
// Message
95-
TextComponent message = Component.text("")
96-
.append(Component.text("<"))
97-
.append(sender)
98-
.append(Component.text("> "))
99-
.append(messageText);
89+
// Build Message
90+
TextComponent message = Component.text("").append(Component.text("<")).append(sender).append(Component.text("> ")).append(messageText);
10091

10192
// Send to the players
10293
if (!plugin.getConfig().getBoolean("ChatCo.chatDisabled", false)) {
@@ -105,8 +96,7 @@ public void onAsyncChat(AsyncChatEvent event) {
10596
if (recipient instanceof Player) {
10697
ChatPlayer chatPlayer = plugin.getChatPlayer((Player) recipient);
10798

108-
if (chatPlayer.chatDisabled)
109-
continue;
99+
if (chatPlayer.chatDisabled) continue;
110100

111101
if (chatPlayer.isIgnored(player.getName()) && plugin.getConfig().getBoolean("ChatCo.ignoresEnabled", true))
112102
continue;

src/main/java/org/zeroBzeroT/chatCo/Spoilers.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public void onPlayerChat(final AsyncPlayerChatEvent event) {
3030

3131
final int Length = event.getMessage().length();
3232
final Player name = event.getPlayer();
33-
this.Spoiler[0] = "[ " + event.getMessage().substring(9, Length - 10) + " ] by R%)[".replace("R%)", ChatColor.RED.toString()) + name.getDisplayName() + "]";
33+
this.Spoiler[0] = "[ " + event.getMessage().substring(9, Length - 10) + " ] by R%)[".replace("R%)", ChatColor.RED.toString()) + name.displayName() + "]";
3434
event.setMessage(ChatColor.BLACK + "SPOILER");
3535
} else {
3636
event.setMessage(check);

src/main/java/org/zeroBzeroT/chatCo/Utils.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.zeroBzeroT.chatCo;
22

3-
import net.kyori.adventure.text.TextComponent;
4-
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
3+
import net.kyori.adventure.text.Component;
4+
import net.kyori.adventure.text.minimessage.MiniMessage;
55
import org.bukkit.entity.Player;
66

77
import java.io.File;
@@ -22,18 +22,15 @@ public class Utils {
2222
*/
2323
public static boolean isVanished(Player player) {
2424
if (player != null && player.hasMetadata("vanished") && !player.getMetadata("vanished").isEmpty()) {
25-
return player.getMetadata("vanished").get(0).asBoolean();
25+
return player.getMetadata("vanished").getFirst().asBoolean();
2626
}
2727

2828
return false;
2929
}
3030

31-
///**
32-
// * Converts a string into a single text component while retaining the old formatting
33-
// */
34-
//public static TextComponent componentFromLegacyText(String legacyText) {
35-
// return LegacyComponentSerializer.legacyAmpersand().deserialize(legacyText);
36-
//}
31+
public static Component mm(String miniMessageString) { // mm, short for MiniMessage
32+
return MiniMessage.miniMessage().deserialize(miniMessageString);
33+
}
3734

3835
/**
3936
* Saves a stream to a file

0 commit comments

Comments
 (0)