尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Plugins, libraries, services and website behind the XCore Mindustry servers
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗The plugins, libraries, services and website behind the XCore Mindustry servers.
Website · Discord · Releases · Maven
| Plugin | |
|---|---|
| XCore | The main plugin: player profiles and ratings, cross-server chat, moderation, map voting, badges, Discord linking and the in-game menus. |
| TileLogger | Tile history, player activity evidence and rollback, backed by a native store. Runs alongside XCore. |
Published to maven.x-core.org. Usable in any Mindustry plugin, not only XCore.
| Library | Coordinates | Latest | |
|---|---|---|---|
| FluBundle | com.ospx:flubundle | Localization with Project Fluent: plurals, numbers and dates per locale | |
| cloud-mindustry | org.xcore:cloud-mindustry | Incendo Cloud commands for Mindustry | |
| xcore-ui | org.xcore:xcore-ui | Type-safe, reactive server-driven menus | |
| mindustry-testkit | org.xcore.testkit:core, :ui, :fixtures | Test helpers, plus a renderer that opens menus in the real game client | |
| protocol | org.xcore:xcore-protocol-java, PyPI xcore-protocol | The message spec the servers, bot, gateway and website share, with generated Java, Python and TypeScript |
repositories {
maven("https://maven.x-core.org/releases")
}
dependencies {
implementation("com.ospx:flubundle:<version>")
}
| Service | |
|---|---|
| Discord bot | Links the game servers with the community Discord: chat bridge, moderation, account linking |
| Metrics gateway | Collects server telemetry for Prometheus and Grafana |
| Website | x-core.org: player profiles, leaderboards, match history and Discord sign-in, in English, Ukrainian and Russian |
Take the jars from Releases and put them into the server's config/mods. The server must run Mindustry v160 on Java 25. XCore also needs MongoDB 6.0+ running as a replica set (it uses transactions) and Redis. TileLogger ships one jar per platform: Linux x64, Linux ARM64 and Windows x64.
Configuration is covered in each plugin's README: XCore, TileLogger.
You need Java 25, Docker Compose v2 and Python 3.11+. TileLogger's native part also needs a C++20 compiler, and the website needs Bun.
The quickest way to try a change is ./dev. Name what you are working on, and it builds that and starts it together with everything it depends on:
./dev up xcore # game server with XCore, MongoDB and Redis
./dev up tilelogger # TileLogger; XCore gets built too, since TileLogger needs it
./dev up web # the website with demo data, no game server
./dev reload # rebuild; the server restarts only if a jar changed
./dev down # stop everything, keep the data
Settings such as Discord OAuth or paths to plugins from other repositories go into devtools/local.toml, which is not tracked. The development guide covers the rest.
Building directly:
./gradlew build # every JVM component, with tests
./gradlew :plugins:xcore:shadowJar # plugins/xcore/build/libs/XCore-plugin-*.jar
./gradlew :plugins:tilelogger:jarRelease # TileLogger for this platform
uv sync --locked --all-packages --all-groups --all-extras # protocol, bot and gateway
cd web && bun install && bun run dev
Inside this repository everything builds against the code in the same commit: a change to a library is immediately what XCore uses.
plugins/
xcore/ main server plugin
tilelogger/ tile history plugin, with native/ code
libs/
flubundle/ localization
cloud-mindustry/ commands
xcore-ui/ menus
mindustry-testkit/ test helpers and menu renderer
protocol/ message spec and generated bindings
services/
discord-bot/
metrics-gateway/
web/ x-core.org
devtools/ the ./dev command, Compose stack and seed data
ops/ production units and the deploy script
build-logic/ shared Gradle conventions
One Gradle build covers the JVM code (settings.gradle.kts), and one uv workspace covers the Python code (pyproject.toml).
Every component has its own version. To release one, bump the version, merge, and push a tag:
| Component | Version lives in | Tag |
|---|---|---|
| XCore | plugins/xcore/build.gradle.kts | xcore/vX.Y.Z |
| TileLogger | plugins/tilelogger/plugin.json | tilelogger/vX.Y.Z |
| FluBundle | libs/flubundle/build.gradle | flubundle/vX.Y.Z |
| cloud-mindustry | libs/cloud-mindustry/build.gradle.kts | cloud-mindustry/vX.Y.Z |
| xcore-ui | libs/xcore-ui/build.gradle.kts | xcore-ui/vX.Y.Z |
| mindustry-testkit | libs/mindustry-testkit/build.gradle.kts | testkit/vX.Y.Z |
| protocol | protocol/pyproject.toml (Java and Python share it) | protocol/vX.Y.Z |
The release workflow checks that the tag matches the version, publishes to Maven (and PyPI for the protocol), and creates the GitHub release with the jars. The bot, the gateway and the website are not released; they are deployed from main with ops/deploy.
Issues and pull requests go to this repository. A pull request may touch several components at once. CI runs only the checks for what changed, and ci-ok sums them up.
Translations are done on Weblate.
| License | |
|---|---|
| XCore, Discord bot, metrics gateway, website | Apache-2.0; keep each component's NOTICE when redistributing |
| TileLogger | GPL-3.0 |
| Libraries, protocol, everything else | MPL-2.0 |
Each component has its own LICENSE. Code contributed while a component was under the MIT License keeps that notice in LICENSE.MIT.
Until November 2026 these components lived in separate repositories, which are now archived. Their history was imported with each project moved into its directory: old tags are renamed to <component>/vX.Y.Z, and #123 in imported commit messages points to XCore-mindustry/<old-repo>#123. XCore's own history and tags are unchanged.