粒子探測器
更多操作

粒子探測器(Mess Detector),是一台通過一系列紅石裝置測量 TNT 點燃跳起時的隨機角度,進而反向計算 Minecraft 內 `Math.random()` 種子碼的超級電腦。
此機器可用於預測 Minecraft 內幾乎所有隨機事件。
此機器擁有 100% 的預測正確率。該機器極度敏感,只要有一名玩家在世界任何維度的任何角落吃下食物並產生碎屑粒子,機器就能檢測到該行為!
起因 編輯 編輯原始碼
粒子探測器的誕生是為了建造 Minecraft 中效率最高的終界龍經驗值農場。由於玩家每秒最多只能吸收 10 顆經驗球,而終界龍死亡時會掉落大量經驗球(其中包含兩顆極大的經驗球)。為了從中篩選出這兩顆大球並優化吸收順序,開發者建造了這台探測器來預測掉落規律,確保玩家始終優先吸取最高價值的經驗球。
Math.random 調用清單 編輯 編輯原始碼
在 Minecraft 中,許多行為都會調用 `Math.random()`。了解這些調用點對於追蹤隨機種子至關重要。以下是主要的調用清單:
- 生物生成: 玩家、怪物、盔甲架的自然生成、加載或維度傳送(每次 3 次調用)。
- 擊退計算: 實體受到攻擊時的擊退方向(調用次數不固定)。
- 粒子效果: 物品損壞粒子(5 次)、食用食物粒子(次數不固定,完整吃完一個食物約 46 次)。
- 實體創建: 物品實體(4 次)、經驗球實體(4 次)。
- TNT 隨機角度: TNT 點燃時的跳起角度(1 次,本機器的主要偵測對象)。
- 方塊互動: 液體混合產生石頭/鵝卵石(16 次)、在終界嘗試用水桶放水(24 次)。
- 其他: 從熔爐取出物品獲取經驗(當平均值在 0 到 1 之間時調用 1 次)、刷怪算法中的群組大小(1 次)。
內部結構 編輯 編輯原始碼
機器由複雜的紅石電路組成,模擬了 48 位元的數學運算:
- 48-bit 乘法器與加法器: 用於執行 LCG 公式運算。
- 7 個 8-bit 記憶體: 存儲連續偵測到的角度數據。
- TNT 角度偵測陣列: 包含 692 個精確排列的偵測器。
- 格點還原電路: 執行線性代數逆運算與格點縮減邏輯。
- 十六進位轉十進位轉換器: 將計算結果輸出為人類可讀的種子碼。
破解原理 編輯 編輯原始碼
Minecraft 的隨機數生成器(RNG)基於 Java 的線性同餘生成器(LCG):
其中 ,,。
LCG 的弱點 編輯 編輯原始碼
1. 低位比特重複性: 雖然 Java 只輸出高 32 位元,但低位位元的週期性極強。 2. 格點結構(Lattice Structure): 如果將連續的隨機數調用視為多維空間中的坐標,它們會排列成極其規整的網格(格點),而非真正的隨機分佈。這台機器正是利用這一點,將隨機種子破解問題轉化為向量空間中的幾何搜尋問題。
格點理論與 LLL 演算法 編輯 編輯原始碼
當我們獲得 7 個連續(或已知間隔)的 TNT 角度時,我們實際上是在 7 維空間中定位一個點。
- 基底向量: 透過線性變換,我們可以建立一組描述該格點的基底向量。
- LLL 縮減(LLL Reduction): 原始的基底向量可能非常傾斜且難以計算。機器模擬了 LLL 演算法(或預先計算好的縮減矩陣),將基底轉換為接近正交的向量。
- 逆矩陣運算: 透過應用逆線性變換,機器能將偵測到的角度範圍(一個 7 維超立方體)映射回整數格點空間,從而精確鎖定唯一的 48 位元種子。
實踐:TNT 角度偵測 編輯 編輯原始碼
機器在半徑 120 格的圓周上佈置了 692 個偵測器(利用拌線鉤 Tripwire 實現)。 1. 偵測機制: 當 TNT 被點燃時,`Math.random()` 會決定其水平運動的角度(0 到 2π)。 2. 精確度: TNT 爆炸前會與拌線鉤碰撞。系統會記錄下觸發的偵測器編號。若多個偵測器同時觸發,則取逆時針方向最後一個。 3. 種子範圍: 每個偵測器對應一個特定的種子範圍(高 26 位元)。通過連續 7 次探測,將 7 個範圍交集,根據格點理論,在 7 維空間中只有一個點(即正確的種子碼)會符合所有條件。
數學模型 編輯 編輯原始碼
具體計算涉及將 LCG 公式展開為矩陣形式:
其中 是偵測到的邊界向量, 是基於 LCG 參數 構成的變換矩陣。機器透過紅石電路處理這些龐大的矩陣數值,最終還原出最初的 48-bit 內部狀態。