Jump to content

[1.7.2]Ways to detect when a player successfully hits and damages an entity?


Recommended Posts

Posted

Hello, I am making a mod and I need to detect when a player successfully hit and damages an entity. In my mod I have a level system and one of the many lvls that are monitored are the player attack lvl. I am using the AttackEntityEvent to detect when the player hits the entity and I use this method to damage the entity by setting the players base damage attribute according to what lvl they are and what tool they are using. The player then get awarded xp when the player hits the entity. My problem is that I noticed that forge calls this method every time the player clicks the entity. This may be good in some cases, but that is breaking my system by giving the player xp even when they have not successfully damaged the entity because of the cool down. So I need a way to detect when the player success damages the entity, so I can have it reward the player with exp according to how much damage the player has done to the entity out of how much health the entity has. All help is appreciated, Thank You!

Don't be afraid to ask question when modding, there are no stupid question! Unless you don't know java then all your questions are stupid!

Posted

Sorry for the delay in response, but anyway when is this LivingHurtEvent Triggered

Don't be afraid to ask question when modding, there are no stupid question! Unless you don't know java then all your questions are stupid!

Posted

Does it also give what entity caused the damage because there is an EntityLiving and an entity in the event.

 

If not then is there a cool down variable in EntityPlayer or EntityLiving because I check, but I could not find it.

Don't be afraid to ask question when modding, there are no stupid question! Unless you don't know java then all your questions are stupid!

Posted

Does it also give what entity caused the damage because there is an EntityLiving and an entity in the event.

Those are the same entity; use the DamageSource provided to get the entity that caused the damage, if any. DamageSource#getSourceOfDamage() returns the entity directly responsible for the damage (e.g. the EntityArrow for an arrow, a mob that physically struck the player, etc.), whereas DamageSource#getEntity() returns the entity that is ultimately responsible for the damage (e.g. the player that shot the arrow). Sometimes both methods return the same entity (e.g. EntityDamageSource), sometimes they return null (e.g. fall damage has no entity), and sometimes the rules may be completely different (e.g. a mod with custom damage sources that was poorly designed to not follow the standard).

Posted
is there a cool down variable in EntityPlayer or EntityLiving because I check, but I could not find it.

 

I think there is hurtResistantTime which count until it reaches maxHurtResistantTime.  The attackEntityFrom() method in each entity is (I believe) called on each attack, and whether damage happens is determined there (i.e. it will check if the entity is invulnerable, whether player is in creative mode, etc.) including checking for the hurt resistance cooldown.  Anyway, you might want to look at the attackEntityFrom() method in some vanilla entity classes (and superclasses) to get ideas on how damage is determined). 

 

There is also the recentlyHit which (according to the comments) is set to 100 (the Javadoc says it's set to 60 but the code in EntityLiving sets it to 100) when an entity is hit by a player.

 

There is also hurtTime, maxHurtTime, and lastDamage which are all used related to cooldowns and such.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

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.