A preview that follows your look
Look at a wall and the picture follows: sneak + scroll resizes it, one click hangs it. Walls, floors and ceilings; undo and redo.
Free
Pictures, GIFs, WebPs and clickable boards on your walls, imported safely and hung by looking at the wall.
Free In development Gameplay and content
Look at a wall and the picture follows: sneak + scroll resizes it, one click hangs it. Walls, floors and ceilings; undo and redo.
GIFs, APNGs and WebPs send only the rectangles that change, with bandwidth caps per player and per server, and pause when nobody watches.
https only, private and local addresses refused, size, pixel, frame and time limits checked before decoding.
Scenes, buttons with hover, actions, clocks, countdowns, leaderboards with heads and QR codes, built with an in-world editor.
Live preview, shareable codes, loom steps in the client's language, and lettering made of banners.
ImageOnMap (the maps already on walls keep working), Custom Images and Yamipa, with a dry run before anything is touched.
| Command | Description | Aliases | Permission |
|---|---|---|---|
| /banner | The banner designer, banner codes and banner lettering (alias /shadowbanner) | /shadowbanner | shadowimages.banner |
| /simg | Pictures, GIFs and boards on walls: panel, import, placing, moderation (alias /shadowimages, /img, /images) | /shadowimages /img /images | shadowimages.import.url |
| Command | What it does | Permission |
|---|---|---|
| /simg | The panel (player) or the help (console) | shadowimages.gui |
| /simg help [page] | The list of commands | — |
| /simg about | Version, active transport, images, placements, boards, integrations | — |
| /simg import <name> <url|file:path> [--size WxH] [--fit ...] [--dither ...] [--anchor ...] [--crop ...] [--adjust l,c,s,g] [--allow-duplicate] | Imports and converts, on a separate thread, with the progress in the action bar. file: reads from plugins/ShadowImages/images/ | shadowimages.import.url |
| /simg library [filter] | The library (a screen; in the console, the list) | shadowimages.gui |
| /simg info <image|#id> | Who imported it, from where, size, frames, state, where it hangs | shadowimages.gui |
| /simg rename <image> <new> | Renames (the placements follow) | shadowimages.manage |
| /simg delete <image> [--yes] | Lists where it hangs and asks for confirmation with the buttons; then removes everything. --yes skips the question (scripts, testing) | shadowimages.manage |
| /simg refresh <image> [new-link] | Downloads and converts again; the walls update by themselves | shadowimages.manage |
| /simg edit <image> | The image card: size, fit, dithering, crop, adjustments, with the preview in front of you | shadowimages.manage |
| /simg preview <image> [WxH] | The image in front of you for a few seconds (only you see it) | shadowimages.gui |
| /simg place <image> [WxH] [options] | The preview follows your look: right click or [ CONFIRM ] to hang it; sneak + scroll changes the size; a bar with [-] [+] [FIT] [ROTATE] [ANCHOR] | shadowimages.place |
| /simg place <image> [WxH] --at <world> <x> <y> <z> <face> [rotation] | Hangs it without a preview (console, scripts, testing). x y z is the block for the top-left frame, the face is where the image looks; ~ means your position (and in place of the world, your world). --timeline restarts an animation from the beginning for each viewer | shadowimages.place |
| /simg wand | The wand: left and right click on two corners of a wall | shadowimages.place |
| /simg fit <image> | Hangs the image exactly over the wand's area (or over a flat ShadowEdit selection) | shadowimages.place |
| /simg give <image> [player] [WxH] | A "picture" item: right click on a wall to hang it | shadowimages.give |
| /simg remove | Arms the tool: the next click on an image removes it, after the confirmation | shadowimages.remove.own |
| /simg remove near <radius> [--yes] | All the ones within the radius that you can remove, with the list and a confirmation (--yes skips it) | shadowimages.remove.own |
| /simg remove #id [--yes] | That exact one (for the console and the near buttons) | shadowimages.remove.own |
| /simg move | Arms the tool: the clicked image goes back to preview and stays where it is until you confirm the new spot | shadowimages.remove.own |
| /simg undo | Undoes the last placement, removal or banner lettering | shadowimages.place |
| /simg redo | Redoes what you undid | shadowimages.place |
| /simg near [radius] | The placements around you, clickable: [INFO] [TP] [REMOVE] | shadowimages.gui |
| /simg tp <#id> | In front of a placement | shadowimages.tp |
| /simg anim <pause|resume|restart> <#id> | Pauses, resumes or restarts an animation | shadowimages.manage |
| /simg slideshow create <id> <WxH> [--at ...] | A new slideshow (a board with the slides element), then you pick its wall | shadowimages.board.create |
| /simg slideshow add <id> <image> [seconds] | Adds a slide | shadowimages.board.create |
| /simg slideshow remove <id> <n> | Removes slide number n | shadowimages.board.create |
| /simg slideshow list <id> | The slides | shadowimages.board.create |
| /simg board create <id> <WxH> [--at ...] | A new board from a template, in boards/<id>.yml; then the preview to hang it | shadowimages.board.create |
| /simg board place <id> [--at ...] | Hangs a board that already exists in the files (for example the sample one) | shadowimages.board.create |
| /simg board edit <id> | The in-world editor: a private draft, the board wand, screens | shadowimages.board.edit |
| /simg board publish [id] [--force] | Publishes the draft (everybody sees it) and rewrites the file keeping the comments; if the file changed on disk it asks with the buttons | shadowimages.board.edit |
| /simg board discard [id] | Throws the draft away | shadowimages.board.edit |
| /simg board list | The boards with the scene showing now, with [ EDIT ] and [ PLACE ] | shadowimages.board.edit |
| /simg board scene <id> <scene> [player] | Changes the scene (for everyone, or for that player on per-player boards) | shadowimages.board.edit |
| /simg board reload <id> | Reloads the file and reports the problems | shadowimages.board.edit |
| /simg board delete <id> [--yes] | Takes the board off the wall and moves the file to backup/boards/, with a confirmation (--yes skips it) | shadowimages.board.delete |
| /simg pending | The images waiting for approval (a screen; in the console, the list) | shadowimages.moderate |
| /simg approve <image> | Approves; whoever imported it is told | shadowimages.moderate |
| /simg reject <image> [reason] | Rejects with the reason; its placements go away | shadowimages.moderate |
| /simg audit [player] | The audit log: imports, placements, removals, approvals, with who and when | shadowimages.moderate |
| /simg limits [player] | Maps on walls and the limit (another player's needs .moderate) | shadowimages.gui |
| /simg migrate <imageonmap|images|yamipa> [--dry-run] | Imports from ImageOnMap (adopting the IDs of the maps already hanging), Custom Images and Yamipa. --dry-run writes migrate-report-<plugin>.txt without touching anything | shadowimages.migrate |
| /simg pack build | The optional HD layer: reads plugins/ShadowImages/hd/ (each file carries the name of a library picture), writes pack/ShadowImages-hd.zip and delivers it (inside ShadowCustomizerModels, from hd.resource-pack-url, or just the file). Needs hd.enabled: true | shadowimages.pack |
| /simg pack status | Layer on or off, delivery, file and SHA-1, pictures in the pack (current or stale), players who loaded it | shadowimages.pack |
| /simg pack add <image> | Copies the source of a library picture into hd/, ready for the next pack build | shadowimages.pack |
| /simg pack remove <image> | Removes the picture's file from hd/ (it leaves the pack at the next pack build) | shadowimages.pack |
| /simg cache <stats|clear> | How much the renders take in memory and on disk; clear removes the ones nobody uses (with a confirmation) | shadowimages.admin |
| /simg debug look | In the action bar: the board, the pixel and the zone under the crosshair (again to switch off) | shadowimages.debug |
| /simg debug click <board> <x> <y> [player] [left|right|shift-left|shift-right] | A simulated click on a pixel, going through the whole path of a real click (permissions, cooldowns, events, actions) | shadowimages.debug |
| /simg debug stats [player] | Transport, maps sent, bandwidth, renders, animations, IDs, the player's queue | shadowimages.debug |
| /simg reload | Reloads config, styles, banners, boards, languages and screens | shadowimages.reload |
| Command | What it does | Permission |
|---|---|---|
| /banner | The designer: live preview, colours, registry patterns (datapack ones too), layers, save, take, code | shadowimages.banner |
| /banner code | The code of the banner in your hand (b1:red|stripe_top:white), with [ COPY ] and the loom steps in the client's language | shadowimages.banner |
| /banner give <code|saved design> [player] [shield] | A ready banner (or shield) | shadowimages.banner.give |
| /banner text <text> [colour] [background] | Banner lettering on the wall you are looking at: first a preview only you see, then the confirmation; /simg undo removes it | shadowimages.banner.text |
| /banner wall <WxH> <code> [code...] | A wall of banners from codes, with a preview and a confirmation | shadowimages.banner.text |
| /banner help | The help | shadowimages.banner |
| Node | What it grants | By default |
|---|---|---|
| shadowimages.admin · 27 children | Everything in ShadowImages | Operators |
| shadowimages.gui | The panel, the library, previews, nearby placements and limits | Operators |
| shadowimages.place | Place images: preview, wand, fit, undo and redo | Operators |
| shadowimages.remove.own | Remove and move your own images | Operators |
| shadowimages.import.file | Import images from the plugin's images folder | Operators |
| shadowimages.import.url | Import images from a link | Operators |
| shadowimages.manage | Rename, delete, refresh and edit any image; animations | Operators |
| shadowimages.give | Give picture items | Operators |
| shadowimages.tp | Teleport to a placement | Operators |
| shadowimages.remove.any | Remove and move anybody's images | Operators |
| shadowimages.board.create | Create and place boards and slideshows | Operators |
| shadowimages.board.edit | Edit boards, publish, change scenes, reload | Operators |
| shadowimages.board.edit.console | Write board actions that run as the console in the editor | Operators |
| shadowimages.board.delete | Delete boards | Operators |
| shadowimages.interact | Click boards | Everyone |
| shadowimages.banner | The banner designer and banner codes | Everyone |
| shadowimages.banner.text | Banner lettering and banner walls | Operators |
| shadowimages.banner.give | Give ready banners, and take them from the designer without materials | Operators |
| shadowimages.moderate | Approve and reject images, read the audit log, see other players' limits | Operators |
| shadowimages.notify.pending | Be told when an image waits for approval | Operators |
| shadowimages.migrate | Import from ImageOnMap, Custom Images and Yamipa | Operators |
| shadowimages.pack | Build and check the HD layer's resource pack (/simg pack) | Operators |
| shadowimages.debug | The debug commands | Operators |
| shadowimages.reload | Reload configuration, styles, boards and languages | Operators |
| shadowimages.bypass.approval | Imports skip the approval queue | Operators |
| shadowimages.bypass.regions | Place images and banners where you could not build | Operators |
| shadowimages.bypass.limits | No map limits, bigger images | Operators |
| shadowimages.bypass.hosts | Import from any public site | Operators |
There are no screenshots yet. When there are they show up here, and in the meantime saying so beats filling the space.
Map art done right: a preview that follows your look and resizes with the scroll wheel, GIFs and WebPs that pause when nobody watches and only send what changes, boards with buttons, scenes and live widgets built in game, a banner designer, and an optional HD layer for players with the resource pack. Free, no mods, no resource pack required.
ShadowImages covers what you do today with Custom Images, ImageOnMap, ImageFrame, InteractiveBoard, Yamipa, BannerMaker — in one jar, with no dependencies to install first.
plugins folder of your Paper server.None of these has to be installed, except the ones marked required: when it is there, ShadowImages uses it; when it is missing, it works all the same.