https://github.com/flo-bit/bskycam
https://github.com/flo-bit/bskycam
Last synced: 13 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/flo-bit/bskycam
- Owner: flo-bit
- License: cc0-1.0
- Created: 2026-04-17T08:48:08.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-17T08:48:10.000Z (about 2 months ago)
- Last Synced: 2026-04-29T21:42:42.420Z (about 2 months ago)
- Language: Java
- Size: 160 KB
- Stars: 4
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](https://modrinth.com/mod/fabric-api))
- Java 25 (runtime — the Modrinth launcher ships this)
- A [Bluesky](https://bsky.app) 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
`/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
`/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 `/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
```bash
JAVA_HOME=/path/to/jdk-25 ./gradlew build
```
Output at `build/libs/bskycam-1.0.0.jar`.
## License
CC0-1.0.