logo
CraftEngine

English | 简体中文 | 繁體中文

## 📌 關於 CraftEngine CraftEngine 重新定義了 Minecraft 外掛程式架構,作為下一代自定義內容實現的解決方案。通過 JVM 級別的注入,它提供了前所未有的性能、穩定性和可擴充性。該框架提供了一個代碼優先的 API,用於註冊原生集成的方塊行為和物品交互邏輯。 ## 構建 ### 🐚 命令行 1. 安裝 JDK 21。 2. 開啟終端並切換到項目資料夾。 3. 執行 './gradlew build',構建產物將生成在 '/target' 資料夾中。 ### 💻 IDE 開發環境 1. 匯入項目並執行 Gradle 構建作。 2. 構建產物將生成在 '/target' 資料夾中。 ## 安装 ### 💻 環境要求 1. 確保您正在運行 [Paper](https://papermc.io/)(或其分支)1.20.1+ 伺服器。CraftEngine 不支援 Spigot,且未來也不太可能支援。 2. 使用 JDK 21 來運行伺服器。 ### 🔍 安裝方式 CraftEngine 提供了兩種安裝模式:標準安裝和 Mod 模式。標準安裝與傳統外掛程式安裝方式相同,即將外掛程式放入外掛程式資料夾中。下面我們將詳細介紹 Mod 模式的安裝步驟。 ### 🔧 安裝伺服器 Mod 1. 下載最新的 [ignite.jar](https://github.com/vectrix-space/ignite/releases)到您的伺服器根目錄。 2. 选择以下任一操作: - 將您的伺服器 JAR 檔案重新命名為 `paper.jar` - 添加啟動參數:`-Dignite.locator=paper -Dignite.paper.jar=./paper-xxx.jar` - 示例:`java -Dignite.locator=paper -Dignite.paper.jar=./paper-1.21.4-164.jar -jar ignite.jar` 3. 啟動伺服器以生成 '/mods' 目錄。 4. 將最新的 [mod.jar](https://github.com/Xiao-MoMi/craft-engine/releases) 放入 '/mods' 資料夾。 5. 將外掛程式的 JAR 檔案放入 '/plugins' 資料夾安裝。 6. 執行兩次重啟: 1. 第一次重啟用於檔案初始化。 2. 第二次重啟以啟動所有元件。 ## 技術概述 ### ⚙️ 方塊 CraftEngine 使用運行時位元組碼生成技術,在伺服器原生級別註冊自定義方塊,並結合客戶端數據包修改以實現視覺同步。此架構提供了以下功能: 🧱 自訂原生方塊 - 動態註冊方塊,完全可控。 - 物理屬性:硬度、引燃幾率、亮度等所有標準屬性。 - 自定義行為:通過 API 實現樹苗、作物、下落的方塊等。 - 原生相容性:完全保留原生方塊機制(例如音符盒、絆線)。 📦 數據包集成 - 定義自定義礦脈。 - 產生自定義樹木。 - 配置自定義地形生成。 ⚡ 性能優勢 - 比傳統的 Bukkit 事件監聽器更快、更穩定。 - 策略性代碼注入以最小化開銷。 ### 🥘 配方 CraftEngine 通過底層注入實現完全可定製的合成系統。與傳統外掛程式不同,它在處理 NBT 修改時不會失效,確保配方結果僅與唯一的物品標識符綁定。 ### 🪑 傢俱 該外掛程式使用核心實體來儲存傢俱元數據,同時將碰撞實體和模組元件作為用戶端數據包傳輸。此架構實現了顯著的伺服器端性能優化,同時支持通過多部分物品集成實現複合傢俱組裝。 ### 📝 範本 鑒於外掛程式配置的廣泛性和複雜性,CraftEngine 實現了模組化範本系統以分隔關鍵設置。這使得使用者可以自定義配置格式,同時顯著減少冗餘的 YAML 定義。 ### 🛠️ 模型 該外掛程式通過配置實現模型繼承和紋理覆蓋,同時支援從 1.21.4 版本開始的[所有物品模型](https://misode.github.io/assets/item/)。它包含一個版本遷移系統,可以自動將 1.21.4+ 的物品模型降級為舊格式,以實現最大向後相容性。 ## 靈感來源 CraftEngine 從以下開源專案中汲取了靈感: - [Paper](https://github.com/PaperMC/Paper) - [LuckPerms](https://github.com/LuckPerms/LuckPerms) - [Fabric](https://github.com/FabricMC/fabric) - [packetevents](https://github.com/retrooper/packetevents) - [NBT](https://github.com/Querz/NBT) - [DataFixerUpper](https://github.com/Mojang/DataFixerUpper) - [ViaVersion](https://github.com/ViaVersion/ViaVersion) ### 核心依賴 CraftEngine 的實現依賴於以下基礎庫: - [ignite](https://github.com/vectrix-space/ignite) - [cloud-minecraft](https://github.com/Incendo/cloud-minecraft) - [rtag](https://github.com/saicone/rtag) - [adventure](https://github.com/KyoriPowered/adventure) - [byte-buddy](https://github.com/raphw/byte-buddy) ## 如何貢獻 ### 🔌 新功能與 Bug 修復 如果您提交的 PR 是關於 Bug 修復的,它很可能會被合併。如果您想提交新功能,請提前在 [Discord](https://discord.com/invite/WVKdaUPR3S) 上聯繫我。 ### 🌍 翻譯 1. 克隆此倉庫。 2. 在 '/bukkit/loader/src/main/resources/translations' 中創建一個新的語言檔。 3. 完成後,提交 **pull request** 以供審核。我們感謝您的貢獻! ### 💖 支持開發者 如果您喜欢使用 CraftEngine,请考虑支持开发者! - **Polymart**: [无] - **BuiltByBit**: [无] - **愛發電**: [通過愛發電支援](https://afdian.com/@xiaomomi/) ## CraftEngine API ```kotlin repositories { maven("https://repo.momirealms.net/releases/") // 如果你的網路環境受限可以嘗試下面的存儲庫位址 // maven("https://repo-momi.gtemc.cn/releases/") } ``` ```kotlin dependencies { compileOnly("net.momirealms:craft-engine-core:0.0.45") compileOnly("net.momirealms:craft-engine-bukkit:0.0.45") } ```