CurseForge · Minecraft mod
Ferrous
Write Minecraft mods in Rust: sandboxed, hot-reloaded WebAssembly scripts.
Quick answer
Which Ferrous release should I use?
ferrous-neoforge-1.21.1-0.1.0.jar targets 1.21.1 with NeoForge. The project page does not say whether this file belongs on the client, dedicated server, or both. No extra mods listed for this file.
Where it goes
Is Ferrous required on the client, server, or both?
The project page does not say whether this file belongs on the client, dedicated server, or both.
The source does not explicitly classify this release as client-only or server-only.
What else does ferrous-neoforge-1.21.1-0.1.0.jar need?
ferrous-neoforge-1.21.1-0.1.0.jar. Change the file and its required mods may change too.
This file does not list any required mods. Do not add a library just because a different file uses it.
This file does not list any required or optional mods.
Before you install it
Add Ferrous without breaking your instance.
Built for ferrous-neoforge-1.21.1-0.1.0.jar. Pick another file and the loader, install side or required mods may change.
- 01
Stick to this file
Use ferrous-neoforge-1.21.1-0.1.0.jar. It targets 1.21.1 with NeoForge; another release may have different loader, side or dependency requirements.
- 02
Bring the mods it needs
This file does not list any required mods. Do not add a library just because a different file uses it.
- 03
Put it on the correct side
The project page does not say whether this file belongs on the client, dedicated server, or both.
- 04
Pick the file you checked
Use the “Get this file” button beside ferrous-neoforge-1.21.1-0.1.0.jar. It opens that exact file at the source.
About this project
What does Ferrous add?
Ferrous — write Minecraft mods in Rust
Ferrous turns Rust code into Minecraft mods. Put a Rust project or a ready .wasm file into the rust/ folder next to mods/, start the game, and it works like a mod: commands, events, blocks, items, creative tabs, recipes, world and player APIs — all running safely in a WebAssembly sandbox.
use ferrous::prelude::*;
script!(init);
fn init(ctx: &Ctx) {
commands::register("heal [target:player]", |c| {
let p = match c.player_arg("target") { Some(p) => p, None => c.require_player()? };
p.set_health(p.max_health().unwrap_or(20.0));
c.reply_text(Text::new(format!("{} healed", p.name())).green());
Ok(1)
});
if ctx.is_registry_phase() { return; }
on_block_break("minecraft:diamond_ore", |e| {
e.player.actionbar(Text::new("Diamond!").aqua().bold());
});
}
Highlights
- Plain Rust — no Java, Gradle or mappings. The mod builds your project with
cargoon start. - Hot reload — save the file while playing; the script rebuilds in the background and swaps live, keeping its data.
- Crash-proof — panics, endless loops and stack overflows stop only the call, never the server.
- Sandboxed — no access to files, network or game memory; per-call time budget and memory limit.
- Fast — WebAssembly is compiled to JVM bytecode; pure logic runs on par with Java, a call into Minecraft costs ~10 ns.
Features
- Content: blocks (hardness, light, sounds, tools, drops, shapes, block states, per-block data), items (food, weapons, durability, rarity), creative tabs, recipes, translations, textures. Models, blockstates, loot tables and lang files are generated for you.
- Commands: Brigadier commands from a one-line spec like
tp <who:players> <to:pos> [dim:dim], with tab completion and permission levels. - 26 events: players, blocks, entities, damage, death, chat, commands, explosions, ticks — cancel or modify them.
- World: single blocks and bulk operations (
fill,read_grid/write_grid), heights, light, biomes, time, weather, explosions, ray casts, sounds, particles, spawning. - Entities & players: teleport, health, effects, attributes, NBT, inventory, titles, action bar, boss bars.
- Infrastructure: tick scheduler,
asynctasks, message bus between scripts, persistent storage, config, logging, a mock host forcargo test.
Security
- Running server commands needs
[permissions] commands = truein the script manifest. Without it, scripts cannot sneak commands in through command blocks, command block minecarts, NBT orrun_commandclick events. - Scripts cannot take over commands of the game or other mods.
- Limits (time per call, memory, tasks, storage) are configurable, with server-side caps.
- Server owners: building a Cargo project runs its
build.rsand procedural macros natively, outside the sandbox. Only build sources you trust; on production servers use prebuilt.wasmfiles and setauto_build = falseinconfig/ferrous.toml.
Getting started
- Install NeoForge 21.1 (Minecraft 1.21.1) and put Ferrous into
mods/. - For Rust scripts: install rustup and run
rustup target add wasm32-unknown-unknown. Prebuilt.wasmscripts need no Rust. - In game run
/ferrous new my_mod, restart, and try/hi. Then editrust/my_mod/src/lib.rs.
Admin commands: /ferrous list, /ferrous info <script>, /ferrous reload [script], /ferrous profile <script> on|off, /ferrous new <name>.
Multiplayer
Scripts that add blocks or items must be installed on the server and on every client. Logic-only scripts (commands, events) are needed on the server only.
Requirements
Minecraft 1.21.1 · NeoForge 21.1.x · Java 21 · optional: Rust with the wasm32-unknown-unknown target
Project description from CurseForge.
Pick your setup
Ferrous by Minecraft version and loader
Choose the version and loader you play, then open the matching release.
Check the dependencies, then try the file in a copied instance before changing a world you care about.
Recent files
Ferrous versions and loaders
ferrous-neoforge-1.21.1-0.1.0.jar
16 Oct 2026
Looking for an older file? The official CurseForge project page is in Resources.