Mineuniverse
Mods
VynAPI

VynAPI

MOD
The Vyn scripting language, embedded in Minecraft.
by OmarDotContent
Download Claim this project
101 downloads
0 likes
Updated Oct 14, 2026
0 hypes
API and Library
Advertisement Remove ads with Premium →

Description

The Vyn scripting language, embedded in Minecraft.

Write .vyn scripts inside resource packs and have them run in-game, reacting to what happens around the player — no Java required.

✅ Minecraft 1.21.5 · 1.21.11 · 26.1 · 26.2 — Fabric · NeoForge · Forge (Forge on 1.21.x only)


📜 What is Vyn?

Vyn is a statement-driven scripting language built for readability, with blueprints (OOP) and concurrency as first-class features. It reads like English:

~ variables
make name "Steve"

~ conditionals
check name == "Steve" do
    say "Hi, Steve!"
otherwise
    say "Who are you?"
end

~ loops
cycle i from 1 to 5 do
    say "Iteration: " + i
end

~ functions
task double takes x do
    reply x * 2
end

~ blueprints (OOP)
blueprint Pet do
    build takes name do
        make me.name name
    end
end

VynAPI embeds this language inside Minecraft and connects it to the game — every resource pack becomes a potential script pack:

my_pack/
└── assets/
    └── example/
        └── scripts/
            └── hello.vyn     ← plain-text script, loaded by VynAPI

✨ What can you do with it?

  • 🎮 React to events — every tick (onTick), arm swings (onSwingHand), any sound that plays (onPlaySound)
  • 📊 Read game state — player health, hunger, position, velocity, the block you're looking at, nearby blocks, biome, time of day, colors and more
  • 🔊 Do things — draw text on the HUD (debugText), send chat messages, play sounds at positions
  • ⏱ Delayed logic — non-blocking wait statement, in ticks
  • 📦 Ship libraries — importScript / excludeScript between scripts and packs
  • ♻️ Hot reload — press F3 + T while developing; scripts reload instantly
  • 🧩 Extensible — mod developers can register custom events & functions via VynAddon

📥 Installation

  1. Download the jar matching your Minecraft version and loader (Fabric / Forge / NeoForge)
  2. Put it in your client's mods folder
  3. Launch the game and enable a resource pack that contains .vyn scripts

Quick start

task onTick do
    debugText("Health: " + player.getHealth())
    debugText("Looking at: " + player.getTargetBlock().getName())
end

Load the pack, press F3 + T — two lines appear in the top-left corner of your HUD, updating every tick.

📡 Events

Event Fires when Arguments
onTick Every client tick (20×/second) —
onSwingHand The local player swings their arm —
onPlaySound A sound plays in the world (ambient excluded) sound
task onPlaySound takes sound do
    player.sendMessage(sound.getName() + " @ " + sound.getPosition())
end

🧰 Script API (the essentials)

Constants: player · world · key · modLoader

Player: getName() · getHealth() · getFoodLevel() · getPosition() · getX/Y/Z() · getVelocityX/Y/Z() · getYaw() · getPitch() · getTargetBlock() · getSteppingBlock() · getNearbyBlocks(radius) · sendMessage(text) · playSound(id, volume, pitch) · playSoundWorld(pos, id, volume, pitch) ...

World: getBlock(x, y, z) · getDimension() · getDayTime() · getGameTime() · getBiomeAt(pos) · getGrassColor(pos) · getFoliageColor(pos) · getWaterColor(pos) · calculateDistanceBetweenPositions(a, b)

Block: getName() · getPosition() · isAir() · hasBlockTag(id) · getLightBlock() · getLightEmission() · canBeReplaced() · instrument() ...

Types: new Position(x, y, z) · new Sound(id, volume, pitch, position)

Functions: debugText(text) · importScript(packId, name) · excludeScript(packId, name)

Statement: wait <ticks> do ... end — runs a block once after N ticks, without blocking the game.

📖 Full API reference: VynAPI README

🧩 For mod developers

Subclass VynAddon to register custom events and bind native functions, types, and constants into every script environment:

public final class MyAddon extends VynAddon {

    public MyAddon() {
        super("onMyEvent"); // custom event scripts can listen to
    }

    @Override
    public Consumer<Environment> onEnable() {
        return env -> {
            NativeBinder.bind(env, MyType.class);                 // new MyType(...) in scripts
            NativeBinder.defineConstant(env, "myVersion", "1.0.0");
            env.defineFunction("myFunction", new NativeFunction((e, args) -> null));
        };
    }
}

Fire events from anywhere in your mod:

ScriptHandler.fireEvent("onMyEvent", someValue);

Any loaded script defining task onMyEvent takes value do ... end will receive it.

🔨 Building from source

# 1) Publish the Vyn engine to your local Maven repo
git clone https://github.com/Abdelaziz1586/Vyn.git
cd Vyn && mvn clean install

# 2) Build VynAPI for the version you want
git clone https://github.com/omardotcontent/VynAPI.git
cd VynAPI && git checkout 1.21.11      # or: 1.21.5, 26.1, 26.2
./gradlew :fabric:build                # or :neoforge:build / :forge:build (1.21.x only)

Important

❗ Important

  • Client-side only — install it in your client's mods folder; scripts never run on the server. Works in singleplayer and multiplayer.
  • Pick the right build — each Minecraft version has its own jar:
Minecraft Java Fabric Forge NeoForge
1.21.5 21 ✅ + Fabric API ✅ ✅
1.21.11 21 ✅ + Fabric API ✅ ✅
26.1 25 ✅ + Fabric API ❌ ✅
26.2 25 ✅ + Fabric API ❌ ✅
  • Never block the client thread — use wait instead of hold for delays, and keep onTick work light (it runs 20×/second).
  • Scripts run on the client only — everything they do is local to the player. That's by design: resource packs are client-side.

❓ Support & links

Credits: OmarDotContent & Abdelaziz_Mohamed — Vyn port by Abdelaziz_Mohamed, mod port by OmarDotContent.

vynapi-forge-1.21.5-1.21.5-1.0.0.jar
MC Client, 1.21.5, Forge
Release 2026-08-09 Get
vynapi-forge-1.21.11-1.21.11-1.0.0.jar
MC Client, Forge, 1.21.11
Release 2026-08-09 Get
vynapi-fabric-1.21.5-1.21.5-1.0.0.jar
MC Client, Fabric, 1.21.5
Release 2026-08-08 Get
vynapi-fabric-1.21.11-1.21.11-1.0.0.jar
MC Client, Fabric, 1.21.11
Release 2026-08-08 Get
vynapi-fabric-26.1-26.1-1.0.0.jar
MC Client, Fabric, 26.1, 26.1.1, 26.1.2
Release 2026-08-08 Get
vynapi-neoforge-1.21.5-1.21.5-1.0.0.jar
MC Client, 1.21.5, NeoForge
Release 2026-08-08 Get
vynapi-neoforge-1.21.11-1.21.11-1.0.0.jar
MC Client, NeoForge, 1.21.11
Release 2026-08-08 Get
vynapi-neoforge-26.1-26.1-1.0.0.jar
MC Client, NeoForge, 26.1, 26.1.1, 26.1.2
Release 2026-08-08 Get
vynapi-neoforge-26.2-26.2-1.0.0.jar
MC Client, NeoForge, 26.2
Release 2026-08-08 Get
vynapi-fabric-26.2-26.2-1.0.0.jar
MC Client, Fabric, 26.2
Release 2026-08-08 Get

More from OmarDotContent

Advertisement Remove ads with Premium →

You Might Also Like