MCPcopy Index your code
hub / github.com/CraftCanvasMC/Canvas

github.com/CraftCanvasMC/Canvas @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
969 symbols 2,370 edges 117 files 179 documented · 18%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

title

License: GPL-3.0
GitHub stars
GitHub forks

CanvasMC is a high performance fork of Folia aiming to provide a stable and consistent region threading environment, alongside tons of optimizations and performance features for large scale servers.


bStats Graph Data

Features & Highlights

Alternative Scheduler

  • Canvas provides a scheduler written by the team called the AFFINITY scheduler, which contains configurable features that increase performance immensely.

Optimized Chunk Generation

  • Canvas replaces a rewritten chunk system pool, providing further optimizations that help with scaling and single-threaded throughput

Extensive Configuration

  • Fine-tune aspects of your server with fully documented configuration options and performance settings.

Proper Region Profiling

  • Canvas introduces a full Spark profiler that is fully compatible with region threading, replacing the limited Folia profiling engine.

Powerful and Optimized

  • By fixing numerous Folia bugs and crashes, Canvas delivers a high-performance, stable, and reliable experience.

Getting Started

Downloading & Running

  1. Download the latest server JAR from the Downloads page on canvasmc.io.
  2. Launch using Java (Java 25+ required) with your preferred arguments and configuration.

Building from Source

Requirements:

  • Java 25
  • Git (configured with name/email)

Common build commands:

./gradlew applyAllPatches # Applies all patches to construct the Canvas source
./gradlew createPaperclipJar # Creates the paperclip jar
./gradlew runDev # Starts a development server locally

Documentation & Resources

  • Official Documentation: https://docs.canvasmc.io
  • Community & Support: Join the Canvas Discord
  • Issue Tracker / Contributing: Use this GitHub repo for reporting bugs, proposing features, and submitting pull requests
  • Donations / Sponsorship: Support development on Ko-fi

Contributing

We welcome many forms of contributions:

  • Code (bug fixes, features)
  • Documentation improvements
  • Testing & bug reporting
  • Community help & support
  • Donations to help support the developers

See the Canvas Contributing Guide for more detail.


Compatibility & Notes

  • Canvas is a fork of Folia and is not a drop-in replacement for Purpur, Paper, or other non-Folia forks. It is intended primarily for environments already using Folia or Folia-based forks.
  • The project adheres strictly to Folia’s threading and safety rules and does not permit bypassing them.

License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0).


Acknowledgments & Inspiration

Canvas incorporates patches inspired by or derived from other high-performance projects (e.g. Lithium, Leaf), along with its own custom optimizations.

Extension points exported contracts — how you extend this code

SubCommand (Interface)
Represents a subcommand that can be registered under the Canvas command system. Implementations define their name, d [5 …
canvas-server/src/main/java/io/canvasmc/canvas/command/SubCommand.java
WorldRegionizer (Interface)
Represents an interface for the Folia regionizer.
canvas-api/src/main/java/io/canvasmc/canvas/region/WorldRegionizer.java
Comment (Interface)
(no doc) [5 implementers]
canvas-server/src/main/java/io/canvasmc/canvas/configuration/Style.java
RegionTickData (Interface)
An interface for the region tick data of a io.canvasmc.canvas.region.WorldRegionizer.ChunkRegion This conta
canvas-api/src/main/java/io/canvasmc/canvas/region/RegionTickData.java
Migration (Interface)
Abstract interface for a migration for Canvas file data for update from before 26.1 to post 26.1 data structure [2 implementers]
canvas-server/src/main/java/io/canvasmc/canvas/util/migration/Migration.java
RegionThreadingTickManager (Interface)
The server tick rate manager, compatible with region threading
canvas-api/src/main/java/io/canvasmc/canvas/region/RegionThreadingTickManager.java
Validation (Interface)
(no doc) [2 implementers]
canvas-server/src/main/java/io/canvasmc/canvas/configuration/Part.java
Resolver (Interface)
(no doc) [2 implementers]
canvas-server/src/main/java/io/canvasmc/canvas/configuration/Resolver.java

Core symbols most depended-on inside this repo

option
called by 85
canvas-server/src/main/java/io/canvasmc/canvas/configuration/Part.java
docs
called by 84
canvas-server/src/main/java/io/canvasmc/canvas/configuration/Part.java
put
called by 77
canvas-server/src/main/java/io/canvasmc/canvas/util/map/ActivityArrayMap.java
add
called by 68
canvas-server/src/main/java/io/canvasmc/canvas/util/CollectingList.java
get
called by 62
canvas-server/src/main/java/io/canvasmc/canvas/util/CollectingList.java
literal
called by 46
canvas-server/src/main/java/io/canvasmc/canvas/configuration/Style.java
getName
called by 42
canvas-server/src/main/java/io/canvasmc/canvas/command/SubCommand.java
build
called by 38
canvas-server/src/main/java/io/canvasmc/canvas/command/CanvasCommands.java

Shape

Method 790
Class 143
Interface 21
Enum 15

Languages

Java100%

Modules by API surface

canvas-server/src/main/java/io/canvasmc/canvas/world/chunk/BalancedChunkSystem.java53 symbols
canvas-server/src/main/java/io/canvasmc/canvas/util/map/ActivityArrayMap.java52 symbols
canvas-server/src/main/java/io/canvasmc/canvas/WorldConfig.java35 symbols
canvas-server/src/main/java/io/canvasmc/canvas/spark/FoliaSparkPlugin.java30 symbols
canvas-server/src/main/java/io/canvasmc/canvas/world/RegionResourceBar.java28 symbols
canvas-server/src/main/java/io/canvasmc/canvas/GlobalConfiguration.java25 symbols
canvas-server/src/main/java/io/canvasmc/canvas/util/structure/PalettedStructureBlockInfoList.java24 symbols
canvas-server/src/main/java/io/canvasmc/canvas/util/Util.java22 symbols
canvas-server/src/main/java/io/canvasmc/canvas/util/version/CanvasVersionFetcher.java21 symbols
canvas-server/src/main/java/io/canvasmc/canvas/configuration/Part.java20 symbols
canvas-server/src/main/java/me/lucko/spark/paper/common/platform/world/WorldStatisticsProvider.java19 symbols
canvas-server/src/main/java/io/canvasmc/canvas/world/block/SleepingBlockEntity.java19 symbols

For agents

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

⬇ download graph artifact