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.

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

Featured Replies

Posted

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

  • Author

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!

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.

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

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

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.