Jump to content

Issues with spawning arrow


I_Iz_Shahid

Recommended Posts

Hey guys,

 

I am trying to make a mob that reflects all damage taken to its attacker, I got almost all of it working except the projectiles. The projectiles should change directions and return to the attacker but I just can't seem to get this to work properly.

 

Here is some code from the Entities file

 

@Override
public boolean attackEntityFrom(DamageSource source, float amount)
{
	Entity attacker = source.getSourceOfDamage();

	if(source.isProjectile() && !this.worldObj.isRemote)
	{
		if(attacker instanceof EntityArrow)
		{
			Entity Aggressor = ((EntityArrow) attacker).shootingEntity;

			EntityArrow attackerclone = new EntityArrow(this.worldObj, this, (EntityLivingBase) Aggressor, 16.0F, 0.0F);
		}
		else
	}
	else if(!this.worldObj.isRemote && !source.isExplosion() && !source.isFireDamage() && !source.isMagicDamage() && !source.isCreativePlayer() && !source.isUnblockable() && source.getDamageType() != "fall" && source.getDamageType() != "lightningBolt" && source.getDamageType() != "inWall" && source.getDamageType() != "cactus" && source.getDamageType() != "drown" && source.getDamageType() != "outOfWorld" && source.getDamageType() != "anvil" && source.getDamageType() != "fallingBlock")
	{
		attacker.attackEntityFrom(source, amount * 3);
	}
	else if(source.isCreativePlayer())
	{
		Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("<Accelerator> And they claim that I use hacks."));
		this.setDead();
	}
	else if(source.damageType == "fall")
	{
		explode(amount/2);
	}
	return false;
}

 

The arrow is ably to change directions fine but no matter how much I try I just can never make it gain velocity, it seems as if it is spawning with the minimum velocity possible. I tried to take a look at EntitySkeleton and yet here I am. I tried to change the 16.0F in the spawn code but it doesn't change anything.

 

Thanks!

if(pain == 0)

{

   gain = 0;

}

Link to comment
Share on other sites

It doesn't look like you're spawning the arrow entity at all, so I don't see how you can say it's having no problems changing directions...

 

Furthermore, your Java is a bit messy - you have a trailing 'else' with no brackets and you're casting the arrow's shooting entity to an EntityArrow and then to an EntityLivingBase.

 

Anyway, you need to spawn the new arrow entity, or use the existing one and just modify its position and motion to the new direction.

Link to comment
Share on other sites

It doesn't look like you're spawning the arrow entity at all, so I don't see how you can say it's having no problems changing directions...

 

Furthermore, your Java is a bit messy - you have a trailing 'else' with no brackets and you're casting the arrow's shooting entity to an EntityArrow and then to an EntityLivingBase.

 

Anyway, you need to spawn the new arrow entity, or use the existing one and just modify its position and motion to the new direction.

 

Oh poop, I edited the code from the original to remove a huge chunk that has nothing to do with the problem whatsoever, I will clean up the code after I get it to work :P.

 

The issue is that if I spawn a new entityarrow then I would need to do the same code for each type of throwable entity. Is there another way to simply change the entities velocity vector? I tried setVelocity but it doesn't do anything either

if(pain == 0)

{

   gain = 0;

}

Link to comment
Share on other sites

You can use reflection to generalize your construction of a new entity, e.g.:

Entity newProjectile = oldProjectile.getConstructor(World.class, EntityLivingBase.class, float.class).newInstance(world, shooter, charge);

