フォーラムへの返信
- 投稿者投稿
クロスプ
参加者質問ありがとうございます。
オークの葉はデータパックのルートテーブルに「minecraft:blocks/oak_leaves」を作成すると上書きできます。
デフォルトのデータは下記の値になっています。
https://misode.github.io/loot-table/?version=1.21.6&preset=blocks/oak_leavesこの値を見ると、リンゴやオークの苗木等にconditionがいくつかあるのですが、その内容のそれぞれ1つにハサミやシルクタッチで破壊された場合をminecraft:invertedで除外されています。
それを消すことで葉っぱブロックを確定でドロップし、かつリンゴを確率でドロップさせる事が出来ます。クロスプ
参加者利用可能なデータパックは無効化されているデータパックの事なので、全く動作に支障はございません。
「/reload」は読み込み完了メッセージは出ない為、もし表示したい場合は「load.json」ファイルに入れるのが一般的ですね。こちらも正常な動作です。基本的にデータパック作成関連の相談は「技術相談(Java版)」で教えていますので、お気軽にどうぞ~
クロスプ
参加者質問ありがとうございます。
1.21.5でのNBTでのアーマースタンドの名前はcustom_nameではなくCustomNameで設定出来ます。/summon minecraft:armor_stand ~ ~ ~ {CustomName:"テスト"}
先に言っておきますが、CustomNameの検知はあまりおすすめしません。ですが質問に答えるのが前提なので、CustomNameの検知方法を紹介します。
1つ目のpredicateはスロットItemのminecraft:custom_nameコンポーネントを検知しているのでアイテムのNBT検知になります。
Itemスロットは額縁等の専用スロットになるのでアーマースタンドでは検知不可です。2つ目のpredicateは1.21.5で追加された新しい検知方法です。
初めて知ったので軽くwikiで調べました。
調べた結果、現在はエンティティ用の特別なコンポーネントのみを検知出来るようです。
カスタムネームはおそらくまだコンポーネントで検知出来ないと思います。まだコンポーネント化はエンティティには進んでおらず、NBT検知が最も楽ですね。
{ "condition": "minecraft:entity_properties", "entity": "this", "predicate": { "type": "minecraft:armor_stand", "nbt": "{CustomName:\"テスト\"}" } }
これで多分検知出来ます。
CustomNameはテキストコンポーネントなので、実際出力が不安定になるかもしれません。
/data get entity @n[type=armor_stand] CustomName
で最寄りのアーマースタンドのCustomNameを入手出来ます。もしかしたら値が勝手に変わっているかも。本当はTagsでタグの絞り込みをした方が良いとは言っておきますが、データパックによりけりなので、文章をここまでにしておきます。
制作頑張ってください!クロスプ
参加者Forge と Fabric の性質が違うため、両方の接続出来るModサーバーは仮にあったとしても不安定になると思います。
Mohist を大昔(3年前)に使った時凄く不安定だったので、両方接続できる未来はまだまだほど遠いと感じています。ただ、もしSimple Voice ChatやPlasmo Voice等のボイスチャットModを使用する場合は、プラグイン版を使うとプラグインサーバーで両方に対応できます。
クロスプ
参加者公式サイトでは GeyserMC + Floodgate はBungeeCord、Spigot/Paper、Velocity、Fabric、NeoForgeと書かれていますが、使用したことがないので動くかはわかりません。
クロスプ
参加者現在あるv2.0.0のダウンロード方法
(おどみん様は約1年ほどバージョンを上げておりません)1. コメント欄がでかすぎるのでページの半分くらいにあるダウンロードボタンを押す。
2. 配布先の Google Drive に移動したら、右上にあるダウンロードボタンを押す。
3. Google Drive はほぼワールドデータのウイルススキャンをしてくれないので、ウイルススキャンは各自でやる。
これで出来るかと思います。
クロスプ
参加者やっとバニラの値を入手する事が出来たので報告します。
バニラのバイオームの値を調べてみた結果、どうやらバニラのバイオームのデータは(全て改行した場合)20万行超ある事がわかりました。
その中で使われているバイオームの総数を調べてみた結果、- 388件 minecraft:snowy_plains
102件 minecraft:ice_spikes
208件 minecraft:snowy_slopes
120件 minecraft:jagged_peaks
120件 minecraft:frozen_peaks
10件 minecraft:frozen_river
110件 minecraft:snowy_beach
2件 minecraft:frozen_ocean
2件 minecraft:deep_frozen_oceanあることがわかりました。海や川のバイオームが多かった理由は恐らく総数が少なく、海は1件だけでバニラの約半分を再現出来た結果で生じたと思われます。
この値を全部人力でコピーして持ってくるにはかなりの労力がかかります。
また、全部コピーしてバニラと同じバイオーム区分になるという保証がありません。
その為、もしバニラの値にしてみたいのであればpython等のプログラムや生成AI等で生成した方が良いと思います。
(自分は生成AIを全く知らないので出来るかは不明ですが)クロスプ
参加者どのような地形を作成するかにもよりますので値をどれにすればいいのかは一概には言えませんが、Wikiやサイトでシミュレーションするのが良いと思います。
シード値がオーバーワールドと同じなので、同じ座標の寒い地域では地形が結構似るのでその辺を使ってカスタムディメンションを削除しながら F3 でバイオーム確認するのもいいと思います。あとは自分の好みですね。バイオーム minecraft:snowy_plains だと木や草、村などの構造物がでやすくなりますが、代わりに minecraft:frozen_ocean にある海洋構造物が地表にでづらくなります。
値0を基準としてシード値でTHCEWDが生成されているので、ここからこの間の値をこのバイオームにするって感じにしてみてください。
https://ja.minecraft.wiki/w/%E3%83%90%E3%82%A4%E3%82%AA%E3%83%BC%E3%83%A0
クロスプ
参加者デフォルトの値忘れたので値が悪いのかバイオームが欠落した影響なのかわかりませんが、バイオーム minecraft:snowy_plains の weirdness が極端に低いので、めっちゃ平らな地形じゃない限り minecraft:snowy_plains にならないですね。
その結果、 minecraft:frozen_river や minecraft:frozen_ocean が陸にも反映されて、陸上に minecraft:ice_spikes が生成されたりしています。
あとこのデータパックに dimension_type minecraft:dimension が存在しないとか言われたので minecraft:overworld に変更して試してみました。そのままでは動いていないです。クロスプ
参加者質問ありがとうございます。
さて、カスタムディメンションにポータルを作りたい。
なんと、データパックの機能にありません!なんでですか!
#おのれもやん海外勢がカスタムポータルを解説していました。ご丁寧に概要欄にダウンロードリンクまであります。
https://youtu.be/6d9LDadfGOw?feature=sharedこのデータパックは1.18なので、1.21.4に対応するには
- データパックの「tags」を除く「s」を消す。
predicate condition「minecraft:alternative」を「minecraft:any_of」にする。
wabportals:travellers/all_mobs.json にあるモブリストにブロックディスプレイ、アイテムディスプレイ、テキストディスプレイ、インタラクションを追加、矢やトライデント等の削除(発射体)、ボートの個別ID変更をする。
その他調整するものあるかもこの海外勢の作ったデータパックは1番重いのがaetherディメンションファイルなので、function自体はそこまで多くないと思います。
注意だと思うもの
aether仕様なので、2×3でしか動作しません。
まだブロックディスプレイが無い時代なので、ポータルはリソースパックとアーマースタンドで代用されています。文章が長くなってしまいましたがこれで再現できると思います。
私にはこれが限界です。カスタムディメンション制作頑張ってください!- この返信は7ヶ月、 1週前に
クロスプが編集しました。
クロスプ
参加者あと、「load.json」はワールドロード時と「/reload」時でしか実行されなく、基本的にワールドロード時にはプレイヤーがいないので、実質「/reload」でしか付与する事が出来ません。
なので進捗のトリガーで「minecraft:tick」を使って与えるか、「tick.json」で与えるのが良いと思います。クロスプ
参加者めちゃくちゃわかりづらい仕様なのですが、「tag」ではなく「tags」で動作します。
ここだけ何故か今でも複数形なんですよね…クロスプ
参加者進捗のトリガーに実績の達成がなかったと思いますので、1番簡単なtickとpredicateで検知する方法が最適だと思います。
こちらは1tick遅れて進捗達成してしまいますが、バニラの進捗が達成したかどうかを直接検知できるのでとても使いやすいと思います。
例えば下記のような形式で記入すると、「モンスターハンター」と「狙いを定めて」をpredicateで検知するという形になります。{ "criteria": { "test": { "trigger": "minecraft:tick", "conditions": { "player": { "type_specific": { "type": "minecraft:player", "advancements": { "minecraft:adventure/kill_a_mob": true } } } } }, "test2": { "trigger": "minecraft:tick", "conditions": { "player": { "type_specific": { "type": "minecraft:player", "advancements": { "minecraft:adventure/shoot_arrow": true } } } } } }, "requirements": [ [ "test" ], [ "test2" ] ] }
なぜここでtestとtest2にわけているのかといいますと、進捗の達成度(1 / 2 とか)を出してくれるから分けてみました。
この方法が1番簡単で安定すると思いますので、是非ご活用ください。クロスプ
参加者色々なパターンがありますので、いくつか確認お願いします。
1. pack.mcmetaの位置間違い
> datapacks/<データパック名>/pack.mcmetaがあるか確認する。2. 「function」が「functions」になっていたり、「tags」が「tag」になっていたりする。
> 1.21以降データパックは「tags」を除く場所(tags/function等も含む)に「s」をつけない。3. コマンド構文エラー/ファイル構文エラー
> logファイルで確認できます。ランチャーの「起動時に出力ログを表示」をオンにすると、データパックリロード時にエラーを出してくれます。4. ゲームルールやtick freezeを使ってtickが反応しない。
> /gamerule maxCommandChainLengthを大きくしたり、/tick unfreezeを実行したりする。5. dataがassetsになってる。
> 自分がよく間違えるだけ。これはよくあるやつなので、もっと沢山のパターンがあります。
クロスプ
参加者いつも利用して頂いております。
現在サイト要望に自分のアカウントで新規トピックを作成する事が出来るようになっています。
恐らく全てのアカウントで作成できると思いますので、ご対応をよろしくお願いいたします。- この返信は7ヶ月、 1週前に
- 投稿者投稿