跳到正文

TESLA

作者:DarkhaxDev

一个电力前置库

收藏

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

Tesla

Tesla 是一个用于模组间通信的电力 API。它允许来自不同模组的物品、方块和实体通过 Tesla 电力网络相互交互。 

 

警告:Alpha 和 beta 版本面向模组作者和测试人员。支持 Tesla 的模组应仅以正式版本为目标!使用 Alpha 构建版本可能会导致需要它的模组崩溃!

 


本项目由 Nodecraft 赞助。使用代码 Darkhax,首个月服务可享受 7 折优惠!

 

入门指南

使用 Tesla API 的最佳方式是通过 Forge 的能力系统。 其理念非常简单:能力是接口的实现,用于处理某种 Tesla 相关逻辑。这些能力随后可以附加到受支持的对象上(方块实体、物品堆和实体)。当一个能力被附加后,该对象就可以使用所提供的 Tesla 逻辑,并且其他启用 Tesla 的对象也能够识别它。你可以在这里查看一个基础能力实现,在这里查看一个方块实体示例。这里还有一个物品示例:这里。

 

常见问题

 

大家可以在哪里讨论 Tesla API?

这里有一个公开的 Discord 服务器,你可以点击这里加入。

 

Tesla 与其他电力 API 有什么不同?

Tesla API 的功能与其他电力 API 非常相似,但在设计上做出了一些选择,使 API 更加灵活。其中一项选择是使用 Forge 的能力系统,这使得几乎任何对象都可以添加 Tesla 支持。在这一系统下,模组甚至可以为原版熔炉添加 Tesla 支持,而无需使用任何不规范的变通手段。另一项选择是使用长整数而不是整数。这一改动让模组能够更轻松地处理更大的电力数值。 

 

你为什么要制作这个 API?

这个 API 最初只是作为一个有趣的业余项目制作的,但意外地受到了其他开发者的大量关注。它的创作目的并不是发起一场消灭其他能源 API 的 crusade 之类的行动。 

 

Tesla 有什么标准吗?

该 API 不会强制执行任何标准,不过有一些事项建议模组作者遵循:1 Tesla 应等于 1 RF,方块实体不应直接实现 capability 接口,而与方向相关的逻辑应通过 capability 方法处理。

 

应该将 Tesla API 与其他模组捆绑吗?

虽然捆绑 API 是一种常见做法,并且 Forge 也支持这样做,但这是一种非常糟糕的实践。虽然没有任何东西阻止其他模组捆绑该 API,但我们强烈不建议这样做,并且官方不会为此提供支持。 

 

如果我不能捆绑 API,那么软依赖是如何运作的?

Forge 提供了多种工具,可以让软依赖变得非常简单。第一种是 Optional 注解。这个注解可以添加到实现接口的任意类上;如果未检测到某个指定的模组 ID,就可以从该类中移除这个接口。这样一来,现有的容器对象就可以在不产生硬依赖的情况下实现 Tesla 的接口。CapabilityInject 注解 对软依赖同样非常有用。你可以在字段上使用此注解,使其在指定 capability 初始化时,自动使用该 capability 进行初始化。你也可以将此注解添加到方法上,使这些方法在 capability 初始化时被调用。你可能会注意到,这个注解需要引用 Tesla 中的 capability 类,而在软依赖情况下该类并不存在。由于注解和 JVM 的工作方式,在注解中创建此引用是安全的,不会引发 Class Definition 异常。

 

整合包政策

可以,你可以将其用于整合包中。请不要发消息询问是否可以在你的整合包中使用它,我不会回复此类消息。 

评论

登录后评论和评分

DarkhaxDev 的其他作品

查看全部 →