
BileTools - Test-Plugins schneller
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 aufEine 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 FEHLGESCHLAGENKonfiguration - 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: trueWas 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.
Bereit, etwas Erstaunliches zu erstellen?
Tritt der MCModels-Community bei und beginne noch heute mit dem Bau deiner Traumprojekte.










