Ore 插件提交指南

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

請記住以下內容為一般狀況下的指南,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)。

盈利与广告

任何上传的文件都不能销售,也不能提供任何形式的付费功能。禁止广告与以盈利为目的的短链接(例如 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 或其他特殊权限。