Ore 插件发布指南

警告

This document refers to an outdated SpongeAPI version and is no longer actively maintained. The policies, guidelines, and some links have changed. Please refer to the latest version of the documentation instead.

欢迎来到 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 或其他特殊权限。