team packetのmode fieldをskript-reflectで記述したときにうまく動かない
Minecraft 1.12.2 (非PR)
skript 2.5.3
skript-refrect 2.2.3
ProtocolLib 4.8.0
その他:
SkQuery 3.6.4
SkBee 1.10.2(scoreboardはオフ)
Mundosk 1.8.6
15 Replies
Mundoskを用いてteam packetのremove fieldを実行し、その後skript-reflectに書き換えたところ、Mode fieldの書き換えがうまくいきませんでした。
1つ目、2つ目、4つ目の"#"で置き換えても問題なく動きましたが、3つ目を置き換えると
がコンソールに出力され、うまく動作しませんでした。
試したこと:
- write(0, 1)にする → 同じ出力
- #の置き換えの組み合わせをすべて試す → 同じ出力 getIntegers()が含まれていないときは正常に動く
- getBytes().write(0, 1)およびgetBytes().write(0, 1.byteValue()) → エラー
- getIntegers().write(0.intValue(), 1.intValue()) → コンソールへの出力はないが、何も起こらない
疑問:
- wikiだとfield typeがByteになっているのに、Mundoskではintで指定してうまく動作するのはなぜか
- intがいきなり1から始まるのはなぜか
int pnum 0 ではないのか結構頑張ったんですけど自分じゃどうにもならなさそうだったので助けてほしいです。
お願いします。
うまく動作しないというのは、何も起こらなかったということです。
バニラコマンドで色付きのチームを作って、それを消すパケットを送ることで色の変化を見て検証してます。
あ
できました
結局なんでIntの1なのかはわからない・・・
skriptにはfloatとかintはない
整数はlongだし少数はdouble
って決まってる
variables.csvとかみたらわかる
パケットで扱うときは変換したほうがいいってことですね
getIntegers().write(1.intValue(), 1.intValue())が動いて
getIntegers().write(1, 1.intValue())が動かないのはわかるんですけど、
getStrings().write(0, "glow")はなんで動くんでしょうか
もしかして:1.17でもskript-packetは使える

このエラーはfieldに対しての書き込みが失敗したってことだから
そのfieldがintなのにlongを書き込もうとして失敗してるから
エラー履いてる
write()は
write(int index, T value)のことで
indexはlongわたしても問題ない
てことはgetIntegers().write(1, 1.intValue())mo
動くはずなのか
そういうこと
一番上に来るはずのintのindexが0じゃなくて1から始まってるのはたまたまですか?
1.17でやってみたら0になってたんですけど
一番上に来る?
indexはフィールドごとに0から始まると思ってたんですけど、1つしかないはずのintのindexがなぜか0でなく1だったのが
不思議で
です
上からフィールドタイプごとに0,1,2,3,....って割り当てられてるっていう解釈です
Teamnameはstringで最初なので0,ModeはByte(≒int)で最初なので0
その辺はprotocollibの仕様だから
よくわからん
あんま考えなくていいところですね
てことはprotocollibとprotorolのwikiにずれがある可能性があるのか