Jump to content

Minecraft - Intercept Chat message and perform an action


Frontear

Recommended Posts

Example: If I type `Ping`, I want the mod to respond with `Pong`.

 

I've already figured I can use `ClientChatRecievedEvent` to be able to see when the user sends a message, but this doesn't exactly return favourable results. `event.message` doesn't have the option to simply return just the text, effectively, instead of returning "Ping", it'll return either "<PlayerName> Ping" or "<> Ping". I want only "Ping", and another problem arises. Servers often format text messages to display a users rank. That will change the expected format of `event.message.getFormatted (or unformatted whatever)` text and would require a different method of handling. Additionally, I don't want the users message to make it to the server. Basically, it needs to be a client side message with a client side response.

 

tl;dr is there any way I can get a message typed by the player in chat, make sure it doesn't get published to server or public chat, and issue a client sided response?

 

I am a human and this action was performed manually. Please contact Frontear if you have any questions or concerns.

Link to comment
Share on other sites

So do you want to detect when the client player types a message, respond to it and stop it from reaching the server? Forge has an event for that - ClientChatEvent. You can cancel it and then it won't be sent. It however won't add it to the chat either so you would have to do that yourself with GuiNewChat#addToSentMessages. You can get the GuiNewChat instance from GuiIngame#getChatGUI and you can get a GuiIngame instance with Minecraft.ingameGUI.

  • Like 1
Link to comment
Share on other sites

2 minutes ago, V0idWa1k3r said:

So do you want to detect when the client player types a message, respond to it and stop it from reaching the server? Forge has an event for that - ClientChatEvent. You can cancel it and then it won't be sent. It however won't add it to the chat either so you would have to do that yourself with GuiNewChat#addToSentMessages. You can get the GuiNewChat instance from GuiIngame#getChatGUI and you can get a GuiIngame instance with Minecraft.ingameGUI.

"You can cancel it and then it won't be sent". I assume you mean the text message the player sends won't be added to chat, correct? If so, great.

I am a human and this action was performed manually. Please contact Frontear if you have any questions or concerns.

Link to comment
Share on other sites

8 minutes ago, Frontear said:

I assume you mean the text message the player sends won't be added to chat, correct?

It will neither be sent to the server nor appear in the client's local chat. These are different things. When the client hits enter to send a message it first gets added to it's local client's chat - it is not yet visible to any other player on the server but is visible to the client who is sending it. It then gets sent to the server which sends it to every other player for them to see if needed. I don't know whether you want the client who typed the message to see it, which is why I've included an explanation as to how to add it to the local client's chat. Again, you can add anything you want to that chat and only the client that you are doing it with will see those messages, not anyone else. 

  • Like 1
Link to comment
Share on other sites

2 minutes ago, V0idWa1k3r said:

It will neither be sent to the server nor appear in the client's local chat. These are different things. When the client hits enter to send a message it first gets added to it's local client's chat - it is not yet visible to any other player on the server but is visible to the client who is sending it. It then gets sent to the server which sends it to every other player for them to see if needed. I don't know whether you want the client who typed the message to see it, which is why I've included an explanation as to how to add it to the local client's chat. Again, you can add anything you want to that chat and only the client that you are doing it with will see those messages, not anyone else. 

Just checked for such an event. It does not exist.

 

Probably should've mentioned im using 1.10 Forge, but I dont see any ClientChatEvent at all. What would be an alternative plan?

I am a human and this action was performed manually. Please contact Frontear if you have any questions or concerns.

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



×
×
  • Create New...

Important Information

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