MediumDesigning UI for a Paper Plugin: Why LikeBeacon Uses Chat and Books | by biga816 | Nov, 2026 | Medium
Sitemap

Designing UI for a Paper Plugin: Why LikeBeacon Uses Chat and Books

8 min readNov 4, 2026

--

When building a UI for a web application, we can arrange buttons, lists, cards, and navigation almost any way we want. A Minecraft server plugin does not have that freedom. It has to work with the interfaces the game already provides.

I recently built LikeBeacon, a plugin for Paper, a Minecraft: Java Edition server platform. LikeBeacon lets players express appreciation by sending a Like directly to another player or reacting to something they said in chat.

While designing it, I compared several interfaces available to Paper plugins and eventually divided the experience between chat and books. This article explains what I considered, why I made that choice, and how I worked within the limitations of both interfaces.

What I built

LikeBeacon gives players four main ways to interact with Likes:

  • React to a chat message by clicking a heart beside it
  • Send a direct Like to another player with a short message
  • Revisit recent Likes in a shared feed
  • View community rankings and personal statistics
Press enter or click to view image in full size

LikeBeacon runs entirely on the server. Players do not need to install a client mod or download a resource pack, so the UI has to be built from elements already available in the standard Minecraft client.

Comparing the UI options available to a Paper plugin

Minecraft provides more display surfaces than it may seem at first. A plugin can use chat, inventories, books, action bars, boss bars, scoreboards, titles, display entities, and more.

For LikeBeacon, I focused on four options that could present multiple pieces of information and, where possible, let players interact with them.

Chat

Chat is already part of the player’s normal field of attention. Placing a Like action beside a message makes it possible to react while the context of the conversation is still fresh.

Its weakness is that it constantly moves. As more messages arrive, older ones disappear up the screen. That makes chat a poor place to browse history or compare several items. Too many notifications can also get in the way of the conversation itself.

Inventory GUIs

Inventory-based interfaces use items as buttons. They work well for settings, administrative tools, reward selection, and other tasks where players choose from a set of options.

However, the information visible at a glance is mostly limited to an icon and a stack count. Item names and lore can display more text, but only while the player is hovering over an item. For LikeBeacon, details such as who sent a Like, who received it, why it was sent, and how many reactions it collected would be largely hidden behind icons rather than readable as a list.

Books

Books are better suited to text. They can display a history across multiple pages, open from a command anywhere in the world, and show different content to each player.

They do not provide conventional button widgets, but their text can be made clickable. This makes it possible to turn a short piece of text into an action without introducing a custom client UI.

Books also have an important limitation: they are not a natural fit for content that must keep updating while the player is reading it. They work better as a snapshot generated when the player runs a command.

World-space UI

Holograms and text display entities can place rankings or announcements directly in the world. They are a natural choice for a public noticeboard in a lobby because every player sees the same information in the same place.

The trade-off is that players have to visit that place. World-space UI also needs extra work when the information is personal, such as an individual player’s Like statistics.

What LikeBeacon needed from its UI

Before choosing an interface, I reduced the requirements to four points:

  • Players should be able to Like something immediately without significantly changing normal chat
  • Liked content should be available to revisit later
  • Rankings and personal statistics should be easy to check
  • The plugin should not require a client mod or another mandatory plugin

No single interface handled all of these well. Chat made immediate reactions easy but browsing difficult. Books made browsing comfortable but moved the reaction too far away from the original conversation.

The solution was to separate the interfaces by time.

Chat for the present, books for the accumulated past

In LikeBeacon, chat represents what is happening now. Books represent information that has accumulated and can be revisited later.

  • Chat is for the present: notice a new message or Like and react immediately.
  • Books are for later: browse the feed, rankings, and personal statistics when there is time to look back.

Eligible chat messages receive a clickable [♡] beside them. A player can react without leaving the conversation or opening another screen.

Once Likes have been collected, players can revisit them through the shared feed. Rankings and personal statistics use the same book interface, but each has a separate entry point because players open them for different reasons.

