Custom internet images in item frames with automatic grid sizing, high-quality rendering, persistence, and anti-dup protections.
Youtube: https://youtu.be/ugDvkMoEF-0?si=oQdBODK7AI3Ired-
- Load images from URLs (Instagram, Discord CDN, Telegram, Imgur, ImgBB, any direct link)
- Auto grid sizing by aspect ratio (e.g., 1:1 → 3x3, 16:9 → 4x2, 4:3 → 4x3; manual 3x2 / 5x5 also supported)
- Rectangular grids with placement validation and chunk-load restoration (tile metadata stored)
- High-quality pipeline: multi-step downscale, sharpening, Floyd–Steinberg dithering, palette mapping to Minecraft maps
- Rotate with right-click; delete with left-click (clears group, keeps main frame)
- Anti-dup: auto-created frames do not drop; only one frame drops per grid
- Persistence across restarts (image ID + grid metadata stored in frames)
- Asynchronous downloads (non-blocking for the server)
- Java 21+
- Paper 1.21.10
- Maven (for building)
- Build or use the provided JAR
mvn clean packageJAR: target/ArtChanger-1.0.0.jar
-
Drop into
plugins/on your Paper server -
Restart the server (recommended) or
/reload confirm
/artchanger set <url> [size]sizeformats:3(square),3x2(rectangular). If omitted → auto-sized by aspect ratio.
/artchanger help— show help
- Run
/artchanger set <url> [size] - Right-click an item frame to place the image
- Right-click again to rotate
- Left-click to remove the picture (main frame stays; grid auto-frames are removed without drops)
- Auto: aspect-ratio based (1:1→3x3, 16:9→4x2, 4:3→4x3, 3:2→3x2, 2:3→2x3, 9:16→2x4, panorama>2.5→5x2)
- Manual:
/artchanger set <url> 4x3or/artchanger set <url> 5 - Max recommended grid: 10x10
- Multi-step downscale for large images → avoids blur
- Bicubic interpolation + render quality hints
- Sharpen (configurable strength in code, default 0.3)
- Floyd–Steinberg dithering to official Minecraft map palette
- Each frame stores: image_id, group_id, grid_width, grid_height, tile_x, tile_y, auto_created
- On chunk load, the correct tile of the original image is restored (no “9 tiny copies” issue)
- Auto-created frames: no item drops
- Main frame: drops only the frame (map cleared first)
- Destroying any frame in a grid removes the whole grid safely
- Formats: jpg/jpeg, png, webp, bmp, gif, tiff
- Sources handled: instagram.com, cdn.discordapp.com, telegram/t.me, imgbb.com (/download), imgur.com (auto .png), plus any direct link
- Invalid URL → ensure http/https and a reachable link
- Image not loading → check server internet access; try another link
- After restart tiles look wrong → ensure you use the latest build (tile metadata now stored)
- Frames duping → fixed by anti-dup logic (only one frame drops per grid)
ArtChanger/
├── pom.xml
└── src/main/java/com/artchanger/
├── ArtChangerPlugin.java # Main plugin
├── ArtCommandExecutor.java # /artchanger commands
├── PaintingListener.java # frame interaction, grids, anti-dup
├── ImageDownloader.java # download + scaling
├── ImageStorageManager.java # persistence metadata
├── WorldLoadListener.java # chunk-load restoration
├── MinecraftColorPalette.java # dithering + palette mapping
└── CustomMapRenderer.java # map rendering
- Created by bdiev_
- Open source; use and modify freely
- 1.0.0 — December 2025