From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Mon, 29 Feb 2016 20:40:33 -0600
Subject: [PATCH] POM Changes


diff --git a/pom.xml b/pom.xml
index 3fc047371e8f8a626e69697fad549d689c5dce89..a5d87d22cb1588d15e08da3b37e51c5e261c7799 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,15 +1,14 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          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>org.spigotmc</groupId>
-    <artifactId>spigot</artifactId>
+    <artifactId>paper</artifactId>
     <packaging>jar</packaging>
     <version>1.16.5-R0.1-SNAPSHOT</version>
-    <name>Spigot</name>
-    <url>https://www.spigotmc.org/</url>
+    <name>Paper</name>
+    <url>https://papermc.io</url>
 
     <properties>
-        <skipTests>true</skipTests>
+        <!-- <skipTests>true</skipTests> Paper - This [was] not going to end well -->
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <api.version>unknown</api.version>
         <bt.name>git</bt.name>
@@ -20,21 +19,39 @@
     </properties>
 
     <parent>
-        <groupId>org.spigotmc</groupId>
-        <artifactId>spigot-parent</artifactId>
+        <groupId>com.destroystokyo.paper</groupId>
+        <artifactId>paper-parent</artifactId>
         <version>dev-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.logging.log4j</groupId>
+                <artifactId>log4j-bom</artifactId>
+                <version>2.11.2</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <dependencies>
         <dependency>
-            <groupId>org.spigotmc</groupId>
-            <artifactId>spigot-api</artifactId>
+            <groupId>com.destroystokyo.paper</groupId>
+            <artifactId>paper-api</artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.destroystokyo.paper</groupId>
+            <artifactId>paper-mojangapi</artifactId>
             <version>${project.version}</version>
             <scope>compile</scope>
         </dependency>
         <dependency>
-            <groupId>org.spigotmc</groupId>
+            <groupId>io.papermc</groupId>
             <artifactId>minecraft-server</artifactId>
             <version>${minecraft.version}-SNAPSHOT</version>
             <scope>compile</scope>
@@ -45,18 +62,15 @@
             <version>2.12.1</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <scope>compile</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-iostreams</artifactId>
-            <version>2.8.1</version>
             <scope>compile</scope>
-            <exclusions>
-                <!-- included in minecraft-server -->
-                <exclusion>
-                    <groupId>org.apache.logging.log4j</groupId>
-                    <artifactId>log4j-api</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.ow2.asm</groupId>
@@ -64,12 +78,23 @@
             <version>9.1</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <!-- wrapper to use either java 8 sun cleaner or java9+ official cleaner -->
+            <groupId>co.aikar</groupId>
+            <artifactId>cleaner</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+            <version>4.1.50.Final</version>
+        </dependency>
         <!-- deprecated API depend -->
         <dependency>
             <groupId>com.googlecode.json-simple</groupId>
             <artifactId>json-simple</artifactId>
             <version>1.1.1</version>
-            <scope>runtime</scope>
+            <scope>compile</scope>
         </dependency>
         <dependency>
             <groupId>org.xerial</groupId>
@@ -80,7 +105,7 @@
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
-            <version>5.1.49</version>
+            <version>8.0.23</version>
             <scope>runtime</scope>
         </dependency>
         <!-- add these back in as they are not exposed by the API -->
@@ -105,7 +130,7 @@
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-slf4j-impl</artifactId>
-            <version>2.8.1</version>
+            <!--<version>2.8.1</version>--> <!--handled by bom-->
             <scope>runtime</scope>
             <exclusions>
                 <!-- included in minecraft-server -->
@@ -132,34 +157,22 @@
 
     <!-- This builds a completely 'ready to start' jar with all dependencies inside -->
     <build>
+        <finalName>paper-${minecraft.version}</finalName>
+        <defaultGoal>clean install</defaultGoal> <!-- Paper -->
         <plugins>
             <plugin>
-                <groupId>net.md-5</groupId>
-                <artifactId>scriptus</artifactId>
-                <version>0.4.1</version>
+                <groupId>com.lukegb.mojo</groupId>
+                <artifactId>gitdescribe-maven-plugin</artifactId>
+                <version>1.3</version>
+                <configuration>
+                    <outputPrefix>git-Paper-</outputPrefix>
+                    <scmDirectory>..</scmDirectory>
+                </configuration>
                 <executions>
                     <execution>
-                        <id>ex-spigot</id>
-                        <configuration>
-                            <format>${bt.name}-Spigot-%s</format>
-                            <scmDirectory>../</scmDirectory>
-                            <descriptionProperty>spigot.desc</descriptionProperty>
-                        </configuration>
-                        <phase>initialize</phase>
-                        <goals>
-                            <goal>describe</goal>
-                        </goals>
-                    </execution>
-                    <execution>
-                        <id>ex-craftbukkit</id>
-                        <configuration>
-                            <format>-%s</format>
-                            <scmDirectory>../../CraftBukkit</scmDirectory>
-                            <descriptionProperty>craftbukkit.desc</descriptionProperty>
-                        </configuration>
-                        <phase>initialize</phase>
+                        <phase>compile</phase>
                         <goals>
