This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
语言约定:所有对话和输出请使用中文。
TabooLib 是 Minecraft(Java 版)跨平台插件开发框架,基于 Kotlin 构建,支持 Bukkit、BungeeCord、Velocity、AfyBroker 等平台。当前版本 6.2.3,分支 dev/6.2.3。
# 构建整个项目
./gradlew build
# 构建单个模块(示例)
./gradlew :common-util:build
./gradlew :module:bukkit:bukkit-ui:build
./gradlew :platform:platform-bukkit-impl:build
# 发布到本地 Maven
./gradlew publishToMavenLocal
# 发布开发版本
./gradlew build -Pdev
./gradlew build -PdevLocalcommon/ → 引导启动、隔离类加载器(IsolatedClassLoader)、生命周期管理
common-env/ → 运行时环境、依赖下载与重定位
common-util/ → 工具函数、内部事件总线、反射工具
common-platform-api/ → 平台抽象层(ProxyPlayer、命令系统、事件系统、调度器)
common-legacy-api/ → 向后兼容 API
module/ → 功能模块(按 basic/bukkit/bukkit-nms/minecraft/database/script 分类)
platform/ → 各平台的具体实现(bukkit-impl、bungee-impl、velocity-impl 等)
框架按以下阶段顺序初始化:
NONE → CONST → INIT → LOAD → ENABLE → ACTIVE → DISABLE
@Awake— 自动初始化,绑定到生命周期阶段@PlatformSide— 标记代码所属平台(BUKKIT / BUNGEE / VELOCITY / AFYBROKER / APPLICATION)@Inject— 依赖注入@SubscribeEvent— 事件监听器注册
使用 IsolatedClassLoader 沙箱化加载依赖,通过 Shadow 插件重定位 org.tabooproject → taboolib.library,防止与服务端/其他插件的依赖冲突。
common-platform-api 定义跨平台接口(ProxyPlayer、ProxyCommandSender 等),各 platform/*-impl 模块提供具体实现。通过服务提供者模式(PlatformService)在运行时绑定。
- IsolatedClassLoader 引导启动
- PrimitiveLoader 加载模块
- 下载并重定位 TabooLib 模块
- 执行模块入口点(定义在
extra.properties) - 初始化 Kotlin 环境
- 注册类访问器和回调
- Java 8 兼容:
jvmTarget = 1.8,sourceCompatibility = 1.8 - Kotlin 1.8.22,启用
-Xjvm-default=all - 包结构:所有代码在
taboolib.*包下(taboolib.common.*、taboolib.platform.*、taboolib.module.*) - Maven 坐标:
io.izzel.taboolib:{模块名}:{版本} - 不可发布的模块:名为
module、platform、expansion的父项目以及impl开头的模块不参与 Maven 发布
- Kotlin stdlib、kotlinx-coroutines-core 1.7.3
- Google Guava 21.0、Gson 2.8.7
- Apache Commons Lang3 3.5
- TabooProject Reflex 1.1.8(反射库)
- Shadow 7.1.2(JAR 打包与重定位)