Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 34 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,14 @@ jobs:

verify:
needs: wrapper-validation
strategy:
fail-fast: false
matrix:
paper-api-version:
- 26.2.build.111-stable
- 26.3.build.157-beta
runs-on: ubuntu-latest
name: Verify ${{ matrix.paper-api-version }}
steps:
- uses: actions/checkout@v7
- name: Set up Java 25
Expand All @@ -41,12 +48,37 @@ jobs:
shell: bash
run: |
bash .github/scripts/gradle-with-transient-retry.sh gradle-verify.log -- \
./gradlew clean check :mahjong-plugin:jar :mahjong-plugin:verifyThinJar --no-daemon --stacktrace
./gradlew clean check :mahjong-plugin:jar :mahjong-plugin:verifyThinJar \
-PpaperApiVersion="${{ matrix.paper-api-version }}" --no-daemon --stacktrace
- name: Verify portable and Paper adapter bytecode
shell: bash
run: |
python3 - <<'PY'
from pathlib import Path
import struct
portable = ["mahjong-rule-spi", "mahjong-domain", "mahjong-application",
"mahjong-rule-runtime", "mahjong-presentation"]
adapters = ["mahjong-platform-paper", "mahjong-craftengine", "mahjong-plugin"]
def majors(module):
root = Path("modules") / module / "build/classes/java/main"
return {struct.unpack(">H", p.read_bytes()[6:8])[0]
for p in root.rglob("*.class")}
for module in portable:
got = majors(module)
if got != {65}:
raise SystemExit(f"{module} must remain Java 21 major 65, got {sorted(got)}")
for module in adapters:
got = majors(module)
if got != {69}:
raise SystemExit(f"{module} must remain Java 25 major 69, got {sorted(got)}")
print("portable modules=Java21/65; Paper adapters=Java25/69")
PY

