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

[1.9] How do I get position of a block that the player is looking at?


23kcarlson
 Share

Recommended Posts

I have tried searching, but everything is outdated, and I cannot figure out how to get it to work.

 

I think this is as close as I got:

public ActionResult<ItemStack> onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn,
		EnumHand hand) {
         Vec3d vec3 = playerIn.getPositionEyes(1.0F);
         Vec3d lookVec = playerIn.getLook(1.0F);
         Vec3d addedVector = vec3.addVector(lookVec.xCoord * 50.0D, lookVec.yCoord * 50.0D, lookVec.zCoord * 50.0D);
         RayTraceResult lookPos= new  RayTraceResult(playerIn, lookVec);
         int x =lookPos.getBlockPos().getX();
         int y =lookPos.getBlockPos().getY();
         int z =lookPos.getBlockPos().getX();

         EntityLightningBolt lightning = new EntityLightningBolt(worldIn, x,y,z, false);
	worldIn.addWeatherEffect(lightning);
	return new ActionResult(EnumActionResult.PASS, itemStackIn);
}

Link to comment
Share on other sites

1. I just modified the code from the Item class? What should I return? Nothing, and make it a void method?

 

2. I forgot about that, I'll fix that. Should it only be run on the server? or the client?

 

 

 

(I just started learning how to mod btw.)

Link to comment
Share on other sites

1. I just modified the code from the Item class? What should I return? Nothing, and make it a void method?

What... no... Of course you cannot just change the return type, that would mean you are no longer overriding anything (it won't even compile in this case).

PASS means: I don't care about this right-click.

SUCCESS means: I did something with this click and it was successful.

FAIL means: I tried to do something with this click but it failed.

2. I forgot about that, I'll fix that. Should it only be run on the server? or the client?

Entities must only be spawned on the server.
Link to comment
Share on other sites

I have tried searching, but everything is outdated, and I cannot figure out how to get it to work.

 

I think this is as close as I got

 

Your code looks 1 block away from where the player is and goes "yep, spawn there. good enough."

 

You never attempt to raytrace farther out.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

I got it to work

 

Here is what I have now:

public ActionResult<ItemStack> onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn,

EnumHand hand) {

if (worldIn.isRemote) {

 

RayTraceResult result = playerIn.rayTrace(100, 1F);

int x = result.getBlockPos().getX();

int y = result.getBlockPos().getY();

int z = result.getBlockPos().getZ();

 

EntityLightningBolt lightning = new EntityLightningBolt(worldIn, x, y, z, false);

worldIn.addWeatherEffect(lightning);

}

return new ActionResult(EnumActionResult.SUCCESS, itemStackIn);

}

 

If this can be improved, please let me know.

Link to comment
Share on other sites

isRemote should have been called isClient, but people like Lex think that people should instinctively know that "remote" means "relative to the server."  Or something, I don't recall the reasons only that it wasn't going to change.

 

There was an issue about it on the git, but I can't find it now.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

The reason it is not changed is because everyone knows it now and it's so ubiquitously used.

isRemote means "is the world not on my machine", which is true for client worlds (it's a mirror of the server world) and false for server worlds (it's not a mirror of a remote world).

Link to comment
Share on other sites

The reason it is not changed is because everyone knows it now and it's so ubiquitously used.

 

That didn't stop some of the other name changes that occurred.

But whatever.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

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.

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.