feat: add support for username, IP, and port configuration via launch arguments
This commit is contained in:
@@ -766,33 +766,44 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
|||||||
//g_iScreenHeight = 544;
|
//g_iScreenHeight = 544;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default username will be "Windows"
|
char cmdLineA[1024];
|
||||||
strncpy_s(g_Win64Username, sizeof(g_Win64Username), "Windows", _TRUNCATE);
|
strncpy_s(cmdLineA, sizeof(cmdLineA), lpCmdLine, _TRUNCATE);
|
||||||
|
|
||||||
char exePath[MAX_PATH] = {};
|
char *nameArg = strstr(cmdLineA, "-name ");
|
||||||
GetModuleFileNameA(NULL, exePath, MAX_PATH);
|
if (nameArg)
|
||||||
char* lastSlash = strrchr(exePath, '\\');
|
|
||||||
if (lastSlash) *(lastSlash + 1) = '\0';
|
|
||||||
|
|
||||||
char filePath[MAX_PATH] = {};
|
|
||||||
_snprintf_s(filePath, sizeof(filePath), _TRUNCATE, "%susername.txt", exePath);
|
|
||||||
|
|
||||||
FILE* f = nullptr;
|
|
||||||
if (fopen_s(&f, filePath, "r") == 0 && f)
|
|
||||||
{
|
{
|
||||||
char buf[128] = {};
|
nameArg += 6;
|
||||||
if (fgets(buf, sizeof(buf), f))
|
while (*nameArg == ' ') nameArg++;
|
||||||
{
|
char nameBuf[17];
|
||||||
int len = (int)strlen(buf);
|
int n = 0;
|
||||||
while (len > 0 && (buf[len - 1] == '\n' || buf[len - 1] == '\r' || buf[len - 1] == ' '))
|
while (nameArg[n] && nameArg[n] != ' ' && n < 16) { nameBuf[n] = nameArg[n]; n++; }
|
||||||
buf[--len] = '\0';
|
nameBuf[n] = 0;
|
||||||
|
strncpy_s(g_Win64Username, 17, nameBuf, _TRUNCATE);
|
||||||
|
}
|
||||||
|
|
||||||
if (len > 0)
|
char *ipArg = strstr(cmdLineA, "-ip ");
|
||||||
{
|
if (ipArg)
|
||||||
strncpy_s(g_Win64Username, sizeof(g_Win64Username), buf, _TRUNCATE);
|
{
|
||||||
}
|
ipArg += 4;
|
||||||
}
|
while (*ipArg == ' ') ipArg++;
|
||||||
fclose(f);
|
char ipBuf[256];
|
||||||
|
int n = 0;
|
||||||
|
while (ipArg[n] && ipArg[n] != ' ' && n < 255) { ipBuf[n] = ipArg[n]; n++; }
|
||||||
|
ipBuf[n] = 0;
|
||||||
|
strncpy_s(g_Win64MultiplayerIP, 256, ipBuf, _TRUNCATE);
|
||||||
|
g_Win64MultiplayerJoin = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *portArg = strstr(cmdLineA, "-port ");
|
||||||
|
if (portArg)
|
||||||
|
{
|
||||||
|
portArg += 6;
|
||||||
|
while (*portArg == ' ') portArg++;
|
||||||
|
char portBuf[16];
|
||||||
|
int n = 0;
|
||||||
|
while (portArg[n] && portArg[n] != ' ' && n < 15) { portBuf[n] = portArg[n]; n++; }
|
||||||
|
portBuf[n] = 0;
|
||||||
|
g_Win64MultiplayerPort = atoi(portBuf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
14
README.md
14
README.md
@@ -33,10 +33,22 @@ Basic LAN multiplayer is available on the Windows build
|
|||||||
- Other players on the same LAN can discover the session from the in-game Join Game menu
|
- Other players on the same LAN can discover the session from the in-game Join Game menu
|
||||||
- Game connections use TCP port `25565` by default
|
- Game connections use TCP port `25565` by default
|
||||||
- LAN discovery uses UDP port `25566`
|
- LAN discovery uses UDP port `25566`
|
||||||
- You can override your in-game username at launch with `username.txt`
|
|
||||||
|
|
||||||
This feature is based on [LCEMP](https://github.com/LCEMP/LCEMP/)
|
This feature is based on [LCEMP](https://github.com/LCEMP/LCEMP/)
|
||||||
|
|
||||||
|
### Launch Arguments
|
||||||
|
|
||||||
|
| Argument | Description |
|
||||||
|
|--------------------|----------------------------------------------------------------------------------------------------------------|
|
||||||
|
| `-name <username>` | Sets your in-game username |
|
||||||
|
| `-ip <address>` | Manually connect to an IP if LAN advertising does not work or if the server cannot be discovered automatically |
|
||||||
|
| `-port <port>` | Override the default port if it was changed in the source |
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```
|
||||||
|
Minecraft.Client.exe -name Steve -ip 192.168.0.25 -port 25565
|
||||||
|
```
|
||||||
|
|
||||||
## Controls (Keyboard & Mouse)
|
## Controls (Keyboard & Mouse)
|
||||||
|
|
||||||
- **Movement**: `W` `A` `S` `D`
|
- **Movement**: `W` `A` `S` `D`
|
||||||
|
|||||||
Reference in New Issue
Block a user