Skip to content

Configuration

Mosaikin's configuration file is located at plugins/Mosaikin/config.yml. Edit this file and run /mosaikin reload to apply most changes without restarting the server.


metrics

yaml
metrics:
  enabled: true
KeyDefaultDescription
enabledtrueSend anonymous usage statistics to bStats. No personally identifiable information is collected. Set to false to opt out.

mineskin

yaml
mineskin:
  apiKey: ""
KeyDefaultDescription
apiKey""Your MineSkin API key. Get one at account.mineskin.org/keys. Can also be set at runtime with /mosaikin apikey <key>.

display

Controls how wall entities are rendered in the world.

yaml
display:
  defaultViewRangeBlocks: 128
  interpolationTicksOnRescale: 5
  interpolationTicksOnPlayback: 0
KeyDefaultDescription
defaultViewRangeBlocks128Distance in blocks at which clients render wall entities. Increase for walls that need to be visible from further away.
interpolationTicksOnRescale5Number of ticks over which the smooth transition animation runs when a wall is moved, rotated, or rescaled at runtime.
interpolationTicksOnPlayback0Ticks of smooth transition between animation frames during playback. Keep this at 0 — non-zero values cause visible texture smearing between frames.

playback

Controls animation playback behavior.

yaml
playback:
  defaultFps: 12
  maxFps: 20
  pauseWhenNoNearbyPlayers: true
  proximityDistanceBlocks: 128
  proximityCheckIntervalTicks: 20
KeyDefaultDescription
defaultFps12Fallback FPS used when a source GIF has missing or unreliable frame delay data.
maxFps20Maximum playback frame rate. Minecraft's server tick rate caps effective rendering at 20 FPS, so higher values have no effect.
pauseWhenNoNearbyPlayerstrueWhen enabled, animation ticks are skipped for walls with no players within proximityDistanceBlocks. Reduces CPU load for walls that nobody is watching.
proximityDistanceBlocks128Radius for the "any player nearby" check. Should match display.defaultViewRangeBlocks so walls never freeze while still visible to someone.
proximityCheckIntervalTicks20How often (in server ticks) the nearby-player check runs. 20 = once per second. Lower values react faster to players approaching/leaving; higher values are cheaper.

limits

Guards against accidentally creating oversized walls or downloading excessively large files.

yaml
limits:
  maxCellsPerWall: 10000
  defaultMaxAxisCells: 64
  maxSourceBytes: 50000000
KeyDefaultDescription
maxCellsPerWall10000Warn when a wall's total grid cell count exceeds this value. High entity counts can exceed Minecraft's per-player entity cap. 1 cell = 1 head entity in the worst case (before merging/dedup).
defaultMaxAxisCells64Default cap on the longest wall axis, in grid cells (1 cell = 8 pixels). Source images larger than this are proportionally downscaled before processing. 0 disables the default cap. Can be overridden per-wall with /mosaikin <name> maxsize.
maxSourceBytes50000000Maximum size of a source image or archive download in bytes (default: 50 MB). Converter-exported ZIP archives for long animations may be larger — increase this if you plan to import them.

cache

Controls how processed image data is stored on disk.

yaml
cache:
  directory: cache
  retainAfterReady: true
KeyDefaultDescription
directorycachePath to the cache directory, relative to plugins/Mosaikin/.
retainAfterReadytrueKeep cached frames and packed head data after a wall reaches READY status. Useful if you need to regenerate later. Set to false to save disk space.

walls

Controls wall data storage and restart behavior.

yaml
walls:
  directory: walls
  autoResumeOnStart: true
  despawnOnShutdown: false
  respawnOnStart: true
KeyDefaultDescription
directorywallsPath to the wall data directory, relative to plugins/Mosaikin/.
autoResumeOnStarttrueResume any in-progress generation jobs when the plugin loads. Useful after an unexpected server shutdown mid-generation.
despawnOnShutdownfalseRemove all wall entities when the plugin unloads. If false, Paper preserves the entities across restarts and respawnOnStart reconnects them. Set to true if you prefer a clean slate on every load.
respawnOnStarttrueOn plugin load, reuse stored entity UUIDs if the entities still exist in the world; respawn fresh entities for any that are missing. This is the main mechanism that keeps walls visible across restarts.

walls.regionMerge

Advanced optimization that automatically merges large uniform areas of a wall into single, larger entities. See How It Works for a detailed explanation.

yaml
walls:
  regionMerge:
    enabled: true
    maxSize: 8
    similarityThreshold: 12
    coverageThreshold: 1.0
    minMergeRunFrames: 12
    alphaTolerance: 16
    rectangular: true
KeyDefaultDescription
enabledtrueEnable or disable region merging entirely.
maxSize8Largest region size to consider, in grid cells. Must be a power of 2: 1, 2, 4, or 8. Setting 1 disables merging.
similarityThreshold12Maximum RGB color distance (0–255) between a pixel and its region's average color for the pixel to count as "similar". Higher values allow more aggressive merging at the cost of detail. The default of 12 preserves most visible gradients.
coverageThreshold1.0Fraction of pixels in a region that must survive downsampling within the similarity threshold. 1.0 requires all pixels to match (pixel-perfect). Lower values allow some blurring; 0.95 tolerates 5% outliers.
minMergeRunFrames12For animated walls: minimum number of consecutive frames a region must stay uniform before it's worth merging. Shorter uniform runs fall back to per-cell entities. Default is approximately 1 second at the default FPS.
alphaTolerance16Maximum allowed transparency variation (0–255) across a region before it is rejected. Prevents visible fringing when downsampling near transparency edges.
rectangulartrueAllow non-square merges (2×4, 4×2, etc.). Disable this for a strict pixel-grid look, at the cost of fewer merges on non-square uniform areas.