test(entity): 未加载区块实体冻结回归测试;路线图回写稳定性与观感修复
This commit is contained in:
@@ -158,3 +158,25 @@ func TestEntityWorldIntegration(t *testing.T) {
|
||||
m.Spawn(KindZombie, 8.5, float64(surf+1), 8.5)
|
||||
m.Tick(0.05, w, [3]float64{12, float64(surf + 1), 8.5}) // 世界实现了 WorldView(Solid/Block/Sky/BlockLight)
|
||||
}
|
||||
|
||||
// frozenWorld 全部区块未加载的世界视图(实体冻结测试)。
|
||||
type frozenWorld struct{ flatWorld }
|
||||
|
||||
func (frozenWorld) ChunkLoaded(x, z int32) bool { return false }
|
||||
|
||||
// TestEntityFreeze 未加载区块实体冻结:不 tick、不下坠(崩溃根因回归测试)。
|
||||
func TestEntityFreeze(t *testing.T) {
|
||||
m := NewManager()
|
||||
v := m.Spawn(KindVillager, 1000, 100, 1000)
|
||||
v.Data = &Villager{}
|
||||
w := frozenWorld{}
|
||||
for i := 0; i < 10; i++ {
|
||||
m.Tick(0.05, w, [3]float64{0, 64, 0})
|
||||
}
|
||||
if v.Pos[1] != 100 {
|
||||
t.Fatalf("未加载区块实体应冻结,实际 y=%v", v.Pos[1])
|
||||
}
|
||||
if v.Pos[0] != 1000 {
|
||||
t.Fatalf("未加载区块实体应冻结,实际 x=%v", v.Pos[0])
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user