feat: send Login Disconnect with custom message on blocked join

Previously a blocked join just dropped the socket, so the MC client
showed 'Internal Exception: SocketException: Connection reset'.

Now when next_state=2 (login), the proxy sends a proper Login
Disconnect (0x00) packet containing a JSON chat component, and the
client displays the message on its disconnect screen.

- block_message added to config (default Korean message); editable
  in Settings UI as a textarea
- build_login_disconnect() encodes (varint length)+(0x00)+(JSON str)
- Status/ping (next_state=1) still silently dropped so the proxy
  presence is not announced to scanners
- Backward-compat: load_config() backfills block_message on old files
This commit is contained in:
2026-05-23 17:10:49 +09:00
parent 4b0d790748
commit 75c4242365
7 changed files with 79 additions and 4 deletions

View File

@@ -159,7 +159,8 @@ button.mt { margin-top: 12px; }
input:disabled { opacity: 0.7; cursor: not-allowed; }
input,
select {
select,
textarea {
background: var(--bg);
color: var(--text);
border: 1px solid var(--border);
@@ -168,8 +169,15 @@ select {
font-size: 14px;
font-family: inherit;
}
textarea {
width: 100%;
max-width: 520px;
resize: vertical;
margin-top: 4px;
}
input:focus,
select:focus {
select:focus,
textarea:focus {
outline: none;
border-color: var(--accent);
}