IPECTER Posted February 14, 2022 Posted February 14, 2022 (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 February 15, 2022 by IPECTER miss Quote
IPECTER Posted February 14, 2022 Author Posted February 14, 2022 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? Quote
IPECTER Posted February 14, 2022 Author Posted February 14, 2022 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.. Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 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. Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 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); } } Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 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. Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 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? Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 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. Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 "Have you added the access transformer?" no. Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 I dont know anything how to add/use access transformer... Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 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? Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 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... Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 (edited) Can you tell me just this time? I've never seen anything like that before. supplier? Edited February 15, 2022 by IPECTER Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 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 Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 1 hour ago, diesieben07 said: Now in FMLCommonSetupEvent#enqueueWork to set maxValue for Attributes.MAX_HEALTH. hmm... e.enqueueWork(() -> Attribute.MAX_HEALTH.getDefaultValue) = 1234567890 ? Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 Okay, I'll try it for a few hours. Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 (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 February 15, 2022 by IPECTER Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 (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 February 15, 2022 by IPECTER Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 (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 February 15, 2022 by IPECTER Quote
loordgek Posted February 15, 2022 Posted February 15, 2022 https://stackoverflow.com/questions/25192108/what-is-the-breakdown-for-javas-lambda-syntax Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 2 minutes ago, loordgek said: https://stackoverflow.com/questions/25192108/what-is-the-breakdown-for-javas-lambda-syntax oh thx understand! Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 (edited) Therefore e.enqueueWork(() -> { Attribute.MAX_HEALTH.maxValue = 10000000;1 }); !!!! Ill try it morning Edited February 15, 2022 by IPECTER Quote
Luis_ST Posted February 15, 2022 Posted February 15, 2022 this is an example where i replace the AttributeValue Note: this code requires this AT (version 1.18.1) Quote
IPECTER Posted February 15, 2022 Author Posted February 15, 2022 3 minutes ago, Luis_ST said: this is an example where i replace the AttributeValue Note: this code requires this AT (version 1.18.1) holly.... thank you very much Quote
Recommended Posts
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.