Skip to content

Releases: FloG99/MapGUI

v3.1.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 17:11

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-version stays at 26.1.
  • A zombie reaches forward on 26.3 too. 26.3 moved its arm pose out of setupAnim into setupAttackAnimation, 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

Choose a tag to compare

@github-actions github-actions released this 22 Sep 20:57

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

Full Changelog: v2.0.0...v3.0.0

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 21 Aug 23:14

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

Choose a tag to compare

@github-actions github-actions released this 14 Aug 14:25

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

Choose a tag to compare

@github-actions github-actions released this 14 Aug 11:34

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, and camera().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 through Camera#useResourcePack.
  • An admin owns the cost. A tick budget and an fps ceiling divide between everyone with a view open, and
    /mapgui camera performance names 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, without and holeIn,
    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, and prerender for a repeating animation.
  • MapImage renders a node tree to an image with no server anywhere, through the real layout engine, font
    and palette.

Heads-up for plugin developers

  • mapgui-layout is no longer published on its own. Its classes ship inside mapgui-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")

Full changelog for 1.1.0

MapGUI v1.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Jul 00:23

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.