Athire Posted January 30, 2014 Posted January 30, 2014 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 Quote
coolAlias Posted January 30, 2014 Posted January 30, 2014 From EntityThrowable: @Override protected float getGravityVelocity() { return 0.01F; } You could use zero, but then your entity would travel forever which I've found can have it's own issues. Up to you. Quote http://i.imgur.com/NdrFdld.png[/img]
Athire Posted January 30, 2014 Author Posted January 30, 2014 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 Thanks again, for this and your other resources which I have been using! Quote
Draco18s Posted January 30, 2014 Posted January 30, 2014 There's also World#raycast_do_do Quote 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.
coolAlias Posted January 30, 2014 Posted January 30, 2014 Yeah, that's me 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). Quote http://i.imgur.com/NdrFdld.png[/img]
Draco18s Posted January 30, 2014 Posted January 30, 2014 (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) Quote 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.
Recommended Posts
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.