2018-07-22 17:30:28 -04:00

163 lines
6.6 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, "venturechat:", 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(player.isAFK()) {
mcp.getPlayer().sendMessage(ChatColor.GOLD + player.getNickname() + " is currently afk and might be unable to chat at this time.");
}
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]");
}
}