NOISE CAVES (ノイズ洞窟)と帯水層
- Noise Caves (ノイズ洞窟)では、より自然な形の洞窟が生成され、時にはかなりの大きさになることも!ノイズ洞窟には、以下の三種類があります。
- チーズ洞窟。スイスチーズの穴のような形状で、大きさは様々
- スパゲッティ洞窟。長い曲がりくねったトンネルで、まるでパスタのタリアテッレのように幅の広い形状になることもあります
- ヌードル洞窟。これはスパゲッティ洞窟よりも細く、さらに曲がりくねっている狭い洞窟です。
- そして念のためにお伝えしますと「ノイズ」という名前ではありますが、実際に音がうるさいわけではありません。「ノイズ」は専門用語であり、音量とは関係ないです
- 既存の形式の洞窟や峡谷は今後も生成され続け、ノイズ洞窟と組み合わさって新たな形状の洞窟システムを生み出します
- ノイズ洞窟は峡谷と同様に、表面と交差する位置に洞窟の入り口を形成します
- 帯水層とは、海面とは別に、独自の水位を持つエリアのことです
- 帯水層は、ワールド生成時にノイズ洞窟内に湖などを生成するのに使用されます
- 巨大な地下湖が生成される場合もあります
- 山の中や地表にも生成されることもあります
- y0 以下の帯水層は、水ではなく、溶岩の帯水層になることもあります
- 地下湖の底にマグマ ブロックが生成されることがあります
- 洞窟内の水を生成するのに帯水層を使用するようになったため、水中洞窟と水中峡谷を削除しました
ダッシュ
- 以前はブロックに衝突するとダッシュから歩行に変わっていましたが、今は非常に小さな衝突であれば、ダッシュし続けることが可能になりました。ただし、大きい衝突の場合は、以前のように歩行へと切り替わります。
古いワールドのアップグレード
- 地表の高さは融合します
- バイオームも融合します
- 洞窟も融合しますが、洞窟の長さが変更される場合があります
- 古いチャンクの y=0 に岩盤がある場合は、空気ではないブロックの下は新たに地形生成がなされます
- 古いチャンクの y=0 ~ y=4 の岩盤はディープスレートに置き換えられます
- y=-64 に新たな岩盤層を配置しました
ワールド生成
- 生成範囲と建築の制限が上下 64 ブロックずつ拡張され、合計範囲が 384 ブロックになりました
- 地下のバイオーム、構造物、洞窟は y-64 まで生成されるようになりました
- 例外として、閃緑岩、花崗岩、安山岩、そして土は y0 以下では生成されません
- 閃緑岩、安山岩、花崗岩のサイズと生成される位置を微調整しました
- 鍾乳石のかたまりが通常の洞窟では見つからなくなり、鍾乳洞バイオーム限定となりました
- y8 以下では、深層岩が徐々に石を置き換えていきます
- 深層岩のかたまりは、y0 以上では生成されなくなりました
- バイオームにかかわらず、地形の形状と標高が大きく変化します
- たとえば、丘の上に森や砂漠が生成されることがあります
- y 60 以上では、閃緑岩、安山岩、花崗岩の生成量が減ります
- 石の多い海岸では、細長い砂利の土地が生成されることがあります
- 湿地帯の木が水深 2 ブロックから成長可能になりました(以前は水深 1 ブロックでした)
- 帯水層がローカル水位の基準になりました
- 形状が独立して制御されるようになりましたので、異なる形状でありながらも似たような特徴を持つバイオームのバリエーションをひとつに統合しました
- いくつかのバイオーム名を変更しました
- ジオード (晶洞) は高さ 30 までしか生成されなくなりました
技術的変更点
- 雷雨時に空が点滅しないように制御できるオプションを、アクセシビリティの設定として追加しました
- 進捗トリガー fall_from_height と ride_entity_disance を追加しました
- nether_travel の内容を他の似たようなトリガーに合わせて変更しました
- ゲームが使用しているオーディオデバイスが指定されるオプションを追加しました
- light と barrier のパーティクルを block_marker に置き換えました
- clientbound チャンクのアップデートネットワークパケットを、ライトアップデートデータを追加したパケットに差し替えました
- 今までのライトアップデートパケットも存在しており、チャンクアップデートなしでライトのアップデートが発生した際に送信されます
- 「Chunk Builder」という新たなビデオ設定を追加しました
- チャンクのレンダリング・パイプラインの優先順位を変更しました
- 高いレンダリング距離で高速飛行している場合は、レンダリングされていないチャンクが穴として表示されなくなるはずです
- 距離を確認すると、チャンクが正方形ではなく、プレイヤーの周囲に円筒状で読み込まれるようになりました
- 操作設定にToggle Sprint (ダッシュに切り替え) と Toggle Sneak (スニークに切り替え) を追加しました
- キーバインドを操作方法からアクセスできるように独自の設定画面に移行しました
- ワールド生成のノイズ情報がデバッグ画面で表示されるようになりました
- Minecraft Dungeons のフォントである illageralt を追加しました(現在は、操作方法からのみ使用可能)
- Java Flight Recorder や、いくつかのカスタムイベントでプロファイリングが行える起動オプション --jfrProfile とコマンド jfr を追加しました
- ルートテーブルのファンクション set_contents と set_loot_table に有効なブロックエンティティの type フィールドが必要となりました
- ルートテーブルのファンクションに set_potion を追加しました
- バックグラウンドスレッドの上限数を上げました
- 最後に保存されたバージョンが Minecraft 1.2 (「Anvil」以前)のワールドは直接開けなくなりました
- データパックのフォーマットを 8 に増加しました
- リソースパックのフォーマットを 8 に増加しました
- データジェネレータの --report オプションが、バイオームだけではなく、ワールド生成全体の参照ファイルを作成するようになりました
- スコアボード、スコアホルダー、チーム名の長さ制限を撤廃しました
- スタンドアローンの server.jar が、フラットアーカイブではなく、個々のライブラリーのバンドルに変更されました
- サーバーのリソースパックのサイズ制限を 250 MB に拡張しました
- サーバーが hide-online-players プロパティを true に設定することで、ステータスリストを要求する際にプレイヤーリストを送信しないように変更しました
- Simulation Distance (シミュレーション距離) という新たな設定を追加しました
- モブスポナーがスポーン時のライトチェックを覆せるようになりました
- ワールドを読み込むためのテレメトリ機能を追加しました
進捗
変更されたトリガー
NETHER_TRAVEL
- entered を start_position に名称を変更しました
- exited は player.location と同様であるため、削除しました
新たなトリガー
FALL_FROM_HEIGHT
- player – このトリガーを実行するプレイヤー
- start_position - 落下が発生する直前の位置
- distance - start_position とプレイヤーの距離
RIDE_ENTITY_IN_LAVA
- プレイヤーが溶岩の上に乗ると、1 ティックごとにトリガーされる
- 条件:
- player – このトリガーを実行するプレイヤー
- start_position - 乗った瞬間の位置(溶岩の上で最初のティック)
- distance - start_position とプレイヤーの距離
チャンクビルダー設定
- この設定は、チャンクのセクションがシングルフレームで瞬時にアップデートされるか、スレッドを使って非同期的にアップデートされるかを決定します
- Fully Blocking (完全にブロックする) は、従来のチャンクのアップデート方法のことであり、ブロックが破壊されたときに視覚的なギャップが発生することを防ぎます
- Threaded (スレッド化) は、ブロックを配置したり、破壊した際に(特に光源を使用した場合に)発生するスタッターを大幅に軽減するが、稀に視覚的なギャップが発生します
- 「Semi Blocking」とは、上記 2 方法の中間的な選択肢で、重要だと思われるチャンクのみ瞬時にアップデートし、それ以外のものはスレッドを使って非同期的にアップデートを行います
JAVA 17
- Java 版 Minecraft は Java 17 を使用するようになりました。デフォルトのセットアップを使用している場合、Launcher は自動的に Java の正しいバージョンをダウンロードしてインストールします。カスタムの Java セットアップやサードパーティ製のランチャーを使用している場合は、Java のインストールがバージョン 17 以上であることを確認する必要があります。
JFR プロファイリング
カスタムイベント
すべてのイベントは jfr.start コマンドか jfrProfile 起動フラグを使ってプロファイリングを開始したときに有効となります
もし、モニタリング目的でプロファイリングを別の手段で開始した場合は、ServerTickTime、LoadWorld、NetworkSummary のみがデフォルトで含まれます
プロファイリングは、以下のいずれかの方法で開始できます。
- minecraft.ServerTickTime:サーバーの平均ティック回数を示す定期イベント(1 秒間隔)
- minecraft.NetworkSummary:接続ごとの総パケットサイズとカウント数を報告する定期イベント(10 秒間隔)
- minecraft.PacketReceived | minecraft.PacketSent:ネットワークトラフィック
- minecraft.ChunkGeneration:個々のチャンクステージを生成するのにかかる時間
- minecraft.LoadWorld:初期のワールドを読み込む時間
概要
Java Flight Recorder (https://openjdk.java.net/jeps/328) は、パフォーマンスとランタイムの特性を分析するために、Java Runtime に含まれている内部 JVM プロファイリングツールです。
内部 JVM パフォーマンス・メトリクスや、ストックの Java プロファイラーやモニタリング・エージェントを使って分析と監視を行うのに便利なツールです。
プロファイリングのライフサイクル
そして実行したプロファイリングは、以下のいずれかの方法で停止されます。
- Minecraft サーバーかクライアントを起動する際の --jfrProfile 起動フラグ
- ゲーム内コマンド jfr start
- jcmd などの通常の Java CLI ツール
- JVM をシャットダウン
- jfr stop ゲーム内コマンド
- jcmd CLI ツール
レポート
要約された JSON レポートはログファイルとデバッグフォルダの両方に書き込まれ、JMC https://github.com/openjdk/jmc などのようなプロファイラーツールで分析できる .jfr ファイルが添付される。
ルートテーブル
変更された機能
SET_CONTENTS, SET_LOOT_TABLE
新たな必須フィールド type を追加。この type は、各バージョン間で正しく移行できるよう、 BlockEntityTag.id に書き込まれます。
新機能
SET_POTION
· どのアイテムにも potion のタグを設定する
パラメータ
· id - potion id
バックグラウンドスレッドの上限数を上げました
- worldgen を含む様々なバックグラウンドタスクが、バックグラウンドのスレッドプールで実行されます
- ·デフォルトのスレッドプールのサイズは、利用可能な CPU スレッド数から 1 を引いた値
- スレッドプールの上限が 7 から 255 まで引き上げられ、ハイエンドマシンにおける worldgen のパフォーマンスが向上できるはずです
- 上限数は、Java システムプロパティの max.bg.threads で上書きすることが可能で、1 台のマシンで複数のサーバーを実行する場合などで利用可能です
モブのスポーン
- モンスターのスポーン制限を、次元ごとに定められるのではなく、プレイヤーごとに定められるようになりました
古いワールドの変換
- 最後に Minecraft 1.2 以前(「Anvil」以前)に保存されたワールドを開くには、以前のバージョンに変換しないと開けなくなりました
- 1.2 (「Anvil」)以前の古いバージョンのものは、1.6.4にアップグレードすることをお勧めします。1.2 以降のバージョンで初めて開かれるワールドは、正しくないバイオーム情報が含まれます
パーティクル
BLOCK_MARKER
- 設定されたブロック状態に割り当てられたモデルの particle スロットで決定したテクスチャをレンダリングします
- block パーティクルと同じシンタックスで出現させます(例: block_marker wheat[age=2] )
リソースパックのフォーマット
- minecraft/textures/gui/container/inventory.png には、持ち物内のエフェクトリストを薄くレイアウトした追加スプライトが含まれるようになりました
サーバーのバンドル
- server.jar では、ひとつのアーカイブにすべてのファイルを統合するのではなく、個々のライブラリをバンドルするようになりました
- この変更は Java モデュールに関連するいくつかの問題を解決するために行われました
- 起動時に server.jar が bunlderRepoDir (デフォルト:working directory)で設定されたディレクトリにライブラリを展開します
- サーバー以外のメインクラスを実行するには、bundlerMainClass プロパディ(例:java - DbundlerMainClass=net.minecraft.data.Main -ar server.jar –reports)を使用するか、jar を手動で解凍して、META-INF/classpath-joined の内容をコマンドラインで使用します
- bundlerMainClass が空の場合は、プログラムがファイルの検証と抽出を行ってから終了されます
- サーバークラスに署名が付くようになりました
シミュレーション距離の設定
- ビデオ設定で利用可能な新たなスライダーです
- エンティティ、ブロック、そして液体はシミュレーション距離外ではアップデートされません
- 少ない CPU 負荷で高いレンダリング距離を実現します
- また、専用サーバーのプロパティに simulation-distance のプロパティを追加
スポナーのデータ変更
例:
SpawnData: {
entity: {
id: "minecraft:cow"
},
custom_spawn_rules: {
sky_light_limit: {min_inclusive: 10, max_inclusive: 15}
},
}
SpawnPotentials: [
{
data: {
custom_spawn_rules: {
block_light_limit: {min_inclusive: 0, max_inclusive: 15}
},
entity: {id: "minecraft:pig"},
},
weight: 2
},
{
data: {
custom_spawn_rules: {
block_light_limit: {min_inclusive: 5, max_inclusive: 10},
sky_light_limit: {min_inclusive: 10, max_inclusive: 15}
},
entity: {id: "minecraft:panda"}
},
weight: 1
}
]
- スポナー custom_spawn_rules NBT を SpawnData フィールドと SpawnPotentials リストをサポートするように更新しました
- custom_spawn_rules には現在、 block_light_limit と sky_light_limit というフィールドが含まれている場合があり、両方とも min_inclusive と max_inclusive が含まれる整数の範囲です
- SpawnPotentials のフォーマットを他の重み付きリストに似せるために、構造を {weight: <int>, data: <previous contents without 'Weight', 'Entity' renamed to 'entity'>} に変更しました
- この変更に対応するために、SpawnData の過去の内容を SpawnData.entity に移行しました(フィールドのフォーマットは SpawnPotentials.data の要素と同様)
テレメトリ
今回のリリースでは、2018 年まで Java 版 Minecraft に含まれていたDiagnostic Tracking (診断追跡機能)を再導入しました。プレイヤーのみなさんの行動をより良く理解して、ゲーム体験をさらに向上させるために再導入しています。収集される情報は、開発で優先すべき要素とペインポイント (プレイヤーが苦労している箇所) を明確化するために、そして問題を解決するために役立たれます。すべてのデータは GDPR と CCPA で保護されており、より高品質で楽しい Java 版 Minecraft を開発するために使用されることをご了承ください。
- 現段階では、実装しているイベントは ワールドロード・イベント (ワールドの読み込み) のみです
ワールドロード・イベント
- シングルプレイヤーのワールドを読み込むか、マルチプレイのサーバーに接続する際に送信されます
- 以下の情報が含まれます
- ランチャー識別子
- ユーザー識別子( XUID )
- クライアントセッション ID (再起動時に変更)
- ワールドセッション ID (ワールドを読み込むたびに変更され、後のイベントで再利用される)
- ゲームのバージョン
- OS 名とバージョン
- Java ランタイムのバージョン
- クライアントかサーバーが MOD されているか(クラッシュログ内と同じ情報)
- サーバータイプ(シングルプレイヤー、Realms、その他)
- ゲームモード
ワールドデータ:チャンクフォーマット
- チャンクの Level を削除し、含まれていたものをすべて上に移動しました
- チャンクの Level.Entities を entities に移動しました
- チャンクの Level.TileEntities を block_entities に移動しました
- チャンクの Level.TileTicks と Level.ToBeTicked を block_ticks に移動しました
- チャンクの Level.LiquidTicks と Level.LiquidsToBeTicked を fluid_ticks に移動しました
- チャンクの Level.Sections を sections に移動しました
- チャンクの Level.Structures を structures に移動しました
- チャンクの Level.Structures.Starts を structures.starts に移動しました
- チャンクの Level.Sections[].BlockStates と Level.Sections[].Palette を sections[].block_states のコンテナ構造に移動しました
- チャンクの Level.Biomes はパレット化して、同様のコンテナ構造である sections[].biomes に格納されている
- チャンクの Level.CarvingMasks[] を byte[] から long[] に変更しました
- チャンクの最小 y 位置を示す yPos を追加しました
- 0 以下の生成をサポートするデータである below_zero_retrogen を追加しました
- 新しいワールドの生成と既存のチャンク融合をサポートするデータを含む blending_data を追加しました
ワールド生成
- Bedrock (岩盤) レイヤーは、ワールドのシード値によって生成されます
- オーバーワールドの生成に、新たな乱数ジェネータを採用しました
1.18 で修正されたバグ
- 今回のリリースでは約 250 件のバグが修正されました。修正されたすべてのバグは Issue Tracker からご確認いただけます。
リリースの入手方法
リリースをインストールするには Minecraft ランチャーを開いて、プレイボタンを押してください。
クロスプラットフォームサーバー jar :
バグの報告はこちらから:
フィードバックを送信したいですか?
この記事を共有する