Compare commits

...

2 Commits

Author SHA1 Message Date
Alexander Medvedev
d6d13e0b9a added keybind 2025-04-16 10:29:03 +02:00
Alexander Medvedev
c528bdb113 update to 1.21.5 2025-04-16 10:15:39 +02:00
8 changed files with 114 additions and 78 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,7 +1,7 @@
plugins { plugins {
id 'fabric-loom' version '1.10-SNAPSHOT' id 'fabric-loom' version '1.10-SNAPSHOT'
id 'maven-publish' id 'maven-publish'
id "org.jetbrains.kotlin.jvm" version "2.1.10" id "org.jetbrains.kotlin.jvm" version "2.1.20"
} }
version = project.mod_version version = project.mod_version

View File

@ -4,15 +4,15 @@ org.gradle.parallel=true
# Fabric Properties # Fabric Properties
# check these on https://fabricmc.net/develop # check these on https://fabricmc.net/develop
minecraft_version=1.21.4 minecraft_version=1.21.5
yarn_mappings=1.21.4+build.8 yarn_mappings=1.21.5+build.1
loader_version=0.16.10 loader_version=0.16.13
fabric_kotlin_version=1.13.1+kotlin.2.1.10 fabric_kotlin_version=1.13.2+kotlin.2.1.20
# Mod Properties # Mod Properties
mod_version=1.0.0 mod_version=1.0.1
maven_group=com.pumpkinmc maven_group=com.pumpkinmc
archives_base_name=packeto archives_base_name=packeto
# Dependencies # Dependencies
fabric_version=0.118.0+1.21.4 fabric_version=0.120.0+1.21.5

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;
@ -17,15 +18,19 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(ClientConnection.class) @Mixin(ClientConnection.class)
public class ClientConnectionMixin { public class ClientConnectionMixin {
@Inject(at = @At("HEAD"), method = "handlePacket")
private static <T extends PacketListener> void handlePacket(Packet<T> packet, PacketListener listener, CallbackInfo ci) {
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 (!Packeto.INSTANCE.getStopped()) {
if (packet instanceof ClientTickEndC2SPacket || packet instanceof PlayerMoveC2SPacket || packet instanceof EntitySetHeadYawS2CPacket if (packet instanceof ClientTickEndC2SPacket || packet instanceof PlayerMoveC2SPacket || packet instanceof EntitySetHeadYawS2CPacket
|| packet instanceof EntityS2CPacket) return; || packet instanceof EntityS2CPacket) return;
Screen.INSTANCE.getSent_packets().add(packet); Screen.INSTANCE.getSent_packets().add(packet);
} }
@Inject(at = @At("HEAD"), method = "handlePacket")
private static <T extends PacketListener> void handlePacket(Packet<T> packet, PacketListener listener, CallbackInfo ci) {
Screen.INSTANCE.getReceived_packets().add(packet);
} }
} }

View File

@ -1,18 +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.network.packet.Packet 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

@ -1,25 +1,16 @@
package com.pumpkinmc package com.pumpkinmc
import io.netty.buffer.ByteBuf
import net.minecraft.client.MinecraftClient import net.minecraft.client.MinecraftClient
import net.minecraft.client.gui.DrawContext import net.minecraft.client.gui.DrawContext
import net.minecraft.client.gui.LayeredDrawer import net.minecraft.client.gui.LayeredDrawer
import net.minecraft.client.render.RenderTickCounter import net.minecraft.client.render.RenderTickCounter
import net.minecraft.network.NetworkPhase
import net.minecraft.network.NetworkState
import net.minecraft.network.listener.PacketListener
import net.minecraft.network.packet.Packet import net.minecraft.network.packet.Packet
import net.minecraft.network.state.*
import net.minecraft.util.Colors import net.minecraft.util.Colors
import java.util.Collections
import java.util.concurrent.CopyOnWriteArrayList import java.util.concurrent.CopyOnWriteArrayList
import java.util.function.Function
import java.util.stream.Collectors
import java.util.stream.Stream
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(
@ -29,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,
@ -41,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,
@ -50,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,
@ -62,7 +53,7 @@ object Screen : LayeredDrawer.Layer {
x, x,
Colors.WHITE, Colors.WHITE,
false false
); )
} }
} }
} }