Ore 插件发布指南

警告

本文档是针对旧版 SpongeAPI 编写的,目前已不再维护。相关政策、方针及链接可能有所变化。请在必要时参阅最新的文档获得相关信息。

欢迎来到 Ore 提交指南。本文档概述了我们对项目和文件的提交的期望。

请记住,这些只是准则,而且这些准则中被称为“项目组成成员(Staff)”的 Ore 团队,对这份清单上没有明确列出的行为拥有最终解释权。


项目

提交的项目应符合以下期望:

名称

你提交的项目的名称不应包括版本、标语或其他说明。该名称应该是唯一的和原创的,且不得暗示着它是一个 Sponge 项目(例如:SpongeWarp不可以,但Cool Warps for Sponge 可以)。

文档主页(首页)

这是每个人进入你的项目时看到的第一个页面。此处的信息应包括项目的功能说明。如果在您的插件中存在以下内容且没有在 Ore 项目的其他地方记载,则应在首页上记载:命令,配置和权限节点。此外,如果相关,下列信息必须在主页上记载

外部连接

如果你的项目使用了 Web API、背景连接通信(Phoning Home)等技术来收集数据,抑或只是连接了外部服务器,你必须在你的项目首页明确告知用户此功能的存在,以及详细的启用和禁用方法。如果你的项目只有一个功能,且这个功能也依赖于外部服务器(例如一个能自动翻译聊天内容到别的语言的 Sponge 插件),那么你的项目就不必为此预留启用或禁用这个功能的选项。如果你的插件会上传数据到别的服务器(例如当前插件列表或玩家数据),那么你必须在你的项目主页中列出所有要收集的数据。

需要此种文档记录的项目举例:

  • 统计数据收集,或使用信息收集 (‘metrics’)
  • 地理位置
  • 翻译服务
  • 在插件之上运行的 Web 服务器,可为用户提供信息
  • 在插件之上运行的,监听来自其他服务的请求的服务器
  • IRC、Discord、Telegram、WhatsApp 等聊天工具的机器人或中继器

分类

应确保你所选的插件分类准确无误,尽量选择最接近的分类,避开那些稍微沾边的分类。如果没有合适分类,请使用“其他”(Miscellaneous)。

盈利与广告

任何上传的文件都不能销售,也不能提供任何形式的付费功能。禁止广告与以盈利为目的的短链接(例如 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 插件应尽量使用 Sponge API,避免修改底层。Sponge 的实现中默认可能会使用技术手段限制对底层的修改。禁止上传任何试图绕开这些限制的文件;但仍然可以告知用户通过 Sponge 自带的配置文件来启用增强的功能。

外部连接(Web API、背景连接通信(Phoning Home)等)

籍由外部系统的帮助,插件可以实现更多有用的功能,惟需注意这些功能需要在项目描述中有所体现,并且默认保持禁用状态。若插件的唯一功能需要用到外部系统的功能(例如一个能自动翻译聊天内容到别的语言的 Sponge 插件),则可默认启用。若插件会上传信息(例如插件列表、玩家数据或地图数据)到外部服务器,则所有收集的数据都必须在项目主页上列出(见上文)。

执行下载的代码

我们拒绝这样的安全风险。诸如下载 JAR 文件或编译后的类文件、在运行时基于下载的源码生成字节码、执行系统脚本等行为均在此列。

盈利与广告

用户应当能不受限地使用你的插件中所有功能;禁止类似使用许可解锁功能的行为。若插件中需要用到诸如翻译及地理位置服务器等需要购买的服务,则需要管理员讨论后决定是否允许。插件不能用于显示广告。

更新检查

更新检查应由 Ore API 完成。你的插件只能将用户导向 Ore 来获取新版本。另外,更新检查也视作是外部连接的一种,必须在插件的文档中有所体现,并提供配置文件选项以供用户选择是否禁用。

授予特权

插件不得授予或撤销由插件开发者指定的某个或某些用户的功能(例如:插件作者为他们自己预留游戏内名字的显示特效,或是预留特殊指令)。若条件允许,应使用权限节点,而不是插件开发者自己,来控制特性。禁止插件为指定群体授予 OP 或其他特殊权限。