aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/thatgravyboat/skyblockhud/handlers/CooldownHandler.java
blob: 7c4d39ab62083c07cc52469dade4e98cc06c0045 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
//package com.thatgravyboat.skyblockhud.handlers;
//
//import com.google.common.collect.Sets;
//import at.lorenz.mod.LorenzMod;
//import com.thatgravyboat.skyblockhud.api.item.IAbility;
//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;
//
//public class CooldownHandler {
//
//    private static final Pattern ABILITY_REGEX = Pattern.compile("\u00A76Ability: (.*) \u00A7e\u00A7lRIGHT CLICK .* \u00A78Cooldown: \u00A7a(\\d*)s");
//
//    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");
//            if (display != null && display.hasKey("Lore")) {
//                NBTTagList lore = display.getTagList("Lore", 8);
//                List<String> loreList = new ArrayList<>();
//                for (int i = 0; i < lore.tagCount(); i++) {
//                    String loreLine = lore.getStringTagAt(i).trim();
//                    if (!loreLine.isEmpty()) loreList.add(loreLine);
//                }
//                Matcher abilityMatcher = ABILITY_REGEX.matcher(String.join(" ", loreList));
//                if (abilityMatcher.find()) {
//                    return abilityMatcher;
//                }
//            }
//        }
//        return null;
//    }
//
//    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
//    public void tick(TickEvent.ClientTickEvent event) {
//        if (LorenzMod.config.misc.hideItemCooldowns) return;
//        if (event.phase.equals(TickEvent.Phase.END)) {
//            COOLDOWNS.values().forEach(Cooldown::tick);
//            COOLDOWNS.entrySet().removeIf(entry -> entry.getValue().isOver());
//        }
//    }
//
//    @SubscribeEvent
//    public void onPlayerInteract(PlayerInteractEvent event) {
//        if (LorenzMod.config.misc.hideItemCooldowns) return;
//        if (event.action.equals(PlayerInteractEvent.Action.RIGHT_CLICK_AIR) || event.action.equals(PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK)) {
//            if (event.entityPlayer.getHeldItem() != null) {
//                IAbility ability = (IAbility) ((Object) event.entityPlayer.getHeldItem());
//                if (ability.getAbility() != null) {
//                    addCooldown(ability, false);
//                }
//            }
//        }
//    }
//
//    public static float getAbilityTime(ItemStack stack) {
//        IAbility ability = (IAbility) ((Object) stack);
//        if (ability.getAbility() != null) {
//            return COOLDOWNS.containsKey(ability.getAbility()) ? COOLDOWNS.get(ability.getAbility()).getTime() : -1f;
//        }
//        return -1f;
//    }
//
//    private static class Cooldown {
//
//        public int current;
//        public final int end;
//
//        Cooldown(int end) {
//            this.end = end;
//        }
//
//        public boolean isOver() {
//            return current >= end;
//        }
//
//        public void tick() {
//            current++;
//        }
//
//        public float getTime() {
//            return current / (float) end;
//        }
//    }
//}