{"id":37203640,"url":"https://github.com/oomph-ac/oomph","last_synced_at":"2026-01-14T23:29:05.142Z","repository":{"id":286384608,"uuid":"451669691","full_name":"oomph-ac/oomph","owner":"oomph-ac","description":"The best Minecraft Bedrock AntiCheat: Lightweight, high-performance MiTM proxy built to stop cheaters in their tracks.","archived":false,"fork":false,"pushed_at":"2025-12-30T19:27:46.000Z","size":2371,"stargazers_count":65,"open_issues_count":16,"forks_count":15,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-12-31T15:18:25.789Z","etag":null,"topics":["anti-cheat","anticheat","bedrock-edition","go","golang","mcbe","mcpe","minecraft","minecraft-bedrock","minecraft-bedrock-edition"],"latest_commit_sha":null,"homepage":"https://oomph.ac","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oomph-ac.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-01-24T23:34:07.000Z","updated_at":"2025-12-30T19:27:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"36689250-e3cb-45c6-a7f9-22d76646ff27","html_url":"https://github.com/oomph-ac/oomph","commit_stats":null,"previous_names":["oomph-ac/oomph"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oomph-ac/oomph","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oomph-ac%2Foomph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oomph-ac%2Foomph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oomph-ac%2Foomph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oomph-ac%2Foomph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oomph-ac","download_url":"https://codeload.github.com/oomph-ac/oomph/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oomph-ac%2Foomph/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28438314,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T22:37:52.437Z","status":"ssl_error","status_checked_at":"2026-01-14T22:37:31.496Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["anti-cheat","anticheat","bedrock-edition","go","golang","mcbe","mcpe","minecraft","minecraft-bedrock","minecraft-bedrock-edition"],"created_at":"2026-01-14T23:29:04.470Z","updated_at":"2026-01-14T23:29:05.122Z","avatar_url":"https://github.com/oomph-ac.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Oomph\nOomph is a military grade interception based anti-cheat proxy for Minecraft: Bedrock Edition.\n\n## How does Oomph work?\nOomph acts as an intermediary between your server and Minecraft clients, processing all packets sent by the client and the server. It performs various checks on all packets to detect potential cheats.\n\nOomph implements a server authoritative system for movement and combat, allowing the proxy to mitigate a large variety of common cheats.\n\n## Dependencies\n- [Dragonfly](https://github.com/oomph-ac/dragonfly)\n- [Spectrum](https://github.com/oomph-ac/spectrum)\n- (For your PM server) [Spectrum-PM](https://github.com/oomph-ac/spectrum-pm)\n- [OConfig](https://github.com/oomph-ac/oconfig)\nThe multi-version will not be going public at the moment, you may remove the dependency from `go.mod`.\n\n## Server Authoritative Movement\nSimilar to what is implemented in BDS, Oomph attempts to replicate the movement of players and send any corrections if deemed neccessary. Unlike BDS, Oomph accounts for latency, making it much smoother than the current vanilla system. As of now, Oomph has known issues with the following:\n* Liquids, the client is fully exempted in this scenario.\n* Collisions\n    - if there is any small position difference between Oomph's authoritative position and the clients. Attempts have been made to reduce this issue by slowly drifting to the position of the client in certain scenarios.\n    - if a block's bounding box is not implemented by Dragonfly\n\nOomph's server authoritative movement system also mitigate any value of timer above 20 ticks per second, making it non-viable for closet and blatant cheaters.\n\nMovement logic and processing can be found in the following files:\n* `player/packet.go`\n* `player/movement.go`\n* `player/component/movement.go`\n* `player/component/acknowledgment/movement.go`\n* `player/simulation/movement.go`\n\nThere are currently no alerts for when a movement mitigation is triggered.\n\n## Server Authoritative Combat\nOomph utilizes a server authoritative combat system to prevent any type of hitbox or reach modification, and also mitigating any type of cheat that harshly abuses traditional lag compensation like in the [reach detection](https://github.com/oomph-ac/oomph/commit/de222dfa27721f42c7497002fbd172c9bbcbb26b) Mineage, Cora, and PotLounge use. However, there is still a way to get this functionality currently, by disabling `FullAuthoritative` in the `oconfig` combat options.\n\n![](assets/combat_system_basic.png)\n\nOomph has a \"server\" tick and a client tick, and utilizes a position buffer to get an entity's position nearest to that tick. The amount of positions buffered is configurable via. `oconfig`. Whenever the client gives an indication of an attack or missed swing, Oomph will rewind the entity to the exact client tick (or closest, if the tick is not found in the position buffer). \n\nThere are three possible scenarios where Oomph decides to calculate combat on the next PlayerAuthInput packet:\n* If the client sends an InventoryTransaction packet, the first one sent will be used to calculate the end result.\n* If the client has sent a missed swing flag in the next PlayerAuthInput.\n* If the client has sent a start block break action in the next PlayerAuthInput.\n\n(Although it is vanilla behaviour in Bedrock where you can attack as many entities as you can within the 50ms tick period, this system only allows a player to attack one entity per client tick.)\n\nIf the client did not send an InventoryTransaction, a check is done to see if the client potentially mispredicted a missed swing, when Oomph thinks it should still be hitting an entity. Oomph will find the closest entity (within 4.5 blocks) to the player and perform any neccessary calculations on that entity.\n\nOomph attempts to do multiple raycasts to somehow simulate how Bedrock does combat (and other actions) on frame. Although it probably isn't 100% perfect, I felt as if it's as good as it could get. Oomph then ensures that there aren't any blocks intersecting the calculated ray, and if this is the case, it sends an attack packet to the server. If the player is touch/mobile and the raycast fails, Oomph calculates the closest point from the bounding box of the entity to the attacker's eye position. It then ensures that the distance between those two are within range. Of course, an angle validation is required for this as well, and will be worked on in the near future.\n\nLogic for combat, setting the client \u0026 server tick, and lag compensating entities can be found in:\n* `player/packet.go`\n* `player/world.go`\n* `player/combat.go`\n* `player/component/combat.go`\n* `player/component/acknowledgment/entities.go`\n* `player/component/acknowledgment/latency.go`\n* `player/component/entities.go`\n* `entity/entity.go`\n* `entity/rewind.go`\n\n## Credits\n* [ethaniccc](https://www.github.com/ethaniccc) - Created the systems for validating combat and movement, while keeping lag-compensation in mind.\n* [JustTalDevelops](https://github.com/JustTalDevelops) - Created the base of Oomph, making it able to intercept packets, and avoiding pesky import cycle.\n* [هاشم](https://github.com/hashimthearab) - Created the base of Oomph\n* [cjmustard](https://www.github.com/cjmustard) - Moral support\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foomph-ac%2Foomph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foomph-ac%2Foomph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foomph-ac%2Foomph/lists"}