
mc-js
Create Minecraft plugins in JavaScript instead of Java! Full Bukkit/Spigot/Paper API, Hot-Reload, Events, Commands, Databases, GUIs and more.
🚀 MC-JS - JavaScript Plugin System for Minecraft
Write Minecraft Server Plugins in JavaScript - No Java Required!
MC-JS is a powerful plugin system that allows you to develop server plugins using modern JavaScript (ES6+) instead of Java. Perfect for developers who already know JavaScript or want to quickly create plugins without having to learn Java.
✨ Key Features
🎯 Core Capabilities
- 📝 Full JavaScript Support - Develop plugins in modern JavaScript using the Rhino Engine
- ⚡ Hot Reload - Reload plugins without server restart (
/jsreload) - 🔧 Complete API Access - Access to virtually all Bukkit/Spigot/Paper API functions
- 🎮 Event System - Register listeners for any Minecraft event with priority support
- 💬 Command System - Create custom commands with full tab completion support
- ⏰ Task Scheduling - Synchronous and asynchronous task scheduling
- 📦 Inventory Management - Create and manage custom GUI menus using standard Bukkit inventories (9-54 slots) with click handlers
- 🗄️ Database Support - Built-in SQLite database operations (INSERT, UPDATE, DELETE, SELECT)
- 🌐 HTTP Requests - Make HTTP GET/POST requests asynchronously
- 🔐 Encryption - MD5, SHA256, Base64 encoding/decoding
- 📁 File I/O - YAML, JSON, and text file support
- 🎨 BossBar Support - Create and manage boss bars with progress tracking
- ⏱️ Cooldown System - Built-in cooldown management per player
- ⚙️ Config System - Per-plugin configuration files (YAML)
- 🌍 World Management - Control weather, time, world border, explosions
- 🎯 Entity Management - Spawn, control, and customize entities
- 🔒 Player Management - Ban, kick, teleport, health, food, gamemode
🛠️ Advanced Features
- 🎨 Particle Effects - Spawn particles with string or enum support
- 🔊 Sound System - Play sounds at locations or for players
- 📊 Scoreboard System - Create and manage scoreboards, teams, objectives
- 📝 Item Manipulation - Create, modify, and manage items with custom names and lore
- 🔒 Permission System - Check and manage player permissions
- 🎨 Color Support - Minecraft color codes and formatting utilities
- 🌐 HTTP Integration - Make external API calls and web requests
- 📊 Economy Integration - Vault economy support for server economies
📦 Installation
Requirements
- Minecraft Server: Paper/Spigot 1.20+ (recommended: Paper)
- Java: Version 21 or higher
- Minecraft Version: 1.20+
Steps
- Download the latest release from the Releases page
- Place the JAR file in your server's
plugins/folder - Start or restart your server
- Create JS plugins in
plugins/MC-JS/js-plugins/directory
The plugin will automatically create the js-plugins directory and copy an example plugin on first run.
🚀 Quick Start
Creating Your First Plugin
- Navigate to
plugins/MC-JS/js-plugins/directory - Create a new file with
.jsextension (e.g.,myplugin.js) - Add the following code:
var pluginInfo = {
name: "My First Plugin",
version: "1.0.0",
author: "YourName",
description: "My awesome plugin!"
};
function onEnable() {
logger.info("My plugin is enabled!");
// Register a command
api.registerCommand("hello", "Say hello", "/hello", function(sender, args) {
api.sendMessage(sender, "&aHello from JavaScript!");
return true;
});
// Register an event
api.registerEvent("player.PlayerJoinEvent", function(event) {
var player = event.getPlayer();
api.sendMessage(player, "&6Welcome to the server!");
});
}
function onDisable() {
logger.info("My plugin is disabled!");
}
this.onEnable = onEnable;
this.onDisable = onDisable;
this.pluginInfo = pluginInfo;
- Save the file - The plugin will auto-load on server start, or use
/jsreloadto reload - Test your command - Type
/helloin-game or in console - Check console - Look for "My plugin is enabled!" message
💡 Tip: Use
/jslistto see all loaded JavaScript plugins and/jsreload <plugin>to reload a specific plugin.
📚 Available Objects
These objects are automatically available in all JavaScript plugins:
| Object | Description | Usage |
|---|---|---|
api | Complete JS API wrapper - main interface for all operations | api.registerCommand(...) |
server | Minecraft server instance | server.getOnlinePlayers() |
plugin | Main plugin instance | plugin.getName() |
logger | Plugin logger | logger.info("Message") |
scheduler | Server scheduler | scheduler.runTask(...) |
Bukkit | Direct Bukkit API access | Bukkit.getServer() |
🎮 Commands
| Command | Description | Permission |
|---|---|---|
/jsreload | Reload all JS plugins | mcjs.admin |
/jsreload <plugin> | Reload specific plugin | mcjs.admin |
/jslist | List all loaded JS plugins | mcjs.admin |
/jsconfig | View or reload plugin configuration | mcjs.admin |
📖 Documentation
📖 Full Documentation: Visit our complete documentation website for detailed API reference, examples, and guides.
💡 Example Applications
- Welcome Plugins - Greet players with messages, titles, and sounds
- Statistics Systems - Track player statistics with SQLite databases
- Custom GUI Menus - Create interactive menus using standard Bukkit inventories with custom layouts and click handlers
- Mini-Games - Develop simple games with event handling
- Utility Plugins - Create helpful tools and commands
- Integration Plugins - Connect your server with external APIs
🛠️ Technical Details
- JavaScript Engine: Rhino (Mozilla)
- API Version: 1.21
- Compatibility: Paper, Spigot, Bukkit
- License: MIT
🤝 Support
- GitHub: LootingVI/MC-JS
- Issues: GitHub Issues
- Documentation: lootingvi.github.io/MC-JS
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ for the Minecraft Community
---
