Viscord - Discord + Fluxer Bridge for Hytale
Connect your Hytale server to Discord, Fluxer, or both. Player chat, joins and leaves, and server status flow out in real time - and messages flow back into the game. Two servers can share one chat channel and keep their local chatter separate.
Chat appears as the player who typed it, under their own name and rendered Hytale head. Server-side only. Players install nothing.
What it does
- Discord and Fluxer, side by side -
platform = "discord","fluxer"or"both". Each side has its own bot token, channel and webhook. - Chat as the player, not the bot - Viscord creates or reuses a webhook in your chat channel on first connect, so every line posts under
[HY] Stevewith Steve's own head as the avatar. No manual webhook setup. - Player avatars - the head is rendered from the player's Hytale profile at a three-quarter angle, up to 2048px.
avatar_type,avatar_sizeandavatar_rotationcontrol it, or pointavatar_urlat your own images. - Server to server - run several game servers into one community channel: each tags its lines with its own prefix, and a loop guard drops your own posts coming back so nobody sees their own words twice. Both the chat and events channels are read, so another server's announcements reach your players too.
- Optional prefix filtering - require a prefix (
!,., anything) before game chat leaves the server, and strip it on the way out. Local banter stays local. - Separate channels - chat goes to one channel, join/leave/status embeds to another, on both platforms.
- Tridirectional mode - mirror chat between Discord and Fluxer, tagging each line with its origin (
[Discord],[Fluxer]) so the other side can recognise it. - Templates - rewrite both directions:
{message},{username},{prefix},{uuid}. - Filters - ignore bots and webhooks (with a trusted-bot allowlist), drop messages tagged with another server's prefix, use Discord display names.
- Commands that work before setup -
/viscord statusshows tokens, channels, connection state and config path;/viscord reloadapplies config edits without a restart. - Quiet by design - Discord and Fluxer work is relayed off the game thread. A slow network never stalls the server; failures log, they don't crash.
Install
- Drop
viscord-hytale-<version>.jarinto your server'smods/folder. - Start the server once. Viscord writes
mods/network.vonix.viscord_Viscord/viscord.tomlwith every option and a comment explaining it. - Fill in your tokens and channel IDs, then run
/viscord reload(or restart).
Give the bot Manage Webhooks in the chat channel and enable Message Content Intent in the Discord developer portal - those two are what let chat show player names and read messages at all.
[general]
enabled = true
platform = "both" # discord | fluxer | both
chat_to_discord = true
discord_to_chat = true
debug = false # verbose logging when chasing a filter problem
[general.tridirectional]
enabled = false # true = mirror chat between Discord and Fluxer
discord_to_fluxer = true
fluxer_to_discord = true
show_source = true # tag relayed lines with [Discord] / [Fluxer]
[server]
prefix = "[HY]" # how this server is identified in shared channels
name = "My Hytale Server"
avatar_type = "headshot" # headshot | fullbody | none
avatar_size = 2048 # 64, 96, 128, 256, 512, 1024, 2048
avatar_rotation = 45 # multiple of 15; 45 = three-quarter view
avatar_url = "" # full custom template, overrides the three options above
[discord]
bot_token = ""
channel_id = ""
auto_webhook = true # create/reuse a webhook so chat shows player names
auto_webhook_name = "Viscord"
webhook_url = "" # set to use your own webhook instead
invite_url = ""
[discord.events]
channel_id = "" # separate channel for join/leave/status
[fluxer]
bot_token = ""
channel_id = ""
event_channel_id = ""
webhook_url = ""
[messages]
game_to_discord = "{message}"
game_to_discord_bot = "**{username}**: {message}" # used only if no webhook is available
discord_to_game = "[Discord] {username}: {message}"
webhook_username = "{prefix} {username}"
use_display_name = true
[messages.events]
join = true
leave = true
startup = true
shutdown = true
[filters]
ignore_bots = true # turn off for server-to-server: other servers post as bots
ignore_webhooks = true
trusted_bot_ids = ""
ignore_own_prefix = true # loop guard: drop our own posts coming back
show_other_server_events = true # relay other servers' tagged messages into game
require_prefix = false # true = only relay chat starting with the prefix
[filters.chat]
prefix = "!"
[bot_status]
enabled = true
format = "Online: {online}/{max}"
Requirements
- Hytale dedicated server 0.7.x (built and verified against 0.7.4)
- Java 25 (bundled with the Hytale server install)
- Side: server only · no dependencies
Notes
- Current release: 1.0.0 - stable interface (config keys and
/viscordcommands). - Early plugin: the Hytale server API is young and moves between releases. Pin the plugin version that matches your server version.
- Config edits apply with
/viscord reload; missing keys are added automatically when you update the plugin, and a malformed file falls back to defaults instead of disabling chat. - Avatars are rendered by the public hytl.skin API. Set
avatar_type = "none"to skip that call entirely. - Viscord talks only to the Discord and Fluxer APIs, with your own tokens. No third-party webhooks, no player data collection.
Support
Issues and configuration help: https://vonix.network - or find us in the Vonix Network Discord.
Built by Vonix Network, the same team behind Viscord for Minecraft (1.18.2 -> 26.3, Fabric / Forge / NeoForge).

