made all old clans ban clients get unloaded. there seems to have been problems with certain clients not unloading.
This commit is contained in:
parent
9c3a62a308
commit
734351011a
@ -1,12 +1,11 @@
|
|||||||
package mineplex.game.clans.clans.ban;
|
package mineplex.game.clans.clans.ban;
|
||||||
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLConnection;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -15,6 +14,8 @@ import org.bukkit.event.player.PlayerKickEvent;
|
|||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
@ -24,6 +25,8 @@ import mineplex.core.common.util.UtilServer;
|
|||||||
import mineplex.core.common.util.UtilTime;
|
import mineplex.core.common.util.UtilTime;
|
||||||
import mineplex.core.common.util.UtilTime.TimeUnit;
|
import mineplex.core.common.util.UtilTime.TimeUnit;
|
||||||
import mineplex.core.donation.DonationManager;
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import mineplex.game.clans.clans.ban.commands.ClansBanCommand;
|
import mineplex.game.clans.clans.ban.commands.ClansBanCommand;
|
||||||
import mineplex.game.clans.clans.ban.commands.ClansBanListCommand;
|
import mineplex.game.clans.clans.ban.commands.ClansBanListCommand;
|
||||||
import mineplex.game.clans.clans.ban.ui.ClansBanListShop;
|
import mineplex.game.clans.clans.ban.ui.ClansBanListShop;
|
||||||
@ -38,6 +41,8 @@ public class ClansBanManager extends MiniPlugin
|
|||||||
private ClansBanShop _shop;
|
private ClansBanShop _shop;
|
||||||
private ClansBanListShop _shop2;
|
private ClansBanListShop _shop2;
|
||||||
|
|
||||||
|
private Object _lock = new Object();
|
||||||
|
|
||||||
public ClansBanManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager)
|
public ClansBanManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager)
|
||||||
{
|
{
|
||||||
super("Blacklist", plugin);
|
super("Blacklist", plugin);
|
||||||
@ -60,6 +65,24 @@ public class ClansBanManager extends MiniPlugin
|
|||||||
addCommand(new ClansBanListCommand(this));
|
addCommand(new ClansBanListCommand(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void clearOldClients(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (!event.getType().equals(UpdateType.MIN_01))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized (_lock)
|
||||||
|
{
|
||||||
|
List<String> purge = Lists.newArrayList();
|
||||||
|
|
||||||
|
_clients.keySet().stream().filter(name -> Bukkit.getPlayer(name) == null).forEach(purge::add);
|
||||||
|
|
||||||
|
purge.forEach(this::UnloadClient);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void ban(ClansBanClient client, String name, long time, String reason, Callback<ClansBanClient> callback)
|
public void ban(ClansBanClient client, String name, long time, String reason, Callback<ClansBanClient> callback)
|
||||||
{
|
{
|
||||||
_repository.ban(client.AccountId, time, reason, time == -1);
|
_repository.ban(client.AccountId, time, reason, time == -1);
|
||||||
@ -135,32 +158,46 @@ public class ClansBanManager extends MiniPlugin
|
|||||||
|
|
||||||
public void UnloadClient(ClansBanClient client)
|
public void UnloadClient(ClansBanClient client)
|
||||||
{
|
{
|
||||||
String name = "";
|
synchronized (_lock)
|
||||||
|
|
||||||
for (Entry<String, ClansBanClient> entry : _clients.entrySet())
|
|
||||||
{
|
{
|
||||||
if (entry.getValue().equals(client))
|
String name = "";
|
||||||
|
|
||||||
|
for (Entry<String, ClansBanClient> entry : _clients.entrySet())
|
||||||
{
|
{
|
||||||
name = entry.getKey();
|
if (entry.getValue().equals(client))
|
||||||
break;
|
{
|
||||||
|
name = entry.getKey();
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_clients.remove(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UnloadClient(String name)
|
||||||
|
{
|
||||||
|
synchronized (_lock)
|
||||||
|
{
|
||||||
|
_clients.remove(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
_clients.remove(name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadClient(final String name, Callback<ClansBanClient> callback)
|
public void LoadClient(final String name, Callback<ClansBanClient> callback)
|
||||||
{
|
{
|
||||||
GetRepository().loadBans(name, client -> {
|
GetRepository().loadBans(name, client -> {
|
||||||
_clients.put(name, client);
|
synchronized (_lock)
|
||||||
System.out.println("> CLIENTS: " + _clients);
|
{
|
||||||
if (callback != null) callback.run(client);
|
_clients.put(name, client);
|
||||||
|
System.out.println("> CLIENTS: " + _clients);
|
||||||
|
if (callback != null) callback.run(client);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public ClansBanClient Get(String name)
|
public ClansBanClient Get(String name)
|
||||||
{
|
{
|
||||||
synchronized (this)
|
synchronized (_lock)
|
||||||
{
|
{
|
||||||
return _clients.get(name.toLowerCase());
|
return _clients.get(name.toLowerCase());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user