DocumentationPacket-based module blocking
Packet-based module blocking
Public packet format for server-controlled Flarial module restrictions.
Overview#
A Bedrock server can send Flarial a ScriptMessagePacket that temporarily
prevents selected modules from being enabled. This gives server owners a
documented way to communicate feature policy to players using Flarial.
Restrictions apply only for the current server session. Servers should send the complete policy when a player connects or moves between server contexts.
Packet format#
Send a ScriptMessagePacket with this message ID:
flarial_client_event:restrict_featuresThe message body is a JSON object. Entries under flarial_client_modules
identify modules and whether they should be blocked.
{
"server_name": "Example Server",
"notification_message": "This feature is disabled on this server.",
"flarial_client_modules": {
"module.freelook.name": {
"block": true,
"restriction_reason": "Freelook is disabled on this server."
},
"module.full_bright.name": {
"block": true,
"restriction_reason": "Fullbright is disabled on this server."
}
}
}Module keys#
Use the recommended keys below rather than copying labels from the in-game interface. UI names can change without changing the public packet key.
module.motion_blur.namemotion_blur, module.motion_blur.name, motionblurmodule.deepfry.namedeepfry, module.deepfry.namemodule.saturation.namesaturation, module.saturation.namemodule.patarhd.namepatarhd, module.patarhd.namemodule.dvd_screen.namedvd_screen, module.dvd_screen.name, dvdscreenmodule.fov_changer.namefov_changer, module.fov_changer.name, fovchangermodule.zoom.namezoom, module.zoom.namemodule.upside_down.nameupside_down, module.upside_down.name, upsidedownmodule.clickgui.nameclickgui, module.clickgui.namemodule.meds.namemeds, module.meds.namemodule.fps.namefps, module.fps.namemodule.cps.namecps, module.cps.namemodule.ip_display.nameip_display, module.ip_display.name, ipdisplaymodule.reach_counter.namereach_counter, module.reach_counter.name, reachcountermodule.combo.namecombo, module.combo.namemodule.ping_counter.nameping_counter, module.ping_counter.name, pingcountermodule.pot_counter.namepot_counter, module.pot_counter.name, potcountermodule.arrow_counter.namearrow_counter, module.arrow_counter.name, arrowcountermodule.item_tracker.nameitem_tracker, module.item_tracker.name, itemtrackermodule.entity_counter.nameentity_counter, module.entity_counter.name, entitycountermodule.clock.nameclock, module.clock.namemodule.memory.namememory, module.memory.namemodule.fullbright.namefullbright, module.fullbright.name, full_brightmodule.keystrokes.namekeystrokes, module.keystrokes.namemodule.toggle_sneak.nametoggle_sneak, module.toggle_sneak.name, togglesneakmodule.toggle_sprint.nametoggle_sprint, module.toggle_sprint.name, togglesprintmodule.hitbox.namehitbox, module.hitbox.namemodule.hurt_color.namehurt_color, module.hurt_color.name, hurtcolormodule.block_hit.nameblock_hit, module.block_hit.name, blockhitmodule.fire_height.namefire_height, module.fire_height.name, fireheightmodule.better_inventory.namebetter_inventory, module.better_inventory.name, betterinventorymodule.dynamic_lighting.namedynamic_lighting, module.dynamic_lighting.name, dynamiclightingmodule.nametag.namenametag, module.nametag.namemodule.java_dynamic_fov.namejava_dynamic_fov, module.java_dynamic_fov.name, javadynamicfovmodule.snaplook.namesnaplook, module.snaplook.namemodule.fog_color.namefog_color, module.fog_color.name, fogcolormodule.armorhud.namearmorhud, module.armorhud.namemodule.time_changer.nametime_changer, module.time_changer.name, timechangermodule.movable_paperdoll.namemovable_paperdoll, module.movable_paperdoll.name, movablepaperdollmodule.mc_gui_scale.namemc_gui_scale, module.mc_gui_scale.name, mcguiscalemodule.render_option.namerender_option, module.render_option.name, renderoptionmodule.glint_color.nameglint_color, module.glint_color.name, glintcolormodule.item_physics.nameitem_physics, module.item_physics.name, itemphysicsmodule.tab_list.nametab_list, module.tab_list.name, tablistmodule.weather_changer.nameweather_changer, module.weather_changer.name, weatherchangermodule.nick.namenick, module.nick.namemodule.freelook.namefreelook, module.freelook.name, free_lookmodule.auto_perspective.nameauto_perspective, module.auto_perspective.name, autoperspectivemodule.auto_gg.nameauto_gg, module.auto_gg.name, autoggmodule.text_hotkey.nametext_hotkey, module.text_hotkey.name, texthotkeymodule.speed_display.namespeed_display, module.speed_display.name, speeddisplaymodule.cps_limiter.namecps_limiter, module.cps_limiter.name, cpslimitermodule.break_progress.namebreak_progress, module.break_progress.name, breakprogressmodule.animations.nameanimations, module.animations.namemodule.block_outline.nameblock_outline, module.block_outline.name, blockoutlinemodule.command_hotkey.namecommand_hotkey, module.command_hotkey.name, commandhotkeymodule.no_hurt_cam.nameno_hurt_cam, module.no_hurt_cam.name, nohurtcammodule.inventory_hud.nameinventory_hud, module.inventory_hud.name, inventoryhudmodule.hive_utils.namehive_utils, module.hive_utils.name, hiveutilsmodule.hit_ping.namehit_ping, module.hit_ping.name, hitpingmodule.opponent_reach.nameopponent_reach, module.opponent_reach.name, opponentreachmodule.view_model.nameview_model, module.view_model.name, viewmodelmodule.faster_inventory.namefaster_inventory, module.faster_inventory.name, fasterinventorymodule.potionhud.namepotionhud, module.potionhud.namemodule.movable_scoreboard.namemovable_scoreboard, module.movable_scoreboard.name, movablescoreboardmodule.movable_title.namemovable_title, module.movable_title.name, movabletitlemodule.movable_bossbar.namemovable_bossbar, module.movable_bossbar.name, movablebossbarmodule.movable_chat.namemovable_chat, module.movable_chat.name, movablechatmodule.clear_scoreboard.nameclear_scoreboard, module.clear_scoreboard.name, clearscoreboardmodule.clear_chat.nameclear_chat, module.clear_chat.name, clearchatmodule.movable_coordinates.namemovable_coordinates, module.movable_coordinates.name, movablecoordinatesmodule.movable_hotbar.namemovable_hotbar, module.movable_hotbar.name, movablehotbarmodule.movable_day_counter.namemovable_day_counter, module.movable_day_counter.name, movabledaycountermodule.mouse_strokes.namemouse_strokes, module.mouse_strokes.name, mousestrokesmodule.java_hotkeys_fix.namejava_hotkeys_fix, module.java_hotkeys_fix.name, javahotkeysfix, java_hotkeys, module.java_hotkeys.namemodule.inventory_offhand_hotkey.nameinventory_offhand_hotkey, module.inventory_offhand_hotkey.name, inventoryoffhandhotkeymodule.hive_statistics.namehive_statistics, module.hive_statistics.name, hivestatisticsmodule.waypoints.namewaypoints, module.waypoints.namemodule.null_movement.namenull_movement, module.null_movement.name, nullmovementmodule.modern_handling.namemodern_handling, module.modern_handling.name, modernhandlingmodule.custom_crosshair.namecustom_crosshair, module.custom_crosshair.name, customcrosshairmodule.waila.namewaila, module.waila.namemodule.skin_stealer.nameskin_stealer, module.skin_stealer.name, skinstealermodule.raw_input_buffer.nameraw_input_buffer, module.raw_input_buffer.name, rawinputbuffermodule.low_health.namelow_health, module.low_health.name, lowhealthmodule.player_notifier.nameplayer_notifier, module.player_notifier.name, playernotifiermodule.zeqa_utils.namezeqa_utils, module.zeqa_utils.name, zeqautilsmodule.mumble_link.namemumble_link, module.mumble_link.name, mumblelinkmodule.shader_loader.nameshader_loader, module.shader_loader.name, shaderloadermodule.minimal_view_bobbing.nameminimal_view_bobbing, module.minimal_view_bobbing.name, minimalviewbobbingmodule.lewis.namelewis, module.lewis.namemodule.coordinates.namecoordinates, module.coordinates.namemodule.experience_info.nameexperience_info, module.experience_info.name, experienceinfomodule.disable_mouse_wheel.namedisable_mouse_wheel, module.disable_mouse_wheel.name, disablemousewheelmodule.java_debug_menu.namejava_debug_menu, module.java_debug_menu.name, javadebugmenumodule.directionhud.namedirectionhud, module.directionhud.namemodule.locator_bar.namelocator_bar, module.locator_bar.name, locatorbarmodule.java_view_bobbing.namejava_view_bobbing, module.java_view_bobbing.name, javaviewbobbingmodule.death_logger.namedeath_logger, module.death_logger.name, deathloggermodule.twerk.nametwerk, module.twerk.namemodule.cinematic_camera.namecinematic_camera, module.cinematic_camera.name, cinematiccameramodule.chunk_border.namechunk_border, module.chunk_border.name, chunkbordermodule.compact_chat.namecompact_chat, module.compact_chat.name, compactchatmodule.message_logger.namemessage_logger, module.message_logger.name, messageloggermodule.totem_counter.nametotem_counter, module.totem_counter.name, totemcountermodule.item_counter.nameitem_counter, module.item_counter.name, itemcountermodule.delux_overlay.namedelux_overlay, module.delux_overlay.name, deluxoverlaymodule.better_hunger_bar.namebetter_hunger_bar, module.better_hunger_bar.name, betterhungerbarmodule.particle_multiplier.nameparticle_multiplier, module.particle_multiplier.name, particlemultipliermodule.bow_sensitivity.namebow_sensitivity, module.bow_sensitivity.name, bowsensitivitymodule.subtitles.namesubtitles, module.subtitles.namemodule.sens_multiplier.namesens_multiplier, module.sens_multiplier.name, sensmultipliermodule.stopwatch.namestopwatch, module.stopwatch.namemodule.depth_of_field.namedepth_of_field, module.depth_of_field.name, depthoffieldmodule.crystal_optimizer.namecrystal_optimizer, module.crystal_optimizer.name, crystaloptimizermodule.tnt_timer.nametnt_timer, module.tnt_timer.name, tnttimermodule.inventory_lock.nameinventory_lock, module.inventory_lock.name, inventorylockmodule.audio_controller.nameaudio_controller, module.audio_controller.name, audiocontrollermodule.pitch_display.namepitch_display, module.pitch_display.name, pitchdisplaymodule.durability_warning.namedurability_warning, module.durability_warning.name, durabilitywarningmodule.camera_test.namecamera_test, module.camera_test.name, cameratestmodule.notebot.namenotebot, module.notebot.namemodule.minimap.nameminimap, module.minimap.namemodule.doom.namedoom, module.doom.namemodule.discord_rpc.namediscord_rpc, module.discord_rpc.name, discordrpcClient behavior#
- A blocked module is disabled if it is currently active.
- The player cannot enable it again while the server restriction is active.
- Restrictions clear when the client leaves the server session or receives an empty replacement policy.
- A replacement policy should include every restriction that must remain active.
Implementation notes#
- Use the exact message ID shown above and send valid JSON.
- Keep the payload small and do not resend an unchanged policy every tick.
- Send the policy when a player connects and whenever the relevant server or world context changes.
- Provide a short, user-facing
restriction_reasonwhen possible. - Clear restrictions explicitly by sending an empty
flarial_client_modulesobject.
