Skip to content

Commit

Permalink
Add new colorless method to Messaging
Browse files Browse the repository at this point in the history
  • Loading branch information
fullwall committed Jul 28, 2022
1 parent b9882cc commit 412fecf
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 25 deletions.
11 changes: 0 additions & 11 deletions src/main/java/net/citizensnpcs/api/ai/speech/SpeechFactory.java
@@ -1,7 +1,6 @@
package net.citizensnpcs.api.ai.speech;

import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;

/**
* SpeechFactory keeps track of and creates new VocalChord instances, necessary for NPC Speech.
Expand Down Expand Up @@ -59,16 +58,6 @@ public interface SpeechFactory {
*/
public Talkable newTalkableEntity(Entity entity);

/**
* Creates a new Talkable entity and returns it
*
* @param entity
* the livingEntity to use
*
* @return a Talkable entity
*/
public Talkable newTalkableEntity(LivingEntity entity);

/**
* Registers a {@link VocalChord} class with the SpeechController, making it available for use within. Requires a
* 'name', which should generally describe the intent of the VocalChord.
Expand Down
40 changes: 26 additions & 14 deletions src/main/java/net/citizensnpcs/api/util/Messaging.java
Expand Up @@ -100,13 +100,13 @@ public static void logTr(String key, Object... msg) {
log(Level.INFO, Translator.translate(key, msg));
}

private static void parseAndSendComponents(CommandSender sender, String message) {
private static void parseAndSendComponents(CommandSender sender, String message, String color) {
ComponentBuilder builder = new ComponentBuilder("");
Matcher m = COMPONENT_MATCHER.matcher(message);
int end = 0;
while (m.find()) {
if (m.start() != end) {
builder.append(MESSAGE_COLOUR + message.substring(end, m.start()));
builder.append(color + message.substring(end, m.start()));
}
String text = m.group(1);
String type = m.group(2);
Expand All @@ -124,7 +124,7 @@ private static void parseAndSendComponents(CommandSender sender, String message)
break;
}
if (action != null) {
text = MESSAGE_COLOUR + ChatColor.UNDERLINE + text;
text = color + ChatColor.UNDERLINE + text;
}
TextComponent tc = new TextComponent(text);
if (action != null) {
Expand All @@ -139,7 +139,7 @@ private static void parseAndSendComponents(CommandSender sender, String message)
}
}
if (end - 1 < message.length()) {
builder.append(MESSAGE_COLOUR + message.substring(end));
builder.append(color + message.substring(end));
builder.event((ClickEvent) null);
builder.event((HoverEvent) null);
builder.underlined(false);
Expand Down Expand Up @@ -167,29 +167,34 @@ private static String prettify(String message) {
}

public static void send(CommandSender sender, Object... msg) {
sendMessageTo(sender, SPACE.join(msg));
sendMessageTo(sender, SPACE.join(msg), true);
}

public static void sendColorless(CommandSender sender, Object... msg) {
sendMessageTo(sender, SPACE.join(msg), false);
}

public static void sendError(CommandSender sender, Object... msg) {
send(sender, ERROR_COLOUR + SPACE.join(msg));
}

public static void sendErrorTr(CommandSender sender, String key, Object... msg) {
sendMessageTo(sender, ChatColor.RED + Translator.translate(key, msg));
send(sender, ERROR_COLOUR + Translator.translate(key, msg));
}

private static void sendMessageTo(CommandSender sender, String rawMessage) {
private static void sendMessageTo(CommandSender sender, String rawMessage, boolean messageColor) {
if (sender instanceof Player) {
rawMessage = Placeholders.replace(rawMessage, (Player) sender);
}
rawMessage = Colorizer.parseColors(rawMessage);
boolean hasComponents = rawMessage.contains("<<");
String color = messageColor ? MESSAGE_COLOUR : "";
for (String message : CHAT_NEWLINE_SPLITTER.split(rawMessage)) {
message = prettify(message);
if (hasComponents) {
if (SUPPORTS_COMPONENTS) {
try {
parseAndSendComponents(sender, message);
parseAndSendComponents(sender, message, color);
} catch (Throwable t) {
SUPPORTS_COMPONENTS = false;
}
Expand All @@ -200,34 +205,41 @@ private static void sendMessageTo(CommandSender sender, String rawMessage) {
int end = 0;
while (m.find()) {
if (m.start() != end) {
builder.append(MESSAGE_COLOUR + message.substring(end, m.start()));
builder.append(color + message.substring(end, m.start()));
}
String text = m.group(1);
String command = m.group(3);
if (m.groupCount() > 3 && m.group(4) != null) {
text = m.group(4).substring(1);
}
String res = text + " (" + MESSAGE_COLOUR + ChatColor.UNDERLINE + command + ")";
String res = text + " (" + color + ChatColor.UNDERLINE + command + ")";
builder.append(res);
}
if (end - 1 < message.length()) {
builder.append(MESSAGE_COLOUR + message.substring(end));
builder.append(color + message.substring(end));
}
sender.sendMessage(builder.toString());
}
} else {
sender.sendMessage(message);
}
}

}

public static void sendTr(CommandSender sender, String key, Object... msg) {
sendMessageTo(sender, Translator.translate(key, msg));
sendMessageTo(sender, Translator.translate(key, msg), true);
}

public static void sendTrColorless(CommandSender sender, String key, Object... msg) {
sendMessageTo(sender, Translator.translate(key, msg), false);
}

public static void sendWithNPC(CommandSender sender, Object msg, NPC npc) {
send(sender, Placeholders.replace(msg.toString(), sender, npc));
sendMessageTo(sender, Placeholders.replace(msg.toString(), sender, npc), true);
}

public static void sendWithNPCColorless(CommandSender sender, Object msg, NPC npc) {
sendMessageTo(sender, Placeholders.replace(msg.toString(), sender, npc), false);
}

public static void severe(Object... messages) {
Expand Down

0 comments on commit 412fecf

Please sign in to comment.