Fix browser player counts and interaction
This commit is contained in:
parent
3786cb480d
commit
73674d56f7
@ -82,6 +82,7 @@ import mineplex.core.preferences.Preference;
|
|||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
import mineplex.core.recharge.Recharge;
|
import mineplex.core.recharge.Recharge;
|
||||||
import mineplex.core.serverConfig.ServerConfiguration;
|
import mineplex.core.serverConfig.ServerConfiguration;
|
||||||
|
import mineplex.core.treasure.animation.animations.reward.CommonRewardAnimation;
|
||||||
import mineplex.serverdata.Region;
|
import mineplex.serverdata.Region;
|
||||||
import mineplex.serverdata.commands.ServerCommandManager;
|
import mineplex.serverdata.commands.ServerCommandManager;
|
||||||
import mineplex.serverdata.data.PlayerStatus;
|
import mineplex.serverdata.data.PlayerStatus;
|
||||||
@ -165,7 +166,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|||||||
return _prefManager;
|
return _prefManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
private CustomDataManager getCustomDataManager()
|
public CustomDataManager getCustomDataManager()
|
||||||
{
|
{
|
||||||
if (_customDataManager == null)
|
if (_customDataManager == null)
|
||||||
{
|
{
|
||||||
@ -219,7 +220,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|||||||
|
|
||||||
if (!data.Invites.isEmpty())
|
if (!data.Invites.isEmpty())
|
||||||
{
|
{
|
||||||
loadBrowserCommunities(data.Invites, null);
|
runAsync(() -> loadBrowserCommunities(data.Invites, null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -400,7 +401,22 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
runAsync(() -> consumer.accept(_repo.loadCommunity(new HashMap<>(1), id)));
|
runAsync(() ->
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
final Map<Integer, Community> store = new HashMap<>();
|
||||||
|
_repo.loadCommunity(store, id);
|
||||||
|
|
||||||
|
if (!store.isEmpty())
|
||||||
|
{
|
||||||
|
runSync(() -> consumer.accept(store.get(id)));
|
||||||
|
}
|
||||||
|
} catch (Exception ex)
|
||||||
|
{
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICommunity getBrowserCommunity(int id)
|
public ICommunity getBrowserCommunity(int id)
|
||||||
@ -424,9 +440,19 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|||||||
return _loadedCommunities.get(id);
|
return _loadedCommunities.get(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ICommunity getCommunity(String name)
|
||||||
|
{
|
||||||
|
return getByName(_loadedCommunities, name, getByName(_browserCommunities, name, null));
|
||||||
|
}
|
||||||
|
|
||||||
public Community getLoadedCommunity(String name)
|
public Community getLoadedCommunity(String name)
|
||||||
{
|
{
|
||||||
for (Entry<Integer, Community> entry : _loadedCommunities.entrySet())
|
return (Community) getByName(_loadedCommunities, name, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ICommunity getByName(Map<Integer, ? extends ICommunity> map, String name, ICommunity def)
|
||||||
|
{
|
||||||
|
for (Entry<Integer, ? extends ICommunity> entry : map.entrySet())
|
||||||
{
|
{
|
||||||
if (entry.getValue().getName().equalsIgnoreCase(name))
|
if (entry.getValue().getName().equalsIgnoreCase(name))
|
||||||
{
|
{
|
||||||
@ -434,7 +460,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return def;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handleCommunitySettingUpdate(Integer id, String sender, CommunitySetting setting, String newValue)
|
public void handleCommunitySettingUpdate(Integer id, String sender, CommunitySetting setting, String newValue)
|
||||||
@ -955,8 +981,12 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
|||||||
if (!load.isEmpty())
|
if (!load.isEmpty())
|
||||||
{
|
{
|
||||||
_browserCommunities.keySet().removeAll(load);
|
_browserCommunities.keySet().removeAll(load);
|
||||||
_repo.handlePlayerJoin(_loadedCommunities, load, accountId);
|
|
||||||
System.out.println("Loaded communities: " + load + "; Total: " + _loadedCommunities.size());
|
runAsync(() ->
|
||||||
|
{
|
||||||
|
_repo.handlePlayerJoin(_loadedCommunities, load, accountId);
|
||||||
|
System.out.println("Loaded communities: " + load + "; Total: " + _loadedCommunities.size());
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,8 +12,6 @@ import java.util.function.Consumer;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
import mineplex.core.common.timing.TimingManager;
|
import mineplex.core.common.timing.TimingManager;
|
||||||
import mineplex.core.common.util.Callback;
|
import mineplex.core.common.util.Callback;
|
||||||
import mineplex.core.communities.data.BrowserCommunity;
|
import mineplex.core.communities.data.BrowserCommunity;
|
||||||
@ -38,7 +36,7 @@ public class CommunityRepository extends RepositoryBase
|
|||||||
{
|
{
|
||||||
private static final String GET_COMMUNITIES_BY_ID = "SELECT * FROM communities";
|
private static final String GET_COMMUNITIES_BY_ID = "SELECT * FROM communities";
|
||||||
private static final String GET_COMMUNITY_MEMBERS = "SELECT cm.communityId, cm.accountId, cm.communityRole, ac.name, ac.uuid, ac.lastLogin, cm.readingChat FROM communityMembers cm INNER JOIN accounts ac ON ac.id=cm.accountId";
|
private static final String GET_COMMUNITY_MEMBERS = "SELECT cm.communityId, cm.accountId, cm.communityRole, ac.name, ac.uuid, ac.lastLogin, cm.readingChat FROM communityMembers cm INNER JOIN accounts ac ON ac.id=cm.accountId";
|
||||||
private static final String GET_COMMUNITY_SIZE = "SELECT COUNT(accountId) AS total, communityId FROM communityMembers";
|
private static final String GET_COMMUNITY_SIZE = "SELECT communityId FROM communityMembers";
|
||||||
private static final String GET_COMMUNITY_JOIN_REQUESTS = "SELECT cjr.communityId, cjr.accountId, ac.name, ac.uuid FROM communityJoinRequests cjr INNER JOIN accounts ac ON ac.id=cjr.accountId WHERE cjr.accountId=?;";
|
private static final String GET_COMMUNITY_JOIN_REQUESTS = "SELECT cjr.communityId, cjr.accountId, ac.name, ac.uuid FROM communityJoinRequests cjr INNER JOIN accounts ac ON ac.id=cjr.accountId WHERE cjr.accountId=?;";
|
||||||
private static final String GET_COMMUNITY_SETTINGS = "SELECT communityId, settingId, settingValue FROM communitySettings";
|
private static final String GET_COMMUNITY_SETTINGS = "SELECT communityId, settingId, settingValue FROM communitySettings";
|
||||||
private static final String GET_PUBLIC_COMMUNITIES = "SELECT communityId FROM communitySettings WHERE settingId=8 AND settingValue='true';";
|
private static final String GET_PUBLIC_COMMUNITIES = "SELECT communityId FROM communitySettings WHERE settingId=8 AND settingValue='true';";
|
||||||
@ -134,19 +132,19 @@ public class CommunityRepository extends RepositoryBase
|
|||||||
{
|
{
|
||||||
while (resultSet.next())
|
while (resultSet.next())
|
||||||
{
|
{
|
||||||
int members = resultSet.getInt("total");
|
int communityId = resultSet.getInt("communityId");
|
||||||
int id = resultSet.getInt("communityId");
|
BrowserCommunity com = store.get(communityId);
|
||||||
|
|
||||||
BrowserCommunity com = store.get(id);
|
|
||||||
if (com != null)
|
if (com != null)
|
||||||
{
|
{
|
||||||
com.setMembers(members);
|
com.addMember();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, idColumns);
|
}, idColumns);
|
||||||
|
|
||||||
idColumns = genIdColumns("communityId", load);
|
idColumns = genIdColumns("communityId", load);
|
||||||
executeQuery(connection, GET_COMMUNITY_SETTINGS + inClause.replace("%col", "communityId"), settingSet ->
|
executeQuery(connection, GET_COMMUNITY_SETTINGS
|
||||||
|
+ inClause.replace("%col", "communityId").replace(";", "")
|
||||||
|
+ " AND (settingId=5 OR settingId=6 OR settingId=7);", settingSet ->
|
||||||
{
|
{
|
||||||
while (settingSet.next())
|
while (settingSet.next())
|
||||||
{
|
{
|
||||||
@ -177,9 +175,9 @@ public class CommunityRepository extends RepositoryBase
|
|||||||
/**
|
/**
|
||||||
* Loads and stores a single community.
|
* Loads and stores a single community.
|
||||||
*/
|
*/
|
||||||
public Community loadCommunity(final Map<Integer, Community> store, final int id)
|
public void loadCommunity(final Map<Integer, Community> store, final int id)
|
||||||
{
|
{
|
||||||
return loadInternal(store, Collections.singletonList(id), -1).get(0);
|
loadInternal(store, Collections.singletonList(id), -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -49,6 +49,7 @@ public class CommunityCommand extends MultiCommandBase<CommunityManager>
|
|||||||
UtilPlayer.message(caller, F.help("/com disband <community>", "Disbands a community you own", ChatColor.DARK_AQUA));
|
UtilPlayer.message(caller, F.help("/com disband <community>", "Disbands a community you own", ChatColor.DARK_AQUA));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Community community = Plugin.getLoadedCommunity(args[0]);
|
Community community = Plugin.getLoadedCommunity(args[0]);
|
||||||
if (community == null)
|
if (community == null)
|
||||||
{
|
{
|
||||||
|
@ -9,6 +9,7 @@ import mineplex.core.common.util.UtilPlayer;
|
|||||||
import mineplex.core.communities.data.Community;
|
import mineplex.core.communities.data.Community;
|
||||||
import mineplex.core.communities.data.Community.PrivacySetting;
|
import mineplex.core.communities.data.Community.PrivacySetting;
|
||||||
import mineplex.core.communities.CommunityManager;
|
import mineplex.core.communities.CommunityManager;
|
||||||
|
import mineplex.core.communities.data.ICommunity;
|
||||||
|
|
||||||
public class CommunityJoinCommand extends CommandBase<CommunityManager>
|
public class CommunityJoinCommand extends CommandBase<CommunityManager>
|
||||||
{
|
{
|
||||||
@ -25,22 +26,27 @@ public class CommunityJoinCommand extends CommandBase<CommunityManager>
|
|||||||
UtilPlayer.message(caller, F.help("/com join <community>", "Joins a community that is open or you have been invited to", ChatColor.DARK_AQUA));
|
UtilPlayer.message(caller, F.help("/com join <community>", "Joins a community that is open or you have been invited to", ChatColor.DARK_AQUA));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Community c = Plugin.getLoadedCommunity(args[0]);
|
|
||||||
|
ICommunity c = Plugin.getCommunity(args[0]);
|
||||||
if (c == null)
|
if (c == null)
|
||||||
{
|
{
|
||||||
UtilPlayer.message(caller, F.main(Plugin.getName(), "That community was not found!"));
|
UtilPlayer.message(caller, F.main(Plugin.getName(), "That community was not found!"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (c.getMembers().containsKey(caller.getUniqueId()))
|
|
||||||
{
|
// edge case someone can try if they really want: open communities with less than 5 members are forgotten here
|
||||||
UtilPlayer.message(caller, F.main(Plugin.getName(), "You are already in " + F.name(c.getName()) + "!"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (c.getPrivacySetting() != PrivacySetting.OPEN && !Plugin.Get(caller).Invites.contains(c.getId()))
|
if (c.getPrivacySetting() != PrivacySetting.OPEN && !Plugin.Get(caller).Invites.contains(c.getId()))
|
||||||
{
|
{
|
||||||
UtilPlayer.message(caller, F.main(Plugin.getName(), "You are have not been invited to " + F.name(c.getName()) + "!"));
|
UtilPlayer.message(caller, F.main(Plugin.getName(), "You are have not been invited to " + F.name(c.getName()) + "!"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (c instanceof Community && ((Community) c).getMembers().containsKey(caller.getUniqueId()))
|
||||||
|
{
|
||||||
|
UtilPlayer.message(caller, F.main(Plugin.getName(), "You are already in " + F.name(c.getName()) + "!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Plugin.handleJoin(caller, c, Plugin.Get(caller).Invites.contains(c.getId()));
|
Plugin.handleJoin(caller, c, Plugin.Get(caller).Invites.contains(c.getId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -64,6 +64,11 @@ public class BrowserCommunity implements ICommunity
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addMember()
|
||||||
|
{
|
||||||
|
_members++;
|
||||||
|
}
|
||||||
|
|
||||||
public BrowserCommunity setDescription(String description)
|
public BrowserCommunity setDescription(String description)
|
||||||
{
|
{
|
||||||
_description = Preconditions.checkNotNull(description);
|
_description = Preconditions.checkNotNull(description);
|
||||||
|
Loading…
Reference in New Issue
Block a user