Changelog
v1.8.0·
- AddedScene editor — place actor marks in the world in game, each with its own emote and role name, and save them. Walk to the spot, face the direction, press a key: no coordinates copied out of a dev tool, no Lua edited. Opened with
/mbt_emote_menu, gated by one ACE permission - AddedSpots — a single mark with an emote. Walking into it offers the action on a prompt: lean on the bar, address the podium, sit on the bunk
- AddedMulti-actor scenes — several marks, each with a role. Nearby players get a role card, walk to their mark, ready up, and everyone hits their pose on a shared countdown
- AddedScenes are stored in MySQL (
mbt_emote_menu_scenes, created automatically on first boot), so they survive updates and live in your normal database backups. Requiresoxmysql; without it the editor turns itself off and says so in console, and the rest of the menu is unaffected - AddedThe server's accent colour, set in game — shield icon → Settings → colour picker with a hex /
rgb()field. Applies to every player at once, without a restart, and survives one. A live contrast figure warns below 3:1 without ever blocking the choice - AddedPhoto Mode Pro — a key light you place, positioned relative to the camera so it keeps the same relationship to the shot however far you orbit. Warmth on three real white points (tungsten, daylight, open shade), hour and sky changed for the photographer only, and right-drag to frame the people beside you
- AddedAdmin menu — the shield in the header opens Scene editor or Settings. Version, update notice and diagnostics live under Settings. Everything behind it is gated server-side: a player without the ACE never receives the data at all
- Added
MBT.AdminandMBT.VenueSpotsconfiguration sections — admin command and permission, editor limits, and how placed scenes behave once authored - ChangedThe theme colours moved out of
config.luainto the newdefault.lua, and are changed from the in-game panel. An existingconfig.luakeeps working — it loads afterdefault.lua, so anything set there still wins - ChangedEvery surface in the UI derives from the accent. Panels, cards and world prompts stopped being a fixed colour with a coloured highlight on top — they carry the accent's own hue at the lightness they already had
- ChangedThe world panels share one recipe — the same gradient the emote wheel already used, so pills, scene cards and editor bars read as one product
- ChangedSecondary text is lighter (
8A93A6): the old value measured 3.7:1 against the panel, below the readable threshold - ChangedThe settings popover is translated in German, Spanish, French and Portuguese — 18 strings that had been English inside an otherwise translated menu since the popover shipped
- FixedSeat claims and scene sessions are resolved server-side. They used to trust the client's own description of a scene, which let a modified client hold a seat it was nowhere near, and let a forged scene definition reach the people it invited
- FixedTwo admins saving a new scene at the same moment no longer overwrite each other
- FixedInvitations expire at the 30 seconds they advertise, instead of sitting on screen blocking other prompts until a separate one-minute sweep
- FixedA prop preview cancelled mid-load no longer leaves an object attached to nothing for the rest of the session
- FixedThe photo camera moves at frame rate. It used to move only when a NUI message landed — about thirty times a second — so on a faster machine some frames redrew it in the same place
- FixedThe placing bar wraps instead of letting its keys overlap the title on screens narrower than about 1500px
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)