Vib Studios

Documentation

Everything you need to get
a server up, and to write your own

Written by an AI, for whoever wants to continue the vibe.

Requirements

What you need before anything else. Keep it simple.

Java 8 or newer
Both the server and plugins compile and run against Java 8+. If in doubt, install the latest LTS (for example Temurin 21 or 17) — it still runs Java 8 bytecode. adoptium.net
The vib-MC jar
Grab the latest release jar from the downloads section. That is the whole server — no extra files to hunt down. Latest release: v0.0.7
A Minecraft client
Since v0.0.6 the server speaks many protocol versions — anything from 1.8 to 26.1.2, except 1.16, 1.16.1 and 1.19.3. A vanilla launcher profile works, or any launcher that can pin that version. No mods needed, no Forge, no Fabric.
Only for plugins: a JDK
Running the server needs a JRE. Compiling plugins needs a full JDK and the vib-MC jar on the classpath. Gradle is optional — javac works fine.

Run the server

Two commands, zero configuration. The first run generates everything it needs.

# 1. put vib-mc.jar in an empty folder
$ java -jar vib-mc.jar

What happens

The server binds to 0.0.0.0:25565, generates a server.properties, and opens a plugins/ folder. Join with any supported client on localhost.

Config

server.properties holds the port, world name, seed, view distance, and the online-mode switch. Edit it before or while the server is stopped. Defaults are port 25565, a blank seed so each new world is random, and online-mode: true.

Server console

The console accepts the same commands as players. Click one to copy it.

Write a plugin

A plugin is a jar dropped into plugins/. It ships a plugin.yml and one class that extends VibMCPlugin. That is the whole contract.

1. plugin.yml

Lives at the root of the jar. It is read as a Java properties file — plain key=value lines. Only name, version and main are required.

name=MyPlugin
version=1.0.0
main=com.example.MyPlugin
description=Does a thing, sometimes
authors=you

2. The main class

Extend VibMCPlugin and override onEnable() to register commands and listeners. Compile against the vib-MC jar.

javac -cp vib-mc.jar -d out src/com/example/MyPlugin.java
jar cf MyPlugin.jar -C out . plugin.yml

3. A working example

This is the full source of a real plugin that puts you in creative mode when you type /gmc. Copy it, compile it, drop it in plugins/, restart, done.

package com.example;

import net.vibmc.command.Command;
import net.vibmc.command.CommandSender;
import net.vibmc.entity.ServerPlayer;
import net.vibmc.player.GameMode;
import net.vibmc.plugin.VibMCPlugin;

public class MyPlugin extends VibMCPlugin {
    @Override
    public void onEnable() {
        getCommandManager().register(
            new Command("gmc", "Switch to creative mode", "/gmc", null) {
                @Override
                public boolean execute(CommandSender sender, String[] args) {
                    if (!sender.isPlayer()) {
                        sender.sendMessage("{\"text\":\"§cOnly players can use /gmc\"}");
                        return false;
                    }
                    ServerPlayer player = sender.getPlayer();
                    player.setGameMode(GameMode.CREATIVE);
                    player.sendMessage("{\"text\":\"§aYou are now in creative mode.\"}");
                    return true;
                }
            });
    }
}

4. Listening to events

Implement Listener, annotate methods with @EventHandler, then register them in onEnable().

import net.vibmc.plugin.Listener;
import net.vibmc.plugin.EventHandler;
import net.vibmc.plugin.event.PlayerJoinEvent;

public class JoinListener implements Listener {
    @EventHandler
    public void onJoin(PlayerJoinEvent event) {
        event.getPlayer().sendMessage("{\"text\":\"§aWelcome to the vibe.\"}");
    }
}

// in onEnable():
getPluginManager().registerEvents(new JoinListener(), this);

Plugin blueprint

Snap pieces together and download a zip that builds. No programming needed — the Java is written for you, and it is ordinary source you can open and change. Your work is kept in this browser, so a refresh will not lose it.

1. The basics

2. Scripts

A start piece opens a script. Do pieces snap onto whichever script is highlighted — click a script to switch. Steps run top to bottom; use ↑ ↓ to reorder and × to remove.

start
do
commands
listeners

3. Grab it

plugin.yml + source + build scripts

The zip bundles a build script that fetches vib-mc.jar, compiles, and packages your plugin. Drop the resulting jar into plugins/, restart the server, done. It is ordinary Java in there — open it and change anything.

API reference

The useful surface, in one table. Everything lives in net.vibmc.* — the jar is your javadoc.

Plugin API surface
You get From
register commands getCommandManager().register(new Command(...))
register listeners getPluginManager().registerEvents(listener, this)
log lines getLogger().info("...")
players VibMC.getInstance().getPlayerManager()
worlds & blocks VibMC.getInstance().getWorldManager()
permissions getPluginManager().getPermissionManager()
messages & packets player.sendMessage(json), player.getUser().sendPacket(packet)

Events

Plugin events
Event When
PlayerJoinEvent a player finishes logging in
PlayerQuitEvent a player disconnects
ChatEvent a player chats (cancellable)
TickEvent.Start / .End every server tick, before and after

Report a bug

Fill this in and it opens a GitHub issue with everything we need. Keep it short, we are also an AI.

opens on github.com in a new tab

vib-MC is licensed GPL-3.0-or-later.