From 2c364c71c95e6ad9602f3dfa50132070ca6ed74b Mon Sep 17 00:00:00 2001
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
Date: Sun, 27 Apr 2025 14:06:50 +0300
Subject: [PATCH] [ci-skip] update .github dir
---
.github/CODEOWNERS | 2 -
.github/ISSUE_TEMPLATE/bug_report.yml | 101 ++++++++++-----------
.github/ISSUE_TEMPLATE/feature_request.yml | 15 +++
.github/workflows/auto-update.yml | 82 +++++++++++++++++
.github/workflows/build-1215.yml | 54 +++++++----
.github/workflows/{pr.yml => build-pr.yml} | 20 ++--
.github/workflows/publish-api.yml | 44 +++++++++
build.gradle.kts | 4 +-
divinemc-api/build.gradle.kts.patch | 12 ++-
divinemc-server/build.gradle.kts.patch | 24 +++++
10 files changed, 273 insertions(+), 85 deletions(-)
delete mode 100644 .github/CODEOWNERS
create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml
create mode 100644 .github/workflows/auto-update.yml
rename .github/workflows/{pr.yml => build-pr.yml} (55%)
create mode 100644 .github/workflows/publish-api.yml
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
deleted file mode 100644
index 402b117..0000000
--- a/.github/CODEOWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-* @BX-Team/bx-team-maintainers
-/.github/CODEOWNERS @BX-Team/bx-team-maintainers
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index a7c2e84..dafef0f 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -1,65 +1,64 @@
-name: Bug Report
-description: File a bug report
-labels: bug, not confirmed
+name: Bug report
+description: Create a report to help us improve
+labels: ["bug"]
+
body:
- type: markdown
attributes:
value: |
- Before reporting a crash here, please make sure you are on the latest version of DivineMC.
- - type: textarea
- attributes:
- label: Expected behavior
- description: What you expected to see.
- validations:
- required: true
- - type: textarea
- attributes:
- label: Observed/Actual behavior
- description: What you actually saw.
- validations:
- required: true
- - type: textarea
- attributes:
- label: Steps/models to reproduce
- description: This may include a build schematic, a video, or detailed instructions to help reconstruct the issue.
- validations:
- required: true
- - type: textarea
- attributes:
- label: DivineMC version
- description: |
- Run `/version` on your server and **paste** the full, unmodified output here.
- "latest" is *not* a version; we require the output of `/version` so we can adequately track down the issue.
- Additionally, do NOT provide a screenshot, you MUST paste the entire output.
-
- Example
+ Before reporting an issue, make sure you are running the latest build of DivineMC and checked for duplicate issues in [Issues](https://github.com/BX-Team/DivineMC/issues)!
- ```
- > version
- [17:22:05] [Thread-6/INFO]: Checking version, please wait...
- [17:22:07] [Thread-6/INFO]: This server is running DivineMC version git-DivineMC-"060a5e8" (MC: 1.19.3) (Implementing API version Unknown-Version) (Git: 060a5e8 on ver/1.19.3)
- [17:22:07] [Thread-6/INFO]: You are running 2 versions beyond. Please update your server when possible to maintain stability, security, and receive the latest optimizations.
- ```
-
-
- validations:
- required: true
- type: checkboxes
attributes:
- label: Agreements
- description: Please agree to the following.
+ label: Checklist
+ description: |
+ Before you scroll down, select boxes below.
options:
- - label: I am running the latest version of DivineMC from [here](https://github.com/BX-Team/DivineMC/releases/latest).
+ - label: I have searched the existing issues and the documentation
required: true
- - label: I have searched for and ensured there isn't already an open issue regarding this.
+ - label: I ticked all the boxes without actually reading them
+ required: false
+ - label: I am using latest DivineMC build from https://github.com/BX-Team/DivineMC/releases
required: true
- - label: My version of Minecraft is supported by DivineMC.
+ - label: I tested and couldn't replicate this issue on [latest Purpur build](https://purpurmc.org/)
required: true
+
- type: textarea
attributes:
- label: Other
- description: |
- Please include other helpful information below.
- The more information we receive, the quicker and more effective we can be at finding the solution to the issue.
+ label: What behaviour is observed?
+ description: A clear and concise description of what the behavior is.
validations:
- required: false
+ required: true
+
+ - type: textarea
+ attributes:
+ label: What is the expected behavior?
+ description: A clear and concise description of what you expected to see.
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: How to reproduce?
+ description: Steps to reproduce this behaviour.
+ placeholder: |
+ 1. Enter server ...
+ 2. Execute command /example ...
+ 3. Server crashes ...
+ 4. See error
+ validations:
+ required: true
+
+ - type: input
+ attributes:
+ label: Spark profiler link
+ description: |
+ Link of spark profiler, which including helpful information helps us to work with your issue,
+ see https://spark.lucko.me/docs/ to learn how to use spark.
+ validations:
+ required: true
+
+ - type: input
+ attributes:
+ label: Error log (if applicable)
+ description: If you are reporting a console error, upload any relevant errors or full log to either https://mclo.gs/ or https://pastes.dev/, save and the paste the link in this box.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 0000000..ad7dd5f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,15 @@
+name: Feature request
+description: Suggest an idea to improve DivineMC
+labels: ["enhancement"]
+
+body:
+ - type: markdown
+ attributes:
+ value: |
+ We are always looking for ways to improve DivineMC, and your feedback is invaluable to us. Please fill out the form below to help us understand your feature request better.
+ - type: textarea
+ attributes:
+ label: What feature do you want to see added?
+ description: A clear and concise description of your feature request.
+ validations:
+ required: true
diff --git a/.github/workflows/auto-update.yml b/.github/workflows/auto-update.yml
new file mode 100644
index 0000000..057ef04
--- /dev/null
+++ b/.github/workflows/auto-update.yml
@@ -0,0 +1,82 @@
+name: Automatically Upstream Purpur
+
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: "0 0 * * *"
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout DivineMC repository
+ uses: actions/checkout@main
+ with:
+ path: 'DivineMC'
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Checkout Purpur repository
+ uses: actions/checkout@main
+ with:
+ path: 'Purpur'
+ repository: "PurpurMC/Purpur"
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Get Purpur latest commit Hash
+ id: purpurCommit
+ run: |
+ cd Purpur
+ echo "purpurRef=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
+
+ - name: Get Current Purpur commit Hash
+ id: currPurpurRef
+ run: |
+ cd DivineMC
+ currPurpurRef=$(grep "^purpurRef\s*=" gradle.properties | sed 's/^purpurRef\s*=\s*//')
+ echo "currPurpurRef=$currPurpurRef" >> $GITHUB_OUTPUT
+
+ - name: Update purpurRef in DivineMC
+ run: |
+ cd DivineMC
+ sed -i "s/\(purpurRef\s*=\s*\).*/\1$PURPUR_REF/" gradle.properties
+ env:
+ PURPUR_REF: ${{ steps.purpurCommit.outputs.purpurRef }}
+
+ - name: Setup Git and Gradle
+ run: |
+ cd DivineMC
+ git config --global user.email "action@github.com"
+ git config --global user.name "Github Action"
+ chmod +x gradlew
+
+ - name: Setup JDK 21
+ uses: actions/setup-java@main
+ with:
+ distribution: 'temurin'
+ java-version: '21'
+
+ - name: Running tests before push
+ run: |
+ cd DivineMC
+ if ! git diff --quiet; then
+ echo "Running tests...."
+ ./gradlew applyAllPatches
+ ./gradlew build -x test
+ ./gradlew rebuildPurpurPatches
+ ./gradlew rebuildAllServerPatches
+ fi
+
+ - name: Check for changes and write to repository
+ run: |
+ cd DivineMC
+ if ! git diff --quiet; then
+ echo "Writing to repo....."
+ git add .
+ chmod +x ./scripts/upstreamCommit.sh
+ ./scripts/upstreamCommit.sh $CURR_PURPUR_REF
+ git push
+ else
+ echo "No changes to commit."
+ fi
+ env:
+ CURR_PURPUR_REF: ${{ steps.currPurpurRef.outputs.currPurpurRef }}
diff --git a/.github/workflows/build-1215.yml b/.github/workflows/build-1215.yml
index a6ba67e..dab91b2 100644
--- a/.github/workflows/build-1215.yml
+++ b/.github/workflows/build-1215.yml
@@ -10,42 +10,62 @@ jobs:
build:
runs-on: blacksmith-8vcpu-ubuntu-2204
if: "!contains(github.event.commits[0].message, '[ci-skip]')"
+ env:
+ BUILD_NUMBER: ${{ github.run_number }}
+ outputs:
+ build_number: ${{ env.BUILD_NUMBER }}
steps:
- - name: Setup Action
+ - name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- - name: Setup Gradle
- uses: gradle/actions/setup-gradle@v3
+ - name: Setup Gradle Cache
+ uses: useblacksmith/cache@v5
with:
- add-job-summary: never
- generate-job-summary: false
- cache-read-only: false
+ path: |
+ ~/.gradle/caches/modules-2
+ ~/.gradle/caches/jars-*
+ ~/.gradle/caches/transforms-*
+ ~/.gradle/wrapper
+ ~/.gradle/build-cache-*
+ ~/.gradle/configuration-cache-*
+ .gradle/patchCache
+ .gradle/patched
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', 'patches/**/*.patch') }}
+ restore-keys: |
+ ${{ runner.os }}-gradle-
+
+ - name: Gradle Cache Cleanup
+ run: |
+ mkdir -p ~/.gradle/caches/modules-2
+ [ -f ~/.gradle/caches/modules-2/modules-2.lock ] && rm -f ~/.gradle/caches/modules-2/modules-2.lock
+ find ~/.gradle/caches -name "*.lock" -type f -delete || echo "No lock files found"
- name: Setup JDK 21
- uses: actions/setup-java@v4
+ uses: useblacksmith/setup-java@v5
with:
distribution: temurin
java-version: 21
- name: Configure Git and Gradle
run: |
- git config --global user.email "no-reply@github.com" && git config --global user.name "Github Actions"
- echo "BUILD_NUMBER=$GITHUB_RUN_NUMBER" >> $GITHUB_ENV
+ git config --global user.email "no-reply@github.com"
+ git config --global user.name "Github Actions"
+ git config --global core.preloadindex true
+ git config --global core.fscache true
+ git config --global gc.auto 256
chmod +x gradlew
- - name: Patch
- run: ./gradlew applyAllPatches --stacktrace
+ - name: Apply Patches
+ run: |
+ PARALLELISM=$(($(nproc) * 2))
+ ./gradlew applyAllPatches --stacktrace --parallel --max-workers=$PARALLELISM --build-cache --no-daemon
- name: Build Paperclip Jar
- run: ./gradlew createMojmapPaperclipJar --stacktrace
+ run: ./gradlew createMojmapPaperclipJar --stacktrace --parallel --no-daemon
- - name: Publish API
- continue-on-error: true
- run: ./gradlew publish -PdivinemcUsername=${{ secrets.REPO_USERNAME }} -PdivinemcPassword=${{ secrets.REPO_SECRET }}
-
- - name: Get Release Info
+ - name: Prepare Release Info
run: bash scripts/releaseInfo.sh
env:
BUILD_NUMBER: ${{ env.BUILD_NUMBER }}
diff --git a/.github/workflows/pr.yml b/.github/workflows/build-pr.yml
similarity index 55%
rename from .github/workflows/pr.yml
rename to .github/workflows/build-pr.yml
index 3e31183..1cf5cff 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/build-pr.yml
@@ -1,37 +1,33 @@
-name: DivineMC Test Build
+name: Build Pull Request
on:
pull_request:
branches: [ "master" ]
- workflow_dispatch:
jobs:
build:
runs-on: blacksmith-8vcpu-ubuntu-2204
steps:
- - name: Setup Action
+ - name: Checkout repository
uses: actions/checkout@v4
- - name: Setup Gradle
- uses: gradle/gradle-build-action@v2
-
- name: Setup JDK 21
- uses: actions/setup-java@v4
+ uses: useblacksmith/setup-java@v5
with:
distribution: temurin
java-version: 21
- cache: 'gradle'
- name: Configure Git and Gradle
run: |
- git config --global user.email "no-reply@github.com" && git config --global user.name "Github Actions"
+ git config --global user.email "no-reply@github.com"
+ git config --global user.name "Github Actions"
chmod +x gradlew
- - name: Patch
- run: ./gradlew applyAllPatches --stacktrace
+ - name: Apply Patches
+ run: ./gradlew applyAllPatches --stacktrace --no-daemon
- name: Build Paperclip Jar
- run: ./gradlew createMojmapPaperclipJar --stacktrace
+ run: ./gradlew createMojmapPaperclipJar --stacktrace --no-daemon
- name: Upload Artifacts
uses: actions/upload-artifact@main
diff --git a/.github/workflows/publish-api.yml b/.github/workflows/publish-api.yml
new file mode 100644
index 0000000..8078e3f
--- /dev/null
+++ b/.github/workflows/publish-api.yml
@@ -0,0 +1,44 @@
+name: Publish API
+
+on:
+ push:
+ branches: [ "master" ]
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 0
+
+ - name: Setup JDK 21
+ uses: actions/setup-java@v4
+ with:
+ distribution: temurin
+ java-version: 21
+ cache: gradle
+
+ - name: Configure Git and Gradle
+ run: |
+ git config --global user.email "no-reply@github.com" && git config --global user.name "Github Actions"
+ chmod +x gradlew
+
+ - name: Apply patches
+ run: |
+ PARALLELISM=$(($(nproc) * 2))
+ ./gradlew applyAllPatches --stacktrace --parallel --max-workers=$PARALLELISM --build-cache --no-daemon
+
+ - name: Build
+ run: ./gradlew build -x test
+
+ - name: Publish API
+ continue-on-error: true
+ run: |
+ ./gradlew :divinemc-api:publish
+ ./gradlew publishDevBundlePublicationToDivinemcRepository -PpublishDevBundle=true
+ env:
+ REPO_USERNAME: ${{ secrets.REPO_USERNAME }}
+ REPO_PASSWORD: ${{ secrets.REPO_SECRET }}
diff --git a/build.gradle.kts b/build.gradle.kts
index febf35f..758fe0e 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -97,7 +97,9 @@ subprojects {
repositories {
maven("https://repo.bxteam.org/snapshots") {
name = "divinemc"
- credentials(PasswordCredentials::class)
+
+ credentials.username = System.getenv("REPO_USERNAME")
+ credentials.password = System.getenv("REPO_PASSWORD")
}
}
}
diff --git a/divinemc-api/build.gradle.kts.patch b/divinemc-api/build.gradle.kts.patch
index 44b2f40..3571f52 100644
--- a/divinemc-api/build.gradle.kts.patch
+++ b/divinemc-api/build.gradle.kts.patch
@@ -103,7 +103,14 @@
tasks.jar {
from(generateApiVersioningFile.map { it.outputs.files.singleFile }) {
into("META-INF/maven/${project.group}/${project.name}")
-@@ -187,8 +_,8 @@
+@@ -180,15 +_,13 @@
+ val services = objects.newInstance()
+
+ tasks.withType {
+- //(options as StandardJavadocDocletOptions).addStringOption("-add-modules", "jdk.incubator.vector") // Purpur - our javadocs need this for pufferfish's SIMD patch
+- (options as StandardJavadocDocletOptions).addStringOption("Xdoclint:none", "-quiet") // Purpur - silence Paper's bajillion javadoc warnings
+ val options = options as StandardJavadocDocletOptions
+ options.overview = "../paper-api/src/main/javadoc/overview.html"
options.use()
options.isDocFilesSubDirs = true
options.links(
@@ -123,12 +130,13 @@
)
options.tags("apiNote:a:API Note:")
-@@ -226,6 +_,8 @@
+@@ -226,6 +_,9 @@
into("build/docs/javadoc")
}
}
+
+ options.addStringOption("Xdoclint:none", "-quiet") // DivineMC - Hide unnecessary javadoc warnings
++ options.addStringOption("-add-modules", "jdk.incubator.vector") // DivineMC - Required for simd
}
tasks.test {
diff --git a/divinemc-server/build.gradle.kts.patch b/divinemc-server/build.gradle.kts.patch
index 8524bef..0fa9556 100644
--- a/divinemc-server/build.gradle.kts.patch
+++ b/divinemc-server/build.gradle.kts.patch
@@ -1,5 +1,21 @@
--- 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.1")
+@@ -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")
}
@@ -29,6 +45,14 @@
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") }