From 2509739de83f7ab45ee2746797fe28b892a8118c Mon Sep 17 00:00:00 2001 From: Niki4tap Date: Wed, 2 Sep 2026 02:42:37 +0300 Subject: [PATCH 1/2] don't tick afk on utility/broken packets --- .../li/cil/oc/common/PacketHandler.scala | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/scala/li/cil/oc/common/PacketHandler.scala b/src/main/scala/li/cil/oc/common/PacketHandler.scala index ef03cd7483..8888f0611f 100644 --- a/src/main/scala/li/cil/oc/common/PacketHandler.scala +++ b/src/main/scala/li/cil/oc/common/PacketHandler.scala @@ -30,7 +30,20 @@ abstract class PacketHandler { try { stream = new ByteBufInputStream(data) if (stream.read() != 0) stream = new InflaterInputStream(stream) - dispatch(new PacketParser(stream, player)) + val packetParser = new PacketParser(stream, player) + dispatch(packetParser) + + // Avoid AFK kicks by marking players as non-idle when they send packets. + // This will usually be stuff like typing while in screen GUIs. + player match { + case mp: EntityPlayerMP => { + packetParser.packetType match { + case PacketType.TextBufferInit => // This packet isn't a player interaction result, don't tick the afk timer + case _ => mp.func_143004_u() + } + } + case _ => // Uh... OK? + } } catch { case e: Throwable => OpenComputers.log.warn("Received a badly formatted packet.", e) @@ -43,13 +56,6 @@ abstract class PacketHandler { data.release(); } } - - // Avoid AFK kicks by marking players as non-idle when they send packets. - // This will usually be stuff like typing while in screen GUIs. - player match { - case mp: EntityPlayerMP => mp.func_143004_u() - case _ => // Uh... OK? - } } /** @@ -146,4 +152,4 @@ abstract class PacketHandler { def readPacketType() = PacketType(readByte()) } -} \ No newline at end of file +} From 84febe08edec3b60542f6a4576643d66fc2fcead Mon Sep 17 00:00:00 2001 From: hinyb <40139991+hinyb@users.noreply.github.com> Date: Thu, 3 Sep 2026 13:48:49 +0800 Subject: [PATCH 2/2] fix: add RobotStateRequest to afk bypass --- src/main/scala/li/cil/oc/common/PacketHandler.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/li/cil/oc/common/PacketHandler.scala b/src/main/scala/li/cil/oc/common/PacketHandler.scala index 8888f0611f..fd3acde234 100644 --- a/src/main/scala/li/cil/oc/common/PacketHandler.scala +++ b/src/main/scala/li/cil/oc/common/PacketHandler.scala @@ -38,7 +38,7 @@ abstract class PacketHandler { player match { case mp: EntityPlayerMP => { packetParser.packetType match { - case PacketType.TextBufferInit => // This packet isn't a player interaction result, don't tick the afk timer + case PacketType.TextBufferInit | PacketType.RobotStateRequest => // This packet isn't a player interaction result, don't tick the afk timer case _ => mp.func_143004_u() } }