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

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

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


Проекты

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

Параметр

Имя вашего проекта не должно включать версию, подзаголовок или другое описание. Имя должно быть уникальным и оригинальным и не должно иметь имени, подразумевающего, что это проект Sponge (например, SpongeWarp нельзя, а Cool Warps for Sponge можно).

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

  • SpongeWarp

  • SpongeHome

  • SpongeEssentials

  • SpongeCloud

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

  • CoolWarps-Sponge

  • MoneyMiner-Sponge

  • Golfball-for-Sponge

  • Calendar-for-Sponge

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

Это первая страница, которую все будут видеть при посещении Вашего проекта. Информация здесь должна содержать четкое и краткое описание особенностей и задач проекта. Самое релевантное должно быть за документировано на главной странице.

Внешние соединения

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

Примеры систем, которым требуется документация:

  • Сбор статистических данных или данных об использовании («метрики»)

  • Геолокация

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

  • Веб-сервер, который запускается на плагине, предоставляя информацию пользователям

  • Сервер, который работает на плагине, принимая запросы от других сервисов.

  • IRC/Discord/Telegram/WhatsApp бот или ретранслятор

Примеры систем, которым не требуется документация:

  • Локальные базы данных или соединения с базой данных, определенные конечным пользователем

Категория

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

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

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

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

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

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

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

Ответвления

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

Так же

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

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

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


Файлы

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

Обфускация

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

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 или разрешений неприемлемы.