Reworked chat and JSON formatting to be applied in a single outgoing

packet.
This commit is contained in:
Aust1n46 2020-03-06 23:38:02 -05:00
parent 20f8f3d242
commit 1ef0b818c2
11 changed files with 210 additions and 355 deletions

View File

@ -5,7 +5,6 @@ import com.comphenix.protocol.wrappers.WrappedChatComponent;
//This class is used to create ChatMessage objects, which are used to store information about previous text components
//that were sent to the player. This is a main component in making the message remover work.
public class ChatMessage {
private WrappedChatComponent originalComponent;
private WrappedChatComponent component;
private String sender;
private String message;
@ -27,31 +26,10 @@ public class ChatMessage {
this.hash = hash;
}
public ChatMessage(String sender, String message, int hash, String format, String chat, String channel) {
this.sender = sender;
this.message = message;
this.format = format;
this.chat = chat;
this.channel = channel;
this.hash = hash;
}
public ChatMessage(WrappedChatComponent originalComponent, WrappedChatComponent component, String sender, String message, int hash) {
this.originalComponent = originalComponent;
this.component = component;
this.sender = sender;
this.message = message;
this.hash = hash;
}
public WrappedChatComponent getComponent() {
return this.component;
}
public WrappedChatComponent getOriginalComponent() {
return this.originalComponent;
}
public void setComponent(WrappedChatComponent component) {
this.component = component;
}

View File

@ -108,8 +108,9 @@ import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.Sound;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.ProtocolManager;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.utility.MinecraftReflection;
import com.comphenix.protocol.wrappers.WrappedChatComponent;
import me.clip.placeholderapi.PlaceholderAPI;
@ -119,12 +120,10 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
private LoginListener loginListener;
private SignListener signListener;
private CommandListener commandListener;
private PacketListener packetListener;
private Channel channelListener;
public static String[] playerlist;
public static String playerlist_server;
public boolean ircListen;
public ProtocolManager protocolManager;
public static ChatMessage lastChatMessage;
public static String lastJson;
public static Method messageMethod;
@ -371,16 +370,16 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
}
channelListener = new Channel();
signListener = new SignListener(this, ccInfo);
chatListener = new ChatListener(this, ccInfo);
commandListener = new CommandListener(this, ccInfo, aaInfo);
signListener = new SignListener(ccInfo);
chatListener = new ChatListener(ccInfo);
commandListener = new CommandListener(ccInfo, aaInfo);
PluginManager pluginManager = getServer().getPluginManager();
pluginManager.registerEvents(channelListener, this);
pluginManager.registerEvents(chatListener, this);
pluginManager.registerEvents(signListener, this);
pluginManager.registerEvents(commandListener, this);
loginListener = new LoginListener(this, ccInfo);
loginListener = new LoginListener(ccInfo);
pluginManager.registerEvents(loginListener, this);
this.registerPacketListeners();
this.loadNMS();
@ -524,9 +523,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
}
private void registerPacketListeners() {
this.protocolManager = ProtocolLibrary.getProtocolManager();
this.packetListener = new PacketListener(this);
this.protocolManager.addPacketListener(this.packetListener);
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketListener());
}
public static String toPlainText(Object o, Class<?> c) {
@ -779,37 +776,32 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
DataOutputStream out = new DataOutputStream(stream);
if(subchannel.equals("Chat")) {
String chatchannel = msgin.readUTF();
String chat = msgin.readUTF();
String playerName = msgin.readUTF();
String lastMessage = msgin.readUTF();
String f = msgin.readUTF();
String c = msgin.readUTF();
String json = msgin.readUTF();
String senderName = msgin.readUTF();
UUID senderUUID = UUID.fromString(msgin.readUTF());
int hash = msgin.readInt();
String consoleChat = msgin.readUTF();
String globalJSON = msgin.readUTF();
if(ccInfo.isChannel(chatchannel) && ccInfo.getChannelInfo(chatchannel).getBungee()) {
MineverseChat.lastChatMessage = new ChatMessage(playerName, lastMessage, lastMessage.hashCode(), f, c, chatchannel);
lastJson = json;
Bukkit.getConsoleSender().sendMessage(chat);
MineverseChatPlayer sender = MineverseChatAPI.getMineverseChatPlayer(playerName);
Bukkit.getConsoleSender().sendMessage(consoleChat);
for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
//System.out.println(p.getName() + " received chat message");
if(p.isOnline() && p.getListening().contains(ccInfo.getChannelInfo(chatchannel).getName())) {
if(!p.getBungeeToggle() && MineverseChatAPI.getOnlineMineverseChatPlayer(playerName) == null) {
System.out.println(p.getName() + " received chat message");
if(p.getListening().contains(ccInfo.getChannelInfo(chatchannel).getName())) {
if(!p.getBungeeToggle() && MineverseChatAPI.getOnlineMineverseChatPlayer(senderName) == null) {
continue;
}
String json = Format.formatModerationGUI(globalJSON, p.getPlayer(), senderName, chatchannel, hash);
WrappedChatComponent chatComponent = WrappedChatComponent.fromJson(json);
PacketContainer packet = Format.createPacketPlayOutChat(chatComponent);
if(plugin.getConfig().getBoolean("ignorechat", false)) {
// System.out.println(p.getIgnores());
if(sender == null) {
// System.out.println("null sender");
p.getPlayer().sendMessage(chat);
continue;
}
if(!p.getIgnores().contains(sender.getUUID())) {
if(!p.getIgnores().contains(senderUUID)) {
// System.out.println("Chat sent");
p.getPlayer().sendMessage(chat);
Format.sendPacketPlayOutChat(p.getPlayer(), packet);
}
continue;
}
p.getPlayer().sendMessage(chat);
Format.sendPacketPlayOutChat(p.getPlayer(), packet);
}
}
}

View File

@ -153,20 +153,18 @@ public class MineverseChatBungee extends Plugin implements Listener {
DataOutputStream out = new DataOutputStream(outstream);
if(subchannel.equals("Chat")) {
String chatchannel = in.readUTF();
String message = in.readUTF();
String playerName = in.readUTF();
String senderName = in.readUTF();
String senderUUID = in.readUTF();
boolean bungeeToggle = in.readBoolean();
String lastMessage = in.readUTF();
String f = in.readUTF();
String c = in.readUTF();
int hash = in.readInt();
String consoleChat = in.readUTF();
String json = in.readUTF();
out.writeUTF("Chat");
out.writeUTF(chatchannel);
out.writeUTF(message);
out.writeUTF(playerName);
out.writeUTF(lastMessage);
out.writeUTF(f);
out.writeUTF(c);
out.writeUTF(senderName);
out.writeUTF(senderUUID);
out.writeInt(hash);
out.writeUTF(consoleChat);
out.writeUTF(json);
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {

View File

@ -10,7 +10,6 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.wrappers.WrappedChatComponent;
@ -21,13 +20,12 @@ import mineverse.Aust1n46.chat.command.MineverseCommand;
import mineverse.Aust1n46.chat.utilities.Format;
public class Edit extends MineverseCommand {
private PacketContainer emptyLinePacketContainer = createPacketPlayOutChat(WrappedChatComponent.fromJson("{\"extra\":[\" \"],\"text\":\"\"}"));
private MineverseChat plugin;
private PacketContainer emptyLinePacketContainer = Format.createPacketPlayOutChat(WrappedChatComponent.fromJson("{\"extra\":[\" \"],\"text\":\"\"}"));
private MineverseChat plugin = MineverseChat.getInstance();
private WrappedChatComponent messageDeletedComponentPlayer;
public Edit(String name) {
super(name);
this.plugin = MineverseChat.getInstance();
}
@Override
@ -60,7 +58,7 @@ public class Edit extends MineverseCommand {
WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Edit.this.getMessageDeletedChatComponentAdmin(message) : Edit.this.getMessageDeletedChatComponentPlayer();
message.setComponent(removedComponent);
message.setHash(-1);
playerPackets.add(Edit.this.createPacketPlayOutChat(removedComponent));
playerPackets.add(Format.createPacketPlayOutChat(removedComponent));
resend = true;
continue;
}
@ -70,12 +68,12 @@ public class Edit extends MineverseCommand {
WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Edit.this.getMessageDeletedChatComponentAdmin(message) : Edit.this.getMessageDeletedChatComponentPlayer();
message.setComponent(removedComponent);
message.setHash(-1);
playerPackets.add(Edit.this.createPacketPlayOutChat(removedComponent));
playerPackets.add(Format.createPacketPlayOutChat(removedComponent));
resend = true;
continue;
}
}
playerPackets.add(Edit.this.createPacketPlayOutChat(message.getComponent()));
playerPackets.add(Format.createPacketPlayOutChat(message.getComponent()));
}
if(resend) {
packets.put(p.getPlayer(), playerPackets);
@ -86,7 +84,7 @@ public class Edit extends MineverseCommand {
for(Player p : packets.keySet()) {
List<PacketContainer> pPackets = packets.get(p);
for(PacketContainer c : pPackets) {
Edit.this.sendPacketPlayOutChat(p, c);
Format.sendPacketPlayOutChat(p, c);
}
}
}
@ -95,21 +93,6 @@ public class Edit extends MineverseCommand {
}.runTaskAsynchronously(plugin);
}
private PacketContainer createPacketPlayOutChat(WrappedChatComponent component) {
PacketContainer container = new PacketContainer(PacketType.Play.Server.CHAT);
container.getChatComponents().write(0, component);
return container;
}
private void sendPacketPlayOutChat(Player player, PacketContainer packet) {
try {
plugin.protocolManager.sendServerPacket(player, packet);
}
catch(Exception e) {
e.printStackTrace();
}
}
public WrappedChatComponent getMessageDeletedChatComponentPlayer() {
if(this.messageDeletedComponentPlayer == null) {
this.messageDeletedComponentPlayer = WrappedChatComponent.fromJson("{\"text\":\"\",\"extra\":[{\"text\":\"<message removed>\",\"color\":\"red\",\"italic\":\"true\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremoverpermissions")) + "\"}]}}}]}");
@ -118,7 +101,7 @@ public class Edit extends MineverseCommand {
}
public WrappedChatComponent getMessageDeletedChatComponentAdmin(ChatMessage message) {
String oMessage = message.getOriginalComponent().getJson().substring(1, message.getOriginalComponent().getJson().length() - 11);
String oMessage = message.getComponent().getJson().substring(1, message.getComponent().getJson().length() - 11);
if(message.getMessage().contains(Format.FormatStringAll(plugin.getConfig().getString("messageremovericon")))) {
oMessage = oMessage.substring(0, oMessage.length() - plugin.getConfig().getString("messageremovericon").length() - 4) + "\"}]";
}

View File

@ -11,22 +11,18 @@ import mineverse.Aust1n46.chat.ChatMessage;
import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
import mineverse.Aust1n46.chat.command.MineverseCommand;
//import mineverse.Aust1n46.chat.json.JsonButton;
import mineverse.Aust1n46.chat.utilities.Format;
import mineverse.Aust1n46.chat.versions.VersionHandler;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.wrappers.EnumWrappers.ChatType;
import com.comphenix.protocol.wrappers.WrappedChatComponent;
public class Removemessage extends MineverseCommand {
private PacketContainer emptyLinePacketContainer = createPacketPlayOutChat(WrappedChatComponent.fromJson("{\"extra\":[\" \"],\"text\":\"\"}"));
private PacketContainer emptyLinePacketContainer = Format.createPacketPlayOutChat(WrappedChatComponent.fromJson("{\"extra\":[\" \"],\"text\":\"\"}"));
private MineverseChat plugin;
private WrappedChatComponent messageDeletedComponentPlayer;
@ -76,12 +72,11 @@ public class Removemessage extends MineverseCommand {
playerPackets.add(Removemessage.this.emptyLinePacketContainer);
}
for(ChatMessage message : messages) {
//System.out.println(message.getMessage() + " remover test");
if(message.getHash() == hash) {
WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
message.setComponent(removedComponent);
message.setHash(-1);
playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
playerPackets.add(Format.createPacketPlayOutChat(removedComponent));
resend = true;
continue;
}
@ -91,58 +86,12 @@ public class Removemessage extends MineverseCommand {
WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
message.setComponent(removedComponent);
message.setHash(-1);
playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
playerPackets.add(Format.createPacketPlayOutChat(removedComponent));
resend = true;
continue;
}
}
/*if(message.getMessage().contains(Format.FormatStringAll(plugin.getConfig().getString("messageremovericon")))) {
String submessage = message.getMessage().substring(0, message.getMessage().length() - plugin.getConfig().getString("messageremovericon").length() - 1).replaceAll("(§([a-z0-9]))", "");
if(submessage.hashCode() == hash) {
WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
message.setComponent(removedComponent);
message.setHash(-1);
playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
resend = true;
continue;
}
int cut = 0;
for(JsonButton b : MineverseChat.jbInfo.getJsonButtons()) {
if(b.hasPermission() && p.getPlayer().hasPermission(b.getPermission())) {
cut += b.getIcon().length() - 1;
}
}
submessage = submessage.substring(0, submessage.length() - cut).replaceAll("(§([a-z0-9]))", "");
//System.out.println(submessage + " submess");
if(submessage.hashCode() == hash) {
WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
message.setComponent(removedComponent);
message.setHash(-1);
playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
resend = true;
continue;
}
}
int cut = 0;
for(JsonButton b : MineverseChat.jbInfo.getJsonButtons()) {
if(b.hasPermission() && p.getPlayer().hasPermission(b.getPermission()) && message.getMessage().contains(b.getIcon())) {
cut += b.getIcon().length() - 1;
}
}
String submessage = message.getMessage().replaceAll("(§([a-z0-9]))", "");
//System.out.println(submessage + " " + submessage.length());
submessage = submessage.substring(0, submessage.length() - cut);
//System.out.println(submessage);
if(submessage.hashCode() == hash) {
WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
message.setComponent(removedComponent);
message.setHash(-1);
playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
resend = true;
continue;
}*/
//System.out.println(message.getComponent().getJson());
playerPackets.add(Removemessage.this.createPacketPlayOutChat(message.getComponent()));
playerPackets.add(Format.createPacketPlayOutChat(message.getComponent()));
}
if(resend) {
@ -154,7 +103,7 @@ public class Removemessage extends MineverseCommand {
for(Player p : packets.keySet()) {
List<PacketContainer> pPackets = packets.get(p);
for(PacketContainer c : pPackets) {
Removemessage.this.sendPacketPlayOutChat(p, c);
Format.sendPacketPlayOutChat(p, c);
}
}
}
@ -164,34 +113,15 @@ public class Removemessage extends MineverseCommand {
}
}
private PacketContainer createPacketPlayOutChat(WrappedChatComponent component) {
PacketContainer container = new PacketContainer(PacketType.Play.Server.CHAT);
container.getChatComponents().write(0, component);
if(!VersionHandler.is1_7_10() && !VersionHandler.is1_8() && !VersionHandler.is1_9() && !VersionHandler.is1_10() && !VersionHandler.is1_11()) {
container.getChatTypes().write(0, ChatType.CHAT);
}
return container;
}
private void sendPacketPlayOutChat(Player player, PacketContainer packet) {
try {
plugin.protocolManager.sendServerPacket(player, packet);
}
catch(Exception e) {
e.printStackTrace();
}
}
public WrappedChatComponent getMessageDeletedChatComponentPlayer() {
if(this.messageDeletedComponentPlayer == null) {
//this.messageDeletedComponentPlayer = WrappedChatComponent.fromJson("{\"text\":\"\",\"extra\":[{\"text\":\"<message removed>\",\"color\":\"red\",\"italic\":\"true\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremoverpermissions")) + "\"}]}}}]}");
this.messageDeletedComponentPlayer = WrappedChatComponent.fromJson("{\"text\":\"\",\"extra\":[{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremovertext")) + "\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremoverpermissions")) + "\"}]}}}]}");
}
return this.messageDeletedComponentPlayer;
}
public WrappedChatComponent getMessageDeletedChatComponentAdmin(ChatMessage message) {
String oMessage = message.getOriginalComponent().getJson().substring(1, message.getOriginalComponent().getJson().length() - 11);
String oMessage = message.getComponent().getJson().substring(1, message.getComponent().getJson().length() - 11);
if(message.getMessage().contains(ChatColor.stripColor(Format.FormatStringAll(plugin.getConfig().getString("guiicon"))))) {
oMessage = oMessage.substring(0, oMessage.length() - ChatColor.stripColor(Format.FormatStringAll(plugin.getConfig().getString("guiicon"))).length() - 3) + "\"}]";
}

View File

@ -2,6 +2,7 @@ package mineverse.Aust1n46.chat.listeners;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.SQLException;
import java.sql.Statement;
@ -24,6 +25,10 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.messaging.PluginMessageRecipient;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.wrappers.WrappedChatComponent;
import com.massivecraft.factions.entity.MPlayer;
import com.palmergames.bukkit.towny.object.Resident;
import com.palmergames.bukkit.towny.object.TownyUniverse;
@ -51,12 +56,8 @@ public class ChatListener implements Listener {
private MineverseChat plugin;
private ChatChannelInfo cc;
public ChatListener(MineverseChat plugin) {
this.plugin = plugin;
}
public ChatListener(MineverseChat plugin, ChatChannelInfo cc) {
this.plugin = plugin;
public ChatListener(ChatChannelInfo cc) {
this.plugin = MineverseChat.getInstance();
this.cc = cc;
}
@ -83,7 +84,8 @@ public class ChatListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST)
public void onAsyncPlayerChatEvent(AsyncPlayerChatEvent event) {
boolean bungee = false;
String evMessage;
String chat;
String format;
if(event.isCancelled()) {
return;
}
@ -93,6 +95,7 @@ public class ChatListener implements Listener {
mcp.getPlayer().sendMessage(Format.FormatStringAll(event.getMessage()));
mcp.setEditing(false);
event.setCancelled(true);
return;
}
if(mcp.isQuickChat()) {
eventChannel = mcp.getQuickChannel();
@ -247,7 +250,7 @@ public class ChatListener implements Listener {
if(p.isOnline() && event.getMessage().startsWith("@" + p.getPlayer().getDisplayName().replace("§r", ""))) {
int add = 0;
if(p.getPlayer().getDisplayName().contains("§r")) add = 2;
String format = event.getMessage().substring(p.getPlayer().getDisplayName().length() + 1 - add);
String messageFormat = event.getMessage().substring(p.getPlayer().getDisplayName().length() + 1 - add);
if(event.getMessage().length() <= p.getPlayer().getDisplayName().length() + 1 - add) {
mcp.getPlayer().sendMessage(ChatColor.RED + "You must include a message.");
event.setCancelled(true);
@ -274,31 +277,31 @@ public class ChatListener implements Listener {
mcp.getPlayer().sendMessage(ChatColor.GOLD + p.getPlayer().getDisplayName() + " is currently afk and might be unable to chat at this time.");
}
if(mcp.hasFilter()) {
format = cc.FilterChat(format);
messageFormat = cc.FilterChat(messageFormat);
}
if(mcp.getPlayer().hasPermission("venturechat.color")) {
format = Format.FormatStringColor(format);
messageFormat = Format.FormatStringColor(messageFormat);
}
if(mcp.getPlayer().hasPermission("venturechat.format")) {
format = Format.FormatString(format);
messageFormat = Format.FormatString(messageFormat);
}
if(plugin.getConfig().getString("tellformatto").equalsIgnoreCase("Default")) {
echo = "You message " + p.getPlayer().getDisplayName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format;
echo = "You message " + p.getPlayer().getDisplayName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat;
}
else {
echo = Format.FormatStringAll(plugin.getConfig().getString("tellformatto").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + format;
echo = Format.FormatStringAll(plugin.getConfig().getString("tellformatto").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + messageFormat;
}
if(plugin.getConfig().getString("tellformatfrom").equalsIgnoreCase("Default")) {
send = mcp.getPlayer().getDisplayName() + " messages you:" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format;
send = mcp.getPlayer().getDisplayName() + " messages you:" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat;
}
else {
send = Format.FormatStringAll(plugin.getConfig().getString("tellformatfrom").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + format;
send = Format.FormatStringAll(plugin.getConfig().getString("tellformatfrom").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + messageFormat;
}
if(plugin.getConfig().getString("tellformatspy").equalsIgnoreCase("Default")) {
spy = p.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format;
spy = p.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat;
}
else {
spy = Format.FormatStringAll(plugin.getConfig().getString("tellformatspy").replace("{playerto}", p.getName()).replace("{playerfrom}", mcp.getName())) + format;
spy = Format.FormatStringAll(plugin.getConfig().getString("tellformatspy").replace("{playerto}", p.getName()).replace("{playerfrom}", mcp.getName())) + messageFormat;
}
for(MineverseChatPlayer sp : MineverseChat.onlinePlayers) {
if(sp.isSpy()) {
@ -318,12 +321,12 @@ public class ChatListener implements Listener {
}
p.setReplyPlayer(mcp.getUUID());
mcp.setReplyPlayer(p.getUUID());
Bukkit.getConsoleSender().sendMessage(mcp.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format);
Bukkit.getConsoleSender().sendMessage(mcp.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat);
event.setCancelled(true);
return;
}
if(event.getMessage().startsWith("@" + p.getName())) {
String format = event.getMessage().substring(p.getName().length() + 1);
String messageFormat = event.getMessage().substring(p.getName().length() + 1);
if(event.getMessage().length() <= p.getName().length() + 1) {
mcp.getPlayer().sendMessage(ChatColor.RED + "You must include a message.");
event.setCancelled(true);
@ -349,31 +352,31 @@ public class ChatListener implements Listener {
mcp.getPlayer().sendMessage(ChatColor.GOLD + p.getPlayer().getDisplayName() + " is currently afk and might be unable to chat at this time.");
}
if(mcp.hasFilter()) {
format = cc.FilterChat(format);
messageFormat = cc.FilterChat(messageFormat);
}
if(mcp.getPlayer().hasPermission("venturechat.color")) {
format = Format.FormatStringColor(format);
messageFormat = Format.FormatStringColor(messageFormat);
}
if(mcp.getPlayer().hasPermission("venturechat.format")) {
format = Format.FormatString(format);
messageFormat = Format.FormatString(messageFormat);
}
if(plugin.getConfig().getString("tellformatto").equalsIgnoreCase("Default")) {
echo = "You message " + p.getNickname() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format;
echo = "You message " + p.getNickname() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat;
}
else {
echo = Format.FormatStringAll(plugin.getConfig().getString("tellformatto").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + format;
echo = Format.FormatStringAll(plugin.getConfig().getString("tellformatto").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + messageFormat;
}
if(plugin.getConfig().getString("tellformatfrom").equalsIgnoreCase("Default")) {
send = mcp.getNickname() + " messages you:" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format;
send = mcp.getNickname() + " messages you:" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat;
}
else {
send = Format.FormatStringAll(plugin.getConfig().getString("tellformatfrom").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + format;
send = Format.FormatStringAll(plugin.getConfig().getString("tellformatfrom").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + messageFormat;
}
if(plugin.getConfig().getString("tellformatspy").equalsIgnoreCase("Default")) {
spy = mcp.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format;
spy = mcp.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat;
}
else {
spy = Format.FormatStringAll(plugin.getConfig().getString("tellformatspy").replace("{playerto}", p.getName()).replace("{playerfrom}", mcp.getName())) + format;
spy = Format.FormatStringAll(plugin.getConfig().getString("tellformatspy").replace("{playerto}", p.getName()).replace("{playerfrom}", mcp.getName())) + messageFormat;
}
for(MineverseChatPlayer sp : MineverseChat.onlinePlayers) {
if(sp.isSpy()) {
@ -392,13 +395,13 @@ public class ChatListener implements Listener {
}
p.setReplyPlayer(mcp.getUUID());
mcp.setReplyPlayer(p.getUUID());
Bukkit.getConsoleSender().sendMessage(mcp.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format);
Bukkit.getConsoleSender().sendMessage(mcp.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat);
event.setCancelled(true);
return;
}
}
}
evMessage = event.getMessage();
chat = event.getMessage();
Location locreceip;
Location locsender = mcp.getPlayer().getLocation();
Location diff;
@ -430,7 +433,6 @@ public class ChatListener implements Listener {
Double chDistance = (double) 0;
int chCooldown = 0;
String curColor = "";
String Channelformat;
boolean irc = false;
if(eventChannel.hasPermission() && !mcp.getPlayer().hasPermission(eventChannel.getPermission())) {
mcp.getPlayer().sendMessage(ChatColor.RED + "You do not have permission for this channel.");
@ -469,7 +471,7 @@ public class ChatListener implements Listener {
return;
}
}
if(eventChannel.hasCooldown() && !event.isCancelled()) {
if(eventChannel.hasCooldown()) {
if(!mcp.getPlayer().hasPermission("venturechat.cooldown.bypass")) {
mcp.addCooldown(eventChannel, time + chCooldown);
}
@ -499,6 +501,7 @@ public class ChatListener implements Listener {
mcp.getPlayer().sendMessage(ChatColor.RED + "You have been muted for spamming in: " + ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + eventChannel.getName() + timedmute);
mcp.setQuickChat(false);
event.setCancelled(true);
return;
}
else {
if(spamtimeconfig % 2 != 0) spamtimeconfig++;
@ -527,23 +530,23 @@ public class ChatListener implements Listener {
}
if(plugin.getConfig().getConfigurationSection("channels." + eventChannel.getName()).getString("format").equalsIgnoreCase("Default")) {
if(curColor.equalsIgnoreCase("None")) {
Channelformat = FormatTags.ChatFormat(ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + "[" + eventChannel.getName() + "] {prefix}{name}" + ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + ":", mcp.getPlayer(), plugin, cc, eventChannel, plugin.getConfig().getBoolean("jsonFormat"));
format = FormatTags.ChatFormat(ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + "[" + eventChannel.getName() + "] {prefix}{name}" + ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + ":", mcp.getPlayer(), plugin, cc, eventChannel, plugin.getConfig().getBoolean("jsonFormat"));
}
else {
Channelformat = FormatTags.ChatFormat(ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + "[" + eventChannel.getName() + "] {prefix}{name}" + ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + ":" + ChatColor.valueOf(eventChannel.getChatColor().toUpperCase()), mcp.getPlayer(), plugin, cc, eventChannel, plugin.getConfig().getBoolean("jsonFormat"));
format = FormatTags.ChatFormat(ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + "[" + eventChannel.getName() + "] {prefix}{name}" + ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + ":" + ChatColor.valueOf(eventChannel.getChatColor().toUpperCase()), mcp.getPlayer(), plugin, cc, eventChannel, plugin.getConfig().getBoolean("jsonFormat"));
}
}
else {
Channelformat = FormatTags.ChatFormat(plugin.getConfig().getConfigurationSection("channels." + eventChannel.getName()).getString("format"), mcp.getPlayer(), plugin, cc, eventChannel, plugin.getConfig().getBoolean("jsonFormat"));
format = FormatTags.ChatFormat(plugin.getConfig().getConfigurationSection("channels." + eventChannel.getName()).getString("format"), mcp.getPlayer(), plugin, cc, eventChannel, plugin.getConfig().getBoolean("jsonFormat"));
if(plugin.getConfig().getBoolean("formatcleaner", false)) {
Channelformat = Channelformat.replace("[]", " ");
Channelformat = Channelformat.replace(" ", " ").replace(" ", " ").replace(" ", " ");
format = format.replace("[]", " ");
format = format.replace(" ", " ").replace(" ", " ").replace(" ", " ");
}
}
filterthis = eventChannel.isFiltered();
if(filterthis) {
if(mcp.hasFilter()) {
evMessage = cc.FilterChat(evMessage);
chat = cc.FilterChat(chat);
}
}
Player[] pl = event.getRecipients().toArray(new Player[0]);
@ -647,110 +650,96 @@ public class ChatListener implements Listener {
}
}
if(!mcp.getPlayer().canSee(p.getPlayer())) {
event.getRecipients().remove(p.getPlayer());
recipientSize--;
continue;
}
}
}
if(recipientSize == 1 && !bungee && !event.isCancelled()) {
if(!plugin.getConfig().getString("emptychannelalert", "&6No one is listening to you.").equals(""))
if(recipientSize == 1 && !bungee) {
if(!plugin.getConfig().getString("emptychannelalert", "&6No one is listening to you.").equals("")) {
mcp.getPlayer().sendMessage(Format.FormatStringAll(plugin.getConfig().getString("emptychannelalert", "&6No one is listening to you.")));
}
try {
if(mcp.getPlayer().hasPermission("venturechat.color")) {
evMessage = Format.FormatStringColor(evMessage);
}
if(mcp.getPlayer().hasPermission("venturechat.format")) {
evMessage = Format.FormatString(evMessage);
}
if(!mcp.isQuickChat()) {
evMessage = " " + evMessage;
}
if(curColor.equalsIgnoreCase("None")) {
event.setMessage(evMessage);
}
else {
event.setMessage(ChatColor.valueOf(curColor) + evMessage);
}
mcp.setQuickChat(false);
String message = String.format(Channelformat + "%s", new Object[] { event.getMessage() });
event.setFormat(message.replace("%", "%%"));
message = message.replaceAll("(§([a-z0-9]))", "");
String format = Channelformat;
String chat = event.getMessage();
if(curColor.equalsIgnoreCase("None")) {
chat = Format.getLastCode(format) + chat;
event.setMessage(chat);
}
MineverseChat.lastChatMessage = new ChatMessage(mcp.getPlayer().getName(), message, message.hashCode(), format, chat, eventChannel.getName());
MineverseChat.lastJson = Format.convertToJson(MineverseChat.lastChatMessage);
/* Temp disabled for 1.14
* ChatMessageEvent chatMessageEvent = new ChatMessageEvent(mcp, eventChannel, bungee, MineverseChat.lastChatMessage, MineverseChat.lastJson);
Bukkit.getServer().getPluginManager().callEvent(chatMessageEvent);
*/
if(plugin.mysql) {
Statement statement;
currentDate = Calendar.getInstance();
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = formatter.format(currentDate.getTime());
try {
statement = plugin.c.createStatement();
statement.executeUpdate("INSERT INTO `VentureChat` (`ChatTime`, `UUID`, `Name`, `Server`, `Channel`, `Text`, `Type`) VALUES ('" + date + "', '" + mcp.getUUID().toString() + "', '" + mcp.getName() + "', '" + plugin.getServer().getName() + "', '" + eventChannel.getName() + "', '" + event.getMessage().replace("'", "''") + "', 'Chat');");
}
catch(SQLException e) {
e.printStackTrace();
}
}
if(bungee && !event.isCancelled()) {
message = String.format(Channelformat + event.getMessage(), new Object[] { event.getPlayer().getDisplayName(), event.getMessage() }).replaceAll("(§([a-z0-9]))", "");
format = String.format(Channelformat, new Object[] { event.getPlayer().getDisplayName() });
chat = event.getMessage();
//MineverseChat.lastChatMessage = new ChatMessage(mcp.getPlayer().getName(), message, message.hashCode(), format, chat, eventChannel.getName());
//MineverseChat.lastJson = Format.convertToJson(MineverseChat.lastChatMessage);
event.setCancelled(true);
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(byteOutStream);
try {
out.writeUTF("Chat");
out.writeUTF(eventChannel.getName());
out.writeUTF(Channelformat + event.getMessage());
out.writeUTF(mcp.getName());
out.writeBoolean(mcp.getBungeeToggle());
out.writeUTF(message);
out.writeUTF(format);
out.writeUTF(chat);
if(plugin.getConfig().getString("loglevel", "info").equals("debug")) {
System.out.println(out.size() + " size bytes without json");
}
out.writeUTF(MineverseChat.lastJson);
if(plugin.getConfig().getString("loglevel", "info").equals("debug")) {
System.out.println(out.size() + " bytes size with json");
}
mcp.getPlayer().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray());
//PluginMessageRecipient test = (PluginMessageRecipient) mcp.getPlayer();
//System.out.println("Listening plugin channels?");
//System.out.println(test.getListeningPluginChannels());
//System.out.println("PluginMessageRecipient methods?");
//for(Method m : test.getClass().getMethods()) {
//System.out.println(m.getName());
//}
out.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
}
catch(IllegalFormatException ex) {
// plugin.getLogger().log(Level.INFO,
// "Message Format issue: {0}:{1}", new Object[] { ex.getMessage(),
// evMessage });
event.setMessage(Channelformat + evMessage);
if(mcp.getPlayer().hasPermission("venturechat.color")) {
chat = Format.FormatStringColor(chat);
}
if(mcp.getPlayer().hasPermission("venturechat.format")) {
chat = Format.FormatString(chat);
}
if(!mcp.isQuickChat()) {
chat = " " + chat;
}
mcp.setQuickChat(false);
if(curColor.equalsIgnoreCase("None")) {
chat = Format.getLastCode(format) + chat;
}
else {
chat = ChatColor.valueOf(curColor) + chat;
}
String globalJSON = Format.convertToJson(mcp, format, chat);
String consoleChat = format + chat;
String message = consoleChat.replaceAll("(§([a-z0-9]))", "");
/* Temp disabled for 1.14
* ChatMessageEvent chatMessageEvent = new ChatMessageEvent(mcp, eventChannel, bungee, MineverseChat.lastChatMessage, MineverseChat.lastJson);
Bukkit.getServer().getPluginManager().callEvent(chatMessageEvent);
*/
if(plugin.mysql) {
Statement statement;
currentDate = Calendar.getInstance();
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = formatter.format(currentDate.getTime());
try {
statement = plugin.c.createStatement();
statement.executeUpdate("INSERT INTO `VentureChat` (`ChatTime`, `UUID`, `Name`, `Server`, `Channel`, `Text`, `Type`) VALUES ('" + date + "', '" + mcp.getUUID().toString() + "', '" + mcp.getName() + "', '" + plugin.getServer().getName() + "', '" + eventChannel.getName() + "', '" + event.getMessage().replace("'", "''") + "', 'Chat');");
}
catch(SQLException e) {
e.printStackTrace();
}
}
if(!bungee) {
for(Player p : event.getRecipients()) {
String json = Format.formatModerationGUI(globalJSON, p, mcp.getName(), eventChannel.getName(), message.hashCode());
WrappedChatComponent chatComponent = WrappedChatComponent.fromJson(json);
PacketContainer packet = Format.createPacketPlayOutChat(chatComponent);
Format.sendPacketPlayOutChat(p, packet);
}
Bukkit.getConsoleSender().sendMessage(consoleChat);
event.setCancelled(true);
return;
}
else {
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(byteOutStream);
try {
out.writeUTF("Chat");
out.writeUTF(eventChannel.getName());
out.writeUTF(mcp.getName());
out.writeUTF(mcp.getUUID().toString());
out.writeBoolean(mcp.getBungeeToggle());
out.writeInt(message.hashCode());
out.writeUTF(consoleChat);
if(plugin.getConfig().getString("loglevel", "info").equals("debug")) {
System.out.println(out.size() + " size bytes without json");
}
out.writeUTF(globalJSON);
if(plugin.getConfig().getString("loglevel", "info").equals("debug")) {
System.out.println(out.size() + " bytes size with json");
}
mcp.getPlayer().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray());
out.close();
}
catch(Exception e) {
e.printStackTrace();
}
event.setCancelled(true);
return;
}
}
}

View File

@ -38,12 +38,11 @@ import me.clip.placeholderapi.PlaceholderAPI;
//This class listens for commands (Any chat that begins with a /) to use in the command spy and
//in the custom commands such as aliases.
public class CommandListener implements CommandExecutor, Listener {
private MineverseChat plugin;
private MineverseChat plugin = MineverseChat.getInstance();
private ChatChannelInfo cc;
private AliasInfo aa;
public CommandListener(MineverseChat plugin, ChatChannelInfo cc, AliasInfo aa) {
this.plugin = plugin;
public CommandListener(ChatChannelInfo cc, AliasInfo aa) {
this.cc = cc;
this.aa = aa;
}

View File

@ -30,12 +30,11 @@ import org.bukkit.event.player.PlayerQuitEvent;
//This class listens for when Players login or logout and manages their wrapped MineverseChatPlayer
//and it's data.
public class LoginListener implements Listener {
private MineverseChat plugin;
private MineverseChat plugin = MineverseChat.getInstance();
private ChatChannelInfo cc;
private FileConfiguration playerData = PlayerData.getPlayerData();
public LoginListener(MineverseChat plugin, ChatChannelInfo cc) {
this.plugin = plugin;
public LoginListener(ChatChannelInfo cc) {
this.cc = cc;
}

View File

@ -1,16 +1,9 @@
package mineverse.Aust1n46.chat.listeners;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import mineverse.Aust1n46.chat.ChatMessage;
import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
import mineverse.Aust1n46.chat.utilities.Format;
import mineverse.Aust1n46.chat.versions.VersionHandler;
import com.comphenix.protocol.PacketType;
@ -23,9 +16,8 @@ import com.comphenix.protocol.wrappers.WrappedChatComponent;
//The packets are modified to include advanced json formating and the message remover button if the
//player has permission to remove messages.
public class PacketListener extends PacketAdapter {
public PacketListener(MineverseChat plugin) {
super(plugin, ListenerPriority.MONITOR, new PacketType[] { PacketType.Play.Server.CHAT });
this.plugin = plugin;
public PacketListener() {
super(MineverseChat.getInstance(), ListenerPriority.MONITOR, new PacketType[] { PacketType.Play.Server.CHAT });
}
@Override
@ -61,44 +53,13 @@ public class PacketListener extends PacketAdapter {
}
WrappedChatComponent chat = event.getPacket().getChatComponents().read(0);
WrappedChatComponent originalChat = event.getPacket().getChatComponents().read(0);
String message = null;
int hash = -1;
//System.out.println(chat.getJson());
//System.out.println(MineverseChat.lastChatMessage.getMessage());
message = MineverseChat.toPlainText(chat.getHandle(), chat.getHandleType());
//System.out.println(chat.getJson());
//System.out.println(message + " message");
hash = message != null ? message.hashCode() : -1;
//System.out.println("remover goes in here?");
ChatMessage lastChatMessage = MineverseChat.lastChatMessage;
MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer());
if(lastChatMessage != null && lastChatMessage.getHash() == hash) {
String json = MineverseChat.lastJson;
if(mcp.getPlayer().hasPermission("venturechat.gui")) {
json = json.substring(0, json.length() - 1);
json += "," + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guiicon")), ",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/vchatgui " + lastChatMessage.getSender() + " " + lastChatMessage.getChannel() + " " + lastChatMessage.getHash() +"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[" + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guitext"))) + "]}}") + "]";
//json += ",{\"text\":\"" + "json test" + "\"}]";
}
//System.out.println("," + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guiicon")), ",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/vchatgui " + lastChatMessage.getSender() + " " + lastChatMessage.getChannel() + " " + lastChatMessage.getHash() +"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[" + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guitext"))) + "]}}") + "]}]");
//System.out.println("\nline break\n");
//System.out.println(json);
chat.setJson(json);
event.getPacket().getChatComponents().write(0, chat);
}
if((message != null) && (chat.getHandle() != null) && mcp != null) {
mcp.addMessage(new ChatMessage(originalChat, chat, lastChatMessage != null ? lastChatMessage.getSender() : null, message, hash));
mcp.addMessage(new ChatMessage(chat, null, message, hash));
}
}
@SuppressWarnings("unused")
private String getMessage(String json) {
JSONArray components = (JSONArray) ((JSONObject) JSONValue.parse(json)).get("extra");
Iterator<?> iterator = components.iterator();
StringBuilder builder = new StringBuilder();
while(iterator.hasNext()) {
builder.append(((JSONObject) iterator.next()).get("text").toString());
}
return builder.toString();
}
}

View File

@ -13,11 +13,10 @@ import mineverse.Aust1n46.chat.utilities.Format;
//This class listens for text being added to signs, and it formats them to allow colors and formatting.
public class SignListener implements Listener {
MineverseChat plugin;
MineverseChat plugin = MineverseChat.getInstance();
ChatChannelInfo cc;
public SignListener(MineverseChat plugin, ChatChannelInfo cc) {
this.plugin = plugin;
public SignListener(ChatChannelInfo cc) {
this.cc = cc;
}

View File

@ -5,11 +5,15 @@ import java.util.regex.Pattern;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.wrappers.WrappedChatComponent;
import me.clip.placeholderapi.PlaceholderAPI;
import mineverse.Aust1n46.chat.ChatMessage;
import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
import mineverse.Aust1n46.chat.json.JsonFormat;
@ -17,17 +21,16 @@ import mineverse.Aust1n46.chat.json.JsonFormat;
public class Format {
private static MineverseChat plugin = MineverseChat.getInstance();
public static String convertToJson(ChatMessage lastChatMessage) {
MineverseChatPlayer icp = MineverseChatAPI.getMineverseChatPlayer(lastChatMessage.getSender());
JsonFormat format = MineverseChat.jfInfo.getJsonFormat(icp.getJsonFormat());
String f = lastChatMessage.getFormat().replace("\\", "\\\\").replace("\"", "\\\"");
String c = lastChatMessage.getChat().replace("\\", "\\\\").replace("\"", "\\\"");
public static String convertToJson(MineverseChatPlayer sender, String format, String chat) {
JsonFormat JSONformat = MineverseChat.jfInfo.getJsonFormat(sender.getJsonFormat());
String f = format.replace("\\", "\\\\").replace("\"", "\\\"");
String c = chat.replace("\\", "\\\\").replace("\"", "\\\"");
String json = "[\"\",{\"text\":\"\",\"extra\":[";
String prefix = "";
String suffix = "";
try {
prefix = FormatStringAll(MineverseChat.chat.getPlayerPrefix(icp.getPlayer()));
suffix = FormatStringAll(MineverseChat.chat.getPlayerSuffix(icp.getPlayer()));
prefix = FormatStringAll(MineverseChat.chat.getPlayerPrefix(sender.getPlayer()));
suffix = FormatStringAll(MineverseChat.chat.getPlayerSuffix(sender.getPlayer()));
if(suffix.equals("")) {
suffix = "venturechat_no_suffix_code";
}
@ -43,10 +46,10 @@ public class Format {
prefix = "venturechat_no_prefix_code";
}
String nickname = "";
if(icp.getPlayer() != null) {
nickname = FormatStringAll(icp.getPlayer().getDisplayName());
if(sender.getPlayer() != null) {
nickname = FormatStringAll(sender.getPlayer().getDisplayName());
}
json += convertPlaceholders(f, format, prefix, nickname, suffix, icp);
json += convertPlaceholders(f, JSONformat, prefix, nickname, suffix, sender);
json += "]}";
json += "," + convertLinks(c);
json += "]";
@ -277,6 +280,30 @@ public class Format {
return "";
}
public static String formatModerationGUI(String json, Player player, String sender, String channelName, int hash) {
if(player.hasPermission("venturechat.gui")) {
json = json.substring(0, json.length() - 1);
json += "," + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guiicon")), ",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/vchatgui " + sender + " " + channelName + " " + hash +"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[" + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guitext"))) + "]}}") + "]";
}
return json;
}
public static PacketContainer createPacketPlayOutChat(WrappedChatComponent component) {
PacketContainer container = new PacketContainer(PacketType.Play.Server.CHAT);
container.getModifier().writeDefaults();
container.getChatComponents().write(0, component);
return container;
}
public static void sendPacketPlayOutChat(Player player, PacketContainer packet) {
try {
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet);
}
catch(Exception e) {
e.printStackTrace();
}
}
protected static Pattern chatColorPattern = Pattern.compile("(?i)&([0-9A-F])");
protected static Pattern chatMagicPattern = Pattern.compile("(?i)&([K])");
protected static Pattern chatBoldPattern = Pattern.compile("(?i)&([L])");