diff --git a/README.md b/README.md new file mode 100644 index 0000000..be67f2c --- /dev/null +++ b/README.md @@ -0,0 +1,145 @@ +# 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. diff --git a/bskycam-1.0.0.jar b/bskycam-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..c200256beba69def6e9b165895d4d6cd7b4ae072 GIT binary patch literal 82773 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 z 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 mc.execute(() -> { if (err != null) { Throwable cause = err.getCause() != null ? err.getCause() : err; @@ -173,6 +176,7 @@ public class PhotoSignEditScreen extends Screen { .withStyle(s -> s.withColor(net.minecraft.ChatFormatting.RED))); } } else if (mc.player != null) { + // Fill in the post URL on whichever of the player's held/inventory text sign stacks still carries this text. SignPostHelper.markPostedAndMaybePlace(mc, hand, ModItems.PHOTO_SIGN, finalText, url, targetPos, targetFace, true); net.minecraft.network.chat.MutableComponent link = net.minecraft.network.chat.Component.literal(url) .withStyle(net.minecraft.network.chat.Style.EMPTY diff --git a/src/client/java/com/florian/bskycam/client/SignPostHelper.java b/src/client/java/com/florian/bskycam/client/SignPostHelper.java index f87da4c..ce9968c 100644 --- a/src/client/java/com/florian/bskycam/client/SignPostHelper.java +++ b/src/client/java/com/florian/bskycam/client/SignPostHelper.java @@ -1,35 +1,32 @@ package com.florian.bskycam.client; -import com.florian.bskycam.ModItems; -import com.florian.bskycam.PhotoSignEntity; import com.florian.bskycam.SignData; -import com.florian.bskycam.TextSignEntity; import java.util.UUID; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; public final class SignPostHelper { private SignPostHelper() {} - /** Updates the held stack's NBT to posted state, and optionally places a sign entity at target. */ + /** + * After a successful Bluesky post, mark the held sign item as posted so it + * can later be placed as a world entity via vanilla Item.useOn. + * The item is split off (count=1) if stacked, so we don't stamp a whole pile as posted. + * The targetPos/targetFace parameters are accepted but unused; placement is a + * separate right-click action after posting (keeps item-consumption logic in one place). + */ public static void markPostedAndMaybePlace(Minecraft mc, InteractionHand hand, Item expectedItem, String text, String url, BlockPos targetPos, Direction targetFace, boolean isPhoto) { - com.florian.bskycam.BskyCam.LOGGER.info("SignPostHelper: entering, target={} face={} isPhoto={}", - targetPos, targetFace, isPhoto); MinecraftServer server = mc.getSingleplayerServer(); if (server == null) { - com.florian.bskycam.BskyCam.LOGGER.warn("SignPostHelper: no singleplayer server — cannot place"); - // Multiplayer not supported — best-effort client-side mutation. + // Multiplayer: best-effort client-side mutation. if (mc.player != null) { ItemStack held = mc.player.getItemInHand(hand); if (held.getItem() == expectedItem) { @@ -44,87 +41,29 @@ public final class SignPostHelper { } UUID uuid = mc.player.getUUID(); - ResourceKey dim = mc.level.dimension(); - server.execute(() -> { ServerPlayer sp = server.getPlayerList().getPlayer(uuid); - if (sp == null) { - com.florian.bskycam.BskyCam.LOGGER.warn("SignPostHelper: ServerPlayer not found for uuid {}", uuid); - return; - } + if (sp == null) return; ItemStack serverStack = sp.getItemInHand(hand); - com.florian.bskycam.BskyCam.LOGGER.info("SignPostHelper: server stack = {} x{} (expected {})", - serverStack.getItem(), serverStack.getCount(), expectedItem); - if (serverStack.getItem() != expectedItem) { - com.florian.bskycam.BskyCam.LOGGER.warn("SignPostHelper: item mismatch, aborting"); - return; - } + if (serverStack.getItem() != expectedItem) return; - // Split one off if stacked, so we don't mark the whole pile as posted. - ItemStack postedOne; - boolean split = serverStack.getCount() > 1; - if (split) { - postedOne = serverStack.split(1); + if (serverStack.getCount() > 1) { + // Split one off, mark it posted, give it back — rest of the pile stays unposted. + ItemStack postedOne = serverStack.split(1); + SignData.mutate(postedOne, t -> { + t.putBoolean(SignData.TAG_POSTED, true); + t.putString(SignData.TAG_POST_URL, url); + t.putString(SignData.TAG_TEXT, text); + }); + if (!sp.getInventory().add(postedOne)) sp.drop(postedOne, false); } else { - postedOne = serverStack; - } - - SignData.mutate(postedOne, t -> { - t.putBoolean(SignData.TAG_POSTED, true); - t.putString(SignData.TAG_POST_URL, url); - t.putString(SignData.TAG_TEXT, text); - }); - - boolean placed = false; - if (targetPos != null && targetFace != null) { - ServerLevel lvl = server.getLevel(dim); - if (lvl != null) { - BlockPos signPos = targetPos.relative(targetFace); - com.florian.bskycam.BskyCam.LOGGER.info("SignPostHelper: signPos={} isEmpty={} blockState={}", - signPos, lvl.isEmptyBlock(signPos), lvl.getBlockState(signPos)); - if (lvl.isEmptyBlock(signPos)) { - if (isPhoto) { - PhotoSignEntity e = new PhotoSignEntity(lvl, signPos, targetFace, postedOne); - boolean survives = e.survives(); - com.florian.bskycam.BskyCam.LOGGER.info("SignPostHelper: photo entity survives={}", survives); - if (survives) { - lvl.addFreshEntity(e); - placed = true; - if (sp.getAbilities().instabuild) { - giveOrDrop(sp, postedOne); - } - } - } else { - TextSignEntity e = new TextSignEntity(lvl, signPos, targetFace, postedOne); - boolean survives = e.survives(); - com.florian.bskycam.BskyCam.LOGGER.info("SignPostHelper: text entity survives={}", survives); - if (survives) { - lvl.addFreshEntity(e); - placed = true; - if (sp.getAbilities().instabuild) { - giveOrDrop(sp, postedOne); - } - } - } - } - } + SignData.mutate(serverStack, t -> { + t.putBoolean(SignData.TAG_POSTED, true); + t.putString(SignData.TAG_POST_URL, url); + t.putString(SignData.TAG_TEXT, text); + }); } - - if (!placed) { - com.florian.bskycam.BskyCam.LOGGER.info("SignPostHelper: not placed, giving item back (split={})", split); - if (split) { - giveOrDrop(sp, postedOne); - } - } - sp.inventoryMenu.broadcastChanges(); - com.florian.bskycam.BskyCam.LOGGER.info("SignPostHelper: done, placed={}", placed); }); } - - private static void giveOrDrop(ServerPlayer sp, ItemStack stack) { - if (!sp.getInventory().add(stack)) { - sp.drop(stack, false); - } - } } diff --git a/src/client/java/com/florian/bskycam/client/TextSignEditScreen.java b/src/client/java/com/florian/bskycam/client/TextSignEditScreen.java index 4785fdb..517f0a3 100644 --- a/src/client/java/com/florian/bskycam/client/TextSignEditScreen.java +++ b/src/client/java/com/florian/bskycam/client/TextSignEditScreen.java @@ -79,6 +79,8 @@ public class TextSignEditScreen extends Screen { capturedAt ); + // Eagerly mark posted so the user can place immediately. + SignPostHelper.markPostedAndMaybePlace(mc, hand, ModItems.TEXT_SIGN, text, "", targetPos, targetFace, false); BskyPoster.post(payload, null).whenComplete((url, err) -> mc.execute(() -> { if (err != null) { Throwable cause = err.getCause() != null ? err.getCause() : err; @@ -87,8 +89,6 @@ public class TextSignEditScreen extends Screen { .withStyle(s -> s.withColor(net.minecraft.ChatFormatting.RED))); } } else if (mc.player != null) { - // For text signs, always mint a new "posted" stack (so we don't post an entire stack at once). - // Splitting one off before posting would have been cleaner — for now mutate server stack. SignPostHelper.markPostedAndMaybePlace(mc, hand, ModItems.TEXT_SIGN, text, url, targetPos, targetFace, false); // Also store capturedAt + minecraftData so the sign remembers its context. mc.execute(() -> { diff --git a/src/client/java/com/florian/bskycam/client/entity/BskySignRenderer.java b/src/client/java/com/florian/bskycam/client/entity/BskySignRenderer.java index cf0a895..9b1537f 100644 --- a/src/client/java/com/florian/bskycam/client/entity/BskySignRenderer.java +++ b/src/client/java/com/florian/bskycam/client/entity/BskySignRenderer.java @@ -28,7 +28,7 @@ import net.minecraft.world.item.ItemStack; public class BskySignRenderer extends EntityRenderer { private static final Map TEXTURE_CACHE = new ConcurrentHashMap<>(); - private static final Identifier PAPER_BG = Identifier.fromNamespaceAndPath("bskycam", "item/text_sign"); + private static final Identifier SIGN_BG = Identifier.withDefaultNamespace("textures/block/oak_planks.png"); private final Font font; public BskySignRenderer(EntityRendererProvider.Context ctx) { @@ -39,8 +39,6 @@ public class BskySignRenderer extends EntityRenderer { writeQuad(p, vc, -w, -h, w, h, state.lightCoords); }); } if (hasText) { - pose.pushPose(); - float textY = -photoHalfH - 0.02f + photoYOffset; - if (!state.isPhoto) textY = 0.20f; - pose.translate(0f, textY, 0.03f); - float textScale = 0.008f; - pose.scale(textScale, -textScale, textScale); - - int wrapPx = 100; + float textScale = state.isPhoto ? 0.008f : 0.009f; + int wrapPx = state.isPhoto ? 100 : 90; + int maxLines = state.isPhoto ? 3 : 6; + int textColor = state.isPhoto ? 0xFFFFFFFF : 0xFF1E1007; + List lines = font.split(Component.literal(state.text), wrapPx); - int yy = 0; - int maxLines = state.isPhoto ? 3 : 8; - int shown = 0; - for (FormattedCharSequence line : lines) { - if (shown >= maxLines) break; - float lineWidth = font.width(line); - float x = -lineWidth / 2f; - collector.submitText(pose, x, yy, line, false, Font.DisplayMode.NORMAL, - 0x00000000, 0xFFFFFFFF, 0, state.lightCoords); - yy += 10; - shown++; - } - pose.popPose(); + int totalLines = Math.min(lines.size(), maxLines); + // Total text height in blocks = totalLines * 10 * textScale. + float textBlockHeight = totalLines * 10f * textScale; + // For photo signs: anchor text just below the photo quad. + // For text signs: center text vertically on the plank. + float topY = state.isPhoto ? (-photoHalfH + photoYOffset - 0.02f) : (textBlockHeight / 2f); + + drawTextLayer(pose, collector, lines, maxLines, topY, textScale, textColor, state.lightCoords, 0.02f); + // Mirror pass on the back of the quad so the text reads correctly from either side. + drawTextLayer(pose, collector, lines, maxLines, topY, textScale, textColor, state.lightCoords, -0.02f); } pose.popPose(); super.submit(state, pose, collector, camera); } + private void drawTextLayer(PoseStack pose, SubmitNodeCollector collector, + List lines, int maxLines, + float topY, float textScale, int textColor, int light, float zOffset) { + pose.pushPose(); + pose.translate(0f, topY, zOffset); + if (zOffset < 0f) { + // Flip text to read correctly when viewed from the back face. + pose.mulPose(com.mojang.math.Axis.YP.rotationDegrees(180f)); + } + pose.scale(textScale, -textScale, textScale); + float yy = 0f; + int shown = 0; + for (FormattedCharSequence line : lines) { + if (shown >= maxLines) break; + float lineWidth = font.width(line); + float x = -lineWidth / 2f; + collector.submitText(pose, x, yy, line, false, Font.DisplayMode.POLYGON_OFFSET, + 0x00000000, textColor, 0, light); + yy += 10f; + shown++; + } + pose.popPose(); + } + private static void writeQuad(PoseStack.Pose pose, VertexConsumer vc, float x0, float y0, float x1, float y1, int light) { int color = 0xFFFFFFFF; int overlay = OverlayTexture.NO_OVERLAY; - // Front face (normal +Z, CCW from +Z): shown when viewer is in front of the sign. - vc.addVertex(pose, x0, y0, 0f).setColor(color).setUv(0f, 1f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, 1f); - vc.addVertex(pose, x1, y0, 0f).setColor(color).setUv(1f, 1f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, 1f); - vc.addVertex(pose, x1, y1, 0f).setColor(color).setUv(1f, 0f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, 1f); - vc.addVertex(pose, x0, y1, 0f).setColor(color).setUv(0f, 0f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, 1f); - // Back face (normal -Z, CCW from -Z = reversed winding): ensures visibility regardless of - // which side of the wall the player is on and any cull convention. - vc.addVertex(pose, x0, y0, 0f).setColor(color).setUv(0f, 1f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, -1f); - vc.addVertex(pose, x0, y1, 0f).setColor(color).setUv(0f, 0f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, -1f); - vc.addVertex(pose, x1, y1, 0f).setColor(color).setUv(1f, 0f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, -1f); - vc.addVertex(pose, x1, y0, 0f).setColor(color).setUv(1f, 1f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, -1f); + // UVs: local +X maps to texture right (u=1), local -X to texture left (u=0). + // After the 180° Y-rotation in submit(), what was local +X appears on the viewer's LEFT, + // so swapping u here keeps the image reading correctly from the viewer's perspective. + // Front face (normal +Z). + vc.addVertex(pose, x0, y0, 0f).setColor(color).setUv(1f, 1f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, 1f); + vc.addVertex(pose, x1, y0, 0f).setColor(color).setUv(0f, 1f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, 1f); + vc.addVertex(pose, x1, y1, 0f).setColor(color).setUv(0f, 0f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, 1f); + vc.addVertex(pose, x0, y1, 0f).setColor(color).setUv(1f, 0f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, 1f); + // Back face (normal -Z, reversed winding). + vc.addVertex(pose, x0, y0, 0f).setColor(color).setUv(1f, 1f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, -1f); + vc.addVertex(pose, x0, y1, 0f).setColor(color).setUv(1f, 0f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, -1f); + vc.addVertex(pose, x1, y1, 0f).setColor(color).setUv(0f, 0f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, -1f); + vc.addVertex(pose, x1, y0, 0f).setColor(color).setUv(0f, 1f).setOverlay(overlay).setLight(light).setNormal(pose, 0f, 0f, -1f); } private static Identifier getOrCreateTexture(BskySignRenderState state) { diff --git a/src/main/java/com/florian/bskycam/BskySignEntity.java b/src/main/java/com/florian/bskycam/BskySignEntity.java index 69c17e6..663ff9a 100644 --- a/src/main/java/com/florian/bskycam/BskySignEntity.java +++ b/src/main/java/com/florian/bskycam/BskySignEntity.java @@ -67,9 +67,11 @@ public abstract class BskySignEntity extends BlockAttachedEntity { Direction d = getDirection(); if (d == null) d = Direction.SOUTH; - // Visual offset toward the wall. Must be < (0.5 - thick) to keep AABB inside the air block. - double thick = 0.0625; - double visualOffset = 0.5 - thick - 0.01; // stay strictly inside the air block + // Keep the AABB thin and nudge the sign almost flush against the wall. + // Visual offset toward wall + AABB half-thickness must stay < 0.5 so we + // don't collide with the wall block (survives() would fail). + double thick = 0.02; + double visualOffset = 0.5 - thick - 0.005; // ≈0.475 — sign face ~0.005 blocks from wall double cx = pos.getX() + 0.5 - d.getStepX() * visualOffset; double cy = pos.getY() + 0.5; double cz = pos.getZ() + 0.5 - d.getStepZ() * visualOffset; diff --git a/src/main/resources/assets/bskycam/lang/en_us.json b/src/main/resources/assets/bskycam/lang/en_us.json index a1ee5f7..4be60d2 100644 --- a/src/main/resources/assets/bskycam/lang/en_us.json +++ b/src/main/resources/assets/bskycam/lang/en_us.json @@ -3,7 +3,7 @@ "item.bskycam.photo_sign": "Photo Sign", "item.bskycam.photo_sign.posted": "Photo Sign (Posted)", "item.bskycam.photo_sign.unposted_hint": "Right-click to write caption and post", - "item.bskycam.photo_sign.posted_hint": "Already posted to Bluesky", + "item.bskycam.photo_sign.posted_hint": "Right-click a wall to hang it up", "item.bskycam.text_sign": "Text Sign", "item.bskycam.text_sign.hint": "Right-click to write, right-click a wall to place", "item.bskycam.text_sign.posted_hint": "Already posted — right-click a wall to display",