Change leave/join messages

This commit is contained in:
len 2021-05-15 12:08:29 +02:00
parent ec2377a837
commit 19bb94fa74
4 changed files with 59 additions and 17 deletions

View File

@ -69,7 +69,9 @@ public final class ServerConfig {
/** DO NOT EDIT ANYTHING ABOVE **/
public boolean GLOBALCHAT = true; // TODO change to false on release
public boolean JOINLEAVEMSSAGES = true; // TODO change to false on release
private void ServerSettings() {
GLOBALCHAT = getBoolean("global-chat-enabled", GLOBALCHAT);
JOINLEAVEMSSAGES = getBoolean("joinleave-messages-enabled", JOINLEAVEMSSAGES);
}
}

View File

@ -2,28 +2,43 @@ package com.alttd.chat.data;
import com.alttd.chat.config.ServerConfig;
import com.velocitypowered.api.proxy.server.RegisteredServer;
import net.kyori.adventure.text.Component;
public class ServerWrapper
{
private RegisteredServer registeredServer;
public class ServerWrapper {
private final RegisteredServer registeredServer;
private final String serverName;
private final boolean globalChat;
private final boolean joinMessages;
public ServerWrapper(RegisteredServer registeredServer, ServerConfig serverConfig)
{
public ServerWrapper(RegisteredServer registeredServer, ServerConfig serverConfig) {
this.registeredServer = registeredServer;
this.serverName = registeredServer.getServerInfo().getName();
this.globalChat = serverConfig.GLOBALCHAT;
this.joinMessages = serverConfig.JOINLEAVEMSSAGES;
}
public RegisteredServer getRegisteredServer() {
return registeredServer;
}
public String serverName() {
return serverName;
}
public boolean globalChat()
{
return globalChat;
}
public boolean joinMessages() {
return joinMessages;
}
public void sendJoinLeaveMessage(Component component) {
if(joinMessages())
getRegisteredServer().sendMessage(component);
}
}

View File

@ -44,4 +44,13 @@ public class ServerHandler {
{
return Collections.unmodifiableList(servers);
}
public ServerWrapper getWrapper(String serverName) {
for(ServerWrapper wrapper : getServers()) {
if(wrapper.serverName().equalsIgnoreCase(serverName)) {
return wrapper;
}
}
return null;
}
}

View File

@ -2,6 +2,8 @@ package com.alttd.chat.listeners;
import com.alttd.chat.VelocityChat;
import com.alttd.chat.config.Config;
import com.alttd.chat.data.ServerWrapper;
import com.alttd.chat.handlers.ServerHandler;
import com.alttd.chat.objects.ChatPlayer;
import com.velocitypowered.api.event.PostOrder;
import com.velocitypowered.api.event.Subscribe;
@ -18,6 +20,14 @@ import java.util.List;
public class PlayerListener {
private final ServerHandler serverHandler;
private final MiniMessage miniMessage;
public PlayerListener() {
serverHandler = VelocityChat.getPlugin().getServerHandler();
miniMessage = MiniMessage.get();
}
@Subscribe(order = PostOrder.FIRST)
public void onPlayerLogin(LoginEvent event) {
VelocityChat.getPlugin().getChatHandler().addPlayer(new ChatPlayer(event.getPlayer().getUniqueId()));
@ -31,27 +41,32 @@ public class PlayerListener {
// Server Join and Leave messages
@Subscribe
public void serverConnected(ServerConnectedEvent event) {
MiniMessage miniMessage = MiniMessage.get();
// todo optional setting to ignore this for servers?
if (event.getPreviousServer().isPresent()) {
RegisteredServer previousServer = event.getPreviousServer().get();
Player player = event.getPlayer();
List<Template> templates = new ArrayList<>(List.of(
Template.of("player", player.getUsername()),
Template.of("from_server", previousServer.getServerInfo().getName()),
Template.of("to_server", event.getServer().getServerInfo().getName())));
previousServer.sendMessage(miniMessage.parse(Config.SERVERSWTICHMESSAGETO, templates));
event.getServer().sendMessage(miniMessage.parse(Config.SERVERSWTICHMESSAGEFROM, templates));
// todo Code clean up @Destro
ServerWrapper wrapper = serverHandler.getWrapper(previousServer.getServerInfo().toString());
if(wrapper != null) {
wrapper.sendJoinLeaveMessage(miniMessage.parse(Config.SERVERSWTICHMESSAGETO, templates));
}
wrapper = serverHandler.getWrapper(event.getServer().getServerInfo().toString());
if(wrapper != null) {
wrapper.sendJoinLeaveMessage(miniMessage.parse(Config.SERVERSWTICHMESSAGEFROM, templates));
}
} else {
List<Template> templates = new ArrayList<>(List.of(
Template.of("player", event.getPlayer().getUsername())
));
event.getServer().sendMessage(miniMessage.parse(Config.SERVERJOINMESSAGE, templates));
ServerWrapper wrapper = serverHandler.getWrapper(event.getServer().getServerInfo().toString());
if(wrapper != null) {
wrapper.sendJoinLeaveMessage(miniMessage.parse(Config.SERVERJOINMESSAGE, templates));
}
}
}
@ -60,13 +75,14 @@ public class PlayerListener {
if (event.getLoginStatus().equals(DisconnectEvent.LoginStatus.SUCCESSFUL_LOGIN) && event.getPlayer().getCurrentServer().isPresent()) {
RegisteredServer registeredServer = event.getPlayer().getCurrentServer().get().getServer();
MiniMessage miniMessage = MiniMessage.get();
List<Template> templates = new ArrayList<>(List.of(
Template.of("player", event.getPlayer().getUsername()),
Template.of("from_server", registeredServer.getServerInfo().getName())));
registeredServer.sendMessage(miniMessage.parse(Config.SERVERLEAVEMESSAGE, templates));
ServerWrapper wrapper = serverHandler.getWrapper(registeredServer.getServerInfo().toString());
if(wrapper != null) {
wrapper.sendJoinLeaveMessage(miniMessage.parse(Config.SERVERJOINMESSAGE, templates));
}
}
}
}