Гайд по публикации плагина на 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. В этом документе описываются наши ожидания как от проекта, так и от процесса передачи файлов.

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


Проекты

Submitted projects should meet the following expectations:

Название

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

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

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

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

Категория

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

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

Материалы не могут продаваться, а также дополнительные функции нельзя разблокировать путем платежа. Реклама и другие источники, генерирующие доход (например, 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.


Файлы

Files submitted should meet the following expectations:

Обфускация

A file that utilizes obfuscation will be denied unless it falls under the following exception:

NMS Obfuscation

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

Core Mods and Mixins: Modification of the Minecraft Base Code

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

External Connections (Web API, Phoning Home, etc.)

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

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

Такую угрозу безопасности мы терпеть не будем. Она включает в себя загрузку jar-файлов или класс-файлов, генерацию байт-кода из загруженных источников и выполнение сценариев оболочки.

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

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

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

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

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

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