Jump to content

Recommended Posts

Posted (edited)

How to increase Mob Health and Max Health over 1024?

I heard that it need to use Mixin.

how to use Mixin????

I use 1.18.1. 

I found 1.18.1 mixin for 9hours..

What is the way that increase All Mob Health and Max Health over 1024 (use Mixin).

Increasing health/maxhealth should be done only once when Mob spawn.

 

Im not goot at Forge Mod developing....

(I've almost only developed bukkit plugins)

I hope you kindly let me know.

(also Im not goot at English sorry.....)

 

Edited by IPECTER
miss
Posted
5 minutes ago, diesieben07 said:

Mixin is not something that is supported.

If you really do need a higher max health value, you need to modify the MAX_HEALTH attribute, because its maximum value is 1024. You can use reflection to change it, no need to use coremodding.

reflection?

Posted
55 minutes ago, diesieben07 said:

It's a Java feature that (among other things) lets you access and modify private fields. However I just noticed that in this case it might be better to use an AccessTransformer, because the field in question (RangedAttribute#maxValue) is also final.

hmm.... It's getting harder.

How can you modify the health and maxHealth of all mobs 100 times(maxhealth * 100) using AccessTransformer?

sorry for asking a lot of questions..

Posted
11 hours ago, diesieben07 said:

AccessTransformer is not something that will do that. AccessTransformer can just make that field non-final so you can increase the maximum possible value. Then you can use EntityJoinWorldEvent to add a transient AttributeModifier (AttributeMap#addTransientAttributeModifiers) that increases the max health.

Thank you for the explanation.

I'll try it and ask you again if there's anything difficult.

Posted
17 hours ago, diesieben07 said:

AccessTransformer is not something that will do that. AccessTransformer can just make that field non-final so you can increase the maximum possible value. Then you can use EntityJoinWorldEvent to add a transient AttributeModifier (AttributeMap#addTransientAttributeModifiers) that increases the max health.

hmm.. too hard

this is my code,

but Cant make Maxhealth up 1024....

@SubscribeEvent
    public void onMobSpawn(EntityJoinWorldEvent e) {
        if (e.getEntity() instanceof Mob) {
            Mob mob = (Mob) e.getEntity();
                mob.getAttribute(Attributes.MAX_HEALTH).setBaseValue(mob.getAttribute(Attributes.MAX_HEALTH).getBaseValue() * 100);
                mob.setHealth(mob.getHealth() * 100);
        }

    }

 

  • IPECTER changed the title to How to increase Mob Health and Max Health over 1024?
Posted

I couldn't do anything.

I don't know how to set the maximum value of Attributes.MAX_HEALTH.

Can you show us the code as an example?

I've been looking for it for hours, but it's hard alone.

Posted
42 minutes ago, diesieben07 said:

Do not use setBaseValue, add an attribute modifier.

Show where you set the maximum value of Attributes.MAX_HEALTH.

"add an attribute modifier."?

addTransientModifier()?

or

addPermanentModifier()?

else?

Posted
3 minutes ago, diesieben07 said:

Have you added the access transformer?

addTransientModifier is the correct one, because you re-add the modifier every time the entity joins.

I'm creating a mod that set MaxHealth to MaxHealth*100 when only once mob spawned.

Posted
1 hour ago, diesieben07 said:

Have you added the access transformer?

addTransientModifier is the correct one, because you re-add the modifier every time the entity joins.

I complete to add AT (build.gradle)

then.. What should i do?

Posted

 

13 minutes ago, diesieben07 said:

Now in FMLCommonSetupEvent#enqueueWork to set maxValue for Attributes.MAX_HEALTH.

@SubscribeEvent
    public void on(FMLCommonSetupEvent e) {
        e.enqueueWork(Attributes.MAX_HEALTH()??????);

    }

hmm...

Posted
16 minutes ago, diesieben07 said:

If you do not know how to set a field, you need to learn basic Java before modding.

@SubscribeEvent
    public void on(FMLCommonSetupEvent e) {
        e.enqueueWork(() -> Attributes.MAX_HEALTH);

    }

hmm.. it is my best

Posted
1 hour ago, diesieben07 said:

Now in FMLCommonSetupEvent#enqueueWork to set maxValue for Attributes.MAX_HEALTH.

hmm...

e.enqueueWork(() -> Attribute.MAX_HEALTH.getDefaultValue) = 1234567890 

?

Posted (edited)
12 minutes ago, diesieben07 said:

If you need multiple hours to assign a value to a field you seriously need to go and learn Java basics first before attempting to mod. These are absolutely required essential prerequisites.

I've made a lot of plugins, but it's almost the first mod. I don't understand well about the current work and the supplier.

I feel like I'm missing something.

Edited by IPECTER
Posted (edited)
54 minutes ago, diesieben07 said:

You have made "a lot of plugins", but you've never assigned a value to a field before...?!

.....

I use JAVA since 2 years ago...

but... I mean... I cant understand 

How to use what e.equeueWork(HERE)..

hmm... I cant explain using English that my think well...

 

or.. I might be not able to understand your comments... 

Edited by IPECTER
Posted (edited)

What I want to know is what should be written in parentheses of equeueWork()

 

If I say something weird, please tell me. The translator isn't perfect either.

Edited by IPECTER

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.