Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mindstorm38/mc173
A work-in-progress (80%) Minecraft beta 1.7.3 server made in Rust.
https://github.com/mindstorm38/mc173
minecraft minecraft-beta server
Last synced: 18 days ago
JSON representation
A work-in-progress (80%) Minecraft beta 1.7.3 server made in Rust.
- Host: GitHub
- URL: https://github.com/mindstorm38/mc173
- Owner: mindstorm38
- License: apache-2.0
- Created: 2023-10-09T23:58:09.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-02T18:20:54.000Z (8 months ago)
- Last Synced: 2024-05-01T14:30:28.284Z (6 months ago)
- Topics: minecraft, minecraft-beta, server
- Language: Rust
- Homepage:
- Size: 1.55 MB
- Stars: 22
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Minecraft Beta 1.7.3
A work-in-progress Minecraft beta 1.7.3 server made in Rust. This project split the server
crate from data structure and logic crate, the latter is made to be used be developers.1. [Logic crate](#logic-crate)
2. [Server crate](#server-crate)
3. [Contributing](#contributing)
4. [Roadmap](#roadmap)## Logic crate
[![Crates.io Total Downloads](https://img.shields.io/crates/d/mc173?style=flat-square)](https://crates.io/crates/mc173)
The logic crate [mc173](/mc173/) provides the core data structures such as worlds, chunks
and entities, but also the behaviors for blocks, items and entities. It also provides a
lot of utilities related to Minecraft.## Server crate
[![Crates.io Total Downloads](https://img.shields.io/crates/d/mc173-server?style=flat-square)](https://crates.io/crates/mc173-server)
The server crate [mc173-server](/mc173-server/) is an implementation of the *Notchian*
server protocol, it is built on top of the logic crate and has threaded networking, it
also defines protocol structures.## Contributing
If you're willing to contribute or fork this code, this sections presents the different
tools that can be used to understand the *Notchian* implementation of Minecraft beta
1.7.3 and how to implement it into Rust.The most important tool is [RetroMCP], which is a modern remake of *MCP* (one of the most important software in Minecraft's modding history). It can be used to automatically
decompile and deobfuscate the original archive of Minecraft beta 1.7.3. It can also be
used to recompile and reobfuscate the game and then run it, which can be useful to add
debugging code, but fortunately it's rare to get to that point. You can read the project's
README, it is really well designed and its CLI is intuitive, you just have to choose the
b1.7.3 version for both client and server.Choosing both client and server is really important as these two have slightly different
source codes. For example, you have to choose the client or server source code depending
on which side of the network protocol you want to understand.The next step is just to explore the source code, and try to understand how it works! This
can be quite challenging sometimes due to the object oriented nature of it, so you should
also use a IDE or text editor that support the Java langage and a few important features
such as *goto definition* and *class hierarchy* (VSCode, IDEA, Eclipse...).Use the following [roadmap](#roadmap) either to understand how the completed components
have been adapted from Java to Rust, or if you want to contribute and add a feature.
The Rust code is also documented as most as possible, so please read the doc comments
to really understand how to contribute to the documented code. If you think that the
roadmap is incomplete, you can add items as needed.A tool that can also be useful is a Minecraft CLI launcher that I *(Théo Rozier)* made,
it's called [PortableMC] and it has really good support for b1.7.3 and the game starts
really fast compared to the Mojang launcher. It also fixes in-game skin and some other
legacy-related issues.> [!NOTE]
> The logic crate is intentionally not designed to be modular and scale with the time,
> one example of this is how every logic is hardcoded in its own module (redstone power,
> block placing, breaking). This is intentional in order to be more efficient developing
> and make the code clearer: you want to understand how redstone power works? Simply go
> into power module.[RetroMCP]: https://github.com/MCPHackers/RetroMCP-Java
[PortableMC]: https://github.com/mindstorm38/portablemc## Roadmap
There is a lot of work to be done in order to provide a fully functional server on
parity with the *Notchian* server, in order to properly achieve this work, the following
roadmap summarize implemented and missing components and in which order we should work
on them. The priority of each feature is defined by its order in the list.- [x] World and chunk data structures
- [ ] World serialization
- [x] Chunk data
- [x] Block entity data
- [x] Entity data
- [ ] Level data
- [ ] Blocks
- [x] Definitions
- [x] Item drop
- [x] Tick scheduling
- [x] Placing
- [x] Breaking
- [x] Piston
- [ ] Rail
- [ ] Redstone (partial)
- [ ] Clicking (partial)
- [ ] Items
- [x] Definitions
- [x] Inventory data structure
- [x] Crafting
- [x] Definitions
- [x] Tracker
- [ ] Use/place behaviors
- [x] Break behaviors
- [ ] Entities
- [x] Entity data structures
- [ ] Entity behaviors (95%)
- [ ] Server
- [x] Protocol
- [x] Network threading
- [x] Block breaking
- [x] Long block breaking
- [x] Instant block breaking
- [x] Block breaking duration check
- [x] Players inventory is stored server-side
- [x] Players can be linked to any entity type
- [ ] Worlds serialization
- [ ] Non-persistent player entities
- [ ] Player entities saved appart
- [x] Player window
- [x] Left and right click support
- [x] Player inventory crafting grid
- [x] Crafting table
- [x] Chest
- [x] Furnace
- [x] Dispenser
- [x] Shift-click on items
- [x] Entity tracking
- [x] Client-side spawn
- [ ] Move world loading handling to the logic crate *(with something like AutoWorld)*
- [x] Lighting engine
- [x] World generation