869 Commits

Author SHA1 Message Date
neoapps-dev
6fb106984a fix(build-linux): fourkit installation 2026-04-08 13:36:01 +03:00
neoapps-dev
6b63a808bb fix(build-linux): fourkit installation 2026-04-08 13:32:02 +03:00
neoapps-dev
25595fba71 fix(build-linux): silly me 2026-04-08 13:21:06 +03:00
neoapps-dev
0ddac15fad fix: linux cross-compiling 2026-04-08 13:07:04 +03:00
neoapps-dev
9babdac928 fix: linux cross-compiling 2026-04-08 12:44:56 +03:00
neoapps-dev
222852c11b fix: tutorial world 2026-04-08 12:21:09 +03:00
neoapps-dev
de0ea474b1 chore: ignore .xwin 2026-04-08 12:19:12 +03:00
neoapps-dev
ed18e26e85 feat: script for building 2026-04-08 12:09:32 +03:00
ryleu
d449a582e4 add linux clang instructions 2026-04-08 12:05:43 +03:00
ryleu
5eab358dde add support for linux clang cross compiles 2026-04-08 12:03:15 +03:00
neoapps-dev
b2f00d16e6 feat: cancel join 2026-04-08 11:47:25 +03:00
irice7
d191bee468 Add cancel join
Adds the Cancel Join tooltip to the "Connecting to host"
progress bar
2026-04-08 11:47:01 +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
itsRevela
5d56f5080f chore: rename LCRE branding to LCE-Revelations
Renames release artifacts, Docker image, container/service names,
and shell wrappers from the legacy LCRE prefix to LCE-Revelations.

* Banner asset: LCRE-banner.png to LCE-Revelations-banner.png
* Docker compose service and container: minecraft-lce-dedicated-server
  to lce-revelations-dedicated-server
* ghcr image: ghcr.io/itsrevela/minecraft-lce-dedicated-server to
  ghcr.io/lce-hub/lce-revelations-dedicated-server
* Dockerfile MC_RUNTIME_DIR default points at the CMake build output
  path now that the legacy x64/ MSBuild path is no longer produced
* README and helper shell scripts updated to match

Workflow rename for nightly.yml release notes is folded into the
FourKit commit because the FourKit CI changes overwhelm the diff.
2026-04-08 02:30:58 -05:00
Loki Rautio
d0786f956d Update more references to old smartcmd repo 2026-04-07 20:29:32 -05:00
Loki
126943e06e Add details about org change to README 2026-04-07 17:44:00 -05:00
Loki
108e3dc233 Whitespace adjustment to test GitHub webhook 2026-04-07 15:52:48 -05:00
/home/neo
29ebc01ea9 feat: TU19 tutorial world (#1) 2026-04-07 22:42:22 +03:00
Loki
29edc4aff0 Link to new Discord 2026-04-07 14:31:30 -05:00
/home/neo
7149e696f2 docs: discord server link 2026-04-07 22:04:22 +03:00
Revela
078e661b91 Update README to include Unity-LCE Discord server link
Removed Fluxer server link and added Discord badge.
2026-04-07 13:43:05 -05:00
Revela
a07d791683 Update project name in README.md
temporary
2026-04-07 13:37:38 -05:00
itsRevela
77fbf36f54 chore: remove 'why this fork exists' section from release notes 2026-04-07 13:35:32 -05:00
rucheykov
b928351e0b Update Windows64_Minecraft.cpp (#1468) 2026-04-06 12:34:25 -05:00
Sylvessa
413baaceed fix: reorder autosave tick to account for weak hardware (#1482) 2026-04-06 12:34:02 -05:00
Fireblade
98a86fc69b feat. set intro scene background to white (#1474) 2026-04-06 12:33:45 -05:00
itsRevela
37d1942033 chore: remove nightly server release workflow 2026-04-05 18:37:50 -05:00
itsRevela
6728ecb141 fix: increase max packet size to 4MB for cross-fork compatibility
Matches the packet size limit used by the plugin-api fork. Our 512KB
limit caused "Connection lost" when their server sent large packets
(e.g. chunk data) that exceeded our cap.
2026-04-05 18:35:28 -05:00
itsRevela
ca5dbe1c9c revert: remove skipped upstream changes brought in by merge
Reverts workflow revert (#c4c4c08b), BACKPORTING.md (#5e584910),
and CONTRIBUTING.md backporting link (#7dfe46aa) that were
unintentionally included via the upstream merge commit.
2026-04-05 16:25:49 -05: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
itsRevela
38250cc51b docs: update README for upstream merges and chunk loading optimization 2026-04-05 16:20:30 -05:00
Sylvessa
207a1b309f optimization: async dedicated server autosaving (#1473) 2026-04-05 16:17:01 -05:00
Sylvessa
2f3cf58c3c optimization: remove redundant lastTime setter (#1479) 2026-04-05 16:14:13 -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
Logan Gibson
c0a2e82223 Replace instances of hard-coded port in ports variable with SERVER_PORT variable in yml files (#1457) 2026-04-05 16:07:06 -05:00
Sneexy
446df4a6dc Minor docker/container fixes and edits (#1454) 2026-04-05 16:05:40 -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
itsRevela
be17d4028f feat: add performance monitor tool
DLL injector + Python GUI for real-time server metrics.
Hooks into tick loop, chunk generation, and player chunk map
to collect timing data over TCP, displayed in a tkinter dashboard.
Includes bot spawner for load testing.
2026-04-05 15:49:52 -05:00
Sylvessa
034c313ddf optimization: async dedicated server autosaving (#1473) 2026-04-05 12:57:43 -05:00
Sylvessa
c2ea1fa62b optimization: remove redundant lastTime setter (#1479) 2026-04-05 12:51:37 -05:00
Sylvessa
a4e689095c fix: wither and ender dragon custom names (#1472) 2026-04-04 22:04:02 -05:00
Loki
7dfe46aa5d Add backporting link to Contributor's Guide 2026-04-03 16:56:05 -05:00
Loki
5e5849102f Add info about backports we will accept. 2026-04-03 16:55:20 -05: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
Logan Gibson
e4c08b8414 Replace instances of hard-coded port in ports variable with SERVER_PORT variable in yml files (#1457) 2026-04-02 02:43:33 -05:00
Sylvessa
c4c4c08b96 Revert "Update actions workflows and add clang format check for PRs (#1418)"
This reverts commit 38d58f2d8b due to it causing spam and other problems with pull requests.
2026-04-02 00:01:27 -05:00
Sneexy
c2356bf29e Minor docker/container fixes and edits (#1454) 2026-04-01 19:10:47 -05:00