Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NetherFortressClusterFinder

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 時間

仕組み

スキャン手順

  1. 粗スキャン(64 ブロック刻み)で閾値 84% 以上の候補点を検出
  2. 中スキャン(8 ブロック刻み)で候補を絞り込み
  3. 細スキャン(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 クラスターを確認済み。

About

そのシードの最大の体積のネザー要塞を見つけるツール

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages