Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.7.10]Boost player in the direction he is facing


grand_mind1
 Share

Recommended Posts

Well, I don't want to set the x, y, and z, I want to actually quickly move him there(which can be done with addVelocity()). Also, I don't think ForgeDirection will work because what if the player is supposed to be boosted south-east? Obviously, to the game, they are facing one or the other and will choose one.

Link to comment
Share on other sites

I'd say look at the ender pearl entity code and see how it's thrown and do something similar.

-Mitchellbrine

 

Minecraft can do ANYTHING, it's coded in Java and you got the full power of Java behind you when you code. So nothing is impossible.

It may be freaking fucking hard though, but still possible ;)

 

If you create a topic on Modder Support, live by this motto:

I don't want your charity, I want your information
Link to comment
Share on other sites

Oh, that's a great idea! I looked into it and got it working! Thanks! If anyone wants to know how I did it, I took this code from EntityThrowable(the class ender pearl extends):

this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f);
this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f);
this.motionY = (double)(-MathHelper.sin((this.rotationPitch + this.func_70183_g()) / 180.0F * (float)Math.PI) * f);

If I read it correctly, this is how the game sets the motion of any entity that is being thrown. Then, all I had to do was change it up to work with my own code:

double motionX = (double)(-MathHelper.sin(entityPlayer.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(entityPlayer.rotationPitch / 180.0F * (float)Math.PI) * 1.5F);
double motionZ = (double)(MathHelper.cos(entityPlayer.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(entityPlayer.rotationPitch / 180.0F * (float)Math.PI) * 1.5F);
double motionY = (double)(-MathHelper.sin((entityPlayer.rotationPitch + 0F) / 180.0F * (float)Math.PI) * 1.5F);

entityPlayer.addVelocity(motionX, motionY, motionZ);

Using a multiplier of 0.4, like in the original ender pearl code, wasn't quite enough to get the boost I liked, so I chaned it to 1.5. Thanks!

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.

 Share



×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.