本帖最后由 wode490390 于 2019-7-24 20:03 编辑

众所周知JE1.12(含)前的存档可以直接扔进Nukkit使用,但一些ID会错乱。JE1.13后存档区块格式有一些变化,不能直接扔进Nukkit使用了。

于是joserobjr编写了开源工具“Java2Nukkit-World-Converter(世界转换器)”,用于解决此问题。下面将介绍此工具的用法。

如果歪果网站下载速度慢,可以试试天翼云盘百度网盘



这是可以将JE1.14.3 Anvil格式的存档转换为Nukkit Anvil格式存档的命令行工具。

一些基岩版或Nukkit不支持的内容会被替换或移除。

准备

首先请用JE1.14.3优化需要转换的存档。

此工具仅支持JE1.14.3,其它版本的存档可能会在转换过程中产生错误或发生崩溃。

使用此工具需要安装Java8。Java是跨平台的,所以可以在Windows、Linux、Mac OS以及其它能运行Java的平台运行本工具。

如何知晓存档是否已被优化?

打开一个JE旧版本创建的存档时,游戏会自动将需要加载的区块转换成当前游戏版本的区块。

如果使用当前版本直接创建世界,那肯定不会有旧区块了。

如何优化存档?

很庆幸游戏提供了一键更新存档所有区块的选项。

请按以下步骤操作:

  • 点击主菜单的“单人游戏”按钮
  • 选择世界而不打开它
  • 点击“编辑”按钮
  • 点击“优化世界”按钮
  • 点击“备份并加载”按钮
  • 等待它完成
  • 优化完成


免责声明(原文)
This tool is distributed under MIT License, this means that we give no warranty and take no responsibility to any damage that this tool may cause. Please read the license terms for more details.

Most of the mappings were also made manually and humans are subject to errors. If you find any block or item being converted to other item or block and which that conversion isn't reported in the replacements file, please, report it in the issues section, or, attempt to fix the mapping in the properties files and create a pull request.

如何运行?

使用命令行执行以下命令:

  1. java -jar 本工具文件名.jar "C:\您的JE存档目录" "C:\成果输出目录"
复制代码


请将以上三处中文按实际情况替换。

到此,对于腐竹的教程结束,快将成果扔进Nukkit的worlds中享受吧。

对于开发者

如何构建此项目?

安装Gradle

打开命令行,执行以下命令:

Linux/Unix:
  1. chmod a+x ./gradlew
  2. ./gradlew build
复制代码

Windows:
  1. gradlew.bat build
复制代码


JAR可执行文件将位于 build/libs 文件夹中,以 -cli 结尾。

可以将其作为一个库使用吗?

可以哒!

Java接口文档

Kotlin接口文档

例子

Kotlin
  1. val converter = WorldConverter(
  2.     from = File("""Z:\Users\Fake\.minecraft\saves\Fake World"""),
  3.     to   = File("""Z:\Fake\Nukkit\Server\worlds\FakeWorld""")
  4. )

  5. // Allows you to specify which region will be converter
  6. // useful for debugging, if not changed will convert everything
  7. converter.regionFilter = mutableSetOf(RegionPos(0,0), RegionPos(-1,0))

  8. // Executes the conversion
  9. converter.convert()
复制代码


Java
  1. WorldConverter converter = new WorldConverter(
  2.     new File("Z:\\Users\\Fake\\.minecraft\\saves\\Fake World"),
  3.     new File("Z:\\Fake\\Nukkit\\Server\\worlds\\FakeWorld")
  4. );

  5. // Allows you to specify which region will be converter
  6. // useful for debugging, if not changed will convert everything
  7. converter.regionFilter = new HashSet<>(Arrays.asList(new RegionPos(0,0), new RegionPos(-1,0)));

  8. // Executes the conversion
  9. converter.convert();
复制代码


亦可模拟CLI调用
  1. WorldConverterCLI.main(
  2.     """Z:\Users\Fake\.minecraft\saves\Fake World""",
  3.     """Z:\Fake\Nukkit\Server\worlds\FakeWorld"""
  4. )
复制代码


添加为依赖

本工具共享于jcenter仓库,不过其拥有位于不同仓库的依赖

确保您添加了下面列出的所有仓库

Gradle
  1. repositories {
  2.     jcenter()
  3.     maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' }
  4.     maven { url 'https://dl.bintray.com/orangy/maven' }
  5. }

  6. dependencies {
  7.     compile 'br.com.gamemods:java2nukkit-world-converter:2.0.1'   
  8. }
复制代码


Maven
  1. <repositories>
  2.     <repository>
  3.         <id>jcenter</id>
  4.         <url>https://jcenter.bintray.com/</url>
  5.     </repository>
  6.     <repository>
  7.         <id>spigotmc</id>
  8.         <url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
  9.     </repository>
  10.     <repository>
  11.         <id>kotlinx-cli</id>
  12.         <url>https://dl.bintray.com/orangy/maven</url>
  13.     </repository>
  14. </repositories>
  15. <dependencies>
  16.     <dependency>
  17.       <groupId>br.com.gamemods</groupId>
  18.       <artifactId>java2nukkit-world-converter</artifactId>
  19.       <version>2.0.1</version>
  20.     </dependency>
  21. </dependencies>
复制代码


Ivy
  1. <resolvers>
  2.     <bintray />
  3.     <bintray subject="orangy" repo="maven"/>
  4.     <ibiblio name="spigotmc" root="https://hub.spigotmc.org/nexus/content/groups/public/" m2compatible="true" />
  5. </resolvers>
  6. <dependencies>
  7.     <dependency org='br.com.gamemods' name='java2nukkit-world-converter' rev='2.0.1'/>
  8. </dependencies>
复制代码



[groupid=1572]Nukkit Plugin Studio[/groupid]