Markerを移動速度や重力、バウンド回数などを指定して動かすことができるライブラリデータパック。
v3.10
MinecraftJE 1.21.10 ~
過去バージョンのダウンロードはReleasesからどうぞ。
- 実行者はMarkerであること。
#marker_motion:を実行すること。
Markerの召喚時や召喚後に以下のようなNBTを設定する。
## 例 summon marker ~ ~ ~ {Tags:["A"],data:{MarkerMotion:{speed:{amount:1.50,loss:{amount:0.950,type:"*"}},gravity:39.200,bounce:{count:2,e:0.950,g:1b,with:{hit:0b,block:1b}},stopwith:{hit:1b,block:1b}}}}| 引数名 | 必須 | 型 | 説明 | デフォルト |
|---|---|---|---|---|
| speed.amount | o | double | 初期速度 小数点2桁まで有効 | - |
| speed.loss.amount | x | double | 毎tickの速度変更量 この値の有効数字は以下のspeed.loss.typeによって指定されます "+":小数点2桁まで有効 "*":小数点3桁まで有効 | 0 |
| speed.loss.type | x | string | "+"か"*"のどちらかを入力します "+":加算で計算します "*":乗算で計算します | "+" |
| gravity | x | double | 重力加速度 9.8の倍数がおすすめ 小数点3桁まで有効 | 0 |
| bounce.count | x | int | 跳ねる回数 以下の2種の負数を指定すると特殊挙動に変更されます -1:無限に跳ねます -2:データ処理を行った後、通常の接触停止判定を行います | 0 |
| bounce.e | x | double | 跳ねた時の速度変更量 乗算で計算されます 小数点3桁まで有効 | 1.0 |
| bounce.g | x | boolean | 重力加速を考慮して跳ねるようにします | false |
| bounce.with.hit | x | boolean | stopwith.hitがtrueでヒットしたエンティティがいた時、エンティティのヒットボックスを元に跳ねるか | false |
| bounce.with.block | x | boolean | stopwith.blockがtrueの時、ブロックへの接触を元に跳ねるか | true |
| stopwith.hit | x | boolean | ヒットしたエンティティがいた時、ヒット位置で停止するようにします | true |
| stopwith.block | x | boolean | ブロックに衝突した時、衝突位置で停止するようにします | true |
speed.amountはspeed.lossやbounce.eでの変動時にデータが変更されますbounce.countを-2にしたときの挙動は#marker_motion_example:bounce/advancedにて確認できます
- MarkerMotion.on_block
ブロックに接触して停止した時 (跳ねた場合は付与されません) - MarkerMotion.on_block.wall , MarkerMotion.on_block.y , MarkerMotion.on_block.[方角]
ブロックに接触した停止した方角やカテゴリ (MarkerMotion.on_blockがない場合は付与されません) - MarkerMotion.bounce
跳ねた瞬間だけ付与されるタグ - MarkerMotion.speed.0
スピードが0以下になった時 - MarkerMotion.stopwith.hit
"stopwith.hitがfalseでない"かつ、hitタグを付与したエンティティがいた時 - MarkerMotion.stop
メイン処理が実行されないようになるタグ。 MarkerMotion.on_block, MarkerMotion.speed.0, MarkerMotion.stopwith.hitのタグがあれば必ず付与されています。 このライブラリを呼ぶ前に判定に入れたいエンティティに対しMarkerMotion.targetタグを付与します。
distanceとかで範囲指定してあげた方が軽量になると思います。
当たり判定はヒットボックスサイズで検知され、MarkerMotion.hitタグを返します。
付与された、または付与したタグは必ず削除するようにしてください。
MarkerMotion.as_blockタグを付与されたエンティティは、ヒットボックスがブロック判定として処理されるようになります。
このライブラリを実行したMarkerに自動的に付与されるタグを全て剥がすfunction。
#marker_motion_example:bounce/advancedにて確認できます
挙動の例をいくつか作成しています。参考程度に。
MarkerMotion本体と一緒に導入することで実際に動かして確認できます。
MIT Licenceに基づく。
- Minecraft-JE-Technical-Note (MIT Lisence Copyright (c) 2023 Rusk_Eocssar)
- ブロック接触、エンティティヒット判定参考
-
v3.10
- 1.21.10に対応
- 負荷が高かったため、分解能を低下
-
v3.6
bounce.withのパラメータを追加MarkerMotion.as_blockのタグがついたエンティティに対して、ブロックの接触判定が行われる挙動を追加#marker_motion_example:bounce/hitを追加
-
v3.5
- 対応バージョンを1.20.1に変更
-
v3.4
- ピストンヘッドの他ブロックへの浸食当たり判定が一部正しく動作しない問題の修正
-
v3.3
- コマンド数減少及び最適化
Moveを削除- exampleのパーティクル表示方法を変更
-
v3.2
bounce.gがオンの時の挙動が正常でない問題の修正、及びbounce.gがオンの時の挙動修正#marker_motion_example:bounce/gravityを追加- 特定条件下で
Move.Rotationの値が正常でない問題の修正 bounce.countを-2にしたときの挙動を追加speed.amountが0になった時に停止しない問題の修正
-
v3.1
- 大きなドリップリーフの当たり判定が少し大きい問題の修正
Move.Rotationに返却される値が後ろ向きな問題の修正
-
v3.0
- 別ディメンションにおいて、x:0,z:0付近から離れると正常に動作しない問題の修正
- xかzが特定座標を超えたときに正常に動作しない問題の修正
- ブロックの当たり判定を追加
- 階段やハーフなど、フルブロックより小さいブロックの隙間など細かい当たり判定で移動させることが可能になりました
#marker_motion:,#marker_motion:tag_removeで利用できるように変更speed.amountの値を以前までの1/100で宣言するように変更gravityの値を以前までの1/10で宣言するように変更speed.loss.typeの指定を"+","*"で指定するように変更Motionを削除- 代替として
Moveを追加
- 代替として
stopwith.hitのデフォルト値をtrueに変更
-
v2.3
data.MarkerMotion.speed.amountが0になってもdata.MarkerMotion.gravityが0.01以上であれば停止しないように変更- exampleの召喚用functionを#marker_motion_example:...でそれぞれ呼び出せるように変更
-
v2.2
stopwith.blockの設定項目を追加
-
v2.1
speed.lossの値で加速できるように変更- 対応バージョンを1.19.2に変更
- exampleとMarkerMotion本体を分離
-
v2.0
- データパックの名称から
"NeAc"を削除 - 動作要件に
MinecraftJE 1.18.2と記載したにも関わらずpack_formatが9でなかった問題を修正 data.MarkerMotion.speed.loss.typeが"multiply"でないときの動作が正常でなかった問題を修正- 直接弄ったりしていたデータを一時ストレージに入れてから利用することでの微軽量化試み
- その他軽微な修正
- データパックの名称から
-
v1.1
- いくつかの問題を修正
-
v1.0
- 初版