Tags
Creators
Details
0.11.1+26.3
Compatibility
Required content
Changes
0.11.1 turns MineQTT into a security system for your base and your Home Assistant: a Vibration Sensor hears intruders, a Smart Lock keeps doors and chests shut, an Alarm Panel arms the house with a code, a Speaker sounds the siren and a Signal Beacon shows the alarm's state across the map. They work together through wires without Home Assistant, and Home Assistant gets a real alarm panel, a lock, a siren and a light for them. All of it comes for every Minecraft version from 1.21 to 26.3 on Fabric and NeoForge. Worlds and config files of 0.10.0 load unchanged; the new config keys take their defaults. The wiki's Secure Your Base guide walks through a complete setup. NeoForge servers on Minecraft 1.21.10 and 1.21.11 could not start with MineQTT 0.9.0 to 0.10.0; 0.11.1 fixes that (see Fixed). 0.11.0 was tagged but never published, so 0.11.1 is the first release of the security update; it also lets the Entity Observer watch an area.
For players
- Vibration Sensor (new block): hears what a sculk sensor hears within 1 to 16 blocks (Range, 8 by default): footsteps, blocks placed or broken, doors, trapdoors and fence gates, chests and other containers, items landing, projectiles, mobs and more. Wool between it and a vibration blocks it, wool carpets and sneaking muffle it, as for a sculk sensor. Home Assistant gets Vibration (a vibration sensor that stays on for Clear delay, 10 s by default, after the last one), a Vibration event of a fixed kind (step, projectile, item, entity, door, container, block or other) with vanilla's frequency, the game event and whether the world, an entity or a player caused it, one device trigger per kind, Frequency, Last event, Last distance and the number of Vibrations. Detect picks everything, only what entities do (so redstone contraptions stay quiet), only players, or everything but players. It hears at most two vibrations a second and sends each kind at most once a second; a comparator reads the last frequency while it reports a vibration, and its Raw Link sends each frequency. A player's vibration is anonymous: never their name, UUID, position or distance. Crafted from smooth stone, a sculk sensor and the Network Chip.
- Speaker (new block): Home Assistant's voice in the world. Its siren plays one of five tones (alarm, chime, doorbell, beep, bell, made of note block sounds and the village bell) at the block until its duration ends (30 s by default, 10 min at most) or it is turned off. Home Assistant sees it as a siren with those tones, a duration and a volume, and turns it on with a tone, a duration and a volume as any siren; Tone, Volume, Duration and Range are its settings, Time left counts down. Range (16 blocks by default, 48 at most) is how far it carries at full volume. A right-click switches it, a rising redstone signal starts it for its duration, and a wire switches it (a Redstone Input or a Vibration Sensor's vibration on its state); its state switches lamps and outputs in turn. It plays at most four sounds a second, under each player's Jukebox/Note Blocks volume, and stops when its chunk unloads. Announcements: Home Assistant's notify entity Announcement (and wires and commands) shows a short text to the players within its range, in the action bar behind the Speaker's name, only while the server allows it (see
speaker.allowAnnouncementsbelow). The text is plain: formatting codes and control characters are removed, it is cut to 120 characters, and each Speaker shows two at once, then one every two seconds; Last announcement and Last result say what came of it. Showcase: the Vibration Sensor hears an intruder, Home Assistant sounds the Speaker's alarm and flashes the lights. Crafted from smooth stone, a note block and the Network Chip. - Smart Lock (new block): a small keypad plate you put onto a door, trapdoor, fence gate or container (chest, barrel, shulker box, furnace, hopper, dispenser and the like) by right-clicking it with the Smart Lock: the target does not swing or open, the plate sits on the face you clicked (or the nearest free face) and aims at it. Double doors and double chests lock as a pair, also when the second half comes later. A new lock is locked and private: only its owner opens the target, and players its access mode lets in (Claim for the players a claim trusts, Public for everybody); operators pass too (see
smartLock.opsBypassbelow). Anybody else is refused with vanilla's "is locked" message, and a container also carries vanilla's own lock while locked. A right-click on the plate locks and unlocks it for those who may; the plate's light shows red or green. Locking closes the target; redstone, a mob or a wind charge that opens a locked door, trapdoor or gate is undone the next tick. Home Assistant sees a lock (locked, unlocked, open while the door stands open, jammed without a target) with lock and unlock, an Attempt event when somebody without access tries the target or the plate or something forces it open (how and on what, never who), Attempts, Auto-relock (seconds after an unlock until it locks again, off by default), and the Target and Status diagnostics. Wires reach its locked, lock, unlock and toggle in-ports and read locked and attempt: a Wall Switch or a Redstone Input unlocks it. Redstone at the plate itself does nothing, as anyone could place a lever beside it. Only its owner, players who may configure it and operators break the plate; breaking the target pops it. Hoppers and hopper minecarts pull nothing out of a locked container (both halves of a double chest), but may still fill it, so a farm can feed locked storage. It stops hands and hoppers, not pistons, explosions or other mods' item pipes: claims stay the real protection. Crafted from iron ingots, a tripwire hook and the Network Chip. - Alarm Panel (new block): a keypad on the wall that turns the security devices into one alarm system, and Home Assistant's alarm panel card in the world. A right-click opens its keypad: a player who may configure it types a code of 4 to 8 digits and presses Set code (only while it is disarmed); without a code it does not arm. Players who may use it press Arm away or Arm home (no code needed) and type the code to Disarm. Arming takes the Exit delay (30 s by default) to leave the room; a trigger while armed gives the Entry delay (30 s) to disarm, then it is triggered for the Siren duration (3 minutes by default, 0 until disarmed) and armed again as before. Its light shows green disarmed, red armed, amber blinking while a delay runs and red flashing triggered, and it beeps through the delays. Wires make the system: a Smart Lock's attempt or a door's Vibration Sensor into trigger_home (the perimeter: armed home and away), a Vibration Sensor, Presence Sensor or Redstone Input inside into trigger_away (armed away only), and its triggered into a Speaker's state sounds the siren (set the Speaker's duration at least as long as the siren duration); armed and state switch lamps and outputs. Wires may also arm and disarm it, without a code, since only players who may configure the panel make them. Home Assistant sees an alarm control panel (disarmed, arming, armed home, armed away, pending, triggered) that asks for the code to disarm and lets the panel check it, an Alarm event (arm, disarm, trigger, wrong_code), Triggered, Trigger source (the kind of device, e.g. "Vibration Sensor", never a player), Wrong codes, Time left, the three delays as settings and the Lockout and Code set diagnostics. The code is kept only as a salted, slow hash in the block: never in the state, Home Assistant's discovery, the device registry, a log line or the screen. Three wrong codes in a row, on the keypad or from Home Assistant, lock it out for 30 s, then 60 s, doubling up to 15 minutes; each one raises an anonymous wrong_code. Home Assistant sends the code over MQTT, so use TLS on the broker. Crafted from stone buttons, iron ingots, redstone and the Network Chip.
- Signal Beacon (new block): a lens you put on top of a vanilla beacon (or anywhere in its beam) that colours the beam on command, so a status shows across the map. The beam takes one of the 16 dye colours, as stained glass gives it: a colour Home Assistant or a command asks for becomes the nearest dye (pure green is lime, pure blue blue, a dimmed white a grey), a dye name such as
light_blueis that dye, and the device reports the colour the beam really has. Off, or between two blinks, it stops the beam like an opaque block (the beacon's effects pause too). Home Assistant sees a light (on/off and an RGB colour, effects off and blink, once a second), Beam colour (the dye) and the Beacon diagnostic:beam,inactive(a beacon without its pyramid) orno_beacon; without a beacon below it is a coloured lens and nothing more. A right-click switches it, and its screen has the switch and the colour picker. Wired to an Alarm Panel (its state into the beacon's alarm, the default wire between the two) it shows green (lime) disarmed, blinking orange while arming or pending, red armed and blinking red when triggered; Home Assistant automations may send the same alarm states to/set/alarm. A Smart Lamp's light wires to it too. Crafted from iron ingots, glass, redstone and the Network Chip. - Example security dashboard.
docs/dashboards/mineqtt-security.yamlshows the Alarm Panel's card, the locks, the vibrations and every device's events, the siren and the beacon, with an example automation in its comments. - Entity Observer: Spread (new setting,
spread, 0-4, default 0): the watched area reaches that many blocks to each side of the line out of its face, so a 3 by 3 (spread 1) up to a 9 by 9 area (spread 4), stillrangeblocks deep. An observer above a doorway facing down with spread 1 sees anyone on the 3 by 3 porch below it. It is a slider on the Controls tab, a number in Home Assistant and/set/spread; existing observers keep watching their line.
For server admins
- Node-RED nodes (new,
integrations/node-red, packagenode-red-contrib-mineqtt0.1.1, not on npm yet: install it from a packed tarball): a palette node for every device type with a twin, from the Smart Lamp to the Alarm Panel. Each node picks a Minecraft device of its type (listed by name and room from the broker's discovery) or a matching Home Assistant entity, so a flow can wire a Minecraft switch to a Zigbee lamp. Switch presses, timer fires and redstone pulses sendTOGGLEby default, so a switch node wired into a lamp node toggles it. Nodes send changes only, unless At start has them send the current state too (for a display). In the Node-RED add-on of Home Assistant OS the Home Assistant connection needs no token. speaker.allowAnnouncements(new, default off): whether Speakers show announcements to players. Off, every announcement is refused and says so in the Speaker's Last result; the notify entity stays in Home Assistant either way, so discovery never changes with the key.speaker.announceInChat(new, default off): announcements in the chat instead of the action bar.speaker.maxRange(new, 1 to 48, default 32): the farthest any Speaker carries its sound and its announcements, whatever its own Range says.smartLock.opsBypass(new, default on): operators open targets a Smart Lock keeps locked, as its owner does. Off, a locked target refuses an operator like anybody else the lock does not let in (operators still break the plate or unlock it at the plate).
Fixed
- NeoForge 1.21.10 and 1.21.11: with MineQTT 0.9.0 to 0.10.0 a server crashed right after it started (
Duplicate key L32X64MixRandom; seen on dedicated servers, and single player starts its world the same way). MineQTT asked Java for its default random generator, a lookup that fails under these NeoForge versions. It now uses a plain random generator, and those servers start. - Brokers with an ACL: when the broker refused a wide filter (say
mineqtt/#) quickly enough, the narrower subscriptions it was meant to replace could end up unsubscribed at the broker until the next reconnect, so the devices behind them heard no commands. MineQTT now sends the unsubscribe of such a change before it reacts to the refusal, and the narrower subscriptions stay.
Known limitations
- The alarm code over MQTT: Home Assistant sends the code with its disarm command in plain text. Use TLS on your broker, and keep it private: whoever may publish to a lock's or an Alarm Panel's topic can unlock or arm it.
- Smart Lock: it stops hands and hoppers, not explosions, pistons pushing a locked trapdoor or fence gate away, or other mods' item pipes. Claims stay the real protection.
- Signal Beacon: a beam shows only the 16 dye colours, and while the lens is off or between blinks the beacon's own effects pause too.
For developers
- New Home Assistant entity kinds:
siren,lockandalarm_control_panel; device types can declare secrets (the Alarm Panel's code), which the runtime redacts from logs, replies and the explorer. - Wire ports can be edge inputs, so both sensors' booleans and their events trigger an Alarm Panel.
- The Signal Beacon hooks the beacon's beam scan with a MixinExtras
@WrapOperation, so other mods' wraps of the same call still apply; a@Redirectthere stopped NeoForge 1.21.11 (MixinExtras 0.5.3) from starting. - The test broker probe hands every listener all its messages, the refused-filter broker scenario waits for the broker instead of the clock, and the client game tests get 45 minutes before the runner stops them.
- The broker integration check waits for a connection whose subscriptions the embedded Moquette acknowledged: on a loaded machine Moquette 0.17 drops a connection whose first SUBSCRIBE comes right after the CONNACK. Its session command queues are also larger, as a full one drops PUBLISHes.
Optional dependencies
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:Qqzh0xMO:JGvDlsWf"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Qqzh0xMO:JGvDlsWf"
}

