Multiverse-Core/src/main/java/org/mvplugins/multiverse/core/listeners/MVChatListener.java

59 lines
1.9 KiB
Java

package org.mvplugins.multiverse.core.listeners;
import jakarta.inject.Inject;
import org.bukkit.ChatColor;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.jvnet.hk2.annotations.Service;
import org.mvplugins.multiverse.core.config.MVCoreConfig;
import org.mvplugins.multiverse.core.inject.InjectableListener;
import org.mvplugins.multiverse.core.world.WorldManager;
/**
* Multiverse's Listener for players.
*/
@Service
public class MVChatListener implements InjectableListener {
private final MVCoreConfig config;
private final WorldManager worldManager;
@Inject
MVChatListener(
MVCoreConfig config,
WorldManager worldManager,
MVPlayerListener playerListener) {
this.config = config;
this.worldManager = worldManager;
}
/**
* This handles a {@link AsyncPlayerChatEvent}.
*
* @param event The {@link AsyncPlayerChatEvent}.
*/
@EventHandler
public void asyncPlayerChat(AsyncPlayerChatEvent event) {
if (event.isCancelled()) {
return;
}
// Check whether the Server is set to prefix the chat with the World name.
// If not we do nothing, if so we need to check if the World has an Alias.
if (!config.isEnablePrefixChat()) {
return;
}
String prefix = this.worldManager.getLoadedWorld(event.getPlayer().getWorld())
.map(mvworld -> mvworld.isHidden() ? "" : mvworld.getAlias())
.getOrElse("");
String chat = event.getFormat();
String prefixChatFormat = config.getPrefixChatFormat();
prefixChatFormat = prefixChatFormat.replace("%world%", prefix).replace("%chat%", chat);
prefixChatFormat = ChatColor.translateAlternateColorCodes('&', prefixChatFormat);
event.setFormat(prefixChatFormat);
}
}