Java.lang.IllegalStateException: асинхронный кик игрокаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java.lang.IllegalStateException: асинхронный кик игрока

Сообщение Anonymous »

Когда я запускаю созданный мной плагин spigot, когда игрок выполняет определенные действия, его кикают. По какой-то причине вместо того, чтобы выгнать их после того, как они отправили определенные пакеты 20 раз, он выдает ошибку: [TenKAC] Необработанное исключение номер 64 произошло в onPacketReception(PacketEvent) для TenKAC java.lang.IllegalStateException: Асинхронный кик игрока! в org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:14) ~[spigot.jar:git-Spigot-21fe707-741a1bd] в org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer.kickPlayer(CraftPlayer.java:214) ~[spigot.jar:git-Spigot-21fe707-741a1bd] в cc.funkemunky.tenkac.checks.Check.flag(Check.java:57) ~[tenkac.jar:?] в cc.funkemunky.tenkac.checks. motion.Killaura.access$000(Killaura.java:23) ~[tenkac.jar:?] в cc.funkemunky.tenkac.checks.movement.Killaura$1.onPacketReception(Killaura.java:33) ~[tenkac.jar:? ] в com.comphenix.protocol.injector.SortedPacketListenerList.invokeReceptionListener(SortedPacketListenerList.java:122) [ProtocolLib.jar:?] в com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketRecieving(SortedPacketListenerList.java:75) [ProtocolLib.jar :?] по адресу com.comphenix.protocol.injector.PacketFilterManager.postPacketToListeners(PacketFilterManager.java:557) [ProtocolLib.jar:?] по адресу com.comphenix.protocol.injector.PacketFilterManager.invokePacketReception(PacketFilterManager.java:521) [ProtocolLib .jar:?] по адресу com.comphenix.protocol.injector.netty.manager.NetworkManagerInjector.onPacketReception(NetworkManagerInjector.java:118) [ProtocolLib.jar:?] по адресу com.comphenix.protocol.injector.netty.channel.NettyChannelInjector. processInboundPacket(NettyChannelInjector.java:500) [ProtocolLib.jar:?] в com.comphenix.protocol.injector.netty.channel.InboundPacketInterceptor.channelRead(InboundPacketInterceptor.java:33) [ProtocolLib.jar:?] в io.netty. Channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [spigot.jar:git-Spigot-21fe707-741a1bd] в io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [spigot.ja r:git-Spigot -21fe707-741a1bd] в io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [spigot.jar:git-Spigot-21fe707-741a1bd] в io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChan) нелХандлерКонтекст. java:333) [spigot.jar:git-Spigot-21fe707-741a1bd] на io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [spigot.jar:git-Spigot-21fe707-741a1bd] на io. netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [spigot.jar:git-Spigot-21fe707-741a1bd] в io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [spigot.ja р :git-Spigot-21fe707-741a1bd] в io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [spigot.jar:git-Spigot-21fe707-741a1bd] в io.netty.handler.codec.ByteToMessageDecoder. ChannelRead(ByteToMessageDecoder.java:163) [spigot.jar:git-Spigot-21fe707-741a1bd] в io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [spigot.jar:git-Spigot-21fe707-741a 1сп. ] в io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [spigot.jar:git-Spigot-21fe707-741a1bd] в io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [spigot.jar:git-Spigot-21fe707-741a1bd] в io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [spigot.jar:git-Spigot-21fe707-741a1bd] в io.netty.channel. AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [spigot.jar:git-Spigot-21fe707-741a1bd] в io.netty.handler.timeout.ReadTimeoutHandler.channelRead(ReadTimeoutHandler.java:150) [spigot.jar:git-Spigot -21fe707-741a1bd] в io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [spigot.jar:git-Spigot-21fe707-741a1bd] в io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(Abs) трактChannelHandlerContext.java: 319) [spigot.jar:git-Spigot-21fe707-741a1bd] на io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [spigot.jar:git-Spigot-21fe707-741a1bd] на io.netty. Channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:130) [spigot.jar:git-Spigot-21fe707-741a1bd] в io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) [spigot .jar:git-Spigot-21fe707-741a1bd] на io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) [spigot.jar:git-Spigot-21fe707-741a1bd] на io.netty.channel. nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) [spigot.jar:git-Spigot-21fe707-741a1bd] в io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) [spigot.jar:git -Spigot-21fe707-741a1bd] в io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [spigot.jar:git-Spigot-21fe707-741a1bd] в java.lang.Thread.run(Неизвестно) Источник) [?:1.8.0_301]
Мне нужно знать, как кикнуть игрока, когда он «пометил» 20 раз. Я вижу, что игрок помечается до 19x, но при 20x появляется сообщение об ошибке, когда игрока следует кикнуть: Вот мой код, который должен кикнуть игрока, как только он пометит:

