你是否希望更高效地处理 YAML、JSON 和 TOML 文件?你是否想在编辑 YAML 文件时保留注释?你是否希望轻松保存配置文件,且不依赖于 Bukkit 或 BungeeCord?你是否想超越简单的 .yml 文件来存储数据?你是否在寻找一个功能强大、“类 Bukkit”(与 Bukkit 配置非常相似)的库来将数据存储到文件中?你是否想节省大量时间,在处理配置文件时减少多达 90% 的代码量?那么,这个库正是为你准备的。
我一直在寻找一个能使用类 Bukkit 方法存储数据,且不依赖于 Bukkit/BungeeCord 的库,但市面上没有。因此,我决定自己编写一个。当然,有一些库提供了类 Bukkit 的方法,但没有一个具备我需要的全部功能。例如,ThunderBolt-2 仅支持 JSON 文件,且不支持嵌套对象。现在我将这个库公开发布,因为我认为高质量的库应该对所有人开放。它就是:SimplixStorage!
支持的文件格式
目前 SimplixStorage 支持四种文件类型:
- JSON:一种非常快速且轻量的文件格式。它比 YAML 文件快得多,因此更适合存储大量数据,例如玩家数据(等级、金钱、游戏时间等)。
- TOML:同样快速且轻量的文件格式。它速度很快,同时非常易于阅读。虽然目前还不算常见,但它是一种非常出色的文件格式。你可以用它来存储玩家数据或配置插件。
- YAML:我想这里每个人都熟悉 YAML 文件,因为它在 Bukkit 开发中非常普遍。YAML 文件不如 JSON 文件快,但更易于阅读,因此比 JSON 更适合用作配置文件。
核心优势
你可能会问,既然 Bukkit 和 BungeeCord 已有自己的文件存储方式,使用 SimplixStorage 有什么好处?以下是它的核心优势:
专业的工作流程
SpigotMC 上大多数专业开发者都使用自己的配置库来满足需求——他们不仅仅使用 Bukkit 自带的库。在开发 SimplixStorage 时,我研究了许多这类私有库,与开发者交流,并提炼了其中许多能提升生产力的特性。SimplixStorage 将众多优秀开发者的最佳创意融合于一个出色的库中。
独立运行
此库不依赖于任何其他插件,甚至不依赖于 Bukkit 或 BungeeCord!你可以在 Bukkit 或代理插件中使用它——甚至独立的 Java 应用程序也受支持!你可以在任何 Minecraft 版本上使用它,无论你使用什么版本、平台或其他任何东西——SimplixStorage 都能正常工作。
易于使用
尽管经过一些练习后易于理解,但 Bukkit 和 Bungee 的配置类可能相当令人困惑。SimplixStorage 的设计目标是易于使用(同时功能非常强大)。所有目录会在需要时自动创建,如果文件已存在,它只会被加载。此外,还有许多更易于使用的生产力提升功能!
灵活性——由你决定!
你是否想要不止一种文件类型?如前所述,你可以使用多种文件类型:你希望数据文件更快还是更易于人类阅读?SimplixStorage 让你可以自由选择。
生产力
厌倦了仅为配置类就输入数百行代码吗?如果你想提高生产力,这个库正适合你:我长期处理配置文件和相关事务,深知默认检查的繁琐,因此我决定实现自定义方法来提升你的生产力!我们还不断改进这些方法,以持续增加 SimplixStorage 为你带来的益处。SimplixStorage 使用最前沿的技术来加速你的 Java 应用程序。借助这些生产力提升功能,你将能够比竞争对手更高效,并凭借几乎不公平的优势完全超越他们。
主要生产力提升功能
以下是 SimplixStorage 的主要生产力提升功能:
- setDefault:仅当文件中尚未包含关联的键时才设置值。这为你节省了各种包含检查,在某些情况下,这将减少你需要编写的 90% 的代码!
- getOrDefault:此方法可用于从文件中检索默认值。你可以直接使用
getOrDefault,而不是使用大量重复且难以阅读的 if 条件。此方法可以使你的代码更清晰,从而更易于阅读和理解。 - getOrSetDefault:仅当文件中尚未包含关联的键时才设置值。如果文件尚未包含该键,它将返回默认值。如果文件已包含该键,它只返回其值(而不是默认值)。如果你想在文件中存储玩家数据或类似内容,这将非常有帮助!如果你想要一个多语言插件,它也非常有用。你可以只用一行代码获取和设置消息!相信我,这能节省大量时间。
- setPathPrefix:此方法设置一个路径前缀,这样你就不必输入那么多内容!这避免了输入
get("spawn.x")、get("spawn.y")、get("spawn.z")的麻烦,你可以直接输入:setPathPrefix("spawn"),然后使用get("x")。此方法也显著减少了你需要编写的代码量,并使你的代码更易读! - 智能重载:忘记你的
/config reload命令吧!SimplixStorage 会自动为你重新加载文件——但仅在文件发生更改时。当然,你可以配置 SimplixStorage 如何重新加载你的文件。 - 注释保留:SimplixStorage 保留所有注释!是的,它确实能做到!例如,配置类在默认的 Yaml 类中会自动处理这一点,你只需输入:你文件中的所有注释都将被保留!目前没有其他库能做到这一点!
- 设置头部:世界上没有其他库能像 SimplixStorage 这样让你如此轻松地编辑 YAML 注释!
关于注释保留的说明
- 如果你在一个 YAML 文件中多次使用相同的键,其上方的注释可能会被放置在不正确的位置。
- 目前还无法保留行内注释。
- 这是由于 YamlBeans 保存其值的方式造成的。我将不得不编写自己的 YAML 解析器来解决这个问题。
文档与许可
- 文档:在 SimplixStorage 的 GitHub 页面上,有关于如何使用此库的极其详尽的文档!
- Apache-2 许可:SimplixStorage 采用 Apache-2.0 许可证,这意味着你可以在开源和闭源应用程序中使用此库(Apache-2.0 许可证与 GLPv3 兼容)。我认为这是最大的优势之一,因为许多库都采用 GLP 或一些 Copyleft 许可证,如果你使用它们的项目,你也必须将你的作品置于这些 Copyleft 许可证之下。
安装方式
有两种可能的方式在你的插件中使用 SimplixStorage。
方式一:与 SimplixCore 一起使用
SimplixCore 包含了 SimplixStorage 作为一个库。如果你将其作为插件安装在你的服务器上,则无需将 SimplixStorage 打包到你的 jar 文件中。
步骤:
- 下载 SimplixCore 并将其安装在你的服务器上:
- [Spigot](https://www.spigotmc.org/resources/52163/)- [BungeeCord](https://www.spigotmc.org/resources/52164/)- 将以下内容放入你的
pom.xml文件中:
- 将此放入你的 `<repositories>` 部分: <repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>- 将此放入你的 `<dependencies>` 部分: <dependency>
<groupId>com.github.simplix-softworks</groupId>
<artifactId>SimplixStorage</artifactId>
<version>3.1.9</version>
<scope>provided</scope> <!-- 必须是 provided,因为我们希望从 SimplixCore 中使用它! -->
</dependency>方式二:独立使用 SimplixStorage
你需要 Maven 来使用 SimplixStorage。(点击下载按钮可跳转到 GitHub 发布页面。)
示例 pom.xml: https://pastebin.com/S7UE516z
步骤:
- 将此放入你的
<repositories>部分:
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>- 将此放入你的
<dependencies>部分:
<dependency>
<groupId>com.github.simplix-softworks</groupId>
<artifactId>SimplixStorage</artifactId>
<version>3.1.9</version>
<scope>compile</scope> <!-- 必须是 compile,因为我们希望将其打包到你的 jar 文件中! -->
</dependency>- 重要! 使用 shade 插件确保在编译插件时,该库被打包到你最终的 .jar 文件中。重定位是可选的,但强烈推荐。如果你不知道如何或在构建部分的何处放置此配置,请查看示例
pom.xml。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<relocations>
<relocation>
<pattern>de.leonhard</pattern>
<shadedPattern>yourpackage.yourname.storage</shadedPattern>
</relocation>
</relocations>
</configuration>
</plugin>完成这些步骤后,你应该就可以开始使用了!
支持与反馈
如果存在任何问题或错误,我们将尽快修复。如果你有任何功能请求(更多功能已在计划中),可以通过以下方式提交错误报告或功能请求:
- 通过 SpigotMC 私信我们
- 加入 支持 Discord
- 最佳方式:在 SimplixStorage 的 GitHub 页面创建 Issue:https://github.com/Simplix-Softworks/SimplixStorage