- 版权类型
- 原创
- 插件英文名称
- Scriptirc
- 支持的核心
- Bukkit
- Spigot
- Paper
- PaperSpigot
- 资源语言
- 简体中文
- 游戏大版本(Java)
- 1.12
- 1.13
- 1.14
- 1.15
- 1.16
- 1.17
- 1.18
- 1.19
- 1.20
- 许可证
- 保留所有权益/无许可证
Scriptirc - 脚本编译,可直接将java源码编译为服务器插件并加载
这是一个Beta版本并且仅在1.20.4版本测试过,如您遇到bug或各种奇葩错误 请见谅
这个插件推荐 用于测试服务器 或 正在开发中的服务器 因为编译出来的脚本不需要依赖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 <脚本名> |
编译指定的Java脚本为插件 |
/scriptirc sync |
同步命令给所有玩家(修复命令不可见的问题) |
/scriptirc profile |
上传服务器配置插件信息(用于辅助ai创建插件用) |
插件管理示例
# 加载名为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/ # 脚本源码目录
│ ├── 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 <作者>
* [USER=72546]@version[/USER] <版本>
* @description <描述 仅在此行内完成所有描述>
* (命令和权限是可选添加的)
* [command]<命令1>|描述1[/command]
* [command]<命令2>|描述1[/command]
* [Permission]<权限1>|描述1[/Permission]
* [Permission]<权限2>|描述2[/Permission]
*/
public class MyFirstPlugin extends JavaPlugin {
@Override
public void onEnable() {
getLogger().info("插件已启用!");
// 初始化代码
//
}
@Override
public void onDisable() {
getLogger().info("插件已禁用!");
// 卸载 监听器 命令 相关的代码 可以放置在这里
}
@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("§a你好,这是我的第一个插件命令!");
} else {
sender.sendMessage("这个命令只能由玩家执行!");
}
return true;
}
return false;
}
}
3. 编译并加载插件
使用以下命令编译和加载你的插件:
/si compiler MyFirstPlugin
/si load MyFirstPlugin
就这么简单!你的插件现在已经在服务器上运行了,无需重启服务器。
重要的元数据字段
字段 | 必填 | 描述 |
---|---|---|
VERSION |
是 | 插件版本号 |
DESCRIPTION |
是 | 插件描述 |
AUTHOR |
是 | 插件作者 |
COMMANDS |
否 | 插件命令定义,格式为"命令名 |
PERMISSIONS |
否 | 插件权限定义,格式为"权限节点 |
⚙️ 配置文件说明
Scriptirc的配置文件(config.yml
)允许你自定义插件的行为:
# 插件自动重载配置
auto-reload:
# 是否启用自动重载
enabled: true
# 检测间隔(秒)
check-interval: 5
# 是否在控制台输出详细日志
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:
# 日志输出级别: VERBOSE(输出所有日志), NORMAL(标准输出), MINIMAL(只输出关键信息)
level: "MINIMAL"
(如果遇到编译失败 请尝试将日志模式切换到 VERBOSE)
🤔 常见问题
加载插件后玩家看不到命令怎么办?(有那么一点点可能出现的bug 之后会解决)
- 服务器管理员执行
/si sync
命令同步命令到所有在线玩家 - 或者让玩家重新登录服务器
编译脚本时报错怎么办?
确保:
- Java代码语法正确
- 包含所有必要的元数据字段(VERSION, DESCRIPTION, AUTHOR)
- 服务器运行在JDK而不是JRE上(编译需要JDK)
如何删除动态加载的插件文件?
当使用 /si unload
命令卸载插件时,Scriptirc会尝试完全释放JAR文件,使其可以被删除或替换。如果仍然无法删除,可能需要重启服务器。
承认
- 有关于插件卸载加载 相关的代码 我参考了PlugManX项目