Custom Images+ | GUI| Discord URLs | Multilang | WorldGuard | Group/Rank Limits icon

Custom Images+ | GUI| Discord URLs | Multilang | WorldGuard | Group/Rank Limits -----

Place custom images on walls, floors & ceilings in your server from any URL/Discord. Easy to use



CUSTOM IMAGES+ v1.2 — UPDATE POST FOR SPIGOTMC
✦━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━✦
New features

Audit log — plugins/Images/images.log
Every image placement and removal is logged with full context. Plain-text, grep-friendly, append-only.

Code (Text):

[2026-04-14 16:25:03] PLACE player=Steve uuid=... world=world x=100 y=64 z=200 direction=NORTH player_x=99.50 player_y=64.00 player_z=200.30 source=URL name=foo.png url=https://cdn.discordapp.com/... scale=1.00
[2026-04-14 16:30:15] REMOVE player=Steve uuid=... method=COMMAND_DELETE confidence=EXACT world=world x=100 y=64 z=200 image_name=foo.png creator=OtherPlayer
 
  • Toggle with logging.enabled: true in config (auto-added on first run)
  • Tracks confidence levels: EXACT (single click) vs PROBABLE (area delete)
  • Thread-safe writes, one event per line
  • Great for: anti-grief investigations, staff activity audits, content moderation

Click-to-inspect — /imagen quien / /images who
Run the command, click any image, see a full info panel:

Code (Text):

--- Image Info ---
 Name: foo.png
 Placed by: Steve
 UUID: 1b4bb76f-1bd9-45f1-9d08-f017a1c14b08
 Date: 2026-04-14 16:25:03
 World: world
 Coordinates: 100, 64, 200
 Direction: NORTH
 Source: URL
 URL: https://cdn.discordapp.com/...
 Scale: 1.00x
----------------------
 
Permission: images.command.who (default op). Aliases: quien, info.

DB-backed metadata per image
Every image now stores its own placedAt, source ( URL/ SERVER_FILE), full URL, and scale directly in the plugin database. No schema change — backward-compatible with pre-v1.2 images (handled via EOFException in the Serializable format). /images who reads from the DB first (O(1)), only falls back to the log for older images.

✦━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━✦

"Just works" defaults (for new installs)

If you were about to download this plugin for the first time, v1.2 makes the first-run experience painless:

  • place-mode: OP by default — the server owner can place immediately without any LP configuration
  • Command permissions with default: true for read-only / basic actions (manage, list, create, delete) — non-ops see clean "can't place" messages instead of "unknown command"
  • Destructive/staff commands still default: op (delete.near, placed, who, import, transfer, reload)
  • Generic example groups in config instead of random server-specific names
  • region-restricted: false by default — no more "nobody can place anywhere" gotcha on fresh installs

✦━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━✦

Fixes & improvements

  • Lang auto-merge — when a new version adds new message keys, they get merged into your existing lang/*.yml files automatically. No more <placeholder.key> appearing on screen after an update
  • images.command.placed is now its own permission (was sharing images.command.list in v1.1). Staff audit tools can now be granted separately from file listing
  • Fixed: NoSuchMethodError: CustomImage.getLocation() that happened on /images placed when the JAR was built with an incorrect merge process. v1.2 ships with a correct merge (docs included for anyone building from source)
  • Config migration cleaned up to use generic groups (admin, moderator, builder, vip) instead of server-specific names

✦━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━✦

⬆️ Upgrading from v1.1

  1. Stop your server
  2. Replace the old JAR with ImagesPlus-1.2.jar
  3. Start the server — config gets logging.enabled: true added automatically, lang files get new who.* keys merged automatically
  4. Existing images are fully compatible. They'll show up fine, but /images who will display "Before logging (v1.2)" as the date since the metadata wasn't captured at placement time. All new placements will have full info.

Breaking change: if you had non-OP staff using /images placed via the shared images.command.list permission, you'll need to grant them images.command.placed too. OPs are unaffected.

✦━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━✦

Downloads

Tested on Paper 1.21.11. Compatible with 1.8 → 1.21.11, 26.1, 26.2. Thank you to everyone downloading and testing!

───────────────────────────────────────────────────────────────

SHORT CHANGELOG (for the version description field, <500 chars):
───────────────────────────────────────────────────────────────

v1.2 — Major update:

NEW:
• /images who /imagen quien — click-to-inspect any image (creator, date, URL, scale)
• images.log — detailed audit log of every PLACE and REMOVE
• DB metadata per image (placedAt, source, URL, scale) — backward compatible

IMPROVED:
• Works out of the box (place-mode: OP + true defaults for basic commands)
• Auto-merges new lang keys on update (no more <placeholder> messages)
• images.command.placed is now its own permission (was sharing with .list)
• Generic example groups in config (no more server-specific names)

FIXED:
• NoSuchMethodError CustomImage.getLocation() on /images placed
----------, Apr 14, 2026
Resource Information
Author:
----------
Total Downloads: 181
First Release: Apr 13, 2026
Last Update: Jun 19, 2026
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings