diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..92ebbea7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,54 @@ +# Scope of Project +At the moment, this project's scope is generally limited outside of adding new content to the game (blocks, mobs, items). We are currently prioritizing stability, and platform support over these things. + +## Backporting +If you're backporting a feature or downporting, please read [PORTING.md](./PORTING.md) + +## Parity +We are attempting to keep our version of LCE as close to visual and experience parity with the original console experience of LCE as possible. This means that we will not be accepting changes that... +- Backport things from Java Edition that did not ever exist in LCE +- Swap out LCE visuals for Java Edition or Bedrock Edition style visuals +- Change LCE defaults in favor of different defaults if it changes the experience + - For example, increasing mob spawn limits without increasing the area mobs can spawn within, aka increasing mob density past what was the original console experience +- Redesign UI components different than LCE +- Break controller support, or otherwise do not support play with a controller +- Add custom texture packs or DLC that never existed in LCE +- Add any gameplay content (block, item, mob) that has no existing point of reference in any official LCE build + +However, we would accept changes that... +- Fix legitimately buggy or inconsistent behavior in LCE that causes unexpected outcomes + - For example, mobs clipping outside of walls, clipping through the world, broken mechanics +- Add features to better support multi-platform use of LCE, such as video and control settings + - These menus need to respect the visual style of LCE, though. +- Replace existing UI systems with SWF-free rendering techniques that are as visually and functionally identical as possible +- Improve the quality of assets (such as sounds) while preserving their contents + - For example, upgrading the quality of all music in-game while preserving any unique cuts / versions, or faithfully remaking those unique cuts / versions with higher quality assets +- Backport things like modern skin rendering +- Change the code from using non-stitched textures to individually named texture PNGs and stitching at runtime +- Adding menus to better support custom dedicated servers with their own fixed IPs +- Add support for things like Steamworks Networking and other P2P networking and auth strategies +- Improve Keyboard and Mouse control support +- Add minimal, non-invasive Quality of Life features that don't otherwise compromise the LCE experience + - For example, adjusting certain crafting recipes or change item behaviors like non-stackable doors + + +## Current Goals +- Being a robust Desktop version of LCE +- Having proper controller support across all types, brands on Desktop or Desktop-like platforms (Steam Deck) +- Improving stability as much as possible +- Fixing as many bugs as possible +- Refining rendering settings, renderer options, as well as reaching rendering parity with true LCE +- Having workable multi-platform compilation for ARM, Consoles, Linux + +# Scope of PRs +All Pull Requests should fully document the changes they include in their file changes. They should also be limited to one general topic and not touch all over the codebase unless its justifiable. + +For example, we would not accept a PR that reworks UI, multiplayer code, and furnace ticking even if its a "fixup" PR as its too difficult to review a ton of code changes that are all irrelevant from each other. However, a PR focused on adding a bunch of commands or fixes several crashes that are otherwise irrelevant to each other would be accepted. + +If your PR includes any undocumented changes it will be closed. + +# Use of AI and LLMs +We currently do not accept any new code into the project that was written largely, entirely, or even noticably by an LLM. All contributions should be made by humans that understand the codebase. + +# Pull Request Template +We request that all PRs made for this repo use our PR template to the fullest extent possible. Completely wiping it out to write minimal information will likely get your PR closed. diff --git a/PORTING.md b/PORTING.md new file mode 100644 index 00000000..6d57f41c --- /dev/null +++ b/PORTING.md @@ -0,0 +1,15 @@ +# Approach to Backported Features +All backported features incorperated into MCLEMP should be, when merged, functionally identical to their state in the version of the game we're currently targeting. This should be in reference to a known 4J build of LCE. Verification can either be done by doing a decompilation based match of the implementation or, alternatively, all functionality and limitations of the given feature should be compared against the version of LCE we're targeting. + +# Approach to Downported Features +All downported features incorporated into MCLEMP should be, when merged, functionally identical to their state in the version of the game they originated from. This should be in reference to a known 4J build of LCE. erification can either be done by doing a decompilation based match of the implementation against the source build or, alternatively, all functionality and limitations of the given feature should be compared against the newer LCE version it was taken from. + +# Approach to Bugfixes +Anything that does not behave in an "expected" manner, especially if its behavior is not widely accepted as a gameplay mechanic, is valid for fixing in our repository. This includes bugfixes that were made in versions past the version we target, but excludes any visual changes that may not have been included at the build we're targeting. + +If you provide a visual bugfix that fixes a distinctive quirk of the LCE renderer, it should be provided in an "off by default" state that can be toggled on in-game by the user. There is no guarantee that we will merge it. + +If your visual bugfix is a fix added in a future version of LCE than the one we're targeting, it should also be put behind a toggle or equivalent system for keeping it off by default. + +# Targeted Version +We are targeting to keep this on TU19 with the exclusion of neoLegacy for Higher TU's, If there are any features for versions maintained by [neoLegacy](https://github.com/neoStudiosLCE/neoLegacy) that are missing make a PR to there repository and it will be brought to this, we also allow PR's that Downport to get older TU's. diff --git a/README.md b/README.md index 7a435e38..9f69be23 100644 --- a/README.md +++ b/README.md @@ -1 +1,101 @@ -# MCLEClient \ No newline at end of file +# MCLEClient (Minecraft Legacy Edition) + +[![Discord](https://img.shields.io/badge/Discord-Join%20Server-5865F2?logo=discord&logoColor=white)](https://discord.gg/u9f67jaWyP) + +This project is based on [MCLCE/MinecraftConsoles](https://github.com/MCLCE/MinecraftConsoles) With Modified Networking to allow Custom Authentication, Relayed servers & Relayed Player Worlds. And various Improvments & Changes. + +## Download +### Client +Windows users can Look at our [Release Tags](https://github.com/mclemp/MCLEClient/tags) And choose what version to download. +### Server +If you're looking for Dedicated Server software, Look at its [Release Tags](https://github.com/mclemp/MCLEClient/tags) And choose what version to download. + +## Platform Support + +- **Windows**: Supported for building and running the project +- **macOS / Linux**: All Builds should work on Wine 8.0 Above & Crossover, This is tested by maintainers but not frequently. +- **Android**: VIA x86 EMULATORS (like GameNative) ONLY! Does run but has stability / frametime pacing issues. +- **iOS**: No current support +- **All Consoles**: Console support remains in the code, but maintainers are not currently verifying console functionality. + +## Features + +- Relayed Multiplayer & Discovery +- Support for keyboard and mouse input +- Fullscreen mode support (toggle using F11) +- Splitscreen Multiplayer support (connect to servers, etc) +- Added a high-resolution timer path on Windows for smoother high-FPS gameplay timing +- Device's screen resolution will be used as the game resolution instead of using a fixed resolution (1920x1080) + +## Controls (Keyboard & Mouse) + +- **Movement**: `W` `A` `S` `D` +- **Jump / Fly (Up)**: `Space` +- **Sneak / Fly (Down)**: `Shift` (Hold) +- **Sprint**: `Ctrl` (Hold) or Double-tap `W` +- **Inventory**: `E` +- **Chat**: `T` +- **Drop Item**: `Q` +- **Crafting**: `C` To open, `Q` and `E` to move through tabs (cycles Left/Right) +- **Change to 3rd, 2nd or 1st person**: `F5` +- **Fullscreen**: `F11` +- **Pause Menu**: `Esc` +- **Attack / Destroy**: `Left Click` +- **Use / Place**: `Right Click` +- **Select Item**: `Mouse Wheel` or keys `1` to `9` +- **Accept or Decline Tutorial hints**: `Enter` to accept and `B` to decline +- **Game Info (Player list and Host Options)**: `TAB` +- **Toggle HUD**: `F1` +- **Toggle F3 Menu**: `F3` + +## Contributors +Would you like to contribute to this project? Please read our [Contributor's Guide](CONTRIBUTING.md) before doing so! This document includes our current goals, standards for inclusions, rules, and more. + +## Client Launch Arguments + +| Argument | Description | +|--------------------|-----------------------------------------------------------------------------------------------------| +| `-fullscreen` | Launches the game in Fullscreen mode | + +Example: +``` +Minecraft.Client.exe -fullscreen +``` + +## Multiplayer +Multiplayer is relayed to allow anyone to easily host! + +- Hosting a multiplayer world automatically advertises it on the in-game Join Game menu to all players +- Other players on the same version can discover the session from the in-game Join Game menu +- Split-screen players can join in, even in Multiplayer! + +## Credits +Special thanks to [neoLegacy](https://github.com/neoStudiosLCE/neoLegacy) for allowing us to use there version for Higher TU's +Special thanks to [DrPerky](https://github.com/DrPerkyLegit) for making the Backend used for Authentication, Leaderboards, & Relaying, And the original Networking. + +## Build & Run + +1. Install [Visual Studio 2022](https://aka.ms/vs/17/release/vs_community.exe) or [newer](https://visualstudio.microsoft.com/downloads/). +2. Clone the repository with submodules. If you don't, you will get a build error! + - `git clone --recurse-submodules https://github.com/MCLCE/MinecraftConsoles.git` +3. Open the project folder from Visual Studio. +4. Set the build configuration to **Windows64 - Debug** (Release is also ok but missing some debug features), then build and run. + +### CMake (Windows x64) + +```powershell +cmake --preset windows64 +cmake --build --preset windows64-debug --target Minecraft.Client +``` + +For more information, see [COMPILE.md](COMPILE.md). + +## Star History + + + + + + Star History Chart + + \ No newline at end of file