This split avoids forcing one interface to do two conflicting jobs. Chat remains immediate and lightweight, while books provide a calmer place to read accumulated information.

Working within the limits of chat

Keep chat looking like chat

LikeBeacon does not create a replacement chat screen. It adds one action to the chat players already use.

Get biga816’s stories in your inbox

Join Medium for free to get updates from this writer.

This matters because many servers already have plugins that add prefixes, nicknames, colors, hover text, or clickable elements. Replacing the entire chat presentation for the sake of one heart could remove formatting created by those plugins.

Instead, LikeBeacon preserves the message that has already been rendered and appends its Like action to that result. The interaction is new, but the surrounding chat still looks familiar to the server and its players.

Do not permanently store every chat message

To react to a message, LikeBeacon has to identify which message was clicked. The simplest implementation would be to save every eligible chat message to the database as soon as it is sent.

That would also mean storing ordinary conversations that nobody ever Liked.

Instead, eligible messages first enter a bounded in-memory buffer. When a message receives its first Like, the message and reaction are saved together in SQLite and added to the shared feed. If it leaves the buffer without receiving a Like, it is never persisted.

Press enter or click to view image in full size

This is not only a storage optimization. It matches the purpose of the plugin: preserve moments the community appreciated, rather than turn the entire conversation into a permanent log.

Working within the limits of books

Treat the book as a snapshot

LikeBeacon does not try to keep an open book updated in real time. When a player opens the feed, the plugin loads the current data and generates the pages for that moment. To see newer Likes, the player opens the book again.

Giving up live updates has a useful side effect: entries do not suddenly move while someone is reading. The feed is meant for looking back, not for constant monitoring, so a snapshot is a reasonable fit.

Use clickable text as a button

A Minecraft book does not have a standard button component. LikeBeacon instead uses the reaction count itself, such as `[♡1]`, as a clickable control.

Clickable text is underlined. After a player has reacted, the empty heart changes from `♡` to `♥`. Color, underlining, and the heart symbol work together to communicate both affordance and state, even though the UI does not look like a conventional button.

Book pages also have limited width and height. Long messages are shortened in the page layout, while the full text remains available on hover. Click and hover interactions allow the interface to preserve detail without filling every page with dense text.

Separate books by reading purpose

Rather than putting everything into one book, LikeBeacon opens a different view for each purpose:

- Feed shows recent Likes in chronological order

- Ranking shows the top recipients, top senders, and most popular items

- Mine shows the current player’s received Likes, sent Likes, and personal totals

The same book interface is reused, but the information is narrowed to what the player is trying to learn at that moment.

Even though the feed, rankings, and personal statistics all contain accumulated information, people read them differently. Separating them keeps each page focused.

When the other interfaces would be a better choice

This design does not mean that inventory GUIs or world-space interfaces are inferior. A different requirement would lead to a different decision.

For example, an inventory GUI would make sense for choosing a reward that can be exchanged for Likes, because the rewards could be represented as recognizable items. A hologram or text display would be a better fit for showing a server-wide leaderboard in a lobby where everyone is meant to see it.

Other built-in surfaces also have their place. An action bar works well for a short notification, a boss bar for ongoing progress, and a title for a single message that needs the entire screen’s attention.

The important question is not simply which interfaces are available. It is when the information is needed, how long it should remain relevant, where players will see it, and whether they need to act on it immediately.

Conclusion

Minecraft’s built-in interfaces all come with constraints. Those constraints become more manageable when each interface is given a focused role instead of forcing every feature into a single screen.

For LikeBeacon, chat became the place for immediate interaction, while books became the place for accumulated information. Another plugin might be better served by an inventory GUI or a world-space display. The right starting point is not the list of available UI components, but the path players take through the information.

LikeBeacon is available as a free, open-source Paper plugin:

- Download LikeBeacon on Hangar

- View the source code on GitHub

- Read the original Japanese article on Qiita

References

- Chat events — PaperMC Docs

- Text components — PaperMC Docs

- Menu Type API — PaperMC Docs

NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.

--

--