Posted April 4, 201510 yr The title says it already...I've come so far to find this inside the EntityPlayerSP... public void setPlayerSPHealth(float p_71150_1_) { float f1 = this.getHealth() - p_71150_1_; if (f1 <= 0.0F) { this.setHealth(p_71150_1_); if (f1 < 0.0F) { this.hurtResistantTime = this.maxHurtResistantTime / 2; } } else { this.lastDamage = f1; this.setHealth(this.getHealth()); this.hurtResistantTime = this.maxHurtResistantTime; this.damageEntity(DamageSource.generic, f1); this.hurtTime = this.maxHurtTime = 10; } } I'm just unsure how to manipulate it so health will not automatically regenerate. A much better solution would be to turn off auto health regen without editing base files. Is this possible via player.capabilities? Or any Forge event for this?
April 4, 201510 yr Looks like the code to determine whether or not the player should heal is in FoodStats/onUpdate if (p_75118_1_.worldObj.getGameRules().getGameRuleBooleanValue("naturalRegeneration") && this.foodLevel >= 18 && p_75118_1_.shouldHeal()) { ++this.foodTimer; if (this.foodTimer >= 80) { p_75118_1_.heal(1.0F); this.addExhaustion(3.0F); this.foodTimer = 0; } } That's called from EntityPlayer/onUpdate, the foodTimer field is private, however you could use ASM/Reflection to get access to the field, then on the PlayerTickEvent.Pre just keep it at 0
April 4, 201510 yr Author See oever here, I think this might be the best solution... http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/modification-development/2397501-turning-off-auto-health-regeneration-please-no
April 4, 201510 yr I'd disagree with changing the game rule as that would affect every single player. If that is your goal then go for it, however if there's going to be conditions to this, like the player has to have some certain potion effect or be in a certain area, you don't want to use the gamerule but rather what I suggested.
April 5, 201510 yr I agree that the original question isn't quite clear on what is to be achieved. It does sound like they mean just one of the players and not all players, so yeah changing the game rules is probably not the way to go. Like 61352151511 said, the best way is to record the foodTimer value at the time the effect starts and then in the player tick event use reflection to keep the foodTimer set to that amount. Check out my tutorials here: http://jabelarminecraft.blogspot.com/
April 5, 201510 yr Author It's ok, the Mod I'm creating is supposed to be played like that...no auto health regen...to be honest I think turning off auto health should've been an option in Minceraft to beginn with. Btw., are you the Jabelar from the tutorial website? If so, I'd like to point out my gratitude to all your tutorial efforts...
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.