ModsJava
ScriptIrc - Let the Agent Build Bukkit Plugins for You
Java mod listed for Minecraft 1.12–1.20. Downloads from the MC Java Mods app on Android.
⬇ Download on SpigotScriptIrc - Script Compilation, Using AI to Build Scripts Instantly | Compile Scripts Directly into Server Plugins Based on Server Environment
Recommended for Test Servers / Servers in Development: The compiled script plugins are standard Bukkit plugin JARs that do NOT depend on ScriptIrc to run. You can directly place the generated JAR into the `plugins` directory and use it.
Introduction
ScriptIrc is a powerful Bukkit/Spigot/Paper/Folia plugin designed to simplify plugin management and on-the-fly development. You can write / modify / compile script plugins directly on the server without restarting, and load, unload, or reload them with one click. It also supports parsing and compiling directly from `.sirc` plugin project files into loadable JARs.
✨ Key Features
- AI-Powered Script Building - Quickly create scripts based on specified requirements using AI services
- Dynamic Plugin Management - Load, unload, or reload external plugins without server restart
- Instant Script Compilation - Directly compile Java source scripts into fully functional Bukkit plugins
- `.sirc` Project Support - Directly parse `.sirc` plugin project files, safely unpack to temporary directory, then automatically compile, package, and output JAR
- Folia Compatibility - When running on servers supporting global Region scheduling, automatically declares `folia-supported: true` in generated `plugin.yml`, facilitating loading on Folia
- ️ Data Directory Isolation - Creates unified `scripts/output/Data` data directory for external plugins, reducing data conflicts with main server plugins
- Seamless Integration - Compatible with existing Bukkit/Spigot/Paper environments
- Resource Release - Attempts to release JAR file handles after unloading external plugins, facilitating overwriting and deletion
Installation Guide
- Download the latest version of `ScriptIrc.jar`
- Place the JAR file into your server's `plugins` directory
- Start / restart the server to load the plugin
- The plugin will automatically create necessary directory structures and configuration files
⚠ Important Upgrade Notice: This version modifies the data directory structure for scripts and external plugins (`scripts/output/Data`). It is recommended to manually backup and delete the old ScriptIrc data directory before upgrading to avoid mixing and conflicts from residual historical structures.
Usage Guide
ScriptIrc provides an intuitive command system, allowing you to easily manage plugins and scripts:
Basic Commands (All commands can be abbreviated to `/si`)
| Command | Description |
| `/scriptirc help` | Display help information |
| `/scriptirc load <pluginname>` | Load specified external plugin JAR from `scripts/output` directory |
| `/scriptirc unload <pluginname>` | Unload specified external plugin |
| `/scriptirc reload <pluginname>` | Reload specified external plugin |
| `/scriptirc list` | List all loaded external plugins |
| `/scriptirc compiler <scriptname>` | Compile specified script: supports `.java` source files and `.sirc` projects |
| `/scriptirc compiler <scriptname> fixreport` | After a recent compilation failure, analyze errors and provide dependency fix suggestions |
| `/scriptirc search <classname>` | Globally search for package paths of given class name |
| `/scriptirc sirctree <projectname>` | View virtual directory structure of `.sirc` project files (without unpacking to disk) |
| `/ai-builder` | Open AI script builder Web UI (for generating script source code) |
Plugin Management Examples
Code (Text):
# Load external plugin named TestPlugin (corresponding to scripts/output/TestPlugin.jar)
/si load TestPlugin
# Unload plugin
/si unload TestPlugin
# Reload plugin (e.g., after updates)
/si reload TestPlugin
# View list of loaded plugins
/si list
/si load TestPlugin
# Unload plugin
/si unload TestPlugin
# Reload plugin (e.g., after updates)
/si reload TestPlugin
# View list of loaded plugins
/si list
Code (Text):
# Compile HelloWorld.java script located in scripts/src directory (suffix optional)
/si compiler HelloWorld
# Compile DemoProject.sirc plugin project located in plugins/ScriptIrc/scripts
/si compiler DemoProject
# Then load the compiled plugins (automatically output to scripts/output/ directory)
/si load HelloWorld
/si load DemoProject
/si compiler HelloWorld
# Compile DemoProject.sirc plugin project located in plugins/ScriptIrc/scripts
/si compiler DemoProject
# Then load the compiled plugins (automatically output to scripts/output/ directory)
/si load HelloWorld
/si load DemoProject
Tip: For `.sirc` projects, after compilation, if a `README.md` exists in the package, the plugin will attempt to parse it into an in-game book and send it to the player who executed the command, serving as project documentation.Click to expand...
After installation, ScriptIrc will create the following directory structure (simplified):
Code (Text):
plugins/
└── ScriptIrc/
├── config.yml # Plugin configuration file
├── messages/ # Language files directory
└── scripts/ # All script-related content
├── src/ # Script source directory (.java / .sirc can be placed here)
│ ├── HelloWorld.java # Example script
│ └── MathUtil.java # Example script
├── lib/ # Additional dependency library directory for scripts (JARs)
├── output/ # Script / project compilation output directory (loadable external plugin JARs)
│ └── Data/ # External plugin data directory (optional redirection)
└── build-cache/ # Compilation temporary directory (internal use, automatically cleaned)
└── ScriptIrc/
├── config.yml # Plugin configuration file
├── messages/ # Language files directory
└── scripts/ # All script-related content
├── src/ # Script source directory (.java / .sirc can be placed here)
│ ├── HelloWorld.java # Example script
│ └── MathUtil.java # Example script
├── lib/ # Additional dependency library directory for scripts (JARs)
├── output/ # Script / project compilation output directory (loadable external plugin JARs)
│ └── Data/ # External plugin data directory (optional redirection)
└── build-cache/ # Compilation temporary directory (internal use, automatically cleaned)
ScriptIrc makes plugin development exceptionally simple. You only need to create a Java source file, compile it, and immediately load it for use. Here are the development steps:
1. Create a Script File
Create a new Java file in the `plugins/ScriptIrc/scripts/src` directory, for example, `MyFirstPlugin.java`.
2. Write Plugin Code (Recommended using comment metadata approach)
Below is a simple plugin template. Metadata is provided through JavaDoc comments. ScriptIrc will automatically read information from the comments and generate `plugin.yml`:
Code (Java):
// Package name can be customized (preferably reasonable, recommended using reverse domain)
package your.package.name ;
import org.bukkit.command.Command ;
import org.bukkit.command.CommandSender ;
import org.bukkit.entity.Player ;
import org.bukkit.plugin.java.JavaPlugin ;
/**
* @pluginName MyFirstPlugin // Plugin name
* @author YourName // Author
* @version 1.0.0 // Version
* @description My first ScriptIrc script plugin // Brief description (multi-line supported)
* [command]myfirstcmd|Execute a test command[/command]
* [permission]myfirstplugin.use|Permission to use the test command[/permission]
*/
public class MyFirstPlugin extends JavaPlugin {
@Override
public void onEnable ( ) {
getLogger ( ). info ( "Plugin enabled!" ) ;
// Initialization code
}
@Override
public void onDisable ( ) {
getLogger ( ). info ( "Plugin disabled!" ) ;
// Cleanup code for listeners / commands, etc., can be placed here
}
@Override
public boolean onCommand (CommandSender sender, Command command, String label, String [ ] args ) {
if (command. getName ( ). equalsIgnoreCase ( "myfirstcmd" ) ) {
if (sender instanceof Player ) {
Player player = (Player ) sender ;
player. sendMessage ( "§aHello, this is my first plugin command!" ) ;
} else {
sender. sendMessage ( "This command can only be executed by players!" ) ;
}
return true ;
}
return false ;
}
}
package your.package.name ;
import org.bukkit.command.Command ;
import org.bukkit.command.CommandSender ;
import org.bukkit.entity.Player ;
import org.bukkit.plugin.java.JavaPlugin ;
/**
* @pluginName MyFirstPlugin // Plugin name
* @author YourName // Author
* @version 1.0.0 // Version
* @description My first ScriptIrc script plugin // Brief description (multi-line supported)
* [command]myfirstcmd|Execute a test command[/command]
* [permission]myfirstplugin.use|Permission to use the test command[/permission]
*/
public class MyFirstPlugin extends JavaPlugin {
@Override
public void onEnable ( ) {
getLogger ( ). info ( "Plugin enabled!" ) ;
// Initialization code
}
@Override
public void onDisable ( ) {
getLogger ( ). info ( "Plugin disabled!" ) ;
// Cleanup code for listeners / commands, etc., can be placed here
}
@Override
public boolean onCommand (CommandSender sender, Command command, String label, String [ ] args ) {
if (command. getName ( ). equalsIgnoreCase ( "myfirstcmd" ) ) {
if (sender instanceof Player ) {
Player player = (Player ) sender ;
player. sendMessage ( "§aHello, this is my first plugin command!" ) ;
} else {
sender. sendMessage ( "This command can only be executed by players!" ) ;
}
return true ;
}
return false ;
}
}
Use the following commands to compile and load your plugin:
Code (Text):
/si compiler MyFirstPlugin
/si load MyFirstPlugin
/si load MyFirstPlugin
Important Metadata Tags (Comment Method)
The current version recommends and defaults to using the JavaDoc comment method to define metadata. ScriptIrc will automatically parse from the main class comments:
| Tag | Required | Description |
| `@pluginName` | Yes | Plugin name (for display and generating `plugin.yml`) |
| `@version` | Yes | Plugin version number |
| `@description` | Yes | Plugin description, supports multi-line |
| `@author` | Yes | Plugin author |
| `[command]name|description[/command]` | No | Command definition, command name and description separated by `|` |
| `[permission]node|description[/permission]` | No | Permission definition, node and description separated by `|` |
Note: If the above required tags are missing, the current version will be unable to correctly generate `plugin.yml`, causing compilation to fail. Please complete them according to the template.Click to expand...
ScriptIrc's configuration file (`config.yml`) allows you to customize plugin behavior. Below are key configuration examples for the current version:
Code (YAML):
# Plugin auto-reload configuration | Auto-reload configuration
auto-reload :
# Whether to enable auto-reload | Whether to enable auto-reload
enabled : true
# Check interval (seconds) | Check interval (seconds)
check-interval : 5
# Whether to output verbose logs in console | Whether to output verbose logs in console
verbose-logging : false
# Script compiler settings | Script compiler settings
compiler :
# Whether to enable verbose output of Java compiler (equivalent to javac -verbose), default false
# Whether to enable verbose output of Java compiler (equivalent to javac -verbose), default false
verbose-logging : false
# Plugin management settings | Plugin management settings
plugin-management :
# External plugins directory, relative to plugin data folder | External plugins directory, relative to plugin data folder
# Default: scripts/output
external-plugins-directory : "scripts/output"
# Whether to auto-load external plugins on server startup | Whether to auto-load external plugins on server startup
load-on-startup : true
# Whether to redirect external plugins' data folders to ScriptIrc directory | Whether to redirect external plugins' data folders to ScriptIrc directory
redirect-data-folder : true
# Permission settings | Permission settings
permissions :
# Admin permission node | Admin permission node
admin-permission : "scriptirc.admin"
# Whether to allow only OP to use | Whether to allow only OP to use
op-only : true
# Logging settings | Logging settings
logging :
# Log output level: VERBOSE(all logs), NORMAL(standard output), MINIMAL(only critical information)
# Log output level: VERBOSE(all logs), NORMAL(standard output), MINIMAL(only critical information)
level : "MINIMAL"
# Language settings | Language settings
language :
# Current language: zh_CN(Simplified Chinese), en_US(English)
# Current language: zh_CN(Simplified Chinese), en_US(English)
current : "zh_CN"
# Whether to enable custom language files (placed in plugins/ScriptIrc/messages/ directory)
# Whether to enable custom language files (placed in plugins/ScriptIrc/messages/ directory)
enable-custom : true
auto-reload :
# Whether to enable auto-reload | Whether to enable auto-reload
enabled : true
# Check interval (seconds) | Check interval (seconds)
check-interval : 5
# Whether to output verbose logs in console | Whether to output verbose logs in console
verbose-logging : false
# Script compiler settings | Script compiler settings
compiler :
# Whether to enable verbose output of Java compiler (equivalent to javac -verbose), default false
# Whether to enable verbose output of Java compiler (equivalent to javac -verbose), default false
verbose-logging : false
# Plugin management settings | Plugin management settings
plugin-management :
# External plugins directory, relative to plugin data folder | External plugins directory, relative to plugin data folder
# Default: scripts/output
external-plugins-directory : "scripts/output"
# Whether to auto-load external plugins on server startup | Whether to auto-load external plugins on server startup
load-on-startup : true
# Whether to redirect external plugins' data folders to ScriptIrc directory | Whether to redirect external plugins' data folders to ScriptIrc directory
redirect-data-folder : true
# Permission settings | Permission settings
permissions :
# Admin permission node | Admin permission node
admin-permission : "scriptirc.admin"
# Whether to allow only OP to use | Whether to allow only OP to use
op-only : true
# Logging settings | Logging settings
logging :
# Log output level: VERBOSE(all logs), NORMAL(standard output), MINIMAL(only critical information)
# Log output level: VERBOSE(all logs), NORMAL(standard output), MINIMAL(only critical information)
level : "MINIMAL"
# Language settings | Language settings
language :
# Current language: zh_CN(Simplified Chinese), en_US(English)
# Current language: zh_CN(Simplified Chinese), en_US(English)
current : "zh_CN"
# Whether to enable custom language files (placed in plugins/ScriptIrc/messages/ directory)
# Whether to enable custom language files (placed in plugins/ScriptIrc/messages/ directory)
enable-custom : true
Frequently Asked Questions
What should I do if there's an error when compiling scripts / `.sirc` projects?
Please check:
- Whether Java code syntax is correct;
- Whether the main class contains complete, valid comment metadata tags (`@pluginName/@version/@description/@author`, etc.);
- Whether the server is running on JDK and not JRE (compilation requires JDK environment);
- If it's a dependency-related error, first execute `/si compiler <scriptname>`, then use `/si compiler <scriptname> fixreport` to view dependency fix suggestions;
- You can also try submitting error logs to AI tools for assistance; most common issues can be quickly identified.
How to delete dynamically loaded plugin files?
When using the `/si unload` command to unload a plugin, ScriptIrc attempts to fully release the JAR file, making it deletable or replaceable. If it still cannot be deleted, typically a server restart is required.
Disclaimer
- Some implementations related to plugin unloading/loading are referenced from the PlugManX project
About ai-builder
- `ai-builder` (AI:ScriptIrc) functionality is built upon this plugin, providing script development and generation capabilities;
- The `ai-builder` service itself is an independent online service;
- Terms link: https://scriptirc.io/terms
- The core functionality of this plugin remains: compiling and managing server plugins within the current server environment;
- The `ai-builder` service includes in-app purchases but still offers free trial quotas through methods like check-ins.
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.12, 1.13, 1.14
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
ScriptIrc - Let the Agent Build Bukkit Plugins for You is a free Minecraft Java mod. Compatible with Minecraft 1.12, 1.13, 1.14, 1.15 and newer. Downloaded 166 times (via Spigot). Download it and open it directly in the game.