Код: Выделить всё

package cc.funkemunky.tenkac.checks.movement;

import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;

import cc.funkemunky.tenkac.AntiCheat;
import cc.funkemunky.tenkac.checks.Check;
import cc.funkemunky.tenkac.checks.CheckType;
import cc.funkemunky.tenkac.data.DataPlayer;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketEvent;
import com.comphenix.protocol.events.PacketListener;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;

import static org.bukkit.Bukkit.getScheduler;
import static org.bukkit.Bukkit.getServer;

public class Killaura extends Check {
private int buffer = 0;
public Killaura(String name, CheckType type, boolean enabled, boolean punishable, int max) {
super(name, type, enabled, punishable, max);
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(AntiCheat.getInstance(),
PacketType.Play.Client.POSITION, PacketType.Play.Client.POSITION_LOOK, PacketType.Play.Client.LOOK, PacketType.Play.Client.FLYING, PacketType.Play.Client.USE_ENTITY) {
@Override
public void onPacketReceiving(PacketEvent event) {
DataPlayer data = AntiCheat.getInstance().getDataManager().getDataPlayer(event.getPlayer());
if (event.getPacketType().equals(PacketType.Play.Client.USE_ENTITY)) {
flag(event.getPlayer(), "Player sent flying packet too late: " + Math.abs(System.currentTimeMillis() - data.lastFlying) + "ms!",
"Flagged player may be using: &3♦ &l&f&lF&e&ll&6&ly &3♦ &l&9&lK&1&li&5&ll&d&ll&b&la&3&lu&9&lr&1&la");

if ((Math.abs(System.currentTimeMillis() - data.lastFlying) == 0) || (Math.abs(data.lastFlying) == 0) || (Math.abs(System.currentTimeMillis()) == 0)) {
} else if (Math.abs(System.currentTimeMillis() - data.lastFlying) < 5) {
++buffer;
getServer().getConsoleSender().sendMessage(ChatColor.GREEN + "A player sent a fly packet too late! The packet was: " + (5 - (Math.abs(System.currentTimeMillis() - data.lastFlying))) + "ms too late!");
if (buffer > 1) {
flag(event.getPlayer(), "Player sent flying packet too late: " + Math.abs(System.currentTimeMillis() - data.lastFlying) + "ms!",
"Flagged player may be using: &3♦ &l&f&lF&e&ll&6&ly &3♦ &l&9&lK&1&li&5&ll&d&ll&b&la&3&lu&9&lr&1&la");
}
} else {
if (buffer > 0) {
getServer().getConsoleSender().sendMessage(ChatColor.GREEN + "Player's late fly packet has been buffered!");
}
buffer = 0;
}
} else {
data.lastFlying = System.currentTimeMillis();
}
}

});
}
}
и

Код: Выделить всё

package cc.funkemunky.tenkac.checks;

import cc.funkemunky.tenkac.AntiCheat;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;

import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import java.util.WeakHashMap;
import java.util.concurrent.TimeUnit;

import static org.bukkit.Bukkit.getServer;

public abstract class Check implements Listener {

protected String name;
protected CheckType type;
protected boolean enabled;
protected boolean punishable;
protected int max;

public Map
  violations = new WeakHashMap();

public Check(String name, CheckType type, boolean enabled, boolean punishable, int max) {
this.name = name;
this.type = type;
this.enabled = enabled;
this.punishable = punishable;
this.max = max;

Bukkit.getPluginManager().registerEvents(this, AntiCheat.getInstance());
}

synchronized protected void flag(Player player, String... information) {
int violations = this.violations.getOrDefault(player, 0) + 1;
if (information != null) {
StringBuilder formattedInfo = new StringBuilder();
for (String string : information) {
formattedInfo.append(string).append(", ");
}
for (Player staff : Bukkit.getOnlinePlayers()) {
if (staff.hasPermission("anticheat.staff")) {
staff.sendMessage(ChatColor.translateAlternateColorCodes('&', "&1[&b&lPvPCamp&1] &9" + player.getName() + " &7has been detected for &9" + name + " &1[&3" + formattedInfo.toString() + "&1]" + "&1(&b" + violations + "&1)"));
}
}
} else {

}
if (violations > max) {
try {
TimeUnit.MILLISECONDS.sleep(50);
} catch (InterruptedException e) {
}
player.kickPlayer("You have been kicked for " + name);
}
this.violations.put(player, violations);
if (violations > 0) {
getServer().getConsoleSender().sendMessage(ChatColor.DARK_PURPLE + player.getName() + " has " + violations + " violations!");

}
}
}

Но вместо этого выдается ошибка, указанная выше.


Подробнее здесь: https://stackoverflow.com/questions/781 ... layer-kick
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»