Commit graph

802 commits

Author SHA1 Message Date
SevenToaster509 34504b7b93 feat: achievements
fully functional but some achievements dont work yet

EXPERIMENTAL!!!!
2026-04-26 15:27:19 +01:00
itsRevela 44283e5971 fix(server): empty-dim tick gate broke block updates 2026-04-26 00:00:24 -05:00
Fireblade a54552950a fix: tu31 potions in creative menu + level 2 abilities 2026-04-26 00:22:49 -04:00
Fireblade 0043924179 feat: TU41 potion brewing
adds brewing functionality for both jump boost potions + water breathing potions respectively
2026-04-25 20:03:12 -04:00
piebot 8159e7690b
fix: building neoLegacy on linux (#34)
fix. building neoLegacy on linux
2026-04-25 22:01:07 +03:00
itsRevela ce9ffefba6 perf(server): hold 20 TPS at 50-player scale 2026-04-25 13:42:29 -05:00
Fireblade da91372804
chore: clean up paper doll code for redundancy 2026-04-25 12:09:30 -04:00
Fireblade a8b80b377b
Merge branch 'pieeebot:main' into patch 2026-04-24 22:56:18 -04:00
Fireblade 1672dbab05
fix: paper doll viewmodel on non-16:9 window aspect ratios 2026-04-24 22:54:06 -04:00
Tranqlmao 4b6e9f8eb2 Elytra
mfeat: added early access elytra in creative for bug testing/accuracy comparison
TODO: replace temporary atlas, Properly implement 3d skulls
2026-04-24 20:00:35 -04:00
piebot 3c919553ab chore: move all files from .gitea to .github 2026-04-24 18:53:46 +03:00
Fireblade c6a137ec6f fix. building neoLegacy on linux
not sure if bundling an exe file is the best way to do this but oh well
2026-04-23 23:04:47 -04:00
neoapps-dev f75df87aaf fix??: use 4JLibs not manually 2026-04-23 12:18:52 +03:00
neoapps-dev 3fc8cda545 fix?: include 4jlibs headers 2026-04-23 11:43:52 +03:00
neoapps-dev 83a46d335d fix: use the real 4JLibs 2026-04-23 11:35:57 +03:00
neoapps-dev a3f388afa4 bump: 4JLibs 2026-04-22 20:31:33 +03:00
piebot 2653c1d1ba
chore: make 4JLibs a submodule
feat: 4JLibs as a submodule
2026-04-22 16:53:29 +03:00
piebot 5d0c126898
feat: leaderboards! (technically a fix but whatever)
feat. leaderboard
2026-04-22 14:05:24 +03:00
rockefort 918d8bb72f
Merge branch 'pieeebot:main' into main 2026-04-22 02:31:25 -03:00
Frcoxd 04f22ee4f0 Fix: Fixed the ghost tab created by join 2026-04-22 02:30:39 -03:00
Fireblade a5eedcdc9c
hey man i dont think xbox live is a thing anymore nor does it really apply to us 2026-04-21 21:15:38 -04:00
albertbogusz 05c492d6d4 fix: correct casing for include header for Linux build 2026-04-21 20:58:25 +01:00
/home/neo f92d08c74c
Merge branch 'main' into neos-patch 2026-04-21 21:48:17 +03:00
Fireblade 3c731f9cea fix. leaderboard filtration 2026-04-21 14:20:25 -04:00
Fireblade ddcb092552 fix. multiple players on leaderboard 2026-04-21 14:12:38 -04:00
Fireblade 1d78fdb33a feat. leaderboard + fix for building on linux 2026-04-21 13:26:09 -04:00
Patoke 0fc1fd4370 fix: oops, using old commit 2026-04-21 17:54:08 +03:00
Patoke 894dd108a5 fix: forgot submodule 2026-04-21 17:40:24 +03:00
Patoke 626e124d6d feat: 4JLibs as a submodule 2026-04-21 17:36:48 +03:00
piebot f13cbf2e4f Merge remote-tracking branch 'origin/main' 2026-04-21 13:02:11 +03:00
Frcoxd 637bcf7702 Fix: Fixed the double press sound on more options againg on the loadmenu and create world menu
and fix the bug where the save thumbnail wasn't displaying correctly in loadmenu
2026-04-21 00:38:41 -03:00
Frcoxd 4b8ce04efb feat: LoadCreateJoinMenu1080 (alfin wn) 2026-04-20 23:32:59 -03:00
Frcoxd 6d170fa3da Feat: LoadCreateJoin (alfin kliado) 2026-04-20 23:28:09 -03:00
Lord_Cambion 4c8e38c721 feat: stoneslab2
fully implemented stoneslab2 with craftings and revisited existing slabs according to wii u decomp

todo:Material.cs
2026-04-21 01:32:02 +03:00
George V. eed98a6603
chore: replace backslashes with forward slashes for linux cross compilation 2026-04-20 18:15:27 +03:00
piebot e22425e053 Merge remote-tracking branch 'origin/main' 2026-04-20 18:06:41 +03:00
neoapps-dev 168fe6b862 fix: build issue due to duplicates 2026-04-19 18:02:10 +03:00
piebot 5c79ac1b24 Merge remote-tracking branch 'origin/main' 2026-04-19 18:01:17 +03:00
Sestain 73a89b80e1 Fixed DLC audio. 2026-04-19 17:58:23 +03:00
piebot bcb3d96f4a Merge remote-tracking branch 'origin/main' 2026-04-19 17:18:17 +03:00
SevenToaster509 a3ac98884e fix: load/create at lower resolutions, chore: remove console spam 2026-04-19 11:56:34 +01:00
sylvessa f9cac6395b fill in old stubs regaridng chunk stuff & another inv fix 2026-04-18 18:16:24 -05:00
sylvessa a3221c9e14 chunk additions 2026-04-18 18:14:58 -05:00
piebot 1b007b9d0f fix: replace explode sound with modern explode sound 2026-04-18 22:44:55 +03:00
itsRevela c297b26f36 fix: duplicate join message on FourKit servers 2026-04-18 09:10:47 -05:00
SevenToaster509 251c00ecd0 fix: skulls
reimplement player skull rendering to be on armor layer
make skull height for armor stands be accurate to tu31 (matched via xenia)
2026-04-18 14:35:13 +01:00
Lord_Cambion 88b00755de fix: armorstand head now renders correctly 2026-04-18 14:06:44 +02:00
Lord_Cambion ab469e6330 fix: compilation error during release 2026-04-18 13:21:27 +02:00
Lord_Cambion e46404ae38 fix: compilation error for server 2026-04-18 12:59:21 +02:00
Lord_Cambion f2cfbafc26 fix: armorstand according to wiki + wobble animation + head renderer
Armor stands are not damaged by cacti but can be broken by arrows. An armor stand destroyed by an explosion or a firework does not drop as an item. Armor stands in water and lava at the same time are not consumed by the lava.
2026-04-18 12:26:25 +02:00
Lord_Cambion 383302eb2e feat: armorstand from decomp 2026-04-18 03:46:45 +02:00
itsRevela b4a34df1a9 fix: apostrophes rendering as ' in Iggy HTML chat labels 2026-04-17 16:55:56 -05:00
SevenToaster509 27d0a8ffc3 feat: Skulls worn by mobs/players now display on the armor layer 2026-04-17 20:50:32 +01:00
George V. 00399fc2da
fix: Update hardcore mode UI to correctly set gamemode slider 2026-04-17 21:37:15 +03:00
George V. 82c6c5db8f
Merge remote-tracking branch 'itsRevela/main' into upstream-merge
# Conflicts:
#	.github/ISSUE_TEMPLATE/config.yml
#	.github/workflows/nightly.yml
#	Minecraft.Client/Windows64/4JLibs/libs/4J_Profile.lib
#	README.md
2026-04-17 21:22:20 +03:00
SevenToaster509 0f1a2542c8 fix: quick equip
fixed quick equip in survival
removed redundant and commented out code
2026-04-17 19:04:55 +01:00
itsRevela afa3e22715 fix: force backbuffer clear alpha to 1.0 to prevent DWM window transparency 2026-04-17 12:43:46 -05:00
itsRevela cf81dd9d13 fix: apostrophes and quotes displaying as HTML entities in chat 2026-04-17 12:20:58 -05:00
itsRevela fde5fbe6f4 fix: force VSync on main menu to prevent GPU coil whine 2026-04-17 11:55:04 -05:00
itsRevela ce2efc1a4d fix: crash when opening UI scenes at sub-720p window size
SWF movie loading crashed with __debugbreak when the window height was
below 720px (e.g. after leaving exclusive fullscreen). The fallback
chain only tried 720.swf which doesn't exist. Now falls back through
720 -> 1080 so scenes always find a valid SWF.
2026-04-17 07:07:02 -05:00
itsRevela eb5aa9fa8f fix: chat color codes not rendering in singleplayer
PlayerConnection::handleChat called FormatChatMessage with
applyStyling=false before broadcasting, which stripped all color codes
from the message. The client then had nothing left to format. Send the
raw message and let the client handle formatting on receive.
2026-04-17 07:06:39 -05:00
itsRevela 59f9dbc8c6 fix: hardcore mode UI not locking difficulty/gamemode on world load
Three issues fixed:

- Save file path used hardcoded saveData.ms but new 4JLibs names files
  as <title>.ms. ReadLevelNameFromSaveFile now constructs the correct
  path with fallback to saveData.ms for old saves.
- The level.dat code path for reading the hardcore flag (sidecar rename)
  returned early without ever parsing level.dat. Now stores the sidecar
  name and continues to read the hardcore flag from NBT.
- The thumbnail host options path could overwrite m_bHardcore to false.
  Now only upgrades to true, never downgrades.
- Load menu constructor and tick handler both lock difficulty slider to
  Hardcore and gamemode to Survival when hardcore is detected.
- Hide title logo on load menu to match create world menu.
2026-04-17 07:06:26 -05:00
itsRevela bc6e445f0c fix: capture save thumbnails directly from D3D11 backbuffer
The new 4JLibs CaptureThumbnail produces all-black 64x64 PNGs because
its internal m_backBufferTexture copy fails silently. Bypass it entirely
and capture from the swap chain backbuffer using the same proven approach
as our F2 screenshot, with center-crop and downsample to 64x64 PNG.
2026-04-17 07:06:02 -05:00
DrPerkyLegit 9ddb95e7ad Fix broken Chat Formatting behavior (#1520)
- Remove shadowcolor from font tags (Iggy doesn't support multiple)
- Enforce HTML text mode on chat labels and jukebox
- Move IDS translatable pattern matching into FormatChatMessage
- Add §r (reset) color code support
- Fix message truncation to count visible characters, skipping HTML tags
- Fix CJK truncation using raw index instead of visible char count
2026-04-17 05:52:26 -05:00
dtentiion 8464bfd448 fix: Skin pack names showing only first letter after 4JLibs update (#1518) 2026-04-17 05:49:22 -05:00
Loki Rautio 0e0f8f696d feat: Upgrade to 4JLibs libraries
Includes fixes and some modernizations compared to the original 4J
library binaries. Also introduces functionality to support stuff like
F2 screenshots, etc. This is basically the beginning of modernizing the
codebase.
2026-04-17 05:40:38 -05:00
SevenToaster509 5d4d16329d feat: reimplement quick equip
fixed hella bad exploit X_X, additionally fixed multiplayer (part of the same issue)
2026-04-17 10:21:23 +01:00
Marvelco 1bcc761da8
Merge branch 'pieeebot:main' into main 2026-04-17 11:46:51 +03:00
Marvelco a6cdeec75c fixed fishing line floating in mid air 2026-04-17 11:31:02 +03:00
SevenToaster509 2b5a46a4fa fix: enchanting
fixes:
fishing rod crashing in enchantment table
updated more swfs that were not updated in a recent merge
sort costs in ascending order
randomise enchantment seeds for new players
2026-04-17 08:26:13 +01:00
SevenToaster509 add784b259 fix: clients crashing on enchantment attempt, disabled quick equip until further notice, updated enchantingmenu swfs because lapis slot was missing? 2026-04-16 20:47:14 +01:00
piebot 5dd8d982bb
fix: add missing dlcs (greek mythology and halloween 2015)
Added Missing DLC's
2026-04-16 22:10:29 +03:00
Marvelco bbc8c599b5 removed duplicates 2026-04-16 21:57:24 +03:00
Marvelco 0bc80a6e04 added missing dlc's 2026-04-16 21:50:43 +03:00
Marvelco 63a8eb2fbd
Merge branch 'pieeebot:main' into main 2026-04-16 21:27:18 +03:00
Marvelco fcbf81b5ae forgot this 2026-04-16 21:26:54 +03:00
Marvelco 833e449c8c fixed stained glass not rendering the water 2026-04-16 21:26:40 +03:00
George V. bd6586e45b fix: prevent crash when copying version when no ingame 2026-04-16 20:33:50 +03:00
George V. 56705f0576 feat: add version display and copy-to-clipboard functionality
Add version string (branch/version) to the debug overlay when F3 is active.
Also add a new keyboard shortcut (B key while F3 is held) to copy the
version string to the clipboard and show a confirmation message. This
improves debugging and support by making version information easily
accessible.
2026-04-16 20:33:50 +03:00
itsRevela d694cd1c9d chore: sync upstream MinecraftConsoles through 2fba264c 2026-04-15 05:25:33 -05:00
Loki Rautio 9d92d5eb9b Swap critical.mp3 for critical.ogg (#1503) 2026-04-15 05:22:37 -05:00
/home/neo 219d871c54
Merge branch 'main' into upstream-merge 2026-04-15 12:10:41 +03:00
Loki 2fba264c08
Revert "Prevent contextually wrong music from playing (#1138)"
This reverts commit 2d41711055.
2026-04-14 17:00:35 -05:00
Loki Rautio 1533b2138f Swap critical.mp3 for critical.ogg (#1503) 2026-04-14 16:59:58 -05:00
Riley M. c0da06e4ee
major: Switch to forward slashes(+more) to fix compilation on Linux (#1403)
Notably also adds some metadata files for NixOS 

* add support for linux clang cross compiles

* add linux clang instructions

* un-capitalize Mob.horse.*

* update the description in flake.nix

---------

Co-authored-by: Loki <lokirautio@gmail.com>
2026-04-14 16:47:37 -05:00
Fireblade 8d72625516
feat: neoLegacy logo
Signed-off-by: George V. <georgev22.github@gmail.com>
2026-04-14 22:26:00 +03:00
George V. 9803addf5c
chore: clean up the Minecraft.Client/Common/Media folder 2026-04-14 21:20:44 +03:00
George V. 8bfebcabf4
Merge branch 'pieeebot:main' into upstream-merge 2026-04-14 19:32:01 +03:00
SevenToaster509 cc94cb8966 Feature: Players start with an empty map instead of a drawn map 2026-04-14 16:47:23 +01:00
Lord_Cambion 02ea52926c feat: sprintable horse and boats 2026-04-14 17:33:07 +02:00
George V. 00af47178d
refactor: Remove worldSizeChunks param from BiomeSource::findSeed 2026-04-13 23:02:05 +03:00
George V. 2ddf72a4eb
fix(audio): restore missing comma lost in upstream merge
A comma between "item.armor.equip_generic6" and "damage.critical" was
accidentally dropped during an upstream merge, causing the two entries
to be concatenated into a single string literal at compile time.

This produced an invalid sound key and led to crashes when:
- equipping armor
- triggering critical hits
2026-04-13 22:45:10 +03:00
George V. c2c4eb6ea8
fix: Change string ID for Elder Guardian entity
The string identifier for the Elder Guardian entity was set
to `IDS_GUARDIAN_ELDER`. This has been changed to the
consistent identifier `IDS_ELDER_GUARDIAN`.

Additionally, the localization file has been updated to include the
missing string definitions for both `IDS_GUARDIAN` and
`IDS_ELDER_GUARDIAN`
2026-04-13 22:43:19 +03:00
George V. ac7a207597
Merge branch 'main' into upstream-merge
# Conflicts:
#	Minecraft.Client/Windows64Media/strings.h
#	Minecraft.World/BiomeSource.cpp
#	Minecraft.World/BiomeSource.h
2026-04-13 22:26:43 +03:00
SevenToaster509 f307d7b0eb Fix: Enchanting Table taking wrong levels
Was using cost instead of the index of the slot
2026-04-13 17:25:19 +01:00
Lord_Cambion 4fe92f9a5a changed: guardians placeholders 2026-04-13 18:21:58 +02:00
SevenToaster509 5656aa979f Fix: Controller support broken on LoadMenu
SWF updates:
LoadMenu1080
CreateWorldMenu1080
2026-04-13 16:35:46 +01:00
George V. 80179ae3be
Merge branch 'main' into upstream-merge 2026-04-13 17:56:40 +03:00
George V. 734f186cd3
Merge remote-tracking branch 'itsRevela/main' into upstream-merge
# Conflicts:
#	Minecraft.Client/Common/Audio/SoundNames.cpp
#	Minecraft.Client/SheepRenderer.cpp
#	Minecraft.World/SoundTypes.h
#	README.md
#	cmake/CopyAssets.cmake
2026-04-13 17:54:36 +03:00
George V. edeb0d2230
Merge branch 'main' into upstream-merge
# Conflicts:
#	.github/workflows/nightly.yml
#	Minecraft.Server/cmake/sources/Common.cmake
2026-04-13 17:39:46 +03:00
SevenToaster509 0606ce717d Refactor: Allow slider to be set
WARNING: REQUIRES ARC TO BE EDITED TO FUNCTION, PUSHED THIS TASK TO georgev22
2026-04-13 15:30:40 +01:00
George V. 5efd489229
fix: Prevent crash when displaying hardcore difficulty label
The hardcore difficulty label was using the raw string ID `IDS_HARDCORE` (oops)
instead of a localized string, which caused a crash in the UI.

Replaced `IDS_HARDCORE` with `app.GetString(IDS_HARDCORE)`
2026-04-13 17:18:15 +03:00
George V. 6d98c4ebf6
fix: Prevent gamemode slider movement when hardcore mode is enabled
Add virtual `canMoveSlider` method to UIScene base class and override it
in both LoadMenu and CreateWorldMenu scenes. The method returns false
when attempting to move the gamemode slider while hardcore mode is active,
effectively locking the slider in that state.

The UIController now checks `canMoveSlider` before initiating a slider
drag and during ongoing drag updates.
2026-04-13 17:18:15 +03:00
itsRevela 0544add4e2 chore: remove redundant/unused 4JLibs files 2026-04-13 03:15:58 -05:00
Loki Rautio f78dec6e00 Remove redundant/unused 4JLibs files
also adds some countermeasures against, yknow.
2026-04-13 01:26:36 -05:00
Tyler Reese 6913ce5323 fix: Implement missing critical hit sound (#1141) 2026-04-13 00:51:16 -05:00
DrPerkyLegit 71707fbb8c Add Chat Formatting Support For Servers (#1483) 2026-04-13 00:49:49 -05:00
GabsPuNs ae9dbd837d Exclude more files, reduce build .zip size (#1374) 2026-04-13 00:48:43 -05:00
Toru the Red Fox 825e96da54 Request dedicated GPU (#850) 2026-04-13 00:47:00 -05:00
Botch dea2bad0c4 fix: Disable font mipmapping (#1410) 2026-04-13 00:46:32 -05:00
DrPerkyLegit ae3c843ee5 fix: Increase entity network limit to 16k entities (#1492) 2026-04-13 00:43:18 -05:00
DrPerkyLegit 6c572d4940 feat: Scrollable chat (#1493) 2026-04-13 00:42:04 -05:00
DrPerkyLegit 5e7ad7333e Better Text Scaling (#1494)
* f3 menu text scaling

* Reduce overscaling above 1080p

Restores original scaling for 1440p to try and keep the text size more
sane on high DPI monitors

---------

Co-authored-by: Loki Rautio <lokirautio@gmail.com>
2026-04-13 00:37:54 -05:00
Tyler Reese 78afb091a4
fix: Implement missing critical hit sound (#1141)
* Fix

* Crit Sound Now Plays On Death

* Revert BuildVer.h

---------

Co-authored-by: Loki <lokio.casebstv@gmail.com>
2026-04-12 23:24:29 -05:00
Tyler Reese 2d41711055
fix: Prevent contextually wrong music from playing (#1138) 2026-04-12 23:22:14 -05:00
DrPerkyLegit 14f8d793dd
Add Chat Formatting Support For Servers (#1483)
* add chat support for html formatting

* html character serialization, normal color format support

* change for chat input handling on color

has a bug where the text after the cursor gets stripped of its color, need to make a function to backstep on a string and find the last used color codes, or get all color codes used before the string is split, and apply them to the start of the next string

* expose jukebox label as action bar like java

* prevent players from sending chat color

* restore non styled chat size check
2026-04-12 23:17:45 -05:00
GabsPuNs bfcb621808
Exclude more files, reduce build .zip size (#1374)
* Fix Sign

* Exclude more files from the compilation.

* Remove Trial and Tutorial folder in Common, Tutorial world is in windows64media
2026-04-12 23:17:21 -05:00
Toru the Red Fox 050c501786
Request dedicated GPU (#850) 2026-04-12 22:56:24 -05:00
Botch e5ce9a06cd
fix: Disable font mipmapping (#1410)
Fixes visual artifacts with signs, improving legibility at distances
2026-04-12 22:55:07 -05:00
Us3ful"-Dev e730033bcc
fix: Prevent end poem crash (#1489)
Removed player name check that always fails to work on non host instances
2026-04-12 22:53:39 -05:00
DrPerkyLegit 82c1ae1968
fix: Increase entity network limit to 16k entities (#1492) 2026-04-12 22:50:46 -05:00
DrPerkyLegit c7014f6b18
feat: Scrollable chat (#1493)
* chat scrolling

* allow escape to close chat instead of opening pause
2026-04-12 22:50:16 -05:00
DrPerkyLegit 744048f455
Better Text Scaling (#1494)
* f3 menu text scaling

* Reduce overscaling above 1080p

Restores original scaling for 1440p to try and keep the text size more
sane on high DPI monitors

---------

Co-authored-by: Loki Rautio <lokirautio@gmail.com>
2026-04-12 22:48:08 -05:00
Firebladedoge229 190f9eff2c fix: server failing from localization changes + abrupt wine crash on exit 2026-04-13 04:51:00 +03:00
SevenToaster509 3d57609e12 Chore: Disable track debugging
Hope no-one needs it, it was pissing me off
2026-04-12 20:43:55 +01:00
SevenToaster509 e0cc846be5 Fix: Lapis Slot for Enchanting takes and consumes any item 2026-04-12 18:42:59 +01:00
SevenToaster509 48ce29a28e Fix: Clicking book while signing removes signing text, Clicking book when book is signed allows text editing, Added default resolution to not crash on smaller screens (720p and less) 2026-04-12 18:25:27 +01:00
Logan Gibson d8da9af7fe
Add particles when fishing (#1)
Co-authored-by: Lord_Cambion <lordcambion.gaming@gmail.com>
2026-04-12 14:18:03 +03:00
George V. 7d05b6a9d6
fix: Replace hardcoded "Hardcore" string with localization resource ID
Replace the hardcoded string literal "Hardcore" in the difficulty slider
label with the localization resource identifier `IDS_HARDCORE` in both
the load menu and create world menu scenes.
2026-04-12 00:41:17 +03:00
Fireblade c322f759f3
Merge branch 'GeorgeV220:upstream-merge' into upstream-merge 2026-04-11 17:25:50 -04:00
Firebladedoge229 e77458b7e8 fix: folderFile common linking 2026-04-11 17:24:49 -04:00
George V. 401ccbcdc9
fix: lock survival when hardcore and swf changes 2026-04-12 00:22:38 +03:00
Firebladedoge229 4d10af2ccb chore: update logo 2026-04-11 16:52:18 -04:00
George V. 1a78363ee5
Merge branch 'main' into upstream-merge
# Conflicts:
#	Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.cpp
#	Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp
#	Minecraft.Client/Common/UI/UIScene_LoadMenu.h
2026-04-11 23:36:43 +03:00
George V. 18f7d9a219
feat: merge hardcore hearts 2026-04-11 23:10:43 +03:00
George V. 84f1382a40
chore: merge Windows 64-bit media SWF files from revelations 2026-04-11 22:31:37 +03:00
SevenToaster509 a58b14a2ea Feat: Changed game mode selection to a slider 2026-04-11 20:03:09 +01:00
George V. 192c2a3c5c
feat: implement recursive folder traversal for file indexing
The previous implementation only indexed files in the root directory,
ignoring files in subdirectories. This change adds recursive traversal
to index all files within the folder hierarchy while maintaining
relative paths for compatibility.
2026-04-11 20:49:57 +03:00
George V. 224dd491b9
chore: add MediaWindows64 directory to server target assets 2026-04-11 19:12:13 +03:00
George V. bb04d465db
feat: replace ArchiveFile with FolderFile for media asset loading
Replace the ArchiveFile-based media asset loading system with a new
FolderFile implementation that reads files directly from a folder
structure instead of from compressed .arc archives. This change
simplifies asset management and eliminates the need for pre-packaged
media archives.

Key changes:
- Added FolderFile class that indexes and reads files from a folder
- Updated Consoles_App to use FolderFile instead of ArchiveFile
- Modified CMake asset copy configuration to exclude platform-specific
  media folders instead of .arc files
- Updated platform-specific media path references to point to folders
  instead of .arc files

This enables easier development and debugging by allowing direct access
to media files without requiring archive extraction or repackaging.
2026-04-11 18:57:54 +03:00
piebot 08d68d6cdd chore: rebrand to neoLegacy 2026-04-11 18:21:40 +03:00
itsRevela abb18e3e12 fix: new players kicked when joining right after being whitelisted
When a new player was whitelisted while they were sitting on the join screen, their next attempt would insta-kick before the world ever loaded, and the retry after that would let them in for roughly 20 seconds before booting them with "connection closed". Two separate bugs were colliding.

The first kick was a stale cancel flag on the client. When the server rejects a join, the "Connecting to host..." screen tears down, and its teardown path fires the cancel callback defensively. That flag would latch on without ever being consumed, so the very first tick of the next join attempt saw it and immediately closed the fresh connection. Clearing the flag when a new join starts prevents this.

The second kick was an orphan on the server. When the first failed join's TCP dropped, its slot got recycled for the next successful join, but the half-built login object from the broken attempt was still in the pending queue. 30 seconds later its "login took too long" timer fired, and the disconnect packet it tried to send was routed to whoever currently held that slot, which was now the new in-world player. It landed on their live socket and kicked them. Telling the game's Socket layer about the TCP drop lets the orphan clean itself up, and refusing to write on an already-closing socket stops any late packet from leaking into the recycled slot.
2026-04-11 08:13:46 -05:00
itsRevela f189234614 feat: uncap fps in fullscreen for lower input latency
Before this change, turning VSync off did not actually uncap your frame rate. The game ran in borderless fullscreen, where Windows' desktop compositor owns the display pipeline and applies its own VSync regardless of what the game asks for. So on a 240Hz monitor with a GPU that could draw 800fps, you still only saw 240 frames per second and the other 560 were thrown away. Worse, the frames you did see were up to a refresh cycle stale by the time they hit your eyes, which is input latency you can feel when moving the camera or aiming.

Fullscreen now uses true DXGI exclusive mode, where the compositor is out of the way and the swap chain writes directly to the display. Every frame the GPU produces lands on screen as soon as it is ready, so "VSync off" actually does something. Expect FPS to climb well past your monitor's refresh rate and the mouse to feel noticeably more responsive.

Exclusive fullscreen also displays at your monitor's native resolution with no driver-side scaling or filtering. The backbuffer is grown to match the monitor exactly before the transition, and the display mode is pinned to the backbuffer size so nothing in the output pipeline resamples your pixels on the way to the screen. The result is a crisp 1:1 image with none of the softening or greyish filter that stretched output can introduce.

Yes, this is the mode where screen tearing can happen. Tearing gets a bad reputation but it is a visual tradeoff, not a bug, and many players prefer it over the latency VSync causes. If you want to avoid tearing, just turn VSync on in the settings and the game will cap cleanly to your refresh rate. You now have a real choice between the two instead of "off" quietly being broken.

Under the hood, F11 and the saved fullscreen preference both route through a new ApplyExclusiveFullscreen path that does Microsoft's recommended transition: grow the window to cover the monitor, ResizeTarget with no scaling so the display mode is pinned to the backbuffer size, SetFullscreenState(TRUE), SetColorSpace1(sRGB), then a second ResizeTarget so picky drivers actually apply the mode. Exit forces a real decorated windowed state so F11 cycles cleanly between windowed and exclusive fullscreen. ResizeD3D skips its swap-chain-recreate path while in exclusive mode so it does not fight DXGI for ownership.

The swap chain's RefreshRate changes from a hardcoded 60Hz to 0/0 so DXGI matches the current display mode. Fixes an "input signal out of range" error that could happen on high-refresh monitors after entering fullscreen, where the monitor was being asked to renegotiate timing off of 240Hz down to 60Hz on every launch.
2026-04-11 06:19:22 -05:00
itsRevela 6c8f463707 fix: restore in-world rendering and aspect ratio via bitblt swap chain
The previous FLIP_DISCARD swap chain configuration was producing broken rendering and a stretched aspect ratio on startup and after window resize, because the closed-source 4J Renderer library holds hidden backbuffer references that prevent ResizeBuffers from succeeding in flip mode. Switches the swap chain to the legacy bitblt DISCARD model with BufferCount=1, which lets the "destroy old, create new" resize path in ResizeD3D work cleanly. In-world rendering and aspect ratio are now correct at launch and across window resizes.

Known regression from this change: screen tearing no longer works when VSync is off. On Windows 10 and 11, bitblt swap chains always go through the DWM compositor, which locks presentation to the monitor refresh rate regardless of the SyncInterval parameter we pass to Present. Every frame the renderer produces above the refresh rate is silently dropped by DWM, which hurts input latency compared to a true uncapped-fps presentation path. The next iteration will reverse-engineer the 4J Renderer struct layout to find where those hidden backbuffer references are stored, release them before ResizeBuffers, and switch back to FLIP_DISCARD with ALLOW_TEARING so real tearing is possible again.

Also removes the dead SwapChainVSyncProxy COM wrapper. The proxy was originally intended to intercept Present calls from the Renderer library for VSync control, but the library hardcodes SyncInterval=1 and does not dispatch Present through the proxy vtable, so it was never actually doing anything useful.
2026-04-11 02:49:53 -05:00
Tyler Reese 7ea30d026c Fix _jeb easter egg on sheep (#1488)
Fixed the original jeb sheep behavior.

For some reason the later code (now commented out) just completely overrid it
2026-04-11 02:02:23 -05:00
itsRevela a07bc651b3 chore: sync credits screen and Star History with upstream org rename
The upstream project (formerly smartcmd/MinecraftConsoles, now MCLCE/MinecraftConsoles) reorganized their in-game credits screen. This pulls in that restructure so our credits accurately reflect who the current and former upstream maintainers are, and points the attribution URL at the right place. codeHusky and mattsumi stay as Project Maintainers, and itsRevela is added alongside them. smartcmd, Patoke, and rtm516 move to a new Former Maintainers section. The contributor count ticks up from 100+ to 120+, and the credit URL at the bottom now reads github.com/MCLCE/MinecraftConsoles with a "(formerly smartcmd/MinecraftConsoles)" line underneath it.

On the README side, only the Star History chart URL was updated from smartcmd to MCLCE. The Nightly client and dedicated server download links stay pointed at itsRevela/LCE-Revelations since our fork has its own release pipeline.

Upstream attribution: d0786f95 by Loki Rautio. Applied as a partial cherry-pick with the two Nightly download URL hunks dropped and itsRevela added to the maintainer list.
2026-04-11 02:01:26 -05:00
Fireblade 37ee04356b feat. set intro scene background to white (#1474) 2026-04-11 01:52:01 -05:00
itsRevela 28d997a8d0 chore: rename project from MinecraftConsoles to LCE-Revelations
The personal repo was renamed from itsRevela/MinecraftConsoles to itsRevela/LCE-Revelations, so this sweeps the rest of the codebase to match. In-game, the credits screen now shows "LCE-Revelations" instead of "MinecraftConsoles" as the project heading. In the README, the Nightly client and dedicated server download links point at the new repo URL, and the Docker image reference is now ghcr.io/itsrevela/lce-revelations-dedicated-server. The dedicated server's generated server.properties file also picks up a new header comment reflecting the rename.

For folks building from source: the CMake project name was renamed, so when you configure the build the generated solution file is now LCE-Revelations.sln instead of MinecraftConsoles.sln. The Nix flake description and the Nightly release uploader script were updated to match, and a historical FourKit port reconnaissance document was removed since that port is already complete.

Also restored the Fluxer server link at the top of the README, which was lost when the repo was fast-forwarded from the upstream that got griefed.
2026-04-11 01:38:35 -05:00
itsRevela a191df1f2e fix: controller cursor speed no longer scales with framerate
When framerate was uncapped (vsync off, high-end hardware), the controller cursor in the inventory and creative menus moved way too fast. Basically unusable unless you switched to the dpad. The cursor update was tied to how often the screen redraws, so the faster the game ran, the faster the cursor flew.

Now the cursor moves a smaller distance per frame at higher framerates, so the actual on-screen speed stays the same whether you're at 60 FPS or 600 FPS.

While fixing this I also found an old workaround that was rounding the cursor position to whole pixels every frame and nudging it by 1 pixel to keep it from getting stuck. That nudge was pointing the wrong way on the vertical axis, which made up/down movement feel broken once the per-frame distance got small. Removed the rounding and the nudge. The cursor can now hold a fractional position between frames, and the part of the code that actually draws the cursor still snaps it to whole pixels on screen.

Fixes #3
2026-04-10 21:38:43 -05:00
George V. a175854dab
fix: Resolve missing Guardian files in server build causing CI failure
Add missing GuardianModel.cpp and GuardianRenderer.cpp to the
Minecraft.Server build configuration to fix compilation errors in
the debug GitHub PR workflow.

Also fix inconsistent indentation in Minecraft.Client's Common.cmake
for the GuardianModel.cpp and GuardianRenderer.cpp entries (styling only).
2026-04-11 03:05:03 +03:00