Emage icon

Emage -----

Emage is a plugin that allows you to display images from the web onto item frames.



Emage 1.1.1

Emage 1.1.1
Major Release - Custom Color Engine, GIF Caching & Stability Overhaul

This release introduces a completely custom color matching system, GIF processing cache, improved stability, and a complete code reorganization for better maintainability.
⚠️ Breaking Changes
  • Maximum GIF grid size reduced from unlimited to 4x4
  • Maximum static image grid size set to 10x10
  • Minimum frame delay increased to 50ms (20 FPS max)
New Features

Custom Color System
  • Replaced Bukkit's MapPalette with custom EmageColors class
  • Perceptually-weighted color matching (green-biased for human vision)
  • Pre-computed 262,144 entry color cache for instant lookups
  • Full Minecraft 1.17+ palette with all 248 map colors
  • Fixed dark colors appearing as yellow/banana or transparent
GIF Caching System
  • Processed GIFs are cached to avoid reprocessing
  • Cache key based on URL + grid size + quality
  • Maximum 20 entries or 100MB memory
  • Auto-expires after 30 minutes of no use
  • LRU (Least Recently Used) eviction when full
  • Second use of same GIF is instant
New Commands
  • /emage cache - View GIF cache statistics (hit rate, memory, count)
  • /emage clearcache - Clear all cached GIF data
New Flags
  • --nocache / --nc / --fresh - Force reprocess GIF, ignore cache
Grid Size Limits
  • Static Images: Maximum 10x10 (100 maps) - Any size recommended
  • Animated GIFs: Maximum 4x4 (16 maps) - 2x2 or smaller recommended
User Warnings
  • Warning displayed for GIF grids of 3x3 or larger
  • Error displayed when exceeding maximum grid sizes
  • Help text updated with limits and recommendations
Performance Improvements

Lag Fixes
  • Fixed player timeout issues with large GIF grids
  • Fixed 40%+ CPU usage spikes during GIF playback
  • Removed aggressive parallel processing that flooded network
  • Single-threaded processing prevents system overload
Animation System
  • Animation tick runs every 2 ticks (100ms) instead of every tick
  • Only sends map updates when frames actually change
  • All maps in sync group update together efficiently
  • needsRender flag prevents redundant canvas updates
  • Animation starts only after all maps are applied
Memory Management
  • Sequential frame processing reduces memory usage
  • Reusable pixel buffers across frames
  • Frame references cleared immediately after processing
  • Efficient buffer reuse throughout processing pipeline
Processing
  • Proper frame disposal handling (restoreToPrevious, restoreToBackgroundColor)
  • Correct metadata extraction for delays and positions
  • Better handling of 0-delay frames (defaults to 100ms)
Bug Fixes

Color Issues
  • Fixed dark colors appearing as banana/yellow color
  • Fixed very dark areas appearing as transparent
  • Fixed COLOR_BLACK palette entries being skipped incorrectly
GIF Playback
  • Fixed GIFs running at 5 FPS instead of correct speed
  • Fixed frame skipping in first few seconds of playback
  • Fixed maps showing different frames (desync issues)
  • Fixed animation starting before all maps were ready
Stability
  • Fixed player timeout issues with large GIF grids
  • Fixed CPU spikes during GIF playback
  • Fixed memory leaks from unreleased frame data
  • Fixed network flooding from excessive map updates
Code Reorganization

New Project Structure

├── EmagePlugin.java
├── cache/
│ └── GifCache.java
├── command/
│ └── EmageCommand.java
├── config/
│ └── EmageConfig.java
├── manager/
│ └── EmageManager.java
├── processing/
│ ├── EmageColors.java
│ ├── EmageCompression.java
│ └── EmageCore.java
├── render/
│ ├── EmageRenderer.java
│ └── GifRenderer.java
└── util/
└── UpdateChecker.java[/CODE]
----------, Dec 4, 2025
Resource Information
Author:
----------
Total Downloads: 212
First Release: Nov 27, 2025
Last Update: Jun 14, 2026
Category: ---------------
All-Time Rating:
2 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings