Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.7.10]Turning off auto health regeneration - please no console commands!


Frontsalat
 Share

Recommended Posts

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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/

Link to comment
Share on other sites

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

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

 Share



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • The version you are using is no longer supported on this forum. Please update to a modern version of Minecraft to receive support. Currently supported versions are 1.19.2 (Latest) and 1.18.2 (LTS).
    • Yep, it's what the title says I only found out how to generate flowers and didn't find the the thingy with all the configured features are Would be nice if someone could help! Thanks
    • I started a server with PlayerRevive/Tombstone mod and when I die and I respawn I don't stop dying. Also I have a Issue with FramedBlocks: when I put one block of this mod, the server crashes and closes. I put here the server log: [16:55:36 ERROR]: Exception caught during firing event: Cannot invoke "net.minecraft.world.World.func_201670_d()" because "this.field_145850_b" is null         Index: 11         Listeners:                 0: HIGHEST                 1: ASM: class ovh.corail.tombstone.event.EventHandler onServerTick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 2: NORMAL                 3: ASM: class com.mrcrayfish.guns.common.DelayedTask onServerTick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 4: ASM: class shadows.placebo.util.PlaceboTaskQueue tick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 5: ASM: com.dairymoose.modernlife.core.ModernLifeCommon@501855c1 onServerTick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 6: ASM: com.github.alexthe666.citadel.server.CitadelEvents@7bca1184 onServerTickEvent(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 7: ASM: me.ichun.mods.ichunutil.common.core.EventHandlerServer@41275fcc onServerTick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 8: ASM: net.minecraftforge.common.ForgeInternalHandler@5495b2c1 onServerTick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 9: ASM: class com.simibubi.create.events.CommonEvents onServerTick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 10: ASM: class net.geforcemods.securitycraft.SCEventHandler onServerTick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 11: ASM: class xfacthd.framedblocks.common.util.EventHandler onServerTick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 12: ASM: class com.hollingsworth.arsnouveau.api.event.EventQueue serverTick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 13: ASM: com.mrcrayfish.obfuscate.common.data.SyncedPlayerData@2c57ecfc onServerTick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 14: ASM: noppes.npcs.ServerTickHandler@30710a3e onServerTick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V                 15: ASM: com.sk89q.worldedit.forge.ThreadSafeCache@37b339fc tickStart(Lnet/minecraftforge/event/TickEvent;)V                 16: LOWEST                 17: ASM: ovh.corail.tombstone.proxy.ServerProxy@5a4a21ad onServerTick(Lnet/minecraftforge/event/TickEvent$ServerTickEvent;)V java.lang.NullPointerException: Cannot invoke "net.minecraft.world.World.func_201670_d()" because "this.field_145850_b" is null         at xfacthd.framedblocks.common.tileentity.FramedTileEntity.checkSolidStateOnLoad(FramedTileEntity.java:539)         at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)         at xfacthd.framedblocks.common.util.EventHandler.onServerTick(EventHandler.java:84)         at net.minecraftforge.eventbus.ASMEventHandler_485_EventHandler_onServerTick_ServerTickEvent.invoke(.dynamic)         at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85)         at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302)         at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283)         at net.minecraftforge.fml.hooks.BasicEventHooks.onPreServerTick(BasicEventHooks.java:113)         at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:1001)         at net.minecraft.server.MinecraftServer.func_240802_v_(MinecraftServer.java:818)         at net.minecraft.server.MinecraftServer.func_240783_a_(MinecraftServer.java:269)         at java.base/java.lang.Thread.run(Thread.java:833) [16:55:36 ERROR]: Encountered an unexpected exception [16:55:36 FATAL]: Preparing crash report with UUID 62ce1105-b5dd-4f30-9af8-999e3f1f687f [16:55:37 ERROR]: This crash report has been saved to: /home/container/./crash-reports/crash-2022-09-29_16.55.36-server.txt
    • Been looking everywhere, just hope this helps someone. As of 1.19.2 the only way that doesn't cause problems would be to use push(). Unless someone is brighter than me lol.   @SubscribeEvent public static void onLivingJump(LivingEvent.LivingJumpEvent event){ float jumpMultiplier = 0.07F; if (event.getEntity() instanceof Player){ event.getEntity().push(0,jumpMultiplier,0); }  
  • Topics

×
×
  • Create New...

Important Information

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