Diretrizes de Submissão de Plugins no Ore
Bem-vindo às diretrizes de submissão de plugins do Ore. Este documento descreve as nossas expectativas para submissões de ficheiros e de projetos.
Lembre-se que isto não passam de orientações e que a equipa do Ore, doravante chamada “staff”, pode escolher se aceita ou não qualquer ação que não esteja aqui explicitamente descrita segundo o seu próprio critério.
Projetos
Os projectos apresentados devem satisfazer os seguintes critérios:
Nome
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.
Examples of names that are not acceptable:
SpongeWarp
SpongeHome
SpongeEssentials
SpongeCloud
Examples of names that are acceptable:
CoolWarps-Sponge
MoneyMiner-Sponge
Golfball-for-Sponge
Calendar-for-Sponge
Página Principal de Documentação (Home)
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:
Ligações Externas
Se o seu projeto utiliza uma Web API, faz chamadas a um servidor privado para recolher dados, ou de outra forma se liga a um sistema externo ao servidor em que está a correr, a presença desta funcionalidade, bem como informação sobre como esta pode ser ativada/desativada, deve ser bem assinalada na página principal. Se o principal propósito do seu projeto envolve a utilização de um serviço externo (como, por exemplo, um plugin do Sponge que traduz entre idiomas do chat), não é necessária a presença de uma configuração que permita desativar a criação dessas ligações. Por outro lado, se o seu plugin envia informação (como, por exemplo, uma lista de plugins ou dados dos jogadores), a informação recolhida deve ser indicada na página principal.
Exemplos de sistemas que requerem documentação:
Estatísticas ou recolha de informação de utilização (metrics)
Geolocalização
Serviços de tradução
Servidor Web que corre no plugin, fornecendo informação para os usuários
Servidor que corre no plugin, a servir pedidos de outros serviços
Bot ou relay IRC/Discord/Telegram/WhatsApp
Examples of systems that do not require documentation:
Local databases or database connections specified by the end-user
Categoria
A categoria que você escolhe deve ser precisa. O seu projeto deve usar a categoria mais restritiva possível, e não uma categoria que se aplique parcialmente. Se nenhuma categoria parecer apropriada, selecione a categoria Miscellaneous.
Links para descarregar
Ore provides, on each project page, a download button which will automatically choose the most recent release. If you wish to add additional download links, all links must point to files hosted on Ore. In addition to links to approved files, you may link to the download pages of unapproved Ore file submissions, but these links must not be recommended over any approved submission by any means. This includes both explicitly marking a link to an unapproved file as recommended, or implicitly by making such links as or more prominent than links to approved builds. Further, you must not attempt to circumvent any plugin warnings on Ore, including warnings that inform the user that a project has not yet been reviewed.
Monetização / Publicidade
Submissões não podem ser vendidas, nem podem haver funcionalidades adicionais desbloqueáveis mediamente pagamento. Propagandas e outros links de geração de receitas (por exemplo, adfly) não são permitidos. A documentação pode conter um link para uma página para doar para o desenvolvedor do projeto ou para outros contribuidores como agradecimento, mas essa página não pode oferecer recursos adicionais ou outros plugins/mods para venda.
Suporte para “Cracked” / Modo Offline / online-mode=false
Projetos que afirmam explicitamente que são feitos para tais usos não são permitidos. Alguns projetos, como os sistemas de autenticação, podem ter a funcionalidade que pode ser útil para os servidores, independentemente do uso do servidor de autenticação da Mojang, mas eles não podem promover esse uso adicional ou ser projetados especificamente para servidores evitando Mojang auth. Projetos concebidos para proxies, que exijam online-mode=false são permitidos, desde que eles não estejam feitos de modo a facilitar a evasão de propriedade de conta de Minecraft.
EULA (Contrato de Licença de Usuário Final)
Tencionamos obedecer integralmente ao EULA da Mojang. Quaisquer plugins, serviços, posts e/ou links suspeitos de violarem o EULA poderão ser removidos a critério do Staff, ou a pedido da Mojang AB.
Forks
Os Forks são permitidos, desde que cumpram todos os requisitos abaixo. O staff tem a palavra final sobre o que é um fork válido. Você deve seguir a licença do projeto pai adequadamente.
Ou:
Contém modificações suficientes, justificando a criação de um novo projeto. Isto serve para evitar situações como: “Mudei as cores das mensagens do plugin X e agora fico com os créditos!”, ou
Continua um plugin que foi abandonado, com prova de que o autor não tem respondido a mensagens, ou afirmou que o projeto não será atualizado daí em diante.
Reconhece ou dá o devido crédito ao plugin original e aos seus desenvolvedores. Isto é, não afirme que um novo plugin é exclusivamente criação sua.
Ficheiros
Os ficheiros apresentados devem satisfazer os seguintes critérios:
Obfuscação
Um ficheiro obfuscado será recusado a menos que caia na seguinte exceção:
Obfuscação NMS
Isto só se aplica a plugins que façam referência ao Minecraft ou a um Forge Mod. Possíveis exemplos são plugins que usem Mixins ou um plugin que também seja um Forge Mod(plugin híbrido). Desde que a as únicas referências obfuscadas sejam a código fonte obfuscado gerado pelo ForgeGradle ou VanillaGradle, o plugin pode prosseguir pelo processo de revisão.
Core Mods e Mixins: Modificação do Código Base do Minecraft
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.
Ligações Externas (Web API, Phoning Home, etc.)
Há muitas funcionalidades excelentes que podem ser feitas com recurso a chamadas a sistemas externos. Para além de estarem claramente explicitadas na documentação, estas funcionalidades devem ser configuráveis e devem estar desativadas por omissão. Se o principal propósito do teu projeto envolve a utilização de um serviço externo (como, por exemplo, um plugin do Sponge que traduz entre idiomas do chat), não é necessária a presença de uma configuração que permita desativar essas ligações. Por outro lado, se o teu plugin envia informação (como, por exemplo, uma lista de plugins, dados dos jogadores, ou dados do mapa) para sistemas externos, a informação recolhida deve ser indicada na página principal (ver acima).
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.
Nota
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.
Execução do Código Descarregado
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
Monetização / Publicidade
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.
Verificação de Atualizações
A verificação de atualizações deve ser realizada utilizando a Ore API. O seu plugin não pode tens links para mais lado nenhum exceto para o Ore, quando direcionar os usuários para descarregarem uma nova versão. Nota que esta verificação de updates conta como uma ligação externa, que deve ser documentada, e para a qual deve existir uma configuração que permita desativá-la.
Concessão de privilégios
Os plugins não podem dar ou revogar acesso a funcionalidades a qualquer usuários ou grupo com base em configurações do desenvolvedor. Isto inclui o autor dar a si próprio um nome especial ou permitirem que eles usem um comando especial. Privilégios, quando aplicável, devem ser atribuídos por intermédio de nós de permissão, e não pré-determinados pelo autor do plugin. Também não é aceite a presença de comandos para dar permissões ou OP a um conjunto de utilizadores pré-programado.