Skip to content

magneticflux-/fabric-mumblelink-mod

Repository files navigation

fabric-mumblelink-mod

A Fabric mod that connects to the Mumble Link plugin.

Current features:

  • Positional audio link to Mumble
  • Separation between different dimensions
  • Automatic log-in to a server-provided Mumble server
  • Separation of team comms / server comms / etc.

Planned features:

  • None needed? Please open an issue if you have a use case not covered yet!

For players

Mumble

  1. Install and start Mumble
  2. Enable "Link to Game and Transmit Position" in Mumble
  3. Join a Mumble server
  4. Join a Minecraft world!

Troubleshooting (IMPORTANT)

If you have issues, try these steps first: https://github.com/magneticflux-/fabric-mumblelink-mod/wiki/Troubleshooting

TeamSpeak

  1. Install and start TeamSpeak
  2. Enable the CrossTalk plugin in TeamSpeak
  3. Join a Teamspeak server
  4. Join a Minecraft world!

For server operators

The plugin is not required on servers, but having it on the server will allow clients to automatically join a VoIP server of your choosing.

Configuration

Trivial

Trivial configuring of the server may be done by specifying the host and port. Clients will simply join the root of the VoIP server. For dimension, team, and server separation, see below.

Dimension separation may also be accomplished by users setting the "Y-Axis multiplier for dimension IDs" to a value above 512. This makes users in the Nether and End appear 512 blocks below and above users in the Overworld, respectively. This approach is not recommended for larger servers, but it may work fine for servers with < 5 people.

Non-trivial

Before going any further, make sure you understand RFC 3986! Most of the non-trivial configuration is done through the use of templated strings. The userinfo, path, query, and fragment strings of the URI sent to clients to be opened are template strings, so parts of them may be replaced by user- and server-specific information. Below is a table of available template values:

Template index Value source Example values
{0} Full dimension ID "Minecraft Overworld", "Minecraft The Nether", "Minecraft The End", "Simplevoidworld Void", "Ezwastelands Wastelands"
{1} Dimension namespace "Minecraft", "Simplevoidworld", "Ezwastelands"
{2} Dimension path "Overworld", "The Nether", "The End"
{3} Team name "Red Team", "Team 1", ""

Some example paths:

  • /My Server/{2}
    • This routes users to a root channel /My Server and a subchannel that matches their dimension. The server should have channels /My Server/Overworld, /My Server/The Nether, and /My Server/The End to support the vanilla Minecraft dimensions.
  • /PvP Teams/{2}/{3}
    • This routes users to a root channel /PvP Teams, a subchannel that matches the dimension, and a sub-subchannel that matches their team name. The server should have channels for all combinations of dimension and team.

If a server does not have a channel for a certain path, the user will remain in their previous channel until their client receives a path that exists.

For more reference on Mumble URIs, see their wiki page.

For more reference on TeamSpeak URIs, see their FAQ.

More Channel Path Details

In Mumble, the channel path should go in the URI path.

In TeamSpeak, the channel path should go in a query parameter called channel.

Security considerations

Servers with this mod will be able to open Mumble or TeamSpeak URIs through your client. Servers cannot open arbitrary URLs, because only the required information (userinfo, host, port, path, query, and fragment) is sent to the client. It is important to note that a full URL is not sent to the client; the scheme is hard-coded. Only vulnerabilities in Mumble or TeamSpeak may be exploited, and only by servers trusted by the player.

The client-side URI construction is this snippet from ClientMumbleLinkMod.kt:

val uri = URI(voipClient.scheme, userinfo, host, port, path, query, fragment)

If you feel generous or want to encourage my work, you can throw a few dollars my way here:

ko-fi

paypal