added keybind

This commit is contained in:
Alexander Medvedev 2025-04-16 10:29:03 +02:00
parent c528bdb113
commit d6d13e0b9a
4 changed files with 63 additions and 17 deletions

View File

@ -1,2 +1,6 @@
See Incoming and Outgoing Packets in Minecraft See Incoming and Outgoing Packets in Minecraft
![Image](https://github.com/user-attachments/assets/7fd39c6c-6bda-4eff-bcf7-0bedaa54b96c) ![Image](https://github.com/user-attachments/assets/7fd39c6c-6bda-4eff-bcf7-0bedaa54b96c)
### Keybindings
- Stop/Start listening for Packets: (Default: K)

View File

@ -1,5 +1,6 @@
package com.pumpkinmc.mixin; package com.pumpkinmc.mixin;
import com.pumpkinmc.Packeto;
import com.pumpkinmc.Screen; import com.pumpkinmc.Screen;
import net.minecraft.network.ClientConnection; import net.minecraft.network.ClientConnection;
import net.minecraft.network.PacketCallbacks; import net.minecraft.network.PacketCallbacks;
@ -19,13 +20,17 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public class ClientConnectionMixin { public class ClientConnectionMixin {
@Inject(at = @At("HEAD"), method = "handlePacket") @Inject(at = @At("HEAD"), method = "handlePacket")
private static <T extends PacketListener> void handlePacket(Packet<T> packet, PacketListener listener, CallbackInfo ci) { private static <T extends PacketListener> void handlePacket(Packet<T> packet, PacketListener listener, CallbackInfo ci) {
Screen.INSTANCE.getReceived_packets().add(packet); if (!Packeto.INSTANCE.getStopped()) {
Screen.INSTANCE.getReceived_packets().add(packet);
}
} }
@Inject(at = @At("HEAD"), method = "send(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/PacketCallbacks;Z)V") @Inject(at = @At("HEAD"), method = "send(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/PacketCallbacks;Z)V")
private void send(Packet<?> packet, @Nullable PacketCallbacks callbacks, boolean flush, CallbackInfo ci) { private void send(Packet<?> packet, @Nullable PacketCallbacks callbacks, boolean flush, CallbackInfo ci) {
if (packet instanceof ClientTickEndC2SPacket || packet instanceof PlayerMoveC2SPacket || packet instanceof EntitySetHeadYawS2CPacket if (!Packeto.INSTANCE.getStopped()) {
|| packet instanceof EntityS2CPacket) return; if (packet instanceof ClientTickEndC2SPacket || packet instanceof PlayerMoveC2SPacket || packet instanceof EntitySetHeadYawS2CPacket
Screen.INSTANCE.getSent_packets().add(packet); || packet instanceof EntityS2CPacket) return;
Screen.INSTANCE.getSent_packets().add(packet);
}
} }
} }

View File

@ -1,17 +1,54 @@
package com.pumpkinmc package com.pumpkinmc
import net.fabricmc.api.ModInitializer import net.fabricmc.api.ModInitializer
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper
import net.fabricmc.fabric.api.client.rendering.v1.HudLayerRegistrationCallback import net.fabricmc.fabric.api.client.rendering.v1.HudLayerRegistrationCallback
import net.fabricmc.fabric.api.client.rendering.v1.IdentifiedLayer import net.fabricmc.fabric.api.client.rendering.v1.IdentifiedLayer
import net.minecraft.client.MinecraftClient
import net.minecraft.client.option.KeyBinding
import net.minecraft.client.util.InputUtil
import net.minecraft.text.Text
import net.minecraft.util.Colors
import net.minecraft.util.Identifier import net.minecraft.util.Identifier
import org.lwjgl.glfw.GLFW
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
object Packeto : ModInitializer { object Packeto : ModInitializer {
private val logger = LoggerFactory.getLogger("packeto") private val logger = LoggerFactory.getLogger("packeto")
private lateinit var key_bind: KeyBinding
var stopped = false
override fun onInitialize() { override fun onInitialize() {
HudLayerRegistrationCallback.EVENT.register { layer -> HudLayerRegistrationCallback.EVENT.register { layer ->
layer.addLayer(IdentifiedLayer.of(Identifier.of("packeto", "packets"), Screen)) layer.addLayer(IdentifiedLayer.of(Identifier.of("packeto", "packets"), Screen))
} }
key_bind = KeyBindingHelper.registerKeyBinding(
KeyBinding(
"key.packeto.stop",
InputUtil.Type.KEYSYM,
GLFW.GLFW_KEY_K,
"category.packeto"
)
)
ClientTickEvents.END_CLIENT_TICK.register(ClientTickEvents.EndTick { client: MinecraftClient ->
while (key_bind.wasPressed()) {
stopped = !stopped
if (stopped) {
client.player!!.sendMessage(
Text.literal("Stopped listening for Packets").withColor(Colors.RED),
true
)
} else {
client.player!!.sendMessage(
Text.literal("Started listening for Packets").withColor(Colors.GREEN),
true
)
}
}
})
} }
} }

View File

@ -9,8 +9,8 @@ import net.minecraft.util.Colors
import java.util.concurrent.CopyOnWriteArrayList import java.util.concurrent.CopyOnWriteArrayList
object Screen : LayeredDrawer.Layer { object Screen : LayeredDrawer.Layer {
var sent_packets: MutableList<Packet<*>> = CopyOnWriteArrayList(); var sent_packets: MutableList<Packet<*>> = CopyOnWriteArrayList()
var received_packets: MutableList<Packet<*>> = CopyOnWriteArrayList(); var received_packets: MutableList<Packet<*>> = CopyOnWriteArrayList()
override fun render(context: DrawContext, tickCounter: RenderTickCounter) { override fun render(context: DrawContext, tickCounter: RenderTickCounter) {
context.drawText( context.drawText(
@ -20,11 +20,11 @@ object Screen : LayeredDrawer.Layer {
0, 0,
Colors.RED, Colors.RED,
false false
); )
if (sent_packets.size >= 20) sent_packets.removeFirst(); if (sent_packets.size >= 20) sent_packets.removeFirst()
var i = 6; var i = 6
for (packet in sent_packets) { for (packet in sent_packets) {
i += 10; i += 10
context.drawText( context.drawText(
MinecraftClient.getInstance().textRenderer, MinecraftClient.getInstance().textRenderer,
packet.packetType.id.path, packet.packetType.id.path,
@ -32,7 +32,7 @@ object Screen : LayeredDrawer.Layer {
i, i,
Colors.WHITE, Colors.WHITE,
false false
); )
} }
context.drawText( context.drawText(
MinecraftClient.getInstance().textRenderer, MinecraftClient.getInstance().textRenderer,
@ -41,11 +41,11 @@ object Screen : LayeredDrawer.Layer {
0, 0,
Colors.RED, Colors.RED,
false false
); )
if (received_packets.size >= 20) received_packets.removeFirst(); if (received_packets.size >= 20) received_packets.removeFirst()
var x = 6; var x = 6
for (packet in received_packets) { for (packet in received_packets) {
x += 10; x += 10
context.drawText( context.drawText(
MinecraftClient.getInstance().textRenderer, MinecraftClient.getInstance().textRenderer,
packet.packetType.id.path, packet.packetType.id.path,
@ -53,7 +53,7 @@ object Screen : LayeredDrawer.Layer {
x, x,
Colors.WHITE, Colors.WHITE,
false false
); )
} }
} }
} }