diff options
Diffstat (limited to 'src/main/java/com/thatgravyboat/skyblockhud/handlers/CooldownHandler.java')
-rw-r--r-- | src/main/java/com/thatgravyboat/skyblockhud/handlers/CooldownHandler.java | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/src/main/java/com/thatgravyboat/skyblockhud/handlers/CooldownHandler.java b/src/main/java/com/thatgravyboat/skyblockhud/handlers/CooldownHandler.java index d7d3a41..8704bdb 100644 --- a/src/main/java/com/thatgravyboat/skyblockhud/handlers/CooldownHandler.java +++ b/src/main/java/com/thatgravyboat/skyblockhud/handlers/CooldownHandler.java @@ -1,17 +1,19 @@ package com.thatgravyboat.skyblockhud.handlers; +import com.google.common.collect.Sets; import com.thatgravyboat.skyblockhud.SkyblockHud; import com.thatgravyboat.skyblockhud.api.item.IAbility; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import com.thatgravyboat.skyblockhud.utils.Utils; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; +import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; @@ -21,6 +23,9 @@ public class CooldownHandler { private static final Map<String, Cooldown> COOLDOWNS = new HashMap<>(); + private static final Set<String> CUSTOM_HANDLED_COOLDOWNS = Sets.newHashSet("Mining Speed Boost"); + + public static Matcher getAbility(NBTTagCompound nbt) { if (nbt != null && nbt.hasKey("ExtraAttributes") && nbt.getCompoundTag("ExtraAttributes").hasKey("uuid") && nbt.hasKey("display")){ NBTTagCompound display = nbt.getCompoundTag("display"); @@ -40,8 +45,27 @@ public class CooldownHandler { return null; } - private static void addCooldown(IAbility ability) { - COOLDOWNS.putIfAbsent(ability.getAbility(), new Cooldown(ability.getAbilityTime()*20)); + private static void addCooldown(String id, int time) { + COOLDOWNS.putIfAbsent(id, new Cooldown(time*20)); + } + + private static void addCooldown(IAbility ability, boolean isForced) { + if (isForced || !CUSTOM_HANDLED_COOLDOWNS.contains(ability.getAbility())) { + addCooldown(ability.getAbility(), ability.getAbilityTime()); + } + } + + @SubscribeEvent(priority = EventPriority.HIGHEST) + public void onChat(ClientChatReceivedEvent event){ + String message = Utils.removeColor(event.message.getUnformattedText()); + if (event.type != 2 && message.equals("You used your Mining Speed Boost Pickaxe Ability!")){ + if (Minecraft.getMinecraft().thePlayer.getHeldItem() != null) { + IAbility ability = (IAbility) (Object) Minecraft.getMinecraft().thePlayer.getHeldItem(); + if (ability.getAbility().equals("Mining Speed Boost")) { + addCooldown("Mining Speed Boost", ability.getAbilityTime()); + } + } + } } @SubscribeEvent @@ -60,7 +84,7 @@ public class CooldownHandler { if (event.entityPlayer.getHeldItem() != null) { IAbility ability = (IAbility)((Object) event.entityPlayer.getHeldItem()); if (ability.getAbility() != null) { - addCooldown(ability); + addCooldown(ability, false); } } } |