Jump to content

Gatherer7124

Members
  • Posts

    3
  • Joined

  • Last visited

Gatherer7124's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. I appreciate your concern, but I assure you cheating is not my purpose ๐Ÿ™‚ Anyway, after some looking online yesterday and trying to better understand Netty I stumbled on this post that has the answer to what I wanted to do! Intercepting Vanilla Minecraft Network Packets (techno.fish) In case the post is ever removed or goes offline, I'll also sketch out the solution here since I've seen this question asked multiple times on the form (I still recommend that you read the post to get a better understanding of things) First create your listener, which should be a subclass of `SimpleChannelInboundHandler` that implements `channelRead0`. @ChannelHandler.Sharable class ClientInboundHandler : SimpleChannelInboundHandler<Any>(false) { override fun channelRead0(ctx: ChannelHandlerContext?, msg: Any?) { # `msg` is your packet ctx!!.fireChannelRead(msg) } } Now register your listener when the player connects. Since I couldn't find any straightforward way to know when the client connects to a server I ended up just listening for the `EntityJoinLevelEvent` and checking that the current entity is the player @SubscribeEvent fun onClientJoinLevel(event: EntityJoinLevelEvent) { val entityName = event.entity.name val currentPlayerName = Minecraft.getInstance().player?.name if (!entityName.equals(currentPlayerName)) { return; } # get reference to netty pipeline val pipeline = Minecraft .getInstance() .connection!! # the blog post is slightly outdated with how to get this. This works on 1.19.2 .connection .channel() .pipeline() # you NEED to add it before `packet_handler`, read post for more info pipeline.addBefore("packet_handler", "custom_packet_handler", ClientInboundHandler()) }
  2. Thanks @warjort ๐Ÿ™‚ I'll read up on Netty to better understand how it works. In the meantime, can you think of an alternative approach to accomplish this? I'll still investigate Netty, but I want to make sure I'm not leaving another potential avenue unexplored
  3. Hi all, I'm playing with an idea to make a mod that runs only on the client and logs all received vanilla packets to a file, with the purpose of inspecting them later. For context, I'm building an external tool that will take these saved packets and extract useful information from them, the details are not important. However, I'm having some trouble with finding out exactly how I can achieve my goal of listening for packets ๐Ÿค” I'm aware there's no actual event for "packet received", and I did go through Forge's documentation for SimpleImpl, but unless I'm mistaken, SimpleImpl is specific for sending and receiving custom packets. I also saw some related questions in the forum where people have suggested adding a custom handler into the netty pipeline. For example: https://forums.minecraftforge.net/topic/38549-19-read-incoming-vanilla-packets/?do=findComment&comment=204747 But I'm not sure if this will allow me to do what I want to. Can someone offer me some advice as to how can I 'write' all received vanilla packets to a file?
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.