我的世界官网中文百科zh.minecraft.wikiJava版服务器列表基岩版服务器列表
帖子

Memorial Edition

查看: 185|回复: 0

[原创插件] Scriptirc —— 脚本编译,将java源码编译成服务器插件

[复制链接]

Lv.3 挖沙工

暴龙战士

人气
16 点
金粒
29 粒
宝石
0 颗
爱心
0 颗
钻石
19 颗
贡献
0 点
发表于 前天 04:16 | 显示全部楼层 |阅读模式
脚本编译 Scriptirc
  • 概要
  • 下载链接
  • 授权信息

适用服务端:CraftBukkit Bukkit 

插件类型: 其他 

语言支持: 简体中文 

适用版本:

前置插件:

简介:

LOGO

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

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

x
本帖最后由 WKEA 于 2025-5-6 04:17 编辑

Scriptirc - 脚本编译,可直接在服务器内将java源码编译为服务器插件并加载

版本
Minecraft
语言
这是一个Beta版本并且仅在1.20.4版本测试过,如您遇到bug或各种奇葩错误 请见谅:绵羊_不行:

这个插件推荐 用于测试服务器 或 正在开发中的服务器 因为编译出来的脚本不需要依赖Scriptirc的加载 您可以将编译出来的插件脚本可以直接放置在plugins内

📚 介绍

Scriptirc是一个功能强大的Bukkit/Spigot插件,旨在简化插件管理和即时开发流程。如果你曾经希望能够在不重启服务器的情况下 编译修改脚本插件、加载、卸载或重载 ,或者想要快速开发和测试简单的功能,Scriptirc将是你理想的选择。

✨ 主要特性

  • 🔄 动态插件管理 - 无需重启服务器即可加载、卸载或重载插件
  • 📝 即时脚本编译 - 将Java脚本直接编译为功能完整的Bukkit插件
  • 🛡️ 数据目录隔离 - 自动为插件脚本创建独立的数据目录
  • 🔧 无缝集成 - 与现有的Bukkit/Spigot/Paper环境兼容
  • 🔒 资源释放 - 卸载插件脚本彻底释放插件资源,解锁JAR文件

🚀 安装说明

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

💡 使用方法

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 <作者>
* @version <版本>
* @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 之后会解决)

  1. 服务器管理员执行 /si sync 命令同步命令到所有在线玩家
  2. 或者让玩家重新登录服务器

编译脚本时报错怎么办?

确保:

  1. Java代码语法正确
  2. 包含所有必要的元数据字段(VERSION, DESCRIPTION, AUTHOR)
  3. 服务器运行在JDK而不是JRE上(编译需要JDK)

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

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

承认

  • 有关于插件卸载加载 相关的代码 我参考了PlugManX项目
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我是要成为海贼王的男人!

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

GMT+8, 2025-5-8 12:13 , Processed in 0.145855 second(s), 21 queries , Redis On.

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

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

返回顶部