Skip to content

flo-bit/bskycam

Repository files navigation

Bluesky Camera

A Fabric mod for Minecraft 26.1.2 that adds a craftable camera, photo signs, and text signs. Take screenshots in-game, post them to Bluesky directly from Minecraft, and hang the resulting photos (with captions) on walls in your world.

Requirements

  • Minecraft 26.1.x
  • Fabric Loader 0.18.0 or newer
  • Fabric API 0.146.0+26.1.2 or newer (Modrinth)
  • Java 25 (runtime — the Modrinth launcher ships this)
  • A Bluesky account and an App Password (Settings → Privacy and Security → App Passwords → Add App Password)

Installation

  1. Install Fabric Loader for MC 26.1 via your launcher of choice (Modrinth, Prism, etc.).
  2. Drop Fabric API into your profile's mods/ folder.
  3. Drop bskycam-1.0.0.jar into the same mods/ folder.
  4. Launch the game. On first start the mod creates a config file at <profile>/config/bskycam.json.

First-time setup

Open the config screen in-game either by:

  • running the client command /bskycam, or
  • sneak + right-clicking while holding a camera.

Fill in:

Field What to enter
Handle, DID or email Your Bluesky login (e.g. you.bsky.social)
App Password The xxxx-xxxx-xxxx-xxxx token from the Bluesky app-passwords page (not your account password)
Default post text Caption pre-fill for new posts
Default alt text Accessibility description pre-fill
PDS override Leave blank — the mod auto-resolves your PDS via the atproto DID document

Hit Save. Config is stored as plaintext JSON at <profile>/config/bskycam.json. App passwords are revocable at any time from the Bluesky settings page, so a leak is recoverable.

Items

Camera

III   I = iron ingot
IGI   G = glass pane
IRI   R = redstone dust

Shows up in the Tools & Utilities creative tab or via /give @s bskycam:camera.

Text Sign (craftable, stacks to 16)

PPP   P = paper
PIP   I = ink sac
 S    S = stick

Gives 4 text signs per craft.

Photo Sign

Not craftable — produced by taking a picture with the camera. Stacks to 1.

How to take and post a photo

  1. Hold the camera.
  2. Right-click and hold → the camera raises to your eye and zooms in (less than a spyglass — about 2×). Your held item is hidden while aiming.
  3. While zoomed, the HUD shows "Left-click to take picture".
  4. Left-click → a shutter sound plays, the HUD flashes briefly, and a clean (HUD-free) screenshot is saved to <profile>/screenshots/ as a PNG. A Photo Sign item lands in your inventory carrying the JPEG + metadata.
  5. Right-click a wall or the air with the photo sign → the edit screen opens with a live preview, a caption field, and an alt-text field.
  6. Click Post to Bluesky. The post uploads in the background; the sign is marked posted immediately so you can place it right away without waiting.
  7. Right-click a vertical wall with the posted photo sign → it hangs on the wall as a world entity, rendering the photo and caption. The item is consumed on placement.

Break the sign (attack) to drop the item back — it keeps its posted state, so you can place it again elsewhere.

Text signs

  1. Hold a text sign.
  2. Right-click a wall or the air → edit screen opens.
  3. Type up to 300 characters, hit Post to Bluesky.
  4. Right-click a vertical wall with the posted text sign → it hangs as a wooden-plank sign with the text rendered on it.

Text signs attach the current player and world context (player name, position, biome, dimension, weather, health, etc.) to the post's record metadata.

Metadata on each post

Every post record includes a minecraftData object with:

  • playerName, gameMode, health, maxHealth, food, saturation, xpLevel, xpProgress
  • position: {x, y, z}, facing: [yaw, pitch]
  • dimension, biome, gameTime, dayTime, difficulty, hardcore, raining, thundering
  • seed (single-player only)
  • serverName / serverAddress (multiplayer)
  • minecraftVersion, capturedAt, postedAt

All numeric values are serialized as strings to satisfy atproto's no-floats constraint without losing precision.

Tips and quirks

  • Photo signs are saved to world NBT, so your hung photos persist across reloads.
  • Photos are auto-compressed to stay under Bluesky's 1 MB upload cap; very large screenshots get downscaled.
  • Entity placement and auto-post use single-player's integrated server; multiplayer support is partial (posting works, but some sign-state sync may be flaky).
  • The mod keeps the full-resolution PNG in screenshots/ even though it uploads JPEG — so you always have a lossless local copy.

Commands

  • /bskycam — open the config screen.

Building from source

JAVA_HOME=/path/to/jdk-25 ./gradlew build

Output at build/libs/bskycam-1.0.0.jar.

License

CC0-1.0.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors