PLUGINv3.0.2-1.20.1-26.2 · updated 11. Sept. 2026

BileTools - Test-Plugins schneller

Keine Bewertung
CREATED BYVolmitSoftware7 plugins

GITHUB  •  DOKUMENTATION  •  DISCORD

Überblick - was BileTools tut

BileTools überwacht Ihr Plugin-Verzeichnis und steuert Änderungen im Laufzeitlebenszyklus, sodass ein Neuaufbau im laufenden Server landet, anstatt einen Neustart zu erfordern.

  • Auto-Hot-Reload. Kompilieren Sie über eine vorhandene Plugin-JAR, und BileTools erkennt die Inhaltsänderung automatisch.

  • Hot-Drop. Legen Sie eine neue JAR in das Plugin-Verzeichnis, und sie wird für das Laden zur Laufzeit ohne einen vollständigen Neustart in die Warteschlange gestellt.

  • Auto-Unload. Löschen Sie eine verfolgte JAR, und ihr Plugin wird entladen.

  • Lebenszyklusbefehle. Laden, entladen, neu laden, installieren und deinstallieren Sie manuell aus dem /bile-Befehlbaum.

  • Abhängigkeitsbewusst. Abhängige Plugins werden um einen Ersatz herum entladen und neu geladen, anstatt eine JAR blind neu zu laden.

  • Lokale Plugin-Bibliothek. Jede JAR, die BileTools sieht, wird nach Version archiviert, und derselbe Ordner wird von /bile install gelesen. Backup und Rollback sind dieselbe Funktion.

  • Remote-Deployment. Übertragen Sie ausgewählte JAR-Änderungen an andere konfigurierte Server über einen authentifizierten, größenbegrenzten, SHA-256-verifizierten Transfer.

Erkennung, kurz: Eine Größen- oder Zeitstempeländerung weckt nur den Überwacher. Ein SHA-256 der JAR entscheidet, ob tatsächlich etwas neu geladen wird, sodass eine JAR, die Sie berührt, aber nicht geändert haben, ignoriert wird.

BileTools ist ein Entwicklungstool. Es manipuliert absichtlich den Lebenszyklusstatus von Plugins zur Laufzeit. Das ist genau das, was den Entwicklungszyklus schnell macht, und genau das, warum es auf Entwicklungs- und Testservern gehört. Hot Reload ist kein Ersatz für einen sauberen Neustart auf einem Live-Server.

Kompatibilität - Laufzeiten und Java

Eine JAR deckt alle sechs Laufzeiten ab, Minecraft 1.20.1 bis aktuell 26.x.

  • Paper lädt über den öffentlichen PluginManager des Servers

  • Purpur dieselben Lade- und Entladepfade der Paper-Familie

  • Leaf Paper-Familiengabel, behandelt wie Paper

  • Folia regionierte Planung, BileTools erklärt folia-unterstützt

  • Canvas Folia-Gabel, dieselben regionierten Regeln

  • Spigot lädt über plugin.yml; JARs, die nur paper-plugin.yml enthalten, werden abgelehnt

Java: Java 17 für Minecraft 1.20.1+, Java 25 für 26.x+. Passen Sie an, was Ihr Server bereits benötigt.

Folia und Canvas: Hot Reload auf regionierten Servern ist von Natur aus fragiler. Ein Drittanbieter-Plugin, das keine folia-Unterstützung erklärt, kann trotzdem fehlschlagen, wenn es hot geladen wird.

Befehle und Berechtigungen

Der Hauptbefehl ist \/biletools. Aliase: \/bile, \/bi, \/b.

\/bile load <plugin>                    Lade eine Plugin-JAR aus dem Plugin-Verzeichnis
\/bile unload <plugin>                  Entlade ein installiertes Plugin
\/bile reload <plugin>                  Lade ein installiertes Plugin neu
\/bile uninstall <plugin>               Löschen Sie eine Plugin-JAR aus dem Plugin-Verzeichnis
\/bile install <plugin> [version=..]    Installieren Sie ein Plugin aus der BileTools-Bibliothek
\/bile library [plugin=..]              Listen Sie Bibliotheks-Plugins oder Versionen für ein Plugin auf

Eine Berechtigung deckt den gesamten Baum ab:

bile.use     Gibt Zugriff auf BileTools     standardmäßig: op

Manuelle Befehle umgehen immer die Überwacherfilter. Die Tab-Vervollständigung schlägt installierte Plugins, Bibliotheks-Plugins und gespeicherte Versionen vor. Das Ausführen von allein öffnet ein paginiertes Hover-and-Click-Hilfemenü.

Optionale Argumente müssen benannt werden. Das Übergeben von ihnen positionsabhängig schlägt mit "unerwartetes Argument" fehl:

\/bile install MyPlugin                   funktioniert  (standardmäßig auf version=latest)
\/bile install MyPlugin version=1.4.2     funktioniert
\/bile install MyPlugin version=latest    funktioniert
\/bile install MyPlugin 1.4.2             FEHLGESCHLAGEN
\/bile library                            funktioniert  (listet alles auf)
\/bile library plugin=MyPlugin            funktioniert
\/bile library MyPlugin                   FEHLGESCHLAGEN

Konfiguration - vollständige Standardkonfiguration.yml

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

Was jede Option tut

  • watcher.ignore Plugin-Namen, die automatische Hot-Drop-, Reload- und Unload-Vorgänge überspringen. Die Standardwerte sind Dinge, die normalerweise gefährlich oder nutzlos sind, um auf einer Entwicklungsbox automatisch neu geladen zu werden.

  • watcher.only Wenn diese Liste nicht leer ist, werden nur diese Plugins automatisch verwaltet. Nützlich, wenn Sie aktiv an einem oder zwei Projekten auf einem beschäftigten Server arbeiten.

  • watcher.active-poll-ticks / idle-poll-ticks Wie oft der Überwacher scannt, während Änderungen eintreffen, im Vergleich dazu, wenn das Verzeichnis sich stabilisiert hat.

  • watcher.fingerprint-debounce-ticks Wie lange der Fingerabdruck einer JAR stabil bleiben muss, bevor die Lebenszyklusarbeit beginnt. Das verhindert, dass halbgeschriebene JARs geladen werden.

  • watcher.coalesce-window-ticks Bündelt nahegelegene JAR-Schreibvorgänge in einen abhängigkeitssortierten Reload-Flush, sodass ein Multi-Modul-Bau nicht fünf separate Reloads auslöst.

  • archive-plugins Archiviert jede Plugin-JAR in den Bibliotheksordner, bevor sie ersetzt wird.

  • lifecycle.health-check Nach einem Laden oder Neuladen überprüfen, ob das Plugin tatsächlich registriert und aktiviert ist. Ein fehlgeschlagener Vorgang markiert das Plugin als schmutzig und pausiert automatische Reloads dafür.

  • observability.log-timings Pro-Phase-Zeiten (Entladen, Abhängige, Laden, Gesundheit) für jeden Vorgang protokollieren.

Plugin-Bibliothek und Rollback

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

Mit archive-plugins aktiv, wird jede Plugin-JAR, die BileTools sieht, hierher kopiert, bevor sie ersetzt wird. Das bedeutet, dass die Bibliothek auch als Rollback-Historie dient, \/bile library zeigt, was Sie haben, und \/bile install <plugin> version=<version> stellt alles wieder in den laufenden Server.

Remote-Deployment

Optional. Ermöglicht einem Master-Server, ausgewählte JAR-Änderungen an einen oder mehrere Slave-Server zu übertragen.

  • Auf jedem empfangenden Server: setzen Sie remote-deploy.slave.slave-enabled: true, wählen Sie einen Port und setzen Sie slave-payload auf ein gemeinsames Passwort.

  • Auf dem sendenden Server: setzen Sie remote-deploy.master.master-enabled: true, listen Sie jedes Ziel in master-deploy-to in der folgenden Form auf und listen Sie auf, welche Plugins weitergeleitet werden sollen in master-deploy-signatures.

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

Übertragungen landen in einer temporären .part-Datei und werden nur befördert, nachdem das Passwort, der Dateiname, die Übertragungsgröße und SHA-256 alle überprüft wurden. Dateinamen werden bereinigt, und jeder Pfad, der den Plugin-Ordner verlassen würde, wird abgelehnt. Die Standardwerte sind eine Obergrenze von 256 MB und eine Socket-Zeitüberschreitung von 15 Sekunden.

