Changelog
v1.7.0·
- AddedPhoto Mode — cinematic orbit camera opened from a button in the menu. Orbit drag, zoom scroll, FOV slider, depth-of-field toggle, and 5 built-in timecycle look filters (None / Cinematic / Noir / Warm / Vibrant / Cool)
- AddedSend to Discord — optional
screenshot-basicintegration to post a photo directly to a configured Discord channel webhook. Supports'image'and'embed'styles; embed includes player location, in-game time, server logo, and caption. Per-player throttle to prevent spam - AddedPhoto Mode watermark toggle and per-server logo/caption configuration (
MBT.PhotoMode) - AddedPhoto Mode entry closes the emote menu automatically; exit restores normal camera with a smooth 500ms interpolation
- AddedSafety: Photo Mode auto-exits if the player's ped dies or the resource is stopped
v1.6.0·
- AddedRP Text (
/me//do) — configurable chat channels that float a styled pill above the author's head, visible to nearby players. Supports multiple simultaneous pills per player (stacked vertically). Text is handed to React as data — no HTML injection possible - AddedFully configurable channels in
MBT.RpText.Channels: each channel has its own command, visibility range, pill label, and accent color - AddedEcosystem handshake export
ProvidesRpText()— other MBT resources (e.g.mbt_hud) detect and defer to this system automatically - AddedChat suggestions auto-registered for all configured RP Text commands
- AddedPer-player throttle (
MBT.RpText.ThrottleMs) and max message length (MBT.RpText.MaxLength)
v1.5.0·
- AddedPersonas — named loadouts bundling Quick Bind slots (NUM1–NUM6) and Emote Wheel slots. Create up to
MBT.Personas.Max(default 4) personas and switch between them instantly from the settings panel. Stored via KVP - AddedEmote Wheel radial mode — move the mouse toward a slot to select it (pointer-based, like a weapon wheel). Configurable sensitivity via
MBT.EmoteWheel.PointerSensitivity - Added
MBT.EmoteWheel.Mode—'radial'(default) or'linear'(scroll-through, previous behavior) - Added
MBT.Menu.AllowLayoutSwitch— whenfalse, locks all players toMBT.Menu.Layoutand hides the layout toggle in settings - Added
MBT.Theme.AllowAccentChange— whentrue, players can choose their accent color from a preset palette in settings.false= server-controlled accent for everyone (default)
v1.4.0·
- AddedFull redesign of both layouts — Cinematic is now an edge-docked, full-height panel with a soft vignette; Default is a bounded, draggable floating panel
- AddedTrending this week — server-wide hero spotlight showing the single most-played emote on a rolling 7-day window. Aggregate counts only, no per-player tracking. Configurable via
MBT.Trending - AddedResult bar with Random emote button and Sort & Filter controls — one click away from any browse state
- ImprovedEmote wheel is more compact and less intrusive while holding the wheel key
- ImprovedEmote cards — play counts and badges column-aligned; action buttons reveal on hover without layout reflow
- ImprovedConsistent theming — changing the accent color in
MBT.Themenow re-tints the entire UI: menu, emote wheel, and on-screen pills alike - ImprovedOn-screen pills and bubbles re-architected as an independent ambient layer — ambient events no longer re-render the main menu in the background
- Improved"What's That Emote?" tracker no longer polls every frame when nothing nearby is emoting
- ImprovedAll six built-in languages re-synced — the redesigned interface is fully translated
- FixedNearby-player search is now distance-capped — a modified UI could previously request an oversized radius
- FixedOpening a card's quick-bind/wheel drawer no longer knocks the emote list's scroll position out of sync
- ChangedDead code sweep across styles, scripts, and locale files — leaner NUI bundle
v1.3.0·
- AddedOpen Join — when you start a dance or shared emote, nearby players get an anonymous "Join: [emote] [Y]" pill and can join with one key. The initiator is never identified. Per-player opt-out via
/mbt_openjoin off - AddedWhat's That Emote? — walk near an emoting player to see a floating bubble with the emote name and a hotkey hint to copy it. Off by default, opt-in via
MBT.Features.WhatsThat - AddedNearby ribbon — when at least one player is in range, a ribbon surfaces your most-played shared emotes at the top of the menu. One click opens the Partner Finder pre-aimed at the closest player
- AddedBanned emotes — new
MBT.BannedEmoteslist inconfig.luafilters specific emotes from the catalog and from Open Join broadcasts server-side - AddedRemember State — the menu remembers scroll position, active tab, and filters after an emote plays. Resets on ESC/X. Configurable via
MBT.Menu.RememberState - AddedDrag-to-reorder favourites rebuilt with react-dnd (pointer events) — the HTML5 drag layer in FiveM's CEF was silently dropping gestures
- AddedAnti-spam cooldown between back-to-back emote plays (250ms default,
MBT.AntiSpam.CooldownMs) - AddedOpen Join crowd protection — invites capped at the 30 closest players (
MBT.OpenJoin.MaxRecipients) to prevent notification storms in packed areas - AddedAnti-spoofing — server validates the initiator's state bag against the announced emote before relaying; clients cannot advertise an emote they are not playing
- AddedPremium entry/exit animations on all social surfaces (slide + scale-up + accent ring pulse on arrival, 150ms scale-down on exit). Respects
prefers-reduced-motion - AddedDirectional tab transitions via the View Transitions API; grid fade-in on filter/category/sort changes
- AddedAnimated counters on search result bar, Nearby badge, and Recent tab badge
- AddedEmpty states with floating illustration for "No emotes found" and Partner Finder
- FixedFirst-open race — if the menu key was pressed before the server finished shipping the emote catalog, the open intent is now remembered (20s TTL) and auto-applied when the catalog arrives
v1.2.1·
- FixedEmote preview no longer makes your character disappear to other players — hide is now done with a local-only native (
SetEntityLocallyInvisible) re-applied per frame, so the networked ped stays visible to everyone else - ImprovedPreview view now shows a "Preview Mode" badge matching the active layout theme, plus a soft vignette and subtle cinematic colour grade
v1.2.0·
- AddedPlace in world — 📍 button on each emote card opens a placement flow: a transparent preview ped appears, moveable with WASD / Q+E rotation / R+G elevation. Press Enter to walk to the spot and play; Backspace cancels
- AddedBranded on-screen control hints for the placement flow, adapting to both cinematic and default layout themes
- AddedPlacement available on Emotes, Props, Dances, and Animals — auto-hidden for categories where it does not apply (Walks, Expressions, Shared, Emojis)
- ChangedPlacement requires rpemotes-reborn with the placement exports (merged upstream). Button auto-hides on older installs — no breaking change
v1.1.0·
- AddedServer-side filtering for adult (
AdultAnimation) and abusable emotes. Both default tofalse. Controlled viaMBT.Features.AdultEmotesandMBT.Features.AbusableEmotes - FixedLanguage switching now actually applies — the locale was not reaching the NUI under most timing conditions, so players kept seeing English regardless of config
- FixedMenu no longer shows "No emotes found" on first open right after resource start — client now waits for rpemotes-reborn to finish catalog parsing
- FixedCategory tab labels now follow
MBT.Language— they were always rendering in English - ImprovedAround 50 additional UI strings are now translatable (tooltips, modals, banners, drawer titles, badges, toasts)
- ImprovedAll six built-in translations updated with the new strings
v1.0.0·
- AddedInitial release — premium NUI replacement for rpemotes-reborn
- Added1800+ emotes across 8 categories: Emotes, Props, Dances, Shared, Expressions, Walk Styles, Animals, Emojis
- AddedFavorites system with custom drag-to-reorder support, persisted via KVP
- AddedRecent emotes tab tracking the last N played emotes (configurable)
- AddedQuick bind slots NUM1–NUM6 — drag any emote onto a numpad key to bind it
- AddedHold-to-peek emote wheel with up to 8 slots — hold K, scroll to pick, release to play
- AddedPlaylists — create named emote sequences that play automatically in order
- AddedPartner finder panel inside the Shared category with inline accept/decline popup
- AddedAnimated ped preview on emote hover — see the emote before playing it
- AddedTwo layouts:
cinematic(edge-docked immersive panel) anddefault(bounded draggable panel) - AddedConfigurable panel position:
leftorright - AddedFull theme customization via 6 hex color tokens in
config.lua - AddedSix built-in locales: English, Italian, Spanish, French, German, Portuguese
- AddedJob permission system — restrict individual emotes to specific server jobs with framework auto-detection (ESX, QBox, QBCore, standalone)
- Added
MBT.Menu.OverrideNativeMenu— suppress rpemotes' default NativeUI menu and redirect its keybind to MBT's menu - AddedMBT Ecosystem integration hooks for
mbt_meta_clothesv2 andmbt_wearable_props - AddedAuto-detection of rpemotes resource name (supports
rpemotes-reborn,rpemotes,rp-emotes) - Added
/mbt_layoutruntime command to toggle between layouts without a restart - AddedZero SQL — all player data stored client-side via KVP (favorites, recent, binds, playlists, wheel)