Loading...
Beta Modpages Unclaimed

wsmc

Enable Websocket support for Minecraft Java.

0 Likes
144 Downloads
Created by rikka0w0

Description

WSMC

Enable Websocket support for Minecraft Java. Since most CDN providers(at least for their free tier) do not support raw TCP proxy, with the help of this mod, the owner can now hide the server behind a CDN and let the players connect via WebSocket, thus preventing DDoS attacks.

For Minecraft 1.20.1 to 1.20.4, Forge and Fabric.

If you want to run this mod on a Minecraft version that is currently not supported, please post a GitHub issue or leave a comment here.

This mod runs standalone and does not have any dependency.

When this mod is installed on a server:

  • The server would allow players to connect via WebSocket.
  • Players can still join using vanilla TCP.
  • The server accepts and handles TCP and WebSocket connections on the same listening port.
  • Without installing this mod on the client side, a player can still join a server that has this mod using vanilla TCP.
  • The server can acquire client statistics (e.g., real IP) from the WebSocket handshake..

When this mod is installed on a client:

  • The client can join WebSocket-enabled servers using URI like ws://hostname.com:port/path_to_minecraft_endpoint.
  • The client can join any servers using vanilla TCP using the old syntax, e.g. hostname_or_ip:port.

Note

  • This mod does not affect any gameplay.
  • This mod does not modify any GUI.
  • Vanilla clients can join your server even if you install this mod, note that other mods you have may prevent vanilla clients from joining.
  • Installing this mod on your client does not prevent you from joining other vanilla or mod servers.
  • The server can still get the real IP of the players who joined via CDN-proxied WebSocket.
  • This mod is compatible with other TCP-WebSocket proxies, such as websocat.

Client Options

Sometimes the DNS returns a slow IP for the HTTP hostname (ws) or the SNI (wss). The client may want to control how to resolve the IP address.

The client can optionally control the HTTP hostname and the SNI used during WebSocket handshake:

Insecure WebSocket connection with http hostname specified:
ws://[email protected]

Specify sni and http hostname to the same value(sni-host.com), resolve server IP from ip.ip.ip.ip:
wss://[email protected]

Set sni and http hostname differently, resolve server IP from host.com:
wss://sni.com:@host.com[:port]

Set sni and http hostname differently, resolve server IP from sni.com:
wss://:[email protected][:port]

Set sni, http hostname, and the server address seperately
wss://sni.com:[email protected]

Port and path specification can be appended at the same time.

Configuration

The configuration of this mod is passed in the "system properties". You can use -D in the JVM command line to pass such options.

Property Key Type Usage Side Default Example
wsmc.disableVanillaTCP boolean Disable vanilla TCP login and server status. Server false true
wsmc.wsmcEndpoint string Set the WebSocket Endpoint for Minecraft login and server status. If this property does not exist, a client can join the game via ANY WebSocket Endpoint. Must start with /, case-sensitive. Server Not set /mc
wsmc.debug boolean Show debug logs. Server Client false true
wsmc.dumpBytes boolean Dump raw WebSocket binary frames. Work only if wsmc.debug is set to true. Server Client false true
wsmc.maxFramePayloadLength string Maximum allowable frame payload length. Setting this value to your modpack's requirement else Netty will throw error "Max frame length of x has been exceeded". Server Client 65536 65536

For developers

On the server side, if a client joins via WebSocket, its handshake request can be accessed via the vanilla net.minecraft.network.Connection class. To obtain such information, cast a Connection instance into IConnectionEx, then calls IConnectionEx.getWsHandshakeRequest().

This is useful for obtaining information about the original request if the Minecraft server is behind a reverse proxy (e.g. a CDN). For example, header X-Forwarded-For and CF-IPCountry indicate the client IP address and the client country code, respectively.


AD Become Premium to remove Ads!

What means Verified?

  • Compatibility: The mod should be compatible with the latest version of Minecraft and be clearly labeled with its supported versions.
  • Functionality: The mod should work as advertised and not cause any game-breaking bugs or crashes.
  • Security: The mod should not contain any malicious code or attempts to steal personal information.
  • Performance: The mod should not cause a significant decrease in the game's performance, such as by causing lag or reducing frame rates.
  • Originality: The mod should be original and not a copy of someone else's work.
  • Up-to-date: The mod should be regularly updated to fix bugs, improve performance, and maintain compatibility with the latest version of Minecraft.
  • Support: The mod should have an active developer who provides support and troubleshooting assistance to users.
  • License: The mod should be released under a clear and open source license that allows others to use, modify, and redistribute the code.
  • Documentation: The mod should come with clear and detailed documentation on how to install and use it.

AD Become Premium to remove Ads!

How to Install

1

Download Forge & Java

Download Forge from the offical Site or here. If you dont have Java installed then install it now from here. After Downloading Forge you can run the file with Java.

2

Prepare

Lounch Minecraft and select your Forge istallation as Version this will create a Folder called Mods.

3

Add Mods

Type Win+R and type %appdata% and open the .minecraft Folder. There will you find your Folder called Mods. Place all Mods you want to play in this Folder

4

Enjoy

You are now Ready. Re-start your Game and start Playing.

More Mods like this

Mouse Tweaks

Enhances inventory management by adding various functions to the mouse buttons.

Bookshelf

An open source library for other mods!

Comforts (Fabric/Forge/Quilt)

Adds sleeping bags and hammocks for, respectively, portability and turning day to night, without setting new spawns. Comes in 16 different colors!

BetterFps

Performance Improvements

Supplementaries

Vanilla+ additions: Jars, signposts, faucets, weather vanes spring launchers, sconces, planters, lights, decoration and automation

RandomPatches (Forge)

A bunch of miscellaneous patches for Minecraft, including configurable connection timeouts, player speed limits and other bug fixes and improvements.

FancyMenu

Customize Minecraft's menus with ease!

Phosphor (Forge)

Performance improvements for Minecraft's lighting engine

Snad

Finally, sand that actually makes sugarcane grow faster.