Then your code will handle any type of projectile entity so long as it has a constructor with that signature (taken from EntityArrow, so you may need to instead use the one that doesn't take the float, or have a different case for EntityArrow vs. EntityThrowable sub-classes).

 

A problem with that, though, is that you lose any extra information that may have been stored in the original class instance, i.e. any custom fields, such as damage, that were set previously.

 

Another option, as I already mentioned, is to just change the heading at any time by setting the projectile entity's motionX/Y/Z values to whatever you want. That's what #setVelocity does, mostly, but the problem with that is you also need to make sure the clients all know about it, too, or else the client version of the entity (which is the one you see) will still be headed in the original direction.

 

A further problem is that, since the projectile has already impacted, chances are it has had #setDead called and will be cleaned up very shortly. You need to undo that and also make sure it is no longer colliding with any entity, otherwise it will just re-collide on the next tick and do its onImpact business.

 

Take a look at #setThrowableHeading (or some version thereof, including pretty much any constructor that takes the shooting / throwing entity) in EntityArrow / EntityThrowable to get an idea of the code you'll need. That and a way to avoid hitting the same entity again, which most projectiles do by using an 'if (this.ticksExisted < 5) { ignore the shooting entity when checking for impact }'

 

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Ligadewa138 telah menjelma menjadi salah satu destinasi utama bagi para pecinta perjudian daring di Asia yang mencari pengalaman bermain slot yang unggul dan menarik. Dengan reputasi yang kokoh dan berbagai koleksi permainan slot yang mengagumkan, Ligadewa138 telah berhasil menarik perhatian banyak pemain dari berbagai belahan dunia. Dalam panduan ini, kami akan membahas mengapa Ligadewa138 dianggap sebagai salah satu situs slot terbaik di Asia saat ini. 1. Koleksi Permainan yang Luar Biasa Ligadewa138 menawarkan koleksi permainan slot yang luar biasa dengan berbagai tema yang menarik dan inovatif. Dari slot klasik hingga slot modern dengan fitur-fitur canggih, pemain dapat menemukan berbagai pilihan permainan yang sesuai dengan preferensi mereka. Kualitas grafis dan animasi yang menakjubkan membuat pengalaman bermain semakin menghibur dan memikat. 2. Keamanan dan Kepercayaan Ligadewa138 dikenal karena komitmennya terhadap keamanan dan kepercayaan pemain. Situs ini dilengkapi dengan teknologi enkripsi terbaru untuk melindungi data pribadi dan keuangan para pemain. Selain itu, Ligadewa138 juga telah mendapatkan lisensi resmi dari otoritas perjudian yang diakui, menjamin bahwa semua permainan di situs ini fair dan adil. 3. Bonus dan Promosi Menarik Ligadewa138 seringkali menawarkan berbagai bonus dan promosi menarik kepada para pemainnya. Mulai dari bonus selamat datang hingga bonus setoran dan putaran gratis, pemain dapat menikmati berbagai penawaran menguntungkan yang dapat meningkatkan peluang mereka untuk meraih kemenangan besar. Program loyalitas yang murah hati juga membuat pemain merasa dihargai dan dihormati. 4. Layanan Pelanggan yang Profesional Ligadewa138 dikenal karena layanan pelanggannya yang profesional dan responsif. Tim dukungan pelanggan yang ramah dan berpengetahuan luas siap membantu pemain dengan segala pertanyaan atau masalah yang mereka hadapi. Dengan layanan pelanggan yang tersedia 24/7, pemain dapat merasa tenang dan yakin bahwa bantuan selalu tersedia jika diperlukan. 5. Kemudahan Transaksi Keuangan Ligadewa138 menyediakan berbagai metode pembayaran yang aman dan nyaman bagi para pemainnya. Dari transfer bank lokal hingga dompet elektronik dan kartu prabayar, pemain dapat melakukan transaksi keuangan dengan mudah dan cepat. Proses penarikan yang cepat dan tanpa ribet juga membuat pemain merasa lebih diuntungkan. Dengan kombinasi koleksi permainan yang luar biasa, keamanan yang terjamin, bonus yang menggiurkan, layanan pelanggan yang profesional, dan kemudahan transaksi keuangan, tidak mengherankan jika Ligadewa138 dianggap sebagai salah satu situs slot terbaik di Asia saat ini.
    • MPOSLOT Merupakan Link Slot Gacor MPO SLOT Terbaru Dan Gampang Menang Dengan Minimal Deposit 10,000 Dapat Dimainkan Semua Jenis Permainan ▶️▶️▶️ DAFTAR KLIK DI SINI ◀️◀️◀️ Dalam dunia taruhan online yang semakin berkembang, mencari platform yang dapat diandalkan dan menyenangkan untuk bermain merupakan hal yang sangat penting bagi para pecinta taruhan. Salah satu opsi teratas yang muncul adalah MPOSLOT dan jaringan link alternatifnya yang menyediakan tingkat pengalaman taruhan yang tinggi. Mari kita gali lebih dalam tentang apa yang membuat MPOSLOT dan daftar situs link alternatif MPOSLOT RTP begitu menarik bagi para penggemar taruhan online. Keyword Terkait : MPOSLOT MPOSLOT Slot MPOSLOT Daftar MPOSLOT Login MPOSLOT Link Alternatif MPOSLOT RTP AGEN MPOSLOT SITUS MPOSLOT
    • DAFTAR KLIK DISINI DAFTAR KLIK DISINI SENJU33☘️ Depo 100 Bonus 100 Link Alternatif Bonus 100% Senju33. SENJU33, seperti kakek Zeus yang berkuasa, menonjolkan dirinya sebagai pemimpin dalam industri perjudian online. Fitur RTP (Return to Player) yang disediakan oleh SENJU33 mencerminkan komitmen untuk memberikan peluang yang adil kepada pemainnya, sebagaimana Ouranos memberikan keadilan di dunia mitologi. Senju33 dengan Akses Login Situs SENJU33 Slot Gacor Hari Ini Gampang menang tanpa pola rtp slot, ada bonus untuk member baru mendaftar di situs senju33 slot gacor hari ini 30%, mencari pengalaman bermain slot yang tak terlupakan di Indonesia? SENJU33 adalah jawabannya! Sebagai situs super gacor paling terdepan di tahun ini, SENJU33 menawarkan ID VIP Pro, akun resmi, dan link login terkini untuk memastikan Anda meraih pengalaman bermain slot yang luar biasa.
    • SUHU77 Situs Cara Deposit Lewat Dana Merupakan Situs Dengan Permainan Terlengkap Dan Login & Daftar Termudah Yang Bisa Anda Gunakan. Selain Itu, Untuk Deposit Juga Sangat Mudah Dan Lengkap Semua Payment Di Terima Dari Deposit Bank Local, E-Wallet / E-Money (Dana, Ovo, Gopay, Shopeepay, Sakuku Dll), Deposit Pulsa Tanpa Potongan Terlengkap DAFTAR KLIK DISINI DAFTAR KLIK DISINI Untuk Bermain Disini Sangat Lah Mudah Dan Untuk Situs Juga Sudah Di Percaya Sejak Lama. Menang Berapapun Pasti Di Bayar Lunas Tanpa Pending. Jadi Jangan Lewatkan Bermain Di SUHU77 Situs Cara Deposit Lewat Dana. Sistem Permainan Yang Ditawarkan Telah Mendapatkan Kepercayaan Dari Berbagai Member Yang Sudah Mendapatkan Keuntungan Dari Hal Itu Yang Berasal Dari Permainan Slot Online. SUHU77 SUHU77 Login SUHU77 Daftar SUHU77 Rtp Slot Scatter SUHU77 Link Alternatif SUHU77 Agen SUHU77 Situs SUHU77
    • OSG888 Merupakan Link Slot Gacor OSG888 Terbaru Dan Gampang Menang Dengan Minimal Deposit 10,000 Dapat Dimainkan Semua Jenis Permainan ▶️▶️▶️ DAFTAR KLIK DI SINI ◀️◀️◀️ ▶️▶️▶️ DAFTAR KLIK DI SINI ◀️◀️◀️ ▶️▶️▶️ DAFTAR KLIK DI SINI ◀️◀️◀️ Dalam dunia taruhan online yang semakin berkembang, mencari platform yang dapat diandalkan dan menyenangkan untuk bermain merupakan hal yang sangat penting bagi para pecinta taruhan. Salah satu opsi teratas yang muncul adalah OSG888 dan jaringan link alternatifnya yang menyediakan tingkat pengalaman taruhan yang tinggi. Mari kita gali lebih dalam tentang apa yang membuat OSG888 dan daftar situs link alternatif OSG888 RTP begitu menarik bagi para penggemar taruhan online. 1. Keandalan dan Kredibilitas OSG888 dikenal karena keandalan dan kredibilitasnya. Dengan lisensi resmi dan regulasi yang ketat, situs ini menawarkan lingkungan taruhan yang aman dan terjamin bagi para pemainnya. Pengguna dapat yakin bahwa setiap taruhan yang mereka tempatkan dilakukan dalam kerangka yang adil dan teratur. 2. Ragam Permainan yang Luas Salah satu daya tarik utama dari OSG888 adalah ragam permainan yang ditawarkan. Mulai dari slot online yang menghibur hingga permainan meja klasik seperti blackjack dan roulette, para pemain memiliki banyak pilihan untuk memilih permainan sesuai dengan preferensi mereka. Selain itu, fitur live casino juga menambahkan dimensi interaktif yang memungkinkan pemain untuk merasakan pengalaman kasino langsung dari kenyamanan rumah mereka. 3. Tingkat Pengembalian (RTP) yang Kompetitif OSG888 menawarkan tingkat pengembalian (RTP) yang kompetitif untuk sebagian besar permainannya. Ini berarti bahwa pemain memiliki peluang lebih baik untuk meraih kemenangan dan menghasilkan keuntungan dari taruhan mereka. Tingkat pengembalian yang tinggi juga menambah keseruan permainan dan membuat pengalaman taruhan menjadi lebih memuaskan. 4. Kemudahan Akses melalui Link Alternatif OSG888 menyediakan daftar situs link alternatif OSG888 RTP, yang memungkinkan para pemain untuk mengakses situs tersebut dengan mudah bahkan jika situs utama mereka diblokir oleh penyedia layanan internet tertentu. Ini memberikan fleksibilitas tambahan bagi para pemain untuk terus menikmati pengalaman taruhan mereka tanpa hambatan. 5. Promosi dan Bonus yang Menarik Situs ini juga terkenal dengan berbagai promosi dan bonus yang menarik bagi para pemainnya. Mulai dari bonus selamat datang hingga promosi loyalitas, ada banyak kesempatan untuk meningkatkan pengalaman taruhan Anda dan menghasilkan keuntungan tambahan dari bermain di OSG888. Kesimpulan OSG888 dan daftar situs link alternatif OSG888 RTP menawarkan pengalaman taruhan online yang luar biasa bagi para penggemar taruhan di seluruh dunia. Dengan keandalan, ragam permainan, tingkat pengembalian yang kompetitif, dan promosi menarik, tidak mengherankan bahwa OSG888 telah menjadi salah satu destinasi utama bagi para pecinta taruhan online. Bagi mereka yang mencari platform yang dapat diandalkan dan menyenangkan untuk bermain, OSG888 adalah pilihan yang sulit untuk dikalahkan Keyword Terkait : OSG888 OSG888 Slot OSG888 Daftar OSG888 Login OSG888 Link Alternatif OSG888 RTP AGEN OSG888 SITUS OSG888
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.