帖子

Memorial Edition

查看: 4826|回复: 1

[原创插件] ScriptIrc —— AI插件编写 并编译为服务器插件

[复制链接]

Lv.5 农夫

暴龙战士

人气
24 点
金粒
1177 粒
宝石
0 枚
爱心
0 颗
钻石
83 枚
贡献
0 点
发表于 2025-5-6 04:16:25 | 显示全部楼层 |阅读模式
脚本编译 ScriptIrc
  • 概要
  • 下载链接
  • 授权信息

适用服务端:CraftBukkit Spigot Paper Bukkit 

插件类型: 其他 

语言支持: 简体中文 English 日本語 

适用版本:

前置插件:

简介: 脚本编译,使用AI构建编写一键生成ScriptIrc专用脚本 | 基于服务器环境直接编译脚本为服务器插件

LOGO

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 WKEA 于 2025-12-28 13:54 编辑

ScriptIrcPX.webp

ScriptIrc - 脚本编译,使用AI构建编写一键生成ScriptIrc专用脚本 | 基于服务器环境直接编译脚本为服务器插件

版本
Minecraft
语言

建议用于测试服 / 开发中服务器:编译出来的插件脚本是标准 Bukkit 插件 JAR,不依赖 ScriptIrc 运行,你可以直接把生成的 JAR 丢进 plugins 目录使用。

📚 介绍

ScriptIrc 是一个功能强大的 Bukkit/Spigot/Paper/Folia 插件,旨在简化插件管理和即时开发流程。你可以在不重启服务器的前提下,直接在服务端上编写 / 修改 / 编译脚本插件,并一键加载、卸载或重载;同时也支持直接从 .sirc 插件项目 解析并编译出可加载的 JAR。
@bilibili

✨ 主要特性

  • 🚀 支持 AI 构建脚本 - 基于 AI 服务快速创建指定需求脚本
  • 🔄 动态插件管理 - 无需重启服务器即可加载、卸载或重载外部插件
  • 📝 即时脚本编译 - 将 Java 源码脚本直接编译为功能完整的 Bukkit 插件
  • 🧩 .sirc 项目支持 - 直接解析 .sirc 插件项目文件,安全解包到临时目录后自动编译、打包并输出 JAR
  • 🌐 Folia 兼容 - 运行在支持全局 Region 调度的服务端时,自动在生成的 plugin.yml 中声明 folia-supported: true,方便在 Folia 端加载
  • 🛡️ 数据目录隔离 - 为外部插件统一创建 scripts/output/Data 数据目录,减少与主服插件的数据冲突
  • 🔧 无缝集成 - 与现有的 Bukkit/Spigot/Paper 环境兼容
  • 🔒 资源释放 - 卸载外部插件后尽可能释放 JAR 句柄,方便覆盖与删除

🚀 安装说明

  1. 下载最新版本的 ScriptIrc.jar
  2. 将 JAR 文件放入服务器的 plugins 目录
  3. 启动 / 重启服务器加载插件
  4. 插件会自动创建必要的目录结构和配置文件

从旧版本升级提示:本版本调整了脚本与外部插件的数据目录结构(scripts/output/Data),建议在升级前手动备份并删除旧版本的 ScriptIrc 数据目录,避免历史结构残留带来的混用与冲突。

💡 使用方法

ScriptIrc 提供了直观的命令系统,让你可以轻松管理插件和脚本:

