Skip to content

Repository files navigation

WaveMotes

Type :emote: in Minecraft chat and pick it from a popup, just like commands.

Minecraft Fabric Requires Fabric API Environment License

English | Español

WaveMotes: the emote picker in action

Emotes rendered in chat


What is it?

WaveMotes is a lightweight, client-side Fabric mod. Start typing : in chat and a suggestion popup appears, the exact same one you get with / commands, but full of emotes. Pick one and the rendered emote is inserted into your message.

It ships with an embedded emote pack that renders client-side, so your emotes show up even if the server never sends you a resource pack. Optionally, it can also suggest the full set of standard Discord emojis (:skull: → 💀, :fire: → 🔥, …).

One jar, no extra setup. No malilib, no YACL, no config files to copy by hand. Drop it in your mods folder and it works.

Features

  • 🗨️ Popup autocomplete: type : to open the same dropdown as / commands, filtered live as you type.
  • 🔄 Live emote sync: new emotes added on the server show up on their own, no mod update needed. WaveMotes fetches a manifest the server publishes, caches the new textures locally and renders them. The bundled set stays as an offline fallback. On by default; force a refresh with /wm sync.
  • 🖼️ Client-side rendering: the built-in emote textures are bundled in the jar, so they render even with no server resource pack.
  • 🔠 Bigger than text: emotes are scaled up so they actually read as emotes, not tiny glyphs.
  • 😀 Optional Discord emojis: 1900+ standard Discord shortcodes (Twemoji textures, rendered in color in-game), off by default. Enable them all, or add just the ones you want (e.g. only :skull:).
  • 🎛️ In-game config screen: Tweakeroo-style On/Off switches. Open it with /wm or bind a key.
  • 🪶 No dependencies beyond Fabric API. Single jar.

Installation

  1. Install Fabric Loader for Minecraft 1.21 or newer.
  2. Download Fabric API.
  3. Download WaveMotes and drop both jars into your .minecraft/mods folder.
  4. Launch the game.

This is a client-side mod, so it does not need to be installed on the server.

Usage

Action How
Open the emote popup Type : in chat (optionally keep typing to filter, e.g. :sku)
Insert an emote Click it, or use the arrow keys + Tab/Enter like any suggestion
Open the config Run /wm (or /wavemotes), or bind a key in Options → Controls → WaveMotes
Force a live sync Run /wm sync (fetches newly added server emotes right away)

Configuration

The config screen (and the file at config/wavemotes.json) has:

  • Built-in emotes: On/Off. The embedded pack, rendered client-side.
  • Discord native emojis (all): On/Off, Off by default. Adds the full standard Discord emoji set to the popup.
  • Add a single emoji: type a shortcode (e.g. skull) and click Add to enable just that one without turning on the whole set. Clear added emojis wipes that list.
  • Live emote sync: On/Off, On by default. When on, the mod pulls new server emotes from a published manifest (manifestUrl in the config file) and renders them without a mod update. Turn it off to stick to the bundled set only.

About Discord emojis: these are standard Unicode emoji rendered with bundled Twemoji textures, so they show in color in-game. A few hundred multi-codepoint ones (most country flags, ZWJ sequences like family emoji) can't be drawn as a single in-game glyph, so those render as their components locally, but they still travel correctly to Discord through a chat bridge. They're off by default to keep the picker focused on the built-in pack.

Emote size

Too big? Too small? Every emote shares one size, so changing it is a single find-and-replace. The jar is just a zip: open assets/minecraft/font/default.json inside it and change every "height": 16 to whatever you like (bigger number = bigger emotes). "ascent": 11 nudges them up or down; a safe rule of thumb is ascent ≈ height − 5. Restart the game and you're done.

Building from source? One command does it, then rebuild:

python tools/set_emote_size.py 20      # height 20, ascent auto (15)
./gradlew build

How it fits: the W4VE emote stack

WaveMotes is the client half of a two-part system. It runs fine on its own, but it was built to sit next to a server side that does the heavy lifting.

  • WaveMotes (this mod, client side): the :emote: popup and client-side rendering. You see your emotes on any server, even if no resource pack ever reaches you, because the textures are embedded in the jar on purpose.
  • W4VE server side (the real workhorse): makes everyone on the server see the emotes, even vanilla players with no mod, and bridges them to and from Discord. Three pieces:
    • a resource pack with a custom PUA font that draws each emote, pushed to every client;
    • Styled Chat, so typing :tet: in-game turns into the emote for all players;
    • a patched ChatBridge that rewrites :name:<:name:id> between Minecraft and Discord.

Run them together (as on MineWave) and you get the full experience: a Discord-style picker, emotes that everyone sees, and a live Discord bridge.

The mod still works alone. Solo, you get the picker and your own emotes rendered locally. What you don't get without the server side: other players seeing your custom emotes, and the Discord bridge.

The server side needs a dedicated server or VPS with full file/plugin access. It is not possible on locked-down shared hosts (Shockbyte, Aternos, etc.). It is bespoke infrastructure (a resource pack tied to a Discord guild, plus its own hosting), not a one-click download. So far the packaged piece is the chat bridge, ChatBridge; the rest lives in the wider CodeW4VE project.

Compatibility

  • Minecraft 1.21+ (Fabric).
  • Requires Fabric API.
  • Client-side only; safe to use on servers that don't have it.

Building from source

# JDK 21 required
export JAVA_HOME=/path/to/jdk-21
./gradlew build

The built jar lands in build/libs/.

License

MIT © tvtvirus / CodeW4VE.

The bundled emote textures belong to the MineWave community and are included with permission. Discord emoji textures are from Twemoji (© Twitter / jdecked, licensed CC-BY 4.0).

About

Type :emote: in chat and pick it from a command-style popup: built-in emote pack rendered client-side (no resource pack needed) + optional Discord emojis. Fabric, single jar, only needs Fabric API.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages