Repository navigation
Releases: FloG99/MapGUI
Release list
v3.1.0
Paper 26.3 is supported alongside 26.1 and 26.2.
- Paper 26.3. It needed no source change beyond the package name, and
api-versionstays at 26.1. - A zombie reaches forward on 26.3 too. 26.3 moved its arm pose out of
setupAnimintosetupAttackAnimation, and the camera handed that the parent model's render state, so every zombie, drowned, zombie villager and zombified piglin stood with its arms down. The state now comes from the model's own type parameter. Every 26.2 mesh comes out exactly as before.
Everything in this release, in full:
CHANGELOG.md
v3.0.0
Paper 26.1 is supported alongside 26.2. MapGUI raises Bukkit events, which it never did before, so another plugin can watch a click or refuse a wall without cooperation from whoever put it there. Dithering became a choice rather than one fixed rule, and the choice belongs to whatever knows the answer - a fill, a decoder, a plugin, or the server owner. A plugin can play a url it was handed - a file, a stream, a YouTube or Twitch page - rather than only one an admin named in config.yml. And a screen can decline a click, so a wall can be a picture one moment and a menu the next. Video holds still through the noise that used to make it shimmer, several walls can share one picture and one send, and which palette entry a colour becomes is a choice.
Breaking, all of it small: MapGui.open(player, screen, HandOptions) is gone, replaced by an options record. Screen.theme(), font(), background() and fps() are final, with defaultTheme() and its siblings as the override points. Justify.SPACE_AROUND now means what it means everywhere else. Fill#uniform() is gone. GifFrames.read takes a Quantizer where it took a Palette. MapGui#open and WallDisplay.Builder#open return null when a listener cancels. MapTransport#framedMaps takes a FrameStyle, which matters only to a plugin implementing the transport itself. video.ffmpeg and video.streams are now media.ffmpeg and media.streams, migrated on load rather than silently dropped.
Everything in this release, in full:
CHANGELOG.md
What's Changed
- Let a screen decline a click by @FloG99 in #19
- Feat/paper 26.1 by @FloG99 in #20
- Feat/layout constraints by @FloG99 in #21
- Feat/quantization by @FloG99 in #22
- Feat/events api by @FloG99 in #23
- Feat/media sources by @FloG99 in #24
- Write one Unreleased section for the whole batch by @FloG99 in #26
Full Changelog: v2.0.0...v3.0.0
v2.0.0
A camera can now be put anywhere in the world rather than only in a player's hand.
Also: a wall stops sending frames to anyone who is not looking at it, a screen can read a held right-click as a old rather than as a stream of clicks, dark places in a capture are drawn lighter, and the map pointer now has double the accuracy.
Breaking: Marker#x and Marker#y are double where they were int. That is the only break, and the reason this is 2.0.0 rather than 1.2.0. A plugin that does not touch Marker needs no change.
Everything in this release, in full:
CHANGELOG.md
v1.1.1
A capture now draws an item as the model its custom_model_data names.
mapgui-api is unchanged from 1.1.0 — swapping the plugin jar on the server is enough.
MapCamera 1.0.0 needs this version.
MapGUI-1.1.1.jar is all a server needs. The api jars are for dragging into an IDE, the
examples jar is optional.
v1.1.0
The camera release.
A capture is the world from a player's eye drawn onto a map, server-side: real block
textures, transparency through glass and water, biome tints read from Minecraft's own colormaps, a sky with the
sun, moon, stars and clouds where they actually are, and the mobs and players in view wearing their own skins.
Still no resource pack and no client mod, because it is still a map item.
Paper 26.2 and Java 25, unchanged from 1.0.0.
The camera
camera().capture(player, size, onShot)for a still, andcamera().feed(player, options, onFrame)for a
live view with the tick loop written for you: one capture in flight, frames only as fast as the server's
budget allows, and none at all while the screen is put away.- Entities drawn the way their own renderers draw them - mob layers, armour and trims, held and dropped items,
illager poses, a fox's mouth, a raid captain's banner, a squid pointing where it really swims, and the
name-tag jokes. - The blocks the client builds in code: chests, shulker boxes, signs and what is written on them, item frames
and the maps hanging in them, banners with their patterns, decorated pots, heads, shelves, minecarts, boats
and paintings. - Fluids stand at the depth their level says, with the flowing texture turned downhill.
- Resource packs: whatever is in
plugins/MapGUI/assets/, the pack the server already hands its players, and
one a plugin ships inside its own jar throughCamera#useResourcePack. - An admin owns the cost. A tick budget and an fps ceiling divide between everyone with a view open, and
/mapgui camera performancenames the plugin spending it.
Also new
- Printing to real maps.
MapGui.printer()puts pixels or a whole capture onto genuine map items, cut into
a grid in reading order. Locked and saved by the world, so they survive a restart and survive MapGUI being
uninstalled. - More ways to carry a GUI. A popup, a real item, a pinned hotbar slot or the offhand.
HandOptions#mapId
pins the map id so a resource pack can recognise the item, Q closes a pinned map, and a map in the offhand no
longer takes over the player's aim. - Widgets:
Ui.Image,Ui.Gap,Spinner(),Screen#keepDrawing(),onSwapHands(),onSneak(boolean). - Drawing: shapes combine with
intersectionWith,combinedWith,withoutandholeIn,
Painter.pushClip(Shape)clips to any of them, and a shape fills a row at a time rather than a pixel at a time. - Walls send less: a changed rectangle per map instead of the whole wall, every map in a frame in one packet
bundle so a wall applies without tearing, andprerenderfor a repeating animation. MapImagerenders a node tree to an image with no server anywhere, through the real layout engine, font
and palette.
Heads-up for plugin developers
mapgui-layoutis no longer published on its own. Its classes ship insidemapgui-api, so one coordinate is
everything - drop the second dependency if you had it.- The examples are one jar now,
MapGUI-examples-1.1.0.jar, in place of a zip that unpacked into six plugins.
Installing
MapGUI-1.1.0.jar into plugins/, then restart. MapGUI-examples-1.1.0.jar beside it adds every demo and the
sample video, reached through /mapgui hand open and /mapgui wall place; deleting it is the whole off switch.
Building against it
compileOnly("io.github.flog99:mapgui-api:1.1.0")MapGUI v1.0.0
Interactive GUIs drawn onto Minecraft maps, with a real auto-layout engine behind
them. Move the mouse to move your cursor, right-click to press things, scroll to
scroll.
Paper 26.2 · Java 25 · no runtime dependencies
Server owners
Drop MapGUI-1.0.0.jar into plugins/. On its own it does nothing visible -
plugins built on it provide the menus. To try the demos on a test server, unpack
MapGUI-examples-1.0.0.zip into plugins/ as well, then /mapgui hand open gallery
or /mapgui wall place draw. Delete a jar to drop that demo.
Plugin developers
compileOnly("io.github.flog99:mapgui-api:1.0.0")
No build tool? mapgui-api-1.0.0.jar and mapgui-layout-1.0.0.jar are attached,
with sources. You need both.
See getting started (https://github.com/FloG99/MapGUI/blob/main/docs/getting-started.md).
What's in it
- Auto-layout: rows, columns, overlays, scroll views. No coordinate arithmetic.
- Widgets, themes, borders, corners, animation, text input.
- Menus on walls - a grid of maps on blocks, shared by a room or private per viewer.
- Animated GIF, decoded by the JDK alone.
- Terrain drawn under your layout.
- A headless preview that renders a screen to a browser or a PNG with no server.
- Nothing is real: no MapView, no map item, nothing to lose on death.
Licence
LGPL-3.0-or-later. Running a server carries no obligations, and a plugin depending
on mapgui-api may be closed and paid - only modifying MapGUI itself and shipping
that requires publishing the changes. Examples are MIT.