- Kotlin 88.7%
- HTML 10.9%
- Nix 0.4%
| .github/workflows | ||
| docs | ||
| gradle/wrapper | ||
| logs | ||
| src | ||
| .gitattributes | ||
| .gitignore | ||
| AGENTS.md | ||
| build.gradle | ||
| flake.lock | ||
| flake.nix | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle | ||
| TRADEMARKS.md | ||
Social Sync for Paper
Social Sync is a Paper plugin that links Minecraft player UUIDs to AT Protocol identities. This branch targets the stable Paper 26.1.2.build.72-stable API.
Independent project; see the trademark notice.
Requirements
- Paper 26.1.2 or newer within the 26.1 line
- Java 25 or newer
- Network access to the player's AT Protocol PDS
Installation
- Build with
./gradlew build. - Copy
build/libs/socialsync-0.7.0-Paper.jarinto the server'splugins/directory. - Restart the server.
Plugin data is stored under plugins/SocialSync/. The plugin shades its Kotlin, Ktor, serialization, and AT Protocol runtime dependencies, so no companion plugin is required.
Commands
| Command | Description |
|---|---|
/atproto link <handle or DID> |
Resolve and link an AT Protocol identity |
/atproto login <handle or DID> <app-password> |
Authenticate the player's own AT Protocol account |
/atproto logout |
Remove the player's authenticated session |
/atproto unlink |
Remove the player's identity link |
/atproto whoami |
Display the linked identity |
/atproto status |
Display plugin and link-store status |
/atproto help |
Display command help |
/atproto admin server-login <handle or DID> <app-password> |
Configure the server AT Protocol repository (operator only) |
/socialsync is an alias for /atproto. Player commands require socialsync.use, which defaults to true.
Architecture
Social Sync is a server-side Paper plugin. Identity resolution, secure persistence, achievement tracking, session tracking, periodic server-status publishing, automatic Bluesky feed posts, AT Protocol records, AppView/firehose components, security auditing, and the HTTP client are packaged in the plugin JAR.
Completed advancements are published once per player. Session records are published on disconnect and server status is refreshed every five minutes. Achievement unlocks and player stat summaries are mirrored to each player's own Bluesky feed when that player has authenticated their account, and server-status posts are emitted when the visible snapshot changes. The player feed posts stay under Bluesky's 300-character limit.
Development
./gradlew clean test build
The produced JAR contains plugin.yml with api-version: '26.1.2'. Paper releases use the -Paper version suffix. The build uses Gradle 9.6.1 because it supports the current Java 26 development runtime while emitting Java 25-compatible bytecode.
License
AGPL-3.0-only. See LICENSE.