Added PlaceholderAPI support for BungeeCord messaging.

This commit is contained in:
Aust1n46 2021-02-06 00:48:10 -06:00
parent 974260dfa4
commit 0f5981087c
4 changed files with 112 additions and 106 deletions

View File

@ -112,6 +112,8 @@ import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.utility.MinecraftReflection; import com.comphenix.protocol.utility.MinecraftReflection;
import me.clip.placeholderapi.PlaceholderAPI;
public class MineverseChat extends JavaPlugin implements PluginMessageListener { public class MineverseChat extends JavaPlugin implements PluginMessageListener {
// Listeners -------------------------------- // Listeners --------------------------------
private ChatListener chatListener; private ChatListener chatListener;
@ -981,10 +983,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
String msg = msgin.readUTF(); String msg = msgin.readUTF();
String echo = msgin.readUTF(); String echo = msgin.readUTF();
String spy = msgin.readUTF(); String spy = msgin.readUTF();
// System.out.println((p == null) + " null");
if(p != null) {
// System.out.println(p.isOnline() + " online");
}
if(!this.getConfig().getBoolean("bungeecordmessaging", true) || p == null || !p.isOnline()) { if(!this.getConfig().getBoolean("bungeecordmessaging", true) || p == null || !p.isOnline()) {
out.writeUTF("Message"); out.writeUTF("Message");
out.writeUTF("Offline"); out.writeUTF("Offline");
@ -1028,7 +1026,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
s = new MineverseChatPlayer(uuid, name, current, ignores, listening, mutes, blockedCommands, false, null, true, true, name, jsonFormat, false, false, false, true, true); s = new MineverseChatPlayer(uuid, name, current, ignores, listening, mutes, blockedCommands, false, null, true, true, name, jsonFormat, false, false, false, true, true);
MineverseChat.players.add(s); MineverseChat.players.add(s);
} }
p.getPlayer().sendMessage(msg.replace("{playerfrom}", sName).replace("{playerto}", Format.FormatStringAll(p.getNickname()))); p.getPlayer().sendMessage(PlaceholderAPI.setBracketPlaceholders(p.getPlayer(), msg.replaceAll("receiver_", "")));
if(p.hasNotifications()) { if(p.hasNotifications()) {
if(VersionHandler.is1_8() || VersionHandler.is1_7_10() || VersionHandler.is1_7_2() || VersionHandler.is1_7_9()) { if(VersionHandler.is1_8() || VersionHandler.is1_7_10() || VersionHandler.is1_7_2() || VersionHandler.is1_7_9()) {
p.getPlayer().playSound(p.getPlayer().getLocation(), Sound.valueOf("LEVEL_UP"), 1, 0); p.getPlayer().playSound(p.getPlayer().getLocation(), Sound.valueOf("LEVEL_UP"), 1, 0);
@ -1041,11 +1039,11 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
out.writeUTF("Message"); out.writeUTF("Message");
out.writeUTF("Echo"); out.writeUTF("Echo");
out.writeUTF(server); out.writeUTF(server);
out.writeUTF(p.getNickname()); out.writeUTF(receiver);
out.writeUTF(sender.toString()); out.writeUTF(sender.toString());
out.writeUTF(sName); out.writeUTF(sName);
out.writeUTF(echo); out.writeUTF(PlaceholderAPI.setBracketPlaceholders(p.getPlayer(), echo.replaceAll("receiver_", "")));
out.writeUTF(spy); out.writeUTF(PlaceholderAPI.setBracketPlaceholders(p.getPlayer(), spy.replaceAll("receiver_", "")));
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray()); player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
return; return;
} }
@ -1072,35 +1070,23 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
.replace("{player}", receiver)); .replace("{player}", receiver));
} }
if(identifier.equals("Echo")) { if(identifier.equals("Echo")) {
String receiver = msgin.readUTF(); String receiverName = msgin.readUTF();
UUID sender = UUID.fromString(msgin.readUTF()); UUID senderUUID = UUID.fromString(msgin.readUTF());
MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender); MineverseChatPlayer senderMCP = MineverseChatAPI.getOnlineMineverseChatPlayer(senderUUID);
MineverseChatPlayer r = MineverseChatAPI.getMineverseChatPlayer(receiver); MineverseChatPlayer receiverMCP = MineverseChatAPI.getMineverseChatPlayer(receiverName);
String echo = msgin.readUTF(); String echo = msgin.readUTF();
String rName = Format.FormatStringAll(receiver); if(receiverMCP != null) {
if(r != null) { senderMCP.setReplyPlayer(receiverMCP.getUUID());
rName = Format.FormatStringAll(r.getNickname());
p.setReplyPlayer(r.getUUID());
} }
p.getPlayer().sendMessage(echo.replace("{playerfrom}", Format.FormatStringAll(p.getNickname())).replace("{playerto}", rName)); senderMCP.getPlayer().sendMessage(echo);
} }
if(identifier.equals("Spy")) { if(identifier.equals("Spy")) {
String receiver = msgin.readUTF(); String receiverName = msgin.readUTF();
MineverseChatPlayer r = MineverseChatAPI.getMineverseChatPlayer(receiver); String senderName = msgin.readUTF();
UUID sender = UUID.fromString(msgin.readUTF());
MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
String sName = msgin.readUTF();
String spy = msgin.readUTF(); String spy = msgin.readUTF();
String rName = receiver;
if(r != null) {
rName = Format.FormatStringAll(r.getNickname());
}
if(p != null) {
sName = Format.FormatStringAll(p.getNickname());
}
for(MineverseChatPlayer pl : onlinePlayers) { for(MineverseChatPlayer pl : onlinePlayers) {
if(pl.isSpy() && !pl.getName().equals(sName) && !pl.getName().equals(rName)) { if(pl.isSpy() && !pl.getName().equals(senderName) && !pl.getName().equals(receiverName)) {
pl.getPlayer().sendMessage(spy.replace("{playerto}", rName).replace("{playerfrom}", sName)); pl.getPlayer().sendMessage(spy);
} }
} }
} }

