Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
520ade8249
@ -30,9 +30,6 @@ public class MysqlAccountRepository extends RepositoryBase
|
||||
int affectedRows = executeUpdate(ACCOUNT_LOGIN_UPDATE, new ColumnVarChar("uuid", 100, uuid), new ColumnVarChar("name", 40, name), new ColumnVarChar("uuid", 100, uuid));
|
||||
|
||||
if (affectedRows == 0)
|
||||
{
|
||||
executeUpdate(ACCOUNT_LOGIN_NEW, new ColumnVarChar("uuid", 100, uuid), new ColumnVarChar("name", 40, name));
|
||||
System.out.println("Executed LOGIN_NEW");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package mineplex.core.friend;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
@ -23,6 +24,7 @@ import mineplex.core.friend.command.DeleteFriend;
|
||||
import mineplex.core.friend.data.FriendData;
|
||||
import mineplex.core.friend.data.FriendRepository;
|
||||
import mineplex.core.friend.data.FriendStatus;
|
||||
import mineplex.core.preferences.PreferencesManager;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
|
||||
@ -30,12 +32,14 @@ public class FriendManager extends MiniClientPlugin<FriendData>
|
||||
{
|
||||
private static FriendSorter _friendSorter = new FriendSorter();
|
||||
|
||||
private PreferencesManager _preferenceManager;
|
||||
private FriendRepository _repository;
|
||||
|
||||
public FriendManager(JavaPlugin plugin)
|
||||
public FriendManager(JavaPlugin plugin, PreferencesManager preferences)
|
||||
{
|
||||
super("Friends", plugin);
|
||||
|
||||
_preferenceManager = preferences;
|
||||
_repository = new FriendRepository(plugin);
|
||||
}
|
||||
|
||||
@ -72,11 +76,13 @@ public class FriendManager extends MiniClientPlugin<FriendData>
|
||||
if (event.getType() != UpdateType.SLOW || Bukkit.getOnlinePlayers().size() == 0)
|
||||
return;
|
||||
|
||||
final Player[] onlinePlayers = UtilServer.getPlayers();
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskAsynchronously(_plugin, new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
final NautHashMap<String, FriendData> newData = _repository.getFriendsForAll(UtilServer.getPlayers());
|
||||
final NautHashMap<String, FriendData> newData = _repository.getFriendsForAll(onlinePlayers);
|
||||
|
||||
Bukkit.getServer().getScheduler().runTask(_plugin, new Runnable()
|
||||
{
|
||||
@ -101,17 +107,92 @@ public class FriendManager extends MiniClientPlugin<FriendData>
|
||||
|
||||
public void addFriend(final Player caller, final String name)
|
||||
{
|
||||
boolean update = false;
|
||||
for (FriendStatus status : Get(caller).Friends)
|
||||
{
|
||||
if (status.Name.equalsIgnoreCase(name))
|
||||
{
|
||||
if (status.Status == FriendStatusType.Pending || status.Status == FriendStatusType.Blocked)
|
||||
{
|
||||
update = true;
|
||||
break;
|
||||
}
|
||||
else if (status.Status == FriendStatusType.Denied)
|
||||
{
|
||||
caller.sendMessage(F.main(GetName(), ChatColor.GREEN + name + ChatColor.GRAY + " has denied your friend request."));
|
||||
return;
|
||||
}
|
||||
else if (status.Status == FriendStatusType.Accepted)
|
||||
{
|
||||
caller.sendMessage(F.main(GetName(), "You are already friends with " + ChatColor.GREEN + name));
|
||||
return;
|
||||
}
|
||||
else if (status.Status == FriendStatusType.Sent)
|
||||
{
|
||||
caller.sendMessage(F.main(GetName(), ChatColor.GREEN + name + ChatColor.GRAY + " has yet to respond to your friend request."));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final boolean updateFinal = update;
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskAsynchronously(GetPlugin(), new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
_repository.addFriend(caller, name);
|
||||
if (updateFinal)
|
||||
{
|
||||
_repository.updateFriend(caller.getName(), name, "Accepted");
|
||||
_repository.updateFriend(name, caller.getName(), "Accepted");
|
||||
|
||||
Bukkit.getServer().getScheduler().runTask(_plugin, new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
for (Iterator<FriendStatus> statusIterator = Get(caller).Friends.iterator(); statusIterator.hasNext();)
|
||||
{
|
||||
FriendStatus status = statusIterator.next();
|
||||
|
||||
if (status.Name.equalsIgnoreCase(name))
|
||||
{
|
||||
status.Status = FriendStatusType.Accepted;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
_repository.addFriend(caller, name);
|
||||
|
||||
Bukkit.getServer().getScheduler().runTask(_plugin, new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
for (Iterator<FriendStatus> statusIterator = Get(caller).Friends.iterator(); statusIterator.hasNext();)
|
||||
{
|
||||
FriendStatus status = statusIterator.next();
|
||||
|
||||
if (status.Name.equalsIgnoreCase(name))
|
||||
{
|
||||
status.Status = FriendStatusType.Sent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Bukkit.getServer().getScheduler().runTask(_plugin, new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
caller.sendMessage(F.main(GetName(), "Added " + ChatColor.GREEN + name + " to your friends list!"));
|
||||
if (updateFinal)
|
||||
caller.sendMessage(F.main(GetName(), "You and " + ChatColor.GREEN + name + ChatColor.GRAY + " are now friends!"));
|
||||
else
|
||||
caller.sendMessage(F.main(GetName(), "Added " + ChatColor.GREEN + name + ChatColor.GRAY + " to your friends list!"));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -120,17 +201,54 @@ public class FriendManager extends MiniClientPlugin<FriendData>
|
||||
|
||||
public void removeFriend(final Player caller, final String name)
|
||||
{
|
||||
boolean delete = false;
|
||||
|
||||
for (Iterator<FriendStatus> statusIterator = Get(caller).Friends.iterator(); statusIterator.hasNext();)
|
||||
{
|
||||
FriendStatus status = statusIterator.next();
|
||||
|
||||
if (status.Name.equalsIgnoreCase(name))
|
||||
{
|
||||
if (status.Status == FriendStatusType.Sent)
|
||||
{
|
||||
delete = true;
|
||||
statusIterator.remove();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
final boolean deleteFinal = delete;
|
||||
Bukkit.getServer().getScheduler().runTaskAsynchronously(GetPlugin(), new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
_repository.removeFriend(caller.getUniqueId().toString(), name);
|
||||
if (deleteFinal)
|
||||
{
|
||||
_repository.removeFriend(caller.getName(), name);
|
||||
}
|
||||
else
|
||||
{
|
||||
_repository.updateFriend(caller.getName(), name, "Blocked");
|
||||
_repository.updateFriend(name, caller.getName(), "Denied");
|
||||
}
|
||||
|
||||
Bukkit.getServer().getScheduler().runTask(_plugin, new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
caller.sendMessage(F.main(GetName(), "Deleted " + ChatColor.GREEN + name + " from your friends list!"));
|
||||
for (Iterator<FriendStatus> statusIterator = Get(caller).Friends.iterator(); statusIterator.hasNext();)
|
||||
{
|
||||
FriendStatus status = statusIterator.next();
|
||||
|
||||
if (status.Name.equalsIgnoreCase(name))
|
||||
{
|
||||
status.Status = FriendStatusType.Blocked;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
caller.sendMessage(F.main(GetName(), "Deleted " + ChatColor.GREEN + name + ChatColor.GRAY + " from your friends list!"));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -139,28 +257,55 @@ public class FriendManager extends MiniClientPlugin<FriendData>
|
||||
|
||||
public void showFriends(Player caller)
|
||||
{
|
||||
boolean gotAFriend = false;
|
||||
List<FriendStatus> friendStatuses = Get(caller).Friends;
|
||||
Collections.sort(friendStatuses, _friendSorter);
|
||||
|
||||
caller.sendMessage(C.cBlue + "======================[" + ChatColor.RESET + C.cYellow + C.Bold + "Friends" + ChatColor.RESET + C.cBlue + "]======================");
|
||||
|
||||
caller.sendMessage(C.cAqua + C.Strike + "======================[" + ChatColor.RESET + C.cWhite + C.Bold + "Friends" + ChatColor.RESET + C.cAqua + C.Strike + "]======================");
|
||||
|
||||
for (FriendStatus friend : friendStatuses)
|
||||
{
|
||||
ChildJsonMessage message = new JsonMessage(friend.Name).color(friend.Online ? "gold" : "gray").extra(" - ").color("white");
|
||||
if (friend.Status == FriendStatusType.Blocked || friend.Status == FriendStatusType.Denied)
|
||||
continue;
|
||||
|
||||
if (friend.Online)
|
||||
if (!_preferenceManager.Get(caller).PendingFriendRequests && friend.Status == FriendStatusType.Pending)
|
||||
continue;
|
||||
|
||||
gotAFriend = true;
|
||||
|
||||
ChildJsonMessage message = new JsonMessage(friend.Name).color(friend.Online ? "green" : "gray").extra(" - ").color("white");
|
||||
|
||||
|
||||
if (friend.Status == FriendStatusType.Accepted)
|
||||
{
|
||||
if (friend.Mutual)
|
||||
message.add(friend.ServerName + " Connect").color("green").bold().click("run_command", "/server " + friend.ServerName).add(" - ").color("white");
|
||||
if (friend.Online)
|
||||
{
|
||||
message.add(friend.ServerName).color("dark_green").add(" - ").color("white");
|
||||
message.add("Teleport").color("green").bold().click("run_command", "/server " + friend.ServerName).hover("show_text", "Change to " + friend.Name + "'s server.").add(" - ").color("white");
|
||||
}
|
||||
else
|
||||
message.add("Friend request pending").color("yellow").add(" - ").color("white");
|
||||
message.add("Last online : ").color("gray").add(UtilTime.MakeStr(friend.LastSeenOnline)).color("gray").add(" - ").color("white");
|
||||
|
||||
message.add("Unfriend").color("red").bold().click("run_command", "/unfriend " + friend.Name).hover("show_text", "Remove " + friend.Name + " from your friends list.").sendToPlayer(caller);
|
||||
}
|
||||
else
|
||||
message.add("Last online : ").color("blue").add(UtilTime.when(friend.LastSeenOnline)).color("yellow").add(" - ").color("white");
|
||||
|
||||
message.add("Unfriend").color("red").bold().click("run_command", "/unfriend " + friend.Name).sendToPlayer(caller);
|
||||
else if (friend.Status == FriendStatusType.Pending)
|
||||
{
|
||||
message.add("Friendship Pending").color("gray").add(" - ").color("white");
|
||||
message.add("Accept").color("green").bold().click("run_command", "/friend " + friend.Name).hover("show_text", "Accept " + friend.Name + "'s friend request.").add(" - ").color("white");
|
||||
message.add("Deny").color("red").bold().click("run_command", "/unfriend " + friend.Name).hover("show_text", "Deny " + friend.Name + "'s friend request.").sendToPlayer(caller);
|
||||
}
|
||||
else if (friend.Status == FriendStatusType.Sent)
|
||||
{
|
||||
message.add("Friendship Requested").color("gray").add(" - ").color("white");
|
||||
message.add("Cancel").color("red").bold().click("run_command", "/unfriend " + friend.Name).hover("show_text", "Cancel friend request to " + friend.Name).sendToPlayer(caller);
|
||||
}
|
||||
}
|
||||
|
||||
if (!gotAFriend)
|
||||
{
|
||||
caller.sendMessage(C.cGray + "You don't have any friends. Type " + ChatColor.GREEN + "/friend name" + ChatColor.GRAY + " to add someone!");
|
||||
}
|
||||
|
||||
caller.sendMessage(C.cBlue + "=====================================================");
|
||||
caller.sendMessage(C.cAqua + C.Strike + "=====================================================");
|
||||
}
|
||||
}
|
||||
|
@ -10,33 +10,33 @@ public class FriendSorter implements Comparator<FriendStatus>
|
||||
{
|
||||
if (a.Online && !b.Online)
|
||||
{
|
||||
return -1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (b.Online && !a.Online)
|
||||
{
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
// If online we sort by mutual
|
||||
if (a.Online && b.Online)
|
||||
{
|
||||
if (a.Mutual && !b.Mutual)
|
||||
return -1;
|
||||
else if (b.Mutual && !a.Mutual)
|
||||
if (a.Status == FriendStatusType.Accepted && b.Status != FriendStatusType.Accepted)
|
||||
return 1;
|
||||
else if (b.Status == FriendStatusType.Accepted && a.Status != FriendStatusType.Accepted)
|
||||
return -1;
|
||||
|
||||
if (a.Name.compareTo(b.Name) > 0)
|
||||
return -1;
|
||||
else if (b.Name.compareTo(a.Name) > 0)
|
||||
return 1;
|
||||
else if (b.Name.compareTo(a.Name) > 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (a.LastSeenOnline < b.LastSeenOnline)
|
||||
return -1;
|
||||
return 1;
|
||||
|
||||
if (b.LastSeenOnline < a.LastSeenOnline)
|
||||
return 1;
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -0,0 +1,10 @@
|
||||
package mineplex.core.friend;
|
||||
|
||||
public enum FriendStatusType
|
||||
{
|
||||
Sent,
|
||||
Pending,
|
||||
Accepted,
|
||||
Denied,
|
||||
Blocked
|
||||
}
|
@ -12,7 +12,7 @@ public class AddFriend extends CommandBase<FriendManager>
|
||||
{
|
||||
public AddFriend(FriendManager plugin)
|
||||
{
|
||||
super(plugin, Rank.ALL, "friend");
|
||||
super(plugin, Rank.ALL, "friend", "f");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -11,16 +11,16 @@ import mineplex.core.common.util.NautHashMap;
|
||||
import mineplex.core.database.RepositoryBase;
|
||||
import mineplex.core.database.ResultSetCallable;
|
||||
import mineplex.core.database.column.ColumnVarChar;
|
||||
import mineplex.core.friend.FriendStatusType;
|
||||
|
||||
public class FriendRepository extends RepositoryBase
|
||||
{
|
||||
private static String CREATE_FRIEND_TABLE = "CREATE TABLE IF NOT EXISTS accountFriend (id INT NOT NULL AUTO_INCREMENT, uuidSource VARCHAR(100), uuidTarget VARCHAR(100), status VARCHAR(100), PRIMARY KEY (id), UNIQUE INDEX uuidIndex (uuidSource, uuidTarget));";
|
||||
private static String RETRIEVE_MULTIPLE_FRIEND_RECORDS = "SELECT uuidSource, tA.Name, status, serverName, tA.lastLogin FROM accountFriend INNER Join accounts AS fA ON fA.uuid = uuidSource INNER JOIN accounts AS tA ON tA.uuid = uuidTarget LEFT JOIN playerMap ON tA.name = playerName WHERE uuidSource IN ";
|
||||
private static String RETRIEVE_FRIEND_RECORDS = "SELECT tA.Name, mutual, serverName, tA.lastLogin FROM accountFriend INNER Join accounts AS fA ON fA.uuid = uuidSource INNER JOIN accounts AS tA ON tA.uuid = uuidTarget LEFT JOIN playerMap ON tA.name = playerName WHERE uuidSource = ?;";
|
||||
private static String RETRIEVE_OTHER_FRIEND_RECORDS_BY_NAME = "SELECT tA.Name, mutual, serverName, tA.lastLogin FROM accountFriend INNER Join accounts AS fA ON fA.uuid = uuidSource INNER JOIN accounts AS tA ON tA.uuid = uuidTarget LEFT JOIN playerMap ON tA.name = playerName WHERE name = ?;";
|
||||
private static String ADD_FRIEND_RECORD = "INSERT INTO accountFriend (uuidSource, uuidTarget, status) SELECT fA.uuid AS uuidSource, tA.uuid AS uuidTarget, 'Pending' FROM accounts as fA LEFT JOIN accounts AS tA ON tA.name = ? WHERE fA.name = ?;";
|
||||
private static String UPDATE_MUTUAL_RECORD = "UPDATE aF SET status = ? FROM accountFriend AS aF INNER JOIN accounts as fA LEFT JOIN accounts AS tA ON tA.name = ? WHERE fA.name = ?;";
|
||||
private static String DELETE_FRIEND_RECORD = "DELETE aF FROM accountFriend AS aF INNER JOIN accounts ON accounts.name = ? WHERE uuidSource = ? AND uuidTarget = accounts.uuid;";
|
||||
private static String RETRIEVE_MULTIPLE_FRIEND_RECORDS = "SELECT uuidSource, tA.Name, status, serverName, tA.lastLogin, now() FROM accountFriend INNER Join accounts AS fA ON fA.uuid = uuidSource INNER JOIN accounts AS tA ON tA.uuid = uuidTarget LEFT JOIN playerMap ON tA.name = playerName WHERE uuidSource IN ";
|
||||
private static String RETRIEVE_FRIEND_RECORDS = "SELECT tA.Name, status, serverName, tA.lastLogin, now() FROM accountFriend INNER Join accounts AS fA ON fA.uuid = uuidSource INNER JOIN accounts AS tA ON tA.uuid = uuidTarget LEFT JOIN playerMap ON tA.name = playerName WHERE uuidSource = ?;";
|
||||
private static String ADD_FRIEND_RECORD = "INSERT INTO accountFriend (uuidSource, uuidTarget, status) SELECT fA.uuid AS uuidSource, tA.uuid AS uuidTarget, ? FROM accounts as fA LEFT JOIN accounts AS tA ON tA.name = ? WHERE fA.name = ?;";
|
||||
private static String UPDATE_MUTUAL_RECORD = "UPDATE accountFriend AS aF INNER JOIN accounts as fA ON aF.uuidSource = fA.uuid INNER JOIN accounts AS tA ON aF.uuidTarget = tA.uuid SET aF.status = ? WHERE tA.name = ? AND fA.name = ?;";
|
||||
private static String DELETE_FRIEND_RECORD = "DELETE aF FROM accountFriend AS aF INNER JOIN accounts as fA ON aF.uuidSource = fA.uuid INNER JOIN accounts AS tA ON aF.uuidTarget = tA.uuid WHERE fA.name = ? AND tA.name = ?;";
|
||||
|
||||
|
||||
// Not mutual, need to drop accountFriend to recreate with constraint.
|
||||
@ -44,22 +44,17 @@ public class FriendRepository extends RepositoryBase
|
||||
|
||||
public boolean addFriend(final Player caller, String name)
|
||||
{
|
||||
int rowsAffected = executeUpdate(ADD_FRIEND_RECORD, new ColumnVarChar("name", 100, name), new ColumnVarChar("name", 100, caller.getName()));
|
||||
int rowsAffected = executeUpdate(ADD_FRIEND_RECORD, new ColumnVarChar("status", 100, "Sent"), new ColumnVarChar("name", 100, name), new ColumnVarChar("name", 100, caller.getName()));
|
||||
|
||||
if (rowsAffected > 0)
|
||||
return executeUpdate(ADD_FRIEND_RECORD, new ColumnVarChar("name", 100, caller.getName()), new ColumnVarChar("uuid", 100, name)) > 0;
|
||||
return executeUpdate(ADD_FRIEND_RECORD, new ColumnVarChar("status", 100, "Pending"), new ColumnVarChar("name", 100, caller.getName()), new ColumnVarChar("uuid", 100, name)) > 0;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean updateFriend(Player caller, String name, String status)
|
||||
{
|
||||
int rowsAffected = executeUpdate(UPDATE_MUTUAL_RECORD, new ColumnVarChar("status", 100, status), new ColumnVarChar("name", 100, name), new ColumnVarChar("name", 100, caller.getName()));
|
||||
|
||||
if (rowsAffected > 0)
|
||||
return executeUpdate(UPDATE_MUTUAL_RECORD, new ColumnVarChar("status", 100, status), new ColumnVarChar("name", 100, caller.getName()), new ColumnVarChar("uuid", 100, name)) > 0;
|
||||
|
||||
return false;
|
||||
public boolean updateFriend(String caller, String name, String status)
|
||||
{
|
||||
return executeUpdate(UPDATE_MUTUAL_RECORD, new ColumnVarChar("status", 100, status), new ColumnVarChar("uuid", 100, name), new ColumnVarChar("name", 100, caller)) > 0;
|
||||
}
|
||||
|
||||
public boolean removeFriend(String caller, String name)
|
||||
@ -97,11 +92,11 @@ public class FriendRepository extends RepositoryBase
|
||||
|
||||
String uuidSource = resultSet.getString(1);
|
||||
friend.Name = resultSet.getString(2);
|
||||
friend.Mutual = resultSet.getBoolean(3);
|
||||
friend.Status = Enum.valueOf(FriendStatusType.class, resultSet.getString(3));
|
||||
friend.ServerName = resultSet.getString(4);
|
||||
friend.Online = !friend.ServerName.isEmpty();
|
||||
friend.Online = !(friend.ServerName == null || friend.ServerName.isEmpty());
|
||||
|
||||
friend.LastSeenOnline = resultSet.getTimestamp(5).getTime();
|
||||
friend.LastSeenOnline = resultSet.getTimestamp(6).getTime() - resultSet.getTimestamp(5).getTime();
|
||||
|
||||
if (!friends.containsKey(uuidSource))
|
||||
friends.put(uuidSource, new FriendData());
|
||||
@ -127,9 +122,9 @@ public class FriendRepository extends RepositoryBase
|
||||
FriendStatus friend = new FriendStatus();
|
||||
|
||||
friend.Name = resultSet.getString(1);
|
||||
friend.Mutual = resultSet.getBoolean(2);
|
||||
friend.Status = Enum.valueOf(FriendStatusType.class, resultSet.getString(2));
|
||||
friend.ServerName = resultSet.getString(3);
|
||||
friend.LastSeenOnline = resultSet.getLong(4);
|
||||
friend.LastSeenOnline = resultSet.getTimestamp(5).getTime() - resultSet.getTimestamp(4).getTime();
|
||||
|
||||
friendData.Friends.add(friend);
|
||||
}
|
||||
|
@ -1,10 +1,12 @@
|
||||
package mineplex.core.friend.data;
|
||||
|
||||
import mineplex.core.friend.FriendStatusType;
|
||||
|
||||
public class FriendStatus
|
||||
{
|
||||
public String Name;
|
||||
public String ServerName;
|
||||
public boolean Online;
|
||||
public long LastSeenOnline;
|
||||
public boolean Mutual;
|
||||
public FriendStatusType Status;
|
||||
}
|
||||
|
@ -1,54 +0,0 @@
|
||||
package mineplex.core.friend.ui;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.common.util.UtilTime.TimeUnit;
|
||||
import mineplex.core.friend.FriendSorter;
|
||||
import mineplex.core.friend.data.FriendStatus;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
public class FriendTabList extends TabList
|
||||
{
|
||||
private static FriendSorter _friendSorter = new FriendSorter();
|
||||
|
||||
public FriendTabList(List<FriendStatus> friends)
|
||||
{
|
||||
super();
|
||||
|
||||
set(0, 0, ChatColor.GOLD + "" + ChatColor.BOLD + " Name");
|
||||
set(1, 0, ChatColor.GOLD + "" + ChatColor.BOLD + " Location");
|
||||
set(2, 0, ChatColor.GOLD + "" + ChatColor.BOLD + " Status");
|
||||
|
||||
updateFriends(friends);
|
||||
}
|
||||
|
||||
public void updateFriends(List<FriendStatus> friends)
|
||||
{
|
||||
Collections.sort(friends, _friendSorter);
|
||||
|
||||
int row = 1;
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
if (i < friends.size())
|
||||
{
|
||||
FriendStatus status = friends.get(i);
|
||||
|
||||
set(0, row, (status.Mutual ? ChatColor.GREEN : ChatColor.YELLOW) + status.Name);
|
||||
set(1, row, status.Mutual ? ChatColor.GREEN + status.ServerName : ChatColor.YELLOW + "Unknown");
|
||||
set(2, row, (status.Mutual ? ChatColor.GREEN : ChatColor.YELLOW) + (status.Online ? "Online" : UtilTime.convert(status.LastSeenOnline, 2, TimeUnit.MINUTES) + ""));
|
||||
}
|
||||
else
|
||||
{
|
||||
set(0, row, null);
|
||||
set(1, row, null);
|
||||
set(2, row, null);
|
||||
}
|
||||
|
||||
row++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,8 +17,8 @@ public class PreferencesRepository extends RepositoryBase
|
||||
{
|
||||
private static String CREATE_ACCOUNT_TABLE = "CREATE TABLE IF NOT EXISTS accountPreferences (id INT NOT NULL AUTO_INCREMENT, uuid VARCHAR(256), games BOOL NOT NULL DEFAULT 1, visibility BOOL NOT NULL DEFAULT 1, showChat BOOL NOT NULL DEFAULT 1, friendChat BOOL NOT NULL DEFAULT 1, privateMessaging BOOL NOT NULL DEFAULT 1, partyRequests BOOL NOT NULL DEFAULT 0, invisibility BOOL NOT NULL DEFAULT 0, forcefield BOOL NOT NULL DEFAULT 0, showMacReports BOOL NOT NULL DEFAULT 0, ignoreVelocity BOOL NOT NULL DEFAULT 0, PRIMARY KEY (id), UNIQUE INDEX uuid_index (uuid));";
|
||||
private static String INSERT_ACCOUNT = "INSERT INTO accountPreferences (uuid) VALUES (?) ON DUPLICATE KEY UPDATE uuid=uuid;";
|
||||
private static String RETRIEVE_ACCOUNT_PREFERENCES = "SELECT games, visibility, showChat, friendChat, privateMessaging, partyRequests, invisibility, forcefield, showMacReports, ignoreVelocity FROM accountPreferences WHERE uuid = ?;";
|
||||
private static String UPDATE_ACCOUNT_PREFERENCES = "UPDATE accountPreferences SET games = ?, visibility = ?, showChat = ?, friendChat = ?, privateMessaging = ?, partyRequests = ?, invisibility = ?, forcefield = ?, showMacReports = ?, ignoreVelocity = ? WHERE uuid=?;";
|
||||
private static String RETRIEVE_ACCOUNT_PREFERENCES = "SELECT games, visibility, showChat, friendChat, privateMessaging, partyRequests, invisibility, forcefield, showMacReports, ignoreVelocity, pendingFriendRequests FROM accountPreferences WHERE uuid = ?;";
|
||||
private static String UPDATE_ACCOUNT_PREFERENCES = "UPDATE accountPreferences SET games = ?, visibility = ?, showChat = ?, friendChat = ?, privateMessaging = ?, partyRequests = ?, invisibility = ?, forcefield = ?, showMacReports = ?, ignoreVelocity = ?, pendingFriendRequests = ? WHERE uuid=?;";
|
||||
|
||||
public PreferencesRepository(JavaPlugin plugin, String connectionString)
|
||||
{
|
||||
@ -56,7 +56,8 @@ public class PreferencesRepository extends RepositoryBase
|
||||
preparedStatement.setBoolean(8, entry.getValue().HubForcefield);
|
||||
preparedStatement.setBoolean(9, entry.getValue().ShowMacReports);
|
||||
preparedStatement.setBoolean(10, entry.getValue().IgnoreVelocity);
|
||||
preparedStatement.setString(11, entry.getKey());
|
||||
preparedStatement.setBoolean(11, entry.getValue().PendingFriendRequests);
|
||||
preparedStatement.setString(12, entry.getKey());
|
||||
|
||||
preparedStatement.addBatch();
|
||||
}
|
||||
@ -107,6 +108,7 @@ public class PreferencesRepository extends RepositoryBase
|
||||
preferences.HubForcefield = resultSet.getBoolean(8);
|
||||
preferences.ShowMacReports = resultSet.getBoolean(9);
|
||||
preferences.IgnoreVelocity = resultSet.getBoolean(10);
|
||||
preferences.PendingFriendRequests = resultSet.getBoolean(11);
|
||||
}
|
||||
}
|
||||
}, new ColumnVarChar("uuid", 100, uuid.toString()));
|
||||
|
@ -13,4 +13,5 @@ public class UserPreferences
|
||||
public boolean HubForcefield = false;
|
||||
public boolean ShowMacReports = false;
|
||||
public boolean IgnoreVelocity = false;
|
||||
public boolean PendingFriendRequests = true;
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
|
||||
private IButton _toggleChat;
|
||||
private IButton _togglePrivateChat;
|
||||
private IButton _toggleHubPartyRequests;
|
||||
private IButton _togglePendingFriendRequests;
|
||||
private IButton _toggleHubInvisibility;
|
||||
private IButton _toggleHubForcefield;
|
||||
private IButton _toggleHubIgnoreVelocity;
|
||||
@ -30,6 +31,7 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
|
||||
private boolean _hubChatToggled;
|
||||
private boolean _hubPrivateChatToggled;
|
||||
private boolean _hubPartyRequestsToggled;
|
||||
private boolean _pendingFriendRequestsToggled;
|
||||
private boolean _hubInvisibilityToggled;
|
||||
private boolean _hubForcefieldToggled;
|
||||
private boolean _macReportsToggled;
|
||||
@ -120,6 +122,21 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
|
||||
}
|
||||
};
|
||||
|
||||
_togglePendingFriendRequests = new IButton()
|
||||
{
|
||||
@Override
|
||||
public void ClickedLeft(Player player)
|
||||
{
|
||||
togglePendingFriendRequests(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ClickedRight(Player player)
|
||||
{
|
||||
togglePendingFriendRequests(player);
|
||||
}
|
||||
};
|
||||
|
||||
_toggleHubInvisibility = new IButton()
|
||||
{
|
||||
@Override
|
||||
@ -217,6 +234,13 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
|
||||
_hubPartyRequestsToggled = !_hubPartyRequestsToggled;
|
||||
BuildPage();
|
||||
}
|
||||
|
||||
protected void togglePendingFriendRequests(org.bukkit.entity.Player player)
|
||||
{
|
||||
Plugin.Get(player).PendingFriendRequests = !Plugin.Get(player).PendingFriendRequests;
|
||||
_pendingFriendRequestsToggled = !_pendingFriendRequestsToggled;
|
||||
BuildPage();
|
||||
}
|
||||
|
||||
protected void togglePrivateChat(org.bukkit.entity.Player player)
|
||||
{
|
||||
@ -276,12 +300,7 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
|
||||
clear();
|
||||
|
||||
UserPreferences userPreferences = Plugin.Get(Player);
|
||||
int index = 18;
|
||||
|
||||
if (ClientManager.Get(Player).GetRank().Has(Rank.MODERATOR) || ClientManager.Get(Player).GetRank() == Rank.YOUTUBE)
|
||||
{
|
||||
index = 9;
|
||||
}
|
||||
int index = 9;
|
||||
|
||||
buildPreference(index, Material.FIREBALL, "Hub Stacker", userPreferences.HubGames, _toggleHubGames);
|
||||
index += 2;
|
||||
@ -291,29 +310,31 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
|
||||
index += 2;
|
||||
buildPreference(index, Material.EMPTY_MAP, "Private Messaging", userPreferences.PrivateMessaging, _togglePrivateChat);
|
||||
index += 2;
|
||||
buildPreference(index, Material.SKULL_ITEM, (byte)3, "Hub Party Requests", userPreferences.PartyRequests, _toggleHubPartyRequests);
|
||||
|
||||
buildPreference(index, Material.SKULL_ITEM, (byte)3, "Hub Party Requests", userPreferences.PartyRequests, _toggleHubPartyRequests);
|
||||
|
||||
buildPreference(40, Material.RED_ROSE, "Show Pending Friend Requests", userPreferences.PendingFriendRequests, _togglePendingFriendRequests);
|
||||
|
||||
if (ClientManager.Get(Player).GetRank() == Rank.YOUTUBE)
|
||||
{
|
||||
buildPreference(39, Material.NETHER_STAR, "Hub Invisibility", userPreferences.Invisibility, _toggleHubInvisibility);
|
||||
buildPreference(41, Material.SLIME_BALL, "Hub Forcefield", userPreferences.HubForcefield, _toggleHubForcefield);
|
||||
buildPreference(38, Material.NETHER_STAR, "Hub Invisibility", userPreferences.Invisibility, _toggleHubInvisibility);
|
||||
buildPreference(42, Material.SLIME_BALL, "Hub Forcefield", userPreferences.HubForcefield, _toggleHubForcefield);
|
||||
}
|
||||
if (ClientManager.Get(Player).GetRank().Has(Rank.ADMIN))
|
||||
{
|
||||
buildPreference(37, Material.NETHER_STAR, "Hub Invisibility", userPreferences.Invisibility, _toggleHubInvisibility);
|
||||
buildPreference(39, Material.SLIME_BALL, "Hub Forcefield", userPreferences.HubForcefield, _toggleHubForcefield);
|
||||
buildPreference(41, Material.PAPER, "Mac Reports", userPreferences.ShowMacReports, _toggleMacReports);
|
||||
buildPreference(43, Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
|
||||
buildPreference(36, Material.NETHER_STAR, "Hub Invisibility", userPreferences.Invisibility, _toggleHubInvisibility);
|
||||
buildPreference(38, Material.SLIME_BALL, "Hub Forcefield", userPreferences.HubForcefield, _toggleHubForcefield);
|
||||
buildPreference(42, Material.PAPER, "Mac Reports", userPreferences.ShowMacReports, _toggleMacReports);
|
||||
buildPreference(44, Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
|
||||
}
|
||||
else if (ClientManager.Get(Player).GetRank().Has(Rank.MODERATOR))
|
||||
{
|
||||
buildPreference(39, Material.PAPER, "Mac Reports", userPreferences.ShowMacReports, _toggleMacReports);
|
||||
buildPreference(41, Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
|
||||
buildPreference(38, Material.PAPER, "Mac Reports", userPreferences.ShowMacReports, _toggleMacReports);
|
||||
buildPreference(42, Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean preferencesChanged()
|
||||
{
|
||||
return _hubGamesToggled || _hubPlayersToggled || _hubChatToggled || _hubPrivateChatToggled || _hubPartyRequestsToggled || _hubInvisibilityToggled || _hubForcefieldToggled;
|
||||
return _hubGamesToggled || _hubPlayersToggled || _hubChatToggled || _hubPrivateChatToggled || _hubPartyRequestsToggled || _hubInvisibilityToggled || _hubForcefieldToggled || _pendingFriendRequestsToggled;
|
||||
}
|
||||
}
|
@ -132,7 +132,7 @@ public class Hub extends JavaPlugin implements IRelation
|
||||
new ClassCombatShop(shopManager, clientManager, donationManager, "Knight", classManager.GetClass("Knight"));
|
||||
new ClassCombatShop(shopManager, clientManager, donationManager, "Assassin", classManager.GetClass("Assassin"));
|
||||
|
||||
//new FriendManager(this);
|
||||
new FriendManager(this, preferenceManager);
|
||||
|
||||
//Updates
|
||||
getServer().getScheduler().scheduleSyncRepeatingTask(this, new Updater(this), 1, 1);
|
||||
|
@ -45,8 +45,8 @@ public class SalesPackageManager extends MiniPlugin
|
||||
AddSalesPackage(new MonthlyHero(this));
|
||||
AddSalesPackage(new LifetimeUltra(this));
|
||||
AddSalesPackage(new LifetimeHero(this));
|
||||
AddSalesPackage(new GemHunter(this, 4));
|
||||
AddSalesPackage(new GemHunter(this, 8));
|
||||
AddSalesPackage(new GemHunter(this, 12));
|
||||
}
|
||||
|
||||
private void AddSalesPackage(SalesPackageBase salesPackage)
|
||||
|
@ -10,8 +10,8 @@ import java.io.InputStreamReader;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import net.minecraft.server.v1_7_R4.MinecraftServer;
|
||||
|
||||
import net.minecraft.server.v1_7_R4.MinecraftServer;
|
||||
import mineplex.core.CustomTagFix;
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.antihack.AntiHack;
|
||||
@ -25,6 +25,7 @@ import mineplex.core.cosmetic.CosmeticManager;
|
||||
import mineplex.core.creature.Creature;
|
||||
import mineplex.core.disguise.DisguiseManager;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.friend.FriendManager;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.inventory.InventoryManager;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
@ -125,6 +126,8 @@ public class Arcade extends JavaPlugin
|
||||
|
||||
new MemoryFix(this);
|
||||
|
||||
new FriendManager(this, preferenceManager);
|
||||
|
||||
//Updates
|
||||
getServer().getScheduler().scheduleSyncRepeatingTask(this, new Updater(this), 1, 1);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user