|
|
|
@ -3,6 +3,7 @@ package mineplex.core.communities;
|
|
|
|
|
import java.sql.ResultSet;
|
|
|
|
|
import java.sql.SQLException;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.LinkedList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
@ -20,8 +21,6 @@ import org.bukkit.event.player.AsyncPlayerChatEvent;
|
|
|
|
|
import org.bukkit.event.player.PlayerJoinEvent;
|
|
|
|
|
import org.bukkit.plugin.java.JavaPlugin;
|
|
|
|
|
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
|
|
|
|
|
|
|
import mineplex.core.Managers;
|
|
|
|
|
import mineplex.core.MiniDbClientPlugin;
|
|
|
|
|
import mineplex.core.account.CoreClientManager;
|
|
|
|
@ -87,7 +86,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|
|
|
|
private ServerRepository _serverRepo;
|
|
|
|
|
private boolean _us;
|
|
|
|
|
|
|
|
|
|
private boolean _cycling = false;
|
|
|
|
|
private volatile boolean _cycling = false;
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("deprecation")
|
|
|
|
|
public CommunityManager(JavaPlugin plugin, CoreClientManager clientManager)
|
|
|
|
@ -204,15 +203,10 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|
|
|
|
_cycling = true;
|
|
|
|
|
runAsync(() ->
|
|
|
|
|
{
|
|
|
|
|
final List<Integer> resultant = Lists.newArrayList();
|
|
|
|
|
final List<Integer> ids = new LinkedList<>();
|
|
|
|
|
_loadedCommunities.values().stream().filter(c -> c.getMembers().size() >= 5 && c.getPrivacySetting() != PrivacySetting.PRIVATE).forEach(c -> resultant.add(c.getId()));
|
|
|
|
|
_loadedCommunities.values().stream().filter(c -> c.getMembers().size() >= 5 && c.getPrivacySetting() != PrivacySetting.PRIVATE).forEach(c -> ids.add(c.getId()));
|
|
|
|
|
|
|
|
|
|
Random random = new Random();
|
|
|
|
|
while (!resultant.isEmpty())
|
|
|
|
|
{
|
|
|
|
|
ids.add(resultant.remove(random.nextInt(resultant.size())));
|
|
|
|
|
}
|
|
|
|
|
Collections.shuffle(ids);
|
|
|
|
|
|
|
|
|
|
runSync(() ->
|
|
|
|
|
{
|
|
|
|
@ -321,7 +315,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|
|
|
|
if (Bukkit.getPlayer(playerUUID) != null)
|
|
|
|
|
{
|
|
|
|
|
Get(Bukkit.getPlayer(playerUUID)).joinCommunity(community);
|
|
|
|
|
Get(Bukkit.getPlayer(playerUUID)).Invites.remove(community.getId());
|
|
|
|
|
runSync(() -> Get(Bukkit.getPlayer(playerUUID)).Invites.remove(community.getId()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
community.message(F.main(getName(), F.name(playerName) + " has joined " + F.name(community.getName()) + "!"));
|
|
|
|
@ -341,19 +335,22 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (Bukkit.getPlayer(targetUUID) != null)
|
|
|
|
|
runSync(() ->
|
|
|
|
|
{
|
|
|
|
|
if (!Get(Bukkit.getPlayer(targetUUID)).Invites.contains(community.getId()))
|
|
|
|
|
if (Bukkit.getPlayer(targetUUID) != null)
|
|
|
|
|
{
|
|
|
|
|
Get(Bukkit.getPlayer(targetUUID)).Invites.add(community.getId());
|
|
|
|
|
if (Managers.get(PreferencesManager.class).get(Bukkit.getPlayer(targetUUID)).isActive(Preference.COMMUNITY_INVITES))
|
|
|
|
|
if (!Get(Bukkit.getPlayer(targetUUID)).Invites.contains(community.getId()))
|
|
|
|
|
{
|
|
|
|
|
new JsonMessage(F.main(getName(), "You have been invited to join " + F.elem(community.getName()) + " by " + F.name(sender) + "! Click to join!")).click(ClickEvent.RUN_COMMAND, "/community join " + community.getName()).sendToPlayer(Bukkit.getPlayer(targetUUID));
|
|
|
|
|
Get(Bukkit.getPlayer(targetUUID)).Invites.add(community.getId());
|
|
|
|
|
if (Managers.get(PreferencesManager.class).get(Bukkit.getPlayer(targetUUID)).isActive(Preference.COMMUNITY_INVITES))
|
|
|
|
|
{
|
|
|
|
|
new JsonMessage(F.main(getName(), "You have been invited to join " + F.elem(community.getName()) + " by " + F.name(sender) + "! Click to join!")).click(ClickEvent.RUN_COMMAND, "/community join " + community.getName()).sendToPlayer(Bukkit.getPlayer(targetUUID));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UtilServer.CallEvent(new CommunityMemberDataUpdateEvent(Bukkit.getPlayer(targetUUID)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UtilServer.CallEvent(new CommunityMemberDataUpdateEvent(Bukkit.getPlayer(targetUUID)));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
community.message(F.main(getName(), F.name(sender) + " has invited " + F.name(targetName) + " to " + F.name(community.getName()) + "!"), CommunityRole.COLEADER);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -364,15 +361,18 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (Bukkit.getPlayer(targetUUID) != null)
|
|
|
|
|
runSync(() ->
|
|
|
|
|
{
|
|
|
|
|
Get(Bukkit.getPlayer(targetUUID)).Invites.remove(community.getId());
|
|
|
|
|
if (Managers.get(PreferencesManager.class).get(Bukkit.getPlayer(targetUUID)).isActive(Preference.COMMUNITY_INVITES) && announce)
|
|
|
|
|
if (Bukkit.getPlayer(targetUUID) != null)
|
|
|
|
|
{
|
|
|
|
|
UtilPlayer.message(Bukkit.getPlayer(targetUUID), F.main(getName(), "Your invitation to join " + F.elem(community.getName()) + " has been revoked by " + F.name(sender) + "!"));
|
|
|
|
|
Get(Bukkit.getPlayer(targetUUID)).Invites.remove(community.getId());
|
|
|
|
|
if (Managers.get(PreferencesManager.class).get(Bukkit.getPlayer(targetUUID)).isActive(Preference.COMMUNITY_INVITES) && announce)
|
|
|
|
|
{
|
|
|
|
|
UtilPlayer.message(Bukkit.getPlayer(targetUUID), F.main(getName(), "Your invitation to join " + F.elem(community.getName()) + " has been revoked by " + F.name(sender) + "!"));
|
|
|
|
|
}
|
|
|
|
|
UtilServer.CallEvent(new CommunityMemberDataUpdateEvent(Bukkit.getPlayer(targetUUID)));
|
|
|
|
|
}
|
|
|
|
|
UtilServer.CallEvent(new CommunityMemberDataUpdateEvent(Bukkit.getPlayer(targetUUID)));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
if (announce)
|
|
|
|
|
{
|
|
|
|
|
community.message(F.main(getName(), F.name(targetName) + "'s invitation to join " + F.name(community.getName()) + " has been revoked by " + F.name(sender) + "!"), CommunityRole.COLEADER);
|
|
|
|
@ -416,11 +416,12 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|
|
|
|
UtilServer.CallEvent(new CommunityJoinRequestsUpdateEvent(community));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void handleCommunityCreation(Integer id, UUID leaderUUID)
|
|
|
|
|
public void handleCommunityCreation(Integer id, String name, Integer leaderId, UUID leaderUUID, String leaderName)
|
|
|
|
|
{
|
|
|
|
|
runAsync(() ->
|
|
|
|
|
{
|
|
|
|
|
_repo.loadCommunity(id, _loadedCommunities);
|
|
|
|
|
_loadedCommunities.put(id, new Community(id, name));
|
|
|
|
|
_loadedCommunities.get(id).getMembers().put(leaderUUID, new CommunityMemberInfo(leaderName, leaderUUID, leaderId, CommunityRole.LEADER, System.currentTimeMillis()));
|
|
|
|
|
runSync(() ->
|
|
|
|
|
{
|
|
|
|
|
Community community = _loadedCommunities.get(id);
|
|
|
|
@ -443,7 +444,10 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|
|
|
|
}
|
|
|
|
|
community.message(F.main(getName(), F.name(senderName) + " has disbanded community " + F.name(community.getName()) + "!"));
|
|
|
|
|
UtilServer.CallEvent(new CommunityDisbandEvent(community));
|
|
|
|
|
UtilServer.GetPlayers().stream().filter(player -> Get(player).Invites.contains(community.getId())).forEach(player -> Get(player).Invites.remove(community.getId()));
|
|
|
|
|
runSync(() ->
|
|
|
|
|
{
|
|
|
|
|
UtilServer.GetPlayers().stream().filter(player -> Get(player).Invites.contains(community.getId())).forEach(player -> Get(player).Invites.remove(community.getId()));
|
|
|
|
|
});
|
|
|
|
|
community.getMembers().keySet().stream().filter(uuid -> Bukkit.getPlayer(uuid) != null).forEach(uuid -> Get(Bukkit.getPlayer(uuid)).leaveCommunity(community));
|
|
|
|
|
_loadedCommunities.remove(community.getId());
|
|
|
|
|
runSync(() ->
|
|
|
|
@ -514,7 +518,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
UtilPlayer.message(sender, F.main(getName(), "Either " + F.name(target) + " does not exist or you have already invited them to " + F.name(community.getName()) + "!"));
|
|
|
|
|
UtilPlayer.message(sender, F.main(getName(), F.name(target) + " does not exist!"));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
@ -645,7 +649,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|
|
|
|
new CommunityUpdateMemberRole(community.getId(), sender.getName(), info.UUID.toString(), role.toString()).publish();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void handleCreate(Player sender, int accountId, String name)
|
|
|
|
|
public void handleCreate(Player sender, String senderName, int accountId, String name)
|
|
|
|
|
{
|
|
|
|
|
if (_creating.contains(sender.getUniqueId()))
|
|
|
|
|
{
|
|
|
|
@ -664,7 +668,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
new CommunityCreate(sender.getUniqueId().toString(), id).publish();
|
|
|
|
|
new CommunityCreate(sender.getUniqueId().toString(), senderName, accountId, id, name).publish();
|
|
|
|
|
runSync(() -> _creating.remove(sender.getUniqueId()));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|