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.
3. Grab it
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.
| 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
| 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.
vib-MC is licensed GPL-3.0-or-later.