- name: Upload test reports
if: always()
uses: actions/upload-artifact@v7
with:
name: module-test-reports-linux
name: module-test-reports-linux-${{ matrix.paper-api-version }}
path: |
modules/*/build/reports/tests/**
gradle-verify.log
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Contributing

MahjongPaper's portable core and rule SDK use Java 21. The Paper/CraftEngine adapters and final plugin use Java 25 for Paper 26.2. Gradle Kotlin DSL and the CraftEngine bundle generator are the only Kotlin build-time code.
MahjongPaper's portable core and rule SDK use Java 21. The Paper/CraftEngine adapters and final plugin use Java 25 for Paper 26.3. Gradle Kotlin DSL and the CraftEngine bundle generator are the only Kotlin build-time code.

Dependency direction:

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Player clicks CraftEngine furniture or runs a command
| Component | Required version |
|---|---|
| Java | **25** |
| Server | Paper/Folia **26.2** |
| Server | Paper/Folia **26.3** |
| CraftEngine | **26.8 API line**: major/minor must be 26.8; 26.8.x/build suffixes are accepted, 26.9 is not |
| Client | Must accept the CraftEngine-generated server resource pack |
| First boot network | Maven Central mirror and `repo.momirealms.net` |
Expand Down
2 changes: 1 addition & 1 deletion README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ MahjongPaper 是一个面向 Paper/Folia 的 CraftEngine 麻将核心。核心
| 项目 | 要求 |
|---|---|
| Java | **25** |
| 服务端 | Paper/Folia **26.2** |
| 服务端 | Paper/Folia **26.3** |
| CraftEngine | **26.8 API 线**:major/minor 必须是 26.8;允许 26.8.x 或构建后缀,不接受 26.9 |
| 客户端 | 必须接受 CraftEngine 生成的服务器资源包 |
| 网络 | 首次启动需访问 Maven Central 镜像与 `repo.momirealms.net` |
Expand Down
2 changes: 1 addition & 1 deletion docs/installation.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
要求:

- Java 25;
- Paper 或 Folia 26.2;
- Paper 或 Folia 26.3;
- CraftEngine 26.8 API 线(major/minor 必须为 26.8,允许 patch/build 后缀,不接受 26.9;升级 CE API 线前必须先升级 MahjongPaper);
- CraftEngine 保持默认的 `misc.delay-configuration-load: true`,以便依赖插件在资源解析前注册行为与条件;
- 至少一个已安装、已验证并在重启后激活的官方规则包。
Expand Down
8 changes: 6 additions & 2 deletions modules/mahjong-craftengine/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ plugins {
`java-library`
}

val paperApiVersion = providers.gradleProperty("paperApiVersion")
.orElse("26.3.build.157-beta")
.get()

java {
sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25
Expand All @@ -21,11 +25,11 @@ dependencies {
compileOnly("net.momirealms:craft-engine-core:26.8")
compileOnly("net.momirealms:craft-engine-bukkit:26.8")
compileOnly("net.momirealms:craft-engine-bukkit-proxy:26.8")
compileOnly("io.papermc.paper:paper-api:26.2.build.111-stable")
compileOnly("io.papermc.paper:paper-api:$paperApiVersion")
compileOnly("net.momirealms:sparrow-reflection:0.34")
testImplementation("net.momirealms:craft-engine-core:26.8")
testImplementation("net.momirealms:craft-engine-bukkit:26.8")
testImplementation("net.momirealms:craft-engine-bukkit-proxy:26.8")
testImplementation("io.papermc.paper:paper-api:26.2.build.111-stable")
testImplementation("io.papermc.paper:paper-api:$paperApiVersion")
testImplementation("net.momirealms:sparrow-reflection:0.34")
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerAnimationEvent;
import org.bukkit.event.player.PlayerAnimationType;
import io.papermc.paper.event.player.PlayerArmSwingEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
Expand Down Expand Up @@ -132,9 +131,8 @@ public void onInteract(PlayerInteractEvent event) {
}

@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onArmSwing(PlayerAnimationEvent event) {
if (event.getAnimationType() == PlayerAnimationType.ARM_SWING
&& dispatchRay(event.getPlayer(), event.getPlayer().isSneaking(), null)) {
public void onArmSwing(PlayerArmSwingEvent event) {
if (dispatchRay(event.getPlayer(), event.getPlayer().isSneaking(), null)) {
event.setCancelled(true);
}
}
Expand Down
6 changes: 5 additions & 1 deletion modules/mahjong-platform-paper/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ plugins {
`java-library`
}

val paperApiVersion = providers.gradleProperty("paperApiVersion")
.orElse("26.3.build.157-beta")
.get()

java {
sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25
Expand All @@ -15,5 +19,5 @@ tasks.withType<JavaCompile>().configureEach {
dependencies {
implementation(project(":mahjong-application"))
implementation(project(":mahjong-domain"))
compileOnly("io.papermc.paper:paper-api:26.2.build.111-stable")
compileOnly("io.papermc.paper:paper-api:$paperApiVersion")
}
9 changes: 7 additions & 2 deletions modules/mahjong-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
import java.util.zip.ZipFile

import org.gradle.jvm.tasks.Jar
import top.ellan.mahjong.build.CraftEngineBundleGenerator

plugins {
java
}

val paperApiVersion = providers.gradleProperty("paperApiVersion")
.orElse("26.3.build.157-beta")
.get()

java {
sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25
Expand Down Expand Up @@ -96,8 +101,8 @@ val generateRuntimeLibraryCatalog =
dependencies {
internalProjectPaths.forEach { implementation(project(it)) }

compileOnly("io.papermc.paper:paper-api:26.2.build.111-stable")
testImplementation("io.papermc.paper:paper-api:26.2.build.111-stable")
compileOnly("io.papermc.paper:paper-api:$paperApiVersion")
testImplementation("io.papermc.paper:paper-api:$paperApiVersion")
compileOnly("net.momirealms:craft-engine-core:26.8")
compileOnly("net.momirealms:craft-engine-bukkit:26.8")

Expand Down
Loading