基本命令(所有命令可简写为 /si

命令 描述
/scriptirc help 显示帮助信息
/scriptirc load <插件名> scripts/output 目录加载指定的外部插件 JAR
/scriptirc unload <插件名> 卸载指定的外部插件
/scriptirc reload <插件名> 重载指定的外部插件
/scriptirc list 列出所有已加载的外部插件
/scriptirc compiler <脚本名> 编译指定脚本:支持 .java 源码和 .sirc 项目
/scriptirc compiler <脚本名> fixreport 在最近一次编译失败后,分析错误并给出依赖修复建议
/scriptirc search <类名> 全局搜索给定类名的包路径
/scriptirc sirctree <项目名> 查看 .sirc 项目文件的虚拟目录结构(不落地解包)
/ai-builder 打开 AI 脚本构建 Web UI(用于生成脚本源码)

插件管理示例

# 加载名为 TestPlugin 的外部插件(对应 scripts/output/TestPlugin.jar)
/si load TestPlugin

# 卸载插件
/si unload TestPlugin

# 重新加载插件(例如更新后)
/si reload TestPlugin

# 查看已加载的插件列表
/si list

脚本 / .sirc 编译示例

# 编译位于 scripts/src 目录下的 HelloWorld.java 脚本(无需写后缀也可)
/si compiler HelloWorld

# 编译位于 plugins/ScriptIrc/scripts 下的 DemoProject.sirc 插件项目
/si compiler DemoProject

# 然后加载编译好的插件(自动输出到 scripts/output/ 目录)
/si load HelloWorld
/si load DemoProject

提示:对于 .sirc 项目,编译完成后如果包内存在 README.md,插件会尝试将其解析为游戏内书本并发送给执行命令的玩家,作为项目说明书。

📂 目录结构

安装后,ScriptIrc 将创建以下目录结构(简化示意):

plugins/
  └── ScriptIrc/
      ├── config.yml           # 插件配置文件
      ├── messages/            # 语言文件目录
      └── scripts/             # 所有脚本相关内容
          ├── src/             # 脚本源码目录(.java / .sirc 均可放在这里)
          │   ├── HelloWorld.java   # 示例脚本
          │   └── MathUtil.java     # 示例脚本
          ├── lib/             # 脚本额外依赖库目录(JAR)
          ├── output/          # 脚本 / 项目编译输出目录(可加载的外部插件 JAR)
          │   └── Data/        # 外部插件数据目录(可选重定向)
          └── build-cache/     # 编译临时目录(内部使用,会自动清理)

🛠️ 开发教程 - 创建你的第一个脚本插件

ScriptIrc 让插件开发变得异常简单。你只需要创建一个 Java 源文件,编译后即可立刻加载使用。下面是开发步骤:

1. 创建脚本文件

plugins/ScriptIrc/scripts/src 目录下创建一个新的 Java 文件,例如 MyFirstPlugin.java

2. 编写插件代码(推荐使用注释元数据方式)

以下是一个简单的插件模板,元数据通过 JavaDoc 注释提供,ScriptIrc 会自动从注释中读取信息并生成 plugin.yml

// 包名可自定义(尽量合理即可,推荐使用反向域名)
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                    // 插件名称
 * @author 你的名字                              // 作者
 * @version 1.0.0                               // 版本
 * @description 我的第一个 ScriptIrc 脚本插件       // 简要描述(可多行)
 * [command]myfirstcmd|执行一个测试命令[/command]
 * [permission]myfirstplugin.use|使用测试命令的权限[/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

就这么简单!你的插件现在已经在服务器上运行了,无需重启服务器。

重要的元数据标签(注释方式)

当前版本推荐且默认使用 JavaDoc 注释方式 定义元数据,ScriptIrc 会自动从主类注释中解析:

标签 必填 描述
@pluginName 插件名称(用于展示与生成 plugin.yml
@version 插件版本号
@description 插件描述,支持多行
@author 插件作者
[command]name|description[/command] 命令定义,命令名与描述以 | 分隔
[permission]node|description[/permission] 权限定义,节点与描述以 | 分隔

注:如果缺少上述必需标签,当前版本将无法正确生成 plugin.yml,编译会失败,请根据模板补全。

⚙️ 配置文件说明

ScriptIrc 的配置文件(config.yml)允许你自定义插件的行为,以下为当前版本的关键配置示例:

# 插件自动重载配置 | Auto-reload configuration
auto-reload:
  # 是否启用自动重载 | Whether to enable auto-reload
  enabled: true
  # 检测间隔(秒) | Check interval (seconds)
  check-interval: 5
  # 是否在控制台输出详细日志 | Whether to output verbose logs in console
  verbose-logging: false

# 脚本编译设置 | Script compiler settings
compiler:
  # 是否启用 Java 编译器的详细输出(等价于 javac 的 -verbose),默认关闭
  # Whether to enable verbose output of Java compiler (equivalent to javac -verbose), default false
  verbose-logging: false

# 插件管理设置 | Plugin management settings
plugin-management:
  # 外部插件存放目录,相对于插件数据文件夹 | External plugins directory, relative to plugin data folder
  # 默认:scripts/output
  external-plugins-directory: "scripts/output"
  # 是否在服务器启动时自动加载外部插件 | Whether to auto-load external plugins on server startup
  load-on-startup: true
  # 是否将外部插件的数据文件夹重定向到 ScriptIrc 目录下 | Whether to redirect external plugins' data folders to ScriptIrc directory
  redirect-data-folder: true

# 权限设置 | Permission settings
permissions:
  # 管理员权限节点 | Admin permission node
  admin-permission: "scriptirc.admin"
  # 是否只允许 OP 使用 | Whether to allow only OP to use
  op-only: true

# 日志设置 | Logging settings
logging:
  # 日志输出级别: VERBOSE(输出所有日志), NORMAL(标准输出), MINIMAL(只输出关键信息)
  # Log output level: VERBOSE(all logs), NORMAL(standard output), MINIMAL(only critical information)
  level: "MINIMAL"

# 语言设置 | Language settings
language:
  # 当前语言: zh_CN(简体中文), en_US(英语)
  # Current language: zh_CN(Simplified Chinese), en_US(English)
  current: "zh_CN"
  # 是否启用自定义语言文件 (放置在 plugins/ScriptIrc/messages/ 目录下)
  # Whether to enable custom language files (placed in plugins/ScriptIrc/messages/ directory)
  enable-custom: true

🤔 常见问题

编译脚本 / .sirc 项目时报错怎么办?

请检查:

  1. Java 代码语法是否正确;
  2. 主类是否包含完整、合法的注释元数据标签(@pluginName/@version/@description/@author 等);
  3. 服务器是否运行在 JDK 而不是 JRE(编译需要 JDK 环境);
  4. 如果是依赖相关报错,可先执行一次 /si compiler <脚本名>,然后使用 /si compiler <脚本名> fixreport 查看依赖修复建议;
  5. 也可以尝试将错误日志交给 AI 工具协助分析,大多数常见问题都能快速定位。

如何删除动态加载的插件文件?

当使用 /si unload 命令卸载插件时,ScriptIrc 会尝试完全释放 JAR 文件,使其可以被删除或替换。如果仍然无法删除,通常需要重启服务器。

声明

  • 有关插件卸载 / 加载相关的部分实现参考了 PlugManX 项目

关于 ai-builder

  • ai-builder (AI:ScriptIrc) 功能基于当前插件之上,为你提供脚本开发与生成功能;
  • ai-builder 服务本身是独立的在线服务;
  • 条款链接:https://scriptirc.io/terms
  • 当前插件的核心功能仍然是:在当前服务器环境下编译并管理服务器插件;
  • ai-builder 服务存在内购,但仍可通过签到等方式获取免费试用额度。

Lv.4 矿工

人气
5 点
金粒
291 粒
宝石
0 枚
爱心
0 颗
钻石
34 枚
贡献
0 点
发表于 2025-5-25 15:17:16 | 显示全部楼层
作者什么时候支持一下 1.21.X 版本
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

你怕不怕,这辈子就是上辈子所说的下辈子?

Archiver|小黑屋| MCBBS纪念版 ( 新ICP备2024014954号|兵公网安备66010002000149号 )|隐私政策| 手机版

GMT+8, 2025-12-29 15:48 , Processed in 0.122884 second(s), 25 queries , Redis On.

"Minecraft"以及"我的世界"为美国微软公司的商标 本站与微软公司没有从属关系

© 2010-2025 MCBBS纪念版 版权所有 本站内原创内容版权属于其原创作者,除作者或版规特别声明外未经许可不得转载

返回顶部