Closed anminmakura closed 2 years ago
この問題は以下の2つに分けられる。
enemy:ai/call/settings/
#L12
#L13
execute unless data storage mob_data: Settings.Name if data storage mob_data: Settings{Global:1b} if score 00000000-0000-0000-0000-000000000002 _ matches 1 at 0-0-0-0-1 run function enemy:ai/call/execute/fork
#L14
execute unless data storage mob_data: Settings.Name unless data storage mob_data: Settings{Global:1b} if score 00000000-0000-0000-0000-000000000002 _ matches 1 at 0-0-0-0-1 run function enemy:ai/call/call
#L15
SettingsのGlobalを使った場合、13行目から処理が分岐しすべてのCallが実行されていく。
もし複数のCallがあり、その中にSettingsを含むCallがあった場合、ストレージmob_data: Settings
が{}
となる。
その状態で13行目からの分岐が終了したとき、14行目のexecuteの条件(※00000000-0000-0000-0000-000000000002 _
のスコアが更新されていないことが必要)を満たすため、最後のCallを再び実行してしまう。
enemy:ai/call/settings/
の13行目と14行目を入れ替える。
Globalの処理の場合mob_data: Settings
が{}
になることはないし、それ以外のSettingsの場合mob_data: Settings
が{Global:1b}
になることはないため、処理が破綻することはないと思われる。
先ほどの最後のCallが2回実行される現象で説明できる。Callの中にSettingsがあった場合、enemy:ai/call/settings/init
を通るため、処理終了後0-0-0-0-1
が返却される。Callが2回実行される現象の2回目実行のとき、at 0-0-0-0-1があるので実行位置がコントロールエリアになり、tpを使った処理の場合消滅するように見える。
発生したTUSBv13のVersion
v13.1.1α
概要
三角様のターン4-2及びデバッグマンの3-1のCall_Skillにおいて こちらが意図しないバグによって実行時にMOBが消滅してしまう。
該当のCallが作動した際、MOBが消えてしまうのも問題ではあるが 消滅時に本来であれば複数回実行されないCall_Skillが1回以上同じタイミングで起こっている。
再現方法
原因となるコマンドを参照。
予想される動作
デバッグマンのログとして 正常なログが 1-1 1-2 <実行ログ> 1-4 1-5
であるのに対して
現報告においてのログが 1-1 1-2 <実行ログ> <実行ログ>
または
1-1 1-2 <実行ログ> <実行ログ> <実行ログ> <実行ログ>
だった。 またこの時実行したエンティティはCall Spawnの召喚成功と共に消滅している。
原因となるコマンド
NBTデータ
/summon minecraft:villager -3835.50 20.00 756.50 {NoGravity: 1b, Brain: {memories: {}}, HurtByTimestamp: 0, Attributes: [{Base: 0.0d, Name: "minecraft:generic.movement_speed"}, {Base: 0.0d, Name: "minecraft:generic.knockback_resistance"}, {Base: 32.0d, Name: "minecraft:generic.follow_range"}, {Base: 0.0d, Name: "minecraft:generic.attack_knockback"}], FoodLevel: 0b, Invulnerable: 0b, FallFlying: 0b, ForcedAge: 0, Gossips: [], PortalCooldown: 0, AbsorptionAmount: 1000000.0f, LastRestock: 0L, FallDistance: 0.0f, DeathTime: 19s, Xp: 0, LastGossipDecay: 7818299L, HandDropChances: [0.085f, 0.085f], PersistenceRequired: 0b, Tags: ["Mob", "Initialized", "m.mob_view", "HasAI", "SmartMotion", "Enemy", "DelayedData", "CallOnInit", "NativeTask"], Age: 0, Motion: [0.0d, 0.0d, 0.0d], Health: 20.0f, LeftHanded: 0b, Air: 300s, OnGround: 1b, NoAI: 1b, Rotation: [72.87564f, 0.0f], HandItems: [{}, {}], RestocksToday: 0, ArmorDropChances: [0.085f, 0.085f, 0.085f, 0.085f], CustomName: '{"extra":[{"color":"#FFFFFF","translate":"デバッグマン"},{"text":" Lv"},{"text":"1"}],"text":""}', Fire: 0s, ArmorItems: [{}, {}, {}, {}], CanPickUpLoot: 1b, VillagerData: {profession: "minecraft:none", level: 1, type: "minecraft:plains"}, DeathLootTable: "minecraft:empty", HurtTime: 0s, Inventory: []}
ログ
失敗ログ [CHAT] CallSkill 1-1 22:40:03.006 net.minecraft.server.MinecraftServer Server thread [✦anminmakura✦:ゲームモードをサバイバルモードに変更しました] 22:40:03.007 dxb Render thread [CHAT] ゲームモードをサバイバルモードに変更しました 22:40:03.545 dxb Render thread [CHAT] CallSkill 2-1 22:40:03.849 dxb Render thread [CHAT] 実行前の座標 デバッグマン Lv1 : [-3835.5d,20.0d,756.5d] 22:40:03.849 dxb Render thread [CHAT] デバッグマン Lv1 : [-3835.5d,20.0d,756.5d] 22:40:03.849 dxb Render thread [CHAT] 実行前の座標 デバッグマン Lv1 : [-3835.5d,20.0d,756.5d] 22:40:03.849 dxb Render thread [CHAT] デバッグマン Lv1 : [-3835.5d,20.0d,756.5d]
成功ログ 22:39:04.043 dxb Render thread [CHAT] CallSkill 1-1 22:39:04.841 dxb Render thread [CHAT] CallSkill 2-1 22:39:05.145 dxb Render thread [CHAT] 実行前の座標 デバッグマン Lv1 : [-3836.5d,20.0d,755.5d] 22:39:05.145 dxb Render thread [CHAT] デバッグマン Lv1 : [-3836.5d,20.0d,755.5d] 22:39:05.444 dxb Render thread [CHAT] 実行前の座標 デバッグマン Lv1 : [-3836.5d,20.0d,755.5d] 22:39:05.444 dxb Render thread [CHAT] デバッグマン Lv1 : [-3836.5d,20.0d,755.5d] 22:39:05.747 dxb Render thread [CHAT] 実行前の座標 デバッグマン Lv1 : [-3836.5d,20.0d,755.5d] 22:39:05.747 dxb Render thread [CHAT] デバッグマン Lv1 : [-3836.5d,20.0d,755.5d] 22:39:06.540 dxb Render thread [CHAT] CallSkill 4-1 22:39:06.942 net.minecraft.server.MinecraftServer Server thread [✦anminmakura✦:ゲームモードをクリエイティブモードに変更しました] 22:39:06.947 dxb Render thread [CHAT] ゲームモードをクリエイティブモードに変更しました 22:39:07.343 dxb Render thread [CHAT] CallSkill 5-1