送信されるはずのpacketを改変して送信する方法
サーバーの時間とプレイヤーに送信する時間を異なる時間にするfunctionを書きました
ここまでは良かったのですが、funcで送信してもサーバー側がパケットを毎秒送信しているため、変わっても一瞬で治ってしまいました
packetの送信をeventで検知し、cancel eventしたあとに送信しても、その送信もeventで検知されcancel event...という無限ループに。逆に送信を検知して、funcで送信し直しても、その送信したものを検知して送信と、またしても無限ループになってしまいます
MC環境は1.19.4のpaper(bungee)、プラグイン、SKver等は画像の通りです
追記: doDaylightCycleはfalseに設定しています
9 Replies
デフォルトの時間が0-24000の間で動くなら、自分が設定したい時間+240001でフィールドを設定して
24000を超える場合は自分が送ったパケット
それ以下ならサーバーから送られたパケットで
区別すればいい
自分の送ったパケットはフィールドを直す
どのタイミングで送信したらいいのかがわかりません
サーバーから送られたパケットを検知して、(指定時間+24001)して送信、24000を超えるかどうかを検知して自分の送ったパケットのフィールドを直して送信すると、サーバーから送られたパケットとして認識され無限ループになってしまいます
書き換えてまた送るんじゃなくて
書き換えた時点で書き換えられたパケットが送られるんだから
わざわざsendしなくていい
イベントで検知したpacketのfieldを改変して送信する方法を教えてほしいです
このようにしてみましたが変更されませんでした
フィールドが変わってるのに反映されてないならskript-packetが対応してない
そもそもフィールドが変わってないなら設定する値が間違ってる
他に改変する方法を教えてほしいです
Solution
skript-reflect使う
やっぱそうするしかないですか...
set {_packet} to even-packetは参照渡しですか?
参照になるんだ
しらなかった