MCPcopy Create free account
hub / github.com/QuiltMC/chasm

github.com/QuiltMC/chasm @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
759 symbols 2,267 edges 124 files 200 documented · 26% updated 3y ago★ 7415 open issues

Browse by type

Functions 629 Types & classes 130
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

NOTE: This project is still in its early development. There's guaranteed bugs and missing functionality.

Chasm - Collision Handling ASM

What is Chasm?

Chasm is a Java bytecode transformation tool. In its base functionality, it's similar to ASM. However, ASM is intended for single programs transforming some bytecode, whereas the goal of Chasm is to allow multiple users to transform the same code. This is useful in modding Java based games, where multiple mods might want to change the same code.

Why use Chasm?

There are other options for transforming bytecode. Two popular ones are Mixins and access-wideners. While they both perform well in their respective tasks, they are both limiting: Access wideners do one thing only and Mixin tries its best to be safe, preventing many useful transformations like changing control flow.

Chasm aims to provide the full power of ASM without restrictions. This means that using Chasm directly might be tricky, but the goal of Chasm is to allow reimplementing Mixin and access wideners on top of Chasm.

This greatly simplifies the toolchain, since only one bytecode transformation library needs to be applied. Additionally, if Mixin and AW are insufficient, people can implement another "frontend" for Chasm without requiring special toolchain support.

Extension points exported contracts — how you extend this code

browse all types & interfaces →

Core symbols most depended-on inside this repo

browse all functions →

Shape

Method 629
Class 114
Interface 9
Enum 7

Languages

Java100%

Modules by API surface

chasm/src/main/java/org/quiltmc/chasm/internal/asm/visitor/ChasmMethodVisitor.java42 symbols
chasm/src/test/java/org/quiltmc/chasm/TransformerSorterTests.java25 symbols
chasm/src/main/java/org/quiltmc/chasm/internal/util/NodeUtils.java23 symbols
chasm/src/main/java/org/quiltmc/chasm/internal/metadata/PathMetadata.java21 symbols
chassembly/src/main/java/org/quiltmc/chasm/lang/api/ast/BinaryNode.java19 symbols
chassembly/src/main/java/org/quiltmc/chasm/lang/api/ast/Ast.java19 symbols
chasm/src/main/java/org/quiltmc/chasm/internal/TransformationSorter.java19 symbols
chassembly/src/main/java/org/quiltmc/chasm/lang/internal/render/Renderer.java18 symbols
chasm/src/main/java/org/quiltmc/chasm/internal/asm/visitor/ChasmClassVisitor.java18 symbols
chasm/src/main/java/org/quiltmc/chasm/internal/asm/visitor/LocalInterpreter.java17 symbols
chassembly/src/main/java/org/quiltmc/chasm/lang/internal/eval/EvaluatorImpl.java16 symbols
chassembly/src/main/java/org/quiltmc/chasm/lang/api/ast/UnaryNode.java16 symbols

For agents

$ claude mcp add chasm \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page