ArcaneDiver Posted May 26, 2020 Posted May 26, 2020 (edited) Hi, i'm trying to implement a cooldown for an ability, and i found that every second a tick event is called 20 times. Here is my actual code: Decreasing the cooldown @SubscribeEvent public static void onSonarCooldown(TickEvent.PlayerTickEvent event) { PlayerEntity player = event.player; ISonarData data = player.getCapability(EntitySonarDataHandler.CAPABILITY_SONAR_DATA).orElse(null); if(data != null) { if(data.getCooldown() > 0) { data.setCooldown(data.getCooldown() - 1); } } } Setting the cooldown data.setCooldown(10 * 20); But the cooldown isn't 10sec but less. How can i implement it better? Edited May 26, 2020 by ArcaneDiver Quote
Draco18s Posted May 26, 2020 Posted May 26, 2020 1 minute ago, ArcaneDiver said: But the cooldown isn't 10sec but less. Well, how long is it? How do you know? Also, the tick events usually have a Phase (START and END) as well as occasionally sub-events (Pre and Post) so if you don't pick one, your code runs more than once per tick. 1 Quote 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.
ArcaneDiver Posted May 26, 2020 Author Posted May 26, 2020 Ok, resolved by ignoring END Phase. Thank you so 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.