Jump to content

Implementing abilities


Recommended Posts

My mod adds abilities. These abilities range from spawning entities, spawning blocks, to changing the player's renderer and such. I am not sure how to implement it for multi-player.

I believe I can send a packet from the client to the server indicating that the ability has been executed, the server checks if the player can use the ability (to prevent cheating), and then sends that same packet to the other players that are in range (?). 


What do you think? Is this the optimal way to do it?

Link to comment
Share on other sites

23 minutes ago, diesieben07 said:

Okay then you'll have to send a packet to the server when this is done. This is the case in both singleplayer and multiplayer. The two are fundamentally the same thing, both use a server and a client. You shouldn't treat them any different, it only leads to bugs.

This answer does not help me. 

Is sending a packet to the server, then the server sending a packet to all the other clients ultimately the best way of doing it? Would it complicate rendering effects on other players? Has it been done before? How do I know which players to send the packet to (other players which can see the player executing the ability)?

Link to comment
Share on other sites

1 hour ago, diesieben07 said:

Yes that is the way to go.

To send a packet to all tracking players you can use PacketDistributor.TRACKING_ENTITY or TRACKING_ENTITY_AND_SELF to also include the player themselves.

Not sure why it would complicate rendering. It is the only way to do it.

What happens if a player e.g teleports to another player which is using an ability? wouldn't that break the system?

Link to comment
Share on other sites

You can use PlayerEvent.StartTracking for that.

To keep data in sync with all players you need to do the following:

  • In PlayerLoggedInEvent, PlayerRespawnEvent, PlayerChangedDimensionEvent send the player their own data.
  • In PlayerEvent.StartTracking send the data of getTarget (if it is a player) to getPlayer.
  • Whenever the data changes send it using TRACKING_ENTITY_AND_SELF.
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.

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.