# Scriptirc - 脚本编译器,将 Java 源代码直接编译成服务器插件并加载。
**本插件推荐用于测试服务器或正在开发中的服务器,因为编译后的脚本不需要依赖 Scriptirc 来加载,您可以将编译后的插件脚本直接放入 plugins 文件夹中。**
## 📚 简介
Scriptirc 是一个强大的 Bukkit/Spigot 插件,旨在简化插件管理和即时开发流程。如果您一直希望能够编译和修改脚本插件,在不重启服务器的情况下加载、卸载或重新加载它们,或者希望能够快速开发和测试简单的功能,那么 Scriptirc 适合您。
## ✨ 主要特性
🔄 动态插件管理 - 在不重启服务器的情况下加载、卸载或重新加载插件
📝 即时脚本编译 - 将 Java 脚本直接编译成完全可用的 Bukkit 插件
🛡️ 数据目录隔离 - 自动为插件脚本创建单独的数据目录
🔧 无缝集成 - 兼容现有的 Bukkit/Spigot/Paper 环境
🔒 资源释放 - 卸载插件脚本以完全释放插件资源,解锁 JAR 文件
## 🚀 安装说明
下载 Scriptirc.jar 的相应版本
将 JAR 文件放置在服务器的 plugins 目录下
重启服务器或使用插件管理器加载插件
插件将自动创建必要的目录结构和配置文件
## 💡 使用方法
Scriptirc 提供一个直观的命令系统,可以轻松管理插件和脚本:
基本命令 (所有命令都可以缩写为 /si)
命令 描述
```
/scriptirc help
/scriptirc load
/scriptirc unload
/scriptirc reload
/scriptirc list
/scriptirc compiler
/scriptirc sync
/scriptirc profile
```
插件管理示例
## 加载一个名为 TestPlugin 的插件。
```
/si load TestPlugin
```
## 卸载插件
```
/si unload TestPlugin
```
## 重新加载插件 (例如,更新后)
```
/si reload TestPlugin
```
## 查看已加载插件的列表
```
/si list
```
脚本编译示例
## 编译位于 script_src 目录中的 HelloWorld.java 脚本。
```
/si compiler HelloWorld
```
## 然后加载编译后的插件。
```
/si load HelloWorld
```
## 📂 目录结构
安装后,Scriptirc 将创建以下目录结构:
```
plugins/
└── Scriptirc/
├── config.yml # 插件配置文件
├── plugins/ # 外部插件存储目录
│ └── Data/ # 插件数据目录
├─ script_src/ # 脚本源代码目录 │ ├── script_src/ # 脚本源代码目录
│ ├── HelloWorld.java # 示例脚本
│ └── MathUtil.java # 示例脚本
└─ script_build/ # 临时脚本构建目录
```
## 🛠️ 开发教程 - 创建您的第一个脚本插件
Scriptirc 让插件开发变得非常容易。您只需要创建一个 Java 源代码文件,编译它并加载它即可立即使用。以下是开发步骤:
### 1. 创建脚本文件
在 plugins/Scriptirc/script_src 目录下创建一个新的 Java 文件,例如 MyFirstPlugin.java。
### 2. 编写插件代码
以下是一个简单的插件模板:
包名是可以自定义的(尽量合理即可)
```
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
* @author
* @version
* @description
* (Commands and permissions are added optionally)
* [command]|description1[/command]
* [command]|description2[/command]
* [Permission]|description1[/Permission]
* [Permission]|description2[/Permission]
*/
public class MyFirstPlugin extends JavaPlugin {
@Override
public void onEnable() {
getLogger().info("Plugin enabled!");
// Initializing Code
//
}
@Override
public void onDisable() {
getLogger().info("Plugin disabled!");
// The code for the unload / listener / command 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 the player!");
}
return true;
}
return false;
}
}
```
官方 AI 推荐!!! [官方网站](https://scriptirc.io/)
### 3. 编译和加载您的插件
使用以下命令编译并加载您的插件:
```
/si compiler MyFirstPlugin
/si load MyFirstPlugin
```
就是这么简单!您的插件现在正在服务器上运行,无需重启服务器。
```
重要的元数据字段
|Fields |Required |Description
|VERSION |YES |插件版本号
|DESCRIPTION |YES |插件说明
|AUTHOR |YES |插件作者
|COMMANDS |No |插件命令定义,格式为“命令名称”。
|PERMISSIONS |No |权限定义,格式为“权限节点”。
```
## ⚙️ 配置文件说明
### Scriptirc 的配置文件 (config.yml) 允许您自定义插件的行为:
插件自动重新加载配置
auto-reload.
是否启用自动重新加载
enabled: true
检查间隔 (秒)
check-interval: 5
verbose-logging: false
verbose-logging: false
插件管理设置
plugin-management.
外部插件目录,相对于插件数据文件夹
external-plugins-directory: “plugins”
是否在服务器启动时自动加载外部插件。
load-on-startup: true
是否将外部插件的数据文件夹重定向到 Scriptirc 目录。
redirect-data-folder: true
权限设置
permissions.
管理员权限节点
admin-permission: “scriptirc.admin”
是否仅允许 OP 使用
op-only: true
## Logging 设置
logging.
logging 输出级别: VERBOSE (输出所有日志), NORMAL (标准输出), MINIMAL (仅输出关键信息)
level: “MINIMAL”
(如果遇到编译失败,请尝试将日志模式切换到 VERBOSE)
## 🤔 常见问题解答
如果玩家在加载插件后看不到命令怎么办?(可能存在一个 bug,稍后会修复)
服务器管理员可以运行命令 /si sync 将命令同步到所有在线玩家。
或者让玩家重新登录服务器。
## 如果我收到脚本编译错误,该怎么办?
确保:
Java 代码语法正确
包含所有必需的元数据字段 (VERSION, DESCRIPTION, AUTHOR)
服务器运行在 JDK 而不是 JRE (编译需要 JDK)
## 如何删除动态加载的插件文件?
使用 /si unload 命令卸载插件时,Scriptirc 尝试完全释放 JAR 文件,以便它可以被删除或替换。如果仍然无法删除,可能需要重启服务器。
## 鸣谢
在插件卸载加载相关代码方面,我参考了 PlugManX 项目。