by penM » 2020年8月20日(木) 20:11
ogachan さんが書きました: ↑2020年8月20日(木) 18:04
Minecraft1.7.10、Forge10.13.4.1558でのModdingの質問です。
onEntityCollidedWithBlockで、Entityが接触している際、そのEntityが動いていれば停止させ、停止していれば向いている方向に動かすブロックを作りたいのですが、tickごとに実行されてしまい、停止→動かすを繰り返してしまいます。
一度接触したEntityには一度だけ実行するようにしたいのですが、方法をご存じでしたら教えてください。
ForgeのAPIを把握しているわけではないので、間違っていたらすみません。
関数実行時のシステムのtick値を記録しておき、再度呼ばれた際に現在のtick差から、Entityが接触した際にそれが連続で呼び出されたものであるかを判定するのはどうでしょうか?
そもそも現在のtickが取得できるかわかりませんが。
javaの時間ライブラリから現在時刻を持ってきてもできると思いますが、tickの処理落ちの際にどうなるかはわかりません。
[quote=ogachan post_id=248 time=1597914249]
Minecraft1.7.10、Forge10.13.4.1558でのModdingの質問です。
onEntityCollidedWithBlockで、Entityが接触している際、そのEntityが動いていれば停止させ、停止していれば向いている方向に動かすブロックを作りたいのですが、tickごとに実行されてしまい、停止→動かすを繰り返してしまいます。
一度接触したEntityには一度だけ実行するようにしたいのですが、方法をご存じでしたら教えてください。
[/quote]
ForgeのAPIを把握しているわけではないので、間違っていたらすみません。
関数実行時のシステムのtick値を記録しておき、再度呼ばれた際に現在のtick差から、Entityが接触した際にそれが連続で呼び出されたものであるかを判定するのはどうでしょうか?
そもそも現在のtickが取得できるかわかりませんが。
javaの時間ライブラリから現在時刻を持ってきてもできると思いますが、tickの処理落ちの際にどうなるかはわかりません。