尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證miaucraft bridge: self-updating plugin that connects mc server and website through a database
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Paper plugin (Java 21, Paper 1.21.x) that mirrors a Minecraft server into Supabase for the Miaucraft website: online players, stats, achievements, live positions, TPS, status, whitelist, in-game ⇄ web chat, an optional live map, plus an owner-facing diagnostics/action queue and a self-updater.
SinkManager queues (coalesced per conflict key, flushed in foreign-key order every 5 s, bounded, per-sink exponential backoff) using the service-role key from the server's local config.yml. Never commit that file.whitelist_commands, bridge_commands (owner actions — a fixed set of symbols, never a console string), chat_messages (kind web, treated as untrusted and sanitised before being broadcast).remote-config.json in this repo (polled; update.* and credentials are deliberately local-only).sendAsync; Bukkit API calls are scheduled onto the main thread; nothing slow runs on it. A transient database outage only grows the bounded queues and backs sinks off (max 60 s).mvn test # 79 unit tests
mvn package # target/miaucraft-bridge-plugin.jar
cd dev/db-tests && npm install && npm test # SQL regression tests for the migrations (in-process Postgres, no Docker)
dev/supabase/migrations/ is the ordered chain. 20260101000000_init … 0500 are the local-dev reconstruction plus the production fixes; 0600_security_hardening is written against the real production schema and is guarded so the local chain still runs. Rollbacks live in dev/supabase/rollbacks/ (outside the chain on purpose). The SQL tests replay a prod-shaped baseline (dev/db-tests/baseline.sql), the migration, and the rollback.
Compatibility: every deployed plugin version (≤ 2.6.1) keeps working after 0600 — the plugin only uses the service role (bypasses RLS), and the migration keeps its grants.
Servers update themselves from plugin-update.json on main. Each release must be signed; servers on 2.7.0+ refuse an unsigned or wrongly signed manifest.
One-time setup (already done on the maintainer's machine; the public key is compiled into UpdateSignature.RELEASE_PUBLIC_KEY):
java dev/ReleaseSigner.java gen %USERPROFILE%\.miaucraft\release-signing.key
Back that file up and keep it out of the repository. To rotate the key, release a build signed with the old key that contains the new public key.
Release:
powershell -File publish-release.ps1 -Version 2.7.0 -SiteRepo C:\path\to\miaucraft
The script bumps pom.xml, runs the tests, builds, checks plugin.yml, copies the jar to releases/, signs (version, sha256) and writes the manifest. Then commit plugin-update.json and releases/*.jar (and the mirrored bridge/ in the site repo) and push. Old servers ignore the extra signature field.
Local dev servers: dev/publish-update.ps1 writes an unsigned manifest, so set update.require-signature: false in that dev server's config.yml (never in production).
See the comments in src/main/resources/config.yml. Notable keys: enabled (master kill switch), update.require-signature / update.public-key, update.auto-apply (default false), bridge.retention.purge-hours.
See the site repository's docs/SECURITY-AUDIT.md for the combined audit. Rules this plugin relies on: the service-role key stays in config.yml only; rows written by website users are validated by database policies and sanitised here; updates are verified (https, size cap, sha256, Ed25519 signature, plugin.yml version match, atomic install).