57 Commits

Author SHA1 Message Date
rtm516
02a5961f39 Move project to CMake (#781)
* Move to cmake

* Move sources to source_groups and ditch more old VS files

* Add BuildVer.h generation

* Break out cmake source lists to platforms

* Don't copy swf files

* Revert audio changes from merge

* Add platform defines

* Match MSBuild flags

* Move BuildVer.h to common include and fix rebuild issue

* Seperate projects properly

* Exclude more files and make sure GameHDD exists

* Missing line

* Remove remaining VS project files

* Update readme and actions

* Use incremental LTCG

* Update workflows

* Update build workflows and output folder

* Disable vcpkg checks

* Force MSVC

* Use precompiled headers

* Only use PCH for cpp

* Exclude compat_shims from PCH

* Handle per-platform source includes

* Copy only current platform media

* Define Iggy libs per platform

* Fix EnsureGameHDD check

* Only set WIN32_EXECUTABLE on Windows

* Correct Iggy libs path

* Remove include of terrain_MipmapLevel

* Correct path to xsb/xwb

* Implement copilot suggestions

* Add clang flags (untested)

* Fix robocopy error checking

* Update documentation

* Drop CMakePresets.json version as we dont use v6 features

* Always cleanup artifacts in nightly even if some builds fail

* Re-work compiler target options

* Move newer iggy dll into redist and cleanup

* Fix typos

* Remove 'Source Files' from all source groups

* Remove old ps1 build scripts
2026-03-17 16:39:22 -05:00
Loki Rautio
a3ca23fdf6 Cleanup project credits and README 2026-03-17 16:15:26 -05:00
Loki Rautio
f8963326fe Update README.md 2026-03-15 03:10:20 -05:00
Loki Rautio
ab9b034c51 Update README.md
fixed up some ordering and made it a little more organized, added new
banner image
2026-03-15 03:09:41 -05:00
kuwa
f483074cd2 Dedicated Server Software - Minecraft.Server.exe (#498)
* add: Dedicated Server implementation

- Introduced `ServerMain.cpp` for the dedicated server logic, handling command-line arguments, server initialization, and network management.
- Created `postbuild_server.ps1` script for post-build tasks, including copying necessary resources and DLLs for the dedicated server.
- Added `CopyServerAssets.cmake` to manage the copying of server assets during the build process, ensuring required files are available for the dedicated server.
- Defined project filters in `Minecraft.Server.vcxproj.filters` for better organization of server-related files.

* add: refactor world loader & add server properties

- Introduced ServerLogger for logging startup steps and world I/O operations.
- Implemented ServerProperties for loading and saving server configuration from `server.properties`.
- Added WorldManager to handle world loading and creation based on server properties.
- Updated ServerMain to integrate server properties loading and world management.
- Enhanced project files to include new source and header files for the server components.

* update: implement enhanced logging functionality with configurable log levels

* update: update keyboard and mouse input initialization 1dc8a005ed

* fix: change virtual screen resolution to 1920x1080(HD)

Since 31881af56936aeef38ff322b975fd0 , `skinHud.swf` for 720 is not included in `MediaWindows64.arc`,
the app crashes unless the virtual screen is set to HD.

* fix: dedicated server build settings for miniaudio migration and missing sources

- remove stale Windows64 Miles (mss64) link/copy references from server build
- add Common/Filesystem/Filesystem.cpp to Minecraft.Server.vcxproj
- add Windows64/PostProcesser.cpp to Minecraft.Server.vcxproj
- fix unresolved externals (PostProcesser::*, FileExists) in dedicated server build

* update: changed the virtual screen to 720p

Since the crash caused by the 720p `skinHud.swf` not being included in `MediaWindows64.arc` has been resolved, switching back to 720p to reduce resource usage.

* add: add Docker support for Dedicated Server

add with entrypoint and build scripts

* fix: add initial save for newly created worlds in dedicated server

on the server side, I fixed the behavior introduced after commit aadb511, where newly created worlds are intentionally not saved to disk immediately.

* update: add basically all configuration options that are implemented in the classes to `server.properties`

* update: add LAN advertising configuration for server.properties

LAN-Discovery, which isn’t needed in server mode and could potentially be a security risk, has also been disabled(only server mode).

* add: add implementing interactive command line using linenoise

- Integrated linenoise library for line editing and completion in the server console.
- Updated ServerLogger to handle external writes safely during logging.
- Modified ServerMain to initialize and manage the ServerCli for command input.
- The implementation is separate from everything else, so it doesn't affect anything else.
- The command input section and execution section are separated into threads.

* update: enhance command line completion with predictive hints

Like most command line tools, it highlights predictions in gray.

* add: implement `StringUtils` for string manipulation and refactor usages

Unified the scattered utility functions.

* fix: send DisconnectPacket on shutdown and fix Win64 recv-thread teardown race

Before this change, server/host shutdown closed sockets directly in
ServerConnection::stop(), which bypassed the normal disconnect flow.
As a result, clients could be dropped without receiving a proper
DisconnectPacket during stop/kill/world-close paths.

Also, WinsockNetLayer::Shutdown() could destroy synchronization objects
while host-side recv threads were still exiting, causing a crash in
RecvThreadProc (access violation on world close in host mode).

* fix: return client to menus when Win64 host connection drops

- Add client-side host disconnect handling in CPlatformNetworkManagerStub::DoWork() for _WINDOWS64.
- When in QNET_STATE_GAME_PLAY as a non-host and WinsockNetLayer::IsConnected() becomes false, trigger g_NetworkManager.HandleDisconnect(false) to enter the normal disconnect/UI flow.
- Use m_bLeaveGameOnTick as a one-shot guard to prevent repeated disconnect handling while the link remains down.
- Reset m_bLeaveGameOnTick on LeaveGame(), HostGame(), and JoinGame() to avoid stale state across sessions.

* update: converted Japanese comments to English

* add: create `Minecraft.Server` developer guide in English and Japanese

* update: add note about issue

* add: add `nlohmann/json` json lib

* add: add FileUtils

Moved file operations to `utils`.

* add: Dedicated Server BAN access manager with persistent player and IP bans

- add Access frontend that publishes thread-safe ban manager snapshots for dedicated server use
- add BanManager storage for banned-players.json and banned-ips.json with load/save/update flows
- add persistent player and IP ban checks during dedicated server connection handling
- add UTF-8 BOM-safe JSON parsing and shared file helpers backed by nlohmann/json
- add Unicode-safe ban file read/write and safer atomic replacement behavior on Windows
- add active-ban snapshot APIs and expiry-aware filtering for expires metadata
- add RAII-based dedicated access shutdown handling during server startup and teardown

* update: changed file read/write operations to use `FileUtils`.

- As a side effect, saving has become faster!

* fix: Re-added the source that had somehow disappeared.

* add: significantly improved the dedicated server logging system

- add ServerLogManager to Minecraft.Server as the single entry point for dedicated-server log output
- forward CMinecraftApp logger output to the server logger when running with g_Win64DedicatedServer
- add named network logs for incoming, accepted, rejected, and disconnected connections
- cache connection metadata by smallId so player name and remote IP remain available for disconnect logs
- keep Minecraft.Client changes minimal by using lightweight hook points and handling log orchestration on the server side

* fix: added the updated library source

* add: add `ban` and `pardon` commands for Player and IP

* fix: fix stop command shutdown process

add dedicated server shutdown request handling

* fix: fixed the save logic during server shutdown

Removed redundant repeated saves and eliminated the risks of async writes.

* update: added new sever files to Docker entrypoint

* fix: replace shutdown flag with atomic variable for thread safety

* update: update Dedicated Server developer guide

English is machine translated.
Please forgive me.

* update: check for the existence of `GameHDD` and create

* add: add Whitelist to Dedicated Server

* refactor: clean up and refactor the code

- unify duplicated implementations that were copied repeatedly
- update outdated patterns to more modern ones

* fix: include UI header (new update fix)

* fix: fix the detection range for excessive logging

`getHighestNonEmptyY()` returning `-1` occurs normally when the chunk is entirely air.
The caller (`Minecraft.World/LevelChunk.cpp:2400`) normalizes `-1` to `0`.

* update: add world size config to dedicated server properties

* update: update README add explanation of  `server.properties` & launch arguments

* update: add nightly release workflow for dedicated server and client builds to Actions

* fix: update name for workflow

* add random seed generation

* add: add Docker nightly workflow for Dedicated Server publish to GitHub Container Registry

* fix: ghost player when clients disconnect out of order

#4

* fix: fix 7zip option

* fix: fix Docker workflow for Dedicated Server artifact handling

* add: add no build Dedicated Server startup scripts and Docker Compose

* update: add README for Docker Dedicated Server setup with no local build

* refactor: refactor command path structure

As the number of commands has increased and become harder to navigate, each command has been organized into separate folders.

* update: support stream(file stdin) input mode for server CLI

Support for the stream (file stdin) required when attaching a tty to a Docker container on Linux.

* add: add new CLI Console Commands for Dedicated Server

Most of these commands are executed using the command dispatcher implemented on the `Minecraft.World` side. When registering them with the dispatcher, the sender uses a permission-enabled configuration that treats the CLI as a player.

- default game.
- enchant
- experience.
- give
- kill(currently, getting a permission error for some reason)
- time
- weather.
- update tp & gamemode command

* fix: change player map icon to random select

* update: increase the player limit

* add: restore the basic anti-cheat implementation and add spawn protection

Added the following anti-cheat measures and add spawn protection to `server.properties`.
- instant break
- speed
- reach

* fix: fix Docker image tag

---------

Co-authored-by: sylvessa <225480449+sylvessa@users.noreply.github.com>
2026-03-15 02:32:50 -05:00
Loki
e6eafda90e Remove another servers.txt reference 2026-03-09 18:27:02 -05:00
Loki
0fbc8903f3 Update README, remove servers.txt references 2026-03-09 18:26:00 -05:00
Tuff CWC
fe65ec24f1 Remove dead link from README (#1064) 2026-03-09 15:02:26 -05:00
Loki
c5229cde93 Update README with download instructions
Added download instructions for Windows users in README.
2026-03-06 13:36:24 -06:00
Loki
563a1b0d12 Update README.md
Add details about current server functionality
2026-03-06 13:34:54 -06:00
T3stAcc
2327161747 Update README.md (#727) 2026-03-06 12:40:51 -06:00
Patrxgt
0d95980dca Added missing dots and linked official Microsoft VS 2022 Community Edition mirror in the build instructions. (#626) 2026-03-06 07:56:28 +07:00
Loki Rautio
a37ebe221c Add Contributor's Guide, update README 2026-03-05 07:23:01 -06:00
daoge_cmd
1dc8a005ed refactor: refactor KBM input code 2026-03-05 01:12:48 +08:00
Loki Rautio
0e9d8629f1 Update README with info about username.txt 2026-03-04 05:59:48 -06:00
daoge_cmd
ef9b6fd500 docs: fix table formatting in README.md 2026-03-04 17:48:19 +08:00
daoge_cmd
5d9f6f6347 docs: mark V-Sync note as WIP in README.md 2026-03-04 17:47:16 +08: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
Mykey
c8a8f9dd6c Update crafting controls description (#359)
Clarified crafting controls in README.
2026-03-04 12:32:51 +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
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
daoge_cmd
77a161e813 docs: update Discord invite link in README.md 2026-03-03 11:23:15 +08:00
daoge_cmd
52a954e06e docs: simplify LAN multiplayer section in README.md 2026-03-03 07:56:23 +08:00
daoge_cmd
24da81a1ca docs: add LAN multiplayer details to README.md 2026-03-03 07:51:20 +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
Twig6943
2189da6f92 Make ci skip on non important stuff - give tutorial image a name (#202) 2026-03-03 06:01:00 +07:00
daoge_cmd
fd6350b7f9 docs: update version reference in README.md 2026-03-03 05:49:21 +08:00
daoge_cmd
1fbc2d1eb8 docs: clarify platform support and building requirements in README.md and COMPILE.md 2026-03-03 05:43:32 +08:00
daoge_cmd
e53d41d333 docs: fix typo in README.md 2026-03-03 05:24:34 +08:00
daoge
bdc8fb5dfa docs: update README.md 2026-03-03 03:10:29 +08:00
daoge
b3feddfef3 feat: TU19 (Dec 2014) Features & Content (#155)
* try to resolve merge conflict

* feat: TU19 (Dec 2014) Features & Content (#32)

* December 2014 files

* Working release build

* Fix compilation issues

* Add sound to Windows64Media

* Add DLC content and force Tutorial DLC

* Revert "Add DLC content and force Tutorial DLC"

This reverts commit 97a4399472.

* Disable broken light packing

* Disable breakpoint during DLC texture map load

Allows DLC loading but the DLC textures are still broken

* Fix post build not working

* ...

* fix vs2022 build

* fix cmake build

---------

Co-authored-by: Loki <lokirautio@gmail.com>
2026-03-03 03:04:10 +08:00
daoge_cmd
bbb199c2a2 feat(timer): improve high-FPS timing with high-resolution Windows clock 2026-03-03 00:31:47 +08: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
daoge_cmd
5c3040affe docs: update README.md 2026-03-03 00:01:15 +08: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
void_17
320550b30b Add download link to README.md
For newbies
2026-03-02 20:37:20 +07: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
hexadexxa
6d9d43c9e9 Remove duplicate input support mention (#121)
* Remove duplicate input support mention

Removed duplicate mention of keyboard and mouse input support.

* Remove DPI awareness line in README

---------

Co-authored-by: void_17 <61356189+void2012@users.noreply.github.com>
2026-03-02 17:41:28 +07:00
red
fa4a1206b3 feat: now can skip the tutorial (#82)
* now possible to accept and decline tutorial hints

that part when it asks if you want to do the tutorial (should work for when the games asks if you already know something like when opening inventories for the first time)

* Update ChoiceTask.cpp

---------

Co-authored-by: daoge <3523206925@qq.com>
2026-03-02 13:40:04 +08:00
Vvis
75bf7ee54a Allow TAB to open host options (#97) 2026-03-02 13:33:18 +08:00
isaiah
5109b8c07a Add CMake build system and source files for Minecraft Client
- Created Compile.md with detailed instructions for building the project using Visual Studio and CMake.
- Added ClientSources.cmake to define the source files for the Minecraft Client.
- Implemented CopyAssets.cmake to handle asset copying during the build process.
- Introduced WorldSources.cmake to list the source files for Minecraft world functionalities.
2026-03-01 15:47:31 -07:00
WushR00M
08b81c34fb Update image path in README.md 2026-03-01 14:18:16 -07:00
NΞVΛR
e31d31f018 Add double-tap sprint and mouse toggle
Update controls in README: expand Sprint entry to include "Double-tap W" as an alternative to holding Ctrl, and add a new "Toggle Mouse Capture" binding (Left Alt) for debugging. Documentation-only change to clarify input options.
2026-03-01 21:29:10 +01:00
NΞVΛR
82fb9f4e33 added Controls info (Keyboard & Mouse) to readme 2026-03-01 19:50:45 +01:00
daoge_cmd
47e00f7b62 feat: improve mouse input handling 2026-03-02 00:43:04 +08:00
daoge_cmd
515f8e6fa7 doc: remove outdated note about missing sound effects in README.md 2026-03-01 21:23:29 +08:00