Mirror of github.com/ewanc26/jollywhoppers-socialsync
  • Kotlin 88.7%
  • HTML 10.9%
  • Nix 0.4%
Find a file
2026-07-16 18:22:46 +01:00
.github/workflows init: setup project for Minecraft 1.21.10 with Fabric template 2025-12-20 12:06:21 +00:00
docs docs: retire legacy atproto-connect branding 2026-07-16 14:14:07 +01:00
gradle/wrapper feat: add Paper achievement tracking for v0.7.0 2026-07-01 23:14:43 +01:00
logs chore: update TEST_GUIDE documentation, remove stale tracked log file 2026-07-01 21:51:50 +01:00
src docs: retire legacy atproto-connect branding 2026-07-16 14:14:07 +01:00
.gitattributes init: setup project for Minecraft 1.21.10 with Fabric template 2025-12-20 12:06:21 +00:00
.gitignore chore: add .kotlin/ and .letta/ to gitignore, bump version to 0.5.1 2026-07-01 21:58:44 +01:00
AGENTS.md docs: correct agent guidance after source audit 2026-07-16 18:22:46 +01:00
build.gradle feat: add Paper achievement tracking for v0.7.0 2026-07-01 23:14:43 +01:00
flake.lock chore(dev): document the Nix development shell 2026-04-25 23:44:01 +01:00
flake.nix feat(sync): add automatic Minecraft stat syncing 2026-04-25 23:43:29 +01:00
gradle.properties feat: add GitHub release update checker 2026-07-03 19:19:04 +01:00
gradlew init: setup project for Minecraft 1.21.10 with Fabric template 2025-12-20 12:06:21 +00:00
gradlew.bat init: setup project for Minecraft 1.21.10 with Fabric template 2025-12-20 12:06:21 +00:00
LICENSE chore: move to AGPL-3.0 2025-12-22 05:11:11 +00:00
README.md docs: retire legacy atproto-connect branding 2026-07-16 14:14:07 +01:00
settings.gradle feat: add Paper achievement tracking for v0.7.0 2026-07-01 23:14:43 +01:00
TRADEMARKS.md docs: retire legacy atproto-connect branding 2026-07-16 14:14:07 +01:00

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

  1. Build with ./gradlew build.
  2. Copy build/libs/socialsync-0.7.0-Paper.jar into the server's plugins/ directory.
  3. 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.