Minecraft Java Edition 1.18+ のネザー要塞クラスター探索ツール。
指定シードにおいて、複数のネザー要塞が密集した座標を列挙する。
2種類の密度指標で上位結果を出力する。
- 2D 円密度 — 中心から半径 128 ブロックの円(XZ 平面)に占める要塞 BB の割合が 100% の座標
- 3D 球殻密度 — 中心から距離 24〜128 ブロックの球殻に占める要塞 BB の割合が最も高い座標(Y 軸も考慮)
finder <seed> [--range <ブロック数>] [--wb] [--threads <n>] [--top <n>]
| 引数 | 説明 | デフォルト |
|---|---|---|
<seed> |
ワールドシード(必須) | — |
--range |
探索半径(ブロック単位) | 30000000 (±3,000 万) |
--wb |
ワールドボーダーへつながる座標のみ出力 |x| < 37,500,000 または |z| < 37,500,000 の座標を除外 |
無効 |
--threads |
使用スレッド数 | 全論理コア |
--top |
各セクションの出力件数 | 10 |
# シード 0 でデフォルト設定(±3000万ブロック、上位10件)
finder 0
# 探索範囲を ±1000万に絞って上位5件
finder 12345 --range 10000000 --top 5
# ワールドボーダー付近のみ、16スレッドで探索
finder -9876543210 --wb --threads 16
# 結果をファイルに保存(進捗は標準エラー出力)
finder 0 --wb > result.txt
seed=0 range=±30000240 threads=16 top=10 wb=false
--- セクション1: 2D 円密度 100% (avg_y_max 昇順) ---
#1 center=(X, Z) density=100.00%
fortress origin=(bx, bz) bb=[(x0,z0) to (x1,z1)] y_range=[y_low,y_max] dist=XX
avg_y_max=79.5
--- Top 10 highest avg_y_max ---
#1 center=(X, Z) density=100.00%
...
--- Top 10 3D hollow sphere (inner_r=24, outer_r=128) ---
#1 center=(X, Y, Z) 3d_density=XX.XX% shell_vol=8725038
fortress origin=(bx, bz) bb=[(x0,z0) to (x1,z1)] y=[y_min,y_max] xz_dist=XX
| フィールド | 意味 |
|---|---|
center |
密度が最大になるブロック座標 |
density |
半径128ブロック円内に占める要塞 BB の割合 |
3d_density |
球殻(24≤r≤128)内に占める要塞 BB の割合 |
origin |
要塞の生成チャンク起点座標(chunk × 16) |
bb |
全ピースを包む最小 XZ バウンディングボックス |
y_range |
最高ピースの Y 範囲(2D セクション) |
y=[min,max] |
全ピースの Y 範囲(3D セクション) |
dist / xz_dist |
center からの水平距離(ブロック) |
avg_y_max |
近隣要塞の y_max 平均 |
shell_vol |
球殻の総ボクセル数(分母) |
動作要件: Rust 1.70+、AVX2 対応 CPU(Intel Haswell / AMD Ryzen 以降)
cargo build --release
バイナリは target/release/finder(Windows: finder.exe)に生成される。
AVX-512 を持つ CPU(Core i9-14900K 等)では
.cargo/config.tomlの+avx2指定により AVX-512 周波数低下を回避している。
CPU: Intel Core i9-14900KF、16 スレッド
--range |
探索半径 | 所要時間 |
|---|---|---|
1000000 |
±100 万ブロック | 約 1 秒 |
3750000 |
±375 万ブロック | 約 500 秒 |
30000000 |
±3000 万ブロック(デフォルト) | 約 3 時間 |
- 粗スキャン(64 ブロック刻み)で閾値 84% 以上の候補点を検出
- 中スキャン(8 ブロック刻み)で候補を絞り込み
- 細スキャン(1 ブロック刻み)で最大密度点を特定
- 2D: 257×257 の 2D プレフィックスサムで矩形と円の交差面積を O(1) 計算。包含排除で複数要塞の合算。
- 3D: 257³ の 3D プレフィックスサム(~68 MB)で球殻内の直方体ボクセル数を O(8) 計算。Y 軸を −64〜256 でスキャンして最適高さを決定。
- SOA レイアウト + AVX2 自動ベクトル化
要塞ピース衝突判定を Structure of Arrays 形式にし、LLVM の AVX2 自動ベクトル化を誘発。符号ビット OR トリックで 6 条件を 1 命令に集約。 - スライディングウィンドウキャッシュ
8 スロット循環バッファで要塞 BB を事前計算・再利用。
cubiomes の getFortressPieces を移植(MC 1.18+ の chunkGenerateRnd による要塞/バスティオン判定を含む)。
REGION_HALF=500、seed=0 で 55,744 クラスターを確認済み。