Jump to content

[1.6.4] Custom Projectile detonating on character if target is within 5 blocks?


Athire

Recommended Posts

Hello guys! Me again! So I'm having a weird issue and I can't find a solution anywhere on the interwebs, so I thought I'd ask it here. So I have an item that, when right clicked, shoots a small invisible projectile that calls down lightning when it hits the ground. It works perfectly at mid/long range, but when the projectile would hit something within 5 blocks, it breaks in the player model and calls down lightning on the player. I tried making the projectile spawn further in front of the player, but no luck. I at one point spawned it in 2 blocks in front of the player and it didn't make a difference. I was however able to find that the acceleration on the projectile is what's causing the issue. I usually set it's x/y/z motion to the players look vector * 5, to negate gravity drop. I found that when I lower it to 2 and below I no longer get this issue. But I don't want my projectile to be affected by gravity! So my question is this: How can I make my projectile not affected by gravity without increasing its x/y/z motion? Or is there a way to increase it's x/y/z motion speed without causing this issue? I'll post a bit of code below.

 

 

here is the code in the item that sets the projectile's speed and angle:

 

lightningProjectile lp= new lightningProjectile(par2World, par3EntityPlayer);

      Vec3 look = par3EntityPlayer.getLookVec();

      lp.setPosition(par3EntityPlayer.posX + look.xCoord * par3EntityPlayer.getEyeHeight(), par3EntityPlayer.posY + look.yCoord * par3EntityPlayer.getEyeHeight()+1, par3EntityPlayer.posZ + look.zCoord * par3EntityPlayer.getEyeHeight());

      lp.motionX = look.xCoord * 2;

          lp.motionY = look.yCoord * 2;

          lp.motionZ = look.zCoord * 2;

par2World.spawnEntityInWorld(lp);

 

where "lightningProjectile" is my projectile that calls down lightning on impact. This is in an onItemRightClick() function.

the lightningProjectile class doesn't really have much relevant code, it just spans a lightning bolt on impact. It's basicly a re-skinned snowball that spawns lightning.

 

Anyway, thank you guys again for all of your help! Sorry if I ask a ton of questions on here, I'm just still pretty new at this :P

Link to comment
Share on other sites

Thank you! That works perfectly! And also thank you so much for your extended properties tutorial, that's probably the main reason I was able to get my mana system off the ground! If I'm talking to the same coolAlias that is :D Thanks again, for this and your other resources which I have been using!

Link to comment
Share on other sites

There's also World#raycast_do_do

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

Yeah, that's me xD Glad you found those things helpful. What Draco suggested is also very useful, using raycasting or following the vector yourself onItemRightClick can get you the entity/block directly, rather than spawning an entity.

 

Either way works, but I usually go with the raytracing in cases where I don't need anything rendering on the screen (e.g. when I don't have a projectile to render, trailing particles, that kind of thing).

Link to comment
Share on other sites

(As a correction, the function name is rayTraceBlocks_do_do as well as two variations on clip() but both just call rayTraceBlocks_do_do with false for the additional parameters)

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