Ore 插件发布指南
欢迎来到 Ore 提交指南。本文档概述了我们对项目和文件的提交的期望。
请记住,这些只是准则,而且这些准则中被称为“项目组成成员(Staff)”的 Ore 团队,对这份清单上没有明确列出的行为拥有最终解释权。
项目
提交的项目应符合以下期望:
名称
你提交的项目的名称不应包括版本、标语或其他说明。该名称应该是唯一的和原创的,且不得暗示着它是一个 Sponge 项目。
下列名称都是不可接受的例子:
SpongeWarp
SpongeHome
SpongeEssentials
SpongeCloud
下列名称都是可接受的例子:
CoolWarps-Sponge
MoneyMiner-Sponge
Golfball-for-Sponge
Calendar-for-Sponge
文档主页(首页)
这是别人看到你的项目首页。在这个页面伤的信息必须简洁明了地描述你的项目的功能和目标。下列内容若和你的插件有关,则应包括进这个页面里:
外部连接
如果你的项目使用了 Web API、背景连接通信(Phoning Home)等技术来收集数据,抑或只是连接了外部服务器,你必须在你的项目首页明确告知用户此功能的存在,以及详细的启用和禁用方法。如果你的项目只有一个功能,且这个功能也依赖于外部服务器(例如一个能自动翻译聊天内容到别的语言的 Sponge 插件),那么你的项目就不必为此预留启用或禁用这个功能的选项。如果你的插件会上传数据到别的服务器(例如当前插件列表或玩家数据),那么你必须在你的项目主页中列出所有要收集的数据。
需要此种文档记录的项目举例:
统计数据收集,或使用信息收集 (‘metrics’)
地理位置
翻译服务
在插件之上运行的 Web 服务器,可为用户提供信息
在插件之上运行的,监听来自其他服务的请求的服务器
IRC、Discord、Telegram、WhatsApp 等聊天工具的机器人或中继器
不需要此种文档记录的项目举例:
本地数据库,或最终由用户指定的数据库连接
分类
应确保你所选的插件分类准确无误,尽量选择最接近的分类,避开那些稍微沾边的分类。如果没有合适分类,请使用“其他”(Miscellaneous)。
下载链接
Ore 为每个项目页面都提供了一个下载按钮,点击这个按钮就可以自动下载最近的发布版本。如果你想添加更多的下载链接,那么这些下载链接都必须指向 Ore 上托管的文件。在此基础上,你也可以添加未经 Ore 审核过的文件的下载链接,但你不能用任何方式来推荐使用未经审核的文件(包括但不限于明确将未经审核的链接标记为推荐,或者通过将未审核的构建放在显著位置来间接达成类似效果等)。此外,你不能用任何方式绕开 Ore 对插件的警告,包括告知用户插件未经审核的警告。
盈利与广告
任何上传的文件都不能销售,也不能提供任何形式的付费功能。禁止广告与以盈利为目的的短链接(例如 adfly)。文档中可以包含以答谢为目的的捐助链接,但链接所指向的页面中亦不能包含任何额外功能,也不能用于销售插件或 Mod。
破解版/离线模式/online-mode=false 支持
明确声明专用于离线模式的项目不允许存在。一些诸如验证系统的项目可能会在 Mojang 的认证系统之外提供额外的功能,但是这些项目不应该把这类额外的功能用于宣传,更不应该专门用于绕过 Mojang 的认证系统。一些专用于代理的项目可以要求特定服务器使用 online-mode=false,但是他们同时应该保证不会跳过对 Minecraft 账户所有权的检查。
EULA(最终用户许可协议)
我们的目标是完全遵守 Mojang 的最终用户许可协议(EULA)。因此,任何插件、服务、贴子和/或链接都有可能应 Sponge 团队成员或 Mojang AB 的要求而被移除。
复刻(Fork)
复刻在满足下列条件时允许存在。管理员对可接受的复刻的定义有最终决定权。务必遵守原项目的许可证。
下列选项二选一:
复刻的项目经过大规模重写,已达到可以视作新项目的级别。这条规定用于规避诸如”我改了一下插件甲的消息的字体颜色,好了我开发了个新插件!“这样情况的出现。或者,
接替已停止更新插件的维护工作,并能证明原作者长时间没有回复,或原作者已声明放弃插件的维护工作。
鸣谢原插件及其原作者。简而言之,不能因为是复刻而声称是你制作的全新插件。
文件
上传的文件应满足下列要求:
混淆
经过混淆处理的文件会被拒绝,除非:
NMS 混淆
仅当插件直接引用了 Minecraft 或基于 Forge 的 Mod 的内容时适用,例如使用了 Mixin 的插件,或者同时基于 SpongeAPI 和 Forge 的混合插件。插件应确保其混淆的内容是由 ForgeGradle 或 VanillaGradle 自动生成的,以确保其能通过审核阶段。
CoreMod 和 Mixin:修改 Minecraft 底层代码
在运行时修改 Minecraft 底层(比如 Mixin 和基于 FML 的 CoreMod)的插件和 Mod 必须明确声明他们对底层的修改内容以及修改的理由。Sponge 插件应尽量使用 SpongeAPI,避免修改底层。Sponge 的实现中默认可能会使用技术手段限制对底层的修改。禁止上传任何试图绕开这些限制的文件;但仍然可以告知用户通过 Sponge 自带的配置文件来启用增强的功能。
外部连接(Web API、背景连接通信(Phoning Home)等)
籍由外部系统的帮助,插件可以实现更多有用的功能,惟需注意这些功能需要在项目描述中有所体现,并且默认保持禁用状态。若插件的唯一功能需要用到外部系统的功能(例如一个能自动翻译聊天内容到别的语言的 Sponge 插件),则可默认启用。若插件会上传信息(例如插件列表、玩家数据或地图数据)到外部服务器,则所有收集的数据都必须在项目主页上列出(见上文)。
数据收集(Metrics)
不论从服务器上收集到的数据(通常称之为“统计数据”(”stats”)或 “metrics”,例如服务器和插件版本,及其使用信息)是否会发送到其他服务上去,收集数据的插件都必须先检查 SpongeAPI 的 MetricsConfigManager。关于 MetricsConfigManager 的文档可在这里找到。每次发送数据时都必须执行此检查。插件不得修改此 API 的返回值,但可以推荐用户启用对应插件的数据收集及发送。
注解
MetricsConfigManager 这套 API 是在 7.1.0 引入的。基于旧版 API 的插件则必须检查对应的,独立的配置文件选项以确认是否允许数据收集,且该选项默认必须关闭。
执行下载的代码
我们不能保证所有你下载并运行的内容均安全且符合我们的规定。任何在运行时下载并执行代码的插件的项目页都会带有此警告,并且在用户下载插件时再次警告一次,确保用户已知悉风险。
项目还需符合下列要求:
下载的内容必须硬编码 SHA-256 或更强的散列检查
下载的内容必须要在项目页提供说明:是什么,以及干什么用的。
必须经过 HTTPS 连接下载。
下载的内容不能存在会限制下载流量的位置(例如 DropBox、GoogleDrive 等网盘)
若是下载插件,必须使用和更新检查一样的机制,且必须经过 Ore API
盈利与广告
用户应当能不受限地使用你的插件中所有功能;禁止类似使用许可解锁功能的行为。若插件中需要用到诸如翻译及地理位置服务器等需要购买的服务,则需要管理员讨论后决定是否允许。插件不能用于显示广告。
更新检查
更新检查应由 Ore API 完成。你的插件只能将用户导向 Ore 来获取新版本。另外,更新检查也视作是外部连接的一种,必须在插件的文档中有所体现,并提供配置文件选项以供用户选择是否禁用。
授予特权
插件不得授予或撤销由插件开发者指定的某个或某些用户的功能(例如:插件作者为他们自己预留游戏内名字的显示特效,或是预留特殊指令)。若条件允许,应使用权限节点,而不是插件开发者自己,来控制特性。禁止插件为指定群体授予 OP 或其他特殊权限。