PLUGINv3.0.2-1.20.1-26.2 · updated 11 de set. de 2026

BileTools - Teste Plugins Mais Rápido

Sem Avaliação
CREATED BYVolmitSoftware7 plugins

GITHUB  •  DOCUMENTAÇÃO  •  DISCORD

Visão geral - o que o BileTools faz

O BileTools monitora seu diretório de plugins e controla as mudanças no ciclo de vida em tempo de execução, para que uma recompilação chegue ao servidor em execução em vez de reiniciar.

  • Auto hot-reload. Recompile sobre um jar de plugin existente e o BileTools detecta a mudança de conteúdo automaticamente.

  • Hot-drop. Coloque um novo jar no diretório de plugins e ele será colocado na fila para carregamento em tempo de execução sem uma reinicialização completa.

  • Auto-unload. Exclua um jar rastreado e seu plugin será descarregado.

  • Comandos de ciclo de vida. Carregue, descarregue, recarregue, instale e desinstale manualmente a partir da árvore de comandos /bile.

  • Ciente de dependências. Plugins dependentes são descarregados e recarregados em torno de uma substituição em vez de recarregar um jar cegamente.

  • Biblioteca de plugins local. Cada jar que o BileTools vê é arquivado por versão, e a mesma pasta é o que /bile install lê. Backup e rollback são a mesma funcionalidade.

  • Implantação remota. Envie alterações de jar selecionadas para outros servidores configurados por meio de uma transferência autenticada, limitada em tamanho e verificada por SHA-256.

Detecção, em resumo: uma mudança de tamanho ou timestamp apenas ativa o observador. Um SHA-256 do jar decide se algo realmente recarrega, então um jar que você tocou, mas não alterou, é ignorado.

O BileTools é uma ferramenta de desenvolvimento. Ele manipula deliberadamente o estado do ciclo de vida do plugin em tempo de execução. Isso é exatamente o que torna o ciclo de desenvolvimento rápido, e exatamente por isso pertence a servidores de desenvolvimento e teste. O hot reload não é um substituto para uma reinicialização limpa em um servidor ao vivo.

Compatibilidade - tempos de execução e Java

Um jar cobre todos os seis tempos de execução, Minecraft 1.20.1 até a atual 26.x.

  • Paper carrega através do PluginManager público do servidor

  • Purpur mesmo caminho de carregamento e descarregamento da família Paper

  • Leaf fork da família Paper, tratado como Paper

  • Folia agendamento regionalizado, o BileTools declara suporte a folia

  • Canvas fork Folia, mesmas regras regionalizadas

  • Spigot carrega através do plugin.yml; jars que enviam apenas paper-plugin.yml são recusados

Java: Java 17 para Minecraft 1.20.1+, Java 25 para 26.x+. Combine com o que seu servidor já requer.

Folia e Canvas: o hot reload em servidores regionalizados é inerentemente mais frágil. Um plugin de terceiros que não declara suporte a folia pode falhar ao ser carregado a quente.

Comandos e permissões

O comando raiz é \/biletools. Aliases: \/bile, \/bi, \/b.

\/bile load <plugin>                    Carrega um jar de plugin do diretório de plugins
\/bile unload <plugin>                  Descarrega um plugin instalado
\/bile reload <plugin>                  Recarrega um plugin instalado
\/bile uninstall <plugin>               Exclui um jar de plugin do diretório de plugins
\/bile install <plugin> [version=..]    Instala um plugin da biblioteca BileTools
\/bile library [plugin=..]              Lista plugins da biblioteca, ou versões de um plugin

Uma permissão cobre toda a árvore:

bile.use     Dá acesso ao BileTools     padrão: op

Os comandos manuais sempre ignoram os filtros do observador. A conclusão de tab sugere plugins instalados, plugins da biblioteca e versões armazenadas. Executar sozinho abre um menu de ajuda paginado com hover e clique.

Argumentos opcionais devem ser nomeados. Passá-los posicionalmente falha com "argumento inesperado":

\/bile install MyPlugin                   funciona  (padrão para version=latest)
\/bile install MyPlugin version=1.4.2     funciona
\/bile install MyPlugin version=latest    funciona
\/bile install MyPlugin 1.4.2             FALHA
\/bile library                            funciona  (lista tudo)
\/bile library plugin=MyPlugin            funciona
\/bile library MyPlugin                   FALHA

Configuração - configuração.yml padrão completa

remote-deploy:
  slave:
    slave-enabled: false
    slave-port: 9876
    slave-payload: pickapassword
  master:
    master-enabled: false
    master-deploy-to:
    - yourserver.com:9876:password
    master-deploy-signatures:
    - MyPlugin
    - AnotherPlugin
  socket-timeout-ms: 15000
  max-transfer-bytes: 268435456
archive-plugins: true
watcher:
  idle-poll-ticks: 20
  active-poll-ticks: 5
  fingerprint-debounce-ticks: 8
  ignore:
  - LuckPerms
  - Vault
  - ProtocolLib
  - packetevents
  - WorldGuard
  - CoreProtect
  - spark
  only: []
  coalesce-window-ticks: 10
observability:
  log-timings: true
lifecycle:
  health-check: true

