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.7.2]Ways to detect when a player successfully hits and damages an entity?

Featured Replies

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!

  • Author

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!

  • Author

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!

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

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

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.