View File

@ -405,7 +405,6 @@ public class MineverseChatBungee extends Plugin implements Listener {
out.writeUTF("Message"); out.writeUTF("Message");
out.writeUTF("Spy"); out.writeUTF("Spy");
out.writeUTF(player); out.writeUTF(player);
out.writeUTF(sender);
out.writeUTF(sName); out.writeUTF(sName);
out.writeUTF(spy); out.writeUTF(spy);
for(String send : getProxy().getServers().keySet()) { for(String send : getProxy().getServers().keySet()) {

View File

@ -8,6 +8,7 @@ import org.bukkit.Sound;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import me.clip.placeholderapi.PlaceholderAPI;
import mineverse.Aust1n46.chat.MineverseChat; import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatAPI; import mineverse.Aust1n46.chat.api.MineverseChatAPI;
import mineverse.Aust1n46.chat.api.MineverseChatPlayer; import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
@ -29,6 +30,7 @@ public class Message extends MineverseCommand {
plugin.getServer().getConsoleSender().sendMessage(LocalizedMessage.COMMAND_MUST_BE_RUN_BY_PLAYER.toString()); plugin.getServer().getConsoleSender().sendMessage(LocalizedMessage.COMMAND_MUST_BE_RUN_BY_PLAYER.toString());
return; return;
} }
MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer((Player) sender); MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer((Player) sender);
if(args.length == 0) { if(args.length == 0) {
mcp.getPlayer().sendMessage(LocalizedMessage.COMMAND_INVALID_ARGUMENTS.toString() mcp.getPlayer().sendMessage(LocalizedMessage.COMMAND_INVALID_ARGUMENTS.toString()
@ -36,55 +38,12 @@ public class Message extends MineverseCommand {
.replace("{args}", "[player] [message]")); .replace("{args}", "[player] [message]"));
return; return;
} }
if(plugin.getConfig().getBoolean("bungeecordmessaging", true)) { if(plugin.getConfig().getBoolean("bungeecordmessaging", true)) {
if(args.length < 2) { sendBungeeCordMessage(mcp, command, args);
mcp.getPlayer().sendMessage(LocalizedMessage.COMMAND_INVALID_ARGUMENTS.toString()
.replace("{command}", "/" + command)
.replace("{args}", "[player] [message]"));
return;
}
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(byteOutStream);
String msg = "";
String send = "";
String echo = "";
String spy = "";
for(int r = 1; r < args.length; r++) {
msg += " " + args[r];
}
if(mcp.hasFilter()) {
msg = Format.FilterChat(msg);
}
if(mcp.getPlayer().hasPermission("venturechat.color.legacy")) {
msg = Format.FormatStringLegacyColor(msg);
}
if(mcp.getPlayer().hasPermission("venturechat.color")) {
msg = Format.FormatStringColor(msg);
}
if(mcp.getPlayer().hasPermission("venturechat.format")) {
msg = Format.FormatString(msg);
}
send = Format.FormatStringAll(plugin.getConfig().getString("tellformatfrom")) + msg;
echo = Format.FormatStringAll(plugin.getConfig().getString("tellformatto")) + msg;
spy = Format.FormatStringAll(plugin.getConfig().getString("tellformatspy")) + msg;
try {
out.writeUTF("Message");
out.writeUTF("Send");
// out.writeUTF(mcp.getPlayer().getServer().getServerName());
out.writeUTF(args[0]);
out.writeUTF(mcp.getUUID().toString());
out.writeUTF(mcp.getName());
out.writeUTF(send);
out.writeUTF(echo);
out.writeUTF(spy);
mcp.getPlayer().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray());
out.close();
}
catch(Exception e) {
e.printStackTrace();
}
return; return;
} }
MineverseChatPlayer player = MineverseChatAPI.getMineverseChatPlayer(args[0]); MineverseChatPlayer player = MineverseChatAPI.getMineverseChatPlayer(args[0]);
for(MineverseChatPlayer p : MineverseChat.onlinePlayers) { for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
if(ChatColor.stripColor(p.getNickname()).equals(args[0])) { if(ChatColor.stripColor(p.getNickname()).equals(args[0])) {
@ -207,4 +166,56 @@ public class Message extends MineverseCommand {
} }
return; return;
} }
private void sendBungeeCordMessage(MineverseChatPlayer mcp, String command, String[] args) {
if(args.length < 2) {
mcp.getPlayer().sendMessage(LocalizedMessage.COMMAND_INVALID_ARGUMENTS.toString()
.replace("{command}", "/" + command)
.replace("{args}", "[player] [message]"));
return;
}
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(byteOutStream);
String msg = "";
String send = "";
String echo = "";
String spy = "";
for(int r = 1; r < args.length; r++) {
msg += " " + args[r];
}
if(mcp.hasFilter()) {
msg = Format.FilterChat(msg);
}
if(mcp.getPlayer().hasPermission("venturechat.color.legacy")) {
msg = Format.FormatStringLegacyColor(msg);
}
if(mcp.getPlayer().hasPermission("venturechat.color")) {
msg = Format.FormatStringColor(msg);
}
if(mcp.getPlayer().hasPermission("venturechat.format")) {
msg = Format.FormatString(msg);
}
send = Format.FormatStringAll(plugin.getConfig().getString("tellformatfrom")) + msg;
echo = Format.FormatStringAll(plugin.getConfig().getString("tellformatto")) + msg;
spy = Format.FormatStringAll(plugin.getConfig().getString("tellformatspy")) + msg;
send = PlaceholderAPI.setBracketPlaceholders(mcp.getPlayer(), send.replaceAll("sender_", ""));
echo = PlaceholderAPI.setBracketPlaceholders(mcp.getPlayer(), echo.replaceAll("sender_", ""));
spy = PlaceholderAPI.setBracketPlaceholders(mcp.getPlayer(), spy.replaceAll("sender_", ""));
try {
out.writeUTF("Message");
out.writeUTF("Send");
out.writeUTF(args[0]);
out.writeUTF(mcp.getUUID().toString());
out.writeUTF(mcp.getName());
out.writeUTF(send);
out.writeUTF(echo);
out.writeUTF(spy);
mcp.getPlayer().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray());
out.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
} }

View File

@ -8,6 +8,7 @@ import org.bukkit.Sound;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import me.clip.placeholderapi.PlaceholderAPI;
import mineverse.Aust1n46.chat.MineverseChat; import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatAPI; import mineverse.Aust1n46.chat.api.MineverseChatAPI;
import mineverse.Aust1n46.chat.api.MineverseChatPlayer; import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
@ -33,37 +34,12 @@ public class Reply extends MineverseCommand {
if(args.length > 0) { if(args.length > 0) {
if(mcp.hasReplyPlayer()) { if(mcp.hasReplyPlayer()) {
MineverseChatPlayer player = MineverseChatAPI.getMineverseChatPlayer(mcp.getReplyPlayer()); MineverseChatPlayer player = MineverseChatAPI.getMineverseChatPlayer(mcp.getReplyPlayer());
if(plugin.getConfig().getBoolean("bungeecordmessaging", true)) { if(plugin.getConfig().getBoolean("bungeecordmessaging", true)) {
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream(); sendBungeeCordReply(mcp, player, args);
DataOutputStream out = new DataOutputStream(byteOutStream);
String msg = "";
String send = "";
String echo = "";
String spy = "";
for(int r = 0; r < args.length; r++) {
msg += " " + args[r];
}
send = Format.FormatStringAll(plugin.getConfig().getString("replyformatfrom")) + msg;
echo = Format.FormatStringAll(plugin.getConfig().getString("replyformatto")) + msg;
spy = Format.FormatStringAll(plugin.getConfig().getString("replyformatspy")) + msg;
try {
out.writeUTF("Message");
out.writeUTF("Send");
// out.writeUTF(mcp.getPlayer().getServer().getServerName());
out.writeUTF(player.getName());
out.writeUTF(mcp.getUUID().toString());
out.writeUTF(mcp.getName());
out.writeUTF(send);
out.writeUTF(echo);
out.writeUTF(spy);
mcp.getPlayer().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray());
out.close();
}
catch(Exception e) {
e.printStackTrace();
}
return; return;
} }
if(player == null || !player.isOnline()) { if(player == null || !player.isOnline()) {
mcp.getPlayer().sendMessage(LocalizedMessage.NO_PLAYER_TO_REPLY_TO.toString()); mcp.getPlayer().sendMessage(LocalizedMessage.NO_PLAYER_TO_REPLY_TO.toString());
return; return;
@ -148,4 +124,38 @@ public class Reply extends MineverseCommand {
.replace("{command}", "/reply") .replace("{command}", "/reply")
.replace("{args}", "[message]")); .replace("{args}", "[message]"));
} }
private void sendBungeeCordReply(MineverseChatPlayer mcp, MineverseChatPlayer player, String[] args) {
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(byteOutStream);
String msg = "";
String send = "";
String echo = "";
String spy = "";
for(int r = 0; r < args.length; r++) {
msg += " " + args[r];
}
send = Format.FormatStringAll(plugin.getConfig().getString("replyformatfrom")) + msg;
echo = Format.FormatStringAll(plugin.getConfig().getString("replyformatto")) + msg;
spy = Format.FormatStringAll(plugin.getConfig().getString("replyformatspy")) + msg;
send = PlaceholderAPI.setBracketPlaceholders(mcp.getPlayer(), send.replaceAll("sender_", ""));
echo = PlaceholderAPI.setBracketPlaceholders(mcp.getPlayer(), echo.replaceAll("sender_", ""));
spy = PlaceholderAPI.setBracketPlaceholders(mcp.getPlayer(), spy.replaceAll("sender_", ""));
try {
out.writeUTF("Message");
out.writeUTF("Send");
out.writeUTF(player.getName());
out.writeUTF(mcp.getUUID().toString());
out.writeUTF(mcp.getName());
out.writeUTF(send);
out.writeUTF(echo);
out.writeUTF(spy);
mcp.getPlayer().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray());
out.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
} }