Skip to content

ohnodev/reaper-ac

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4,883 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ReaperAC

Build    Website    Discord

ReaperAC is an open-source Minecraft anticheat designed to support the latest versions of Minecraft. This fork targets Minecraft 26.2 Snapshot 2 (Fabric-only) with a vendored PacketEvents monorepo, aligned with the live minecraft-cabal server runtime. For current snapshot/release status, see Minecraft Java release notes and this repository's releases. Geyser players are fully exempt from the anticheat to prevent false positives.

Downloads

  • Latest updates:
    • Modrinth: coming soon (release pipeline pending)
    • GitHub Releases: coming soon
    • Download stats: will be shown via live badges once public release listings are active

Requirements & Installation

Version Policy

  • ReaperAC in this repo is latest-only.
  • Public release artifacts use the stable 26.2.x version line (no branch/hash suffixes).
  • We only support the current upstream Minecraft line (currently the 26.2 snapshot line). See release notes for the latest snapshot status.
  • Backports are intentionally out of scope; historical support will be handled via tagged releases later.

Resources

Pull Requests

See Contributing for more information about contributing and what our guidelines are.

Build From Source

This fork targets Minecraft 26.2 Snapshot 2 (Fabric-only), with PacketEvents vendored as a Gradle composite build under vendor/packetevents/.

Prerequisites

  • Java 25 or newer (java -version — required by MC 26.2 / Fabric Loader)
  • Git
  • Internet access for Gradle dependencies

Build

The vendored PacketEvents is declared as a Gradle composite build via includeBuild("vendor/packetevents") in settings.gradle.kts, so Gradle automatically substitutes PE dependencies with the local source during compilation.

For Fabric packaging, this repo now hooks :fabric:processIncludeJars to run vendor/packetevents:publishToMavenLocal automatically, so PacketEvents source edits are always included in the final Reaper jar with a normal build command.

git clone https://github.com/ohnodev/reaper-ac.git
cd reaper-ac

# Build the Reaper-AC Fabric jar (also publishes vendored PE automatically)
./gradlew :fabric:build -x test

If you only change code under common/ or fabric/ (not PE), you can skip any extra PE-specific steps and just run ./gradlew :fabric:build -x test.

CI workflows (build.yml, build-and-publish.yml, codeql-analysis.yml) can still run the explicit PE publish step, but local developer builds no longer require it.

Windows (PowerShell)

.\gradlew.bat :fabric:build -x test

Build artifacts

  • Fabric runtime jar: fabric/build/libs/reaperac-fabric-<version>.jar
  • Extra artifacts (sources/javadocs): fabric/build/libs/

Prebuilt Artifact In This Repo

This fork includes prebuilt Fabric runtime jars in prebuilt/ for direct deployment.

Current prebuilt file (latest):

  • prebuilt/reaperac-fabric-26.2.0.jar
  • SHA-256: 209c997a2ffa20eb4525404e6577e52649d40cc050968101d5c18d1084abe918

Verify integrity:

sha256sum prebuilt/reaperac-fabric-26.2.0.jar

Update this checksum in the README whenever the prebuilt jar is rebuilt.

To inspect locally produced files after a build:

ls -lah fabric/build/libs/

Snapshot Mapping Remap Runbook (Critical)

Use this runbook on every Minecraft snapshot bump where blockstate IDs may drift. The goal is to regenerate PacketEvents blockstate mapping from native server IDs so Reaper predictions/collisions do not decode to wrong blocks.

What must be remapped

  • Primary file: vendor/packetevents/mappings/data/block_state/V_26_2.json
  • This file controls PacketEvents global blockstate ID -> state decoding order.
  • If this order drifts from native runtime IDs, simulation will decode wrong blocks (example failure: leaf_litter decoding as big_dripleaf).

Source of truth

  • Native runtime mapping from the server:
    • Block.getId(state) -> state.toString()
  • We dump this from a live Fabric server with the debug command:
    • /dumpblockstates

Step-by-step procedure

  1. Dump native blockstates from server runtime

    • Ensure cabal-mobs has the debug command dumpblockstates registered.
    • Run via console/RCON:
    dumpblockstates
    • Output is written under server debug/, for example:
    • minecraft-cabal/server/debug/blockstate-id-map-YYYYMMDD-HHMMSS.txt
  2. Generate helper artifacts (optional but recommended)

    • Keep copies under:
    • mapping-artifacts/26.2-snapshot-3/
    • Recommended files:
      • id-to-state-26.2-snapshot-3.json
      • state-to-id-26.2-snapshot-3.json
      • blockstate-id-map-26.2-snapshot-3.csv
  3. Rebuild V_26_2.json from native dump

    • Convert the native dump into PacketEvents block_state format:
      • ordered by increasing native state ID
      • grouped by type
      • preserve existing def index per type when still in range
    • Write output to:
    • vendor/packetevents/mappings/data/block_state/V_26_2.json
  4. Sanity-check key IDs

    • Verify known problematic IDs decode correctly after remap.
    • Example checks used for 26.2-snapshot-3:
      • 30350 -> Block{minecraft:leaf_litter}[facing=east,segment_amount=4]
      • 30352 -> Block{minecraft:big_dripleaf}[facing=north,tilt=none,waterlogged=true]
  5. Validate build + mappings

    ./gradlew compileJava
    ./gradlew :packetevents:api:test --tests com.github.retrooper.packetevents.test.MappingIntegrityTest
    ./gradlew :fabric:build
  6. Deploy

    • Copy built jar:
    • fabric/build/libs/reaperac-fabric-26.2.0.jar
    • Into server mods:
    • minecraft-cabal/server/mods/reaperac-fabric-26.2.0.jar
    • Restart server and verify with trace logs on previously failing blocks.

Upstream format reference

About

No description, website, or topics provided.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages