aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java
blob: f2c67d322495025ef6df9bef4b07077300ea04db (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
package me.xmrvizzy.skyblocker.chat;

import me.xmrvizzy.skyblocker.chat.filters.*;
import me.xmrvizzy.skyblocker.skyblock.dungeon.Reparty;
import me.xmrvizzy.skyblocker.skyblock.dungeon.ThreeWeirdos;
import me.xmrvizzy.skyblocker.skyblock.dungeon.Trivia;
import me.xmrvizzy.skyblocker.skyblock.dwarven.Fetchur;
import me.xmrvizzy.skyblocker.skyblock.dwarven.Puzzler;

import java.util.regex.Matcher;

public class ChatParser {
    private final static ChatListener[] listeners = new ChatListener[]{
            new Reparty(),
            new ThreeWeirdos(),
            new AoteFilter(),
            new ImplosionFilter(),
            new MoltenWaveFilter(),
            new HealFilter(),
            new AbilityFilter(),
            new AdFilter(),
            new TeleportPadFilter(),
            new ComboFilter(),
            new Fetchur(),
            new Puzzler(),
            new Trivia(),
    };

    public boolean shouldFilter(String message) {
        for (ChatListener listener : listeners) {
            if (listener.isEnabled()) {
                Matcher m = listener.getPattern().matcher(message);
                if (m.matches()) {
                    String[] groups = new String[m.groupCount() + 1];
                    for (int i = 0; i < groups.length; i++)
                        groups[i] = m.group(i);
                    return listener.onMessage(groups);
                }
            }
        }
        return false;
    }
}