summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/game/util/Version.java
blob: e2dcfdd73a482c5297c0b76c4a8956627089c868 (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
package net.tylermurphy.hideAndSeek.game.util;

import org.bukkit.Bukkit;

import java.util.HashMap;
import java.util.Map;

public class Version {

    private static final Map<String,Boolean> CACHE = new HashMap<>();

    public static boolean atLeast(String testVersion) {


        if (CACHE.containsKey(testVersion)) return CACHE.get(testVersion);

        String[] serverCheckTemp = Bukkit.getBukkitVersion().substring(2,Bukkit.getBukkitVersion().indexOf('-')).split("\\.");
        int[] serverCheck = new int[serverCheckTemp.length];
        for(int i=0; i<serverCheck.length; i++) {
            serverCheck[i] = Integer.parseInt(serverCheckTemp[i]);
        }

        String[] customCheckTemp = testVersion.substring(2).split("\\.");
        int[] customCheck = new int[customCheckTemp.length];
        for(int i=0; i<customCheck.length; i++) {
            customCheck[i] = Integer.parseInt(customCheckTemp[i]);
        }

        boolean result = getResult(customCheck, serverCheck);
        CACHE.put(testVersion, result);
        return result;
    }

    private static boolean getResult(int[] customCheck, int[] serverCheck) {
        if (customCheck[0] > serverCheck[0]) return false;
        else if (customCheck[0] < serverCheck[0]) return true;
        else {
            if (customCheck.length == 1 && serverCheck.length == 1) return true;
            else if (customCheck.length == 2 && serverCheck.length == 2) {
                return customCheck[1] <= serverCheck[1];
            }
            else return serverCheck.length == 2;
        }
    }
}