--- a/purpur-server/build.gradle.kts +++ b/purpur-server/build.gradle.kts @@ -13,6 +_,7 @@ } val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/" +val bxTeamMavenPublicUrl = "https://repo.bxteam.org/snapshots/" dependencies { mache("io.papermc:mache:1.21.5+build.2") @@ -30,6 +_,7 @@ // Purpur start - Rebrand val purpur = forks.register("purpur") { + rootDirectory = upstreamsDirectory().map { it.dir("purpur") } upstream.patchDir("paperServer") { upstreamPath = "paper-server" excludes = setOf("src/minecraft", "patches", "build.gradle.kts") @@ -37,9 +_,27 @@ outputDir = rootDirectory.dir("paper-server") } } - activeFork = purpur // Purpur end - Rebrand + // DivineMC start - Rebrand + val divinemc = forks.register("divinemc") { + forks = purpur + upstream.patchRepo("paperServer") { + upstreamRepo = purpur.patchedRepo("paperServer") + patchesDir = rootDirectory.dir("divinemc-server/paper-patches") + outputDir = rootDirectory.dir("paper-server") + } + upstream.patchDir("purpurServer") { + upstreamPath = "purpur-server" + excludes = setOf("src/minecraft", "paper-patches", "minecraft-patches", "build.gradle.kts", "build.gradle.kts.patch") + patchesDir = rootDirectory.dir("divinemc-server/purpur-patches") + outputDir = rootDirectory.dir("purpur-server") + } + } + + activeFork = divinemc + // DivineMC end - Rebrand + spigot { buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc" packageVersion = "v1_21_R4" // also needs to be updated in MappingEnvironment @@ -62,6 +_,7 @@ libraryRepositories.addAll( "https://repo.maven.apache.org/maven2/", paperMavenPublicUrl, + bxTeamMavenPublicUrl // DivineMC - Rebrand ) } @@ -125,10 +_,18 @@ main { java { srcDir("../paper-server/src/main/java") } resources { srcDir("../paper-server/src/main/resources") } + // DivineMC start - Rebrand + java { srcDir("../purpur-server/src/main/java") } + resources { srcDir("../purpur-server/src/main/resources") } + // DivineMC end - Rebrand } test { java { srcDir("../paper-server/src/test/java") } resources { srcDir("../paper-server/src/test/resources") } + // DivineMC start - Rebrand + java { srcDir("../purpur-server/src/test/java") } + resources { srcDir("../purpur-server/src/test/resources") } + // DivineMC end - Rebrand } } val log4jPlugins = sourceSets.create("log4jPlugins") { @@ -156,10 +_,23 @@ } dependencies { - implementation(project(":purpur-api")) // Purpur + implementation(project(":divinemc-api")) // DivineMC - Rebrand + + // DivineMC start - Dependencies + implementation("org.yaml:snakeyaml:2.3") + implementation ("me.carleslc.Simple-YAML:Simple-Yaml:1.8.4") { + exclude(group="org.yaml", module="snakeyaml") + } + implementation("net.objecthunter:exp4j:0.4.8") + implementation("org.agrona:agrona:2.0.1") + implementation("net.openhft:zero-allocation-hashing:0.16") + implementation("com.github.luben:zstd-jni:1.5.6-9") + implementation("org.lz4:lz4-java:1.8.0") + // DivineMC end - Dependencies + implementation("ca.spottedleaf:concurrentutil:0.0.3") - implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ - implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 + implementation("org.jline:jline-terminal-ffm:3.29.0") // use ffm on java 22+ // DivineMC - Bump dependencies + implementation("org.jline:jline-terminal-jni:3.29.0") // fall back to jni on java 21 // DivineMC - Bump dependencies implementation("net.minecrell:terminalconsoleappender:1.3.0") implementation("net.kyori:adventure-text-serializer-ansi:4.21.0") // Keep in sync with adventureVersion from Paper-API build file runtimeConfiguration(sourceSets.main.map { it.runtimeClasspath }) @@ -170,16 +_,16 @@ all its classes to check if they are plugins. Scanning takes about 1-2 seconds so adding this speeds up the server start. */ - implementation("org.apache.logging.log4j:log4j-core:2.24.1") - log4jPlugins.annotationProcessorConfigurationName("org.apache.logging.log4j:log4j-core:2.24.1") // Needed to generate meta for our Log4j plugins + implementation("org.apache.logging.log4j:log4j-core:2.24.3") // DivineMC - Bump dependencies + log4jPlugins.annotationProcessorConfigurationName("org.apache.logging.log4j:log4j-core:2.24.3") // Needed to generate meta for our Log4j plugins // DivineMC - Bump dependencies runtimeOnly(log4jPlugins.output) alsoShade(log4jPlugins.output) implementation("com.velocitypowered:velocity-native:3.4.0-SNAPSHOT") { isTransitive = false } - implementation("io.netty:netty-codec-haproxy:4.1.118.Final") // Add support for proxy protocol - implementation("org.apache.logging.log4j:log4j-iostreams:2.24.1") + implementation("io.netty:netty-codec-haproxy:4.1.119.Final") // Add support for proxy protocol // DivineMC - Bump dependencies + implementation("org.apache.logging.log4j:log4j-iostreams:2.24.3") // DivineMC - Bump dependencies implementation("org.ow2.asm:asm-commons:9.8") implementation("org.spongepowered:configurate-yaml:4.2.0-20250225.064233-199") implementation("org.spongepowered:configurate-core:4.2.0-20250225.064233-204") // Pinned dependency of above pinned yaml snapshot. @@ -191,24 +_,31 @@ // Deps that were previously in the API but have now been moved here for backwards compat, eventually to be removed runtimeOnly("commons-lang:commons-lang:2.6") runtimeOnly("org.xerial:sqlite-jdbc:3.49.1.0") - runtimeOnly("com.mysql:mysql-connector-j:9.2.0") + // DivineMC start - Bump dependencies + runtimeOnly("com.mysql:mysql-connector-j:9.2.0") { + exclude("com.google.protobuf", "protobuf-java") // exclude outdated version + } + runtimeOnly("com.google.protobuf:protobuf-java:4.30.1") + // DivineMC end - Bump dependencies runtimeOnly("com.lmax:disruptor:3.4.4") implementation("com.googlecode.json-simple:json-simple:1.1.1") { // change to runtimeOnly once Timings is removed isTransitive = false // includes junit } - runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6") - runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") - runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") + // DivineMC start - Bump dependencies + runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.9") + runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.22") + runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.22") + // DivineMC end - Bump dependencies testImplementation("io.github.classgraph:classgraph:4.8.179") // For mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.12.2") testImplementation("org.junit.platform:junit-platform-suite-engine:1.12.2") - testImplementation("org.hamcrest:hamcrest:2.2") - testImplementation("org.mockito:mockito-core:5.14.1") - mockitoAgent("org.mockito:mockito-core:5.14.1") { isTransitive = false } // Configure mockito agent that is needed in newer java versions + testImplementation("org.hamcrest:hamcrest:3.0") // DivineMC - Bump dependencies + testImplementation("org.mockito:mockito-core:5.16.1") // DivineMC - Bump dependencies + mockitoAgent("org.mockito:mockito-core:5.16.1") { isTransitive = false } // Configure mockito agent that is needed in newer java versions // DivineMC - Bump dependencies testImplementation("org.ow2.asm:asm-tree:9.8") - testImplementation("org.junit-pioneer:junit-pioneer:2.2.0") // CartesianTest + testImplementation("org.junit-pioneer:junit-pioneer:2.3.0") // CartesianTest // DivineMC - Bump dependencies implementation("net.neoforged:srgutils:1.0.9") // Mappings handling implementation("net.neoforged:AutoRenamingTool:2.0.3") // Remap plugins @@ -224,30 +_,42 @@ implementation("me.lucko:spark-paper:1.10.133-20250413.112336-1") } +// DivineMC start - Hide irrelevant compilation warnings +tasks.withType { + val compilerArgs = options.compilerArgs + compilerArgs.add("-Xlint:-module") + compilerArgs.add("-Xlint:-removal") + compilerArgs.add("-Xlint:-dep-ann") + compilerArgs.add("--add-modules=jdk.incubator.vector") +} +// DivineMC end - Hide irrelevant compilation warnings + tasks.jar { manifest { val git = Git(rootProject.layout.projectDirectory.path) val mcVersion = rootProject.providers.gradleProperty("mcVersion").get() val build = System.getenv("BUILD_NUMBER") ?: null - val buildTime = if (build != null) Instant.now() else Instant.EPOCH + val buildTime = Instant.now() // DivineMC - Set build time to current val gitHash = git.exec(providers, "rev-parse", "--short=7", "HEAD").get().trim() val implementationVersion = "$mcVersion-${build ?: "DEV"}-$gitHash" val date = git.exec(providers, "show", "-s", "--format=%ci", gitHash).get().trim() val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim() + val experimental = rootProject.providers.gradleProperty("experimental").get() // DivineMC - Experimental flag attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", - "Implementation-Title" to "Purpur", // Purpur + "Implementation-Title" to "DivineMC", // DivineMC - Rebrand "Implementation-Version" to implementationVersion, "Implementation-Vendor" to date, - "Specification-Title" to "Purpur", // Purpur + "Specification-Title" to "DivineMC", // DivineMC - Rebrand "Specification-Version" to project.version, - "Specification-Vendor" to "Purpur Team", // Purpur - "Brand-Id" to "purpurmc:purpur", // Purpur - "Brand-Name" to "Purpur", // Purpur + "Specification-Vendor" to "BX Team", // DivineMC - Rebrand + "Brand-Id" to "bxteam:divinemc", // DivineMC - Rebrand + "Brand-Name" to "DivineMC", // DivineMC - Rebrand "Build-Number" to (build ?: ""), "Build-Time" to buildTime.toString(), "Git-Branch" to gitBranch, "Git-Commit" to gitHash, + "Experimental" to experimental, // DivineMC - Experimental flag ) for (tld in setOf("net", "com", "org")) { attributes("$tld/bukkit", "Sealed" to true)