{"id":15532253,"url":"https://github.com/mindstorm38/mc173","last_synced_at":"2025-04-23T13:19:29.196Z","repository":{"id":200334709,"uuid":"702748170","full_name":"mindstorm38/mc173","owner":"mindstorm38","description":"A work-in-progress (80%) Minecraft beta 1.7.3 server made in Rust.","archived":false,"fork":false,"pushed_at":"2025-02-23T16:55:19.000Z","size":1811,"stargazers_count":56,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-23T13:19:23.407Z","etag":null,"topics":["minecraft","minecraft-beta","server"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mindstorm38.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-09T23:58:09.000Z","updated_at":"2025-04-22T13:22:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"903ec500-b151-49bb-87b6-9fe702757dd3","html_url":"https://github.com/mindstorm38/mc173","commit_stats":null,"previous_names":["mindstorm38/mc173"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mindstorm38%2Fmc173","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mindstorm38%2Fmc173/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mindstorm38%2Fmc173/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mindstorm38%2Fmc173/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mindstorm38","download_url":"https://codeload.github.com/mindstorm38/mc173/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250439295,"owners_count":21430824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["minecraft","minecraft-beta","server"],"created_at":"2024-10-02T11:29:34.210Z","updated_at":"2025-04-23T13:19:29.179Z","avatar_url":"https://github.com/mindstorm38.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Minecraft Beta 1.7.3\nA work-in-progress Minecraft beta 1.7.3 server made in Rust. This project split the server\ncrate from data structure and logic crate, the latter is made to be used be developers.\n\n1. [Logic crate](#logic-crate)\n2. [Server crate](#server-crate)\n3. [Contributing](#contributing)\n4. [Roadmap](#roadmap)\n\n## Logic crate\n\n[![Crates.io Total Downloads](https://img.shields.io/crates/d/mc173?style=flat-square)](https://crates.io/crates/mc173)\n\nThe logic crate [mc173](/mc173/) provides the core data structures such as worlds, chunks \nand entities, but also the behaviors for blocks, items and entities. It also provides a\nlot of utilities related to Minecraft.\n\n## Server crate\n\n[![Crates.io Total Downloads](https://img.shields.io/crates/d/mc173-server?style=flat-square)](https://crates.io/crates/mc173-server)\n\nThe server crate [mc173-server](/mc173-server/) is an implementation of the *Notchian* \nserver protocol, it is built on top of the logic crate and has threaded networking, it \nalso defines protocol structures.\n\n## Contributing\n\nIf you're willing to contribute or fork this code, this sections presents the different\ntools that can be used to understand the *Notchian* implementation of Minecraft beta \n1.7.3 and how to implement it into Rust.\n\nThe 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\ndecompile and deobfuscate the original archive of Minecraft beta 1.7.3. It can also be\nused to recompile and reobfuscate the game and then run it, which can be useful to add\ndebugging code, but fortunately it's rare to get to that point. You can read the project's\nREADME, it is really well designed and its CLI is intuitive, you just have to choose the\nb1.7.3 version for both client and server.\n\nChoosing both client and server is really important as these two have slightly different\nsource codes. For example, you have to choose the client or server source code depending\non which side of the network protocol you want to understand.\n\nThe next step is just to explore the source code, and try to understand how it works! This\ncan be quite challenging sometimes due to the object oriented nature of it, so you should\nalso use a IDE or text editor that support the Java langage and a few important features\nsuch as *goto definition* and *class hierarchy* (VSCode, IDEA, Eclipse...).\n\nUse the following [roadmap](#roadmap) either to understand how the completed components\nhave been adapted from Java to Rust, or if you want to contribute and add a feature.\nThe Rust code is also documented as most as possible, so please read the doc comments\nto really understand how to contribute to the documented code. If you think that the\nroadmap is incomplete, you can add items as needed.\n\nA tool that can also be useful is a Minecraft CLI launcher that I *(Théo Rozier)* made,\nit's called [PortableMC] and it has really good support for b1.7.3 and the game starts\nreally fast compared to the Mojang launcher. It also fixes in-game skin and some other\nlegacy-related issues.\n\n\u003e [!NOTE]\n\u003e The logic crate is intentionally not designed to be modular and scale with the time,\n\u003e one example of this is how every logic is hardcoded in its own module (redstone power,\n\u003e block placing, breaking). This is intentional in order to be more efficient developing\n\u003e and make the code clearer: you want to understand how redstone power works? Simply go\n\u003e into power module.\n\n[RetroMCP]: https://github.com/MCPHackers/RetroMCP-Java\n[PortableMC]: https://github.com/mindstorm38/portablemc\n\n## Roadmap\nThere is a lot of work to be done in order to provide a fully functional server on \nparity with the *Notchian* server, in order to properly achieve this work, the following\nroadmap summarize implemented and missing components and in which order we should work\non them. The priority of each feature is defined by its order in the list.\n\n- [x] World and chunk data structures\n- [ ] World serialization\n    - [x] Chunk data\n    - [x] Block entity data\n    - [x] Entity data\n    - [ ] Level data\n- [ ] Blocks\n    - [x] Definitions\n    - [x] Item drop\n    - [x] Tick scheduling\n    - [x] Placing\n    - [x] Breaking\n    - [x] Piston\n    - [ ] Rail\n    - [ ] Redstone (partial)\n    - [ ] Clicking (partial)\n- [ ] Items\n    - [x] Definitions\n    - [x] Inventory data structure\n    - [x] Crafting\n        - [x] Definitions\n        - [x] Tracker\n    - [ ] Use/place behaviors\n    - [x] Break behaviors\n- [ ] Entities\n    - [x] Entity data structures\n    - [ ] Entity behaviors (95%)\n- [ ] Server\n    - [x] Protocol\n    - [x] Network threading\n    - [x] Block breaking\n        - [x] Long block breaking\n        - [x] Instant block breaking\n        - [x] Block breaking duration check\n    - [x] Players inventory is stored server-side\n    - [x] Players can be linked to any entity type\n    - [ ] Worlds serialization\n        - [ ] Non-persistent player entities\n        - [ ] Player entities saved appart\n    - [x] Player window\n        - [x] Left and right click support\n        - [x] Player inventory crafting grid\n        - [x] Crafting table\n        - [x] Chest\n        - [x] Furnace\n        - [x] Dispenser\n        - [x] Shift-click on items\n    - [x] Entity tracking\n        - [x] Client-side spawn\n    - [ ] Move world loading handling to the logic crate *(with something like AutoWorld)*\n- [x] Lighting engine\n- [x] World generation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmindstorm38%2Fmc173","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmindstorm38%2Fmc173","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmindstorm38%2Fmc173/lists"}