Commit graph

407 commits

Author SHA1 Message Date
Lord_Cambion 54958075bb worldgenerationissues 2026-04-14 13:07:02 +02:00
Lord_Cambion 02cac98645 fix: elder guardian hitbox 2026-04-14 11:07:02 +02: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
Lord_Cambion b512cc8f11 feat: worldgeneration using decomp 2026-04-13 17:45:07 +02:00
George V. 4191b654b2
fix: add null check for TLS compression pointer 2026-04-13 18:31:01 +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
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
DrPerkyLegit ae3c843ee5 fix: Increase entity network limit to 16k entities (#1492) 2026-04-13 00:43:18 -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
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
DrPerkyLegit 82c1ae1968
fix: Increase entity network limit to 16k entities (#1492) 2026-04-12 22:50:46 -05:00
SevenToaster509 e0cc846be5 Fix: Lapis Slot for Enchanting takes and consumes any item 2026-04-12 18:42:59 +01:00
Lord_Cambion e45d5dd7cd fix: Monument Entry + room Generation 2026-04-12 16:10:56 +02: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
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
George V. a0f4063807
Merge branch 'main' into upstream-merge 2026-04-11 02:52:52 +03:00
Fireblade 0ed96f1592
fix: resolve merge conflicts and integrate XML locale updates (#1)
Resolve merge conflicts across multiple components
Merge and synchronize XML locale changes
Ensure consistency between string resources and localization files
Minor fixes to restore successful builds after merge
2026-04-11 02:47:59 +03:00
George V. 0ad7e383fa
Merge branch 'main-re' into upstream-merge 2026-04-10 22:00:17 +03:00
SevenToaster509 c038506071 Feat: Armour Quick Equip, Fix: Baby Armour on Players 2026-04-10 16:06:57 +01:00
SevenToaster509 490ac0eed1 Feat: Updated Enchanting Mechanics
Updated in the ARC:
EnchantingMenu1080
SkinHDGraphicsInGame
SkinHDInGame

may have override other changes in the arc but it dont think so...
2026-04-10 13:18:42 +01:00
Lord_Cambion 61b6e6adca feat: Guardians 2026-04-10 14:03:32 +02:00
itsRevela 20229fc07b fix: dedicated server thread safety, disconnect deadlock, and console freeze
- Protect PlayerList and ServerConnection players vectors with critical
  sections; all iterations use copy-on-read snapshots to prevent iterator
  invalidation during concurrent join/leave
- Add null check on player bounding box in movement validation to prevent
  crash when player is removed mid-tick
- Re-validate socket player pointer immediately before SendData to narrow
  the TOCTOU race window on disconnect
- Replace inline disconnect cleanup with a queued system drained on the
  main tick thread, eliminating the done_cs -> m_playersCS lock inversion
  that caused deadlocks under load
- Disable Windows QuickEdit mode at server startup to prevent console
  input selection from freezing the process
- Move chunk priority sort behind ServerConnection::sortPlayersByChunkPriority()
  to keep the players vector lock-protected
2026-04-10 01:12:59 -05:00
itsRevela 9c9df615a1 fix: beacon menu item consumption, data sync, and button state issues
- Prevent payment item from being consumed when submitting unchanged powers
- Reorder ServerPlayer::openBeacon to send ContainerOpenPacket before
  addSlotListener so beacon data packets arrive after the client menu is ready
- Add BeaconMenu::broadcastChanges() to continuously sync levels and powers
  to clients, matching the pattern FurnaceMenu already uses
- Initialize UIControl_BeaconEffectButton::m_lastState to prevent stale
  heap memory from suppressing Iggy ChangeState calls on menu re-entry
2026-04-09 21:34:48 -05:00
George V. 506ebd2176 Merge remote-tracking branch 'itsRevela/main'
# Conflicts:
#	.github/workflows/nightly.yml
#	.gitignore
#	Minecraft.Client/ChatScreen.cpp
#	Minecraft.Client/ClientConnection.cpp
#	Minecraft.Client/Common/Audio/SoundEngine.cpp
#	Minecraft.Client/Common/Audio/SoundEngine.h
#	Minecraft.Client/Common/Media/MediaWindows64.arc
#	Minecraft.Client/Common/UI/IUIScene_HUD.cpp
#	Minecraft.Client/Common/UI/UIControl_Base.cpp
#	Minecraft.Client/Common/UI/UIScene_DeathMenu.cpp
#	Minecraft.Client/Common/UI/UIScene_JoinMenu.cpp
#	Minecraft.Client/Common/XUI/XUI_Chat.cpp
#	Minecraft.Client/Common/XUI/XUI_Death.cpp
#	Minecraft.Client/Font.cpp
#	Minecraft.Client/Gui.cpp
#	Minecraft.Client/PendingConnection.cpp
#	Minecraft.Client/PlayerConnection.cpp
#	Minecraft.Client/PlayerConnection.h
#	Minecraft.Client/PlayerList.cpp
#	Minecraft.Client/Windows64/Network/WinsockNetLayer.cpp
#	Minecraft.Client/Windows64/Network/WinsockNetLayer.h
#	Minecraft.Client/Windows64Media/strings.h
#	Minecraft.Client/cmake/sources/Common.cmake
#	Minecraft.Server/Console/ServerCliEngine.cpp
#	Minecraft.Server/Console/commands/whitelist/CliCommandWhitelist.cpp
#	Minecraft.Server/Windows64/ServerMain.cpp
#	Minecraft.World/WitherBoss.h
#	Minecraft.World/cmake/sources/Common.cmake
#	README.md
2026-04-09 15:21:43 +03:00
Lord_Cambion a204ec52f4 fix: poison setting life to 1hp 2026-04-08 17:28:13 +02:00
Lord_Cambion 5f71ac96ff fix: ore spawning nether 2026-04-08 15:49:51 +02:00
piebot 69ff1f7271 Merge pull request 'Fishing update: bug fixes + better parity' (#13) from BrainFart17/LegacyEvolved:main into main
Reviewed-on: https://codeberg.org/piebot/LegacyEvolved/pulls/13
2026-04-08 12:44:08 +02:00
ryleu 5eab358dde add support for linux clang cross compiles 2026-04-08 12:03:15 +03:00
itsRevela 42a582fb9f feat: add FourKit plugin host with dual server build
Adds the FourKit .NET 10 plugin host as a second dedicated server
build flavour alongside the existing vanilla server. Both flavours
build from the same source tree, with FourKit gated by the
MINECRAFT_SERVER_FOURKIT_BUILD preprocessor define.

Build layout:

  Minecraft.Server         vanilla, no plugin support, no .NET dep
  Minecraft.Server.FourKit FourKit-enabled, ships with bundled
                           .NET 10 self-contained runtime in runtime/
                           and an empty plugins/ folder

Both produce a Minecraft.Server.exe in their own per-target output
dir. The variant identity lives in the directory name, not the
binary name, so either flavour can be shipped as a drop-in.

Native bridge (Minecraft.Server/FourKit*.{cpp,h}):

* FourKitRuntime: hosts CoreCLR via hostfxr's command-line init API
  (the runtime-config API does not support self-contained components)
* FourKitBridge: ~50 Fire* event entry points, with inline no-op
  stubs for the standalone build so gameplay code can call them
  unconditionally
* FourKitNatives: ~80 native callbacks the managed side invokes
  for player/world/inventory mutations
* FourKitMappers: type and enum mapping helpers

Managed plugin host (Minecraft.Server.FourKit/):

* Bukkit-style API: Player, World, Block, Inventory, Command,
  Listener, EventHandler attribute, ~54 event classes
* PluginLoader with per-plugin AssemblyLoadContext
* FourKitHost as the [UnmanagedCallersOnly] entry point table
* Runtime resolves plugins relative to the host process so they
  always live next to Minecraft.Server.exe regardless of where the
  managed assembly itself is loaded from

Engine hooks (Minecraft.Client/, Minecraft.World/):

* Player lifecycle (PreLogin, Login, Join, Quit, Kick, Move,
  Teleport, Portal, Death) wired into PendingConnection and
  PlayerConnection without disturbing the cipher handshake or
  identity-token security flow
* Inventory open/click/drop hooks across every container menu type
* Block place/break/grow/burn/spread/from-to hooks across the
  full tile family
* Bed enter/leave, sign change, entity damage/death, ender pearl
  teleport hooks

Regression fixes preserved while applying donor diffs:

* ServerPlayer::die() retains the LCE-Revelations hardcore branch
  (setGameMode(ADVENTURE) + banPlayerForHardcoreDeath) in both the
  FourKit and non-FourKit code paths
* ServerLevel::entityAdded() retains the sub-entity ID reassignment
  loop required by the client's handleAddMob offset, fixing Ender
  Dragon and Wither boss multi-part hit detection
* LivingEntity::travel() retains the raw Player* cast and the
  cached frictionTile, both Revelations perf wins that the donor
  silently reverted
* ServerLogger.cpp keeps the file-logging code donor stripped
* PlayerList.cpp end portal transition fix and UIScene_EndPoem
  bounds-check are intact

Build system:

* Top-level CMakeLists.txt adds the Minecraft.Server.FourKit
  subdirectory and pulls in the new shared cmake/ServerTarget.cmake
  helper
* Minecraft.Server/cmake/sources/Common.cmake is now location
  independent (uses CMAKE_CURRENT_LIST_DIR) so the source list
  can be consumed from either server target's CMakeLists.txt
* The seven FourKit*.cpp/h files live in their own
  _MINECRAFT_SERVER_COMMON_SERVER_FOURKIT variable so the
  standalone target omits them
* configure-time .NET 10 SDK check fails fast with a clear
  download link if the SDK is missing
* global.json pins the SDK to 10.0.100 with latestFeature
  rollforward

Sample plugin (samples/HelloPlugin/) demonstrates the loader and
the PlayerJoinEvent listener pattern.

CI:

* nightly.yml builds both server flavours, ships
  LCE-Revelations-Server-Win64.zip and
  LCE-Revelations-Server-Win64-FourKit.zip, attests both, and
  updates release notes for the dual-flavour layout
* pull-request.yml pulls in actions/setup-dotnet so the FourKit
  publish step works in PR validation
* All zip artifacts and the client zip are renamed from
  LCREWindows64 to LCE-Revelations-{Client,Server}-Win64

Documentation:

* COMPILE.md gets a VS 2022 quick start, .NET 10 prereq section,
  server flavours explanation, and a troubleshooting section
* docs/FOURKIT_PORT_RECON.md captures the file-by-file recon that
  drove the port
* docs/FOURKIT_PARITY.md is the canonical reference for which
  events FourKit fires

Docker:

* docker-compose.dedicated-server.yml MC_RUNTIME_DIR default points
  at the vanilla CMake output. The FourKit Docker image is
  intentionally NOT shipped yet because hosting .NET 10 self
  contained inside Wine has not been smoke-tested
2026-04-08 03:02:48 -05:00
George V. ff96cd3687 feat: support separate boss health bars per dimension
Add dimension-aware tracking for boss mobs and update the boss health
GUI system to maintain independent state for each dimension (Overworld,
Nether, End). This prevents conflicts when multiple bosses exist across
different dimensions simultaneously.

- Add `getDimension()` to `BossMob` base class and implement in
  `EnderDragon` and `WitherBoss`
- Replace static boss GUI state with dimension-indexed storage
- Introduce `getIndexFromDimension()` helper for dimension mapping
- Update rendering logic to use per-dimension state
- Isolate darkening effects and health display per dimension

Ported from LCERenewed commit 5ec8a0e41ba8146aba450258d8620cd3cb0299e0 by 3UR
2026-04-08 03:34:54 +03:00
BrainFart17 3781794be3 (fishing) Fix bugs and change random catch type selection
- Implement catch type random selection from decompiled java 1.7.2 code instead of using a WeighedRandomItemArray
- Fix fishingTreasuresArray length being set to 5 instead of 6
- Remove testing values for nibbleTimer
- Cast maxDamage of item to double before applying damage.
- Add include for EnchantmentCategory in LureEnchantment.cpp and LuckOfTheSeaEnchantment.cpp.
- sky obstruction is now checked before other checks.
2026-04-07 16:04:52 -07:00
Lord_Cambion aaae8b01a9 feat: Melon Feature
fix: polished stone variants spawning on top of certain biomes.
2026-04-08 00:11:07 +02:00
Lord_Cambion 38775d0f26 fix: world crash with particular seeds 2026-04-07 20:45:44 +02:00
piebot 013c18ef85 Merge remote-tracking branch 'origin/main' 2026-04-07 21:05:36 +03:00
piebot d39bc9ad99 refactor: change wheat seeds to seeds
also make inverted daylight sensor implementation more accurate
2026-04-07 21:03:09 +03:00
Lord_Cambion 720e1a77a4 feat: oceanMonument
feat: Mesa biomes
feat: changed world generation according to java
fix: swamp hut changed to spruce
2026-04-07 19:41:14 +02:00
BrainFart17 e17e26ff99 Fix bugs and improve fishing mechanics parity with TU 31
- Based fishing mechanics off of decompiled java 1.7.2 instead of 1.12.
- Added check for sky access
- Switching between different fishing rods now reels the line back in
- Fixed duplicate assignment in fishingTreasuresArray
- Remove testing weights from catchTypeArray
- Make lureLevel and luckLevel member variables of FishingHook that are calculated upon initialization instead of recalculating every tick.
- Changed random nibbleTimer range from 5 - 30 secs to 5 - 45 secs
- Fixed out of order and incorrect assignments of fishingJunkArray
- Values are now clamped to prevent unintended behavior
- Lure now affects loot rates.
2026-04-07 08:00:13 -07:00
BrainFart17 af22ca5e7a Update fishing mechanics for better parity with TU 31 2026-04-06 16:39:09 -07:00
George V. 8445534dc1 fix(fishing): fix catch type return and correct aux value calculations
- Add missing return of CatchType in getRandCatchType
- Remove unused variable in getRandCatch
- Fix duplicate semicolon in TREASURE case
- Fix missing parentheses in fishing rod and bow calculations in handleCatch
2026-04-06 16:35:42 +03:00
piebot e45633defc Fix TU31 Fishing Changes
also remove halloween 2015 and greek for now as its currently causing crashes
2026-04-06 14:50:39 +03:00
BrainFart17 97a82c20ef Use Java 1.12 source code for loot table, clean up code. 2026-04-06 01:21:36 -07:00
BrainFart17 bc49d40c91 Merge branch 'main' of https://codeberg.org/piebot/LegacyEvolved 2026-04-05 20:44:36 -07:00
BrainFart17 02ddba76ad Remove unused include 2026-04-05 20:18:15 -07:00
BrainFart17 7d67bbc24c Add comment for clarification 2026-04-05 19:25:10 -07:00
BrainFart17 406e7e2f06 Fix formatting error 2026-04-05 18:38:34 -07:00
BrainFart17 6bc57b2b97 Fix minor typo in magic number 2026-04-05 18:16:49 -07:00
BrainFart17 f0b28416c0 Add fishing stuff from TU 31 2026-04-05 17:38:06 -07:00
itsRevela e52565f9a3 Merge remote-tracking branch 'upstream/main'
# Conflicts:
#	.github/workflows/nightly-server.yml
#	Minecraft.Server/Windows64/ServerMain.cpp
#	Minecraft.World/ConsoleSaveFileOriginal.cpp
2026-04-05 16:23:28 -05:00
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
ItzSonicFaner 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
piebot 1df2fd42dd Bug fixes 2026-03-26 18:04:55 +03:00
piebot d73ae8fd5c Fix Commit "Implement LCERenewed Changes"
This fixes commit cf0472117c.
2026-03-26 17:57:03 +03:00
piebot cf0472117c Implement LCERenewed Changes 2026-03-26 14:14:42 +03:00
piebot 868ba79754 Fix swapped dirt variants. 2026-03-26 09:45:05 +03:00
Lord Cambion ae273c75fa Name Fixes 2026-03-26 00:40:52 +01:00
piebot e14ba14e68 a bunch of shit lmaoo 2026-03-25 21:41:35 +03:00
Revela 4c7f1a6385
Merge branch 'smartcmd:main' into main 2026-03-24 13:59:56 -05:00
Lord Cambion 571bf2f226 generation fix 2026-03-24 19:14:11 +01:00
itsRevela 08f14e32ae Add seed validation for server world creation and override-seed property
The dedicated server previously picked a completely random seed with no
biome diversity checks (the client validates but the server skipped it).
On top of that, the client's findSeed() was hardcoded to only check a
54-chunk (Classic) area, so Large worlds had no diversity guarantee
beyond the center.

New server worlds now use findSeed() scaled to the full target world
size. Added override-seed in server.properties to fix existing worlds
without deleting them.
2026-03-24 13:07:04 -05:00
ryleu f3915a0603
add support for linux clang cross compiles 2026-03-24 10:05:40 -05:00
piebot 6a1e0df0f2 fix common.cmake 2026-03-24 17:58:31 +03:00
piebot ed38461e15 Merge branch 'main' of https://github.com/piebotc/LegacyEvolved 2026-03-24 16:53:12 +03:00
piebot 6646eefb5e Merge remote-tracking branch 'upstream/main' 2026-03-24 16:48:08 +03:00
Lord Cambion a5139ce172 Desert Temple Update
Clay instead of wool
2026-03-24 14:46:59 +01:00
Lord Cambion c6578405fc Fixes
Now Oceans have Gravel in the bottom.
Now DarkOakLeaves have correct color
2026-03-24 14:14:11 +01:00
Lord Cambion 6fc2808592 5 New Technical Biomes 2026-03-24 13:41:49 +01:00
piebot d10deb4cc2 Revert "Merge pull request #12 from ItzSonicFaner/LegacyEvolved"
This reverts commit f5b134aa90, reversing
changes made to f0b06116c2.
2026-03-24 15:12:06 +03:00
Sylvessa 127465b0eb
add advanced tooltips, F3+H combo, and handle settings (#1389) 2026-03-23 17:54:46 -05:00
itsRevela 93532ef533 Stained Glass Survival Integration & Crafting UI Fix (#1195) 2026-03-23 11:58:13 -05:00
itsRevela 33a3d69fc8 Clicking outside container now drops items (#1306) 2026-03-23 11:57:16 -05:00
itsRevela 8e820975b1 Allow displaying item lore (#1384) 2026-03-23 11:57:16 -05:00
itsRevela 4adce63f3d Update maximum limits for game entities (#1355) 2026-03-23 11:35:48 -05:00
itsRevela bb16e953a7 Fix CMake build configuration for Windows64 platform
- Add #include <windows.h> to extraX64.h for Windows type definitions
- Remove duplicate byte typedef and suppress std::byte via _HAS_STD_BYTE=0
- Define _WINDOWS64 for correct platform header selection
- Set IGGY_LIBS to iggy_w64.lib for proper Iggy UI library linking
2026-03-23 11:31:51 -05:00
piebot f5b134aa90
Merge pull request #12 from ItzSonicFaner/LegacyEvolved
Skins update
2026-03-23 10:29:17 +03:00
Lord Cambion f0b06116c2 flower forste part 1 + decompiled roofed forest 2026-03-23 03:44:02 +01:00
Lord Cambion 9a6d126ae1
Stained Glass Survival Integration & Crafting UI Fix (#1195)
* Added Stained Glass

i found out that stained glass  was not accessible in survival, then i  saw they disabled it in the code

* Grouping glass correctly in crafting table

I removed the #if/endif from the ClothDyeRecipes.cpp and added a different one in StructureRecipies.cpp
also changed the Tile definition giving it the same
setBaseItemTypeAndMaterial of stained glass to group it correctly inside the crafting table UI.
also aincremented the Vertical Slot for crafting table to include many more craftings in the same group
2026-03-22 21:15:02 -05:00
Alezito2008 ebab3ec40f
Clicking outside container now drops items (#1306)
Java Edition KBM input parity
2026-03-22 21:05:04 -05:00
Sylvessa c1ce97f7be
allow displaying item lore (#1384) 2026-03-22 20:50:06 -05:00
ItzSonicFaner 75a6d7efea Skins 2026-03-22 12:06:25 +02:00
piebot 58d57f2b54 Fixed bug 2026-03-22 10:59:51 +03:00
piebot 10487e0eac Added acacia/dark oak slabs and stairs recipes 2026-03-22 10:16:31 +03:00
piebot 7207268add Merge branch 'main' of https://github.com/piebotc/LegacyEvolved 2026-03-22 02:52:04 +03:00
piebot 4d5941c014 Fix acacia and dark oak leaves dropping the wrong sapling type 2026-03-22 02:52:01 +03:00
Jazzitch 33b008c96a
Update maximum limits for game entities (#1355)
* Update maximum limits for game entities

Increased the maximum limits for Xbox boats, console minecarts, dispensable fireballs, and projectiles.

* Update maximum limits for game entities

Increased maximum limits for Xbox boats, console minecarts, dispensable fireballs, and projectiles.
2026-03-21 16:15:47 -04:00
Lord Cambion 20db8dcdce Endermite 2026-03-21 04:12:23 +01:00
Tranqlmao b12d681255 Merge branch 'main' of https://github.com/piebotc/LegacyEvolved 2026-03-20 14:01:53 -04:00
Tranqlmao 83e8a28913 SandTile Fix 2026-03-20 13:53:31 -04:00
Lord Cambion 72ffe3ec0f glass recipe 2026-03-20 12:47:42 +01:00
Tranqlmao 07fd3222b8 Added Double Tall Plants
TODO:
Add Sunflower
Add natural spawning of these flowers
2026-03-20 01:53:28 -04:00
piebot 660cb22e91 Fix sand crashing the game whilst creating a new world 2026-03-20 02:45:26 +03:00
Lord Cambion 82a95d6683 FIXED ID MATCHING THE LCE 2026-03-19 23:06:22 +01:00
Lord Cambion 8c6da7ea22 saplings now have all the id 6 2026-03-19 22:30:49 +01:00
Lord Cambion 4198a014f3 prismarine fiex id 168,168:1,168:2 2026-03-19 19:35:43 +01:00
Lord Cambion 986b56f048 Merge branch 'main' of https://github.com/piebotc/LegacyEvolved 2026-03-19 18:41:05 +01:00
Lord Cambion 3f528adaa4 crafting 9ingredients [skip ci] 2026-03-19 18:34:54 +01:00
Tranqlmao 8423170d13 Strings Fix
+Some block/item id parity
2026-03-19 13:12:06 -04:00
Lord Cambion 183d1e9c99 rabbit stew fix 2026-03-19 17:35:04 +01:00