Commit graph

1379 commits

Author SHA1 Message Date
itsRevela 45987849b8 fix: add checkout to release jobs for gh cli 2026-03-29 14:29:06 -05:00
itsRevela 91e8b9cef4 fix: heredoc indentation and cleanup-tag without checkout
Remove --cleanup-tag (requires local git repo). Delete tags via API
instead. Fix heredoc terminators for release notes.
2026-03-29 14:21:05 -05:00
itsRevela cf7cd32116 feat: use GitHub API for signed release tags
Replace andelf/nightly-release with gh CLI commands that create tags
via the GitHub API, which auto-signs them with the github-actions bot
key for the green Verified badge.
2026-03-29 14:13:19 -05:00
itsRevela b3db1da8cb fix: set prerelease to false for nightly releases 2026-03-29 13:57:36 -05:00
itsRevela c405ee9036 fix: use correct release tags and client description
Use capitalized tags (Nightly, Nightly-Dedicated-Server) to match
existing releases. Restore full client release body with instructions,
multiplayer setup, and fork explanation.
2026-03-29 13:56:29 -05:00
itsRevela 0fd15d360f feat: consolidate nightly workflows with signed builds
Merge client and server nightly releases into a single workflow.
Add artifact attestation for signed builds. Use CMake instead of
MSBuild. Preserve LCRE naming, top-level zip folders, and commit
hash release titles.
2026-03-29 13:46:18 -05:00
neoapps-dev ae2dac022c feat(parity): climbable trapdoor if connected to ladder 2026-03-29 20:50:57 +03:00
itsRevela e706466f42 Send AddPlayerPacket for all players on join and RemoveEntitiesPacket on disconnect
Players now appear in each other's Tab list immediately on join,
regardless of render distance. Previously, players only appeared when
they entered entity tracking range because AddPlayerPacket was only
sent through the TrackedEntity system.

On disconnect, a RemoveEntitiesPacket is broadcast to all clients so
players added via the join broadcast are properly cleaned up, not just
those within tracking range.
2026-03-29 20:30:12 +03:00
itsRevela 0ebdbac933 Fix player list map icon colors to match map markers
The tab player list and teleport menu now show the correct map marker
color for each player. The icon is computed using the same hash as the
map renderer (getRandomPlayerMapIcon) and stored by player name,
bypassing the unreliable small-ID lookup that produced wrong colors
on dedicated servers.
2026-03-29 20:30:12 +03:00
itsRevela 618dc78008 Fix player list not showing all players on dedicated servers
Register remote players in the client's IQNet array when their
AddPlayerPacket arrives, so they appear in the Tab player list.
Previously only the host and local player were registered.

Also filter the dedicated server's phantom host entry (slot 0, empty
gamertag) from the UI, fix tick() to update entries by smallId instead
of sequential index, and fix player removal to use gamertag matching
since XUIDs are 0 on dedicated servers.
2026-03-29 20:30:11 +03:00
piebot 774f2fed61 Update README.md 2026-03-29 19:16:34 +02:00
neoapps-dev 267d98954b fix: change painting gaps from 16 to 32 2026-03-29 19:21:04 +03:00
neoapps-dev 48a5e882e3 omg i forgot to track the stb image write file lol 2026-03-29 18:52:59 +03:00
neoapps-dev 1028ee2e6d fix: stb import 2026-03-29 18:29:04 +03:00
neoapps-dev d717f18628 feat: F2 for screenshotting
some code used from MLRE
2026-03-29 18:22:45 +03:00
irice7 e8ac5b16ea Add cancel join
Adds the Cancel Join tooltip to the "Connecting to host"
progress bar
2026-03-29 17:03:12 +03:00
neoapps-dev 0073f5569b switch to LLVM 21 and use cron 2026-03-29 14:18:14 +02:00
itsRevela 59fd7266b6 Merge upstream/main (skip CI workflow changes) 2026-03-29 01:03:35 -05:00
rtm516 38d58f2d8b
Update actions workflows and add clang format check for PRs (#1418)
* Add clang-format workflow for pull request checks

* Modify push paths in nightly workflow

Updated paths for push event to include all files except specified ones.

* Update paths for nightly-server workflow triggers

* Modify paths for pull request triggers

Update pull request workflow to include specific paths.

* Tidy up clang-format installation in workflow
2026-03-28 23:35:25 -05: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
Revela 1036c360dc
Merge branch 'smartcmd:main' into main 2026-03-28 19:19:42 -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
neoapps-dev 2b743bfff4 -j3 2026-03-29 00:04:45 +01:00
neoapps-dev cb9f4fe624 CI mode 2026-03-28 23:52:55 +01:00
neoapps-dev d52e64635a Update .gitea/workflows/nightly.yml 2026-03-28 23:49:58 +01:00
neoapps-dev 7124ebe0ef retry build once if it fails 2026-03-28 23:42:58 +01:00
neoapps-dev f212a9290a Update .gitea/workflows/nightly.yml
yes imma hardcode now, im tired of this
2026-03-28 23:31:53 +01:00
neoapps-dev a53cc967df fix(workflow): switch to LLVM 19
istg if this doesnt work...

Signed-off-by: neoapps-dev <neoapps-dev@noreply.codeberg.org>
2026-03-28 23:02:06 +01:00
neoapps-dev 6a76e0f515 me hates this 2026-03-28 22:45:06 +01:00
neoapps-dev e8b36315bd did i say i hate codeberg 2026-03-28 22:41:08 +01:00
neoapps-dev 09b098e1b1 how did i misspell the username omg 2026-03-28 22:38:03 +01:00
neoapps-dev c268af89bc i hate this 2026-03-28 22:36:36 +01:00
neoapps-dev 8dd3e1cd6a gtfo rust 2026-03-28 22:16:10 +01:00
neoapps-dev c9d60db80d add .win to gitignore 2026-03-28 21:58:49 +01:00
neoapps-dev 9e53cea7ff forgot the dot 2026-03-28 21:58:01 +01:00
neoapps-dev 11e84b17e0 Update .gitea/workflows/nightly.yml 2026-03-28 21:57:47 +01:00
neoapps-dev 58e0b4ff7b fix: change cache dir to PWD instead of HOME 2026-03-28 21:56:01 +01:00
neoapps-dev bd55d6ea48 now i hate ubuntu as well 2026-03-28 21:45:42 +01:00
neoapps-dev 893f882cf5 Update .gitea/workflows/nightly.yml 2026-03-28 21:26:18 +01:00
neoapps-dev 42e6e1a43a ARE YOU KIDDING ME CODEBERG?? 2026-03-28 21:19:19 +01:00
neoapps-dev c5276d2a41 im gonna die 2026-03-28 21:17:35 +01:00
neoapps-dev 50abba796b Update .gitea/workflows/nightly.yml 2026-03-28 21:13:22 +01:00
neoapps-dev b6af4f69a8 Update .gitea/workflows/nightly.yml 2026-03-28 21:10:18 +01:00
neoapps-dev 5574d8ef6f fix(workflows): install rust
i hate you forgejo
2026-03-28 21:09:26 +01:00
neoapps-dev 17b4b965e1 fix: install rust (of course) 2026-03-28 22:56:07 +03:00
Botch 277d74716e
Render custom skin boxes on viewmodel (#1415)
* Update PlayerRenderer.cpp

* Fix fatal bug where skins with no additional boxes would crash the game
2026-03-28 14:44:27 -05:00
neoapps-dev 71edfc19ff feat: generic build script 2026-03-28 22:34:13 +03:00
piebot d8118fcadc Update README.md 2026-03-28 16:14:09 +01: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