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.utility.MinecraftReflection;
import me.clip.placeholderapi.PlaceholderAPI;
public class MineverseChat extends JavaPlugin implements PluginMessageListener {
// Listeners --------------------------------
private ChatListener chatListener;
@ -981,10 +983,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
String msg = msgin.readUTF();
String echo = 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()) {
out.writeUTF("Message");
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);
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(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);
@ -1041,11 +1039,11 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
out.writeUTF("Message");
out.writeUTF("Echo");
out.writeUTF(server);
out.writeUTF(p.getNickname());
out.writeUTF(receiver);
out.writeUTF(sender.toString());
out.writeUTF(sName);
out.writeUTF(echo);
out.writeUTF(spy);
out.writeUTF(PlaceholderAPI.setBracketPlaceholders(p.getPlayer(), echo.replaceAll("receiver_", "")));
out.writeUTF(PlaceholderAPI.setBracketPlaceholders(p.getPlayer(), spy.replaceAll("receiver_", "")));
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
return;
}
@ -1072,35 +1070,23 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
.replace("{player}", receiver));
}
if(identifier.equals("Echo")) {
String receiver = msgin.readUTF();
UUID sender = UUID.fromString(msgin.readUTF());
MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
MineverseChatPlayer r = MineverseChatAPI.getMineverseChatPlayer(receiver);
String receiverName = msgin.readUTF();
UUID senderUUID = UUID.fromString(msgin.readUTF());
MineverseChatPlayer senderMCP = MineverseChatAPI.getOnlineMineverseChatPlayer(senderUUID);
MineverseChatPlayer receiverMCP = MineverseChatAPI.getMineverseChatPlayer(receiverName);
String echo = msgin.readUTF();
String rName = Format.FormatStringAll(receiver);
if(r != null) {
rName = Format.FormatStringAll(r.getNickname());
p.setReplyPlayer(r.getUUID());
if(receiverMCP != null) {
senderMCP.setReplyPlayer(receiverMCP.getUUID());
}
p.getPlayer().sendMessage(echo.replace("{playerfrom}", Format.FormatStringAll(p.getNickname())).replace("{playerto}", rName));
senderMCP.getPlayer().sendMessage(echo);
}
if(identifier.equals("Spy")) {
String receiver = msgin.readUTF();
MineverseChatPlayer r = MineverseChatAPI.getMineverseChatPlayer(receiver);
UUID sender = UUID.fromString(msgin.readUTF());
MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
String sName = msgin.readUTF();
String receiverName = msgin.readUTF();
String senderName = 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) {
if(pl.isSpy() && !pl.getName().equals(sName) && !pl.getName().equals(rName)) {
pl.getPlayer().sendMessage(spy.replace("{playerto}", rName).replace("{playerfrom}", sName));
if(pl.isSpy() && !pl.getName().equals(senderName) && !pl.getName().equals(receiverName)) {
pl.getPlayer().sendMessage(spy);
}
}
}

View File

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

View File

@ -8,6 +8,7 @@ import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import me.clip.placeholderapi.PlaceholderAPI;
import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
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());
return;
}
MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer((Player) sender);
if(args.length == 0) {
mcp.getPlayer().sendMessage(LocalizedMessage.COMMAND_INVALID_ARGUMENTS.toString()
@ -36,55 +38,12 @@ public class Message extends MineverseCommand {
.replace("{args}", "[player] [message]"));
return;
}
if(plugin.getConfig().getBoolean("bungeecordmessaging", true)) {
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;
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();
}
sendBungeeCordMessage(mcp, command, args);
return;
}
MineverseChatPlayer player = MineverseChatAPI.getMineverseChatPlayer(args[0]);
for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
if(ChatColor.stripColor(p.getNickname()).equals(args[0])) {
@ -207,4 +166,56 @@ public class Message extends MineverseCommand {
}
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.entity.Player;
import me.clip.placeholderapi.PlaceholderAPI;
import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
@ -33,37 +34,12 @@ public class Reply extends MineverseCommand {
if(args.length > 0) {
if(mcp.hasReplyPlayer()) {
MineverseChatPlayer player = MineverseChatAPI.getMineverseChatPlayer(mcp.getReplyPlayer());
if(plugin.getConfig().getBoolean("bungeecordmessaging", true)) {
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;
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();
}
sendBungeeCordReply(mcp, player, args);
return;
}
if(player == null || !player.isOnline()) {
mcp.getPlayer().sendMessage(LocalizedMessage.NO_PLAYER_TO_REPLY_TO.toString());
return;
@ -148,4 +124,38 @@ public class Reply extends MineverseCommand {
.replace("{command}", "/reply")
.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();
}
}
}