From d53679a028cc95d2c5129adcdff49fa99d6a7e67 Mon Sep 17 00:00:00 2001 From: ALingqing_ Date: Fri, 14 Aug 2026 17:29:17 +0800 Subject: [PATCH 1/6] 26.2 --- .github/workflows/gradle.yml | 12 +++---- build.gradle.kts | 9 +++--- gradle/wrapper/gradle-wrapper.properties | 2 +- .../musicbox/minecraft/nms/NMSUtils.java | 18 ++++++++--- .../minecraft/nms/jukebox/JukeboxFactory.java | 11 ++++++- nms/versions/26_2/build.gradle.kts | 10 ++++++ .../minecraft/nms/jukebox/versions/V26_2.java | 31 +++++++++++++++++++ settings.gradle | 3 +- 8 files changed, 78 insertions(+), 18 deletions(-) create mode 100644 nms/versions/26_2/build.gradle.kts create mode 100644 nms/versions/26_2/src/main/java/ru/spliterash/musicbox/minecraft/nms/jukebox/versions/V26_2.java diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 84f73cb..584979a 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -7,14 +7,14 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v2 + - uses: actions/checkout@v4 + - name: Set up JDK 25 + uses: actions/setup-java@v4 with: - java-version: '11' + java-version: '25' distribution: 'temurin' - name: Build with Gradle - uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7 + uses: gradle/actions/setup-gradle@v4 with: arguments: build - name: Upload Build Artifact @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Download Build Artifact uses: actions/download-artifact@v4 with: diff --git a/build.gradle.kts b/build.gradle.kts index 133f6a4..a4066e4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,9 @@ plugins { `java-library` - id("io.github.goooler.shadow") version "8.1.7" - id("io.freefair.lombok") version "8.6" - id("net.minecrell.plugin-yml.bukkit") version "0.6.0" - id("io.papermc.paperweight.userdev") version "1.7.1" apply false + id("com.gradleup.shadow") version "9.6.1" + id("io.freefair.lombok") version "9.5.0" + id("de.eldoria.plugin-yml.bukkit") version "0.9.0" + id("io.papermc.paperweight.userdev") version "2.0.0-beta.21" apply false } bukkit { @@ -69,4 +69,5 @@ dependencies { api(project(":nms:versions:20_5", "reobf")) api(project(":nms:versions:21", "reobf")) api(project(":nms:versions:21_2", "reobf")) + api(project(":nms:versions:26_2", "reobf")) } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0d18421..2f2958b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/nms/shared/src/main/java/ru/spliterash/musicbox/minecraft/nms/NMSUtils.java b/nms/shared/src/main/java/ru/spliterash/musicbox/minecraft/nms/NMSUtils.java index b33d4f4..bd03aea 100644 --- a/nms/shared/src/main/java/ru/spliterash/musicbox/minecraft/nms/NMSUtils.java +++ b/nms/shared/src/main/java/ru/spliterash/musicbox/minecraft/nms/NMSUtils.java @@ -7,14 +7,22 @@ public class NMSUtils { public static int parseMajorVersion(String raw) { int firstDotIndex = raw.indexOf("."); - raw = raw.substring(firstDotIndex + 1); + String first = raw.substring(0, firstDotIndex); - int secondDotIndex = raw.indexOf("."); + // Legacy scheme: 1.19.2 -> major version is 19 (the second segment) + // New scheme: 26.2 -> major version is 26 (the first segment) + if (first.equals("1")) { + raw = raw.substring(firstDotIndex + 1); - if (secondDotIndex != -1) - raw = raw.substring(0, secondDotIndex); + int secondDotIndex = raw.indexOf("."); - return Integer.parseInt(raw); + if (secondDotIndex != -1) + raw = raw.substring(0, secondDotIndex); + + return Integer.parseInt(raw); + } + + return Integer.parseInt(first); } public static String getRawVersion() { diff --git a/nms/src/main/java/ru/spliterash/musicbox/minecraft/nms/jukebox/JukeboxFactory.java b/nms/src/main/java/ru/spliterash/musicbox/minecraft/nms/jukebox/JukeboxFactory.java index ca7309e..be0b651 100644 --- a/nms/src/main/java/ru/spliterash/musicbox/minecraft/nms/jukebox/JukeboxFactory.java +++ b/nms/src/main/java/ru/spliterash/musicbox/minecraft/nms/jukebox/JukeboxFactory.java @@ -14,7 +14,16 @@ public class JukeboxFactory { int iV = NMSUtils.parseMajorVersion(raw); String className; - if (iV == 21) { + if (iV == 26) { + switch (raw) { + case "26.2": + className = START_PATH + "V26_2"; + break; + default: + className = null; + break; + } + } else if (iV == 21) { switch (raw) { case "1.21": case "1.21.1": diff --git a/nms/versions/26_2/build.gradle.kts b/nms/versions/26_2/build.gradle.kts new file mode 100644 index 0000000..55fa213 --- /dev/null +++ b/nms/versions/26_2/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + id("io.papermc.paperweight.userdev") +} +java { + toolchain.languageVersion.set(JavaLanguageVersion.of(25)) +} +dependencies { + // Paper 26.2 (new versioning scheme, dev bundle data version 8 requires paperweight 2.x) + paperweight.paperDevBundle("26.2.build.112-stable") +} diff --git a/nms/versions/26_2/src/main/java/ru/spliterash/musicbox/minecraft/nms/jukebox/versions/V26_2.java b/nms/versions/26_2/src/main/java/ru/spliterash/musicbox/minecraft/nms/jukebox/versions/V26_2.java new file mode 100644 index 0000000..4408eba --- /dev/null +++ b/nms/versions/26_2/src/main/java/ru/spliterash/musicbox/minecraft/nms/jukebox/versions/V26_2.java @@ -0,0 +1,31 @@ +package ru.spliterash.musicbox.minecraft.nms.jukebox.versions; + +import net.minecraft.world.level.block.entity.JukeboxBlockEntity; +import org.bukkit.block.Jukebox; +import org.bukkit.craftbukkit.block.CraftJukebox; +import org.bukkit.craftbukkit.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; +import ru.spliterash.musicbox.minecraft.nms.jukebox.IJukebox; + +public class V26_2 implements IJukebox { + private final JukeboxBlockEntity tileEntity; + + public V26_2(Jukebox jukebox) { + CraftJukebox craft = (CraftJukebox) jukebox; + tileEntity = craft.getBlockEntity(); + } + + public void setJukebox(ItemStack item) { + net.minecraft.world.item.ItemStack converted = CraftItemStack.asNMSCopy(item); + tileEntity.setSongItemWithoutPlaying(converted, 0); + + } + + public ItemStack getJukebox() { + net.minecraft.world.item.ItemStack nmsItem = tileEntity.getTheItem(); + if (nmsItem.isEmpty()) + return null; + + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/settings.gradle b/settings.gradle index 231ae22..4ed76dd 100644 --- a/settings.gradle +++ b/settings.gradle @@ -14,4 +14,5 @@ include "nms:versions:20_2" include "nms:versions:20_3" include "nms:versions:20_5" include "nms:versions:21" -include "nms:versions:21_2" \ No newline at end of file +include "nms:versions:21_2" +include "nms:versions:26_2" \ No newline at end of file From 636d26fa127907e4c414723cae0e5ef3b2a6d2d2 Mon Sep 17 00:00:00 2001 From: ALingqing_ Date: Fri, 14 Aug 2026 17:30:23 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a840cd1..02f3270 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,4 @@ [![](http://img.youtube.com/vi/uwygwHRrvkA/0.jpg)](http://www.youtube.com/watch?v=uwygwHRrvkA "") -[Ссылка на spigot](https://www.spigotmc.org/resources/musicbox-music-on-discs.67949/) \ No newline at end of file +[Ссылка на spigot](https://www.spigotmc.org/resources/musicbox-music-on-discs.67949/) \ No newline at end of file From d11af25e0d18a6c6108be239fa9b150f354b2fcd Mon Sep 17 00:00:00 2001 From: ALingqing_ Date: Fri, 14 Aug 2026 17:35:10 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20GitHub=20Actions=20?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=EF=BC=9A=E6=94=AF=E6=8C=81=20push/?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E8=A7=A6=E5=8F=91=E5=B9=B6=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E5=BA=9F=E5=BC=83=E7=9A=84=20release=20action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle.yml | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 584979a..da081f8 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -1,7 +1,13 @@ name: Build and Release + on: push: - tags: [ '*' ] # Запуск при создании тега + branches: [ 'master' ] + tags: [ '*' ] + workflow_dispatch: + +permissions: + contents: write jobs: build: @@ -25,8 +31,11 @@ jobs: build/libs/MusicBox*-all.jar release: + if: startsWith(github.ref, 'refs/tags/') needs: build runs-on: ubuntu-latest + permissions: + contents: write steps: - name: Checkout code uses: actions/checkout@v4 @@ -37,23 +46,12 @@ jobs: path: build/libs/ - name: Get Artifact Filename id: get_filename - run: echo "FILENAME=$(basename build/libs/MusicBox*-all.jar)" >> $GITHUB_ENV + run: echo "FILENAME=$(basename build/libs/MusicBox*-all.jar)" >> "$GITHUB_ENV" - name: Create GitHub Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + uses: softprops/action-gh-release@v2 with: - tag_name: ${{ github.ref }} - release_name: Release ${{ github.ref }} + tag_name: ${{ github.ref_name }} + name: Release ${{ github.ref_name }} + files: build/libs/${{ env.FILENAME }} draft: false - prerelease: false - - name: Upload Release Asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: build/libs/${{ env.FILENAME }} - asset_name: ${{ env.FILENAME }} - asset_content_type: application/java-archive \ No newline at end of file + prerelease: false \ No newline at end of file From 74d66c42d97c512313f6d4162b397eeeb7176634 Mon Sep 17 00:00:00 2001 From: ALingqing_ Date: Fri, 14 Aug 2026 17:36:39 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20gradle/actions/setup-g?= =?UTF-8?q?radle=20arguments=20=E5=BC=83=E7=94=A8=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E5=8D=87=E7=BA=A7=20setup-java=20=E5=88=B0=20v5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index da081f8..cbaf491 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -15,14 +15,14 @@ jobs: steps: - uses: actions/checkout@v4 - name: Set up JDK 25 - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: java-version: '25' distribution: 'temurin' - - name: Build with Gradle + - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 - with: - arguments: build + - name: Build with Gradle + run: ./gradlew build --no-daemon - name: Upload Build Artifact uses: actions/upload-artifact@v4 with: From fc27ede626975f7620c09f2760471343831d1b9b Mon Sep 17 00:00:00 2001 From: ALingqing_ Date: Fri, 14 Aug 2026 17:37:16 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20gradle.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index cbaf491..7fbc88a 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -1,4 +1,4 @@ -name: Build and Release +name: Build and Release. on: push: From 0e66f4ef4054659f5269347dd447722e7f69c47c Mon Sep 17 00:00:00 2001 From: ALingqing_ Date: Fri, 14 Aug 2026 17:51:38 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=2026.2=20=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E4=BE=9D=E8=B5=96=EF=BC=9A26.1+=20dev=20bundle=20?= =?UTF-8?q?=E4=B8=8D=E6=8F=90=E4=BE=9B=20reobf=20mappings=EF=BC=8C?= =?UTF-8?q?=E6=94=B9=E7=94=A8=E9=BB=98=E8=AE=A4=20mojang=20=E6=98=A0?= =?UTF-8?q?=E5=B0=84=20jar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index a4066e4..e4fa357 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -69,5 +69,7 @@ dependencies { api(project(":nms:versions:20_5", "reobf")) api(project(":nms:versions:21", "reobf")) api(project(":nms:versions:21_2", "reobf")) - api(project(":nms:versions:26_2", "reobf")) + // 26.1+ dev bundles (data version 8) no longer provide reobf mappings, + // so the module is consumed as its default (mojang-mapped) jar + api(project(":nms:versions:26_2")) }