O que cada opção faz

  • watcher.ignore Nomes de plugins que o hot-drop, reload e unload automáticos ignorarão. Os padrões são coisas que geralmente são perigosas ou inúteis para auto-recarregar em uma caixa de desenvolvimento.

  • watcher.only Quando esta lista não está vazia, apenas esses plugins são gerenciados automaticamente. Útil quando você está desenvolvendo ativamente um ou dois projetos em um servidor movimentado.

  • watcher.active-poll-ticks / idle-poll-ticks Com que frequência o observador escaneia enquanto as mudanças estão chegando, versus uma vez que o diretório se estabilizou.

  • watcher.fingerprint-debounce-ticks Quanto tempo a impressão digital de um jar deve permanecer estável antes que o trabalho do ciclo de vida comece. Isso é o que impede que jars meio escritos sejam carregados.

  • watcher.coalesce-window-ticks Agrupa gravações de jars próximas em um flush de recarga ordenado por dependência, para que uma construção de múltiplos módulos não acione cinco recargas separadas.

  • archive-plugins Arquiva cada jar de plugin na pasta da biblioteca antes de ser substituído.

  • lifecycle.health-check Após um carregamento ou recarregamento, verifica se o plugin está realmente registrado e habilitado. Uma operação falhada marca o plugin como sujo e pausa os recarregamentos automáticos para ele.

  • observability.log-timings Registra os tempos por fase (descarregar, dependentes, carregar, saúde) para cada operação.

Biblioteca de plugins e rollback

plugins/BileTools/library/<PluginName>/<version>.jar

Com archive-plugins ativado, cada jar de plugin que o BileTools vê é copiado aqui antes de ser substituído. Isso significa que a biblioteca também serve como um histórico de rollback, /bile library lista o que você tem, e /bile install <plugin> version=<version> coloca qualquer um deles de volta no servidor em execução.

Implantação remota

Opcional. Permite que um servidor mestre envie alterações de jar selecionadas para um ou mais servidores escravos.

  • Em cada servidor receptor: defina remote-deploy.slave.slave-enabled: true, escolha uma porta e defina slave-payload para uma senha compartilhada.

  • No servidor de envio: defina remote-deploy.master.master-enabled: true, liste cada alvo em master-deploy-to na forma abaixo, e liste quais plugins encaminhar em master-deploy-signatures.

master-deploy-to:
- host:port:password

As transferências chegam em um arquivo temporário .part e só são promovidas após a senha, nome do arquivo, tamanho da transferência e SHA-256 serem verificados. Os nomes dos arquivos são sanitizados e qualquer caminho que escape da pasta de plugins é rejeitado. Os padrões são um limite de 256 MB e um tempo limite de soquete de 15 segundos.

Idiomas - todos os 17 códigos de localidade

O inglês é selecionado por padrão. Para mudar, defina locale em plugins/BileTools/language.yml:

locale: en_US

de_DE    Alemão (Alemanha)
es_ES    Espanhol (Espanha)
fi_FI    Finlandês (Finlândia)
fr_FR    Francês (França)
he_IL    Hebraico (Israel)
it_IT    Italiano (Itália)
ja-JP    Japonês (Japão)
ko_KR    Coreano (Coreia do Sul)
lt_LT    Lituano (Lituânia)
nl_NL    Holandês (Países Baixos)
pl_PL    Polonês (Polônia)
pt_PT    Português (Portugal)
ru_RU    Russo (Rússia)
tr_TR    Turco (Turquia)
vi_VI    Vietnamita (Vietnã)
zh_CN    Chinês (Simplificado)
zh_TW    Chinês (Tradicional)

Você também pode substituir linhas individuais sem tocar nos pacotes. Qualquer coisa que você adicionar sob uma seção messages: no language.yml prevalece; tudo que você deixar de fora volta para o idioma selecionado, depois para o inglês. O arquivo é carregado a quente ao ser salvo.

Como um recarregamento realmente é executado

hot-drop, reload, install, uninstall, remote deploy: passa por uma fila serializada com chaves de deduplicação, em uma thread dedicada a operações de plugin. As mutações do ciclo de vida sempre são executadas na thread global ou principal.

detect -> stabilize -> fingerprint -> queue -> unload -> load -> dependents -> health check

Plugins que implementam o contrato ReloadAware da VolmLib recebem um callback HOT_RELOAD ou HOT_UNLOAD antes que suas tarefas sejam canceladas e ouvintes sejam desmontados, para que possam drenar o trabalho em andamento enquanto seu agendador ainda está ativo.

Descarregar remove o plugin do gráfico de comandos ao vivo, serviços, canais de mensagens e tabelas de consulta antes de fechar seu classloader, que é o motivo pelo qual os comandos e a conclusão de tab voltam corretos em vez de meio conectados.

As esperas do ciclo de vida têm um tempo limite explícito. Uma operação travada aparece como uma falha e marca o plugin como sujo em vez de bloquear a fila. Ative observability.log-timings para ver os tempos por fase para cada operação.

Limites conhecidos do hot reload

Nem todo plugin pode ser recarregado a quente de forma limpa, e o BileTools não finge o contrário. Coisas que geralmente não sobrevivem a um recarregamento de classe:

  • Estado estático campos mantidos durante um recarregamento de classe

  • Threads em segundo plano trabalho iniciado fora do agendador de plugins

  • Recursos nativos qualquer coisa vinculada fora da JVM

  • Conexões externas soquetes e pools com seu próprio tempo de vida

  • Internos específicos do plugin caches e registros que outros plugins possuem

Mantenha plugins críticos ou obscuros na lista de ignorados, ative os logs de tempo enquanto você itera, e quando o estado não puder ser reconstruído com segurança, reinicie o servidor.

BileTools - Teste Plugins Mais RápidoFREE

Pronto para criar algo incrível?

Junte-se à comunidade do MCModels e comece a construir seus projetos dos sonhos hoje mesmo.