Commit Graph

50 Commits

Author SHA1 Message Date
kuwa
182d76f391 Introduce uid.dat (offline PlayerUIDs), fix multiplayer save data persistence (#536)
* fix: fix multiplayer player data mix between different players bug

Fixes a Win64 multiplayer issue where player data (`players/*.dat`) could be mismatched because identity was effectively tied to connection-order `smallId` XUIDs.
Introduces a deterministic username-derived persistent XUID and integrates it into the existing XUID-based save pipeline.

- Added `Windows64_NameXuid` for deterministic `name -> persistent xuid` resolution
- On Win64 login (`PlayerList`), set `ServerPlayer::xuid` from username-based resolver
- Aligned local player `xuid` assignment (`Minecraft`) for create/init/respawn paths to use the same resolver
- Added Win64 local-self guard in `ClientConnection::handleAddPlayer` using name match to avoid duplicate local remote-player creation
- Kept `IQNet::GetPlayerByXuid` compatibility fallback behavior, while extending lookup to also resolve username-based XUIDs
- Moved implementation to `Minecraft.Client/Windows64/Windows64_NameXuid.h`; kept legacy `Win64NameXuid.h` as compatibility include

Rename migration is intentionally out of scope (same-name identity only).

* fix: preserve legacy host xuid (base xuid + 0) for existing world compatibility

- Add legacy embedded host XUID helper (base + 0).
- When Minecraft.Client is hosting, force only the first host player to use legacy host XUID.
- Keep name-based XUID for non-host players.
- Prevent old singleplayer/hosted worlds from losing/mismatching host player data.

* update: migrate Win64 player uid to `uid.dat`-backed XUID and add XUID based duplicate login guards

- Replace Win64 username-derived XUID resolution with persistent `uid.dat`-backed identity (`Windows64_Xuid` / `Win64Xuid`).
- Persist a per-client XUID next to the executable, with first-run generation, read/write, and process-local caching.
- Keep legacy host compatibility by pinning host self to legacy embedded `base + 0` XUID for existing world/playerdata continuity.
- Propagate packet-authoritative XUIDs into QNet player slots via `m_resolvedXuid`, and use it for `GetXuid`/`GetPlayerByXuid` with legacy fallback.
- Update Win64 profile/network paths to use persistent XUID for non-host clients and clear resolved identity on disconnect.
- Add login-time duplicate checks: reject connections when the same XUID is already connected (in addition to existing duplicate-name checks on Win64).
- Add inline compatibility comments around legacy/new identity coexistence paths for easier future maintenance.

* update: ensure uid.dat exists at startup in client mode for multiplayer
2026-03-06 00:01:36 -06:00
Vincent Zhang
73cc345f54 Add a launch argument for full screen (#663)
* per user config should be .gitignored

* add comment surrounding gitignore update

* make it wildcard

* add fullscreen to launch option struct

* remove redundant forward declaration and use fullscreen launch option in main
2026-03-05 22:54:30 -06:00
catdbg
ee24488ab6 Fix audio settings resetting on launch (#610) 2026-03-05 15:09:36 -06:00
dtentiion
aadb511504 Fix save list, delete save, exit without saving, and blank username on Windows64 (#539)
* Fix world save rename not applying new name

KeyboardCompleteWorldNameCallback had no _WINDOWS64 branch, so the
typed name was validated then silently discarded on every rename attempt.

Write the new name to a worldname.txt sidecar file next to the save
(Windows64\GameHDD\{folder}\worldname.txt) and update the in-memory
display name immediately. ReadLevelNameFromSaveFile now checks for this
sidecar first so renamed saves persist correctly across restarts.

* Fixed gamertag being blank upon renaming and re-joining a save

* Save deletion fix, exiting without saving fix

* Add native in-game keyboard UI for world naming and renaming
2026-03-05 14:57:37 -06:00
ModMaker101
cbcf3de358 Fix gamma slider via pixel shader #178 (#481)
* Fix gamma slider via pixel shader #178

* LCE-like gamma using postprocess shader
2026-03-06 02:41:17 +07:00
void_17
55231bb8d3 Remove AUTO_VAR macro and _toString function (#592) 2026-03-06 02:11:18 +07:00
Alezito2008
053eb0119c Fix F3 opening host menu (#522)
* Fix debug menu opening game info menu

* remove redundant F4 handling
2026-03-05 14:26:19 +07:00
Marlian
3f1388e06f Persist fullscreen setting and start windowed mode maximized (#446)
Save fullscreen toggle state to options.txt when F11 is pressed, and restore it on the next launch. When starting in windowed mode, the window now opens maximized instead of at a smaller default size.

Previously, g_isFullscreen was hardcoded to false and never persisted, so the game always started in windowed mode. The window also started at a non-maximized size requiring manual maximization.

Fixes #391
2026-03-05 03:50:06 +07:00
Fayaz Shaikh
9372887aef Fix for any aspect ratio in 3D Environments (#320)
* Add initial AnyAspectRatio support

* Remove some logic that didn't work

* Remove rogue back slash

* Remove more remnants

* Update UILayer.h

* Update some comments

* Remove WIP UI changes

* Fix diffs

* Remove UI resize call from `UpdateAspectRatio`

* handle merge conflict

* Update to C++ style static cast

* Fix syntax
2026-03-05 02:13:58 +07:00
daoge_cmd
1dc8a005ed refactor: refactor KBM input code 2026-03-05 01:12:48 +08:00
Loki Rautio
ea17b152b7 Restore username.txt loading without conflict
Still allows for -name launch argument, but restores old expected behavior
2026-03-04 05:57:56 -06:00
Loki Rautio
0993e628ab Disable automatic Windows account username
This could reveal someone's private information on a livestream or video.
We need a long-term username implementation
2026-03-04 05:44:16 -06:00
daoge_cmd
d112090fde feat: headless server 2026-03-04 17:29:43 +08:00
daoge_cmd
8ecfc52547 feat: add support for username, IP, and port configuration via launch arguments 2026-03-04 15:33:52 +08:00
rtm516
b1b622c303 Fix overlapping debug menus and screens (#294)
* Fix overlapping debug menus and screens

Also resolves a formatting issue with clang-format

* Update readme
2026-03-04 12:31:47 +08:00
Slenderman
ac480f6745 Update username logic and implement latest LCEMP changes (#311)
* Update username logic and implement latest LCEMP changes

* Update old reference

* Fix tutorial world crash

* Restore deleted comment
2026-03-04 04:50:28 +07:00
Slenderman
515f91cad8 Fix player save data issue & multiple username implementations (#257)
* fix saving issue & multiple username implementations

* Update README.md

Updated the method for overriding in-game username from '-name' to 'username.txt'.

* remove unused include i forgot to get rid of while testing
2026-03-03 23:58:22 +07:00
4win
7ce1fa3452 feat: bind F1 to toggle the HUD settings (#244) 2026-03-03 13:32:26 +08:00
void_17
b42a4a4e4d Revert "Revert "Win64: configurable username (username.txt) and persistent ga…" (#235)
This reverts commit 7f7d99501c.
2026-03-03 10:31:09 +07:00
void_17
7f7d99501c Revert "Win64: configurable username (username.txt) and persistent game setti…" (#234)
This reverts commit b8a7f816b5.
2026-03-03 10:23:28 +07:00
void_17
a5e3cb04b3 Remove #203 core code before a cleaner implementation 2026-03-03 08:45:26 +07:00
void_17
dea460381f Remove dyn_SetProcessDpiAwareness 2026-03-03 07:00:55 +07:00
dtentiion
b8a7f816b5 Win64: configurable username (username.txt) and persistent game settings (settings.dat) (#195) 2026-03-03 07:50:45 +08:00
lspepinho
8b28c20d7a Fixes for PR #96 (#170)
* Implement basic multiplayer functionality

* Update README.md

---------

Co-authored-by: Slenderman <ssimulpong@outlook.com>
2026-03-03 06:30:22 +07:00
DetectivEren
f731a68422 TAB key opens up game info instead of host options (#204)
* TAB key opens up game info instead of host options

TAB key opens up game info menu instead of host options menu because the player accesses host options from game info

* Update README.md
2026-03-03 06:23:59 +07:00
Fayaz Shaikh
41ded31af8 Add dynamic resolution (#203) 2026-03-03 06:04:53 +07:00
Andrew
f917335b13 Fix Windows64 mouse capture and static initialization crashes (#177) 2026-03-03 03:17:10 +07:00
void_17
5a9e512117 Restore Windows 7 compatibility (#160)
* Call SetProcessDpiAwareness via GetProcAddress to preserve Windows 7 compatibility

Shcore.dll and SetProcessDpiAwareness were introduced in Windows 8 and higher, so to keep compatibility with Windows 7, we use GetProcAddress to call this function dynamically, avoiding linker writing binary dependency on shcore.dll in the import table

* Revert "Call SetProcessDpiAwareness via GetProcAddress to preserve Windows 7 compatibility"

This reverts commit f1f397fdbe.

* Reapply the fix
2026-03-03 03:20:24 +08:00
Alex
a4691f58e8 Only handle host options when there is no menu on screen (#140) 2026-03-02 23:02:52 +07:00
void_17
7ad6102763 Revert "Revert "fix: fix resolution detection (#133)" (#143)" (#144)
This reverts commit 8c18926d59.
2026-03-02 23:01:57 +07:00
void_17
8c18926d59 Revert "fix: fix resolution detection (#133)" (#143)
This reverts commit afa4efbc85.
2026-03-02 22:56:56 +07:00
daoge
afa4efbc85 fix: fix resolution detection (#133)
* fix: fix UI skin/scene resolution mismatch and readd screen resolution detection

* fix: fix build in vs2022
2026-03-02 23:52:18 +08:00
Jean
59339a7afc Bound F3 and F4 to open debug menus (#94)
* feat: Added f3 and f4 keys to open debug stuff

* fix: only open debug overlay when ingame, to avoid crashes

* docs: added keybinds to docs

* docs: moved the keybinds to the bottom, as they are less important

* fix: add missing # ifdef
2026-03-02 20:00:02 +07:00
DFelipeh
f9b266e02c add minecraft icon to windows version (#126) 2026-03-02 19:03:40 +07:00
void_17
df2925a4ed Fix Iggy player crashes on systems with DPI changed
The code that was supposed to make the game DPI-aware was broken. I remove it until a proper implementation.
2026-03-02 13:32:41 +07:00
Vvis
75bf7ee54a Allow TAB to open host options (#97) 2026-03-02 13:33:18 +08:00
void_17
99a8c53bc1 Merge pull request #33 from APAmk2/main
Windows: More proper shutdown
2026-03-02 01:28:47 +07:00
Galen Guyer
ec61d19d78 Revert "Merge pull request #25 from NEVARLeVrai/main"
This reverts commit 33e1b5ceb9, reversing
changes made to 44b68333a3.
This is a hacky way of doing it instead of just copying the assets that are needed
2026-03-01 13:14:36 -05:00
APAmk2
3db164d913 Windows: More proper shutdown 2026-03-01 22:13:44 +04:00
NΞVΛR
e23945a020 Fixed performance issue
thx to @void2012
2026-03-01 18:40:09 +01:00
NΞVΛR
fa25430694 Fix for exe not running, not founding the project directory
In _tWinMain (Windows64_Minecraft.cpp) add logic to detect if the executable path contains "\\x64\\". If found, truncate the path at that position, append "\\Minecraft.Client" and call SetCurrentDirectoryA to set the process working directory. This ensures relative resource paths resolve correctly when running from an x64 build output directory; the change is guarded by a substring check and uses MAX_PATH-safe APIs.
2026-03-01 18:19:38 +01:00
daoge_cmd
47e00f7b62 feat: improve mouse input handling 2026-03-02 00:43:04 +08:00
hehcker
e16600a3e6 fix: render issues on release builds (#16) 2026-03-02 00:06:51 +08:00
void_17
754303b327 Fix compilation for Clang-cl (#10)
1. Converted `MinecraftWindows.rc` and `Resource.h` to UTF-8 from UTF-16(they didn't use any UTF-16 symbols anyway);

2. Added explicit signed->unsigned integer casts in `gdraw_d3d1x_shared.inl` for C++11 compatibility

3. Linked against `legacy_stdio_definitions.lib` to avoid undefined references to `_vsnprintf` llvm-link errors
2026-03-01 23:29:08 +08:00
daoge_cmd
5fa4418adb feat: implement per-frame mouse look for reduced input latency on Windows 2026-03-01 21:50:44 +08:00
daoge_cmd
8b1dafd361 feat: add DPI awareness and auto-detect screen resolution 2026-03-01 21:22:02 +08:00
daoge_cmd
4c81c7960c feat: fullscreen mode 2026-03-01 21:05:16 +08:00
daoge_cmd
52a256562f feat: disable vsync 2026-03-01 20:12:58 +08:00
daoge_cmd
bdef1f9412 feat: add support for keyboard and mouse input 2026-03-01 19:20:41 +08:00
daoge_cmd
b691c43c44 Initial commit 2026-03-01 12:16:08 +08:00