Try to prevent duplicate bans even more
This commit is contained in:
parent
1bcbddee87
commit
a0716ae774
@ -1,9 +1,11 @@
|
|||||||
package mineplex.core.antihack;
|
package mineplex.core.antihack;
|
||||||
|
|
||||||
import javax.xml.bind.DatatypeConverter;
|
import javax.xml.bind.DatatypeConverter;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
@ -27,6 +29,7 @@ import org.bukkit.event.entity.EntityDamageEvent;
|
|||||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.event.player.PlayerToggleFlightEvent;
|
import org.bukkit.event.player.PlayerToggleFlightEvent;
|
||||||
import org.bukkit.plugin.ServicePriority;
|
import org.bukkit.plugin.ServicePriority;
|
||||||
|
|
||||||
@ -138,7 +141,9 @@ public class AntiHack extends MiniPlugin
|
|||||||
|
|
||||||
private final Set<String> _detailedMessages = new HashSet<>();
|
private final Set<String> _detailedMessages = new HashSet<>();
|
||||||
|
|
||||||
private Set<Player> _pendingBan = new HashSet<>();
|
private Set<Player> _pendingBan = Collections.synchronizedSet(new HashSet<>());
|
||||||
|
|
||||||
|
private Set<UUID> _banned = Collections.synchronizedSet(new HashSet<>());
|
||||||
|
|
||||||
// These are the GWEN checks to ignore when handling PlayerViolationEvent
|
// These are the GWEN checks to ignore when handling PlayerViolationEvent
|
||||||
private HashSet<Class<? extends Check>> _ignoredChecks = new HashSet<>();
|
private HashSet<Class<? extends Check>> _ignoredChecks = new HashSet<>();
|
||||||
@ -186,11 +191,18 @@ public class AntiHack extends MiniPlugin
|
|||||||
new BanwaveAnimationSpin().run(player, after);
|
new BanwaveAnimationSpin().run(player, after);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onQuit(PlayerQuitEvent event)
|
||||||
|
{
|
||||||
|
UUID uuid = event.getPlayer().getUniqueId();
|
||||||
|
runSync(() -> _banned.remove(uuid));
|
||||||
|
}
|
||||||
|
|
||||||
public void doBan(Player player, Class<? extends Check> cause)
|
public void doBan(Player player, Class<? extends Check> cause)
|
||||||
{
|
{
|
||||||
runSync(() ->
|
runSync(() ->
|
||||||
{
|
{
|
||||||
if (_pendingBan.add(player))
|
if (_pendingBan.add(player) && !_banned.contains(player.getUniqueId()))
|
||||||
{
|
{
|
||||||
CoreClient coreClient = _clientManager.Get(player);
|
CoreClient coreClient = _clientManager.Get(player);
|
||||||
|
|
||||||
@ -215,7 +227,11 @@ public class AntiHack extends MiniPlugin
|
|||||||
|
|
||||||
if (coreClient.GetRank().has(Rank.TWITCH))
|
if (coreClient.GetRank().has(Rank.TWITCH))
|
||||||
{
|
{
|
||||||
doPunish.accept(result -> _pendingBan.remove(player));
|
doPunish.accept(result ->
|
||||||
|
{
|
||||||
|
_pendingBan.remove(player);
|
||||||
|
_banned.add(player.getUniqueId());
|
||||||
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -225,6 +241,7 @@ public class AntiHack extends MiniPlugin
|
|||||||
if (result == PunishmentResponse.Punished)
|
if (result == PunishmentResponse.Punished)
|
||||||
{
|
{
|
||||||
announceBan(player);
|
announceBan(player);
|
||||||
|
_banned.add(player.getUniqueId());
|
||||||
}
|
}
|
||||||
_pendingBan.remove(player);
|
_pendingBan.remove(player);
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user