Jump to content

[1.20.1] Get Player Speed On Server


BabyThor

Recommended Posts

I am trying to add functionality similar to the farmblock, but dependent on the player's speed

The farmblock onFall method checks to make sure the event is server side before doing anything so I assume that's best practice, but as far as I can tell, you can only get the player's speed on client side? So I'm wondering what the correct way would be to check a player's speed on the server end.

Edited by BabyThor
Name got mangled for some reason
Link to comment
Share on other sites

  • BabyThor changed the title to [1.20.1] Get Player Speed On Server

Yeah Player movement is controlled by the client. I just checked and you're right, seems like some of the values to calculate speed (attributes / getDeltaMovement) don't get properly synced server-side.

 

More than likely you'll have to use some janky networking. I hate using the PlayerTick for things but I'm having a hard time thinking of a better alternative.

@SubscribeEvent
public static void onPlayerTick(TickEvent.PlayerTickEvent event) {
  if(event.side == LogicalSide.SERVER) return;
  
  final var player = event.player;
  final var onPos = player.getOnPos();
  final var level = player.level();
  if(level.getBlockState(onPos).getBlock() instanceof YourModdedBlock block && isPlayerMovingFastEnough(player)) {
    // TODO: SimpleChannel.sendMessage(...); send player speed and blockPos, and handle on the server what to do 
  }
}
    
private static boolean isPlayerMovingFastEnough(Player player) {
  return false; // You implement this, not sure what exactly you're looking for. i.e. player.getSpeed() > <some_value>?
}

 

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.