-                            <goal>describe</goal>
+                            <goal>gitdescribe</goal>
                         </goals>
                     </execution>
                 </executions>
@@ -169,6 +182,7 @@
                 <artifactId>maven-jar-plugin</artifactId>
                 <version>3.2.0</version>
                 <configuration>
+                    <forceCreation>true</forceCreation> <!-- Required to prevent shading the jar multiple times -->
                     <archive>
                         <manifest>
                             <addDefaultEntries>false</addDefaultEntries>
@@ -176,11 +190,13 @@
                         <manifestEntries>
                             <Main-Class>org.bukkit.craftbukkit.Main</Main-Class>
                             <Implementation-Title>CraftBukkit</Implementation-Title>
-                            <Implementation-Version>${spigot.desc}${craftbukkit.desc}</Implementation-Version>
-                            <Implementation-Vendor>${project.build.outputTimestamp}</Implementation-Vendor>
+                            <!--suppress MavenModelInspection -->
+                            <Implementation-Version>${describe}</Implementation-Version>
+                            <Implementation-Vendor>${maven.build.timestamp}</Implementation-Vendor>
                             <Specification-Title>Bukkit</Specification-Title>
                             <Specification-Version>${api.version}</Specification-Version>
                             <Specification-Vendor>Bukkit Team</Specification-Vendor>
+                            <Multi-Release>true</Multi-Release>
                         </manifestEntries>
                         <manifestSections>
                             <manifestSection>
@@ -216,14 +232,24 @@
                             <goal>shade</goal>
                         </goals>
                         <configuration>
+                            <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation> <!-- Paper -->
                             <createSourcesJar>${shadeSourcesJar}</createSourcesJar>
                             <filters>
                                 <filter>
-                                    <artifact>org.spigotmc:minecraft-server</artifact>
+                                    <artifact>io.papermc:minecraft-server</artifact>
                                     <excludes>
                                         <exclude>com/google/common/**</exclude>
                                         <exclude>com/google/gson/**</exclude>
                                         <exclude>com/google/thirdparty/**</exclude>
+                                        <!-- paper -->
+                                        <exclude>io/netty/**</exclude>
+                                        <exclude>META-INF/native/libnetty*</exclude>
+                                        <exclude>com/mojang/brigadier/**</exclude>
+                                        <exclude>META-INF/MANIFEST.MF</exclude>
+                                        <exclude>com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.class</exclude>
+                                        <exclude>com/mojang/datafixers/util/Either*</exclude>
+                                        <exclude>org/apache/logging/log4j/**</exclude>
+                                        <exclude>META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat</exclude>
                                     </excludes>
                                 </filter>
                                 <filter>
@@ -245,10 +271,11 @@
                                     <pattern>jline</pattern>
                                     <shadedPattern>org.bukkit.craftbukkit.libs.jline</shadedPattern>
                                 </relocation>
-                                <relocation>
-                                    <pattern>it.unimi</pattern>
-                                    <shadedPattern>org.bukkit.craftbukkit.libs.it.unimi</shadedPattern>
-                                </relocation>
+                                <!-- Paper - Don't relocate fastutil in order to prevent api breakage -->
+                                <!--<relocation>-->
+                                    <!--<pattern>it.unimi</pattern>-->
+                                    <!--<shadedPattern>org.bukkit.craftbukkit.libs.it.unimi</shadedPattern>-->
+                                <!--</relocation>-->
                                 <relocation>
                                     <pattern>org.apache.commons.codec</pattern>
                                     <shadedPattern>org.bukkit.craftbukkit.libs.org.apache.commons.codec</shadedPattern>
@@ -316,10 +343,6 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.8.1</version>
-                <configuration>
-                    <!-- we use the Eclipse compiler as it doesn't need a JDK -->
-                    <compilerId>eclipse</compilerId>
-                </configuration>
                 <dependencies>
                     <dependency>
                         <groupId>org.codehaus.plexus</groupId>
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 4452427d0a8298d119ca29ef397b7a94f19eec28..46a16e31775b28c44f95a8ac5545ebcb656c74b6 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -186,7 +186,7 @@ public class Main {
                 }
 
                 if (false && Main.class.getPackage().getImplementationVendor() != null && System.getProperty("IReallyKnowWhatIAmDoingISwear") == null) {
-                    Date buildDate = new Date(Integer.parseInt(Main.class.getPackage().getImplementationVendor()) * 1000L);
+                    Date buildDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(Main.class.getPackage().getImplementationVendor()); // Paper
 
                     Calendar deadline = Calendar.getInstance();
                     deadline.add(Calendar.DAY_OF_YEAR, -28);
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
index 93046379d0cefd5d3236fc59e698809acdc18f80..674096cab190d62622f9947853b056f57d43a2a5 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
@@ -11,7 +11,7 @@ public final class Versioning {
     public static String getBukkitVersion() {
         String result = "Unknown-Version";
 
-        InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.spigotmc/spigot-api/pom.properties");
+        InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/com.destroystokyo.paper/paper-api/pom.properties");
         Properties properties = new Properties();
 
         if (stream != null) {