Гайд по публикации плагина на Ore

Добро пожаловать в руководящие принципы передачи наработок Ore. В этом документе описываются наши ожидания как от проекта, так и от процесса передачи файлов.

Помните, что это всего лишь руководящие принципы, и команда Ore, называемая «персоналом» во всех этих руководствах, может разрешить или запретить действие, которое явно не указано здесь, по своему собственному усмотрению.


Проекты

Публикуемые проекты проекты должны удовлетворять следующим требованиям:

Параметр

Your project’s submitted name should not include a version, tagline, or other description. The name should be unique and original and must not have a name implying it is an official Sponge project.

Примеры недопустимых имён проектов:

  • SpongeWarp

  • SpongeHome

  • SpongeEssentials

  • SpongeCloud

Примеры допустимых имён проектов:

  • CoolWarps-Sponge

  • MoneyMiner-Sponge

  • Golfball-for-Sponge

  • Calendar-for-Sponge

Основная страница документации (Начало)

This is the first page that anyone will see when visiting your project. Information here should include a clear and concise description of your project’s features and goals. The following, if present in your plugin, should be documented on the main page if relevant:

External Connections

Если ваш проект использует веб-API, звонит на домашний телефон для сбора данных или иным образом подключается к системе, внешней по отношению к серверу, на котором он работает, наличие этой функции, а также информацию о том, как включить или отключить ее, необходимо отобразить заметно на главной странице. Если для вашего проекта единственной целью является использование внешней системы (например, плагин Sponge, который переводит чат на другие языки), параметр конфигурации для переключения соединений с этой службой не требуется. Если ваш плагин отправляет информацию (например, список плагинов или данные игрока), собранная информация должна быть указана на главной странице.

Examples of systems that require documentation:

  • Statistics or usage information collection (‘metrics’)

  • Геолокация

  • Услуги перевода

  • Web server that runs on the plugin, serving information to users

  • Server that runs on the plugin, listening to requests from other services

  • IRC/Discord/Telegram/WhatsApp bot or relay

Examples of systems that do not require documentation:

  • Local databases or database connections specified by the end-user

Категория

Категория, которую вы выбираете, должна быть точной. В вашем проекте должна использоваться самая узкая категория. Если ни одна категория не является точной, следует использовать категорию «Разное».

Монетизации / Реклама

Материалы не могут продаваться, а также дополнительные функции нельзя разблокировать путем платежа. Реклама и другие источники, генерирующие доход (например, adfly), не разрешаются. Документация может содержать ссылку на страницу для пожертвований в пользу сопровождающего проект или других авторов, в качестве благодарности, но на этой странице не могут быть предложены дополнительные функции или другие плагины/моды для продажи.

“Cracked” / Offline-mode / online-mode=false Support

Проекты, о которых явно указано, что они предназначены для таких целей, не допускаются. Некоторые проекты, такие как системы аутентификации, могут иметь функциональность, которая может быть полезной для серверов, независимо от использования сервером аутентификации Mojang, но они могут не способствовать такому дополнительному использованию или быть специально разработанными для серверов с избежанием авторизации Mojang. Проекты, предназначенные для проки-серверов, требующие онлайн-режима=false, разрешаются, если целью их написания не является облегчение обхода права собственности на учетную запись Minecraft.

Лицензионное соглашение

Мы стремимся полностью соблюдать Лицензионное соглашение Mojang. Любые плагины, службы, сообщения и/или ссылки, подозреваемые в нарушении Лицензионного соглашения, могут быть удалены по усмотрению Персонала Sponge или по просьбе Mojang AB.

Ответвления

Разрешены вилки, если они соответствуют всем пунктам в нижеследующем списке. Персонал имеет последнее слово в том, в каком виде будет принята вилка. Должным образом следуйте лицензии родительского проекта.

Either:

  • Создавайте новый проект только в виду значительных изменений. Это нужно, чтобы избежать ситуаций типа «Я изменил цвета сообщений в плагине X, и теперь я требую кредит!», или

  • Продолжайте работу с плагином, который был оставлен, только получив доказательства, что автор не отвечал на сообщения или заявил, что проект больше не будет обновляться.

