package joshie.progression.network;
import io.netty.buffer.ByteBuf;
import joshie.progression.helpers.ChatHelper;
import joshie.progression.helpers.PlayerHelper;
import joshie.progression.network.core.PenguinPacket;
import joshie.progression.player.PlayerTeam;
import joshie.progression.player.PlayerTracker;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import java.util.UUID;
import static joshie.progression.gui.core.GuiList.GROUP_EDITOR;
import static net.minecraft.util.text.TextFormatting.*;
@Packet
public class PacketInvitePlayer extends PenguinPacket {
private UUID teamOwner;
private String teamName;
private String username;
public PacketInvitePlayer() {}
public PacketInvitePlayer(UUID teamOwner, String team, String username) {
this.teamOwner = teamOwner;
this.teamName = team;
this.username = username;
}
@Override
public void toBytes(ByteBuf buf) {
writeGzipString(buf, teamOwner.toString());
writeGzipString(buf, teamName);
writeGzipString(buf, username);
}
@Override
public void fromBytes(ByteBuf buf) {
teamOwner = UUID.fromString(readGzipString(buf));
teamName = readGzipString(buf);
username = readGzipString(buf);
}
public static void sendInvite(EntityPlayer sender, String username, UUID teamOwner, String teamName) {
if (sender.getName().equalsIgnoreCase(username)) {
PacketHandler.sendToClient(new PacketDisplayChat(RED + "You cannot invite yourself!"), sender);
} else {
PlayerTeam team = PlayerTracker.getPlayerData(sender).getTeam();
if (team.isSingle()) {
PacketHandler.sendToClient(new PacketDisplayChat(RED + "You cannot invite people to a single player team!"), sender);
} else if (!team.isOwner(sender)) {
PacketHandler.sendToClient(new PacketDisplayChat(RED + "Only the owner can invite players!"), sender);
} else {
for (EntityPlayerMP player : PlayerHelper.getAllPlayers()) {
if (player.getName().equalsIgnoreCase(username)) {
PacketHandler.sendToClient(new PacketInvitePlayer(teamOwner, teamName, username), player);
PacketHandler.sendToClient(new PacketDisplayChat(GREEN + "You successfully invited " + username + " to your team!"), sender);
team.addToInvited(PlayerHelper.getUUIDForPlayer(player));
return;
}
}
PacketHandler.sendToClient(new PacketDisplayChat(RED + username + " does not exist or is not online, invite failed!"), sender);
}
}
}
@Override
public void handlePacket(EntityPlayer sender) {
if (!sender.worldObj.isRemote) {
sendInvite(sender, username, teamOwner, teamName);
} else {
GROUP_EDITOR.addInvite(teamOwner, teamName);
ChatHelper.displayChat(BLUE + "You were invited to join the team: " + WHITE + teamName + "\n" + RED + "If you wish to join this team, use the progression book or type" + GREEN + "\n/progression team join " + teamName);
}
}
}