ShreddedPaper 26.3
ShreddedPaper 目前处于公开测试阶段。 大多数功能在大多数情况下对大多数玩家都能正常工作,但偶尔也会出现问题。
基于 26.2 Purpur 的分支,为 Minecraft 带来了垂直扩展能力。
ShreddedPaper:
允许多个线程协同工作来运行单个世界
当在一个线程上刻(tick)一个区块时,一定半径内的所有其他区块都会被锁定,以便只有该线程可以访问它们,从而防止线程之间的任何竞态条件。
有关 ShreddedPaper 工作原理的更多信息,请参阅 HOW_IT_WORKS.md。
为多线程服务器开发插件
总之,插件必须注意:
不同线程同时更新某些数据。
一个线程在另一个线程正在更新数据时读取该数据。
代码应在区块所属的线程上执行,而不仅仅是主线程。
参见此处获取更详细的教程
如果你的插件已经支持 Folia,那么它很可能无需任何更改就能与 ShreddedPaper 一起工作。
如果你有类似下面这样的 Folia 检查:
try {
Class.forName("io.papermc.paper.threadedregions.RegionizedServer");
return true;
} catch (ClassNotFoundException e) {
return false;
}
你应该移除它,改为检查 Paper 的区域 API 是否存在:
try {
Bukkit.class.getMethod("getRegionScheduler");
return true;
} catch (NoSuchMethodException e) {
return false;
}
将 ShreddedPaper API 用作依赖
Clojars Project
将以下内容添加到你的 build.gradle 中:
repositories {
maven {
url "https://repo.clojars.org/"
}
}
dependencies {
compile "com.github.puregero:shreddedpaper-api:26.2-R0.1-SNAPSHOT"
}
或者添加到你的 pom.xml 中:
<repositories>
<repository>
<id>clojars</id>
<url>https://repo.clojars.org/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.puregero</groupId>
<artifactId>shreddedpaper-api</artifactId>
<version>26.2-R0.1-SNAPSHOT</version>
</dependency>
</dependencies>
构建
要求:
你需要安装 git,并配置好用户名和邮箱。
在 Windows 上,你需要从 git bash 中运行。
你需要安装 jdk 21+ 来编译(以及 jre 21+ 来运行)
构建说明:
使用以下命令为 paper 打补丁:./gradlew applyAllPatches
使用以下命令构建 shreddedpaper jar:./gradlew createMojmapPaperclipJar
从 shreddedpaper-server/build/libs/shreddedpaper-paperclip--mojmap.jar 获取 shreddedpaper jar
发布到本地 maven
使用以下命令发布到你的本地 maven 仓库:./gradlew publishToMavenLocal
Mac 用户注意:最新的 macOS 版本包含一个不兼容的 diff 版本,你需要安装一个兼容的版本。使用 brew install diffutils 安装它,然后重新打开终端窗口。
如果 diff --version 返回以下内容,则说明它不兼容,将无法工作:
Apple diff (based on FreeBSD diff)
许可证
所有代码均根据 GPLv3 许可。
致谢
ShreddedPaper 使用了 PaperMC 的 paperweight 框架,该框架位于
此处。
评论 (0)