Jump to content

[1.7.10] Interceptor framework for incoming vanilla packets


OreCruncher

Recommended Posts

Before I resort to rocket science I figured I would ask the question in hopes that I have overlooked something.  What I am wanting to do is intercept incoming packets from clients before they get handed off to FML/Vanilla packet processing.  Is there a framework in place that allows me to register an interceptor so that my mod can get a crack at the packet before/after processing?

 

The specific thing I am wanting to do is intercept incoming sign text update packets so that I can do some pre/post processing of the event.  What I am hoping for is clean server side entry point to do this without resorting to custom signs/tile entities, ASM, or some other fancy hackery.  The mod I am working on should not be required on a client.

 

(I did look for a Forge event for sign update, but I did not see any.)

Link to comment
Share on other sites

You can get vanilla packets with the following hack:

- Use

ClientConnectedToServerEvent

or

ServerConnectionFromClientEvent

depending on which side you care about.

 

- From that event you have access to the

NetworkManager

, then through the

channel()

method the netty-channel and then finally the

ChannelPipeline

using the

pipeline()

method.

 

- You can now insert your own

ChannelHandler

into the pipeline. To see how the vanilla pipeline is structured, look at e.g.

NetworkManager.provideLanClient

,

NetworkManager#provideLocalClient

,

NetworkSystem#addLanEndpoint

and

NetworkSystem#addLocalEndpoint

.

Link to comment
Share on other sites

^ This could be potentially really damn useful.

 

Other question

Goal: Change packet's data before it's being sent from server to client.

Extend NetHandlerPlayerServer and override sendPacket, and then simply check instance of packet and change data.

For every EntityPlayerMP - LoggedIn or JoinedWorld event? - replace handler field with extension.

Happily manipulate packets with e.g world data (e.g: have 2 players in same world but one will receive totally different world data).

 

Can something go wrong?

1.7.10 is no longer supported by forge, you are on your own.

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
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.



×
×
  • Create New...

Important Information

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