From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Zach Brown <1254957+zachbr@users.noreply.github.com>
Date: Tue, 1 Mar 2016 00:16:08 +0100
Subject: [PATCH] Build system changes


diff --git a/build.gradle.kts b/build.gradle.kts
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -0,0 +0,0 @@ dependencies {
     api("net.md-5:bungeecord-chat:$bungeeCordChatVersion")
     api("org.yaml:snakeyaml:2.2")
     api("org.joml:joml:1.10.5")
+    // Paper start
+    api("com.googlecode.json-simple:json-simple:1.1.1") {
+        isTransitive = false // includes junit
+    }
+    // Paper end
 
     compileOnly("org.apache.maven:maven-resolver-provider:3.9.6")
     compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18")
     compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18")
 
-    val annotations = "org.jetbrains:annotations-java5:$annotationsVersion"
+    val annotations = "org.jetbrains:annotations:$annotationsVersion" // Paper - we don't want Java 5 annotations...
     compileOnly(annotations)
     testCompileOnly(annotations)
 
+    // Paper start - add checker
+    val checkerQual = "org.checkerframework:checker-qual:3.33.0"
+    compileOnlyApi(checkerQual)
+    testCompileOnly(checkerQual)
+    // Paper end
+
     testImplementation("org.apache.commons:commons-lang3:3.12.0")
     testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
     testImplementation("org.hamcrest:hamcrest:2.2")
@@ -0,0 +0,0 @@ tasks.withType<Javadoc> {
     options.links(
         "https://guava.dev/releases/32.1.2-jre/api/docs/",
         "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/",
-        "https://javadoc.io/doc/org.jetbrains/annotations-java5/$annotationsVersion/",
+        "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", // Paper - we don't want Java 5 annotations
         "https://javadoc.io/doc/net.md-5/bungeecord-chat/$bungeeCordChatVersion/",
+        // Paper start - add missing javadoc links
+        "https://javadoc.io/doc/org.joml/joml/1.10.5/index.html",
+        "https://www.javadoc.io/doc/com.google.code.gson/gson/2.10.1",
+        // Paper end
     )
     options.tags("apiNote:a:API Note:")
 
@@ -0,0 +0,0 @@ tasks.withType<Javadoc> {
 tasks.test {
     useJUnitPlatform()
 }
+
+// Paper start
+val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks.ScanJarForBadCalls::class) {
+    badAnnotations.add("Lio/papermc/paper/annotation/DoNotUse;")
+    jarToScan.set(tasks.jar.flatMap { it.archiveFile })
+    classpath.from(configurations.compileClasspath)
+}
+tasks.check {
+    dependsOn(scanJar)
+}
+// Paper end
diff --git a/src/main/java/io/papermc/paper/annotation/DoNotUse.java b/src/main/java/io/papermc/paper/annotation/DoNotUse.java
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
--- /dev/null
+++ b/src/main/java/io/papermc/paper/annotation/DoNotUse.java
@@ -0,0 +0,0 @@
+package io.papermc.paper.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import org.jetbrains.annotations.ApiStatus;
+
+/**
+ * Annotation used to mark methods or constructors which should not be called.
+ *
+ * <p>Separate from {@link Deprecated} to differentiate from the large amount of deprecations.</p>
+ */
+@ApiStatus.Internal
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+public @interface DoNotUse {
+}
