{"id":34248273,"url":"https://github.com/karigel/aki-async-master","last_synced_at":"2026-04-16T06:04:35.049Z","repository":{"id":326614209,"uuid":"1104358965","full_name":"karigel/Aki-Async-master","owner":"karigel","description":"🍃 基于 Mixin 实现的异步优化插件，皆在为了不改变核心特性下提高 Leaves/Luminol 以及其分支的性能提升(本fork支持使用ignite加载的paper以及purpur核心)","archived":false,"fork":false,"pushed_at":"2025-12-05T15:46:17.000Z","size":27086,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-08T15:36:59.348Z","etag":null,"topics":["minecraft","minecraft-plugin","papermc"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/karigel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-26T05:27:43.000Z","updated_at":"2025-12-05T15:46:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/karigel/Aki-Async-master","commit_stats":null,"previous_names":["karigel/aki-async-master"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/karigel/Aki-Async-master","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karigel%2FAki-Async-master","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karigel%2FAki-Async-master/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karigel%2FAki-Async-master/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karigel%2FAki-Async-master/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/karigel","download_url":"https://codeload.github.com/karigel/Aki-Async-master/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karigel%2FAki-Async-master/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27761283,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-16T02:00:10.477Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["minecraft","minecraft-plugin","papermc"],"created_at":"2025-12-16T08:07:21.991Z","updated_at":"2025-12-16T08:07:23.074Z","avatar_url":"https://github.com/karigel.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Aki-Async (Ignite Fork)\n\n[![GitHub](https://img.shields.io/badge/Fork_of-Aki--Async-blue)](https://github.com/virgil698/Aki-Async)\n[![Ignite](https://img.shields.io/badge/Powered_by-Ignite-orange)](https://github.com/vectrix-space/ignite)\n[![Version](https://img.shields.io/badge/Version-3.2.16--SNAPSHOT-green)](https://github.com/virgil698/Aki-Async)\n[![Synced](https://img.shields.io/badge/Synced-0ccfb5b-purple)](https://github.com/virgil698/Aki-Async/commit/0ccfb5bc80498ed842940c169f8e250173b4ff39)\n\n**[English](#english-version)** | **中文**\n\n这是 [Aki-Async](https://github.com/virgil698/Aki-Async) 的 **Ignite 专用 Fork**，将原本设计为 Bukkit 插件的 Aki-Async 完全适配到 **Ignite Mod Loader** 环境，实现 100% 功能支持。\n\n## 📋 为什么需要这个 Fork？\n\n原版 Aki-Async 是一个优秀的服务器异步优化项目，但它设计为 Bukkit 插件，依赖 `JavaPlugin` 生命周期（`onEnable()`）来初始化。然而，**Ignite Mod Loader 不支持传统的 plugins 文件夹**，它使用 Mixin 注入技术在服务器启动时修改代码。\n\n本 Fork 通过以下方式解决这个问题：\n- **完全移除 plugin.yml**：不再作为 Bukkit 插件加载\n- **Mixin 自动初始化**：在服务器启动时自动注入和初始化\n- **适配层桥接**：让依赖 Plugin 实例的组件在 Ignite 下正常工作\n- **插件类加载器修复**：解决 Ignite 环境下的类加载器隔离问题\n\n## ✨ 主要特性\n\n### 核心优化（100% 工作）\n- ✅ **Entity Tick Parallel** - 实体 Tick 并行处理\n- ✅ **Mob Spawning Async** - 异步怪物生成\n- ✅ **TNT Optimization** - TNT 爆炸优化 + TNT 合并\n- ✅ **Brain Throttle** - AI 大脑节流\n- ✅ **Async Lighting** - 异步光照计算\n- ✅ **Block Entity Parallel** - 方块实体并行处理\n- ✅ **Chunk Tick Async** - 区块 Tick 异步\n- ✅ **Structure Location Async** - 异步结构定位\n- ✅ **DataPack Optimization** - 数据包加载优化\n- ✅ **Adaptive Load Balancer** - 自适应负载均衡\n- ✅ **Task Smoothing Scheduler** - 任务平滑调度\n- ✅ **PandaWire Redstone Algorithm** - PandaWire 红石优化算法\n- ✅ **TNT Merge Optimization** - TNT 合并优化\n- ✅ **Hopper Cache** - 漏斗容器缓存\n- ✅ **Villager POI Optimization** - 村民 POI 批量查询优化\n- ✅ **Entity Throttling** - 实体节流\n- ✅ **Mob Despawn Optimization** - 怪物消失检查优化\n- ✅ **SecureSeed Protection** - 种子加密保护（防止种子逆向）\n- ✅ **StructureCacheManager 适配** - 在 Ignite 环境下独立工作，无需 AkiAsyncPlugin\n\n\n### 插件兼容性（完全支持）\n- ✅ **WorldGuard** - 区域保护\n- ✅ **Residence** - 领地插件\n- ✅ **Lands** - 土地插件\n- ✅ **KariClaims** - 自定义领地插件\n- ✅ **ViaVersion** - 跨版本协议\n- ✅ **FancyNpcs** - NPC 插件\n- ✅ **ZNPCsPlus** - NPC 插件\n- ✅ **BlockLocker** - 容器保护\n\n### 辅助功能（完全支持）\n- ✅ **NetworkOptimization** - 网络优化\n- ✅ **ChunkLoadScheduler** - 区块加载调度\n- ✅ **VirtualEntityCompat** - 虚拟实体兼容\n\n## 🚀 安装方法\n\n1. 将编译好的 JAR 文件放入服务器的 `mods/` 文件夹\n2. 启动服务器，Aki-Async 会自动初始化\n3. 配置文件会自动创建在 `mods/AkiAsync/` 目录\n\n## 📁 配置文件位置\n\n- **主配置**：`mods/AkiAsync/config.yml`\n- **实体配置**：`mods/AkiAsync/entities.yml`\n- **节流配置**：`mods/AkiAsync/throttling.yml`\n\n首次运行时会自动从 JAR 中提取默认配置文件。\n\n## 🔧 核心适配工作\n\n### 1. 架构设计\n\n```\n原版 Aki-Async (Bukkit Plugin)\n├── AkiAsyncPlugin.java        ← onEnable() 初始化\n├── 依赖 plugin.yml\n└── 使用 plugins/ 文件夹\n\n本 Fork (Ignite Mod)\n├── AkiAsyncInitializer.java   ← 独立初始化系统\n├── CraftServerLoadPluginsMixin.java ← Mixin 钩子\n├── IgnitePluginAdapter.java   ← 适配层（让辅助组件工作）\n├── 使用 ignite.mod.json\n└── 使用 mods/ 文件夹\n```\n\n### 2. 初始化流程\n\n```\n服务器启动\n    │\n    ▼\nIgnite 加载 AkiAsync mod (ignite.mod.json)\n    │\n    ▼\nCraftServerLoadPluginsMixin.loadPlugins() [HEAD]\n    │  └─ AkiAsyncInitializer.initialize()  ← 核心初始化\n    │       ├─ ConfigManager\n    │       ├─ Executors (TNT, Lighting, Brain, etc.)\n    │       ├─ AkiAsyncBridge\n    │       └─ Mixin 配置\n    ▼\nBukkit 加载其他插件 (WorldGuard, KariClaims, etc.)\n    │\n    ▼\nCraftServerLoadPluginsMixin.enablePlugins() [POSTWORLD]\n    │  └─ 兼容层初始化\n    │       ├─ ViaVersionCompat.initialize()\n    │       ├─ LandProtectionIntegration\n    │       ├─ FancyNpcsDetector / ZNPCsPlusDetector\n    │       └─ IgnitePluginAdapter.initializeAuxiliaryFeatures()\n    ▼\n服务器运行\n```\n\n### 3. 插件类加载器修复\n\nIgnite 使用独立的类加载器，导致 `Class.forName()` 无法找到其他插件的类。\n\n**问题**：\n```java\n// 在 Ignite 环境下失败\nClass.forName(\"com.sk89q.worldguard.WorldGuard\");\n```\n\n**解决方案**：\n```java\n// 使用插件自己的类加载器\nPlugin plugin = Bukkit.getPluginManager().getPlugin(\"WorldGuard\");\nClassLoader pluginClassLoader = plugin.getClass().getClassLoader();\nClass.forName(\"com.sk89q.worldguard.WorldGuard\", true, pluginClassLoader);\n```\n\n### 4. 适配层设计（IgnitePluginAdapter）\n\n原版的辅助组件（NetworkOptimizationManager 等）需要 `AkiAsyncPlugin` 实例。我们创建适配层来桥接：\n\n```java\npublic class IgnitePluginAdapter {\n    // 从 AkiAsyncInitializer 获取配置\n    private final ConfigManager configManager;\n    \n    // 使用代理插件注册事件\n    private Plugin findProxyPlugin() {\n        // 找一个已启用的插件来注册事件监听器\n    }\n    \n    // 初始化所有辅助功能\n    public void initializeAuxiliaryFeatures() {\n        initializeNetworkOptimization();\n        initializeChunkLoadScheduler();\n        initializeVirtualEntityCompat();\n    }\n}\n```\n\n### 5. 保持上游兼容\n\n为了方便跟随原版 Aki-Async 更新，我们：\n- **不修改原有文件**（AkiAsyncPlugin.java 等保持不变）\n- **只新增适配文件**（AkiAsyncInitializer, IgnitePluginAdapter, Mixins）\n- **删除 plugin.yml**（唯一的删除操作）\n\n```bash\n# 合并上游更新\ngit remote add upstream https://github.com/virgil698/Aki-Async.git\ngit fetch upstream\ngit merge upstream/main\n# 冲突只会在我们新增的文件中\n```\n\n## 📊 功能对比\n\n| 功能 | 原版 Aki-Async | 本 Fork |\n|------|---------------|---------|\n| 运行方式 | Bukkit 插件 | Ignite Mod |\n| 初始化方式 | `onEnable()` | Mixin 自动注入 |\n| 配置文件路径 | `plugins/AkiAsync/` | `mods/AkiAsync/` |\n| 插件兼容检测 | 默认类加载器 | 插件类加载器 |\n| 辅助功能 | 需要 Plugin 实例 | 适配层桥接 |\n| Ignite 支持 | ❌ | ✅ |\n| 上游更新 | - | 易于合并 |\n\n## 📝 使用说明\n\n### 安装\n\n1. 确保服务器已安装 [Ignite Mod Loader](https://github.com/vectrix-space/ignite)\n2. 将 JAR 放入 `mods/` 文件夹\n3. 启动服务器\n\n### 验证安装\n\n查看日志确认初始化成功：\n```\n[AkiAsync/Ignite] 正在初始化 AkiAsync...\n[AkiAsync] Bridge registered successfully with all executors\n[AkiAsync] Land protection plugins detected:\n  [✓] WorldGuard - Compatible\n  [✓] KariClaims - Compatible\n[AkiAsync/Ignite] 所有兼容层已初始化完成\n```\n\n### 命令\n\n- `/aki-reload` - 重载配置文件\n- `/aki-debug` - 查看调试信息\n- `/aki-version` - 查看版本信息\n\n## 🔄 新增/修改的文件\n\n### 新增文件（我们的适配代码）\n\n| 文件 | 说明 |\n|------|-----|\n| `AkiAsyncInitializer.java` | 独立初始化系统 |\n| `CraftServerLoadPluginsMixin.java` | Mixin 钩子（命令注册、兼容层初始化）|\n| `IgnitePluginAdapter.java` | 适配层（让辅助组件工作）|\n| `AkiReloadCommand.java` | 独立命令类 |\n| `AkiDebugCommand.java` | 独立命令类 |\n| `AkiVersionCommand.java` | 独立命令类 |\n\n### 修改文件（小改动，易于合并）\n\n| 文件 | 修改内容 |\n|------|---------|\n| `AkiAsyncBridge.java` | 添加独立模式构造函数 |\n| `ConfigManager.java` | 支持 `plugin == null` |\n| `LandProtectionIntegration.java` | 使用插件类加载器 |\n| `ViaVersionCompat.java` | 使用插件类加载器 |\n| `FancyNpcsDetector.java` | 使用插件类加载器 |\n\n### 删除文件\n\n| 文件 | 原因 |\n|------|-----|\n| `plugin.yml` | Ignite 不使用 plugins 文件夹 |\n\n## ⚠️ 注意事项\n\n1. **必须使用 Ignite**：本 Fork 专为 Ignite Mod Loader 设计\n2. **JAR 放在 mods/**：不是 plugins/ 文件夹\n3. **配置在 mods/AkiAsync/**：首次运行自动创建\n\n## 📄 许可证\n\n与原版 Aki-Async 保持一致。\n\n## 🙏 致谢\n\n- **原版项目**：[Aki-Async](https://github.com/virgil698/Aki-Async) by virgil698\n- **Ignite Mod Loader**：[Ignite](https://github.com/vectrix-space/ignite) by vectrix-space\n\n## 📚 相关链接\n\n- [原版 Aki-Async](https://github.com/virgil698/Aki-Async)\n- [Ignite Mod Loader](https://github.com/vectrix-space/ignite)\n- [Paper MC](https://papermc.io/)\n\n---\n\n# English Version\n\nThis is an **Ignite-dedicated Fork** of [Aki-Async](https://github.com/virgil698/Aki-Async), fully adapting the original Bukkit plugin to the **Ignite Mod Loader** environment with 100% feature support.\n\n## 📋 Why This Fork?\n\nThe original Aki-Async is an excellent server async optimization project, but it's designed as a Bukkit plugin relying on the `JavaPlugin` lifecycle (`onEnable()`) for initialization. However, **Ignite Mod Loader doesn't support the traditional plugins folder** - it uses Mixin injection to modify code at server startup.\n\nThis fork solves this by:\n- **Removing plugin.yml**: No longer loaded as a Bukkit plugin\n- **Mixin Auto-initialization**: Automatically injects and initializes at server startup\n- **Adapter Layer Bridge**: Makes Plugin-dependent components work under Ignite\n- **Plugin ClassLoader Fix**: Resolves ClassLoader isolation issues in Ignite environment\n\n## ✨ Key Features\n\n### Core Optimizations (100% Working)\n- ✅ **Entity Tick Parallel** - Parallel entity tick processing\n- ✅ **Mob Spawning Async** - Asynchronous mob spawning\n- ✅ **TNT Optimization** - TNT explosion optimization + merging\n- ✅ **Brain Throttle** - AI brain throttling\n- ✅ **Async Lighting** - Asynchronous lighting calculation\n- ✅ **Block Entity Parallel** - Parallel block entity processing\n- ✅ **Chunk Tick Async** - Asynchronous chunk ticking\n- ✅ **Structure Location Async** - Async structure location\n- ✅ **DataPack Optimization** - DataPack loading optimization\n\n### v3.2.16 New Features\n- ✅ **Adaptive Load Balancer** - Dynamic task submission rate control\n- ✅ **Task Smoothing Scheduler** - Prevents performance spikes\n- ✅ **PandaWire Redstone Algorithm** - Optimized redstone wire updates\n- ✅ **TNT Merge Optimization** - Merge nearby TNT entities\n- ✅ **Hopper Cache** - Container lookup caching\n- ✅ **Villager POI Optimization** - Batch POI queries for villagers\n- ✅ **Entity Throttling** - Selective entity tick throttling\n- ✅ **Mob Despawn Optimization** - Reduced despawn check frequency\n- ✅ **SecureSeed Protection** - Seed encryption (prevents seed cracking)\n\n### Plugin Compatibility (Fully Supported)\n- ✅ **WorldGuard** - Region protection\n- ✅ **Residence** - Residence plugin\n- ✅ **Lands** - Land claim plugin\n- ✅ **KariClaims** - Custom claims plugin\n- ✅ **ViaVersion** - Cross-version protocol\n- ✅ **FancyNpcs** - NPC plugin\n- ✅ **ZNPCsPlus** - NPC plugin\n- ✅ **BlockLocker** - Container protection\n\n### Auxiliary Features (Fully Supported)\n- ✅ **NetworkOptimization** - Network optimization\n- ✅ **ChunkLoadScheduler** - Chunk loading scheduler\n- ✅ **VirtualEntityCompat** - Virtual entity compatibility\n\n## 🚀 Installation\n\n1. Place the compiled JAR into the server's `mods/` folder\n2. Start the server, Aki-Async will initialize automatically\n3. Config files are created in `mods/AkiAsync/` directory\n\n## 📁 Config File Locations\n\n- **Main Config**: `mods/AkiAsync/config.yml`\n- **Entity Config**: `mods/AkiAsync/entities.yml`\n- **Throttling Config**: `mods/AkiAsync/throttling.yml`\n\nDefault configs are extracted from the JAR on first run.\n\n## 📊 Feature Comparison\n\n| Feature | Original Aki-Async | This Fork |\n|---------|-------------------|-----------|\n| Runtime | Bukkit Plugin | Ignite Mod |\n| Initialization | `onEnable()` | Mixin Auto-inject |\n| Config Path | `plugins/AkiAsync/` | `mods/AkiAsync/` |\n| Plugin Detection | Default ClassLoader | Plugin ClassLoader |\n| Auxiliary Features | Requires Plugin instance | Adapter Layer Bridge |\n| Ignite Support | ❌ | ✅ |\n| Upstream Updates | - | Easy to merge |\n\n## 📝 Usage\n\n### Installation\n\n1. Ensure [Ignite Mod Loader](https://github.com/vectrix-space/ignite) is installed\n2. Place the JAR in `mods/` folder\n3. Start the server\n\n### Verify Installation\n\nCheck logs for successful initialization:\n```\n[AkiAsync/Ignite] Initializing AkiAsync...\n[AkiAsync] Bridge registered successfully with all executors\n[AkiAsync] Land protection plugins detected:\n  [✓] WorldGuard - Compatible\n  [✓] KariClaims - Compatible\n[AkiAsync/Ignite] All compatibility layers initialized\n```\n\n### Commands\n\n- `/aki-reload` - Reload configuration files\n- `/aki-debug` - View debug information\n- `/aki-version` - View version information\n\n## ⚠️ Important Notes\n\n1. **Requires Ignite**: This fork is designed specifically for Ignite Mod Loader\n2. **JAR in mods/**: NOT in the plugins/ folder\n3. **Config in mods/AkiAsync/**: Created automatically on first run\n\n## 📄 License\n\nSame as the original Aki-Async project.\n\n## 🙏 Credits\n\n- **Original Project**: [Aki-Async](https://github.com/virgil698/Aki-Async) by virgil698\n- **Ignite Mod Loader**: [Ignite](https://github.com/vectrix-space/ignite) by vectrix-space\n\n## 📚 Related Links\n\n- [Original Aki-Async](https://github.com/virgil698/Aki-Async)\n- [Ignite Mod Loader](https://github.com/vectrix-space/ignite)\n- [Paper MC](https://papermc.io/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarigel%2Faki-async-master","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarigel%2Faki-async-master","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarigel%2Faki-async-master/lists"}