Acknowledge or credit the past plugin and developers. Essentially, don’t claim it is a new plugin and exclusively your creation.


Файлы

Публикуемые файлы должны удовлетворять следующим требованиям:

Обфускация

Любой файл, который содержит обфусцированный код будет отклонён, за исключением:

NMS (аббревиатура от ``net.minecraft.server``) обфускация

Это относится только к плагинам, которые ссылаются на Minecraft или мод Forge. Примерами могут быть плагин с использованием Mixins или плагин, который дублируется в виде мода Forge (гибридный плагин). При условии, что единственные запутанные ссылки относятся к запутанному источнику, сгенерированному с использованием ForgeGradle или VanillaGradle, плагину разрешается продолжить процесс обзора.

Core Mods and Mixins: Modification of the Minecraft Base Code

Plugins and mods that use a system that modifies the Minecraft base code at runtime, (such as core mods and mixins) must disclose the edits that they make to the Minecraft code, and their reasoning for them. Sponge plugins should use SpongeAPI where possible. Sponge implementations may implement technical restrictions to prevent such modifications from being applied by default. Files are not permitted to attempt to work around these restrictions, but can notify the user that enhanced functionality can be enabled via the Sponge provided configuration options.

Внешние Связи (Web API, «Звонок Домой» и т.д.)

Можно записать множество прекрасных функций, если обратиться к внешним системам. Кроме четкого документирования в описании проектов, такие функции должны быть настраиваемыми и отключенными по умолчанию. Если для вашего проекта единственной целью является использование внешней системы (например, плагина Sponge, который переводит чат на разные языки), соединение с этой системой не должно быть отключено. Если ваш плагин отправляет информацию (например, список плагинов, данные об игроке или данные карт) внешним системам, собранная информация должна быть указана на главной странице (см. выше).

Metrics (Data Collection)

Whenever data collected about the server (often referred to as «stats» or «metrics» data, such as server or plugin versions, as well as usage information) is to be sent to an external service, the plugin must first query the Sponge API MetricsConfigManager. Documentation on doing so can be found Here. This API must be checked each time data is sent, not only once. Plugins may not modify the values the API returns, but may encourage users to make the decision to enable the collection and sending of this data for their plugin.

Примечание

This API was added in API 7.1.0. Plugins built against older API versions must instead check against a variable in a configuration file unique to that plugin for the enabled/disabled status, which must also default to disabled.

Выполнение загруженного кода

We cannot ensure that content that is downloaded and executed at runtime is safe and complies with our guidelines. Any project that performs downloads and execution of code will have warnings on the project page and a warning prior to download to ensure users know the risk.

The following conditions must be also be met by the project:

  • Downloaded content must have hard-coded SHA256 (or better) based hash checking

  • Downloaded content must be explained in the main project page as to what is downloaded and what purpose it serves

  • Downloaded content must be performed over HTTPS connections

  • Downloaded content must not be hosted in a location that will limit downloads (e.g. DropBox, Google Drive)

  • Downloading another plugin must go through Ore’s API in the same fashion as Update Checking

Монетизации / Реклама

All functionality present in your plugin should be usable without restriction, and cannot require a license key to operate. External APIs, such as translation or geolocation services, that require payment for functionality can be allowed but must be discussed among staff prior to approval. Plugins may not be used to display advertisements.

Проверка обновлений

Проверка наличия обновлений должна проходить с помощью предоставленного Ore API. Ваш плагин свяжется только с Ore, направляя пользователей вашего плагина на загрузку новых версий. Обратите внимание, что эта проверка на наличие обновлений считается внешним соединением, которое должно быть задокументировано, и для которого должна существовать конфигурация, позволяющая его отключить.

Предоставление привилегий

Плагины не должны давать или отзывать доступ по ролям какому-либо конкретному пользователю или группе пользователей, которых определил разработчик плагина. Включая и присвоение автором самому себе особенного отображаемого имени или разрешения на использование специальной команды. Функции, по возможности, следует заблокировать за пределами узлов разрешений, а не предварительно определить доступ к ним автором. Команды для предоставления конкретным, предварительно запрограммированным пользователям OP или разрешений неприемлемы.