- Minecraft 1.12.2 村の座標決定部分のアルゴリズム https://qiita.com/MirrgieRiana/items/0a3baee86bb661dc5f99
の亜種。基本的なことはこれと同じ。
アルゴリズム
概ねこんな感じ。
boolean canSpawnStructureAtCoords2(int chunkX, int chunkZ)
{
int regionX = chunkX >> 4;
int regionY = chunkZ >> 4;
Random rand = new Random(seed ^ regionX ^ (regionY << 4));
rand.nextInt();
if (rand.nextInt(3) != 0) return false;
if (chunkX != (regionX << 4) + 4 + rand.nextInt(8)) return false;
if (chunkZ != (regionY << 4) + 4 + rand.nextInt(8)) return false;
return true;
}
意訳すると次のようになる。
16x16チャンク毎、33%の確率で、中央付近の8x8チャンクのいずれかのチャンクを中心としてネザー要塞が出現する。
16x16の端付近には出現しないので、既知の遺跡から座標軸に沿って進むと高確率で発見できる。
出現可否と地域内の詳細位置はワールドのシードと16x16ごとの地域にのみ依存し、バイオームとかそういう条件はなく溶岩海の上だろうが地中だろうが問答無用でスポーンする。恐らく村と同じくチャンク内での位置も固定。村とは異なりチャンク座標が負の場合には説明しづらい特殊な挙動をする。
複製
もしやX座標が161616離れてY座標が16*16離れた4か所のうち1か所には同じ形の要塞が湧く?
酷似している。多分同一。これはregionX ^ (regionY << 4)
が同じ値になる場所で起こる。同様にXが1616162、Yが1616*2離れた場所にも存在するはず。地域Yの反転ビットが地域Xの反転ビットの左4シフトになれば対応が取れる。大きな値を除けば任意の地域Xに対応する地域Yが存在することになるので、N個のネザー要塞があったとしてパターンは概ね√N個しかないことになる。