Add chat event

This commit is contained in:
Thomas Vanmellaerts
2018-09-26 13:00:43 +02:00
parent db5645f80e
commit 7598918d93
3 changed files with 107 additions and 1 deletions

View File

@@ -1,7 +1,9 @@
package com.velocitypowered.proxy.connection.client;
import com.velocitypowered.api.event.ResultedEvent;
import com.velocitypowered.api.event.connection.DisconnectEvent;
import com.velocitypowered.api.event.connection.PluginMessageEvent;
import com.velocitypowered.api.event.player.PlayerChatEvent;
import com.velocitypowered.api.proxy.messages.ChannelIdentifier;
import com.velocitypowered.proxy.VelocityServer;
import com.velocitypowered.proxy.connection.MinecraftSessionHandler;
@@ -13,8 +15,10 @@ import com.velocitypowered.proxy.protocol.packet.*;
import com.velocitypowered.proxy.protocol.util.PluginMessageUtil;
import com.velocitypowered.proxy.util.ThrowableUtils;
import io.netty.buffer.ByteBuf;
import net.kyori.text.Component;
import net.kyori.text.TextComponent;
import net.kyori.text.format.TextColor;
import net.kyori.text.serializer.ComponentSerializers;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -93,7 +97,18 @@ public class ClientPlaySessionHandler implements MinecraftSessionHandler {
return;
}
} else {
player.getConnectedServer().getMinecraftConnection().write(chat);
PlayerChatEvent event = new PlayerChatEvent(player, msg);
server.getEventManager().fire(event)
.thenAcceptAsync(pme -> {
if (pme.getResult().equals(ResultedEvent.ChatResult.allowed())){
player.getConnectedServer().getMinecraftConnection().write(chat);
} else if (pme.getResult().isAllowed() && pme.getResult().getMessage().isPresent()){
Chat modifiedChat = new Chat();
modifiedChat.setType(Chat.CHAT);
modifiedChat.setMessage(pme.getResult().getMessage().get());
player.getConnectedServer().getMinecraftConnection().write(modifiedChat);
}
}, player.getConnectedServer().getMinecraftConnection().getChannel().eventLoop());
}
return;
}