Markerを移動速度や重力、バウンド回数などを指定して動かすことができるライブラリデータパック。
v3.5
MinecraftJE 1.20.1
過去バージョンのダウンロードは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},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 |
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
タグを返します。
付与された、または付与したタグは必ず削除するようにしてください。
このライブラリを実行したMarkerに自動的に付与されるタグを全て剥がすfunction。
#marker_motion_example:bounce/advanced
にて確認できます
挙動の例をいくつか作成しています。参考程度に。
MarkerMotion本体と一緒に導入することで実際に動かして確認できます。
MIT Licenceに基づく。
- Minecraft-JE-Technical-Note (MIT Lisence Copyright (c) 2023 Rusk_Eocssar)
- ブロック接触、エンティティヒット判定参考
-
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が0になった時に停止しない問題の修正
-
v3.1
- 大きなドリップリーフの当たり判定が少し大きい問題の修正
- Move.Rotationに返却される値が後ろ向きな問題の修正
-
v3.0
- 別ディメンションにおいて、x:0,z:0付近から離れると正常に動作しない問題の修正
- xかzが特定座標を超えたときに正常に動作しない問題の修正
- ブロックの当たり判定を追加
- 階段やハーフなど、フルブロックより小さいブロックの隙間など細かい当たり判定で移動させることが可能になりました
#marker_motion:
,#marker_motion:tag_remove
で利用できるように変更- speedの値を以前までの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
- 初版