GitHub MC 1.21.1
PyFish logo

PyFish Documentation

PyFish embeds GraalPy into Minecraft so Python code can run at runtime on NeoForge or Fabric. The loader switch persists across the whole documentation, but all of the content now stays in one HTML file to avoid drift between separate pages.

Selected runtime
NeoForge 21.1.215

Each pseudo-page below follows the same loader selection.

Event bridge
39 supported aliases

NeoForge currently exposes the broadest documented event surface.

What PyFish is

Runtime Python for Minecraft

PyFish is built for people who want Minecraft behavior to be scriptable without rebuilding a Java mod for every small gameplay change. It can load Python from the jar, from an external instance folder, from packaged .pyz mods, and from organized logical Python mods inside pyfish/.

Shared API

One mc surface

World manipulation, messaging, commands, spawning, particles, and more use the same Python method names on both loaders.

Flexible deployment

Client-only, server-only, or both

PyFish is optional by default on each side. Server owners can still turn on a strict client requirement when they need it.

One source of truth

Single HTML documentation

This documentation behaves like multiple pages, but everything lives in one HTML file so the API, loader differences, and event matrix stay aligned.

Start here

Documentation map

Each card below jumps to a dedicated view inside this file. The layout keeps the feeling of separate pages while avoiding duplicated content.

Built for PyFish by Oesphy.