Posted August 23, 20169 yr hello i am using code to give player a potion effect but Poison And Nausea are not working Poison colors my heart bar to green but does not deals damage and nausea is appearing as active effect in inventory but nothing happens heres code: public void onPlayerTick(PlayerTickEvent event) { utils.addPotionEffect(event.player, PotionID.NAUSEA, 20, 1, true); } PotionID class: public class PotionID { public static int SPEED = 1; public static int SLOWNESS = 2; public static int HASTE = 3; public static int MININGFATIGUE = 4; public static int STRENGTH = 5; public static int INSTANTHEALTH = 6; public static int INSTANTDAMAGE = 7; public static int JUMPBOOST = 8; public static int NAUSEA = 9; public static int REGENERATION = 10; public static int RESISTANCE = 11; public static int FIRERESISANCE = 12; public static int WATERBREATHING = 13; public static int INVISIBILITY = 14; public static int BLINDNESS = 15; public static int NIGHTVISION = 16; public static int HUNGER = 17; public static int WEAKNESS = 18; public static int POISON = 19; public static int WITHER = 20; public static int HEALTHBOOST = 21; public static int ABSORPTION = 22; public static int SATURATION = 23; public static int GLOWING = 24; public static int LEVITATION = 25; public static int LUCK = 26; public static int BADLUCK = 27; } and addPotionEffect Function: public static void addPotionEffect(EntityLivingBase entity, int potionid, int duration, int amplifier, boolean showParticles) { entity.addPotionEffect(new PotionEffect(Potion.getPotionById(potionid), duration, amplifier, false, showParticles)); }
August 23, 20169 yr "I am using code..." *Proceeds to not show the code.* *Yes, we are wizards!* 1.7.10 is no longer supported by forge, you are on your own.
August 23, 20169 yr We need all of the code where you call it. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 23, 20169 yr It sounds like you're adding the potion effects on the client instead of the server, but I'd have to see more of your code (specifically the full method containing the call to utils.addPotionEffect ) to be sure. Do not use numeric IDs for potions or anything else, these are automatically assigned and can change between saves. Vanilla stores its Potion instances in the MobEffects class, use these. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
August 23, 20169 yr Author i am calling utils.addPotionEffect in tick player event therse nothing more
August 23, 20169 yr i am calling utils.addPotionEffect in tick player event therse nothing more Oh, so you're adding a potion effect to the player every tick. THERES YOUR PROBLEM. Potion duration actually means something: it's a timer. Every time the potion duration is durationRemainting % 20 == 0 the effect (healing, damage) activates and is applied. If you constantly reset the potion duration then those effects never trigger. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
August 23, 20169 yr Author ok so i need to check if player arelady has a potion to make it work EDIT: i changed my utils.addPotionEffect function to: public static boolean addPotionEffect(EntityLivingBase entity, Potion potion, int duration, int amplifier, boolean showParticles) { if (!entity.isPotionActive(potion)) { entity.addPotionEffect(new PotionEffect(potion, duration, amplifier, false, showParticles)); return true; } return false; and still not works maybe resaon is that i am giving the potion on 1 sec
August 23, 20169 yr Potions like Poison and Regeneration only apply their effect every X ticks, determined by Potion#isReady . I suggest you look at this method to see the minimum duration required for the effect to be applied. Nausea requires the duration to be greater than 60 for the wobbling effect to start rendering. Potion effects should only be added on the server (when World#isRemote is false ). PlayerTickEvent and all other subclasses of TickEvent are fired twice per tick of their corresponding system: once at the start with Phase.START and once at the end with Phase.END . Always check the event's Phase to ensure you're not running your code twice per tick. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
August 23, 20169 yr Potions like Poison and Regeneration only apply their effect every X ticks, determined by Potion#isReady . I suggest you look at this method to see the minimum duration required for the effect to be applied. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
August 23, 20169 yr Author in the Potion#isReady method is only /** * checks if Potion effect is ready to be applied this tick. */ public boolean isReady(int duration, int amplifier) { if (this == MobEffects.REGENERATION) { int k = 50 >> amplifier; return k > 0 ? duration % k == 0 : true; } else if (this == MobEffects.POISON) { int j = 25 >> amplifier; return j > 0 ? duration % j == 0 : true; } else if (this == MobEffects.WITHER) { int i = 40 >> amplifier; return i > 0 ? duration % i == 0 : true; } else { return this == MobEffects.HUNGER; } } what i shloud do with this?
August 23, 20169 yr Gosh, I wonder what this part does. if (this == MobEffects.POISON) { int j = 25 >> amplifier; return j > 0 ? duration % j == 0 : true; } Every time the potion duration is durationRemainting % 20 == 0 the effect (healing, damage) activates and is applied. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
August 23, 20169 yr https://en.wikipedia.org/wiki/Modulo_operation Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
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.