{"id":24330933,"url":"https://github.com/axionbuster/mmm","last_synced_at":"2026-03-04T01:03:58.663Z","repository":{"id":271825985,"uuid":"914656974","full_name":"axionbuster/mmm","owner":"axionbuster","description":"Minecraft 1.21.4 Server (pure Haskell)","archived":false,"fork":false,"pushed_at":"2025-02-20T20:29:13.000Z","size":1068,"stargazers_count":102,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-31T05:09:10.968Z","etag":null,"topics":["haskell","minecraft","minecraft-server"],"latest_commit_sha":null,"homepage":"https://axionbuster.github.io/mmm/","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/axionbuster.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2025-01-10T03:20:40.000Z","updated_at":"2025-03-07T17:16:09.000Z","dependencies_parsed_at":"2025-02-09T05:10:21.296Z","dependency_job_id":"2a9df897-9881-4003-bc51-57259296d3f1","html_url":"https://github.com/axionbuster/mmm","commit_stats":null,"previous_names":["axionbuster/mmm"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axionbuster%2Fmmm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axionbuster%2Fmmm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axionbuster%2Fmmm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axionbuster%2Fmmm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/axionbuster","download_url":"https://codeload.github.com/axionbuster/mmm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247608151,"owners_count":20965952,"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":["haskell","minecraft","minecraft-server"],"created_at":"2025-01-18T01:16:47.358Z","updated_at":"2026-03-04T01:03:53.625Z","avatar_url":"https://github.com/axionbuster.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mmm\n\nHaddock link: [pg]\n\n[![CI](https://github.com/axionbuster/mmm/actions/workflows/ci.yml/badge.svg)](https://github.com/axionbuster/mmm/actions/workflows/ci.yml)\n[![Haddock](https://img.shields.io/badge/Haddock-Documentation-blue)](https://axionbuster.github.io/mmm/)\n\n## Very short summary\n\nUltimate goal:\n\n- Leverage STM and linear typing to __fundamentally shut out item / block duplication bugs.__\n- Use STM observer pattern so that __users can directly observe changes in the environment__ rather than relying on a predefined set of events.\n- Have a standalone working server as well as let library be used as a framework. Support both __subtractive and additive modes of server-building__.\n- Fundamentally concurrent; have global clock for game logic, but __do not rely on a central event loop.__\n- Make it __very easy to program a server using a proper effect system.__\n\n1. Being ported from an old, working project with vast code improvements.\n2. Networking code nearing first finished draft.\n3. Has \"working\" collision detection and resolution system.\n4. Immediate goal: let players join, get tab list working, hit each other.\n5. Then: authenticate with Microsoft.\n6. Will post updates soon.\n\nX/Twitter: @axionbuster\n\n## How to build (common)\n\nOn all operating systems, you need the development version of OpenSSL installed. There may be more dependencies.\n\nUse the system-specific instructions below to install all needed dependencies.\n\nOnce all the necessary dependencies have been installed, run:\n\n```\nstack build\n```\n\n## How to build (Windows)\n\nSince this project uses Stack, and Stack comes with its own MSYS2 environment, you should install it like this:\n\n```sh\n# first, update the package index\n# (do this many times until it stops updating)\nstack exec -- pacman -Syu\n\n# now, install OpenSSL\nstack exec -- pacman -S mingw-w64-x86_64-openssl\n```\n\n## How to build (Ubuntu or Fedora)\n\nOn Ubuntu or Fedora, OpenSSL is found in `libssl-dev` and `openssl-devel`, respectively. Download these packages, first.\n\nOn Ubuntu, you need to install `libgmp-dev`. On Fedora, install `gmp-devel`.\n\nYou also need `zlib`: `zlib1g-dev` on Ubuntu, `zlib-devel` on Fedora.\n\nYou also need a working C compiler and `pkg-config`. `pkg-config` is found in the Ubuntu package `pkgconf` and the Fedora package `pkgconf-pkg-config`.\n\n## Immediate help\n\nWell project is kind of less than well-documented and there's no working entry point but here's something I might need help with:\n\n- Review the C OpenSSL adaptor for problems.\n- Review the AI-generated packet formats for errors / omissions.\n\n## What I'm doing now\n\n- Parse \"paletted container\" format for chunks.\n- Add a packet state registry (packet type \u003c-\u003e (who's talking * numeric packet code * protocol state))\n  that is decoupled from the actual packet types so that I can reuse the same packet types if there's not been significant changes between versions.\n- Architect a way to make the observer pattern easy to understand / program in.\n  Target demographic for programmers is teenagers and young adults with minimal (initial) knowledge of Haskell or FP in general.\n\n## Acknowledgements\n\nAlgorithms for collision detection and resolution contains portions and adaptations from the [Minestom project](https://github.com/Minestom/Minestom).\n\n[pg]: https://axionbuster.github.io/mmm\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxionbuster%2Fmmm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faxionbuster%2Fmmm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxionbuster%2Fmmm/lists"}