Configurable utility/combat client for Fabric 1.21.11, additionally smoke-tested on Lunar Client.
Current source: v2.0.0 — Releases
| Module | Default Key | Description |
|---|---|---|
| NoFall | N |
onGround spoofing,不受墜落傷害 |
| XRay | X |
透視礦石,gamma 16.0 |
| MaceAura | Z |
手持重錘自動鎖定 + silent aim 攻擊,可選 Hostile / Animals / Players 目標 |
| KillAura | K |
全武器 aura,switch/single 模式可選,目標範圍 / 種類 / 攻速可調 |
| NoSlow | G |
使用物品時不減速 |
| BHop | B |
自動跳躍保持最高速度,可選 LowHop(低跳)/ Boost(每跳複合加速)/ KB Boost(受擊反 velocity) |
| Step | H |
步高提升(透過 STEP_HEIGHT attribute,1.0–3.0 可調) |
| Velocity | C |
受擊擊退倍率調整(水平 / 垂直 0–200%) |
| FastPlace | F |
移除右鍵放置冷卻 |
| CritHit | R |
自動 micro-hop 觸發暴擊 |
| Scaffold | J |
自動橋方塊 + Tower 模式(按 SPACE 自動疊塔) |
| Timer | T |
玩家 tick 倍速(1.0–3.0×),等同 movement-only speedhack |
| Fly | V |
Motion-based 飛行(伺服器可用):每 tick 直接設速度,WASD 平移 / SPACE 升 / SHIFT 降,H/V Speed 可調。原版伺服器搭 NoFall AntiKick 不被踢 |
| Freecam | P |
鏡頭脫離身體自由飛(穿牆偵察)。純 client、零封包、任何伺服器偵測不到;身體原地凍結,強制第三人稱。Speed 可調 |
| SpearAura | U |
1.21.11 Spear 武器自動鎖定 + silent aim,Jab / Charge / Auto 三模式,自動 step-back 避免太近戳不到 |
| NoCrash | — | 鞘翅飛行中前方 raycast 偵測到牆自動減速到 0.4 b/t,server 看到的是自然減速不觸發 wall damage |
| Hitbox | — | 其他實體 bounding box 放大讓邊緣攻擊也命中,Players / Hostile / Animals 三開關 |
| ElytraGoto | — | 設定 XYZ 目標座標,自動轉向 + 自動發射煙火,遠距離飛行自動駕駛 |
| DimCoord | — | 左上角 HUD 永遠顯示當前 XYZ + 另一維度對應座標(主世界↔地獄 1:8 換算) |
| ESP | — | 透視玩家 / 怪物 / 動物 / 掉落物:Hitbox(vanilla F3+B 樣式,含 eye-forward 藍線)/ Corners / Outline / Filled 四種框型 + Name / HP / Distance / Tracer 標籤,自動距離 cull |
| TargetHUD | — | 上方中央 HUD 面板,顯示當前 KillAura / MaceAura / SpearAura 鎖定目標的名字 / 血條 / 距離 |
| NameTag | Y |
玩家 / 怪物頭上顯示名字 + 血條 + 護甲值 + 六格裝備(頭/胸/腿/腳/主手/副手)含耐久條,距離自動縮放 |
| AutoFish | — | 自動釣魚:偵測 bobber 下沉收竿 + 自動重丟,純 right-click 動作 |
| AutoTotem | O |
背包有不死圖騰時自動補到副手 |
| AutoEat | — | 飢餓低於門檻時自動選擇並食用合適食物 |
| AutoSprint | 未綁定 | 前進時自動衝刺,可控制斜向、飢餓、碰撞與使用物品條件 |
| AutoArmor | 未綁定 | 在安全的玩家背包狀態下,依護甲、韌性、附魔與耐久自動換裝 |
| FastBreak | I |
單方塊快速挖掘,最終結果仍由伺服器驗證 |
| AutoTool | L |
依目標方塊自動切換合適工具,可選擇切回原欄位 |
| Nuker | M |
自動挖掘設定範圍內的可破壞方塊 |
| AutoWalk | . |
自動保持向前移動,停用或 Panic 時釋放按鍵狀態 |
| Waypoints | — | 儲存跨維度座標並可交給 ElytraGoto 導航 |
| ArrayList | — | 顯示目前啟用的模組,可切換彩虹、背景與 Liquid 樣式 |
| ClickGUI | 右 Ctrl |
可拖曳面板,展開每個模組的詳細設定 |
- KillAura:範圍、攻擊範圍、攻擊延遲、Single 模式、目標篩選、Raycast、Skip Invisible、平滑旋轉、Body Lock
- MaceAura:偵測範圍、攻擊範圍、Hostile / Animals / Players 目標篩選
- Step:步高滑桿(1.0×–3.0×)
- BHop:速度倍率(0.5×–2.5×)、Low Hop + Jump Height(0.1–1.0)、Boost(1.0–1.5,每 air tick 複合,封頂 2.5)、KB Boost(受擊把擊退轉為前進)
- Timer:玩家 tick 倍速滑桿(1.0×–3.0×)
- ElytraGoto:用
.nf goto <x> [y] <z>設目標、.nf goto stop停止;ClickGUI 有 Safe HP slider 可調保護門檻;動作列顯示距離 / ETA / 主世界↔下界座標對照 - Scaffold:Tower / Tower Move / Tower Speed / Fake Hand / Silent Rot / Auto Switch / Switch Back / Place Delay
- Velocity:水平 / 垂直擊退倍率
- AutoSprint:斜向衝刺、使用物品/碰撞暫停、最低飢餓值
- AutoArmor:換裝延遲、最低剩餘耐久百分比
- HUD Editor:拖曳、縮放、九方錨點、安全邊界、中心/元件吸附、單項或全部重設
- Profiles:建立、切換、匯入/匯出,並以伺服器位址或單人世界自動匹配
- Diagnostics:在 ClickGUI 或
.nf diagnose檢視版本、目前 profile、Mixin 能力與近期錯誤 - Theme Color:主題色 RGB + 背景透明度
- 所有模組:點擊右側
[KEY]徽章可直接在 GUI 內重新綁鍵 - Waifu 背景:放圖片到
<config>/valencia/waifu.{png,jpg,bmp,gif}會顯示在 ClickGUI 左下角
- 安裝 Fabric Loader 0.19.2+(不需要 Fabric API)
- 下載最新 JAR → GitHub Releases
- 放入 mods 資料夾:
- Lunar Client:
.lunarclient/profiles/lunar/1.21/mods/fabric-1.21.11/ - 一般 Fabric:
.minecraft/mods/
- Lunar Client:
設定儲存於 UTF-8、版本化的 <config>/valencia.json;HUD 同時保存在 <config>/valencia-hud.json。舊設定首次載入會備份為 valencia.pre-profiles-v1.json 並遷移成 default profile。
.nf bind <功能> <鍵名>
功能:所有在 ClickGUI 具有 Key 設定的模組,以及 gui / panic
鍵名:N X Z K G B H C F R J T RIGHT_CONTROL F5 ...
(GLFW 名稱去掉 GLFW_KEY_ 前綴;NONE 可解除綁定)
.nf goto <x> [y] <z> # 當前維度座標(Y 可省略,預設 64)
.nf goto ow <x> [y] <z> # 主世界座標,在地獄會自動 ÷8 換算
.nf goto nether <x> [y] <z> # 地獄座標,在主世界會自動 ×8 換算
.nf goto stop # 取消目標 + 關掉自動駕駛
.nf bind spearaura <鍵名> # 重綁 SpearAura toggle key
.nf hud edit # 開啟 HUD 編輯器
.nf hud reset # 重設全部 HUD 位置與縮放
.nf profile list
.nf profile create <名稱>
.nf profile use <名稱>
.nf profile copy <來源> <新名稱>
.nf profile rename <舊名> <新名>
.nf profile delete <名稱>
.nf profile match <位址樣式> <名稱> # 精確位址、*.example.net 或 singleplayer
.nf profile unmatch <位址樣式>
.nf profile export <名稱> # 匯出至 <config>/valencia/profiles/
.nf profile import <名稱>
.nf profile auto on|off
.nf diagnose # 顯示版本、profile、Mixin 狀態與近期錯誤
常用 key codes:B=66 C=67 F=70 G=71 H=72 J=74 K=75 N=78 R=82 T=84 X=88 Z=90 RIGHT_CONTROL=345
- Minecraft 1.21.11;標準 Fabric 是行為基準,Lunar Client 為額外 smoke-test 目標
- Fabric Loader 0.19.2+
- Java 21+
- 相容 Sodium / Iris(純 GuiGraphics 渲染,無 GL11 直接呼叫)
git clone https://github.com/Siesta0217/valencia.git
cd valencia
.\gradlew.bat assemble
# JAR → build/libs/valencia-2.0.0.jar一般建置不再自動修改 Lunar mods 目錄。需要本機部署時明確執行 gradlew deploy;CI 會執行 test assemble verifyModJar。
公開版本需在標準 Fabric 與 Lunar Client 完成 SMOKE_TEST.md。
settings.gradle的rootProject.name請勿修改(JDK 25 + Groovy ASM 限制)。
- 新增可拖曳、縮放、錨定、吸附與即時預覽的 HUD Editor,統一管理 TargetHUD、ArrayList 與 DimCoord。
- 新增版本化 Profiles、伺服器/單人世界自動匹配、舊設定備份遷移,以及 GUI/聊天指令管理。
- 新增 AutoSprint 與 AutoArmor,完整接入 registry、ClickGUI、設定持久化與 Panic。
.nf bind改由中央 registry 產生,不再維護會漂移的手寫清單。- 新增診斷快照、Mixin 套用狀態、JUnit 測試、artifact 驗證與 Fabric/Lunar 發布查核流程。
- 設定改成 UTF-8 原子寫入;一般 build 不再隱式部署到 Lunar Client。
- Config 存檔 debounce(最大宗):原本每個 ClickGUI 滑桿的 setter 都直接
cfg.save(),而save是 GSON 序列化 + FileWriter 同步寫檔——拖一下滑桿 = 每個滑鼠像素寫一次磁碟(60+ 次/秒)。改成save()只標記 dirty,由 tick 每秒最多寫一次;GUI 關閉強制寫、JVM shutdown hook 兜底,設定絕不遺失。 - Waifu 背景只載入一次:原本每次開 ClickGUI 都重讀磁碟 + 重新解碼 + 重新註冊材質(舊 DynamicTexture 還洩漏)。改靜態快取,一次性成本。
- GuiSkin 每幀配置消除:開著 GUI 時每幀都
new一個 skin 物件;改成只在 style/accent 真的變動時重建。 - 全部不碰戰鬥碼、無行為變化,純省 I/O 與配置。
- 技術路徑整個換掉:
g.fill疊層永遠做不出玻璃(硬邊圓角、1px 電線高光、無陰影)。新Glass.java用 signed-distance-field 把整塊面板烘成紋理(按 guiScale 的物理像素解析度):平滑抗鋸齒圓角、柔和 drop shadow、上亮下暗的 1 物理 px 邊光、gamma-2 頂部高光、底部偏置內陰影、1.5% 噪點抖動防 banding。快取 + 單次 blit,比原本幾十個 fill 還快。 - 修掉診斷出的合成 bug:舊 frostPanel 兩層 fill 疊出 ~55% 奶白(不是設計的 19%),把模糊背景整個洗掉——這就是「便宜壓克力」感的最大來源。
- ClickGUI 背景模糊全 layout 開啟(原本只有 Glass layout)——沒有 blur 的半透明只是灰膜,blur 才是玻璃的靈魂。
- Frost 皮膚真正成立:亮玻璃配深色文字(舊版深字配深底 = 看不見);Onyx/Liquid 尊重使用者 accent(不再硬編天藍電線)。
- HUD 層改走 iOS「降低透明度」策略:80% 不透明藍灰板 + 細緻邊光,不再用低 alpha 透出雜訊;掃光動畫從 HUD 移除(世界本身在動,移動高光讀起來像故障)。
- TargetHUD Liquid:換目標血條直接 snap(不再從上一隻的血量開始動畫)、傷害殘影改暗紅、頭像加深色 inset 井;ArrayList 膠囊不再貼屏緣挖缺口、行間留隙;DimCoord 面板 padding 對稱。
- 效能:accent 進快取 key 有 4bit 量化(拖顏色滑桿不再每 px 烘一張)、TargetHUD/DimCoord 寬度 8px 量化。
- 兩套新 ClickGUI 皮膚:
Frost(亮白透明壓克力,深色文字)+Onyx(深黑煙燻玻璃,亮邊+accent 光暈)。GUI Style 滑桿擴到 0–6(Dark/Light/Glass/Tenacity/Liquid/Frost/Onyx)。配 Glass layout 的真實背景模糊最有味道。 - TargetHUD 新 style 5「Liquid」:iOS 液態玻璃面板 + 左側即時 3D 目標頭像 + 血條 lerp 動畫(掉血留一道亮色殘影拖尾)+ 掃光反射。
- ArrayList「Liquid」模式:每行改成霜面玻璃膠囊(左緣亮色 accent 邊),取代舊的平背板。
- DimCoord「Liquid」開關:座標讀數包進液態玻璃面板。
- 新增可複用 HUD 原件
Aurora.hudGlass()(HUD 層沒有背景模糊,用深色玻璃底+亮頂邊+accent 側光+掃光模擬)與Aurora.glassPill()(便宜的列膠囊)。
- 新增
scripts/release.sh:bump → assemble → 部署 → README 版本參照 → commit → push → GitHub release 一條龍。前置檢查(commit msg / release notes / changelog 條目缺一即中止)、assemble 失敗自動回退版號。release 流程從「模型手打六步」變成「腳本一行」,哪個模型/哪次 session 跑都一致。
兩個複審抓到的真 bug:
- Panic/GUI 關 ElytraGoto 會永久卡住跳躍鍵:
toggle()原是裸翻轉;若自動起飛正持著跳躍鍵(2 tick 倒數),停用後 tick 早退、倒數永不執行 → 角色瘋狂跳。toggle 停用現在走完整stop()清理(降落中 panic 也會確實棄控)。 - AutoEat 與 Nuker/AutoTool 搶手持槽:進食中挖掘模組每 tick 換走食物槽 → 吃不進、進食狀態卡死。AutoEat 曝露
isEating(),兩個挖掘模組進食期間讓路,吃完自動恢復。
B4 silent-catch 稽核完成(roadmap 移植準備項):
- 新增
Log.once(key, t)一次性錯誤紀錄(泛化 AutoFish 的 loggedError 模式,同 key 只記一次不洗版)。 - 11 處封包/狀態敏感的
catch{}接上:ElytraGoto 火箭/redeploy/useItem、Scaffold 三種封包、CritHit mini-hop 封包、Timer 額外 tick、AutoTool 附魔查詢、config 載入/儲存(存檔失敗原本無聲吞掉——設定悄悄不持久化是最傷的一種)。 - 合理靜默保留:GUI blur fallback、waifu 載入(已顯示於 UI)、TargetHUD 實體渲染(有 fallback)、deploy 重試(有補償路徑)。
- 移植時的意義:MC 改版後封包簽名炸掉會在 log 現形,不再靜默失效。
- ClickGUI 重寫計畫啟動(計畫檔
.claude/plans/valencia-gui-hud-rewrite.md):G0 架構收斂 → G1 layout 瘦身 → H1/H2 HUD 可拖曳編輯器 → V1/V2 TargetHUD/ArrayList 視覺重做。 ClickGuiScreen.saveEnabled()28 筆手抄(Phase A 漏網的第 5 份清單,已漂移漏 Waypoints/AutoEat)→ 一句Modules.saveEnabled()。ModuleRegistry全面 registry 化:31 個模組 row 的分類/開關/持久化/Key 綁定全部從Modules.ALL衍生,只剩 settings 內容手寫(aura 閉包原樣不動)。31 個 toggle 閉包 + 28 個 KeyS 行蒸發;新模組進 GUI 從此零成本。Modules.ALL重排為 GUI 分類順序(面板顯示順序不變;按鍵輪詢陣列是純 runtime 結構,重排無影響)。- 行為統一:GUI 點模組開關現在即存(原本有 keybind 的模組要等關 GUI 才存);值不變,持久化時機更一致。
- 分段俯衝:掃描下方 32m 分三段(>24m 俯衝 30° / 10–24m 緩降 12° / <10m 拉平 flare),取代原本固定 15° 淺衝——下得快、說停之後不再飄出幾百格。
- 撞牆防護:降落中沿用巡航的 5 射線前方扇形掃描,前方有山壁先拉起掠過再繼續降——elytra 動能撞擊是會直接摔死的,原本盲降。
- 熔岩偵測(地獄):含流體 vs 只算方塊的雙射線比對,判出「下方表面是熔岩」→ 保持高度續滑到實地上空才降,不再 flare 進熔岩海。
- 安全上限 10s → 30s:高空/深谷降不完不再中途棄控(避免又變成「停了還在滑」)。
- 狀態列顯示離地高度與避障/熔岩提示。
- 新模組 AutoEat(Player 類):飢餓值 ≤ 門檻(預設 14,GUI 滑桿 6–19)自動換到快捷欄最佳食物、按住右鍵吃到飽、還原原槽。全程走 vanilla 輸入系統(真實換槽 + keyUse),伺服器看到的就是正常吃東西。
- 食物挑選:FOOD component 中 nutrition 最高者;跳過有害食物(腐肉/蜘蛛眼/毒馬鈴薯/河豚/生雞肉)。創造模式/開著介面時不動作。
- 掛 Panic(自動化類),ArrayList HUD 會顯示;registry 一行接好還原/持久化/自檢。
- 新模組 Waypoints(Render 類,預設開):
.nf wp add <name>存目前位置+維度、.nf wp del <name>刪、.nf wp list列清單(含距離)。 - 世界內渲染:每個 waypoint 一根全高度彩色光柱(名字 hash 決定顏色)+ 視平線高度的「name (123m)」浮動標籤,走 ESP 同一條 vanilla gizmo 管線,穿牆可見。
- goto 整合:
.nf goto home直接飛向存點;跨維度自動 ÷8/×8 換算(地獄存的點在主世界飛、反之亦然),終界點不換算會明講。 - Registry 效益實證:新模組的啟動還原/持久化/自檢,只在
Modules.ALL加一行就全部接好。
- 自動起飛:站在地上設好目標就自動跳躍+展翅,不用再自己「jump off something」。有裝備檢查(鞘翅+煙火,缺了顯示提示不亂跳),低天花板最多試 8 次防彈跳迴圈。
- 失速保護:大角度爬升時空速 < ~7 m/s 即將失速(然後摔進剛才在閃的地形)——自動改平飛並立刻補火箭。
- 提前下降規劃:目標在下方且已進入滑翔錐(12:1)就直接開始下降,不再平飛到目標正上方繞圈盤旋;高度下限在最終進場時放行(~18° 下滑道),低 Y 目標不再卡在 safeY 硬俯衝。
- 火箭換槽還原:從快捷欄借槽發火箭後立刻換回原槽(swap→use→swap back),降落時手上不再莫名拿著煙火。
- 真實 ETA:狀態列 ETA 改用當前實際空速(原本寫死 33 m/s)。
- GitHub Actions CI:push 到 main 自動用 JDK 21 跑
assemble(本機 JDK 25 不能碰 toolchain 的問題在 CI 不存在),JAR 上傳為 artifact。發佈命脈從此有乾淨可重現的備援。 PORTING.md:完整移植查核表——26 個 mixin 注入點(標出 sendPosition×4、packet redirect×2 等高風險集中點)、十幾條已 javap 驗證的 API 簽名雷區、四步移植流程。等 26.2 mappings 到位就照表操課。
NoFallMod.onInitializeClient()的 27 行 enable 還原 → 一句Modules.restoreEnabled()(一律走 toggle(),Freecam/ElytraGoto 依設計跳過)。~120 行 tuning 賦值原封不動。Modules.verify()啟動自檢上線:反射比對 ModConfig 的 27 個*Enabled欄位與 registry 綁定,漏綁/懸空立即 log(已驗證 27/27 零差集)。ArrayListMod.EXTRAS手抄 5 筆 → registrysurfaceInArrayList旗標衍生。- 至此 Phase A 完工:模組 roster 只剩一份(
Modules.ALL),Keybinds/panic/持久化/啟動還原/ArrayList 全是衍生視圖。
Keybinds.panic()22 筆手抄 →Modules.panic()(registry 的panicable策展集:玩法模組全關、XRay/NameTag/ESP 等視覺模組保留——語意跟舊清單一致)。Keybinds.saveEnabled()20 筆手抄 →Modules.saveEnabled()。小幅行為變更(修一致性):現在連無按鍵模組(AutoFish/NoCrash/Hitbox/ESP/DimCoord/TargetHUD/ArrayList)的 enabled 也會在每次按鍵切換時一併寫入 config。這些值 GUI 改動時本來就即時存檔,所以值不會變,只是持久化更完整、不再依賴「哪條路徑改的」。
- 新增
Modules.java:29 個模組的單一真實來源(ModuleDefrecord:label/分類/enabled/toggle/keybind/持久化欄位/panicable)。從此加模組只改一處,不用手動同步 4~5 份清單。 Keybinds改為 registry 的衍生視圖:TOGGLE_ENTRIES由Modules.KEYED生成、按鍵輪詢直接迭代 registry,刪掉 21 筆手抄TOGGLES表。順序/行為位元級不變。- 內建
Modules.verify()啟動自檢(下一版接上):反射掃ModConfig的*Enabled欄位跟 registry 綁定互相比對,新模組漏綁會直接在 log 現形——編譯器抓不到的,它抓。
Freecam 旋轉解耦(真正隱形偵察)
- 之前滑鼠瞄準 freecam 會直接轉動真實身體 → 旋轉封包外洩,別人看得到你原地轉頭。現在 freecam 有自己的 yaw/pitch:新增
FreecamTurnMixin攔截Entity.turn、把滑鼠輸入導向 freecam(鏡頭 mixin 同時覆寫位置+旋轉)。身體位置與旋轉完全凍結,伺服器端看到的是站著不動的玩家。
Nuker
- 加「曝露於空氣」檢查:只破壞至少一面接觸 air/fluid/非固體的方塊,跳過完全埋住、根本搆不到的方塊(省下被伺服器拒收的破壞,也少一個 anti-cheat 破綻)。
- 換工具後會還原原本的手持槽(比照 AutoTool)。
- 揮手改成「只在開始破壞新方塊時」,不再每 tick 揮 → 少約 20 swing 封包/秒。
AutoTool
- 選工具改用「有效挖掘速度」(基礎速度 + Efficiency 附魔 eff²+1),所以效率 V 鐵鎬會正確勝過無附魔鑽石鎬,而不是只看基礎速度。
ElytraGoto (.nf goto)
- 移除
setHotbarSlot的反射(Inventory.setSelectedSlot已驗證是 public)→ remap-safe,對日後 MC26 移植更穩。 - 狀態列修掉寫死的過時
[Goto v1.6.16]版本號;改顯示對目標的高度差 ΔY(±),方便判斷降落。
- AutoTool(Player,鍵
L):挖方塊時自動切到快捷欄裡破壞最快的工具,並送SetCarriedItem讓伺服器同步 → vanilla 真的變快。Sw Back挖完切回原槽 - Nuker(Player,鍵
M):自動破壞 reach 內所有方塊(最近的先,逐塊走 vanilla 破壞流程、自動切工具)。Range滑桿 2–5。vanilla 每塊照合法速度但免手動;很明顯,有 anticheat 的伺服器自行斟酌 - AutoWalk(Movement,鍵
.):自動按住前進(走Options.keyUp,自動尊重開介面/Freecam 凍結) - 三個都進 Keybinds 中央表(ArrayList 會顯示)、可持久化、Panic 會一起關
- 新增 FastBreak(Player,預設鍵
I):挖你正在看的單一方塊時,客戶端每 tick 把破壞進度設滿 → 約 1 tick 破掉 - 實作:
FastBreakMixin@ShadowMultiPlayerGameMode.destroyProgress,在continueDestroyBlockHEAD 設 1.0 - 前提:伺服器會自己驗算破壞時間。單機 / 無 anticheat 伺服器真的秒;vanilla / 有 anticheat 的會拒收 → 方塊長回來(ghost),屬無害但無效
- 根因:CritMixin 注入在
Player.attackHEAD,但 vanilla 的MultiPlayerGameMode.attack是先送攻擊封包、才呼叫player.attack()——假跳位置封包永遠比攻擊封包晚送,伺服器判暴擊時還沒收到,等於沒效 - 改注入到
MultiPlayerGameMode.attackHEAD(攻擊封包送出之前),3 個 mini-hop 位置封包保證先到,伺服器看到 fallDistance>0 + onGround=false → 真暴擊。簽名已 javap 確認 - 條件不變(站地面、冷卻滿、非疾跑/水中/坐騎),也對 KillAura 的攻擊生效
- 看到實機截圖後修三個最明顯的差距:
- 大圓角:新增
Aurora.roundRectR(真圓形角,逐列 inset),面板圓角從 3px 拉到 8px,砍掉「方塊感」 - 更透不灰:白霜濃度 32%→~19%,背後模糊的世界更鮮豔透出來(之前太灰)
- 亮鏡邊:面板自帶一圈亮玻璃 rim + 清楚的頂部高光(取代舊的弱斜邊)
- 大圓角:新增
- 字改回亮白 + 陰影(玻璃很透時白字最好讀,iOS 也是亮內容);啟用列亮天藍字/左條
- 誠實說明:Apple liquid glass 的折射 + vibrancy 是 MC 平面渲染做不到的,這是逼近版
- 依回饋改方向:要 iOS 26 那種亮、近乎透明的玻璃,不是深色
Aurora.frostPanel翻成亮白霜面(~32% 白霜,近乎透明,讓模糊的世界透上來)+ 亮高光頂邊;新增frostBorder亮玻璃斜邊框;圓角加大到 3pxLayoutGlass整套翻成深色字配色(亮玻璃上白字會糊):標題/模組名深色,啟用列淡天藍底 + 深天藍左條與字,pill/滑桿走天藍填色 + 深色凹槽 + 白滑塊- 仍靠 1.7.35 的真背景模糊;只有 Layout 4 啟用
- 釐清誤解:之前的「液態玻璃」缺的不是亮度是背景模糊——只堆半透明深色塊不會有玻璃感
- Glass 版面(Layout 4)現在會把 GUI 後面的世界模糊掉:
ClickGuiScreen在 Layout 4 時改呼叫 vanilla 的Screen.renderBlurredBackground(即選單背景那條 blur post-chain),取代原本的平面變暗 - 面板改用新的
Aurora.frostPanel——比glassPanel更透(~43% 深色霜面),讓糊掉的世界透上來=真 dark-mode 霜面玻璃;保留亮高光頂邊。白字在深霜面上仍清楚 - 其他版面不受影響(只有 Layout 4 啟用模糊);blur API 失敗會 fallback 回平面變暗
- 新增
4 GlassLayout(ClickGUI → Client → Theme →Layout改為 0–4):不是換色,是把分列式從幾何層重寫的獨立版面LayoutGlass。保留熟悉的操作(一分類一個可拖面板、左鍵切換、右鍵展開設定、+/- 收合),但:- 面板加寬到 118px、列高 16px、正常字級(不再用 0.5 縮放擠字)
- 圓角 iOS 液態玻璃面板(半透明+頂部高光+掃光)+天藍發光邊框
- 啟用列:天藍左條 + 天藍底 + 白字;pill 開關(滑動動畫)
- 展開設定用新 widget:圓鈕滑桿 + 數值、pill 開關、按鍵 chip,超出高度可捲動
- 固定天藍配色(不吃 accent),走共用
Auroraglass kit
- 跟舊的
0 Panels並存——舊版面原封不動,Glass 是另一個選項
goto stop在空中改成「接管緩降落地」:之前 stop 直接撒手,但伺服器端沒有取消滑翔的封包,玩家會繼續滑翔/失速卡在空中。現在requestStop()偵測到還在 fall-flying 時進入 landing 模式——緩降(15° 俯衝、近地 8m 內拉平)、不鎖視角(自己選落點)、不放火箭,落地 vanilla 自然結束滑翔後完全釋放;已在地面則立即停止。10 秒安全上限避免 landing 模式自己卡住.nf goto <座標>重設目標時會清掉 landing 旗標
- 新增
4 LiquidGUI Style(ClickGUI → Client → Theme →GUI Style改為 0–4):給分列式 Panels 版面(Layout 0) 套上 iOS 液態玻璃——每個分類面板用Aurora.glassPanel(半透明玻璃底+頂部 specular 高光)+淡天藍 wash,每個面板各自有掃光、天藍發光邊框(Aurora.glassBorder)。標題/啟用列/滑桿/捲軸全走固定天藍(38BDF8,不吃 accent) - 液態玻璃處理只在 Panels;其他版面套這個 skin 也會得到一致的天藍玻璃配色(只是沒有掃光特效)
- 共用
Aurorakit 加SKY常數 + 單色glassBorder;版面結構/拖曳/收合完全不變,純配色升級
- 漸層 1px 條帶:原 3px 條帶在遊戲內有明顯色階紋,全部改 1px 平滑取樣
- 調色盤降飽和 ~20%:原霓虹青/紫/粉在遊戲裡像廉價 RGB 燈效,換柔和粉彩調(
4FC3E8/9D7BE8/E87BB8) - 標題列重做:整條高亮漸層 bar 砍掉——深玻璃底 + 白字品牌,極光只活在標題下一條 1px 細線
- 啟用列 wash 減半(0x3C→0x26):開很多模組時不再整面漸層牆,狀態靠左條 + pill + 白字表達
- 掃光變柔:3 條硬邊(像一根怪線)→ 42px 寬五段漸變光帶,週期放慢
- 邊框收斂:邊緣 alpha 0xFF→0xD8(染色玻璃感而非電線)、外光暈 0x38→0x28、玻璃底加深(內容對比更好)
- 改動都在共用
Aurora.java+LayoutAurora.java,TargetHUD 的 Aurora 風格同步受益
- BHop:跟 Fly 同病——讀原始 GLFW WASD,繞過 Freecam 的輸入凍結與開啟中的畫面。修掉兩個情境:(1) freecam 中按 WASD 飛鏡頭,凍結的身體會自動起跳亂跳;(2) 聊天框打字打到 W/A/S/D,身體會原地自動跳(之前就存在的 bug,跟 Freecam 無關)。KB Boost 不依賴按鍵、保持運作
- Scaffold:Tower 讀
keyJump,freecam 中按 SPACE 升鏡頭會讓凍結的身體自己疊塔上升。Freecam 作用中 Scaffold 整個暫停(換槽位會自動還原) - 全 codebase grep 過 raw-key 讀取點:Fly(v1.7.29 已修)、BHop、Scaffold、Freecam 本身(有 screen 檢查)、Keybinds(中央表,本來就該全域生效)——已全數處理
- Fly 在 Freecam 作用中改為原地懸停:Freecam 靠 ClientInputMixin 凍結身體輸入,但 Fly 讀的是原始 GLFW 按鍵、繞過了凍結——兩個同開時按 WASD 鏡頭在飛、身體也跟著飛走。現在 Freecam 開著時 Fly 視同 GUI 開啟(速度歸零懸停),身體乖乖留在原地
- MaceAura / SpearAura 補 GCD 旋轉量化(各自 ClickGUI
GCD開關,預設開):先前只有 KillAura 會把 silent-aim 旋轉 delta 對齊滑鼠靈敏度 GCD 網格,Mace/Spear 送出的任意 float 旋轉正是 anti-cheat GCD 檢查會抓的破綻。現在三個 aura 一致(複用KillAuraMod.snapGcd) - Velocity 補爆炸擊退:TNT / 水晶 / 苦力怕的擊退不走
SetEntityMotionPacket,而是包在ClientboundExplodePacket.playerKnockback裡,先前 Velocity 完全攔不到。新增VelocityExplosionMixinredirect 該 getter 按 Horiz/Vert 縮放——設 0 即完全免疫水晶/TNT 擊退(簽名已 javap 驗證) - 清死碼:
ClickGuiScreen.gradVert(從未被呼叫)
- TargetHUD 新增
4 AuroraStyle(ClickGUI → Render → TargetHUD →Style改為 0–4):跟 Layout 3 同一套液態玻璃——玻璃底 + 頂部高光、掃過面板的光帶、流動極光血條(圓角軌)、極光發光邊框;血量靠血條長度 + 紅黃綠染色的 HP 數字判讀 - 抽出共用
Aurora.java繪圖工具(調色盤取樣、條帶漸層、圓角、玻璃面板、掃光、發光邊框),ClickGUI Aurora 版面改為薄委派,零邏輯複製、行為不變
- 新增
3 AuroraLayout(ClickGUI → Client → Theme →Layout改為 0–3):- 液態玻璃:低透明度玻璃底(遊戲世界透出來)、頂部 specular 高光遞減、底部內陰影,加一條緩慢掃過整個視窗的光帶(液態反光感,低 alpha 蓋在內容上)。GuiGraphics 沒有真模糊,這是逼近版
- 流動極光漸層(青→紫→粉循環調色盤,3px 條帶取樣 + 時間相位,整體 8 秒一輪):跑在標題列、active 分頁底線、啟用列底色、pill 開關、滑桿填色與整圈視窗邊框(外加 1px 低 alpha 外光暈)
- 版面:漸層標題列(深色字)+ 橫向分類分頁 + 圓角模組卡片(就地展開設定)+ 動畫 pill + 圓鈕滑桿,scissor 裁切捲動
- 配色固定走極光調色盤(不吃 accent),與
GUI Style無關
- Layout slider 上限 2→3;幾何/命中判定獨立,Panels / Sidebar / Tenacity 不受影響
- 新增
2 TenacityLayout(ClickGUI → Client → Theme →Layout改為 0–2):一個獨立幾何的單一視窗,不是換色——- 圓角視窗(2px 削角)+ accent 外框、accent 標題分隔線、可拖標題列、右上
x關閉 - 左側分類側欄(選取有 accent 左條 + 染色底)
- 右側模組卡片:圓角卡、啟用有 accent 左條、右邊 pill 開關(滑塊會滑動的動畫)、有設定的顯示
+/- - 點卡片本體就地展開(accordion)顯示設定,用重做的 widget:滑桿帶可拖白色圓鈕 + 數值、設定列 pill 開關、按鍵做成圓角 chip
- 卡片清單
enableScissor裁切捲動、獨立捲軸 - 幾何/命中判定完全自帶,但顏色沿用當前 GuiSkin(配 Dark/Tenacity 配色最對味)
- 圓角視窗(2px 削角)+ accent 外框、accent 標題分隔線、可拖標題列、右上
- 跟
1 Sidebar一樣是獨立 render 路徑,與GUI Style配色正交
- 新增
3 TenacityGUI Style(ClickGUI → Client → Theme →GUI Style改為 0–3):現代 ghost-client 風格——近黑冷色底,accent 穿過每個邊緣(header 底線、面板外框、widget 邊框、捲軸全部 accent 染色),整體像有一圈 accent 外光暈(Tenacity 招牌);品牌字改純 accent(非彩虹)。accent 仍吃使用者設定,配 teal/cyan 最對味 - 只動
GuiSkin.java(加tenacity()factory +case 3)與 GUI Style slider 上限 2→3;Panels / Sidebar 兩種版面都套得上
- 新模組 Freecam(Render,預設鍵
P):鏡頭脫離身體自由飛、穿牆偵察。完全 client-side、不送任何封包 → 任何伺服器/AC 都偵測不到FreecamCameraMixin(Camera.setupTAIL):覆寫相機位置;旋轉沿用玩家視角,所以滑鼠照樣瞄 freecam(javap 確認setup(Level, Entity, boolean, boolean, float)/setPosition(double,double,double))ClientInputMixin(ClientInput.tickTAIL):啟用時清空移動輸入(keyPresses=Input.EMPTY、moveVector=Vec2.ZERO),身體原地凍結、WASD 只開鏡頭FreecamMod.tick()(TickMixin)依看向 yaw 用原始 WASD/SPACE/SHIFT 飛鏡頭;啟用時強制THIRD_PERSON_BACK看得到自己身體、不會有浮空的手Speed滑桿(0.2–5.0 b/t)+ 可綁鍵;接進 Keybinds(toggle/panic)與 ArrayList。啟用狀態刻意不持久化(不想一進遊戲就在脫離鏡頭)。已知限制:相機只能看到身體周圍已載入的區塊
- 新模組 Fly(Movement,預設鍵
V):每 tick 直接setDeltaMovement,看向方向 + 輸入控制(WASD 平移、SPACE 升、左 SHIFT 降),注入點同 BHop 的aiStepHEAD- 為什麼不用
Abilities.flying旗標:survival 伺服器的 abilities 由 server 掌控、會被 resync 蓋掉,所以走 velocity - 中性垂直不會下沉:moveRelative 不動垂直分量、重力只改下一 tick 存量而我們每 tick 覆寫;fallDistance 每 tick 歸零
H Speed/V Speed滑桿(0.2–5.0 b/t)+ 可綁鍵;接進 Keybinds(toggle/save/panic)與 ArrayList- 原版伺服器(
allow-flight=false)請搭 NoFall(AntiKick 或 Always),不然持續飛會被飛行踢
- 為什麼不用
- NoFall 新增
AntiKick(Movement → NoFall →AntiKick,預設開):原版伺服器(allow-flight=false)持續離地 ~80 tick 會踢Flying is not enabled。NoFall 現在追蹤連續離地 tick,在 Smart 模式下每 60 tick 強制補一次onGround=true把伺服器計數器歸零,持續飛/懸停不會被踢。Always 模式本來每 tick 補就免疫;fall-flying(鞘翅)本身豁免不動 - 這不是 anti-cheat bypass——原版沒 AC 可關,只是不去觸發內建的飛行 sanity 檢查
- GCD(KillAura,預設開):把 silent-aim 旋轉吸附到玩家真實滑鼠網格。vanilla 轉視角是
rawDelta × f³ × 8.0 × 0.15(f = 靈敏度×0.6+0.2),所以真人每次旋轉 delta 都是f³ × 1.2的整數倍。mouseGcd()讀玩家當前靈敏度(javap 確認Options.sensitivity()),snapGcd()把瞄準 delta 對齊到該網格,伺服器收到的旋轉量跟真人滑鼠無法區分——破解現代 AC 的 GCD / improbable-rotation 檢查 - CPS Jit(0–5,預設 0):攻擊延遲加 0..n 隨機 tick,避免攻速完美週期(constant-CPS flag)
- NoFall 新增
Mode(ClickGUI → Movement → NoFall →Mode0–1):0 Always:每次sendPosition都把 onGround spoof 成 true(原本行為)1 Smart:只在Entity.fallDistance > 2.0(真的會摔到傷害)時才 spoof,走路/小跳照實送 onGround,把「半空卻 onGround=true」這個現代 anti-cheat 最愛抓的窗口縮到最小
fallDistance是 Entity 的 public double(javap 對 1.21.11 loom jar 確認)
- Style 3 Ring 中央改成渲染目標實體模型(取代原本的 HP% 數字),用 vanilla
InventoryScreen.renderEntityInInventoryFollowsMouse(簽名以 javap 對 1.21.11 loom jar 確認),「滑鼠」釘在環中心讓實體正面朝前 - 包 try/catch:萬一這支 API 在 HUD pass 丟例外,靜默 fallback 回 HP% 文字,HUD 不會 crash。環半徑 16→20 讓頭像看得清
- 這次是整套版面重寫,不是換色。原版面都保留為 0 號且仍是預設,不切就完全不變
- ClickGUI 版面新增獨立維度
Layout(ClickGUI → Client → Theme →Layout),與配色GUI Style正交:0 Panels:原本的 Raven 散落可拖曳面板(不變)1 Sidebar:單一置中視窗——左側分類分頁、中間模組清單(綠點=開關、列其餘=選取)、右側該模組設定。標題列可拖曳、右上x關閉、清單與設定各自獨立捲動。幾何與命中判定完全獨立,但沿用同一份模組資料 / GuiSkin 配色 / slider・toggle・keybind widget,所以 Light / Glass 配色一樣套得上2 Tenacity:圓角視窗 + 分類側欄 + 模組卡片 + pill 開關(滑動動畫)+ 就地展開設定(滑桿帶圓鈕)。完整重做的幾何,非換色(v1.7.25)3 Aurora:iOS 液態玻璃 + 流動極光漸層(掃光、漸層標題列、橫向分頁、極光 pill/滑桿、發光邊框)(v1.7.26)
- TargetHUD 新增
Style 3 Ring(Style範圍變 0–3):環形血量圈、中央顯示 HP%、右側名字 / 血量 / 距離 - rebind 狀態統一成單一
rebindTarget,兩種版面共用按鍵捕捉
- TargetHUD Style 選擇器(ClickGUI → TargetHUD →
Style0–2,預設 0):0 Classic:原本的方框(完全沒變)1 Compact:單行精簡(名字 / 血量 / 距離)+ 底部 2px 血條2 Gradient:較大面板、切角假圓角、紅→綠漸層血條- 三種風格共用同一套目標選擇(aura 鎖定 → 準星 → 最後攻擊者),只差繪製
- ClickGUI 換膚系統(ClickGUI → Client → Theme →
GUI Style0–3,預設 0):0 Dark:原本的 Raven 深色配色(完全還原,無變化)1 Light:淺色面板 + 深色文字,啟用列改平鋪 accent 色2 Glass:高透明 accent 染色玻璃風3 Tenacity:近黑冷色底 + 全域 accent 描邊外光(v1.7.24 加)- 新增
GuiSkin.java集中所有顏色;ClickGuiScreen 每幀依guiStyle解析,開著 GUI 也能即時切換
- 兩個 Style 都預設 0,舊使用者更新後外觀完全不變
- 重構(無行為變化):ArrayList 原本手抄一份 20 個模組的清單,新模組得記得同步。改成直接讀
Keybinds.TOGGLE_ENTRIES(所有有 keybind 的模組)+ 一份只剩 5 項的EXTRAS(無 keybind 的 Hitbox / NoCrash / AutoFish / ElytraGoto / ESP)。往Keybinds.TOGGLES加一行模組就會自動出現在 ArrayList,兩邊不再會漂移。顯示的模組集合與渲染完全不變
- ArrayList(Render):右上角顯示目前開啟的模組清單,依字寬遞減排成階梯狀。可選 Rainbow(垂直彩虹,預設開)或主題 accent 色、可選 BG 背景底(預設開)。掛在
Gui.renderTAIL,狀態跨 session 保存。純 HUD 讀數(TargetHUD / DimCoord)與 ArrayList 自己不列入清單
- VelocityMixin 加說明註解:
LivingEntity.knockback這條只在 SP / client-side 怪攻擊時觸發;多人伺服器走 velocity packet(VelocityPacketMixin,v1.7.5 加的)才是實際路徑。保留此 mixin 供 SP 用,註明別誤刪 - NoSlowMod 補
isActive():與其他模組形狀一致,三個 redirect 改用isActive()(觸發時 player/level 必非 null,等價於isEnabled(),無行為變化) - AutoFish 吞錯改 log 一次:
useItem真的壞掉時印一次 stderr 警告(之前catch(Throwable ignored)完全靜默)
- MaceAura / SpearAura 補齊 Raycast / Skip Inv / Smooth / Max Turn:先前只有 KillAura 有穿牆檢查、隱形過濾、平滑轉頭,現在三個 aura 行為一致(複用
KillAuraMod.canSee/smoothRotation,可在 ClickGUI 個別開關)。Spear 想吃滿傷可關 Smooth - TargetHUD 最後攻擊者 fallback:沒 aura、準星也沒指人時,改顯示最後打你的怪,整場戰鬥面板不消失
- NameTag 獨立顏色:新增
Theme Col開關(預設開=跟隨 ClickGUI 主題色)+ 關掉後可用獨立 R/G/B,NameTag 與 ClickGUI 可不同色 - 重構(無行為變化):TickMixin 15 個手寫
prevXtoggle 樣板抽成資料驅動的Keybinds表(加模組只要一行);三 aura 重複的陣營過濾抽成AuraTargeting.factionAllowed
- AutoTotem(Combat,預設鍵
O):自動把不死圖騰補進副手,圖騰爆掉後下一 tick 立即補回。只在沒開任何容器介面時動作,走 vanilla 同一條handleInventoryMouseClickPICKUP 鏈(用InventoryMenu.SHIELD_SLOT),伺服器端看到的是正常的拿取動作。狀態跨 session 保存 - Panic key(Client,預設鍵
DELETE):一鍵關閉所有會影響玩法的模組(KillAura/Mace/Spear/Crit/Scaffold/Timer/BHop/Step/Velocity/FastPlace/NoSlow/AutoTotem/ElytraGoto/AutoFish/NoCrash/NoFall),瞬間切回 legit - TargetHUD 準星 fallback:沒有任何 aura 在運作時,改顯示準星指向的生物,HUD 單獨使用也有意義
- 兩個新鍵都可在 ClickGUI 重綁(Combat → AutoTotem、Client → Panic)
- ESP Hitbox 盒子改為 always-on-top(穿牆):v1.7.6 把盒子搬到 vanilla gizmo 管線後,盒子變成有深度測試 → 被地形擋住看不到(標籤是 2D HUD 仍穿牆,所以出現「有名牌沒盒子」)。
Gizmos.cuboid(...)接上setAlwaysOnTop()關閉深度測試,恢復標準 ESP 穿牆行為
- ESP 改為 Hitbox-only,清死碼:先前
Corners/Outline/Filled三種樣式選不到(啟動時espStyle被硬寫成 Hitbox、ClickGUI 也沒選擇器),等同死碼。承認 v1.7.6 gizmo 方向,砍掉drawFilled/drawOutline/drawCorners、死欄位espStyle、ESPMod.style概念與啟動的強制覆寫 - ESP 揭露隱形實體:移除 ESPGizmoMixin 的
isInvisible過濾。先前隱形怪「沒盒子卻有浮空名牌」的不一致已消除,現在盒子+標籤都會顯示隱形/潛行目標 - ESP Glow 獨立開關(預設關):先前只要 ESP 開著,所有目標都吃 vanilla 發光描邊且無法關。改成 ClickGUI 的
Glow開關,預設關,盒子與發光解耦 - NameTag 距離上限:新增
MaxDist滑桿(預設 64m,16–128 可調),比照 ESP 剔除遠處名牌,人多場景不再無上限渲染 - 小整理:
ESPMod.colorFor(Entity)沒用到的參數移除 →color()
- MaceAura / SpearAura reach 修正:原本用
player.distanceTo()(中心對中心),高個 / 在空中的怪會 ghost swing。改用 KillAura 既有的reachDistSq(眼睛 → hitbox 最近點),跟 server 的攻擊距離判定一致。Mace 走平方比較,Spear 因有 sweet-spot 內插改取sqrt(reachDistSq) - Scaffold 移除反射:
Inventory.selected反射欄位改用本 build 確認存在的 publicgetSelectedSlot()/setSelectedSlot(int);onDisable改Minecraft.rightClickDelay的反射也拿掉,改設旗標讓已@Shadow該欄位的TickMixin重置 - GLFW 反射快取:
ModConfig.keyName原本每次(ClickGUI 每幀每個 KeyS widget)都掃一遍GLFW.class.getFields()。改成一次性建好 code↔name 雙向表查表;ChatMixin.resolveKey也改走ModConfig.keyCode - NoFallMixin:修掉一行解碼錯的亂碼注釋
- Panel:四角各 shave 1 px 做假圓角;頂部一條 accent 漸層 stripe,從中央滿 alpha 線性 fade 到兩側 45% — 不用 alpha-blend 對角線就有「軟高光」感
- 底部 1 px 深色帶:增加深度錯覺
- Header:name 加 drop shadow;右側顯示距離(
5.3m)灰字 - Stat row:HP text(依血量比例調色)+ 護甲值(
⛨ 8,淡藍色),左右分佈 - HP bar:4 px 高,紅 → 橘 → 綠漸層色(不是離散 3 段),頂部 1 px highlight stripe 加形狀感
- Equipment row:armor 4 格 + hands 2 格中間加細隔線;每格本身也加 top highlight + bottom shadow inset
- 最小寬度 64 px,短名字面板不會擠
- 排版用累積式 cursorY,每段獨立決定 row gap,整體間距更鬆但不浪費
- Bug:v1.7.5 的 Hitbox style 還是 2D HUD 投影畫的,跟 vanilla F3+B 看起來像但不會「黏」在實體上 — 因為:
- HUD pass 在 world pass 之後跑,camera snapshot 不一樣
projectPointToScreen內部用getFov(cam, 0f, true)→ partialTick=0- 實體位置用 current partialTick
- 三個誤差疊起來變成可見的浮動 / swim
- 修法:新增
ESPGizmoMixin,@InjectDebugRenderer.emitGizmos的 TAIL,把 ESP 目標的 render-interpolated AABB 用Gizmos.cuboid(aabb, GizmoStyle.stroke(color))丟進 vanilla 的collectedGizmoscollector- LevelRenderer 包了
Gizmos.withCollector(...)scope,所以我們的 cuboid 跟 F3+B hitbox 落在同一個 collector,同一個 world render pass,同一組矩陣 - 結果:ESP box 跟 vanilla F3+B 完全同步,frame-perfect smooth
- LevelRenderer 包了
- ESPRenderer 的 HITBOX case 改成 no-op(box 由 gizmo 畫),但 Name / HP / Distance / Tracer 標籤還是走 HUD pass
- 撤掉 v1.7.5 的 eye-forward 藍線(使用者要求)
- Filled / Outline / Corners 三個 style 維持 HUD-based 不動(gizmo 適合 wireframe,不適合 filled overlay)
- Velocity bug:開 0 / 0 還是會被擊退
- 根因:mp 上 KB 是 server 跑
LivingEntity.knockback(),然後送ClientboundSetEntityMotionPacket給 client,client 直接entity.lerpMotion(packet.getMovement())套用。完全繞過LivingEntity.knockback()→ 舊 VelocityMixin 永遠不會被觸發 - 修法:新增
VelocityPacketMixin,@RedirecthandleSetEntityMotion裡的lerpMotion(Vec3)呼叫,目標是 local player 時把 motion 用 horizontal / vertical 比例縮放後再套 - 舊 VelocityMixin 保留(攻擊本機 mob 的 server-side 路徑還是會用到)
- 根因:mp 上 KB 是 server 跑
- ESP 改成 vanilla F3+B 風格
- 預設色改成白色(255/255/255),跟 vanilla F3+B 一致
- Hitbox style 加上 eye-forward 藍線:從目標 eye position 沿 viewVector 拉 2 格的 0xFF55AAFF 線,跟 vanilla F3+B 那條藍線一模一樣
- Style 預設仍是 HITBOX(NoFallMod 強制鎖定)
- 新模組 TargetHUD(分類 RENDER)
- 上方中央面板,顯示當前 KillAura / MaceAura / SpearAura 鎖定目標的:名稱 + 距離(同行左右)/ HP 條 / HP 文字
- 三個模組任一啟用且有
glowTarget就會顯示,沒有就隱藏 - 配色吃 Theme accent + bgAlpha
- ClickGUI 加上 TargetHUD toggle、
targetHudEnabled持久化到 config
- Bug:v1.7.3 的手算投影(camera-relative + invRot.conjugate + perspective matrix m00/m11)數學上看似對,實際在這 Lunar 1.21.11 build 完全顯示不出來。猜測是 camera rotation 或 projection matrix 的 conventions 跟 upstream Yarn 1.21 不完全一致
- 修法:放棄自己算矩陣,直接呼叫
mc.gameRenderer.projectPointToScreen(Vec3)— 這是 vanilla 自己給TrackedWaypoint.Projector用的 API,跟 world render 用的是同一條矩陣,conventions 一定對得上 - 回傳 NDC
(x ∈ [-1,1], y ∈ [-1,1], z = depth)→ 自己 map 到 GUI-scaled 像素:sx = (ndc.x+1) * 0.5 * viewW,sy = (1-ndc.y) * 0.5 * viewH - 背面偵測:NDC 自己看不出來「在相機後面」(perspective divide 會把符號翻過來給出貌似合理的 screen coord)→ 改用
(target - camPos) · camera.forwardVector()算前進距離,<0.05 格就 reject - AABB 近平面 clipping 改在 world space 做:8 角各自存 forward-distance,跨面的邊用 lerp
t = (fFront - NEAR) / (fFront - fBack)算 world-space 切點,再投影 - ESPRenderer / NameTagRenderer 完全沒改 — public API(
Frame / projectPoint / projectAabb / ScreenAabb)一致
- 新增
Projection.java:world→screen 投影集中到一個工具類,Frame snapshot + projectPoint + projectAabb 三個入口;AABB 投影內建 12 邊 near-plane clipping,回傳ScreenAabb(2D bounding rect + per-edge 線段 + valid mask),ESP / NameTag 共用 - ESPRenderer 重寫:
- 投影 / clipping 完全外包給
Projection,render loop 只做「filter → projectAabb → reject → 畫框 → 畫附件」 - 四個 style 各自獨立 method(
drawHitbox / drawFilled / drawOutline / drawCorners),不再共用一條 fall-through 邏輯 - Tracer 起點改成準星(畫面中央)而不是畫面底部中央,原本拉線到頭都歪掉
- 拆掉舊的
OUT_AX/OUT_AY/OUT_BX/OUT_BYstatic globals
- 投影 / clipping 完全外包給
- NameTagRenderer 重寫:
- 同樣外包投影給
Projection.projectPoint,不再自己手算1/-z - 距離縮放新公式
clamp(10/max(5,dist), 0.5, 1.2):近距離(≤8 格)不再爆大,遠距離(20+ 格)保留 0.5× 可讀性 - Layout 拆成
drawTag / drawBorder / drawSlot三個 method,header / hp bar / icon row 各自獨立 cursor - 移除 NameTagRenderer 自己的
NEAR_Z重複定義,統一吃Projection.NEAR_Z
- 同樣外包投影給
- 視覺等價(除了 Tracer 起點改變),純架構整理
- NameTag 跟 ESP 同個病:
projectPoint()用rel.z >= -0.05當門檻 → 近距離1/-z爆炸,tag 飛到天邊或不顯示 - NameTag 改用
NEAR_Z = -0.5(比 ESP 嚴格,nametag 在 0.5 格內顯示也沒意義) - 投影輸出加 ±100000 clamp
- Bug:站在實體附近 / 實體 AABB 跨越相機平面時,部分角的
rel.z接近 0,投影1/-z爆炸 → 螢幕被巨大綠線塞滿 - 修法:對每條邊單獨做 near-plane clipping
- 兩端都在前 → 直接投影
- 兩端都在後 → 跳過整條邊
- 一前一後 → 算邊跟
z = NEAR_Z (-0.1)平面的交點,用交點當端點
- 2D 樣式的 bounding rect 改成 clip 後 12 邊端點的 min/max(不是角點的 min/max),確保跨越相機平面的盒子也有合理的 2D 框
- projectX/Y 加 ±100000 clamp:即便
-rel.z = 0.1還是會放大 10×,clamp 防止整數溢位 - 新增
e.isAlive()過濾,跳過死掉的實體 - 移除過時的
int[] XS/YS + boolean[] VISscratch(不再需要每角獨立可見性) - 邊處理單一 loop:clip → project → 更新 bounds → 順便畫 hitbox edge,省一次遍歷
- 設定面四個分區:Targets / Box / Labels / Color
- 去掉 Red / Green / Blue 三個獨立滑桿 + Chroma boolean → 改成單一 Hue 滑桿(0–360°,HSV saturation=1, value=1)+ ColorMd 選擇器
- ColorMd(0–2):
0 Single:所有實體用 Hue 滑桿的顏色1 Category:玩家紅 / 敵對橘 / 動物綠 / 物品黃,固定 hue2 Chroma:色相按時間循環,速度看 ChrSpd
ESPMod.colorFor(Entity)統一出口,render loop 每實體現算- 舊 config 欄位
espBoxR/G/B/espChroma移除,Gson 自動忽略殘留 JSON
- 新增 Chroma 開關(ClickGUI ESP):開啟後 box / name / hp 顏色按 hue 自動循環,現有 Red/Green/Blue 滑桿被忽略
- ChrSpd 滑桿:色相循環速度(0.1–3.0 圈/秒),預設 0.5
- 實作:
ESPMod.boxColor()在 chroma 模式下用System.currentTimeMillis()× speed 算 hue,丟給java.awt.Color.HSBtoRGB
- 改從
GameRenderer.getProjectionMatrix(partialTick)抽m00 / m11,等於1/(tanHalfFov*aspect)跟1/tanHalfFov - 以前讀
mc.options.fov()(玩家設定的 base FOV),zoom mod 是修改渲染時的 effective FOV,沒抓到 → ESP 框 + NameTag 都會偏移 / 大小不對 - 改用渲染矩陣後,任何走
getProjectionMatrix的 FOV 改動(OptiFine zoom、Lunar 內建 zoom、Sodium 系 zoom)都自動吃到 partialTick從mc.getDeltaTracker().getGameTimeDeltaPartialTick(true)拿,跟世界渲染同步- NameTagRenderer 同步修一樣的 bug
- 線繪製改用旋轉 quad:一條對角線從 N 個
g.fill(每像素一個 quad)改成 1 個 fill — 用Matrix3x2fStack.translate + rotate把長度 × thick 的軸對齊長方形旋轉到目標角度。Hitbox 樣式重度受益(12 邊 × 多實體 × N 像素 → 12 個 fill / 實體) - 軸對齊 fast path:dx=0 或 dy=0 的線直接用單一
g.fill,跳過 atan2 / 矩陣 - scratch buffer:每實體 8 個
new int[2]+ 1 個 bounding rectnew int[]→ 改成static int[8] XS/YS + boolean[8] VIS + int[4] BOUNDS_OUT,render 是 single-thread 安全 - 重用 Vector3f:投影 8 個角從 8 個 Vector3f allocation → 1 個 static REL.set()
- 去掉
String.format:距離文字從String.format("%.0fm", dist)→(int) dist + "m",少一次 formatter 機制 - HpBar 邊界 clamp:實體靠近螢幕左邊時
barX1 < 0直接跳過,不畫到螢幕外 - 視覺零變化,純效能
- Style slider 新增
3 = Hitbox:實體 AABB 完整 12 條邊線框,跟 vanilla F3+B 一樣的視覺 - 新預設值改為 Hitbox
- 投影流程改成「8 個角各自存 (sx, sy)」,2D 樣式仍從這 8 點算 min/max bounding rect,效能等價
- 12 邊用 Bresenham 畫;endpoint 同側螢幕外 cheap-reject,避免畫到螢幕外
- Tracer 也改用同一條 Bresenham,支援 Thick 滑桿粗細
- 任一 endpoint 在相機後 (
rel.z >= -0.05) 的 edge 直接跳過(無 near-plane clipping)
- 三種 box style(Slider 切換):
0 = Corners(預設):四角 L 型括號,依框大小自動縮短長度1 = Outline:完整外框2 = Filled:半透明填充 + 外框
- Line Thickness 滑桿(1–3 px):外框 / 角線粗細統一控制
- Name:實體名稱黑底白字置中顯示在 box 上方
- HP:LivingEntity 左側 3px 垂直血量條,紅 / 橘 / 綠依比例
- Distance:box 下方顯示
%.0fm,灰字 - Tracer:從畫面底部中央拉一條 Bresenham 線到 box 底部中央
- MaxDist 滑桿(16–200 格):用平方距離預先 cull,省掉超出範圍實體的 8 點投影
- 新效能 guard:
- 投影後框 < 4 px → 跳過(畫不出細節)
- 整個 box 完全在螢幕外 → 跳過
- 8 個角至少 2 個在相機前才畫(避免邊緣情況奇怪 box)
- 沿用 ESPRenderer 原本的
Camera.position()+rotation().conjugate()投影流程
- 新增 NameTag(預設
Y,分類 RENDER):在目標頭頂繪製資訊面板- 第一行:實體名稱 + HP 文字(
14/20,含吸收+4顯示)+ 護甲值[8] - 第二行:HP 條,紅→橘→綠依比例上色
- 第三行:六格裝備圖示(頭/胸/腿/腳/主手/副手),含 vanilla 耐久條
- 第一行:實體名稱 + HP 文字(
- 設定:Players / Hostile / Animals 目標、Armor / Hands / Durability / HP Bar / HP Text 五個顯示開關、Scale 滑桿(60–160%)、Key 綁定
- 距離自動縮放:8 格以內最大,越遠 tag 越小(clamp 0.6–1.4)
- 螢幕背後 / 過近實體自動隱藏(rel.z >= -0.05f reject)
- 用
Matrix3x2fStackpush/scale/translate 而不是手動算座標,避免在不同 GUI scale 下偏移 - 沿用 ESPRenderer 的 camera 投影流程(
Camera.position()+Camera.rotation().conjugate())
- ClickGUI 完全重寫:從 Faiths client 移植 Discord 風格三面板佈局
- 左側欄:分類按鈕 + Discord 風格 pill indicator(懸停 / 選中有白條)
- 中間:模組列表,
#前綴 + 綠色側邊條顯示啟用狀態,›箭頭表示有子設定 - 右側:設定面板,滑桿 / 開關 / 按鍵綁定;模組名稱 + ON/OFF 切換按鈕在頂部
- 深色 Discord 配色(#1E1F22 / #2B2D31 / #313338)
- 左鍵選模組顯示設定、右鍵直接切換開關
- 可拖曳視窗 + 滾輪捲動
- ESP 新增 2D overlay:從 Faiths PlayerESP 移植
- Name Tag:實體名稱置中顯示在頭頂,黑底白字
- Health Bar:左側垂直血量條,紅→綠漸層 + 受傷時顯示數值
- Corner Box:四角框風格(取代完整矩形),帶黑邊描邊
- 所有 overlay 走 AABB 8 角投影到螢幕座標,跟 Show Box wireframe 共用投影邏輯
- 從 v1.6.21 的 2D 矩形升級成「投影 8 個角 + 畫 12 條邊」的 3D 線框,外觀跟 vanilla F3+B 一樣
- AABB 8 個角各自做 perspective projection → 螢幕座標,再對 12 條邊 (
EDGES表) 跑 Bresenham 1px line - 角落在 camera 後方的標記
Integer.MIN_VALUE,畫線時對應的邊整條 skip — 走進實體裡某些邊會少,但正常觀看距離下完整線框照畫 - 預設顏色從 cyan 改成 lime green (
0xFF80FF40) 符合 F3+B 配色 - 早退機制:兩端點都在同一螢幕邊外的邊直接 skip;單邊長 > 4000 px hard cap 避免一條失控的邊拖垮整個 frame
- 效能:12 邊 × ~100 px × N entity,typical ~10 entities 在 60fps 沒問題;大量實體場景可能會卡(用 GuiGraphics.fill 而不是 native GL line batch 的代價)
- Hitbox 三開關:
Players/Hostile/Animals(取代原本的Players Only反向開關),跟 KillAura / ESP 同一套介面。預設全開 - ESP 新增 Show Box:開啟後在每個 ESP 目標的螢幕投影位置畫 2D 矩形外框
- 投影邏輯:取
entity.getBoundingBox()8 個角,用 camera 反向四元數 + perspective projection 換算到 GUI 座標,找 min/max 圍成矩形 - 自動跟著 HitboxMod 大小變化 — 因為
getBoundingBox()就是 HitboxMixin mixin 的回傳,所以 HitboxMod 拉大 expand 滑桿時 ESP 框跟著變大 - 跟現有 glow ESP 獨立 — 兩個都可同時開、或只開一個
- 用 2D 而不是 3D wireframe 是因為 1.21.11 新 framegraph render pipeline 比較難 mixin;2D overlay 走 HudMixin 已驗證的渲染路徑
- 投影邏輯:取
- 顏色預設 cyan (
0xFF00E5FF),可在<config>/valencia.json改espBoxColor
hitboxPlayersOnly預設true → false:新安裝直接放大玩家 + mob + 動物,伺服器 PvE 也受益- 舊安裝者要更新行為:ClickGUI → Hitbox → 把 Players Only 那欄關掉(或刪掉
<config>/valencia.json重置) - 純 PvP 想最小化 mob AI 副作用的話手動把 Players Only 打開即可
- vanilla 近戰 pick 是
ProjectileUtil.getEntityHitResult(..., entity.getBoundingBox().inflate(pickRadius), ...)— 命中體積等於 entity bounding box + pickRadius,放大 bbox 等於放大命中區 - mixin 進
Entity.getBoundingBox()的 RETURN,把回傳的 AABB.inflate(expand),預設 0.3(每側 +0.3 格 ≈ 玩家箱子變兩倍寬) - 跳過本機玩家自己(不然會搞壞自身碰撞 / 鏡頭)
- 預設「Players Only」=true,只放大玩家(PvP 用),mob 不動避免影響 AI 尋路 / 渲染
- server 端注意:1.20+ vanilla server 會驗證玩家視角是否真的對到「真實」hitbox。放大太多(≥ 0.5)會被當作 hitbox cheat flag 掉,建議 0.2–0.4
- 對 SpearAura 影響有限:silent-aim 直接送
attack(target)不靠視線 raycast;這個主要幫手動瞄準近戰邊緣擦到也算命中
- SpearAura Max Reach 滑桿上限 8 → 12:單機 / 朋友自架(無 anti-cheat)可以拉到 vanilla server 接受的上限以上試。主流伺服器(Hypixel 等)attack distance 是 server 驗證的,超過 spear 原生 reach 一樣會被 reject
- 新模組 NoCrash:解 vanilla 鞘翅
flyIntoWall動能傷害- vanilla 算法:
change = previousSpeed - currentSpeed,change > 0.2時送(int)(change * 10)半心傷害,server-authoritative,純改 client 血量無效 - 策略:飛行中每 tick 朝速度方向 raycast
lookahead格(預設 4),偵測到 solid block 就把setDeltaMovement的水平分量 clamp 到maxSpeed(預設 0.4 b/t) - 因為減速發生在 collision tick 之前,server 看到的是平滑減速不是高速撞擊,
change始終 < 0.2 就不觸發 damage code path - ClickGUI 兩個滑桿:Look Ahead(2–10 格)、Max Speed(0.1–1.0 b/t)。對手動飛 + ElytraGoto 自動駕駛都生效
- vanilla 算法:
- 新模組 SpearAura(預設
U)— 為 Mounts of Mayhem 更新加入的 Spear 武器設計 - 三種攻擊模式(ClickGUI 滑桿切換):
- Jab:短按攻擊,silent aim 對準身體中心後送一發
mc.gameMode.attack(),等同 MaceAura 但用 Spear 的傷害公式 - Charge:自動
keyAttack.setDown(true)蓄力 N ticks 後 release,期間每 tick 重新 silent aim 跟住會跑的目標 - Auto:騎馬 / 移動速度 > 0.15 blocks/tick 自動切 Charge,否則 Jab。讓 PvE 圈怪 + PvP 騎馬衝擊用同一個鍵
- Jab:短按攻擊,silent aim 對準身體中心後送一發
- Spear 專屬機制處理:
- 使用
ItemTags.SPEARS判斷手持,七種材質(wooden..netherite)都認得 - 目標篩選照 sweet spot 距離(
(MIN+MAX)/2)打分,太近的目標扣 100 分,不會鎖一個壓在臉上根本戳不到的怪 - Min Reach(預設 1.6):Spear 在這距離內傷害是 0,模組偵測到目標太近就不送 attack 浪費 swing
- Auto Step Back:太近時自動按 S 拉開距離回到 sweet spot,可在 ClickGUI 關掉
- 使用
- Silent aim 對準身體中心(
y + bbHeight * 0.5,不是頭部也不是腳)— wiki 說 view angle 是傷害係數之一,crosshair 對 centroid 時傷害最高 - 不主動觸發 Lunge 附魔(會耗飢餓);vanilla 自己看玩家有沒有 Lunge 附魔處理
.nf goto <x> [y] <z>維持原本「當前維度座標」行為- 新增
.nf goto ow <x> [y] <z>:宣告這組是主世界座標,在地獄會自動 ÷8 飛到對應的下界點;蓋傳送門出來就會落在原本指定的主世界座標附近 - 新增
.nf goto nether <x> [y] <z>:反向,在主世界自動 ×8。簡寫o/n也支援 - Y 不換算(vanilla 傳送門 Y 是 1:1),只縮放 XZ
- 換算完才呼叫
setTarget(),所以inWrongDimension暫停邏輯不受影響:過傳送門切維度後仍會暫停(這時繼續飛沒意義) - 動作列顯示
(OW→Nether ÷8)/(Nether→OW ×8)註記讓使用者確認實際飛的座標
- CritHit:原本只在 client-side 設
fallDistance = 1.0f,server 端完全看不到 → 永遠不會判 crit。從 bytecode 抽Player.canCriticalAttack():要fallDistance > 0 && !onGround && !sprinting && !水/梯子/載具 && target 是 LivingEntity && 攻擊冷卻 > 0.9。新寫法:攻擊 HEAD 觸發時,地上 + 冷卻滿 + 非 sprint 時送三發ServerboundMovePlayerPacket.Pos(onGround=false)mini-hop,server 端fallDistance變正、onGround變 false → server-side crit 條件達成。視覺上 client 完全不動。Sprint 中不觸發(hypixel watchdog 對 sprint + crit 會抓),要 crit 就先放 sprint - Scaffold tower:關掉模組後一段時間打不到方塊 — root cause 是 tower mode 每 tick
setDeltaMovement(0, towerSpeed+0.08, 0),user disable 時 player 上升慣性還沒消失,繼續飛幾 tick → 期間 hitResult=null(看天空),每次按左鍵Minecraft.startAttack偵測到後設missTime=10,累積成「破壞不了一段時間」。修法:disable 時殺掉殘留的上升動量(v.y > 0 設成 0),順便 resetplaceTimer+Minecraft.rightClickDelay防其他狀態 stuck
- v1.6.13 改對了 class 名稱(Identifier),但
blit9-arg 簽名其實是(Identifier, x1, y1, x2, y2, u1, u2, v1, v2)— 角座標 + normalize UV,不是(x, y, w, h, u, v, uW, vH)+ pixel UV - 從 loom jar 的 bytecode 確認:9-arg blit 內部呼叫
innerBlit(pipeline, id, x1, x2, y1, y2, ...),且 UV 是 0..1 normalize - 原本傳的等於繪一個零寬度切片到鬼地方所以看不見,也不會 throw
- 從 loom 抽出的 1.21.11 MC jar 確認三個關鍵差異:
- 在這個 Lunar build 裡
net.minecraft.resources.ResourceLocation實際叫Identifier(Yarn 名稱) DynamicTexture(NativeImage)constructor 不存在,要用DynamicTexture(Supplier<String>, NativeImage)GuiGraphics.blit的 9-arg 簽名是(Identifier, int, int, int, int, float, float, float, float)— 跟我假設的 1.21 標準簽名不同
- 在這個 Lunar build 裡
- 整個 waifu 載入改用直接 import(不再反射),同時加
waifuErr顯示實際錯誤訊息 - 之前的「不會讀到」就是
Class.forName("ResourceLocation")直接 throw → 被 catch 吞掉 → silent fail
- 使用者報告手動完全沒拒收問題(一跳一發就成功),但模組怎麼樣都被拒
- 真因:vanilla 的展翅檢查包含
getDeltaMovement().y < 0(要正在下落才送 deploy),但 v1.6.6 拿掉這個守衛後,模組在玩家剛跳起來向上飛時就送 START_FALL_FLYING。server 那邊位置還沒同步到「離地」,看onGround=true直接拒絕 deploy → 後續所有 useItem 全被拒 - 修法:恢復
y < -0.04守衛 — 等玩家確實在下落才送 deploy packet。短跳場景用「6 ticks (~300ms) airborne 強制 deploy」作為 fallback 不會卡死
- 使用者實測:模組明顯比手動慢,因為 unconfirmed 期間我每 10 ticks (500ms) 才重試 = 2 次/秒,而手動 mash 右鍵約 5 次/秒(甚至開 FastPlace 後可達 20 次/秒)
- 拉到每 2 ticks (100ms) 重試 = 10 次/秒,比手動還快,幾乎立刻跨過 sync gap
- 平滑旋轉:yaw 限制 12°/tick、pitch 限制 10°/tick,視角不再瞬間 snap(之前轉得太極限)
- 自動降落:到達 XZ 8m 內後不會馬上 stop,繼續引導下降直到觸地或 vanilla 自動收翅;高於目標 Y 就 pitch +15° 下降,到目標 Y 附近就 level out
- 同步 gap 連發:使用者實測手動「前幾發拒收,之後正常」確認是 sync gap。第一次成功消耗火箭前每 10 ticks (~500ms) 重試一次;確認成功後切回正常 50-tick 節奏
- 截圖確認 v1.6.8 跑得正確(嘗試=3)但煙火 128 完全沒減 → 證實 server 在 silent reject useItem
- 動作列改顯示
消耗 N/嘗試 M,消耗=0 + 嘗試>2 時直接顯示「伺服器拒收」紅字 - 自動觸發 START_FALL_FLYING 重發(最多 3 次)— 若是 client/server fall-flying 不同步造成的拒收,重發可以救
- 若伺服器是真的禁飛(plugin 或 anti-cheat),請手動拿火箭右鍵測試。手動也不能 boost 就是伺服器限制,模組無解
- v1.6.2 加的「穿著鞘翅就 skip 自動跳」守衛太嚴格。實際上前面那行
if (!moving || jumping) return;已經處理掉了「玩家按住 SPACE」的狀況(jumping就是 vanilla 的 input.jumping),所以額外擋 elytra 是多餘的 - 拿掉後 BHop + 穿鞘翅可以正常自動跳了;死亡迴圈只在你「真的按住 SPACE」時才會發生(這是 vanilla 機制,無解 — 不按 SPACE 就沒事)
- 加
!onGround()守衛:截圖看到 client 顯示 flying 狀態但實際在地上跑 6.3 m/s — 表示isFallFlying卡在 true。這時送的 useItem 包到 server 是 silent no-op,火箭不消耗也不 boost。改成只信「真的在飛」(isFallFlying() && !p.onGround()) - 動作列加診斷計數器:
煙火 80 /嘗試 12— 嘗試數會升但煙火數沒降代表 server silent reject(多半是 sync 問題或伺服器禁飛) - 動作列加版本號 v1.6.7:方便從截圖判斷你跑的是哪一版(Lunar Client 必須完全重啟才會載入新 jar)
- 真.真.真的修好不發煙火:之前用 direct
ServerboundUseItemPacket但這個 Lunar build 沒有suggestedSequence方法,sequence 永遠 0 可能造成伺服器忽略 - 改回走
mc.gameMode.useItem但把mc.hitResult暫時清成 null,強制走useItemFromInventory路徑(不會被「啊你在看方塊」誤判成「在方塊上放置火箭」) - 展翅成功後 cooldown 設 10 ticks (~500ms),讓伺服器有時間先把
isFallFlying同步到 server-side,第一發useItem才不會在 server.isFallFlying=false 時 silent no-op
- A. 真正修好不發煙火:原本走
mc.gameMode.useItem,當 autopilot 把 pitch 拉到 +20° 俯衝時 hitResult 是 BLOCK,火箭被誤判成「放置物品」放到下方方塊上 → 改成直接送ServerboundUseItemPacket強制走「空中使用」路徑 - B. 5 條 raycast 改成下傾 10°:原本 Y 分量 0 純水平掃描,俯衝時看不到斜下方山壁
- C. groundDanger + ceilingDanger 同時觸發改成 level out:地獄夾層裡不會再撞天花板
- D. 高度地板永遠生效:原本只在 horizDist > 80 才啟用,短程飛行直接撞地
- E. 展翅失敗偵測:耐久=0 / 水裡 / levitation 效果造成的展翅失敗,2 秒後動作列會清楚顯示
elytra 展不開 — 檢查耐久… - F. pitch 表改成 target Y 感知:用
atan2(-dy, horizDist)算理想角度 + 5° 安全裕度,目標跟你同高度時不會再俯衝撞地
- 真正的原因找到了:原本
forwardDanger一觸發就 skip rocket,但低空跳下時前方 15m 內必有地形 → 永遠 skip → 慢慢掉 - 而且 forwardDanger 時 pitch 已經被 override 成 -28°/-40°(拉起來逃)— 這時候就是需要 rocket 推力才爬得上去
- 拿掉所有 rocket gate(除最後 20m 接近目標時不發以免撞太大力),cooldown 從 60 → 50 tick
- 真正修好不發煙火:原本只認主手/副手裡的煙火,現在會掃熱鍵欄 9 格,找到後自動切到那格再發射(Inventory.selected 是 private,用反射 + setSelectedHotbarSlot 雙路徑寫入)
- 動作列改顯示:
[Goto] <距離>m ETA <秒>s | Y <高度> | 煙火 <剩餘數>— 沒煙火時顯示紅字「無煙火!」 .nf goto stop/setTarget時 resetrocketCooldown = 0,新航程第一發煙火不會被上次的冷卻擋掉
- 修飛海上掉海裡 / 不發煙火:原本 ground check 用
Fluid.ANY把水也當地面危險,飛海上水永遠在腳下 → rocket 永遠被擋 → 高度地板 -10° 爬不過去就掉水- 主世界改成
Fluid.NONE(水不算地面),地獄維持Fluid.ANY(岩漿要算) - Rocket gating 改成只擋 forward danger / landing,ground danger 反而正是要 boost 爬升
- Altitude floor 改 scale 爬升:每低於 safeY 1 格多 -0.5°,最陡到 -30°
- 主世界改成
- 修 BHop + 鞘翅死迴圈:穿鞘翅時 BHop 不再自動跳。原本 BHop 跳 → 空中 + SPACE 按住 → vanilla 自動展翅 → 落地 → 又跳…的循環
- stop 後加提示:聊天告訴你「想走路請先脫掉鞘翅」
- 修正視角會在還沒展翅時就被鎖定的問題 — 現在只有
isFallFlying()為 true 才接管 yaw/pitch - 修正從矮塔跳下展翅不開 — 拿掉
y < 0限制,airborne 第一個 tick 就嘗試tryToStartFallFlying() - 動作列新增三種狀態提示:
waiting — jump off something/deploying elytra…/ 正常飛行 - 註記:vanilla MC 鞘翅展開後只有觸地才會收回,這不是模組的問題;
.nf goto stop只關掉自動駕駛,不會讓你在空中收翅
- 新增 AutoFish:監聽手中釣竿的 bobber
getDeltaMovement().y,垂直速度低於門檻(預設 -0.04)視為魚咬鉤 → 右鍵收竿 → 等 12 ticks 後再右鍵重新拋投。可調 Bite Vy / Recast Delay。 - 新增 ESP:擴充原本 KillAura 的
GlowMixin,全域玩家 / 敵對怪 / 動物 / 掉落物可勾選,被勾的種類會走 vanilla 的 glow outline shader(穿牆顯示輪廓),自己永遠不會發光。
- 新增 DimCoord 模組(Visuals 分類,預設 ON):左上角 HUD 永遠顯示當前座標 + 另一維度的對應座標
- 主世界:
Overworld 1234, 65, -5678/Nether 154, 65, -710 - 地獄:
Nether 154, 65, -710/Overworld 1232, 65, -5680 - F3 debug 畫面或
mc.options.hideGui開啟時自動隱藏
- 主世界:
- 5-ray fan-out forward check (±25° / ±12° / 0°),繞角的山 / 樹冠 / 紅石高塔都會被偵測
- 流體偵測:raycast 改用
Fluid.ANY,岩漿池 / 大水面也算障礙會自動拉起 - Speed-aware lookahead:速度越快看得越遠(lookahead = max(15, speed × 12 ticks)),boost 中也來得及反應
- Altitude floor:主世界 Y < 120 / 地獄 Y < 80 時自動爬升
- 危險時不發煙火:raycast 命中就停 boost,免得火箭把你噴進牆
- 可調 Safe HP slider (2–20 HP):ClickGUI ElytraGoto 展開可調,預設 4 = 2 顆心
- 降落更平滑:30m 內逐段拉平(20°→8°→-2°),不會 elytra 高速摔死
- Dimension lock:在主世界設目標後跨進地獄會自動暫停(保留目標,回到原 dimension 自動恢復),不會傻傻往錯地方飛
- 障礙閃避:raycast 偵測前方 14 格 / 下方 6 格 / 地獄天花板 4 格,撞到山或太靠近地面會自動 pull up(pitch -25° ~ -30°)
- 死亡 / 殘血保護:玩家死亡或 HP ≤ 2 顆心自動關閉,不會繼續發射煙火
- 動作列雙向座標:在主世界顯示「nether x/8」對照,在地獄顯示「overworld x*8」對照(方便決定要不要 portal)
- 新增 ElytraGoto 模組:輸入
.nf goto <x> [y] <z>後自動鎖定 yaw 朝目標、依距離調整 pitch、自動發射主手 / 副手的煙火火箭,動作全是 vanilla 合法所以 anti-cheat 抓不到 - 動作列同步顯示:剩餘距離 / ETA / 當前座標 / 主世界↔下界座標換算(除 8)
- 新增 Timer 模組(預設
T):每 game tick 額外 tick 玩家 N 次,1.0–3.0× 滑桿 - BHop Boost 修復:原本只在 jump 那 tick 套用,搭配 LowHop 會被 ground friction (0.546) 吃光;現改成每個 air tick 都複合,並 cap 在 2.5 防止失控
- KillAura / MaceAura 修復:原本用
instanceof Monster判斷敵對生物,Phantom(FlyingMob)和 Slime(Mob)不繼承 Monster 所以被忽略;改用Enemyinterface 後三類敵對怪都會被偵測(Slime / Phantom / Ghast / Blaze / 末影龍 etc.)
- BHop 新增三個子選項:
- Low Hop:自訂跳躍高度倍率(0.1–1.0),讓 bhop 看起來像在地面滑行
- Boost:每次跳躍把水平速度乘上 1.0–1.5(複合,多跳幾次可衝出高速)
- KB Boost:受擊瞬間把擊退向量旋轉成玩家面向方向,把被打變成往前衝
- Step 修復:改用
Attributes.STEP_HEIGHT(取代 1.20.5+ 移除的maxUpStep),新增高度滑桿 1.0–3.0 - MaceAura 新增 Hostile / Animals / Players 目標篩選(預設 Hostile + Players)
- Waifu 載入修復:原本反射查
blit方法在 Lunar Client classloader 下會失敗,現在以方法名稱掃描取代Class物件比對;fallback 提示也會顯示實際絕對路徑
- 從 NoFall Mod 改名為 Valencia,package 遷移至
com.valencia