Commit Graph
404 Commits
Author SHA1 Message Date
Sylvessa 207a1b309f optimization: async dedicated server autosaving (#1473) 2026-04-05 16:17:01 -05:00
Sylvessa d758eb887f fix: wither and ender dragon custom names (#1472) 2026-04-05 16:11:56 -05:00
Us3ful"-Dev 931b5e9dcb Quality of life netherportal fix (#1337)
* Working New portal checks

fixed x axis portal with obsidian on z axis

* Removed Debug code

* Remove unnecessary code

removed PortalTile:: from PortalTile::validPortalFrame

* Remove more debug code
2026-04-05 16:08:57 -05:00
Sylvessa 4e6c695899 fix: boat plr height & sneak height (#1459) 2026-04-05 16:08:17 -05:00
itsRevela 207d90de28 perf: process 16 chunks/player/tick on dedicated server, revert async save
Chunk loading now batches up to 16 nearest-first requests per player per
tick on dedicated server (client stays at 1), improving tick recovery
time after player join.

Reverts the async save system -- the background thread snapshot/compress
path added complexity without measurable benefit. Autosave on Windows64
server now uses the standard synchronous flush like client, in
preparation for a proper async implementation from upstream.
2026-04-05 15:56:39 -05:00
Sylvessa 034c313ddf optimization: async dedicated server autosaving (#1473) 2026-04-05 12:57:43 -05:00
piebot 3fd6d53e76 fix CI 2026-04-05 18:38:23 +03:00
neoapps-dev 03d66d8f1d fix 2026-04-05 16:42:48 +02:00
SevenToaster509 0374dc5a82 FUCK MICROSOFT 2026-04-05 15:33:49 +01:00
SevenToaster509 546a279cc9 Book & Quill - Initial Commit
Implement Book & Quill:
- IUIScene_WritingBookMenu and UIScene_BookAndQuillMenu for UI
- Edited UIControl_Label to add direct editing (quite hardcoded to my needs right now)
- Reimplement scrapped custom payload packets for books and signing
- Other misc changes

TODO:
- Coloured and scambled text
- Book copying
- Clean up code
2026-04-05 15:05:03 +01:00
Sylvessa a4e689095c fix: wither and ender dragon custom names (#1472) 2026-04-04 22:04:02 -05:00
BrainFart17 d75e167f12 Add fishinghelper and lureenchantment 2026-04-04 06:58:01 -07:00
Us3ful"-Dev 103f38859a Quality of life netherportal fix (#1337)
* Working New portal checks

fixed x axis portal with obsidian on z axis

* Removed Debug code

* Remove unnecessary code

removed PortalTile:: from PortalTile::validPortalFrame

* Remove more debug code
2026-04-03 15:01:48 -05:00
Sylvessa 8bf0343544 fix: boat plr height & sneak height (#1459) 2026-04-02 17:16:31 -05:00
Lord_Cambion e5a8abd2ac herobrine removed 2026-04-02 14:45:46 +02:00
Lord_Cambion a552afded7 doubled speed of minecartfurnace 2026-04-02 14:21:31 +02:00
itsRevela 463bf2b93f fix: player list no longer limited by render distance
The previous IQNet cleanup in handleRemoveEntity fired on every entity
despawn, which happens both when a player goes out of tracking range
and when they disconnect.  This caused players to vanish from the Tab
list whenever they moved beyond render distance.

Introduce two custom payload channels (MC|ForkHello, MC|ForkPLeave) so
the client can distinguish "out of range" from "actually left":

- Server sends MC|ForkHello during login to identify itself as a fork
- Server sends MC|ForkPLeave with the player's gamertag on disconnect
- Client skips IQNet cleanup in handleRemoveEntity on fork servers
- Client cleans up IQNet only when MC|ForkPLeave arrives

Fully backwards-compatible: no existing packet wire formats changed.
Upstream clients ignore the unknown channels, fork clients on upstream
servers fall back to the old entity-tracking-based cleanup.
2026-04-01 16:01:56 -05:00
Lord_Cambion 6ed5bd13db Carica file su "Minecraft.World/cmake/sources" 2026-04-01 21:38:28 +02:00
itsRevela 68521f8c92 fix: async autosave thread safety and commit path
Move StorageManager.AllocateSaveData() back under the save lock (called
on the game thread before releasing). Background thread now only does
pure zlib compression with no StorageManager calls.

Add CommitPendingAsyncSave() to both the game thread tick and
TickCoreSystems() to ensure saves commit during bootstrap, normal
gameplay, and shutdown.
2026-04-01 01:23:50 -05:00
itsRevela 073a511217 perf: async autosave for dedicated server
Autosave previously froze the main thread for 2-6 seconds while
compressing the entire save file with zlib. Now the save buffer is
snapshotted under the lock (~18ms), then compression runs on a
background thread. The compressed data is committed to StorageManager
on the next main-thread tick via CommitPendingAsyncSave().

Also skip redundant full chunk saves during autosave on the dedicated
server -- chunks are already persisted by the per-tick trickle save.
Only entity data is flushed, matching Xbox/Orbis behavior.

Added per-step timing to the autosave handler for diagnostics.
2026-03-31 23:33:21 -05:00
Lord_Cambion 138c7ab028 bug fixes 2026-03-31 18:00:31 +02:00
piebot a38abd4e8d Merge changes from upstream. 2026-03-30 14:28:57 +03:00
neoapps-dev ae2dac022c feat(parity): climbable trapdoor if connected to ladder 2026-03-29 20:50:57 +03:00
neoapps-dev 267d98954b fix: change painting gaps from 16 to 32 2026-03-29 19:21:04 +03:00
itsRevela 245da783b3 feat: upgrade stream cipher from XOR to AES-128-CTR
Replace the XOR obfuscation cipher with AES-128-CTR using the Windows
BCrypt API. Key material grows from 16 to 32 bytes (16 AES key + 16 IV).
All callers auto-adjust via StreamCipher::KEY_SIZE. No handshake or
protocol changes needed beyond the larger MC|CKey payload.
2026-03-28 21:03:45 -05:00
itsRevela ba3ebe666c feat: dedicated server security hardening
Comprehensive security system to protect against packet-sniffing attacks,
XUID harvesting, privilege escalation, bot flooding, and XUID impersonation.

- Stream cipher: per-session XOR cipher with 4-message handshake via
  CustomPayloadPacket (MC|CKey, MC|CAck, MC|COn). Negotiated per-connection,
  backwards compatible (old clients/servers fall back to plaintext).
- Security gate: buffers all game data until cipher handshake completes,
  preventing unsecured clients from receiving any XUIDs or game state.
- Cipher handshake enforcer: kicks clients that don't complete the handshake
  within 5 seconds (configurable via require-secure-client).
- Identity tokens: persistent per-XUID tokens in identity-tokens.json,
  issued over the encrypted channel, verified on reconnect. Prevents XUID
  replay attacks. Client stores server-specific tokens.
- PROXY protocol v1: parses real client IPs from playit.gg tunnel headers
  so rate limiting, IP bans, and XUID spoof detection work per-player.
- Rate limiting: per-IP sliding window (default 5 connections/30s) with
  pending connection cap (default 10).
- Privilege hardening: OP requires ops.json, live checks on every command
  and privilege packet. Host-only server settings changes.
- XUID stripping: PreLoginPacket response sends INVALID_XUID placeholders.
- Packet validation: readUtf global string cap, reduced max packet size,
  stream desync protection on oversized strings.
- OpManager: persistent ops.json with XUID-based OP list.
- Whitelist improvements: whitelist add accepts player names with ambiguity
  detection, XUID cache from login attempts.
- revoketoken command: revoke identity tokens for players who lost theirs.
- server.log: persistent log file written alongside console output with
  flush-per-write to survive crashes.
- CLI security logging: consolidated per-join security summary with cipher
  status, token status, XUID, and real IP. Security warnings for kicks,
  spoofing, and unauthorized commands.
2026-03-28 19:18:06 -05:00
Lord_Cambion 6fe251b2ec minecart tnt fix 2026-03-28 14:44:56 +01:00
Lord_Cambion a282314267 used the entity method instead of my controls for primed tnt 2026-03-28 14:03:56 +01:00
Lord_Cambion 6ba2c6ee24 Revert "better primed tnt water update"
This reverts commit 1490ea80b4.
2026-03-28 14:01:18 +01:00
Lord_Cambion 1490ea80b4 better primed tnt water update 2026-03-28 14:00:49 +01:00
Lord_Cambion 86accb1328 fixed name of cooked fish, the posion effect now doesnt kill you anymore and tnt now get pushed by water 2026-03-28 13:21:04 +01:00
piebot 9f148e8d3b Properly add the TU25 DLCs 2026-03-27 22:30:10 +03:00
Lord_Cambion 1767c635fe reworked the mossyclobblestone feature 2026-03-27 19:38:19 +01:00
Lord_Cambion 8111c594f1 armorstand fix 2026-03-27 18:29:01 +01:00
ItzSonicFanerandItzSonicFaner 84c228e80f Skins (#1)
Check if skin texture height is 64 or 32, slim skins, better slim skins parameters, zombie villager fix.

Co-authored-by: ItzSonicFaner <165782267+ItzSonicFaner@users.noreply.github.com>
Reviewed-on: https://codeberg.org/piebot/LegacyEvolved/pulls/1
Co-authored-by: ItzSonicFaner <itzsonicfaner@noreply.codeberg.org>
Co-committed-by: ItzSonicFaner <itzsonicfaner@noreply.codeberg.org>
2026-03-27 15:35:15 +01:00
neoapps-dev 99ffa05fbf nixy nix 2026-03-27 15:37:57 +03:00
neoapps-dev 1550d42cfd nixy nix 2026-03-27 15:33:08 +03:00
neoapps-dev a0bc73d162 nixy nix 2026-03-27 15:30:12 +03:00
neoapps-dev 90a51e4b12 nixy nix 2026-03-27 15:09:16 +03:00
neoapps-dev 563c2feef6 nixy nix 2026-03-27 15:05:34 +03:00
piebot b3ac4411fe Merge branch 'pr-1403' 2026-03-27 13:11:58 +03:00
itsRevela 35fbc7af17 Fix Ender Dragon damage, End portal transition, and End Poem crash
Dragon melee damage: reassign sub-entity IDs to be sequential from
the parent entity ID in ServerLevel::entityAdded(), so the client's
offset-based ID calculation matches the server. Previously the server's
smallId pool allocated non-sequential IDs, causing melee attacks to
target entity IDs the server didn't recognize.

End portal transition: ensure the player entity is always added to the
new level when transitioning from The End, not just for non-End
dimensions. The addEntity call was previously gated behind a
lastDimension != 1 check that also excluded it from End exits.

End Poem crash: bounds-check the WIN_GAME event's player index before
accessing localplayers[], with a fallback to prevent null dereference
when the server sends an out-of-range index.
2026-03-26 19:46:58 -05:00
Lord Cambion ce764a072c Biome Update pt2 2026-03-26 22:52:52 +01:00
Revela 4f370c45e3 Fix pistons permanently breaking server-wide on dedicated servers (#1420)
triggerEvent() set ignoreUpdate to true at the start but three early
return paths skipped the reset at the end. Once any of these paths was
hit, the TLS flag stayed true permanently, blocking all piston neighbor
updates for the rest of the server session.
2026-03-26 15:16:15 -05:00
Lord Cambion 10b7fc36d3 Biome Update! 2026-03-26 20:37:51 +01:00
piebot 74c197cc15 apparently the commits i did for glass pane didnt apply so 2026-03-26 20:41:29 +03:00
piebot 42af4ed545 Fix fence connect logic 2026-03-26 20:21:36 +03:00
piebot 87348a7e16 Fix Github Actions compile error 2026-03-26 19:09:04 +03:00
itsRevela f2fb995c84 Fix pistons permanently breaking server-wide on dedicated servers
triggerEvent() set ignoreUpdate to true at the start but three early
return paths (lines 221, 225, 250) skipped the reset at the end. Once
any of these paths was hit (common with fast redstone clocks where the
signal state changes between event queuing and processing), the TLS
flag stayed true permanently, blocking all piston neighbor updates for
the rest of the server session.
2026-03-26 10:40:43 -05:00
piebot fc0927065a ACTUALLY fix it 2026-03-26 18:11:27 +03:00