Sprachen - alle 17 Gebietsschemas

Englisch ist standardmäßig ausgewählt. Um zu wechseln, setzen Sie locale in plugins/BileTools/language.yml:

locale: en_US

de_DE    Deutsch (Deutschland)
es_ES    Spanisch (Spanien)
fi_FI    Finnisch (Finnland)
fr_FR    Französisch (Frankreich)
he_IL    Hebräisch (Israel)
it_IT    Italienisch (Italien)
ja-JP    Japanisch (Japan)
ko_KR    Koreanisch (Südkorea)
lt_LT    Litauisch (Litauen)
nl_NL    Niederländisch (Niederlande)
pl_PL    Polnisch (Polen)
pt_PT    Portugiesisch (Portugal)
ru_RU    Russisch (Russland)
tr_TR    Türkisch (Türkei)
vi_VI    Vietnamesisch (Vietnam)
zh_CN    Chinesisch (Vereinfacht)
zh_TW    Chinesisch (Traditionell)

Sie können auch einzelne Zeilen überschreiben, ohne die Pakete zu berühren. Alles, was Sie unter einem messages: Abschnitt in language.yml hinzufügen, gewinnt; alles, was Sie weglassen, fällt auf die ausgewählte Sprache zurück und dann auf Englisch. Die Datei wird beim Speichern hot geladen.

Wie ein Reload tatsächlich ausgeführt wird

Jede Operation Hot-Drop, Reload, Install, Uninstall, Remote Deploy: läuft durch eine serialisierte Warteschlange mit Dedupe-Schlüsseln, auf einem speziellen Plugin-Operations-Thread. Lebenszyklusmutationen selbst laufen immer auf dem globalen oder Haupt-Thread.

erkennen -> stabilisieren -> fingerprint -> warteschlange -> entladen -> laden -> abhängige -> gesundheitsprüfung

Plugins, die VolmLibs ReloadAware Vertrag implementieren, erhalten einen HOT_RELOAD oder HOT_UNLOAD-Callback vor ihren Aufgaben abgebrochen und Listener abgebaut werden, damit sie in-flight-Arbeiten abfließen können, während ihr Scheduler noch aktiv ist.

Das Entladen entfernt das Plugin aus dem aktiven Befehlsgraphen, den Diensten, den Messaging-Kanälen und den Nachschlagetabellen, bevor der Classloader geschlossen wird, weshalb Befehle und Tab-Vervollständigung korrekt zurückkommen, anstatt halbverdrahtet.

Lebenszykluswartezeiten haben eine explizite Zeitüberschreitung. Ein feststeckender Vorgang wird als Fehler angezeigt und markiert das Plugin als schmutzig, anstatt die Warteschlange zu blockieren. Aktivieren Sie observability.log-timings um die Zeiten pro Phase für jeden Vorgang zu sehen.

Bekannte Grenzen des Hot Reloads

Nicht jedes Plugin kann sauber hot geladen werden, und BileTools tut nicht so, als ob es anders wäre. Dinge, die im Allgemeinen nicht über einen Klassen-Reload überleben:

  • Statischer Zustand Felder, die über einen Klassen-Reload gehalten werden

  • Hintergrundthreads Arbeiten, die außerhalb des Plugin-Schedulers gestartet wurden

  • Native Ressourcen alles, was außerhalb der JVM gebunden ist

  • Externe Verbindungen Sockets und Pools mit ihrer eigenen Lebensdauer

  • Plugin-spezifische Interna Caches und Registrierungen, die anderen Plugins gehören

Halten Sie kritische oder obskure Plugins in der Ignorierliste, aktivieren Sie die Zeitprotokolle, während Sie iterieren, und wenn der Zustand nicht sicher rekonstruiert werden kann, starten Sie den Server neu.

BileTools - Test-Plugins schnellerFREE

Bereit, etwas Erstaunliches zu erstellen?

Tritt der MCModels-Community bei und beginne noch heute mit dem Bau deiner Traumprojekte.