Aust1n46 fb92d82f73 Removed AFK command and feature. Other plugins do it better and my
iteration is rarely used.

Cleaned up new VentureChatEvent.

Cleaned up ASyncChatEvent to make it truly Async and handle
player.chat()
2020-03-07 16:01:47 -05:00

160 lines
6.5 KiB
Java

package mineverse.Aust1n46.chat.command.message;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
import mineverse.Aust1n46.chat.channel.ChatChannelInfo;
import mineverse.Aust1n46.chat.command.MineverseCommand;
import mineverse.Aust1n46.chat.utilities.Format;
import mineverse.Aust1n46.chat.versions.VersionHandler;
public class Reply extends MineverseCommand {
private MineverseChat plugin;
private ChatChannelInfo cc = MineverseChat.ccInfo;
public Reply(String name) {
super(name);
this.plugin = MineverseChat.getInstance();
}
@Override
public void execute(CommandSender sender, String command, String[] args) {
if(!(sender instanceof Player)) {
plugin.getServer().getConsoleSender().sendMessage(ChatColor.RED + "This command must be run by a player.");
return;
}
MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer((Player) sender);
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];
}
if(plugin.getConfig().getString("tellformatfrom").equalsIgnoreCase("Default")) {
send = "{playerfrom} replies to you:" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + msg;
}
else {
send = Format.FormatStringAll(plugin.getConfig().getString("tellformatfrom")) + msg;
}
if(plugin.getConfig().getString("tellformatto").equalsIgnoreCase("Default")) {
echo = "You reply to {playerto}:" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + msg;
}
else {
echo = Format.FormatStringAll(plugin.getConfig().getString("tellformatto")) + msg;
}
if(plugin.getConfig().getString("tellformatspy").equalsIgnoreCase("Default")) {
spy = "{playerfrom} replied to {playerto}:" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + msg;
}
else {
spy = Format.FormatStringAll(plugin.getConfig().getString("tellformatspy")) + 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;
}
if(player == null || !player.isOnline()) {
mcp.getPlayer().sendMessage(ChatColor.RED + "You do not have anyone to reply to.");
return;
}
if(!mcp.getPlayer().canSee(player.getPlayer())) {
mcp.getPlayer().sendMessage(ChatColor.RED + "You do not have anyone to reply to.");
return;
}
if(player.getIgnores().contains(mcp.getUUID())) {
mcp.getPlayer().sendMessage(ChatColor.GOLD + player.getNickname() + " is currently ignoring your replies.");
return;
}
if(!player.getMessageToggle()) {
mcp.getPlayer().sendMessage(ChatColor.GOLD + player.getNickname() + " is currently blocking messages.");
return;
}
String msg = "";
String echo = "";
String send = "";
String spy = "";
if(args.length > 0) {
for(int r = 0; r < args.length; r++)
msg += " " + args[r];
if(mcp.hasFilter()) {
msg = cc.FilterChat(msg);
}
if(mcp.getPlayer().hasPermission("venturechat.color")) {
msg = Format.FormatStringColor(msg);
}
if(mcp.getPlayer().hasPermission("venturechat.format")) {
msg = Format.FormatString(msg);
}
if(plugin.getConfig().getString("replyformatto").equalsIgnoreCase("Default")) {
echo = "You reply to " + player.getNickname() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + msg;
}
else {
echo = Format.FormatStringAll(plugin.getConfig().getString("replyformatto").replace("{playerto}", player.getNickname()).replace("{playerfrom}", mcp.getNickname())) + msg;
}
if(plugin.getConfig().getString("replyformatfrom").equalsIgnoreCase("Default")) {
send = mcp.getNickname() + " replies to you:" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + msg;
}
else {
send = Format.FormatStringAll(plugin.getConfig().getString("replyformatfrom").replace("{playerto}", player.getNickname()).replace("{playerfrom}", mcp.getNickname())) + msg;
}
if(plugin.getConfig().getString("replyformatspy").equalsIgnoreCase("Default")) {
spy = mcp.getName() + " replied to " + player.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + msg;
}
else {
spy = Format.FormatStringAll(plugin.getConfig().getString("replyformatspy").replace("{playerto}", player.getName()).replace("{playerfrom}", mcp.getName())) + msg;
}
if(!mcp.getPlayer().hasPermission("venturechat.spy.override")) {
for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
if(p.isOnline() && p.isSpy()) {
p.getPlayer().sendMessage(spy);
}
}
}
player.getPlayer().sendMessage(send);
mcp.getPlayer().sendMessage(echo);
if(player.hasNotifications()) {
if(VersionHandler.is1_8() || VersionHandler.is1_7_10() || VersionHandler.is1_7_2() || VersionHandler.is1_7_9()) {
player.getPlayer().playSound(player.getPlayer().getLocation(), Sound.valueOf("LEVEL_UP"), 1, 0);
}
else {
player.getPlayer().playSound(player.getPlayer().getLocation(), Sound.valueOf("ENTITY_PLAYER_LEVELUP"), 1, 0);
}
}
player.setReplyPlayer(mcp.getUUID());
return;
}
}
mcp.getPlayer().sendMessage(ChatColor.RED + "You do not have anyone to reply to.");
return;
}
mcp.getPlayer().sendMessage(ChatColor.RED + "Invalid command: /reply [msg]");
}
}