Ore 插件提交指南

警告

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

歡迎來到 Ore 提交指南。這份文件概括了我們對專案與檔案提交的預想。

請記住以下內容為一般狀況下的指南,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 或其他特殊权限。