Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

Hey,

 

I've been making my mod for a while and a part of it is the moving of my horse and there's the problem:

I don't know how to move it correctly. I guess there many ways and I tested many ways but none of them worked.

 

			EntityLiving entity = ( EntityLiving ) Minecraft.getMinecraft().thePlayer.ridingEntity;
		double entitySpeed = ( ( EntityHorse ) entity ).getEntityAttribute( SharedMonsterAttributes.movementSpeed ).getAttributeValue() * 20; 

 

~Lyras

PS: It's a normal horse, not my own entity :blank:

*Hug*

First of all, do not use Minecrat.getMinecraft(), it will crash the dedicated server as it is a client-only class!

  • Author

1. Somehow I must get the object...

2. Something more helpful? xP

*Hug*

You are only giving me a tiny code snippet, I cannot know where this is located, if the method this is in has access to a player object or if the class this is in somehow gives you access to a player object. Post a bit more code (preferably the complete class this is in) and I may be able to help you a bit more.

  • Author

	public static void moveNearest ( Entity horse ) {

	if ( InputHandler.riding ) {

		if ( Route.route == null || Route.routeConfig == null ) { Route.route = InputHandler.route; Route.routeConfig = new Configuration( Route.route ); }

		ArrayList < MarkerPoint > array = RouteReader.markersInRadius( Route.routeConfig );
		MarkerPoint marker = Maths.nearestMarker( array );

		EntityLiving entity = ( EntityLiving ) horse;
		double entitySpeed = ( ( EntityHorse ) entity ).getEntityAttribute( SharedMonsterAttributes.movementSpeed ).getAttributeValue() * 20;

	}

}

 

I changed the code a little bit.

*Hug*

What is InputHandler? Is it your class or is it a MC base class?

  • Author

This is my class in which I test for key input

 

But it isn't nessecary for my question: How to move my horse?

 

*Hug*

You cannot directly access any mouse or keyboard input as the server doesn't know anything about them, you need to create a KeyHandler and register it and then send packets to the server when the button is pressed.

For your actual question: It depends on what you want to do. Is the player sitting on the horse or is there a connection between the player and the horse (something like a leash) or is the horse automagically following the player?

  • Author

1. With "test for key input", the InputEvent is meant.

2. In my code you can see a "MarkerPoint"-object. This includes values such as x , y and z coordinates.

What I want is to move the horse to the coordinates which are included in the object

*Hug*

I think the InputEvent is also a client-only event. For your use case you could calculate a vector from the horse's position and the marker's position, apply the motion based on this vector (multiply the entity speed you desire with the normalized vector (length 1, there is a method for that in the vector class)) and check in the update method if the coordinates of the horse and the marker are equal and if they are, you set the motion to 0 again.

  • Author

Is there no easier way?

And will the horse also be moved on a server too?

 

EDIT: I have no idea how to do it. I tried but I cannot figure it out...

There must be a way to move the entity without calculating vectors etc.

I guess that I even have to check if the horse has to jump because a block is in front of it

*Hug*

Before doing all the calculations you need to check if the world is not remote. The motion updates are automatically sent to the clients as this is a vanilla entity. This is also why I am beating you with the client-only stuff.

  • Author

But is there a way to move the horse for the client and for the server?

 

*Hug*

  • Author

And how to move it on the server? xP And is there an existing function?

*Hug*

  • Author

And I just have to send a packet to the server with the "command" let the horse move there?

But then there is another problem: I don't know which existing way I should chose to let the horse move. Or is there any way?

 

*Hug*

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

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.