Skip to content

Commit

Permalink
Fix custom placeholders not being used on Velocity and Paper
Browse files Browse the repository at this point in the history
  • Loading branch information
Draycia committed Jul 2, 2023
1 parent 9ab930a commit e4adb07
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,14 @@
import com.google.inject.Inject;
import io.papermc.paper.event.player.AsyncChatEvent;
import java.util.ArrayList;
import java.util.Map;
import net.draycia.carbon.api.CarbonChat;
import net.draycia.carbon.api.channels.ChannelRegistry;
import net.draycia.carbon.api.event.events.CarbonChatEvent;
import net.draycia.carbon.api.users.CarbonPlayer;
import net.draycia.carbon.api.util.KeyedRenderer;
import net.draycia.carbon.common.channels.ConfigChatChannel;
import net.draycia.carbon.common.config.ConfigFactory;
import net.draycia.carbon.common.messages.CarbonMessages;
import net.draycia.carbon.common.messaging.packets.ChatMessagePacket;
import net.draycia.carbon.paper.CarbonChatPaper;
Expand All @@ -54,12 +56,19 @@ public final class PaperChatListener implements Listener {
private final CarbonChatPaper carbonChat;
private final ChannelRegistry registry;
private final CarbonMessages carbonMessages;
final ConfigFactory configFactory;

@Inject
public PaperChatListener(final CarbonChat carbonChat, final ChannelRegistry registry, final CarbonMessages carbonMessages) {
public PaperChatListener(
final CarbonChat carbonChat,
final ChannelRegistry registry,
final CarbonMessages carbonMessages,
final ConfigFactory configFactory
) {
this.carbonChat = (CarbonChatPaper) carbonChat;
this.registry = registry;
this.carbonMessages = carbonMessages;
this.configFactory = configFactory;
}

@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
Expand All @@ -71,8 +80,14 @@ public void onPaperChat(final @NonNull AsyncChatEvent event) {
}

var channel = requireNonNullElse(sender.selectedChannel(), this.registry.defaultValue());
final var messageContents = PlainTextComponentSerializer.plainText().serialize(event.message());
Component eventMessage = ConfigChatChannel.parseMessageTags(sender, messageContents);

String content = PlainTextComponentSerializer.plainText().serialize(event.message());

for (final Map.Entry<String, String> placeholder : this.configFactory.primaryConfig().chatPlaceholders().entrySet()) {
content = content.replace(placeholder.getKey(), placeholder.getValue());
}

Component eventMessage = ConfigChatChannel.parseMessageTags(sender, content);

if (sender.hasPermission("carbon.chatlinks")) {
eventMessage = eventMessage.replaceText(URL_REPLACEMENT_CONFIG.get());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,15 @@
import com.velocitypowered.api.plugin.PluginManager;
import com.velocitypowered.api.proxy.Player;
import java.util.ArrayList;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import net.draycia.carbon.api.CarbonChat;
import net.draycia.carbon.api.channels.ChannelRegistry;
import net.draycia.carbon.api.event.events.CarbonChatEvent;
import net.draycia.carbon.api.users.CarbonPlayer;
import net.draycia.carbon.api.users.UserManager;
import net.draycia.carbon.api.util.KeyedRenderer;
import net.draycia.carbon.common.config.ConfigFactory;
import net.draycia.carbon.common.messages.CarbonMessages;
import net.draycia.carbon.velocity.CarbonChatVelocity;
import net.kyori.adventure.text.Component;
Expand All @@ -57,6 +59,7 @@ public final class VelocityChatListener {
private final AtomicInteger timesWarned = new AtomicInteger(0);
private final PluginManager pluginManager;
private final CarbonMessages carbonMessages;
final ConfigFactory configFactory;

@Inject
private VelocityChatListener(
Expand All @@ -65,14 +68,16 @@ private VelocityChatListener(
final UserManager<?> userManager,
final Logger logger,
final PluginManager pluginManager,
final CarbonMessages carbonMessages
final CarbonMessages carbonMessages,
final ConfigFactory configFactory
) {
this.carbonChat = (CarbonChatVelocity) carbonChat;
this.registry = registry;
this.userManager = userManager;
this.logger = logger;
this.pluginManager = pluginManager;
this.carbonMessages = carbonMessages;
this.configFactory = configFactory;
}

@Subscribe(order = PostOrder.LATE)
Expand Down Expand Up @@ -106,8 +111,14 @@ public void onPlayerChat(final PlayerChatEvent event) {

final CarbonPlayer sender = this.userManager.user(event.getPlayer().getUniqueId()).join();
var channel = requireNonNullElse(sender.selectedChannel(), this.registry.defaultValue());
final var originalMessage = event.getResult().getMessage().orElse(event.getMessage());
Component eventMessage = text(originalMessage);

String content = event.getResult().getMessage().orElse(event.getMessage());

for (final Map.Entry<String, String> placeholder : this.configFactory.primaryConfig().chatPlaceholders().entrySet()) {
content = content.replace(placeholder.getKey(), placeholder.getValue());
}

Component eventMessage = text(content);

if (sender.hasPermission("carbon.chatlinks")) {
eventMessage = eventMessage.replaceText(URL_REPLACEMENT_CONFIG.get());
Expand Down

0 comments on commit e4adb07

Please sign in to comment.