<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>fr.xephi</groupId>
    <artifactId>authme</artifactId>
    <version>5.6.0-SNAPSHOT</version>

    <name>AuthMeReloaded</name>
    <description>The first authentication plugin for the Bukkit API!</description>
    <inceptionYear>2013</inceptionYear>
    <url>https://github.com/AuthMe/AuthMeReloaded</url>

    <organization>
        <name>AuthMe-Team</name>
        <url>https://github.com/AuthMe</url>
    </organization>

    <scm>
        <connection>scm:git:https://github.com/AuthMe/AuthMeReloaded.git</connection>
        <developerConnection>scm:git:git@github.com:AuthMe/AuthMeReloaded.git</developerConnection>
        <url>https://github.com/AuthMe/AuthMeReloaded</url>
    </scm>

    <ciManagement>
        <system>jenkins</system>
        <url>https://ci.codemc.io/job/AuthMe/job/AuthMeReloaded/</url>
    </ciManagement>

    <issueManagement>
        <system>GitHub</system>
        <url>https://github.com/AuthMe/AuthMeReloaded/issues</url>
    </issueManagement>

    <distributionManagement>
        <snapshotRepository>
            <id>codemc-snapshots</id>
            <url>https://repo.codemc.io/repository/maven-snapshots/</url>
        </snapshotRepository>
        <repository>
            <id>codemc-releases</id>
            <url>https://repo.codemc.io/repository/maven-releases/</url>
        </repository>
    </distributionManagement>

    <licenses>
        <license>
            <name>The GNU General Public Licence version 3 (GPLv3)</name>
            <url>https://www.gnu.org/licenses/gpl-3.0.html</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <properties>
        <!-- Build cycle properties -->
        <project.skipExtendedHashTests>false</project.skipExtendedHashTests>

        <!-- Environment properties -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <maven.minimumVersion>3.6.0</maven.minimumVersion>

        <!-- Dependencies versions -->
        <spigot.version>1.17.1-R0.1-SNAPSHOT</spigot.version>

        <!-- Versioning properties -->
        <project.outputName>AuthMe</project.outputName>
        <project.buildNumber>CUSTOM</project.buildNumber>
        <project.versionCode>${project.version}-b${project.buildNumber}</project.versionCode>
        <project.finalNameBase>${project.outputName}-${project.version}</project.finalNameBase>

        <!-- Plugin description file properties -->
        <pluginDescription.name>${project.outputName}</pluginDescription.name>
        <pluginDescription.version>${project.versionCode}</pluginDescription.version>
        <pluginDescription.main>${project.groupId}.${project.artifactId}.${pluginDescription.name}</pluginDescription.main>
        <pluginDescription.authors>sgdc3, ljacqu, games647, Hex3l, krusic22</pluginDescription.authors>
    </properties>

    <!-- Jenkins profile -->
    <profiles>
        <!-- Set the buildNumber using the jenkins env. variable -->
        <profile>
            <id>jenkins</id>
            <activation>
                <property>
                    <name>env.BUILD_NUMBER</name>
                </property>
            </activation>
            <properties>
                <project.buildNumber>${env.BUILD_NUMBER}</project.buildNumber>
            </properties>
        </profile>
        <!-- Skip long hash tests, reduce the test time of 20-30 seconds -->
        <profile>
            <id>skipLongHashTests</id>
            <activation>
                <property>
                    <name>skipLongHashTests</name>
                </property>
            </activation>
            <properties>
                <project.skipExtendedHashTests>true</project.skipExtendedHashTests>
            </properties>
        </profile>
        <!-- Skip javadoc generation for faster local build -->
        <profile>
            <id>skipJavadocGeneration</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <defaultGoal>clean package</defaultGoal>
        <!-- Little hack to make the shade plugin output a file with the right name -->
        <finalName>${project.finalNameBase}-noshade</finalName>

        <resources>
            <resource>
                <directory>.</directory>
                <filtering>false</filtering>
                <includes>
                    <include>LICENSE</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources/</directory>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources/messages/</directory>
                <targetPath>./messages/</targetPath>
                <filtering>false</filtering>
            </resource>
        </resources>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.3.1</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <!-- Enforce build environment -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                        <id>enforce-environment</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>${maven.minimumVersion}</version>
                                </requireMavenVersion>
                            </rules>
                            <fail>true</fail>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- Clean the target folder content -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>
            <!-- Include resource files -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.2.0</version>
            </plugin>
            <!-- Compile and include classes -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
            <!-- Generate test coverage reports -->
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.7</version>
                <executions>
                    <execution>
                        <id>pre-unit-test</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>post-unit-test</id>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Unit testing -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
                <configuration>
                    <!-- Force the right file encoding during unit testing -->
                    <!-- Set language to English in order to get consistent results for localized time formatting -->
                    <argLine>-Dfile.encoding=${project.build.sourceEncoding} -Duser.language=en @{argLine}</argLine>
                    <systemPropertyVariables>
                        <project.skipExtendedHashTests>${project.skipExtendedHashTests}</project.skipExtendedHashTests>
                    </systemPropertyVariables>
                    <!-- Don't trim stack traces -->
                    <trimStackTrace>false</trimStackTrace>
                </configuration>
            </plugin>
            <!-- Generate a jar containing classes and resources -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
            </plugin>
            <!-- Generate a jar containing the source javadoc -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <finalName>${project.finalNameBase}</finalName>
                    <!-- In sync with the source/target properties of the maven-compiler-plugin -->
                    <source>8</source>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadoc</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Generate a jar containing the java sources -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.2.1</version>
                <configuration>
                    <finalName>${project.finalNameBase}</finalName>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Generate a jar containing classes, resources and shaded libraries -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <id>shaded-jar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <!--
                        <configuration>
                            <artifactSet>
                                <excludes>
                                    <exclude>mysql:mysql-connector-java</exclude>
                                </excludes>
                            </artifactSet>
                        </configuration>
                        -->
                    </execution>
                    <!--
                    <execution>
                        <id>shaded-jar-legacy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            Use the base jar name, to help server owners download the right jar
                            <finalName>${project.finalNameBase}-legacy</finalName>
                        </configuration>
                    </execution>
                    -->
                </executions>
                <configuration>
                    <!-- Don't create the reduced pom file, as we don't deploy the shaded jar -->
                    <createDependencyReducedPom>false</createDependencyReducedPom>
                    <!-- Deploy the non shaded jar as main artifact -->
                    <shadedArtifactAttached>true</shadedArtifactAttached>
                    <!-- Use the base jar name, to help server owners download the right jar -->
                    <finalName>${project.finalNameBase}</finalName>

                    <!--
                    Relocate all lib we use in order to fix class loading errors if we use different versions
                    than already loaded libs
                    -->
                    <relocations>
                        <relocation>
                            <pattern>ch.jalu</pattern>
                            <shadedPattern>fr.xephi.authme.libs.ch.jalu</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>com.zaxxer.hikari</pattern>
                            <shadedPattern>fr.xephi.authme.libs.com.zaxxer.hikari</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.slf4j</pattern>
                            <shadedPattern>fr.xephi.authme.libs.org.slf4j</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>com.maxmind.db</pattern>
                            <shadedPattern>fr.xephi.authme.libs.com.maxmind.db</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>com.ice.tar</pattern>
                            <shadedPattern>fr.xephi.authme.libs.com.icetar.tar</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>net.ricecode.similarity</pattern>
                            <shadedPattern>fr.xephi.authme.libs.ricecode.net.ricecode.similarity</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>de.rtner</pattern>
                            <shadedPattern>fr.xephi.authme.libs.de.rtner</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>de.mkammerer</pattern>
                            <shadedPattern>fr.xephi.authme.libs.de.mkammerer</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>com.warrenstrange</pattern>
                            <shadedPattern>fr.xephi.authme.libs.com.warrenstrange</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>javax.inject</pattern>
                            <shadedPattern>fr.xephi.authme.libs.javax.inject</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>at.favre.lib</pattern>
                            <shadedPattern>fr.xephi.authme.libs.at.favre.lib</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.postgresql</pattern>
                            <shadedPattern>fr.xephi.authme.libs.org.postgresql</shadedPattern>
                        </relocation>
                        <!-- bStats metrics class -->
                        <relocation>
                            <pattern>org.bstats</pattern>
                            <shadedPattern>fr.xephi.authme.libs.org.bstats</shadedPattern>
                        </relocation>
                    </relocations>

                    <filters>
                        <!-- Ignore manifest signatures for shading the project into an uber-jar to fix -->
                        <!-- "Invalid signature file digest for Manifest main attributes" -->
                        <filter>
                            <artifact>*:*</artifact>
                            <excludes>
                                <exclude>META-INF/*.SF</exclude>
                                <exclude>META-INF/*.DSA</exclude>
                                <exclude>META-INF/*.RSA</exclude>
                            </excludes>
                        </filter>
                        <filter>
                            <artifact>*:*</artifact>
                            <excludes>
                                <exclude>META-INF/*.MF</exclude>
                                <exclude>META-INF/DEPENDENCIES</exclude>
                            </excludes>
                        </filter>
                    </filters>

                    <transformers>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer"/>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
                            <addHeader>false</addHeader>
                        </transformer>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                    </transformers>
                </configuration>
            </plugin>
            <!-- Install the jars as artifacts into the local repository -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.5.2</version>
            </plugin>
            <!-- Deploy the jars as artifacts into the remote repository -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
            </plugin>
            <!-- Handle documentation generation, required by other plugins -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.9.1</version>
            </plugin>
            <!-- Publish coveralls test coverage reports, not included in the build cycle by default -->
            <plugin>
                <groupId>org.eluder.coveralls</groupId>
                <artifactId>coveralls-maven-plugin</artifactId>
                <version>4.3.0</version>
                <configuration>
                    <!-- The secret token is provided with a command-line parameter -->
                    <failOnServiceError>false</failOnServiceError>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <!-- Apache snapshots repo -->
        <repository>
            <id>apache-snapshots</id>
            <url>https://repository.apache.org/content/repositories/snapshots/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>

        <!-- SpigotAPI Repo -->
        <repository>
            <id>spigotmc-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>

        <!-- CodeMC Repo (Contains many required libraries) -->
        <repository>
            <id>codemc-repo</id>
            <url>https://repo.codemc.io/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>

        <!-- EssentialsX Repo -->
        <repository>
            <id>enderzone-repo</id>
            <url>https://ci.ender.zone/plugin/repository/everything/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>

        <!-- ProtocolLib Repo -->
        <repository>
            <id>dmulloy2-repo-releases</id>
            <url>https://repo.dmulloy2.net/nexus/repository/releases/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>dmulloy2-repo-snapshots</id>
            <url>https://repo.dmulloy2.net/nexus/repository/snapshots/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>

        <!-- Multiverse Repo -->
        <repository>
            <id>onarandombox-repo-releases</id>
            <url>https://repo.onarandombox.com/content/repositories/multiverse/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>onarandombox-repo-snapshots</id>
            <url>https://repo.onarandombox.com/content/repositories/multiverse-snapshots/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <dependencies>
        <!-- Java Libraries -->

        <!-- Jalu Injector -->
        <dependency>
            <groupId>ch.jalu</groupId>
            <artifactId>injector</artifactId>
            <version>1.0</version>
            <optional>true</optional>
        </dependency>

        <!-- String comparison library. Used for dynamic help system. -->
        <dependency>
            <groupId>net.ricecode</groupId>
            <artifactId>string-similarity</artifactId>
            <version>1.0.0</version>
            <optional>true</optional>
        </dependency>

        <!-- MaxMind GEO IP with our modifications to use GSON in replacement of the big Jackson dependency -->
        <!-- GSON is already included and therefore it reduces the file size in comparison to the original version -->
        <dependency>
            <groupId>com.maxmind.db</groupId>
            <artifactId>maxmind-db-gson</artifactId>
            <version>2.0.3</version>
            <optional>true</optional>
            <exclusions>
                <exclusion>
                    <groupId>com.google.code.gson</groupId>
                    <artifactId>gson</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- Library for tar archives -->
        <dependency>
            <groupId>javatar</groupId>
            <artifactId>javatar</artifactId>
            <version>2.5</version>
            <optional>true</optional>
        </dependency>

        <!-- Java Email Library -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-email</artifactId>
            <version>1.6-SNAPSHOT</version>
            <optional>true</optional>
        </dependency>

        <!-- Log4J Logger (required by the console filter) -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>

        <!-- Database Connection Pool -->
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>4.0.3</version>
            <optional>true</optional>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- HikariCP Logger -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.32</version>
            <optional>true</optional>
        </dependency>

        <!-- PBKDF2 implementation -->
        <dependency>
            <groupId>de.rtner</groupId>
            <artifactId>PBKDF2</artifactId>
            <version>1.1.4</version>
            <optional>true</optional>
        </dependency>

        <!-- MySQL connector, shaded into the legacy jar -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.mariadb.jdbc</groupId>
            <artifactId>mariadb-java-client</artifactId>
            <version>2.7.4</version>
            <optional>true</optional>
        </dependency>

        <!-- Argon2 implementation -->
        <dependency>
            <groupId>de.mkammerer</groupId>
            <artifactId>argon2-jvm-nolibs</artifactId>
            <version>2.11</version>
            <optional>true</optional>
        </dependency>

        <!-- TOTP client -->
        <dependency>
            <groupId>com.warrenstrange</groupId>
            <artifactId>googleauth</artifactId>
            <version>1.5.0</version>
            <optional>true</optional>
        </dependency>

        <!-- Spigot API, https://www.spigotmc.org/ -->
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>${spigot.version}</version>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <artifactId>junit</artifactId>
                    <groupId>junit</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>bungeecord-chat</artifactId>
                    <groupId>net.md-5</groupId>
                </exclusion>
                <exclusion>
                    <groupId>com.googlecode.json-simple</groupId>
                    <artifactId>json-simple</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--  Keep in sync with spigot 1.8.8  -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>17.0</version>
            <scope>provided</scope>
        </dependency>
        <!--  Keep in sync with spigot 1.8.8  -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.4</version>
            <scope>provided</scope>
        </dependency>

        <!-- Bukkit Libraries  -->

        <!-- ConfigMe -->
        <dependency>
            <groupId>ch.jalu</groupId>
            <artifactId>configme</artifactId>
            <version>1.2.0</version>
            <optional>true</optional>
            <exclusions>
                <exclusion>
                    <groupId>org.yaml</groupId>
                    <artifactId>snakeyaml</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- bStats metrics -->
        <dependency>
            <groupId>org.bstats</groupId>
            <artifactId>bstats-bukkit</artifactId>
            <version>2.2.1</version>
            <optional>true</optional>
        </dependency>

        <!-- ProtocolLib -->
        <dependency>
            <groupId>com.comphenix.protocol</groupId>
            <artifactId>ProtocolLib</artifactId>
            <version>4.7.0</version>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <artifactId>cglib-nodep</artifactId>
                    <groupId>cglib</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>BukkitExecutors</artifactId>
                    <groupId>com.comphenix.executors</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- LuckPerms plugin -->
        <dependency>
            <groupId>net.luckperms</groupId>
            <artifactId>api</artifactId>
            <version>5.3</version>
            <scope>provided</scope>
        </dependency>

        <!-- PermissionsEx plugin -->
        <dependency>
            <groupId>ru.tehkode</groupId>
            <artifactId>PermissionsEx</artifactId>
            <version>1.23.5-SNAPSHOT</version>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <artifactId>commons-dbcp</artifactId>
                    <groupId>commons-dbcp</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>accounts-client</artifactId>
                    <groupId>com.mojang</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- zPermissions plugin -->
        <dependency>
            <groupId>org.tyrannyofheaven.bukkit</groupId>
            <artifactId>zPermissions</artifactId>
            <version>1.4.3-SNAPSHOT</version>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.avaje</groupId>
                    <artifactId>ebean</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- Vault, https://dev.bukkit.org/bukkit-plugins/vault/ -->
        <dependency>
            <groupId>net.milkbowl.vault</groupId>
            <artifactId>VaultAPI</artifactId>
            <version>1.7</version>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.bukkit</groupId>
                    <artifactId>bukkit</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.bukkit</groupId>
                    <artifactId>craftbukkit</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- Multi World plugin, https://www.spigotmc.org/resources/multiverse-core.390/ -->
        <dependency>
            <groupId>com.onarandombox.multiversecore</groupId>
            <artifactId>Multiverse-Core</artifactId>
            <version>4.3.1</version>
            <type>jar</type>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.bukkit</groupId>
                    <artifactId>bukkit</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.bukkit</groupId>
                    <artifactId>craftbukkit</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>AllPay</artifactId>
                    <groupId>com.fernferret.allpay</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>Vault</artifactId>
                    <groupId>net.milkbowl.vault</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>VaultAPI</artifactId>
                    <groupId>net.milkbowl.vault</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>CommandHandler</artifactId>
                    <groupId>com.pneumaticraft.commandhandler</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>SerializationConfig</artifactId>
                    <groupId>me.main__.util</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>Logging</artifactId>
                    <groupId>com.dumptruckman.minecraft</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>metrics</artifactId>
                    <groupId>org.mcstats.bukkit</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>buscript</artifactId>
                    <groupId>com.dumptruckman.minecraft</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>junit</artifactId>
                    <groupId>junit</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spigot-api</artifactId>
                    <groupId>org.spigotmc</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jettison</artifactId>
                    <groupId>org.codehaus.jettison</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- EssentialsX plugin -->
        <dependency>
            <groupId>net.ess3</groupId>
            <artifactId>EssentialsX</artifactId>
            <version>2.16.1</version>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <groupId>io.papermc</groupId>
                    <artifactId>paperlib</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>net.ess3</groupId>
                    <artifactId>NMSProvider</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>net.ess3</groupId>
                    <artifactId>UpdatedMetaProvider</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>net.ess3</groupId>
                    <artifactId>1_8_R1Provider</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>net.ess3</groupId>
                    <artifactId>1_8_R2Provider</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>net.ess3</groupId>
                    <artifactId>LegacyProvider</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>net.ess3</groupId>
                    <artifactId>ReflectionProvider</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>net.ess3</groupId>
                    <artifactId>FlattenedProvider</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- BCrypt implementation -->
        <dependency>
            <groupId>at.favre.lib</groupId>
            <artifactId>bcrypt</artifactId>
            <version>0.9.0</version>
            <optional>true</optional>
        </dependency>

        <!-- XAuth, another authentication plugin, required by the database converter -->
        <dependency>
            <groupId>de.luricos.bukkit</groupId>
            <artifactId>xAuth</artifactId>
            <version>2.6.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>ch.jalu</groupId>
            <artifactId>datasourcecolumns</artifactId>
            <version>0.1.1-SNAPSHOT</version>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.23</version>
            <optional>true</optional>
        </dependency>

        <!-- Unit Testing Libraries -->

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
            <version>4.13.2</version>
        </dependency>

        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>java-hamcrest</artifactId>
            <scope>test</scope>
            <version>2.0.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <scope>test</scope>
            <version>3.12.4</version>
            <exclusions>
                <exclusion>
                    <artifactId>hamcrest-core</artifactId>
                    <groupId>org.hamcrest</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- Required to mock the LuckPerms API-->
        <dependency>
            <groupId>org.checkerframework</groupId>
            <artifactId>checker-qual</artifactId>
            <version>3.18.1</version>
            <scope>test</scope>
        </dependency>

        <!-- JDBC drivers for datasource integration tests -->
        <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.36.0.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.200</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
</project>
