Jump to content

Getting Minecraft packets as text.


Janxr

Recommended Posts

I am aware that using the vanilla packets is not a good way to do something but I only need that for debugging purposes. A specific server sends some data in an unintended way and because of that I need to know in what packet the information is send so I can make my own parser for it. For that purpose I need ALL the contents of the packets as a string, so that I can filter for known information using .contains(). I tried using Gson.toJson() to convert a packet object to text, but many of the packets contain self references or other thing, which causes fails using that method. Sadly the information that I need is not stored in the packets. It would be nice if it would work in 1.18 but it does not matter, as I just need the data once for debugging purposes. 
Thanks for every help

Link to comment
Share on other sites

The data is some kind of playerdata but I have no idea in what packet it is. With unintended i meant that a vanilla server.jar would not send data of this kind in that packet. This was confirmed to me by a ex-developer for that server. It cant be accessed by the standard ways of obtaining playerdata in forge and because I dont know in what packet the data is sent, I cant reverse engineer where I could access it. I know that this is strange, but like I said, this is for debugging purposes only and I will find a better and more stable solution for any productions builds, when I know where the data is sent. I know how it looks, so I could just look thought any packets with .contains(), if I had them as a string.

Link to comment
Share on other sites

The end goal is finding the packet within the data is send. I know when I found the packet, because it always contains a specific non existing uuid. Because of that, I came up with the idea to just convert the packets to text and search for the uuid.

I have the packet Object, but I dont know how to get the raw text. If the debugger can help me with getting this text, please explain to me how. I dont care how to achieve that goal so every idea is important. 

 

Link to comment
Share on other sites

3 minutes ago, Janxr said:

The end goal is finding the packet within the data is send. I know when I found the packet, because it always contains a specific non existing uuid

Use debugger, put a breakpoint in the PacketDecoder where there Packets are created then skip them until the Packet contains the desired UUID.

Link to comment
Share on other sites

8 minutes ago, Luis_ST said:

Use debugger, put a breakpoint in the PacketDecoder where there Packets are created then skip them until the Packet contains the desired UUID.

Could you tell me where the packet decoder class is located and how its exactly called? I used an completely other way to get the packets. I dont care about the minecraft version

Edited by Janxr
Link to comment
Share on other sites

Then this could a bit more problematic, but you still read the Packet somewhere from the Network.
Put there the Breakpoint and your IDE should show the name of the Packet class and the variable values of it.
Then do this:

Quote

then skip them until the Packet contains the desired UUID

Edited by Luis_ST
Link to comment
Share on other sites

Ok I got the the point where I can seed the packet object in the debugger, but I dont see how to see if it contains the uuid. The packets are huge and there are way to many to look for them manually. I dont see any option to run code from the debugger and if I could, where would be the difference to just running that code where I get the packet (I cant get them in to a state where I can search them for text)?

Link to comment
Share on other sites

4 minutes ago, diesieben07 said:

That is not what I mean. I mean why do you need this data? What are you trying to do with it?

The server used that fake player as a way to dump debug data and forgot about it. It is the only way for me to get information like the real playerEntities (with is faked by the server when retrieved the normal way) and some other things that are important.

Link to comment
Share on other sites

It seems like we have a communication issue here. I can not explain better why I want that. Maybe that is because my English is bad or whatever.

To save time: could you explain to me how I can
search trough every incoming minecraft packet automatically with .contains()
or
that I need to seek help at another place.

thank you.

Edited by Janxr
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • At result, change: "id": "minecraft:iron_ingot" to "item": "minecraft:iron_ingot"
    • Thank all of you so much you are fucking psychos for doing this thank you so much :)
    • i have this custome crossbow i made  it autoloads after the first shoot is nice and all    but i don't like how when aiming it begins missaligned a little to the right then it slowly trembles a few and aligning whit the crosshair   this is coze the bow animation id vertical and made this crosbow rotate 90degrees      public UseAnim getUseAnimation(ItemStack p_40678_) {         return UseAnim.BOW;     } why i dont use UseAnim.CROSSBOW  for a crossbow  you see  the vainilla crossbow from the CrossbowItem.class uses a tag to know if its pulling to load an arrow or to shoot  private static final String TAG_CHARGED = "Charged"; i copy this methods to mi crossbow and set to UseAnim.CROSSBOW  but dont seems to do nothing     public static boolean isCharged(ItemStack p_40933_) {       CompoundTag compoundtag = p_40933_.getTag();       return compoundtag != null && compoundtag.getBoolean("Charged");    }    public static void setCharged(ItemStack p_40885_, boolean p_40886_) {       CompoundTag compoundtag = p_40885_.getOrCreateTag();       compoundtag.putBoolean("Charged", p_40886_);    } inside LivingEntity.class there is this   .getUseItemRemainingTicks()  thats used to calculate the bow pulling but seems like theres no .setUseItemRemainingTicks()   hoping to be understandable          i need to override the way the pulling animation is calculated to set it to the max from the beginning just for the sake of aesthetics             
    • So I'm able to download modpacks from curse forge get the into the minecraft mod folder but once the upload starts on the launcher it get's to the end and just won't progress does any one know what the issue might be I've uninstalled and reinstalled everything but I keep having the same problem.
    • { "type": "minecraft:crafting_shaped", "pattern": [ "i i", " R ", "i i" ], "key": { "i": { "item": "minecraft:iron_ingot" }, "R": { "item": "minecraft:redstone" } }, "result": { "id": "minecraft:iron_ingot" } } I'm having a problem where I've created a simple crafting recipe that takes in redstone dust and 4 iron ingots and returns an iron ingot (just for testing purposes). I have the file in my resouces/data/(modid)/recipes directory. However, the recipe does not work and I get no output when actually using a crafting table. Any help would be useful.
  • Topics

×
×
  • Create New...

Important Information

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